myrtex-mf-competition 1.1.4 → 1.1.6
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/esm2020/lib/modules/competition-header/components/competition-header.component.mjs +4 -3
- package/esm2020/lib/modules/competition-header/models/competition-status.model.mjs +1 -1
- package/fesm2015/myrtex-mf-competition.mjs +3 -2
- package/fesm2015/myrtex-mf-competition.mjs.map +1 -1
- package/fesm2020/myrtex-mf-competition.mjs +3 -2
- package/fesm2020/myrtex-mf-competition.mjs.map +1 -1
- package/lib/modules/competition-header/models/competition-status.model.d.ts +1 -0
- package/package.json +1 -1
|
@@ -165,6 +165,7 @@ export class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
165
165
|
&& this.competition !== undefined
|
|
166
166
|
&& this.competition.status === CompetitionStatusEnum.Active
|
|
167
167
|
&& this.selected?.status === CompetitionVersionStatusEnum.Active
|
|
168
|
+
&& !this.competition.isExternal
|
|
168
169
|
&& this.competition.isResultProtocolApproved;
|
|
169
170
|
}
|
|
170
171
|
get canCancelCompetition() {
|
|
@@ -326,7 +327,7 @@ export class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
326
327
|
}
|
|
327
328
|
}
|
|
328
329
|
confirmedVersion() {
|
|
329
|
-
if (this.selected) {
|
|
330
|
+
if (!this.selected) {
|
|
330
331
|
return;
|
|
331
332
|
}
|
|
332
333
|
this.alertService.showDialog({
|
|
@@ -345,7 +346,7 @@ export class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
345
346
|
});
|
|
346
347
|
}
|
|
347
348
|
rejectedVersion() {
|
|
348
|
-
if (this.selected) {
|
|
349
|
+
if (!this.selected) {
|
|
349
350
|
return;
|
|
350
351
|
}
|
|
351
352
|
this.alertService.showDialog({
|
|
@@ -518,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
518
519
|
}], setValidationInProgress: [{
|
|
519
520
|
type: Output
|
|
520
521
|
}] } });
|
|
521
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHNDQUFzQyxFQUN0QyxtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtDQUFrQyxFQUNs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QkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsOEJBQThCO3NCQURwQyxNQUFNO2dCQUlBLHVCQUF1QjtzQkFEN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wZXRpdGlvbi12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBDb21wZXRpdGlvbk1vZGVFbnVtLFxyXG4gIENvbXBldGl0aW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbCxcclxuICBEaWFsb2dDb2xvcixcclxuICBEaWFsb2dUeXBlLFxyXG4gIEFsZXJ0U2VydmljZSxcclxuICBVblN1YnNjcmliZXIsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25Db25maWcsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25MYWJlbCxcclxuICBDb21wZXRpdGlvbkNvbmZpZ01vZGVsLFxyXG4gIENhbmNlbENvbXBldGl0aW9uVHlwZUVudW0sXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25UeXBlRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksIHNlbGVjdFVzZXJJbmZvXHJcbn0gZnJvbSAnbXlydGV4LW1mLXVpLWNvbXBvc2l0ZSc7XHJcbmltcG9ydCB7XHJcbiAgYWN0aXZhdGVDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLFxyXG4gIGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyxcclxuICBjb21wbGV0ZUNvbXBldGl0aW9uLFxyXG4gIGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbixcclxuICBkZWxldGVDb21wZXRpdGlvblZlcnNpb24sXHJcbiAgbG9hZENvbXBldGl0aW9uSGVhZGVyLFxyXG4gIHBhdXNlQ29tcGV0aXRpb24sXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25WZXJzaW9uXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblN0YXR1c01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgc2VsZWN0QWN0aXZpdHlJZCxcclxuICBzZWxlY3RDb21wZXRpdGlvblNlbGVjdGVkVmVyc2lvbklkLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uU3RhdHVzLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uVHlwZSxcclxuICBzZWxlY3RDb21wZXRpdGlvblZlcnNpb25zLFxyXG4gIHNlbGVjdE1hbnVhbFZlcnNpb25TdGF0dXNDaGFuZ2VkXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLnNlbGVjdG9yJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jb21wZXRpdGlvbi1oZWFkZXItY3VzdG9tLWJ1dHRvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25SZWplY3Rpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFNpZ25TZXJ2aWNlIH0gZnJvbSAnbXlydGV4LW1mLXNpZ25lcic7XHJcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFQkxpbmtzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZWItbGlua3MubW9kZWwnO1xyXG5pbXBvcnQge0FjY2Vzc1NlcnZpY2UsIENoZWNrUGVybWlzc2lvbk1vZGVsfSBmcm9tICdteXJ0ZXgtbWYtYXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQ0FOX0FHUkVFTUVOVF9DT01QRVRJVElPTixcclxuICBDQU5fQ0FOQ0VMX0NPTVBFVElUSU9OLFxyXG4gIENBTl9DT01QTEVURV9DT01QRVRJVElPTixcclxuICBDQU5fQ1JFQVRFX0NPTVBFVElUSU9OX1ZFUlNJT04sXHJcbiAgQ0FOX0VESVRfQ09NUEVUSVRJT04sXHJcbiAgQ0FOX1BVQkxJQ19DT01QRVRJVElPTixcclxuICBDT01QRVRJVElPTl9FTlRJVFlfTkFNRSxcclxuICBDQU5fQVBQUk9WRV9NQU5VQUxfQ09NUEVUSVRJT05cclxufSBmcm9tICcuLi9jb25zdGFudHMvY29tcGV0aXRpb24tcGVybWlzc2lvbi5jb25zdGFudHMnO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSB2YWxpZGF0ZVZlcnNpb25GbiA9ICgocGFyYW06IHN0cmluZywgb25WYWxpZGF0ZWQ6ICgpID0+IHZvaWQpID0+IHZvaWQpO1xyXG5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBXaW5kb3cge1xyXG4gICAgQ3J5cHRvSW50ZXJjZXB0b3I6IGFueTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbXBldGl0aW9uLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBldGl0aW9uLWhlYWRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYkNvbXBldGl0aW9uSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgVW5TdWJzY3JpYmVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAQ29udGVudENoaWxkKENvbXBldGl0aW9uSGVhZGVyQ3VzdG9tQnV0dG9uc0RpcmVjdGl2ZSlcclxuICBwdWJsaWMgY3VzdG9tQnV0dG9uc1RlbXBsYXRlITogQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2YWxpZGF0ZVZlcnNpb25BY3Rpb246IHVuZGVmaW5lZCB8IHZhbGlkYXRlVmVyc2lvbkZuID0gdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5DcmVhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhblZhbGlkYXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2QgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNEaXJ0eSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2YWxpZGF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWRDb21wZXRpdGlvblZlcnNpb25JbmZvID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wZXRpdGlvblZlcnNpb25Nb2RlbD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNldFZhbGlkYXRpb25JblByb2dyZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBwdWJsaWMgY29tcGV0aXRpb246IENvbXBldGl0aW9uU3RhdHVzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHZlcnNpb25zOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbFtdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2VsZWN0ZWRWZXJzaW9uID0gJyc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uU3RhdHVzRW51bSA9IENvbXBldGl0aW9uU3RhdHVzRW51bTtcclxuICBwdWJsaWMgY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bSA9IENhbmNlbENvbXBldGl0aW9uVHlwZUVudW07XHJcbiAgcHVibGljIGNvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0gPSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvbkxhYmVsID0gJyc7XHJcbiAgcHVibGljIHNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gJ9Ce0YLQvNC10L3QuNGC0Ywg0L7RgtCx0L7RgCc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uQ29uZmlnOiBDb21wZXRpdGlvbkNvbmZpZ01vZGVsIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93Q29tcGxldGVDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXN0b3JlQnV0dG9uTmFtZSA9ICfQktC+0LfQvtCx0L3QvtCy0LjRgtGMJztcclxuICBwcml2YXRlIF9hY3Rpdml0eUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZWJMaW5rc01vZGVsOiBFQkxpbmtzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfY29tcGV0aXRpb25UeXBlOiBDb21wZXRpdGlvblR5cGVFbnVtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5Db21wbGV0ZUVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhbkNhbmNlbEVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhbkVkaXRFbnRpdHlBY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5NYW51YWxDaGFuZ2VTdGF0dXNBY2Nlc3MgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzaWduU2VydmljZTogU2lnblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjZXNzU2VydmljZTogQWNjZXNzU2VydmljZSwpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dMb2FkZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uSW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNFbnVtTGFiZWwoKSB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucyAmJiB0aGlzLnZlcnNpb25zLmxlbmd0aCA9PSAxICYmIHRoaXMuc2VsZWN0ZWRcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZC5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdGhpcy5zZWxlY3RlZC5zdGF0dXNdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb24gPyBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbFt0aGlzLmNvbXBldGl0aW9uLnN0YXR1c10gOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzcygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy52ZXJzaW9ucy5sZW5ndGggPT0gMSAmJiB0aGlzLnNlbGVjdGVkXHJcbiAgICAgICYmICh0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgfHwgQ29tcGV0aXRpb25TdGF0dXNFbnVtLk5ldykgPD0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgICcnOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlLFxyXG4gICAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICcnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5OZXdcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgIT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5Db21wbGV0ZWQsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSxcclxuICAgICAgJ2NvbG9yLW9yYW5nZSc6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmcsXHJcbiAgICAgICdjb2xvci1yZWQnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5DYW5jZWxlZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DcmVhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5jYW5DcmVhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgICAmJiB0aGlzLmlzTGFzdFZlcnNpb25cclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wZXRpdGlvbi5tb2RlID4gQ29tcGV0aXRpb25Nb2RlRW51bS5CYXNlXHJcbiAgICAgICYmICgodGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUgJiYgIXRoaXMuY29tcGV0aXRpb24uaXNSZXN1bHRQcm90b2NvbEFwcHJvdmVkKVxyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkRlbGV0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IHRoaXMuY29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAmJiB0aGlzLnZlcnNpb25zXHJcbiAgICAgICYmIHRoaXMudmVyc2lvbnMubGVuZ3RoID4gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQWN0aXZhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgJiYgdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2Vzc1xyXG4gICAgJiYgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgIT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpXHJcbiAgICAgICAgfHwgKHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5XHJcbiAgICAgIHx8ICF0aGlzLl9jYW5QdWJsaWNWZXJzaW9uQWNjZXNzXHJcbiAgICAgIHx8ICgodGhpcy5zZWxlY3RlZD8uc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICAgICAmJiB0aGlzLmNvbXBldGl0aW9uPy5tb2RlICE9PSBDb21wZXRpdGlvbk1vZGVFbnVtLlZlcnNpb25lZEV4dGVuZGVkKVxyXG4gICAgICAgIHx8ICh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgICAmJiB0aGlzLmNvbXBldGl0aW9uPy5tb2RlID09PSBDb21wZXRpdGlvbk1vZGVFbnVtLlZlcnNpb25lZEV4dGVuZGVkKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRlVmVyc2lvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEaXJ0eSB8fCAhdGhpcy5fY2FuQWdyZWVtZW50VmVyc2lvbkFjY2VzcyB8fCB0aGlzLnZhbGlkYXRpb25JblByb2dyZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjcmVhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5IHx8ICF0aGlzLl9jYW5DcmVhdGVWZXJzaW9uQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBiYWNrVG9FZGl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5WYWxpZGF0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYW5WYWxpZGF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kXHJcbiAgICAgICYmIHRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzICE9PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzTGFzdFZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBtID0gTWF0aC5tYXgoLi4udGhpcy52ZXJzaW9ucy5tYXAoeCA9PiB4Lm51bSkpO1xyXG4gICAgICByZXR1cm4gbSA9PT0gdGhpcy5zZWxlY3RlZD8ubnVtO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93UmVqZWN0aW9uUmVhc29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZD8ucmVqZWN0aW9uUmVhc29uICYmXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICB8fCB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZlcnNpb25TdGF0dXNDbGFzcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJyc6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBjYW5Db25maXJtZWRWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uXHJcbiAgICAgICYmIHRoaXMuX2Nhbk1hbnVhbENoYW5nZVN0YXR1c0FjY2VzcztcclxuICB9XHJcblxyXG4gIC8qKiDQmtC+0L3RgtC10LrRgdGCINC00LvRjyDQutCw0YHRgtC+0LzQvdGL0YUg0LrQvdC+0L/QvtC6LCDQvNC+0LbQtdGCINGA0LDRgdGI0LjRgNGP0YLRjNGB0Y8gKi9cclxuICBwdWJsaWMgZ2V0IGN1c3RvbUJ1dHRvbnNUZW1wbGF0ZUNvbnRleHQoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjdGl2aXR5SWQ6IHRoaXMuX2FjdGl2aXR5SWQsXHJcbiAgICAgIGNvbXBldGl0aW9uSWQ6IHRoaXMuY29tcGV0aXRpb24/LmlkLFxyXG4gICAgICBjb21wZXRpdGlvblZlcnNpb25JZDogdGhpcy5zZWxlY3RlZD8uaWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhblJldHVyblRvRWRpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5FZGl0RW50aXR5QWNjZXNzXHJcbiAgICAgICYmIHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5SZWplY3RlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd0ViTGluaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy52ZXJzaW9ucy5zb21lKHggPT4geC5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5Db21wbGV0ZUNvbXBldGl0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkNvbXBsZXRlRW50aXR5QWNjZXNzXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24gIT09IHVuZGVmaW5lZFxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24uaXNSZXN1bHRQcm90b2NvbEFwcHJvdmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DYW5jZWxDb21wZXRpdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5DYW5jZWxFbnRpdHlBY2Nlc3NcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICYmICh0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZ1xyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWQpXHJcbiAgICAgICYmIHRoaXMuc2hvd0NhbmNlbENvbXBldGl0aW9uQnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChsb2FkQ29tcGV0aXRpb25IZWFkZXIoKSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbnMpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMudmVyc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblNlbGVjdGVkVmVyc2lvbklkKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLnNlbGVjdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uU3RhdHVzKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLmNvbXBldGl0aW9uID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQUdSRUVNRU5UX0NPTVBFVElUSU9OKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3MgPSByZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQ1JFQVRFX0NPTVBFVElUSU9OX1ZFUlNJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9QVUJMSUNfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9DT01QTEVURV9DT01QRVRJVElPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5Db21wbGV0ZUVudGl0eUFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9DQU5DRUxfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ2FuY2VsRW50aXR5QWNjZXNzID0gcmVzdWx0KTtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0VESVRfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuRWRpdEVudGl0eUFjY2VzcyA9IHJlc3VsdCk7ICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQVBQUk9WRV9NQU5VQUxfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuTWFudWFsQ2hhbmdlU3RhdHVzQWNjZXNzID0gcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblR5cGUpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX2NvbXBldGl0aW9uVHlwZSA9IHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkxhYmVsKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY29tcGV0aXRpb25MYWJlbCA9IHJlc3VsdDtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0QWN0aXZpdHlJZCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLl9hY3Rpdml0eUlkID0gcmVzdWx0O1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkNvbmZpZykpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wZXRpdGlvbkNvbmZpZyA9IHJlc3VsdDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25MYWJlbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvbkxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvblR5cGVcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID4gdGhpcy5jYW5jZWxDb21wZXRpdGlvblR5cGVFbnVtLkRpc2FibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQ29tcGV0aXRpb25CdXR0b24gPSB0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnNob3dDb21wbGV0ZUNvbXBldGl0aW9uQnV0dG9uO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnJlc3RvcmVCdXR0b25OYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3RvcmVCdXR0b25OYW1lID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5yZXN0b3JlQnV0dG9uTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0TWFudWFsVmVyc2lvblN0YXR1c0NoYW5nZWQpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy8g0L/RgNC+0LjQt9C+0YjQu9C+INGA0YPRh9C90L7QtSDQuNC30LzQtdC90LXQvdC40LUg0YHRgtCw0YLRg9GB0LAsINGC0L7Qu9C60LDQtdC8INC00LDQu9GM0YjQtSDQv9C+INGC0LDQudC80LDRg9GC0YNcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDAwKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2UuZ2V0U2VsZWxlY3Rpb25FZGl0RWJMaW5rcygpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLl9lYkxpbmtzTW9kZWwgPSByZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdmFsdWUgYXMgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwodmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsW3ZhbHVlIGFzIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1dO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6IGDQpNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LjQt9C80LXQvdC10L3QuNC5YCxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgn0JLQvdC40LzQsNC90LjQtSEg0KTQvtGA0LzQuNGA0L7QstCw0L3QuNC1INC40LfQvNC10L3QtdC90LjQuSDQv9GA0LjQstC10LTQtdGCINC6INGB0L7Qt9C00LDQvdC40Y4g0L3QvtCy0L7QuSDQstC10YDRgdC40Lgg0L7RgtCx0L7RgNCwJyl9XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgINCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQuNC30LzQtdC90LXQvdC40Y8/XHJcbiAgICAgICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY3JlYXRlQ29tcGV0aXRpb25WZXJzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgICB0aXRsZTogYNCf0YPQsdC70LjQutCw0YbQuNGPICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwYCxcclxuICAgICAgICBtZXNzYWdlOiBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgpfVxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICDQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtC/0YPQsdC70LjQutC+0LLQsNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P1xyXG4gICAgICAgICAgICA8L3A+YCxcclxuICAgICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgICBva0NhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVWZXJzaW9uQWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25BY3Rpb24oc2VsZWN0ZWRJdGVtLmlkLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25TZXJ2aWNlLnNpZ24oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9Cd0LDQv9GA0LDQstC70LXQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwINC90LAg0YHQvtCz0LvQsNGB0L7QstCw0L3QuNC1JyxcclxuICAgICAgICAgICAgb2tMYWJlbDogJ9Ce0YLQv9GA0LDQstC40YLRjCcsXHJcbiAgICAgICAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgICAgICAgIHBkZlVybDogYC9tLWRhdGEvbWluZmluL3BkZi1jb21wZXRpdGlvbi8ke3RoaXMuY29tcGV0aXRpb24/LmlkfT92ZXJzaW9uSWQ9JHtzZWxlY3RlZEl0ZW0uaWR9YCxcclxuICAgICAgICAgICAgeG1sVXJsOiBgL20tZGF0YS9taW5maW4veG1sLWNvbXBldGl0aW9uLyR7dGhpcy5jb21wZXRpdGlvbj8uaWR9P3ZlcnNpb25JZD0ke3NlbGVjdGVkSXRlbS5pZH1gLFxyXG4gICAgICAgICAgICBwcm92aWRlcjogJ2VtcHR5J1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSgnJywgJ9Ce0LbQuNC00LDQudGC0LUuINCS0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L7RgtC/0YDQsNCy0LrQsCDQvdCwINGB0L7Qs9C70LDRgdC+0LLQsNC90LjQtS4nLCBNZXNzYWdlU2V2ZXJpdHkud2FpdCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgICB2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZCxcclxuICAgICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uVmFsaWRhdGlvblxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkluUHJvZ3Jlc3MuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHB1YmxpYyBjb25maXJtZWRWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICB0aXRsZTogYNCj0YLQstC10YDQttC00LXQvdC40LUg0L7RgtCx0L7RgNCwYCxcclxuICAgICAgbWVzc2FnZTogYDxwPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0YLQstC10YDQtNC40YLRjCDQvtGC0LHQvtGAPzwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgIHZlcnNpb25JZDogdGhpcy5zZWxlY3RlZCEuaWQsXHJcbiAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWplY3RlZFZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICB0aXRsZTogYNCe0YLQutC70L7QvdC10L3QuNC1INC+0YLQsdC+0YDQsGAsXHJcbiAgICAgIG1lc3NhZ2U6IGA8cD7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtGC0LrQu9C+0L3QuNGC0Ywg0L7RgtCx0L7RgD88L3A+YCxcclxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnllbGxvdyxcclxuICAgICAgdHlwZTogRGlhbG9nVHlwZS5jb25maXJtLFxyXG4gICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgIG9rQ2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICB2ZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQhLmlkLFxyXG4gICAgICAgICAgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLlJlamVjdGVkXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0KPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOICAke3RoaXMuY29tcGV0aXRpb25MYWJlbH3QsD9gLFxyXG4gICAgICAgIGAke3RoaXMuZ2V0V2FybmluZ01lc3NhZ2VIdG1sKCl9XHJcbiAgICAgIDxwPlxyXG4gICAgICAgINCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINCy0LXRgNGB0LjRjiAke3RoaXMuY29tcGV0aXRpb25MYWJlbD8udG9Mb3dlckNhc2UoKX3QsD9cclxuICAgICAgPC9wPmAsXHJcbiAgICAgICAgRGlhbG9nVHlwZS5jb25maXJtLCAob2spID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uKHt2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZH0pKTtcclxuICAgICAgICB9LCB1bmRlZmluZWQsIG51bGwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBEaWFsb2dDb2xvci5yZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc3RvcmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQktC+0LfQvtCx0L3QvtCy0LjRgtGMICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfT9gLCBudWxsLCBEaWFsb2dUeXBlLmNvbmZpcm0sIChvaykgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGFjdGl2YXRlQ29tcGV0aXRpb24oKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXVzZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNCf0YDQuNC+0YHRgtCw0L3QvtCy0LjRgtGMICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfT9gLCBudWxsLCBEaWFsb2dUeXBlLmNvbmZpcm0sIChvaykgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHBhdXNlQ29tcGV0aXRpb24oKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21wZXRpdGlvbkNvbmZpZyAmJiB0aGlzLmNvbXBldGl0aW9uQ29uZmlnLmNhbmNlbENvbXBldGl0aW9uVHlwZSA9PSB0aGlzLmNhbmNlbENvbXBldGl0aW9uVHlwZUVudW0uV2l0aFZhbGlkYXRpb24pIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY2FuY2VsQ29tcGV0aXRpb25XaXRoVmFsaWRhdGlvbih7dmVyc2lvbklkOiBzZWxlY3RlZEl0ZW0uaWR9KSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNCe0YLQvNC10L3QuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjYW5jZWxDb21wZXRpdGlvbigpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29tcGxldGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6IGDQl9Cw0LLQtdGA0YjQtdC90LjQtSDQvtGC0LHQvtGA0LBgLFxyXG4gICAgICBtZXNzYWdlOlxyXG4gICAgICAgIGA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keS1iYW5uZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBpY29uLWZvbnQtMTYgaWNvbi1jb2xvci1vcmFuZ2UgbXItMlwiPjwvZGl2PlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgICDQrdGC0L4g0LTQtdC50YHRgtCy0LjQtSDQvdC10L7QsdGA0LDRgtC40LzQvi4g0J/QvtGB0LvQtSDQtdCz0L4g0LLRi9C/0L7Qu9C90LXQvdC40Y8g0L7RgtC80LXQvdC40YLRjCDRgNC10LfRg9C70YzRgtCw0YIg0L3QtdCy0L7Qt9C80L7QttC90L5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIG1iLTFcIj5cclxuICAgICAgICAgINCf0L7QtNGC0LLQtdGA0LbQtNCw0Y8g0LTQsNC90L3QvtC1INC00LXQudGB0YLQstC40LUsINCy0YvCoNC/0L7QtNGC0LLQtdGA0LbQtNCw0LXRgtC1INC60L7RgNGA0LXQutGC0L3QvtGB0YLRjCDQv9GA0L7RgtC+0LrQvtC70LAg0LjCoNC+0YLRgdGD0YLRgdGC0LLQuNC1INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INCywqDQtdCz0L7CoNC60L7RgNGA0LXQutGC0LjRgNC+0LLQutC1LlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIG1iLTFcIj5cclxuICAgICAgICAgINCh0LrQvtGA0YDQtdC60YLQuNGA0L7QstCw0YLRjCDQuNGC0L7Qs9C+0LLRi9C5INC/0YDQvtGC0L7QutC+0Lsg0LLQvtC30LzQvtC20L3QviDRgtC+0LvRjNC60L4g0LLCoNGC0LXRh9C10L3QuNC1IDIwwqDQutCw0LvQtdC90LTQsNGA0L3Ri9GFINC00L3QtdC5INGB0L7CoNC00L3Rj8Kg0YPRgtCy0LXRgNC20LTQtdC90LjRjyDQtdCz0L7CoNC/0LXRgNCy0L7QuSDQstC10YDRgdC40Lgg0LjCoNC00L7CoNC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC00LDQvdC90L7Qs9C+INC00LXQudGB0YLQstC40Y8uXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0JXRgdC70LjCoNCy0YvCoNC90LXCoNGD0LLQtdGA0LXQvdGLINCywqDQutC+0YDRgNC10LrRgtC90L7RgdGC0Lgg0L/RgNC+0YLQvtC60L7Qu9CwLCDQv9GA0LjCoNC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGB0YTQvtGA0LzQuNGA0YPQudGC0LUg0YPQstC10LTQvtC80LvQtdC90LjQtSDQvsKg0LXQs9C+wqDQvtGC0LrQu9C+0L3QtdC90LjQuCDQuMKg0L/QvtC00L/QuNGI0LjRgtC1INC90L7QstGD0Y4g0LLQtdGA0YHQuNGOLlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICDQl9Cw0LLQtdGA0YjQuNGC0Ywg0L7RgtCx0L7RgD9cclxuICAgICAgICA8L3A+YCxcclxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnllbGxvdyxcclxuICAgICAgdHlwZTogRGlhbG9nVHlwZS5jb25maXJtLFxyXG4gICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgIG9rQ2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBsZXRlQ29tcGV0aXRpb24oKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoJ9CX0LDQstC10YDRiNC10L3QuNC1INC+0YLQsdC+0YDQsCDQvNC+0LbQtdGCINC30LDQvdGP0YLRjCDQvdC10LrQvtGC0L7RgNC+0LUg0LLRgNC10LzRjy4nLFxyXG4gICAgICAgICAgJ9Ce0LHQvdC+0LLQuNGC0LUg0YHRgtGA0LDQvdC40YbRgyDQuNC70Lgg0LLQtdGA0L3QuNGC0LXRgdGMINC/0L7Qt9C20LUnLCBNZXNzYWdlU2V2ZXJpdHkuaW5mbyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFZlcnNpb24oaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZWxlY3RDb21wZXRpdGlvblZlcnNpb24oe3ZlcnNpb25JZDogaWR9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmFja1RvRWRpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUg0YLQtdC60YPRidC10Lkg0LLQtdGA0YHQuNC4YCxcclxuICAgICAgYNCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINGC0LXQutGD0YnRg9GOINCy0LXRgNGB0LjRjiAke3RoaXMuY29tcGV0aXRpb25MYWJlbC50b0xvd2VyQ2FzZSgpfWFgLFxyXG4gICAgICBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIChvaykgPT4ge1xyXG4gICAgICAgIGlmICghIXRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgdmVyc2lvbklkOiB0aGlzLnNlbGVjdGVkLmlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHVuZGVmaW5lZCwgbnVsbCwgJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0YwnLCB1bmRlZmluZWQsIERpYWxvZ0NvbG9yLnllbGxvdyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1JlamVjdGlvbihtb2RlbDogQ29tcGV0aXRpb25SZWplY3Rpb25Nb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J/RgNC40YfQuNC90LAg0L7RgtC60LvQvtC90LXQvdC40Y9gLFxyXG4gICAgICBgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5X19hdXRob3JcIj5cclxuICAgICAgICAgIDxzcGFuPiR7bW9kZWwuYXV0aG9yfTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPiR7bW9kZWwuY3JlYXRlZERhdGV9PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwibW9kYWwtYm9keV9fdGV4dFwiPiR7bW9kZWwucmVhc29ufTwvcD5cclxuICAgICAgYCwgRGlhbG9nVHlwZS5jb25maXJtLFxyXG4gICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbnVsbCwgdW5kZWZpbmVkLCAnJywgRGlhbG9nQ29sb3IueWVsbG93KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWRpcmVjdFRvRWIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21wZXRpdGlvbiAhPSB1bmRlZmluZWQgJiYgdGhpcy5fY29tcGV0aXRpb25UeXBlICE9IHVuZGVmaW5lZCAmJiB0aGlzLl9lYkxpbmtzTW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBsaW5rID0gJyc7XHJcblxyXG4gICAgICBpZiAodGhpcy5fY29tcGV0aXRpb25UeXBlID09IENvbXBldGl0aW9uVHlwZUVudW0uU29jaWFsT3JkZXIpIHtcclxuICAgICAgICBsaW5rID0gYCR7dGhpcy5fZWJMaW5rc01vZGVsLnNvY2lhbE9yZGVyfS8jU29jaWFsT3JkZXJBZ3JlZW1lbnRgO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbXBldGl0aW9uVHlwZSA9PSBDb21wZXRpdGlvblR5cGVFbnVtLlJlZ2lvbikge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc3Vic2lkeX0vI0FncmVlbWVudFN1YnNpZHlOb25GZWRlcmFsYDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsaW5rID0gYCR7dGhpcy5fZWJMaW5rc01vZGVsLnN1YnNpZHl9LyNBZ3JlZW1lbnRTdWJzaWR5UmVnaXN0cnlgO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aW5kb3cub3BlbihsaW5rLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZlcnNpb25zICYmIHRoaXMuc2VsZWN0ZWRWZXJzaW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnZlcnNpb25zLmZpbmQocyA9PiBzLmlkID09PSB0aGlzLnNlbGVjdGVkVmVyc2lvbik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wZXRpdGlvblZlcnNpb25JbmZvLmVtaXQodGhpcy5zZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFdhcm5pbmdNZXNzYWdlSHRtbChjdXN0b21UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjdXN0b21UZXh0KSB7XHJcbiAgICAgIGN1c3RvbVRleHQgPSAn0JLQvdC40LzQsNC90LjQtSEg0JTQsNC90L3QvtC1INC00LXQudGB0YLQstC40LUg0L3QtdC70YzQt9GPINC+0YLQvNC10L3QuNGC0YwnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiYmctbmV3cyBweC0zIHJhZGl1cy00IG1iLTMgZC1mbGV4XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0zKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMylcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk02LjU2NTcgMi40MTY2N0M3LjI3MTM1IDEuMTk0NDQgOS4wMzU0OCAxLjE5NDQ0IDkuNzQxMTMgMi40MTY2N0wxNS4yMjYgMTEuOTE2N0MxNS45MzE2IDEzLjEzODkgMTUuMDQ5NSAxNC42NjY3IDEzLjYzODIgMTQuNjY2N0gyLjY2ODU5QzEuMjU3MjkgMTQuNjY2NyAwLjM3NTIyNSAxMy4xMzg5IDEuMDgwODcgMTEuOTE2N0w2LjU2NTcgMi40MTY2N1pNOC44NzUxIDIuOTE2NjdDOC41NTQzNSAyLjM2MTExIDcuNzUyNDggMi4zNjExMSA3LjQzMTczIDIuOTE2NjdMMS45NDY5IDEyLjQxNjdDMS42MjYxNSAxMi45NzIyIDIuMDI3MDkgMTMuNjY2NyAyLjY2ODU5IDEzLjY2NjdIMTMuNjM4MkMxNC4yNzk3IDEzLjY2NjcgMTQuNjgwNyAxMi45NzIyIDE0LjM1OTkgMTIuNDE2N0w4Ljg3NTEgMi45MTY2N1pNOC4xNTM0MiA2LjE2NjY3QzguNDI5NTYgNi4xNjY2NyA4LjY1MzQyIDYuMzkwNTIgOC42NTM0MiA2LjY2NjY3VjkuMzMzMzNDOC42NTM0MiA5LjYwOTQ4IDguNDI5NTYgOS44MzMzMyA4LjE1MzQyIDkuODMzMzNDNy44NzcyNyA5LjgzMzMzIDcuNjUzNDIgOS42MDk0OCA3LjY1MzQyIDkuMzMzMzNWNi42NjY2N0M3LjY1MzQyIDYuMzkwNTIgNy44NzcyNyA2LjE2NjY3IDguMTUzNDIgNi4xNjY2N1pNOC4xNTM0MiAxMC44MzMzQzguNDI5NTYgMTAuODMzMyA4LjY1MzQyIDExLjA1NzIgOC42NTM0MiAxMS4zMzMzVjEyQzguNjUzNDIgMTIuMjc2MSA4LjQyOTU2IDEyLjUgOC4xNTM0MiAxMi41QzcuODc3MjcgMTIuNSA3LjY1MzQyIDEyLjI3NjEgNy42NTM0MiAxMlYxMS4zMzMzQzcuNjUzNDIgMTEuMDU3MiA3Ljg3NzI3IDEwLjgzMzMgOC4xNTM0MiAxMC44MzMzWlwiIGZpbGw9XCIjRDk3NTA4XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMCB0ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICR7Y3VzdG9tVGV4dH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWNjZXNzQ29udHJvbChwZXJtaXNzaW9uOiBzdHJpbmcpOiBDaGVja1Blcm1pc3Npb25Nb2RlbCB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwZXJtaXNzaW9uLFxyXG4gICAgICBvYmplY3RUeXBlOiBDT01QRVRJVElPTl9FTlRJVFlfTkFNRSxcclxuICAgICAgb2JqZWN0SWQ6IHRoaXMuY29tcGV0aXRpb24/LmlkXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXJcIiAqbmdJZj1cInNlbGVjdGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1ibG9ja1wiPlxyXG4gICAgICA8IS0tINCd0LDQt9Cy0LDQvdC40LUg0YHRg9Cx0YHQuNC00LjQuC/QvtGC0LHQvtGA0LAgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtIHdweC0xNjAgbXItM1wiPlxyXG4gICAgICAgIDwhLS0g0LLRgdGC0LDQstC40YLRjCDQvdCw0LfQstCw0L3QuNC1INGB0YPRidC90L7RgdGC0LgsINC70LjQsdC+IFwi0KHRg9Cx0YHQuNC00LjRj1wiINC70LjQsdC+IFwi0J7RgtCx0L7RgFwiIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9fdGl0bGVcIiBteUNvbXBldGl0aW9uTGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwhLS0g0L3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgICA8IS0tINC+0LPRgNCw0L3QuNGH0LjRgtGMINC00LvQuNC90YMg0L3QsNC30LLQsNC90LjRjyDQsiA0NCDRgdC40LzQstC+0LvQvtCyIC0tPlxyXG4gICAgICAgIDwhLS0g0LLRgdGC0LDQstC40YLRjCDQsiDRgtGD0LvRgtC40L8g0L/QvtC70L3QvtC1INC90LDQt9Cy0LDQvdC40LUg0YHRg9Cx0YHQuNC00LjQuC/QvtGC0LHQvtGA0LAgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190ZXh0IHRleHQtbm9ybWFsXCIgW21yeENka1Rvb2x0aXBdPVwic2VsZWN0ZWQubmFtZVwiIFt0b29sdGlwTWF4V2lkdGhdPVwiMzIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWQuc2hvcnROYW1lID8gc2VsZWN0ZWQuc2hvcnROYW1lIDogJ9Cd0LUg0YPQutCw0LfQsNC9JyB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSDRgdGC0LDRgtGD0YEg0YHRg9Cx0YHQuNC00LjQuC/QvtGC0LHQvtGA0LAgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtIHdweC0xMTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9fdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICDQodGC0LDRgtGD0YFcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8IS0tINGB0YLQsNGC0YPRgSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgICA8IS0tINC00LvRjyDQt9Cw0LTQsNC90LjRjyDRhtCy0LXRgtCwINC00L7QsdCw0LLQu9GP0YLRjCDQutC70LDRgdGB0Ys6INC+0YDQsNC90LbQtdCy0YvQuSAtIFwiY29sb3Itb3JhbmdlXCIsINC30LXQu9C10L3Ri9C5IC0gXCJjb2xvci1ncmVlblwiIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9fdGV4dFwiIFtuZ0NsYXNzXT1cImNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb21wZXRpdGlvbkFnZ3JlZ2F0ZVN0YXR1c0VudW1MYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSDRgdC10LvQtdC60YIg0YEg0LLRi9Cx0L7RgNC+0Lwg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gaW5mby1iYW5uZXItaXRlbV9pbnB1dCB3cHgtMjYwIG1yLTNcIiAqbmdJZj1cInZlcnNpb25zICYmIHZlcnNpb25zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0Ym94IGlucHV0Ym94LW1kIG1iLTBcIj5cclxuICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJ2ZXJzaW9uc1wiIFtuZ01vZGVsXT1cInNlbGVjdGVkLmlkXCJcclxuICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFZlcnNpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgZ3JvdXBCeT1cInN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICBub3RGb3VuZFRleHQ9XCLQndC1INC90LDQudC00LXQvdC+XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0Z3JvdXAtdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIHt7IGdldENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsKGl0ZW0uc3RhdHVzKSB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXNlYXJjaD1cInNlYXJjaFRlcm1cIj5cclxuICAgICAgICAgICAg0JLQtdGA0YHQuNGPIHt7IGl0ZW0ubnVtIH19INC+0YIge3sgaXRlbS5jcmVhdGVkRGF0ZSB8IGRhdGVUaW1lRm9ybWF0OiAnbW9zJyB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1sYWJlbC10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgINCS0LXRgNGB0LjRjyB7eyBpdGVtLm51bSB9fSDQvtGCIHt7IGl0ZW0uY3JlYXRlZERhdGUgfCBkYXRlVGltZUZvcm1hdDogJ21vcycgIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSDRgdGC0LDRgtCw0YPRgSDQstC10YDRgdC40LggLS0+XHJcbiAgICA8IS0tINC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsINC10YHQu9C4INC90LXRgiDQstC10YDRgdC40LkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbSB3cHgtMTEwXCIgKm5nSWY9XCJ2ZXJzaW9ucyAmJiB2ZXJzaW9ucy5sZW5ndGggPiAxXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9fdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgINCh0YLQsNGC0YPRgSDQstC10YDRgdC40LhcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tINGB0YLQsNGC0YPRgSDQstC10YDRgdC40LggLS0+XHJcbiAgICAgIDwhLS0g0LTQu9GPINC30LDQtNCw0L3QuNGPINGG0LLQtdGC0LAg0LTQvtCx0LDQstC70Y/RgtGMINC60LvQsNGB0YHRizog0L7RgNCw0L3QttC10LLRi9C5IC0gXCJjb2xvci1vcmFuZ2VcIiwg0LfQtdC70LXQvdGL0LkgLSBcImNvbG9yLWdyZWVuXCIgLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9fdGV4dFwiICpuZ0lmPVwic2VsZWN0ZWRcIiBbbmdDbGFzc109XCJ2ZXJzaW9uU3RhdHVzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1MYWJlbChzZWxlY3RlZC5zdGF0dXMpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSDRg9C00LDQu9C10L3QuNC1LCDQstGL0LfQvtCyINC80L7QtNCw0LvQutC4LCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INC+0LEg0LLQvdC10YHQtdC90LjQuCDQuNC30LzQtdC90LXQvdC40LkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbVwiPlxyXG4gICAgICA8IS0tINC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsINC10YHQu9C4INC90LUg0YLRgNC10LHRg9C10YLRgdGPIC0tPlxyXG4gICAgICA8IS0tIFwi0LrQvtC90LLQtdGA0YJcIiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX2ljb25cIiAqbmdJZj1cInNob3dSZWplY3Rpb25SZWFzb25cIlxyXG4gICAgICAgICAgIFttcnhDZGtUb29sdGlwXT1cIifQn9C+0YHQvNC+0YLRgNC10YLRjCDQv9GA0LjRh9C40L3RgyDQvtGC0LrQu9C+0L3QtdC90LjRjydcIlxyXG4gICAgICAgICAgIChjbGljayk9XCJzaG93UmVqZWN0aW9uKHNlbGVjdGVkLnJlamVjdGlvblJlYXNvbilcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjZcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTJcIiByeD1cIjFcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0zIDYuMjVMMTEuMzM1NiAxMy42NTk1QzExLjcxNDUgMTMuOTk2MiAxMi4yODU1IDEzLjk5NjIgMTIuNjY0NCAxMy42NTk1TDIxIDYuMjVcIiBzdHJva2U9XCIjMjgyODI4XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxOEw3LjUgMTRMOS43NSAxMk0yMSAxOEwxNi41IDE0TDE0LjI1IDEyXCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0g0YPQtNCw0LvQtdC90LjQtSDQstC10YDRgdC40LggLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjYW5EZWxldGVWZXJzaW9uXCIgKGNsaWNrKT1cInJlbW92ZVZlcnNpb24oKVwiIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9faWNvblwiIFttcnhDZGtUb29sdGlwXT1cIifQo9C00LDQu9C40YLRjCDQstC10YDRgdC40Y4nXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTMgNkg1SDIxXCIgc3Ryb2tlPVwiI0QxNDExNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xOSA2VjIwQzE5IDIwLjUzMDQgMTguNzg5MyAyMS4wMzkxIDE4LjQxNDIgMjEuNDE0MkMxOC4wMzkxIDIxLjc4OTMgMTcuNTMwNCAyMiAxNyAyMkg3QzYuNDY5NTcgMjIgNS45NjA4NiAyMS43ODkzIDUuNTg1NzkgMjEuNDE0MkM1LjIxMDcxIDIxLjAzOTEgNSAyMC41MzA0IDUgMjBWNkgxOVpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjRDE0MTE0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xMCAxMVYxN1wiIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTE0IDExVjE3XCIgc3Ryb2tlPVwiI0QxNDExNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0g0LLQvtGB0LrQu9C40YbQsNGC0LXQu9GM0L3Ri9C5INC30L3QsNC6IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzTGFzdFZlcnNpb25cIiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX2ljb25cIiBbbXJ4Q2RrVG9vbHRpcF09XCIn0JLQvdC10YHQtdC90LjQtSDQuNC30LzQtdC90LXQvdC40Lkg0LTQvtGB0YLRg9C/0L3QviDQvdCwINC/0L7RgdC70LXQtNC90LXQuSDQstC10YDRgdC40LgnXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTEyLjIzMDIgMThWMTdNMTIuMjMwMiAxNFYxME00LjAwMjk4IDIxLjI1SDIwLjQ1NzVDMjEuOTk3MSAyMS4yNSAyMi45NTkzIDE5LjU4MzMgMjIuMTg5NSAxOC4yNUwxMy45NjIzIDRDMTMuMTkyNSAyLjY2NjY3IDExLjI2OCAyLjY2NjY3IDEwLjQ5ODIgNEwyLjI3MDkzIDE4LjI1QzEuNTAxMTMgMTkuNTgzMyAyLjQ2MzM4IDIxLjI1IDQuMDAyOTggMjEuMjVaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiI0Q1N0IxQ1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1jb250cm9sXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhIWN1c3RvbUJ1dHRvbnNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQnV0dG9uc1RlbXBsYXRlLnRlbXBsYXRlUmVmO2NvbnRleHQ6Y3VzdG9tQnV0dG9uc1RlbXBsYXRlQ29udGV4dFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtZWRWZXJzaW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ29uZmlybWVkVmVyc2lvblwiPlxyXG4gICAgICAgICAg0KPRgtCy0LXRgNC00LjRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlamVjdGVkVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkNvbmZpcm1lZFZlcnNpb25cIj5cclxuICAgICAgICAgINCe0YLQutC70L7QvdC40YLRjFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgZ3JlZW5cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVWZXJzaW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ3JlYXRlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNyZWF0ZVZlcnNpb25EaXNhYmxlZFwiPlxyXG4gICAgICAgINCh0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQuNC30LzQtdC90LXQvdC40Y9cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGdyZWVuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVWZXJzaW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQWN0aXZhdGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZhdGVWZXJzaW9uRGlzYWJsZWRcIj5cclxuICAgICAgICDQntC/0YPQsdC70LjQutC+0LLQsNGC0YxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVWZXJzaW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuVmFsaWRhdGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidmFsaWRhdGVWZXJzaW9uRGlzYWJsZWRcIj5cclxuICAgICAgICDQodC+0LPQu9Cw0YHQvtCy0LDQvdC40LVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29tcGxldGUoKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5Db21wbGV0ZUNvbXBldGl0aW9uXCI+XHJcbiAgICAgICAg0JfQsNCy0LXRgNGI0LjRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuUmV0dXJuVG9FZGl0XCIgY2xhc3M9XCJidG4gYnRuLW1kXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYmFja1RvRWRpdCgpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYmFja1RvRWRpdERpc2FibGVkXCI+XHJcbiAgICAgICAg0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0YxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0g0YPQv9GA0LDQstC70LXQvdC40LUg0YHRgtCw0YLRg9GB0L7QvC/QvtGC0LHQvtGA0L7QvCAtLT5cclxuICAgICAgPCEtLSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMINC10YHQu9C4INC90LUg0YLRgNC10LHRg9C10YLRgdGPIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItY29udHJvbF9fYWN0aW9uXCJcclxuICAgICAgICAgICAqbmdJZj1cImNvbXBldGl0aW9uICYmIHNob3dFYkxpbmtcIj5cclxuICAgICAgICA8bXJ4LWRyb3Bkb3duIFttYWluUGxhY2VtZW50XT1cIidib3R0b20tZW5kJ1wiIFtmYWxsYmFja1BsYWNlbWVudHNdPVwiWyd0b3AtZW5kJ11cIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1tb3JlLXZlcnRpY2FsIGljb24tZm9udC0yNFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtcnhIaWRlQWZ0ZXJDbGljayAoY2xpY2spPVwicmVkaXJlY3RUb0ViKClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tbGluayBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj7Qn9C10YDQtdC50YLQuCDQsiDQv9C+0LTRgdC40YHRgtC10LzRgyDQsdGO0LTQttC10YLQvdC+0LPQviDQv9C70LDQvdC40YDQvtCy0LDQvdC40Y8g0JPQmNCY0KEgwqvQrdCRwrs8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPCEtLdCS0YDQtdC80LXQvdC90L4g0YHQutGA0YvRgtC+INCyINGA0LDQvNC60LDRhSBNSU5GSU4tMTEyMjMtLT5cclxuICAgICAgICAgICAgPCEtLTxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2sgKGNsaWNrKT1cInBhdXNlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tcGV0aXRpb24uc3RhdHVzID09IGNvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUgJiYgY2FuTWFuYWdlQ29tcGV0aXRpb25cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tcGF1c2UtZmlsbGVkIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPtCf0YDQuNC+0YHRgtCw0L3QvtCy0LjRgtGMPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj4tLT5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2sgKGNsaWNrKT1cInJlc3RvcmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wZXRpdGlvbi5zdGF0dXMgPT0gY29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmdcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tcGxheS1maWxsZWQgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgcmVzdG9yZUJ1dHRvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtcnhIaWRlQWZ0ZXJDbGlja1xyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ2FuY2VsQ29tcGV0aXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9tcngtZHJvcGRvd24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWxvYWRlclwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd0xvYWRlclwiPlxyXG4gIDxtcngtbG9hZGVyICpuZ0lmPVwic2hvd0xvYWRlclwiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ2xhcmdlJ1wiPlxyXG4gIDwvbXJ4LWxvYWRlcj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHNDQUFzQyxFQUN0QyxtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtDQUFrQyxFQUNs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QUlDLGtDQUFrQztzQkFEeEMsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQUlDLDhCQUE4QjtzQkFEcEMsTUFBTTtnQkFJQSx1QkFBdUI7c0JBRDdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25WZXJzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvY29tcGV0aXRpb24tdmVyc2lvbi5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcGV0aXRpb25Nb2RlRW51bSxcclxuICBDb21wZXRpdGlvblN0YXR1c0VudW0sXHJcbiAgQ29tcGV0aXRpb25TdGF0dXNFbnVtTGFiZWwsXHJcbiAgRGlhbG9nQ29sb3IsXHJcbiAgRGlhbG9nVHlwZSxcclxuICBBbGVydFNlcnZpY2UsXHJcbiAgVW5TdWJzY3JpYmVyLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uQ29uZmlnLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25Db25maWdNb2RlbCxcclxuICBDYW5jZWxDb21wZXRpdGlvblR5cGVFbnVtLFxyXG4gIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0sXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsLFxyXG4gIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsLFxyXG4gIENvbXBldGl0aW9uVHlwZUVudW0sXHJcbiAgTWVzc2FnZVNldmVyaXR5LCBzZWxlY3RVc2VySW5mb1xyXG59IGZyb20gJ215cnRleC1tZi11aS1jb21wb3NpdGUnO1xyXG5pbXBvcnQge1xyXG4gIGFjdGl2YXRlQ29tcGV0aXRpb24sXHJcbiAgY2FuY2VsQ29tcGV0aXRpb24sXHJcbiAgY2FuY2VsQ29tcGV0aXRpb25XaXRoVmFsaWRhdGlvbixcclxuICBjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMsXHJcbiAgY29tcGxldGVDb21wZXRpdGlvbixcclxuICBjcmVhdGVDb21wZXRpdGlvblZlcnNpb24sXHJcbiAgZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uLFxyXG4gIGxvYWRDb21wZXRpdGlvbkhlYWRlcixcclxuICBwYXVzZUNvbXBldGl0aW9uLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uVmVyc2lvblxyXG59IGZyb20gJy4uL3N0b3JlL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25TdGF0dXNNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wZXRpdGlvbi1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIHNlbGVjdEFjdGl2aXR5SWQsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25TZWxlY3RlZFZlcnNpb25JZCxcclxuICBzZWxlY3RDb21wZXRpdGlvblN0YXR1cyxcclxuICBzZWxlY3RDb21wZXRpdGlvblR5cGUsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25WZXJzaW9ucyxcclxuICBzZWxlY3RNYW51YWxWZXJzaW9uU3RhdHVzQ2hhbmdlZFxyXG59IGZyb20gJy4uL3N0b3JlL2NvbXBldGl0aW9uLWhlYWRlci5zZWxlY3Rvcic7XHJcbmltcG9ydCB7IENvbXBldGl0aW9uSGVhZGVyQ3VzdG9tQnV0dG9uc0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY29tcGV0aXRpb24taGVhZGVyLWN1c3RvbS1idXR0b25zLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbXBldGl0aW9uUmVqZWN0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTaWduU2VydmljZSB9IGZyb20gJ215cnRleC1tZi1zaWduZXInO1xyXG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRUJMaW5rc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2ViLWxpbmtzLm1vZGVsJztcclxuaW1wb3J0IHtBY2Nlc3NTZXJ2aWNlLCBDaGVja1Blcm1pc3Npb25Nb2RlbH0gZnJvbSAnbXlydGV4LW1mLWF1dGgnO1xyXG5pbXBvcnQge1xyXG4gIENBTl9BR1JFRU1FTlRfQ09NUEVUSVRJT04sXHJcbiAgQ0FOX0NBTkNFTF9DT01QRVRJVElPTixcclxuICBDQU5fQ09NUExFVEVfQ09NUEVUSVRJT04sXHJcbiAgQ0FOX0NSRUFURV9DT01QRVRJVElPTl9WRVJTSU9OLFxyXG4gIENBTl9FRElUX0NPTVBFVElUSU9OLFxyXG4gIENBTl9QVUJMSUNfQ09NUEVUSVRJT04sXHJcbiAgQ09NUEVUSVRJT05fRU5USVRZX05BTUUsXHJcbiAgQ0FOX0FQUFJPVkVfTUFOVUFMX0NPTVBFVElUSU9OXHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbXBldGl0aW9uLXBlcm1pc3Npb24uY29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgdmFsaWRhdGVWZXJzaW9uRm4gPSAoKHBhcmFtOiBzdHJpbmcsIG9uVmFsaWRhdGVkOiAoKSA9PiB2b2lkKSA9PiB2b2lkKTtcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIENyeXB0b0ludGVyY2VwdG9yOiBhbnk7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb21wZXRpdGlvbi1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wZXRpdGlvbi1oZWFkZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJDb21wZXRpdGlvbkhlYWRlckNvbXBvbmVudCBleHRlbmRzIFVuU3Vic2NyaWJlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChDb21wZXRpdGlvbkhlYWRlckN1c3RvbUJ1dHRvbnNEaXJlY3RpdmUpXHJcbiAgcHVibGljIGN1c3RvbUJ1dHRvbnNUZW1wbGF0ZSE6IENvbXBldGl0aW9uSGVhZGVyQ3VzdG9tQnV0dG9uc0RpcmVjdGl2ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsaWRhdGVWZXJzaW9uQWN0aW9uOiB1bmRlZmluZWQgfCB2YWxpZGF0ZVZlcnNpb25GbiA9IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2FuQ3JlYXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2QgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5WYWxpZGF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2FuQWN0aXZhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzRGlydHkgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsaWRhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdGVkQ29tcGV0aXRpb25WZXJzaW9uSW5mbyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGV0aXRpb25WZXJzaW9uTW9kZWw+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZXRWYWxpZGF0aW9uSW5Qcm9ncmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHVibGljIGNvbXBldGl0aW9uOiBDb21wZXRpdGlvblN0YXR1c01vZGVsIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyB2ZXJzaW9uczogQ29tcGV0aXRpb25WZXJzaW9uTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZDogQ29tcGV0aXRpb25WZXJzaW9uTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNlbGVjdGVkVmVyc2lvbiA9ICcnO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvblN0YXR1c0VudW0gPSBDb21wZXRpdGlvblN0YXR1c0VudW07XHJcbiAgcHVibGljIGNhbmNlbENvbXBldGl0aW9uVHlwZUVudW0gPSBDYW5jZWxDb21wZXRpdGlvblR5cGVFbnVtO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtID0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bTtcclxuICBwdWJsaWMgY29tcGV0aXRpb25MYWJlbCA9ICcnO1xyXG4gIHB1YmxpYyBzaG93Q2FuY2VsQ29tcGV0aXRpb25CdXR0b24gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FuY2VsQ29tcGV0aXRpb25CdXR0b25MYWJlbCA9ICfQntGC0LzQtdC90LjRgtGMINC+0YLQsdC+0YAnO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvbkNvbmZpZzogQ29tcGV0aXRpb25Db25maWdNb2RlbCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2hvd0NvbXBsZXRlQ29tcGV0aXRpb25CdXR0b24gPSBmYWxzZTtcclxuICBwdWJsaWMgcmVzdG9yZUJ1dHRvbk5hbWUgPSAn0JLQvtC30L7QsdC90L7QstC40YLRjCc7XHJcbiAgcHJpdmF0ZSBfYWN0aXZpdHlJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2ViTGlua3NNb2RlbDogRUJMaW5rc01vZGVsIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2NvbXBldGl0aW9uVHlwZTogQ29tcGV0aXRpb25UeXBlRW51bSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfY2FuQWdyZWVtZW50VmVyc2lvbkFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5QdWJsaWNWZXJzaW9uQWNjZXNzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuQ29tcGxldGVFbnRpdHlBY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5DYW5jZWxFbnRpdHlBY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5FZGl0RW50aXR5QWNjZXNzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuTWFudWFsQ2hhbmdlU3RhdHVzQWNjZXNzID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2lnblNlcnZpY2U6IFNpZ25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY2Vzc1NlcnZpY2U6IEFjY2Vzc1NlcnZpY2UsKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93TG9hZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbkluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzRW51bUxhYmVsKCkge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy52ZXJzaW9ucy5sZW5ndGggPT0gMSAmJiB0aGlzLnNlbGVjdGVkXHJcbiAgICAgICYmIHRoaXMuc2VsZWN0ZWQuc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsW3RoaXMuc2VsZWN0ZWQuc3RhdHVzXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uID8gQ29tcGV0aXRpb25TdGF0dXNFbnVtTGFiZWxbdGhpcy5jb21wZXRpdGlvbi5zdGF0dXNdIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzQ3NzQ2xhc3MoKTogYW55IHtcclxuICAgIGlmICh0aGlzLnZlcnNpb25zICYmIHRoaXMudmVyc2lvbnMubGVuZ3RoID09IDEgJiYgdGhpcy5zZWxlY3RlZFxyXG4gICAgICAmJiAodGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzIHx8IENvbXBldGl0aW9uU3RhdHVzRW51bS5OZXcpIDw9IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAnJzogdGhpcy5zZWxlY3RlZD8uc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZSxcclxuICAgICAgICAnY29sb3ItZ3JlZW4nOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlLFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnJzogdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uTmV3XHJcbiAgICAgICAgfHwgdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzICE9PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ29tcGxldGVkLFxyXG4gICAgICAnY29sb3ItZ3JlZW4nOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgICdjb2xvci1vcmFuZ2UnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5TdGF5aW5nLFxyXG4gICAgICAnY29sb3ItcmVkJzogdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ3JlYXRlVmVyc2lvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5DcmVhdGVWZXJzaW9uQWNjZXNzXHJcbiAgICAgICYmIHRoaXMuY2FuQ3JlYXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2RcclxuICAgICAgJiYgdGhpcy5pc0xhc3RWZXJzaW9uXHJcbiAgICAgICYmIHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29tcGV0aXRpb24ubW9kZSA+IENvbXBldGl0aW9uTW9kZUVudW0uQmFzZVxyXG4gICAgICAmJiAoKHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQWN0aXZlICYmICF0aGlzLmNvbXBldGl0aW9uLmlzUmVzdWx0UHJvdG9jb2xBcHByb3ZlZClcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5EZWxldGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSB0aGlzLmNvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgJiYgdGhpcy52ZXJzaW9uc1xyXG4gICAgICAmJiB0aGlzLnZlcnNpb25zLmxlbmd0aCA+IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkFjdGl2YXRlVmVyc2lvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2RcclxuICAgICYmIHRoaXMuX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3NcclxuICAgICYmICgodGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICAgICAmJiB0aGlzLmNvbXBldGl0aW9uPy5tb2RlICE9PSBDb21wZXRpdGlvbk1vZGVFbnVtLlZlcnNpb25lZEV4dGVuZGVkKVxyXG4gICAgICAgIHx8ICh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgICAmJiB0aGlzLmNvbXBldGl0aW9uPy5tb2RlID09PSBDb21wZXRpdGlvbk1vZGVFbnVtLlZlcnNpb25lZEV4dGVuZGVkKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFjdGl2YXRlVmVyc2lvbkRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEaXJ0eVxyXG4gICAgICB8fCAhdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2Vzc1xyXG4gICAgICB8fCAoKHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8ubW9kZSAhPT0gQ29tcGV0aXRpb25Nb2RlRW51bS5WZXJzaW9uZWRFeHRlbmRlZClcclxuICAgICAgICB8fCAodGhpcy5zZWxlY3RlZD8uc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkNvbmZpcm1lZFxyXG4gICAgICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8ubW9kZSA9PT0gQ29tcGV0aXRpb25Nb2RlRW51bS5WZXJzaW9uZWRFeHRlbmRlZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB2YWxpZGF0ZVZlcnNpb25EaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzRGlydHkgfHwgIXRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3MgfHwgdGhpcy52YWxpZGF0aW9uSW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3JlYXRlVmVyc2lvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEaXJ0eSB8fCAhdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYmFja1RvRWRpdERpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEaXJ0eTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuVmFsaWRhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuVmFsaWRhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgICAmJiB0aGlzLl9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzXHJcbiAgICAgICYmIHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uPy5tb2RlID09PSBDb21wZXRpdGlvbk1vZGVFbnVtLlZlcnNpb25lZEV4dGVuZGVkXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkNhbmNlbGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0xhc3RWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbSA9IE1hdGgubWF4KC4uLnRoaXMudmVyc2lvbnMubWFwKHggPT4geC5udW0pKTtcclxuICAgICAgcmV0dXJuIG0gPT09IHRoaXMuc2VsZWN0ZWQ/Lm51bTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd1JlamVjdGlvblJlYXNvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQ/LnJlamVjdGlvblJlYXNvbiAmJlxyXG4gICAgICAodGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICAgfHwgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLlJlamVjdGVkKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB2ZXJzaW9uU3RhdHVzQ2xhc3MoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICcnOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlLFxyXG4gICAgICAnY29sb3ItZ3JlZW4nOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuQ29uZmlybWVkVmVyc2lvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uVmFsaWRhdGlvblxyXG4gICAgICAmJiB0aGlzLl9jYW5NYW51YWxDaGFuZ2VTdGF0dXNBY2Nlc3M7XHJcbiAgfVxyXG5cclxuICAvKiog0JrQvtC90YLQtdC60YHRgiDQtNC70Y8g0LrQsNGB0YLQvtC80L3Ri9GFINC60L3QvtC/0L7Quiwg0LzQvtC20LXRgiDRgNCw0YHRiNC40YDRj9GC0YzRgdGPICovXHJcbiAgcHVibGljIGdldCBjdXN0b21CdXR0b25zVGVtcGxhdGVDb250ZXh0KCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhY3Rpdml0eUlkOiB0aGlzLl9hY3Rpdml0eUlkLFxyXG4gICAgICBjb21wZXRpdGlvbklkOiB0aGlzLmNvbXBldGl0aW9uPy5pZCxcclxuICAgICAgY29tcGV0aXRpb25WZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQ/LmlkXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5SZXR1cm5Ub0VkaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuRWRpdEVudGl0eUFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dFYkxpbmsoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMudmVyc2lvbnMuc29tZSh4ID0+IHguc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ29tcGxldGVDb21wZXRpdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5Db21wbGV0ZUVudGl0eUFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiAhdGhpcy5jb21wZXRpdGlvbi5pc0V4dGVybmFsXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24uaXNSZXN1bHRQcm90b2NvbEFwcHJvdmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DYW5jZWxDb21wZXRpdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5DYW5jZWxFbnRpdHlBY2Nlc3NcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICYmICh0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZ1xyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWQpXHJcbiAgICAgICYmIHRoaXMuc2hvd0NhbmNlbENvbXBldGl0aW9uQnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChsb2FkQ29tcGV0aXRpb25IZWFkZXIoKSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbnMpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMudmVyc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblNlbGVjdGVkVmVyc2lvbklkKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLnNlbGVjdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uU3RhdHVzKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLmNvbXBldGl0aW9uID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQUdSRUVNRU5UX0NPTVBFVElUSU9OKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3MgPSByZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQ1JFQVRFX0NPTVBFVElUSU9OX1ZFUlNJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9QVUJMSUNfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9DT01QTEVURV9DT01QRVRJVElPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5Db21wbGV0ZUVudGl0eUFjY2VzcyA9IHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9DQU5DRUxfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ2FuY2VsRW50aXR5QWNjZXNzID0gcmVzdWx0KTtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0VESVRfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuRWRpdEVudGl0eUFjY2VzcyA9IHJlc3VsdCk7ICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQVBQUk9WRV9NQU5VQUxfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuTWFudWFsQ2hhbmdlU3RhdHVzQWNjZXNzID0gcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblR5cGUpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX2NvbXBldGl0aW9uVHlwZSA9IHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkxhYmVsKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY29tcGV0aXRpb25MYWJlbCA9IHJlc3VsdDtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0QWN0aXZpdHlJZCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLl9hY3Rpdml0eUlkID0gcmVzdWx0O1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkNvbmZpZykpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wZXRpdGlvbkNvbmZpZyA9IHJlc3VsdDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25MYWJlbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvbkxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvblR5cGVcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID4gdGhpcy5jYW5jZWxDb21wZXRpdGlvblR5cGVFbnVtLkRpc2FibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQ29tcGV0aXRpb25CdXR0b24gPSB0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnNob3dDb21wbGV0ZUNvbXBldGl0aW9uQnV0dG9uO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnJlc3RvcmVCdXR0b25OYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3RvcmVCdXR0b25OYW1lID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5yZXN0b3JlQnV0dG9uTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0TWFudWFsVmVyc2lvblN0YXR1c0NoYW5nZWQpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy8g0L/RgNC+0LjQt9C+0YjQu9C+INGA0YPRh9C90L7QtSDQuNC30LzQtdC90LXQvdC40LUg0YHRgtCw0YLRg9GB0LAsINGC0L7Qu9C60LDQtdC8INC00LDQu9GM0YjQtSDQv9C+INGC0LDQudC80LDRg9GC0YNcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDAwKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2UuZ2V0U2VsZWxlY3Rpb25FZGl0RWJMaW5rcygpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLl9lYkxpbmtzTW9kZWwgPSByZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdmFsdWUgYXMgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwodmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsW3ZhbHVlIGFzIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1dO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6IGDQpNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LjQt9C80LXQvdC10L3QuNC5YCxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgn0JLQvdC40LzQsNC90LjQtSEg0KTQvtGA0LzQuNGA0L7QstCw0L3QuNC1INC40LfQvNC10L3QtdC90LjQuSDQv9GA0LjQstC10LTQtdGCINC6INGB0L7Qt9C00LDQvdC40Y4g0L3QvtCy0L7QuSDQstC10YDRgdC40Lgg0L7RgtCx0L7RgNCwJyl9XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgINCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQuNC30LzQtdC90LXQvdC40Y8/XHJcbiAgICAgICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY3JlYXRlQ29tcGV0aXRpb25WZXJzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgICB0aXRsZTogYNCf0YPQsdC70LjQutCw0YbQuNGPICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwYCxcclxuICAgICAgICBtZXNzYWdlOiBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgpfVxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICDQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtC/0YPQsdC70LjQutC+0LLQsNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P1xyXG4gICAgICAgICAgICA8L3A+YCxcclxuICAgICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgICBva0NhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVWZXJzaW9uQWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25BY3Rpb24oc2VsZWN0ZWRJdGVtLmlkLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25TZXJ2aWNlLnNpZ24oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9Cd0LDQv9GA0LDQstC70LXQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwINC90LAg0YHQvtCz0LvQsNGB0L7QstCw0L3QuNC1JyxcclxuICAgICAgICAgICAgb2tMYWJlbDogJ9Ce0YLQv9GA0LDQstC40YLRjCcsXHJcbiAgICAgICAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgICAgICAgIHBkZlVybDogYC9tLWRhdGEvbWluZmluL3BkZi1jb21wZXRpdGlvbi8ke3RoaXMuY29tcGV0aXRpb24/LmlkfT92ZXJzaW9uSWQ9JHtzZWxlY3RlZEl0ZW0uaWR9YCxcclxuICAgICAgICAgICAgeG1sVXJsOiBgL20tZGF0YS9taW5maW4veG1sLWNvbXBldGl0aW9uLyR7dGhpcy5jb21wZXRpdGlvbj8uaWR9P3ZlcnNpb25JZD0ke3NlbGVjdGVkSXRlbS5pZH1gLFxyXG4gICAgICAgICAgICBwcm92aWRlcjogJ2VtcHR5J1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSgnJywgJ9Ce0LbQuNC00LDQudGC0LUuINCS0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L7RgtC/0YDQsNCy0LrQsCDQvdCwINGB0L7Qs9C70LDRgdC+0LLQsNC90LjQtS4nLCBNZXNzYWdlU2V2ZXJpdHkud2FpdCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgICB2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZCxcclxuICAgICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uVmFsaWRhdGlvblxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkluUHJvZ3Jlc3MuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHB1YmxpYyBjb25maXJtZWRWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6IGDQo9GC0LLQtdGA0LbQtNC10L3QuNC1INC+0YLQsdC+0YDQsGAsXHJcbiAgICAgIG1lc3NhZ2U6IGA8cD7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9GC0LLQtdGA0LTQuNGC0Ywg0L7RgtCx0L7RgD88L3A+YCxcclxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnllbGxvdyxcclxuICAgICAgdHlwZTogRGlhbG9nVHlwZS5jb25maXJtLFxyXG4gICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgIG9rQ2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICB2ZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQhLmlkLFxyXG4gICAgICAgICAgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkNvbmZpcm1lZFxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVqZWN0ZWRWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgIHRpdGxlOiBg0J7RgtC60LvQvtC90LXQvdC40LUg0L7RgtCx0L7RgNCwYCxcclxuICAgICAgbWVzc2FnZTogYDxwPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INC+0YLQutC70L7QvdC40YLRjCDQvtGC0LHQvtGAPzwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgIHZlcnNpb25JZDogdGhpcy5zZWxlY3RlZCEuaWQsXHJcbiAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWRcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQo9C00LDQu9C40YLRjCDQstC10YDRgdC40Y4gICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwP2AsXHJcbiAgICAgICAgYCR7dGhpcy5nZXRXYXJuaW5nTWVzc2FnZUh0bWwoKX1cclxuICAgICAgPHA+XHJcbiAgICAgICAg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpfdCwP1xyXG4gICAgICA8L3A+YCxcclxuICAgICAgICBEaWFsb2dUeXBlLmNvbmZpcm0sIChvaykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChkZWxldGVDb21wZXRpdGlvblZlcnNpb24oe3ZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkfSkpO1xyXG4gICAgICAgIH0sIHVuZGVmaW5lZCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIERpYWxvZ0NvbG9yLnJlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdG9yZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNCS0L7Qt9C+0LHQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aXZhdGVDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhdXNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J/RgNC40L7RgdGC0LDQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gocGF1c2VDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID09IHRoaXMuY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bS5XaXRoVmFsaWRhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uKHt2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZH0pKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J7RgtC80LXQvdC40YLRjCAke3RoaXMuY29tcGV0aXRpb25MYWJlbH0/YCwgbnVsbCwgRGlhbG9nVHlwZS5jb25maXJtLCAob2spID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNhbmNlbENvbXBldGl0aW9uKCkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICB0aXRsZTogYNCX0LDQstC10YDRiNC10L3QuNC1INC+0YLQsdC+0YDQsGAsXHJcbiAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgYDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5LWJhbm5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tYXR0ZW50aW9uIGljb24tZm9udC0xNiBpY29uLWNvbG9yLW9yYW5nZSBtci0yXCI+PC9kaXY+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgINCt0YLQviDQtNC10LnRgdGC0LLQuNC1INC90LXQvtCx0YDQsNGC0LjQvNC+LiDQn9C+0YHQu9C1INC10LPQviDQstGL0L/QvtC70L3QtdC90LjRjyDQvtGC0LzQtdC90LjRgtGMINGA0LXQt9GD0LvRjNGC0LDRgiDQvdC10LLQvtC30LzQvtC20L3QvlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0J/QvtC00YLQstC10YDQttC00LDRjyDQtNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSwg0LLRi8Kg0L/QvtC00YLQstC10YDQttC00LDQtdGC0LUg0LrQvtGA0YDQtdC60YLQvdC+0YHRgtGMINC/0YDQvtGC0L7QutC+0LvQsCDQuMKg0L7RgtGB0YPRgtGB0YLQstC40LUg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0LLCoNC10LPQvsKg0LrQvtGA0YDQtdC60YLQuNGA0L7QstC60LUuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0KHQutC+0YDRgNC10LrRgtC40YDQvtCy0LDRgtGMINC40YLQvtCz0L7QstGL0Lkg0L/RgNC+0YLQvtC60L7QuyDQstC+0LfQvNC+0LbQvdC+INGC0L7Qu9GM0LrQviDQssKg0YLQtdGH0LXQvdC40LUgMjDCoNC60LDQu9C10L3QtNCw0YDQvdGL0YUg0LTQvdC10Lkg0YHQvsKg0LTQvdGPwqDRg9GC0LLQtdGA0LbQtNC10L3QuNGPINC10LPQvsKg0L/QtdGA0LLQvtC5INCy0LXRgNGB0LjQuCDQuMKg0LTQvsKg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LTQsNC90L3QvtCz0L4g0LTQtdC50YHRgtCy0LjRjy5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+XHJcbiAgICAgICAgICDQldGB0LvQuMKg0LLRi8Kg0L3QtcKg0YPQstC10YDQtdC90Ysg0LLCoNC60L7RgNGA0LXQutGC0L3QvtGB0YLQuCDQv9GA0L7RgtC+0LrQvtC70LAsINC/0YDQuMKg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0YHRhNC+0YDQvNC40YDRg9C50YLQtSDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+wqDQtdCz0L7CoNC+0YLQutC70L7QvdC10L3QuNC4INC4wqDQv9C+0LTQv9C40YjQuNGC0LUg0L3QvtCy0YPRjiDQstC10YDRgdC40Y4uXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgINCX0LDQstC10YDRiNC40YLRjCDQvtGC0LHQvtGAP1xyXG4gICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGxldGVDb21wZXRpdGlvbigpKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSgn0JfQsNCy0LXRgNGI0LXQvdC40LUg0L7RgtCx0L7RgNCwINC80L7QttC10YIg0LfQsNC90Y/RgtGMINC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLicsXHJcbiAgICAgICAgICAn0J7QsdC90L7QstC40YLQtSDRgdGC0YDQsNC90LjRhtGDINC40LvQuCDQstC10YDQvdC40YLQtdGB0Ywg0L/QvtC30LbQtScsIE1lc3NhZ2VTZXZlcml0eS5pbmZvKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VmVyc2lvbihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbih7dmVyc2lvbklkOiBpZH0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrVG9FZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDRgtC10LrRg9GJ0LXQuSDQstC10YDRgdC40LhgLFxyXG4gICAgICBg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YLQtdC60YPRidGD0Y4g0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsLnRvTG93ZXJDYXNlKCl9YWAsXHJcbiAgICAgIERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQuaWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdW5kZWZpbmVkLCBudWxsLCAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsIHVuZGVmaW5lZCwgRGlhbG9nQ29sb3IueWVsbG93KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93UmVqZWN0aW9uKG1vZGVsOiBDb21wZXRpdGlvblJlamVjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQn9GA0LjRh9C40L3QsCDQvtGC0LrQu9C+0L3QtdC90LjRj2AsXHJcbiAgICAgIGAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlfX2F1dGhvclwiPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5hdXRob3J9PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5jcmVhdGVkRGF0ZX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1ib2R5X190ZXh0XCI+JHttb2RlbC5yZWFzb259PC9wPlxyXG4gICAgICBgLCBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBudWxsLCB1bmRlZmluZWQsICcnLCBEaWFsb2dDb2xvci55ZWxsb3cpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZGlyZWN0VG9FYigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uICE9IHVuZGVmaW5lZCAmJiB0aGlzLl9jb21wZXRpdGlvblR5cGUgIT0gdW5kZWZpbmVkICYmIHRoaXMuX2ViTGlua3NNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGxpbmsgPSAnJztcclxuXHJcbiAgICAgIGlmICh0aGlzLl9jb21wZXRpdGlvblR5cGUgPT0gQ29tcGV0aXRpb25UeXBlRW51bS5Tb2NpYWxPcmRlcikge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc29jaWFsT3JkZXJ9LyNTb2NpYWxPcmRlckFncmVlbWVudGA7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29tcGV0aXRpb25UeXBlID09IENvbXBldGl0aW9uVHlwZUVudW0uUmVnaW9uKSB7XHJcbiAgICAgICAgbGluayA9IGAke3RoaXMuX2ViTGlua3NNb2RlbC5zdWJzaWR5fS8jQWdyZWVtZW50U3Vic2lkeU5vbkZlZGVyYWxgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc3Vic2lkeX0vI0FncmVlbWVudFN1YnNpZHlSZWdpc3RyeWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy5zZWxlY3RlZFZlcnNpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMudmVyc2lvbnMuZmluZChzID0+IHMuaWQgPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbXBldGl0aW9uVmVyc2lvbkluZm8uZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0V2FybmluZ01lc3NhZ2VIdG1sKGN1c3RvbVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWN1c3RvbVRleHQpIHtcclxuICAgICAgY3VzdG9tVGV4dCA9ICfQktC90LjQvNCw0L3QuNC1ISDQlNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQvdC10LvRjNC30Y8g0L7RgtC80LXQvdC40YLRjCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJiZy1uZXdzIHB4LTMgcmFkaXVzLTQgbWItMyBkLWZsZXhcIiBzdHlsZT1cInBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTMpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTYuNTY1NyAyLjQxNjY3QzcuMjcxMzUgMS4xOTQ0NCA5LjAzNTQ4IDEuMTk0NDQgOS43NDExMyAyLjQxNjY3TDE1LjIyNiAxMS45MTY3QzE1LjkzMTYgMTMuMTM4OSAxNS4wNDk1IDE0LjY2NjcgMTMuNjM4MiAxNC42NjY3SDIuNjY4NTlDMS4yNTcyOSAxNC42NjY3IDAuMzc1MjI1IDEzLjEzODkgMS4wODA4NyAxMS45MTY3TDYuNTY1NyAyLjQxNjY3Wk04Ljg3NTEgMi45MTY2N0M4LjU1NDM1IDIuMzYxMTEgNy43NTI0OCAyLjM2MTExIDcuNDMxNzMgMi45MTY2N0wxLjk0NjkgMTIuNDE2N0MxLjYyNjE1IDEyLjk3MjIgMi4wMjcwOSAxMy42NjY3IDIuNjY4NTkgMTMuNjY2N0gxMy42MzgyQzE0LjI3OTcgMTMuNjY2NyAxNC42ODA3IDEyLjk3MjIgMTQuMzU5OSAxMi40MTY3TDguODc1MSAyLjkxNjY3Wk04LjE1MzQyIDYuMTY2NjdDOC40Mjk1NiA2LjE2NjY3IDguNjUzNDIgNi4zOTA1MiA4LjY1MzQyIDYuNjY2NjdWOS4zMzMzM0M4LjY1MzQyIDkuNjA5NDggOC40Mjk1NiA5LjgzMzMzIDguMTUzNDIgOS44MzMzM0M3Ljg3NzI3IDkuODMzMzMgNy42NTM0MiA5LjYwOTQ4IDcuNjUzNDIgOS4zMzMzM1Y2LjY2NjY3QzcuNjUzNDIgNi4zOTA1MiA3Ljg3NzI3IDYuMTY2NjcgOC4xNTM0MiA2LjE2NjY3Wk04LjE1MzQyIDEwLjgzMzNDOC40Mjk1NiAxMC44MzMzIDguNjUzNDIgMTEuMDU3MiA4LjY1MzQyIDExLjMzMzNWMTJDOC42NTM0MiAxMi4yNzYxIDguNDI5NTYgMTIuNSA4LjE1MzQyIDEyLjVDNy44NzcyNyAxMi41IDcuNjUzNDIgMTIuMjc2MSA3LjY1MzQyIDEyVjExLjMzMzNDNy42NTM0MiAxMS4wNTcyIDcuODc3MjcgMTAuODMzMyA4LjE1MzQyIDEwLjgzMzNaXCIgZmlsbD1cIiNEOTc1MDhcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0wIHRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgJHtjdXN0b21UZXh0fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY2Nlc3NDb250cm9sKHBlcm1pc3Npb246IHN0cmluZyk6IENoZWNrUGVybWlzc2lvbk1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBlcm1pc3Npb24sXHJcbiAgICAgIG9iamVjdFR5cGU6IENPTVBFVElUSU9OX0VOVElUWV9OQU1FLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5jb21wZXRpdGlvbj8uaWRcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lclwiICpuZ0lmPVwic2VsZWN0ZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWJsb2NrXCI+XHJcbiAgICAgIDwhLS0g0J3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTE2MCBtci0zXCI+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINC90LDQt9Cy0LDQvdC40LUg0YHRg9GJ0L3QvtGB0YLQuCwg0LvQuNCx0L4gXCLQodGD0LHRgdC40LTQuNGPXCIg0LvQuNCx0L4gXCLQntGC0LHQvtGAXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiIG15Q29tcGV0aXRpb25MYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPCEtLSDQvdCw0LfQstCw0L3QuNC1INGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0L7Qs9GA0LDQvdC40YfQuNGC0Ywg0LTQu9C40L3RgyDQvdCw0LfQstCw0L3QuNGPINCyIDQ0INGB0LjQvNCy0L7Qu9C+0LIgLS0+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINCyINGC0YPQu9GC0LjQvyDQv9C+0LvQvdC+0LUg0L3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RleHQgdGV4dC1ub3JtYWxcIiBbbXJ4Q2RrVG9vbHRpcF09XCJzZWxlY3RlZC5uYW1lXCIgW3Rvb2x0aXBNYXhXaWR0aF09XCIzMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5zaG9ydE5hbWUgPyBzZWxlY3RlZC5zaG9ydE5hbWUgOiAn0J3QtSDRg9C60LDQt9Cw0L0nIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINGB0YLQsNGC0YPRgSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTExMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgINCh0YLQsNGC0YPRgVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwhLS0g0YHRgtCw0YLRg9GBINGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0LTQu9GPINC30LDQtNCw0L3QuNGPINGG0LLQtdGC0LAg0LTQvtCx0LDQstC70Y/RgtGMINC60LvQsNGB0YHRizog0L7RgNCw0L3QttC10LLRi9C5IC0gXCJjb2xvci1vcmFuZ2VcIiwg0LfQtdC70LXQvdGL0LkgLSBcImNvbG9yLWdyZWVuXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190ZXh0XCIgW25nQ2xhc3NdPVwiY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzRW51bUxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tINGB0LXQu9C10LrRgiDRgSDQstGL0LHQvtGA0L7QvCDQstC10YDRgdC40LggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbSBpbmZvLWJhbm5lci1pdGVtX2lucHV0IHdweC0yNjAgbXItM1wiICpuZ0lmPVwidmVyc2lvbnMgJiYgdmVyc2lvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggaW5wdXRib3gtbWQgbWItMFwiPlxyXG4gICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInZlcnNpb25zXCIgW25nTW9kZWxdPVwic2VsZWN0ZWQuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwic3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kVGV4dD1cItCd0LUg0L3QsNC50LTQtdC90L5cIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAge3sgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwoaXRlbS5zdGF0dXMpIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxyXG4gICAgICAgICAgICDQktC10YDRgdC40Y8ge3sgaXRlbS5udW0gfX0g0L7RgiB7eyBpdGVtLmNyZWF0ZWREYXRlIHwgZGF0ZVRpbWVGb3JtYXQ6ICdtb3MnIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAg0JLQtdGA0YHQuNGPIHt7IGl0ZW0ubnVtIH19INC+0YIge3sgaXRlbS5jcmVhdGVkRGF0ZSB8IGRhdGVUaW1lRm9ybWF0OiAnbW9zJyAgfX1cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tINGB0YLQsNGC0LDRg9GBINCy0LXRgNGB0LjQuCAtLT5cclxuICAgIDwhLS0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwg0LXRgdC70Lgg0L3QtdGCINCy0LXRgNGB0LjQuSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtIHdweC0xMTBcIiAqbmdJZj1cInZlcnNpb25zICYmIHZlcnNpb25zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAg0KHRgtCw0YLRg9GBINCy0LXRgNGB0LjQuFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwhLS0g0YHRgtCw0YLRg9GBINCy0LXRgNGB0LjQuCAtLT5cclxuICAgICAgPCEtLSDQtNC70Y8g0LfQsNC00LDQvdC40Y8g0YbQstC10YLQsCDQtNC+0LHQsNCy0LvRj9GC0Ywg0LrQu9Cw0YHRgdGLOiDQvtGA0LDQvdC20LXQstGL0LkgLSBcImNvbG9yLW9yYW5nZVwiLCDQt9C10LvQtdC90YvQuSAtIFwiY29sb3ItZ3JlZW5cIiAtLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZFwiIFtuZ0NsYXNzXT1cInZlcnNpb25TdGF0dXNDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsKHNlbGVjdGVkLnN0YXR1cykgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tINGD0LTQsNC70LXQvdC40LUsINCy0YvQt9C+0LIg0LzQvtC00LDQu9C60LgsINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L7QsSDQstC90LXRgdC10L3QuNC4INC40LfQvNC10L3QtdC90LjQuSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtXCI+XHJcbiAgICAgIDwhLS0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwg0LXRgdC70Lgg0L3QtSDRgtGA0LXQsdGD0LXRgtGB0Y8gLS0+XHJcbiAgICAgIDwhLS0gXCLQutC+0L3QstC10YDRglwiIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9faWNvblwiICpuZ0lmPVwic2hvd1JlamVjdGlvblJlYXNvblwiXHJcbiAgICAgICAgICAgW21yeENka1Rvb2x0aXBdPVwiJ9Cf0L7RgdC80L7RgtGA0LXRgtGMINC/0YDQuNGH0LjQvdGDINC+0YLQutC70L7QvdC10L3QuNGPJ1wiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZWplY3Rpb24oc2VsZWN0ZWQucmVqZWN0aW9uUmVhc29uKVwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiNlwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMlwiIHJ4PVwiMVwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTMgNi4yNUwxMS4zMzU2IDEzLjY1OTVDMTEuNzE0NSAxMy45OTYyIDEyLjI4NTUgMTMuOTk2MiAxMi42NjQ0IDEzLjY1OTVMMjEgNi4yNVwiIHN0cm9rZT1cIiMyODI4MjhcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0zIDE4TDcuNSAxNEw5Ljc1IDEyTTIxIDE4TDE2LjUgMTRMMTQuMjUgMTJcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSDRg9C00LDQu9C10L3QuNC1INCy0LXRgNGB0LjQuCAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImNhbkRlbGV0ZVZlcnNpb25cIiAoY2xpY2spPVwicmVtb3ZlVmVyc2lvbigpXCIgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX19pY29uXCIgW21yeENka1Rvb2x0aXBdPVwiJ9Cj0LTQsNC70LjRgtGMINCy0LXRgNGB0LjRjidcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMyA2SDVIMjFcIiBzdHJva2U9XCIjRDE0MTE0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTE5IDZWMjBDMTkgMjAuNTMwNCAxOC43ODkzIDIxLjAzOTEgMTguNDE0MiAyMS40MTQyQzE4LjAzOTEgMjEuNzg5MyAxNy41MzA0IDIyIDE3IDIySDdDNi40Njk1NyAyMiA1Ljk2MDg2IDIxLjc4OTMgNS41ODU3OSAyMS40MTQyQzUuMjEwNzEgMjEuMDM5MSA1IDIwLjUzMDQgNSAyMFY2SDE5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEwIDExVjE3XCIgc3Ryb2tlPVwiI0QxNDExNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMTFWMTdcIiBzdHJva2U9XCIjRDE0MTE0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSDQstC+0YHQutC70LjRhtCw0YLQtdC70YzQvdGL0Lkg0LfQvdCw0LogLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNMYXN0VmVyc2lvblwiIGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbV9faWNvblwiIFttcnhDZGtUb29sdGlwXT1cIifQktC90LXRgdC10L3QuNC1INC40LfQvNC10L3QtdC90LjQuSDQtNC+0YHRgtGD0L/QvdC+INC90LAg0L/QvtGB0LvQtdC00L3QtdC5INCy0LXRgNGB0LjQuCdcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTIuMjMwMiAxOFYxN00xMi4yMzAyIDE0VjEwTTQuMDAyOTggMjEuMjVIMjAuNDU3NUMyMS45OTcxIDIxLjI1IDIyLjk1OTMgMTkuNTgzMyAyMi4xODk1IDE4LjI1TDEzLjk2MjMgNEMxMy4xOTI1IDIuNjY2NjcgMTEuMjY4IDIuNjY2NjcgMTAuNDk4MiA0TDIuMjcwOTMgMTguMjVDMS41MDExMyAxOS41ODMzIDIuNDYzMzggMjEuMjUgNC4wMDI5OCAyMS4yNVpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjRDU3QjFDXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWNvbnRyb2xcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiEhY3VzdG9tQnV0dG9uc1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21CdXR0b25zVGVtcGxhdGUudGVtcGxhdGVSZWY7Y29udGV4dDpjdXN0b21CdXR0b25zVGVtcGxhdGVDb250ZXh0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1lZFZlcnNpb24oKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5Db25maXJtZWRWZXJzaW9uXCI+XHJcbiAgICAgICAgICDQo9GC0LLQtdGA0LTQuNGC0YxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVqZWN0ZWRWZXJzaW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ29uZmlybWVkVmVyc2lvblwiPlxyXG4gICAgICAgICAg0J7RgtC60LvQvtC90LjRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBncmVlblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZVZlcnNpb24oKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5DcmVhdGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3JlYXRlVmVyc2lvbkRpc2FibGVkXCI+XHJcbiAgICAgICAg0KHRhNC+0YDQvNC40YDQvtCy0LDRgtGMINC40LfQvNC10L3QtdC90LjRj1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgZ3JlZW5cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVZlcnNpb24oKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5BY3RpdmF0ZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmF0ZVZlcnNpb25EaXNhYmxlZFwiPlxyXG4gICAgICAgINCe0L/Rg9Cx0LvQuNC60L7QstCw0YLRjFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZVZlcnNpb24oKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5WYWxpZGF0ZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ2YWxpZGF0ZVZlcnNpb25EaXNhYmxlZFwiPlxyXG4gICAgICAgINCh0L7Qs9C70LDRgdC+0LLQsNC90LjQtVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb21wbGV0ZSgpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkNvbXBsZXRlQ29tcGV0aXRpb25cIj5cclxuICAgICAgICDQl9Cw0LLQtdGA0YjQuNGC0YxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5SZXR1cm5Ub0VkaXRcIiBjbGFzcz1cImJ0biBidG4tbWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJiYWNrVG9FZGl0KClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJiYWNrVG9FZGl0RGlzYWJsZWRcIj5cclxuICAgICAgICDQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPCEtLSDRg9C/0YDQsNCy0LvQtdC90LjQtSDRgdGC0LDRgtGD0YHQvtC8L9C+0YLQsdC+0YDQvtC8IC0tPlxyXG4gICAgICA8IS0tINC90LUg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LXRgdC70Lgg0L3QtSDRgtGA0LXQsdGD0LXRgtGB0Y8gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1jb250cm9sX19hY3Rpb25cIlxyXG4gICAgICAgICAgICpuZ0lmPVwiY29tcGV0aXRpb24gJiYgc2hvd0ViTGlua1wiPlxyXG4gICAgICAgIDxtcngtZHJvcGRvd24gW21haW5QbGFjZW1lbnRdPVwiJ2JvdHRvbS1lbmQnXCIgW2ZhbGxiYWNrUGxhY2VtZW50c109XCJbJ3RvcC1lbmQnXVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLW1vcmUtdmVydGljYWwgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrIChjbGljayk9XCJyZWRpcmVjdFRvRWIoKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1saW5rIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPtCf0LXRgNC10LnRgtC4INCyINC/0L7QtNGB0LjRgdGC0LXQvNGDINCx0Y7QtNC20LXRgtC90L7Qs9C+INC/0LvQsNC90LjRgNC+0LLQsNC90LjRjyDQk9CY0JjQoSDCq9Ct0JHCuzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8IS0t0JLRgNC10LzQtdC90L3QviDRgdC60YDRi9GC0L4g0LIg0YDQsNC80LrQsNGFIE1JTkZJTi0xMTIyMy0tPlxyXG4gICAgICAgICAgICA8IS0tPGJ1dHRvbiBtcnhIaWRlQWZ0ZXJDbGljayAoY2xpY2spPVwicGF1c2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wZXRpdGlvbi5zdGF0dXMgPT0gY29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSAmJiBjYW5NYW5hZ2VDb21wZXRpdGlvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1wYXVzZS1maWxsZWQgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+0J/RgNC40L7RgdGC0LDQvdC+0LLQuNGC0Yw8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPi0tPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtcnhIaWRlQWZ0ZXJDbGljayAoY2xpY2spPVwicmVzdG9yZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBldGl0aW9uLnN0YXR1cyA9PSBjb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZ1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1wbGF5LWZpbGxlZCBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyByZXN0b3JlQnV0dG9uTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5DYW5jZWxDb21wZXRpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNhbmNlbENvbXBldGl0aW9uQnV0dG9uTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L21yeC1kcm9wZG93bj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItbG9hZGVyXCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93TG9hZGVyXCI+XHJcbiAgPG1yeC1sb2FkZXIgKm5nSWY9XCJzaG93TG9hZGVyXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbGFyZ2UnXCI+XHJcbiAgPC9tcngtbG9hZGVyPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24tc3RhdHVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLWNvbXBldGl0aW9uL3NyYy9saWIvbW9kdWxlcy9jb21wZXRpdGlvbi1oZWFkZXIvbW9kZWxzL2NvbXBldGl0aW9uLXN0YXR1cy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGV0aXRpb25Nb2RlRW51bSwgQ29tcGV0aXRpb25TdGF0dXNFbnVtIH0gZnJvbSAnbXlydGV4LW1mLXVpLWNvbXBvc2l0ZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBldGl0aW9uU3RhdHVzTW9kZWwge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBDb21wZXRpdGlvblN0YXR1c0VudW07XHJcbiAgbW9kZTogQ29tcGV0aXRpb25Nb2RlRW51bTtcclxuICBpc1Jlc3VsdFByb3RvY29sQXBwcm92ZWQ6IGJvb2xlYW47XHJcbiAgaXNFeHRlcm5hbDogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -276,6 +276,7 @@ class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
276
276
|
&& this.competition !== undefined
|
|
277
277
|
&& this.competition.status === CompetitionStatusEnum.Active
|
|
278
278
|
&& ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === CompetitionVersionStatusEnum.Active
|
|
279
|
+
&& !this.competition.isExternal
|
|
279
280
|
&& this.competition.isResultProtocolApproved;
|
|
280
281
|
}
|
|
281
282
|
get canCancelCompetition() {
|
|
@@ -438,7 +439,7 @@ class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
438
439
|
}
|
|
439
440
|
}
|
|
440
441
|
confirmedVersion() {
|
|
441
|
-
if (this.selected) {
|
|
442
|
+
if (!this.selected) {
|
|
442
443
|
return;
|
|
443
444
|
}
|
|
444
445
|
this.alertService.showDialog({
|
|
@@ -457,7 +458,7 @@ class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
457
458
|
});
|
|
458
459
|
}
|
|
459
460
|
rejectedVersion() {
|
|
460
|
-
if (this.selected) {
|
|
461
|
+
if (!this.selected) {
|
|
461
462
|
return;
|
|
462
463
|
}
|
|
463
464
|
this.alertService.showDialog({
|