@bizdoc/core 1.11.0 → 1.11.4
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/admin/document-trace/document-trace.component.mjs +3 -3
- package/esm2020/lib/admin/document-trace/trace-element.component.mjs +2 -2
- package/esm2020/lib/admin/form/workflow/role-node.component.mjs +5 -4
- package/esm2020/lib/admin/positions/positions.component.mjs +16 -3
- package/esm2020/lib/compose/action/action-picker.component.mjs +7 -36
- package/esm2020/lib/compose/action/action.base.mjs +43 -0
- package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +70 -0
- package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
- package/esm2020/lib/compose/trace/flow.component.mjs +6 -5
- package/esm2020/lib/core/configuration.mjs +8 -10
- package/esm2020/lib/core/mailbox.service.mjs +1 -1
- package/esm2020/lib/core/translations.mjs +3 -1
- package/esm2020/lib/cube/accum/accum.component.mjs +2 -2
- package/esm2020/lib/cube/chart/chart.component.mjs +2 -2
- package/esm2020/lib/cube/explore/explore.pane.component.mjs +2 -2
- package/esm2020/lib/cube/grid/grid.component.mjs +2 -2
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +2 -4
- package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/table.component.mjs +8 -7
- package/esm2020/lib/cube/parallel/parallel.component.mjs +2 -2
- package/esm2020/lib/cube/pivot/pivot.component.mjs +2 -2
- package/esm2020/lib/cube/view.mobile.component.mjs +2 -2
- package/esm2020/lib/desktop.module.mjs +6 -6
- package/esm2020/lib/routes.desktop.mjs +13 -7
- package/esm2020/lib/views/cube/explore.component.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +277 -237
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +277 -237
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/positions/positions.component.d.ts +5 -0
- package/lib/compose/action/action-picker.component.d.ts +4 -6
- package/lib/compose/action/action.base.d.ts +11 -0
- package/lib/compose/action/action.pane.dialog.exp.d.ts +29 -0
- package/lib/core/configuration.d.ts +8 -10
- package/lib/core/translations.d.ts +2 -0
- package/lib/desktop.module.d.ts +2 -2
- package/package.json +1 -1
- package/esm2020/lib/compose/action/action.pane.dialog.mjs +0 -59
- package/lib/compose/action/action.pane.dialog.d.ts +0 -26
@@ -44,9 +44,9 @@ export class CubeMatrixPopupComponent extends CubeMatrixBase {
|
|
44
44
|
}
|
45
45
|
ngOnInit() {
|
46
46
|
this.table.loadingChange.pipe(filter(ok => !ok), first()).subscribe(() => this.preloading = false, (e) => {
|
47
|
-
if (e.status ===
|
47
|
+
if (e.status === 406)
|
48
48
|
this._ref.close();
|
49
|
-
this._sb.error(e.status ===
|
49
|
+
this._sb.error(e.status === 406 ? 'Unauthorized' : null);
|
50
50
|
});
|
51
51
|
}
|
52
52
|
}
|
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
65
65
|
type: ViewChild,
|
66
66
|
args: [CubeMatrixComponent, { static: true }]
|
67
67
|
}] } });
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC9wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3BvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU1yQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0MsMkJBQTJCO0FBSzNCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxjQUFjO0lBRzFELGNBQWM7SUFFZCxxQkFBcUI7SUFDckIsWUFDNEIsSUFBYyxFQUNwQixJQUFjLEVBQ2xDLE9BQW9CLEVBQ3BCLEVBQXFCLEVBQ3JCLE9BQXVCLEVBQ2YsR0FBa0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFORixTQUFJLEdBQUosSUFBSSxDQUFVO1FBS2hDLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFWNUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQVl6QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLGlCQUFpQixDQUFDO1FBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdkcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUN2RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQW9CLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRztnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3FIQW5DVSx3QkFBd0Isa0JBT3pCLFFBQVEsYUFDUixVQUFVO3lHQVJULHdCQUF3QiwyRkFDeEIsbUJBQW1CLHFGQ25CaEMsbXJEQThCQTsyRkRaYSx3QkFBd0I7a0JBSnBDLFNBQVM7OzswQkFXTCxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsVUFBVTsrSkFQOEIsS0FBSztzQkFBdEQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdWJlL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVEYXRhIH0gZnJvbSAnLi4vY3ViZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3ViZU1hdHJpeENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUE9QVVBfREFUQSB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9wdXBSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9wb3B1cC9wb3B1cC1yZWZcIjtcclxuaW1wb3J0IHsgQ3ViZU1hdHJpeEJhc2UgfSBmcm9tICcuL21hdHJpeC5iYXNlJztcclxuXHJcbi8qKiBjdWJlIG1hdHJpeCBjb21wb25lbnQqL1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BvcHVwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVNYXRyaXhQb3B1cENvbXBvbmVudCBleHRlbmRzIEN1YmVNYXRyaXhCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKEN1YmVNYXRyaXhDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlOiBDdWJlTWF0cml4Q29tcG9uZW50O1xyXG4gIHByZWxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKiBmaWx0ZXJzICovXHJcblxyXG4gIC8qKiBjdWJlLWluZm8gY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChQb3B1cFJlZikgcHJpdmF0ZSBfcmVmOiBQb3B1cFJlZixcclxuICAgIEBJbmplY3QoUE9QVVBfREFUQSkgZGF0YTogQ3ViZURhdGEsXHJcbiAgICBzZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIGRzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHNlcnZpY2UsIGRzLCBzZXNzaW9uKTtcclxuICAgIGlmICghZGF0YS5vcHRpb25zKVxyXG4gICAgICB0aHJvdyAnbm8gZGF0YSBvcHRpb25zJztcclxuICAgIGNvbnN0IHsgYXhlczogYmFzZSwgb3B0aW9uczogeyBzZXJpZXNUb3RhbExhYmVsLCBpbmRpY2VzLCB4QXhpcywgc2VyaWVzLCBmaWx0ZXJzLCBjdWJlLCBzdW0gfSB9ID0gZGF0YTtcclxuICAgIHRoaXMuY3ViZSA9IGN1YmU7XHJcbiAgICB0aGlzLnNlcmllcyA9IHNlcmllcztcclxuICAgIHRoaXMueEF4aXMgPSB4QXhpcztcclxuICAgIHRoaXMuc3VtID0gc3VtO1xyXG4gICAgdGhpcy5pbmRpY2VzID0gaW5kaWNlcztcclxuICAgIHRoaXMuc2VsZWN0aW9uID0gZmlsdGVycztcclxuICAgIHRoaXMuYXhlcyA9IGJhc2U7XHJcbiAgICB0aGlzLnhBeGlzVG90YWxMYWJlbCA9IHNlcmllc1RvdGFsTGFiZWw7XHJcbiAgICB0aGlzLnNlcmllc1RvdGFsTGFiZWwgPSBzZXJpZXNUb3RhbExhYmVsO1xyXG4gICAgdGhpcy5vcmlnaW5hbEF4ZXMgPSBiYXNlO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGUubG9hZGluZ0NoYW5nZS5waXBlKGZpbHRlcihvayA9PiAhb2spLCBmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5wcmVsb2FkaW5nID0gZmFsc2UsIChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PT0gNDA2KVxyXG4gICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwNiA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwicXVlcnlcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIXByZWxvYWRpbmdcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDwhLS0gdGl0bGUgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiICpuZ0lmPVwicGF0dGVybnMgJiYgcGF0dGVybnMubGVuZ3RoXCI+PG1hdC1pY29uIFtjbGFzcy5maWxsZWRdPVwicGF0dGVyblwiPmZpbHRlcl9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNvcHRpb25zIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICA8IS0tIHBhdHRlcm5zIC0tPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwiYWdncmVnYXRlKHApXCI+e3twLnRpdGxlfX08L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVzZXQoKVwiIFtkaXNhYmxlZF09XCIhcGF0dGVyblwiIFtiaXpkb2NUb29sdGlwXT1cIidDbGVhcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gZmlsdGVycyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVyc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImZtZW51XCI+e3t2YWx1ZXNbZi5uYW1lXXwgdHlwZVZhbHVlIDogZi5kYXRhVHlwZSB8IGFzeW5jfX0gPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjZm1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBrdiBvZiBzb3VyY2VzW2YubmFtZV0gfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKGYubmFtZSwga3Yua2V5LCBrdi52YWx1ZSlcIj5cclxuICAgICAgICAgIHt7a3YudmFsdWV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGJpemRvYy1jdWJlLW1hdHJpeCBbY3ViZV09XCJjdWJlXCIgW3hBeGlzXT1cInhBeGlzXCIgW3Nlcmllc109XCJzZXJpZXNcIiBbaW5kaWNlc109XCJpbmRpY2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdW1dPXN1bSBbaW50ZXJhY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt4QXhpc1RvdGFsTGFiZWxdPVwieEF4aXNUb3RhbExhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzZXJpZXNUb3RhbExhYmVsXT1cInNlcmllc1RvdGFsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiYXhlc1wiIChsb2FkaW5nQ2hhbmdlKT1cImxvYWRpbmc9JGV2ZW50XCI+PC9iaXpkb2MtY3ViZS1tYXRyaXg+XHJcbjwvZGl2PlxyXG4iXX0=
|
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core
|
|
2
2
|
import { formatCurrency, formatPercent, formatNumber, getCurrencySymbol } from '@angular/common';
|
3
3
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
4
4
|
import { Workbook } from '@syncfusion/ej2-excel-export';
|
5
|
-
import { forkJoin
|
5
|
+
import { forkJoin } from 'rxjs';
|
6
6
|
import { tap } from 'rxjs/operators';
|
7
7
|
import { isArray, isFunction } from '../../core/functions';
|
8
8
|
import { modelize } from '../cube.service';
|
@@ -128,15 +128,16 @@ export class CubeMatrixComponent {
|
|
128
128
|
indices: this._indices,
|
129
129
|
filters: this.filters,
|
130
130
|
scope: this.scope
|
131
|
-
}).pipe(modelize()
|
131
|
+
}).pipe(modelize()).subscribe(d => {
|
132
132
|
this._data = JSON.parse(JSON.stringify(d));
|
133
133
|
this._totals(d);
|
134
134
|
this._sum && this._calculatesum(d);
|
135
135
|
this._stringfy(d);
|
136
136
|
this.data = d;
|
137
|
+
clearTimeout(progressTask);
|
138
|
+
this.loadingChange.next(this.loading = false);
|
137
139
|
}, (e) => {
|
138
|
-
this._sb.error(e.status ===
|
139
|
-
}, () => {
|
140
|
+
this._sb.error(e.status === 406 ? 'Unauthorized' : null);
|
140
141
|
clearTimeout(progressTask);
|
141
142
|
this.loadingChange.next(this.loading = false);
|
142
143
|
}));
|
@@ -429,10 +430,10 @@ export class CubeMatrixComponent {
|
|
429
430
|
}
|
430
431
|
}
|
431
432
|
CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }, { token: i4.TranslateService }, { token: i5.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
|
432
|
-
CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { seriesTotalLabel: "seriesTotalLabel", xAxisTotalLabel: "xAxisTotalLabel", _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"], _indices: ["indices", "_indices"], scope: "scope", sum: "sum", filters: "filters", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;
|
433
|
+
CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { seriesTotalLabel: "seriesTotalLabel", xAxisTotalLabel: "xAxisTotalLabel", _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"], _indices: ["indices", "_indices"], scope: "scope", sum: "sum", filters: "filters", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}\n"], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [matrixAnimation] });
|
433
434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixComponent, decorators: [{
|
434
435
|
type: Component,
|
435
|
-
args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;
|
436
|
+
args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}\n"] }]
|
436
437
|
}], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.CubeService }, { type: i3.SessionService }, { type: i4.TranslateService }, { type: i5.DatasourceService }]; }, propDecorators: { tableElement: [{
|
437
438
|
type: ViewChild,
|
438
439
|
args: ['table']
|
@@ -468,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
468
469
|
}], loadingChange: [{
|
469
470
|
type: Output
|
470
471
|
}] } });
|
471
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFlLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFJeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFFL0MsMkJBQTJCO0FBTzNCLE1BQU0sT0FBTyxtQkFBbUI7SUE2RDlCLFlBQ1UsR0FBa0IsRUFDbEIsUUFBcUIsRUFDckIsUUFBd0IsRUFDeEIsVUFBNEIsRUFDNUIsR0FBc0I7UUFKdEIsUUFBRyxHQUFILEdBQUcs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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZm9ybWF0UGVyY2VudCwgZm9ybWF0TnVtYmVyLCBnZXRDdXJyZW5jeVN5bWJvbCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBXb3JrYm9vayB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQnO1xyXG5pbXBvcnQgeyBXb3Jrc2hlZXQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy93b3Jrc2hlZXQnO1xyXG5pbXBvcnQgeyBSb3cgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9yb3cnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9jb2x1bW4nO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgbW9kZWxpemUgfSBmcm9tICcuLi9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQXhpc1R5cGUsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXggfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IG1hdHJpeEFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDAsIFNVTV9QUkVGSVggPSAnX3N1bSc7XHJcblxyXG4vKiogY3ViZSBtYXRyaXggY29tcG9uZW50Ki9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1tYXRyaXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbWF0cml4QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcmVhZG9ubHkgUFJFQ0lTSU9OID0gdGhpcy5fc2VydmljZS5kaWdpdHNJbmZvO1xyXG4gIHJlYWRvbmx5IExBTkdVQUdFID0gdGhpcy5fc2Vzc2lvbi5sYW5ndWFnZTtcclxuICBDVVJSRU5DWTogc3RyaW5nO1xyXG4gIFNZTUJPTDogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIHNlcmllc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB4QXhpc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWVzJykgX3NlcmllcyE6IHN0cmluZztcclxuICBASW5wdXQoJ2luZGljZXMnKVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICBASW5wdXQoKSBzY29wZTogU2NvcGVUeXBlO1xyXG4gIHByaXZhdGUgX3N1bTogU3VtU2V0dGluZ3NbXTtcclxuICBASW5wdXQoKSBzZXQgc3VtKHZhbDogU3VtU2V0dGluZ3MgfCBTdW1TZXR0aW5nc1tdKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9zdW0gPSAoaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF0pLlxyXG4gICAgICBtYXAoc3VtID0+IHtcclxuICAgICAgICBsZXQgdmFsdWU7XHJcbiAgICAgICAgaWYgKHN1bS52YWx1ZSlcclxuICAgICAgICAgIHZhbHVlID0gc3VtLnZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZWxzZSBpZiAoc3VtLmNhbGN1bGF0ZSlcclxuICAgICAgICAgIHN3aXRjaCAoc3VtLmNhbGN1bGF0ZSkge1xyXG4gICAgICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSAnTScgKyAoJzAnICsgKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSBNYXRoLmNlaWwoKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpIC8gMykudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uc3VtLFxyXG4gICAgICAgICAgdmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgQElucHV0KCkgZmlsdGVyczogQXhlc01hcDtcclxuICBwcml2YXRlIF9pbnRlcmFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgZ2V0IGludGVyYWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aXZlO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW50ZXJhY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludGVyYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgQE91dHB1dCgnZXhwbG9yZScpIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhlc01hcD4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICByb3dzOiBIZWFkZXJJbmZvW107XHJcbiAgY29sdW1uczogSGVhZGVySW5mb1tdO1xyXG4gIGluZGljZXM6IEN1YmVJbmRleFtdID0gW107XHJcbiAgZGF0YTogeyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogc3RyaW5nOyB9OyB9O1xyXG4gIHRvdGFsczogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlciB9O1xyXG4gIGN1YmU6IEN1YmU7XHJcbiAgeEF4aXM6IEN1YmVBeGlzO1xyXG4gIHNlcmllczogQ3ViZUF4aXM7XHJcbiAgcHJpdmF0ZSBfZGF0YTogRGF0YU1hcDtcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydfY3ViZSddKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLl9jdWJlKTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jdWJlKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydfaW5kaWNlcyddKVxyXG4gICAgICB0aGlzLmluZGljZXMgPSB0aGlzLmN1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiBpc0FycmF5KHRoaXMuX2luZGljZXMpID8gdGhpcy5faW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAtMSA6IHRoaXMuX2luZGljZXMgPT09IGkubmFtZSk7XHJcbiAgICBpZiAoY2hhbmdlc1snX3hBeGlzJ10gfHwgY2hhbmdlc1snX3NlcmllcyddKSB7XHJcbiAgICAgIHRoaXMueEF4aXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl94QXhpcyk7XHJcbiAgICAgIHRoaXMuc2VyaWVzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5fc2VyaWVzKTtcclxuICAgICAgdGhpcy5kYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IGZvcmtKb2luKHRoaXMuX2RzLmFsbCh0aGlzLnNlcmllcy5kYXRhVHlwZSkucGlwZSh0YXAociA9PlxyXG4gICAgICAgIHRoaXMucm93cyA9IHJcclxuICAgICAgKSksXHJcbiAgICAgICAgdGhpcy5fZHMuYWxsKHRoaXMueEF4aXMuZGF0YVR5cGUpLnBpcGUodGFwKGMgPT5cclxuICAgICAgICAgIHRoaXMuY29sdW1ucyA9IGNcclxuICAgICAgICApKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3N1bSAmJiB0aGlzLl9hZGRzdW1oZWFkZXJzKCkpO1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZHN1bWhlYWRlcnMoKSB7XHJcbiAgICB0aGlzLl9zdW0uZm9yRWFjaCgocywgaSkgPT4ge1xyXG4gICAgICBsZXQgeyB2YWx1ZSwgYXhpcyB9ID0gcztcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgICBrZXk6IFNVTV9QUkVGSVggKyBpLFxyXG4gICAgICAgIHZhbHVlOiBzLnRpdGxlLFxyXG4gICAgICAgIGV4cGxvcmFibGU6ICFpc0Z1bmN0aW9uKHMuY2FsY3VsYXRlKSxcclxuICAgICAgICBhY2N1bXVsYXRlOiBzLmFjY3VtdWxhdGUsXHJcbiAgICAgICAgcHJlY2lzaW9uOiBzLnByZWNpc2lvbiB8fCB0aGlzLlBSRUNJU0lPTixcclxuICAgICAgICBmb3JtYXQ6IHMuZm9ybWF0LFxyXG4gICAgICAgIGluZGV4OiBpXHJcbiAgICAgIH0gYXMgSGVhZGVySW5mbztcclxuICAgICAgbGV0IGogPSAwO1xyXG4gICAgICBpZiAoYXhpcyA9PT0gJ3hBeGlzJykge1xyXG4gICAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tqXS5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoaiArIDEsIDAsIGVsZW1lbnQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGorKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGogPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMucm93cy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJvd3Nbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJvd3Muc3BsaWNlKGogKyAxLCAwLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBqKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqID09PSB0aGlzLnJvd3MubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5yb3dzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PiB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy5feEF4aXMsIHtcclxuICAgICAgc2VyaWVzOiB0aGlzLl9zZXJpZXMsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuX2luZGljZXMsXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVcclxuICAgIH0gYXMgYW55KS5waXBlKFxyXG4gICAgICBtb2RlbGl6ZSgpLCBmaXJzdCgpKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZCkpO1xyXG4gICAgICAgIHRoaXMuX3RvdGFscyhkKTtcclxuICAgICAgICB0aGlzLl9zdW0gJiYgdGhpcy5fY2FsY3VsYXRlc3VtKGQpO1xyXG4gICAgICAgIHRoaXMuX3N0cmluZ2Z5KGQpO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGQgYXMgYW55O1xyXG4gICAgICB9LFxyXG4gICAgICAgIChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHByb2dyZXNzVGFzayk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3N0cmluZ2Z5KGRhdGE6IERhdGFNYXApIHtcclxuICAgIGNvbnN0IGZtdCA9ICh4QXhpcywgc2VyaWVzKSA9PlxyXG4gICAgICBkYXRhW3hBeGlzXVtzZXJpZXNdID0gZm9ybWF0TnVtYmVyKGRhdGFbeEF4aXNdW3Nlcmllc10gfHwgMCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5QUkVDSVNJT04pIGFzIGFueTtcclxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy5pbmRleCAhPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgIHRoaXMuaW5kaWNlcyAmJiB0aGlzLmluZGljZXMuZm9yRWFjaChpID0+XHJcbiAgICAgICAgZm10KGkubmFtZSwgYy5rZXkpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIHIuaW5kZXggPT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgZm10KHIua2V5LCBjLmtleSlcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdG90YWxzKGRhdGE6IERhdGFNYXApIHtcclxuICAgIGxldCBncmFuZCA9IDA7XHJcbiAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5pbmRpY2VzLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIGxldCByb3cgPSBkYXRhW2kubmFtZV07XHJcbiAgICAgIGlmICghcm93KSByb3cgPSBkYXRhW2kubmFtZV0gPSB7fTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgeCBpbiByb3cpXHJcbiAgICAgICAgICBzdW0gKz0gcm93W3hdO1xyXG4gICAgICAgIHJvd1snX3RvdGFsJ10gPSB0aGlzLl9mb3JtYXQoc3VtKTtcclxuICAgICAgICBncmFuZCArPSBzdW07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGlmIChyLmFjY3VtdWxhdGUgPT09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGxldCByb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgaWYgKCFyb3cpIHJvdyA9IGRhdGFbci5rZXldID0ge1xyXG4gICAgICAgICdfdG90YWwnOiAnMCcgYXMgYW55XHJcbiAgICAgIH07XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdW0gPSAwO1xyXG4gICAgICAgIGZvciAobGV0IHggaW4gcm93KVxyXG4gICAgICAgICAgc3VtICs9IHJvd1t4XTtcclxuICAgICAgICByb3dbJ190b3RhbCddID0gdGhpcy5fZm9ybWF0KHN1bSwgcik7XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtICogLTE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgdG90YWxzID0gZGF0YVsnX3RvdGFsJ10gPSB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGlmIChjLmFjY3VtdWxhdGUgPT09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGxldCBzdW0gPSAwO1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGRhdGFba2V5XVtjLmtleV07XHJcbiAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgc3VtICs9IHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5pbmRleE9mKGtleSkgPiAtMSA/IHZhbCA6IC12YWw7XHJcbiAgICAgIH1cclxuICAgICAgdG90YWxzW2Mua2V5XSA9IHRoaXMuX2Zvcm1hdChzdW0sIGMpO1xyXG4gICAgfSk7XHJcbiAgICB0b3RhbHNbJ19ncmFuZCddID0gdGhpcy5fZm9ybWF0KGdyYW5kKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGE6IERhdGFNYXApIHtcclxuICAgIHRoaXMuX3N1bS5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgYXhpcywgdmFsdWUsIGNhbGN1bGF0ZSwgYWNjdW11bGF0ZSB9ID0gcztcclxuICAgICAgY29uc3QgbmFtZSA9IFNVTV9QUkVGSVggKyBpO1xyXG4gICAgICBpZiAoYXhpcyA9PT0gJ3hBeGlzJykge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBpZiAoci5hY2N1bXVsYXRlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gZGF0YVtyLmtleV07XHJcbiAgICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgbGV0IHN1bSA9IDAsIGogPSAwO1xyXG4gICAgICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbal0sIGtleSA9IGNvbHVtbi5rZXk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIENhbGN1bGF0ZUZuKShyLmtleSwgdGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByb3dbbmFtZV0gPSB0aGlzLl9mb3JtYXQoc3VtLCBzKTtcclxuICAgICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWNjdW11bGF0ZSAhPT0gZmFsc2UpXHJcbiAgICAgICAgICBkYXRhWydfdG90YWwnXVtuYW1lXSA9IHRoaXMuX2Zvcm1hdCh0b3RhbCk7XHJcbiAgICAgICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gZGF0YVtpLm5hbWVdO1xyXG4gICAgICAgICAgaWYgKCFyb3cpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGxldCBzdW0gPSAwLCBqID0gMDtcclxuICAgICAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2pdLmtleTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIENhbGN1bGF0ZUZuKShpLm5hbWUsIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1trZXldO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByb3dbbmFtZV0gPSB0aGlzLl9mb3JtYXQoc3VtKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBkYXRhW25hbWVdID0ge307XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgIGlmIChjLmV4cGxvcmFibGUgPT09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMCwgaiA9IDA7XHJcbiAgICAgICAgICB3aGlsZSAoaiA8IHRoaXMucm93cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IHJvdyA9IHRoaXMucm93c1tqXSwga2V5ID0gcm93LmtleTtcclxuICAgICAgICAgICAgaWYgKHJvdy5pbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgQ2FsY3VsYXRlRm4pKGMua2V5LCB0aGlzLl9kYXRhKTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZHJvdyA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChkcm93KSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBkcm93W2Mua2V5XTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhW25hbWVdW2Mua2V5XSA9IHRoaXMuX2Zvcm1hdChzdW0sIHMpO1xyXG4gICAgICAgICAgaWYgKGMuaW5kZXggPT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgdG90YWwgKz0gc3VtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChhY2N1bXVsYXRlICE9PSBmYWxzZSlcclxuICAgICAgICAgIGRhdGFbbmFtZV1bJ190b3RhbCddID0gdGhpcy5fZm9ybWF0KHRvdGFsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zvcm1hdCh2YWwsIG9wdGlvbnM/OiB7IGZvcm1hdD86IHN0cmluZywgcHJlY2lzaW9uPzogc3RyaW5nIH0pOiBhbnkge1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0ID09PSAncGVyY2VudCcpXHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFBlcmNlbnQodmFsLCB0aGlzLkxBTkdVQUdFLCBvcHRpb25zLnByZWNpc2lvbik7XHJcbiAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZm9ybWF0ID09PSAnY3VycmVuY3knKVxyXG4gICAgICAgIHJldHVybiBmb3JtYXRDdXJyZW5jeSh2YWwsIHRoaXMuTEFOR1VBR0UsIHRoaXMuU1lNQk9MLCB0aGlzLkNVUlJFTkNZLCBvcHRpb25zLnByZWNpc2lvbik7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5DVVJSRU5DWSlcclxuICAgICAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KHZhbCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5TWU1CT0wsIHRoaXMuQ1VSUkVOQ1ksIHRoaXMuUFJFQ0lTSU9OKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcih2YWwsIHRoaXMuTEFOR1VBR0UsIHRoaXMuUFJFQ0lTSU9OKTtcclxuICB9XHJcbiAgZXhwbG9yZShjb2x1bW46IEhlYWRlckluZm8sIHJvdzogSGVhZGVySW5mbykge1xyXG4gICAgaWYgKCF0aGlzLmludGVyYWN0aXZlKSByZXR1cm47XHJcbiAgICBsZXQgeDogQXhpc1R5cGUsIHNlcmllczogQXhpc1R5cGU7XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmZpbHRlcnMgfSBhcyBBeGVzTWFwO1xyXG4gICAgaWYgKGNvbHVtbi5pbmRleCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB4ID0gY29sdW1uLmtleTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgeyB2YWx1ZSwgY2FsY3VsYXRlIH0gPSB0aGlzLl9zdW1bY29sdW1uLmluZGV4XTtcclxuICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkgcmV0dXJuO1xyXG4gICAgICB4ID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNvbHVtbiA9IHRoaXMuY29sdW1uc1tpXTtcclxuICAgICAgICBpZiAoY29sdW1uLmluZGV4ICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBsZXQga2V5ID0gY29sdW1uLmtleTtcclxuICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocm93LmluZGV4ID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHNlcmllcyA9IHJvdy5rZXk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHsgdmFsdWUsIGNhbGN1bGF0ZSB9ID0gdGhpcy5fc3VtW3Jvdy5pbmRleF07XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHJldHVybjtcclxuICAgICAgc2VyaWVzID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHJvdyA9IHRoaXMucm93c1tpXTtcclxuICAgICAgICBpZiAocm93LmluZGV4ICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBsZXQga2V5ID0gcm93LmtleTtcclxuICAgICAgICBzZXJpZXMucHVzaChrZXkpO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF4ZXNbdGhpcy54QXhpcy5uYW1lXSA9IHg7XHJcbiAgICBheGVzW3RoaXMuc2VyaWVzLm5hbWVdID0gc2VyaWVzO1xyXG4gICAgdGhpcy5vbkV4cGxvcmUuZW1pdChheGVzKTtcclxuICB9XHJcbiAgZXhwb3J0KCkge1xyXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gdGhpcy5fc2VydmljZS5udW1iZXJGb3JtYXQsXHJcbiAgICAgIGNlbGxzID0gW10gYXMgQ2VsbFtdLFxyXG4gICAgICByb3dzID0gW3sgaW5kZXg6IDEsIGNlbGxzIH1dO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGMsIGopID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICBpbmRleDogaiArIDIsXHJcbiAgICAgIHZhbHVlOiBjLnZhbHVlLCBzdHlsZTogeyBib2xkOiB0cnVlIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICBsZXQgaSA9IDE7XHJcbiAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5pbmRpY2VzLmZvckVhY2goeCA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhW3gubmFtZV07XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gW3sgaW5kZXg6IDEsIHZhbHVlOiB4LnRpdGxlLCBzdHlsZTogeyBib2xkOiB0cnVlIH0gfV0gYXMgQ2VsbFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoYywgaikgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgaW5kZXg6IGogKyAyLFxyXG4gICAgICAgIHZhbHVlOiBkYXRhICYmIGRhdGFbYy5rZXldICE9PSB1bmRlZmluZWQgPyBkYXRhW2Mua2V5XSA6IDBcclxuICAgICAgfSkpO1xyXG4gICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgIGluZGV4OiBpICsgMSxcclxuICAgICAgICBjZWxsc1xyXG4gICAgICB9KTtcclxuICAgICAgaSsrO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2RhdGFbci5rZXldLFxyXG4gICAgICAgIGNlbGxzID0gW3sgaW5kZXg6IDEsIHZhbHVlOiByLnZhbHVlLCBzdHlsZTogeyBib2xkOiB0cnVlIH0gfV0gYXMgQ2VsbFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoYywgaikgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgaW5kZXg6IGogKyAyLFxyXG4gICAgICAgIHZhbHVlOiBkYXRhICYmIGRhdGFbYy5rZXldICE9PSB1bmRlZmluZWQgPyBkYXRhW2Mua2V5XSA6IDAsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgIGhBbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgICB9XHJcbiAgICAgIH0gYXMgQ2VsbCkpO1xyXG4gICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgIGluZGV4OiBpICsgMSxcclxuICAgICAgICBjZWxsc1xyXG4gICAgICB9IGFzIFJvdyk7XHJcbiAgICAgIGkrKztcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAge1xyXG4gICAgICAgIHdvcmtzaGVldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW5hYmxlUnRsOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpLFxyXG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMubWFwKChfLCBpKSA9PiAoeyBpbmRleDogaSArIDEsIHdpZHRoOiAxNTAgfSBhcyBDb2x1bW4pKSxcclxuICAgICAgICAgICAgcm93cyxcclxuICAgICAgICAgIH0gYXMgV29ya3NoZWV0LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgICd4bHN4J1xyXG4gICAgKTtcclxuICAgIHRoaXMuX3NlcnZpY2UubmFtZU9mKHRoaXMuZmlsdGVycywgdGhpcy5jdWJlLm5hbWUpLnN1YnNjcmliZShuID0+XHJcbiAgICAgIGJvb2suc2F2ZShgJHtuIHx8IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ01hdHJpeCcpfS54bHN4YCkpO1xyXG4gIH1cclxuICBtb3ZlKHgsIHkpIHtcclxuICAgIGxldCByb3dJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBiID0gMDsgYiA8IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5sZW5ndGg7IGIrKykge1xyXG4gICAgICBsZXQgdEJvZHkgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMuaXRlbShiKTtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCB0Qm9keS5yb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgbGV0IHJvdyA9IHRCb2R5LnJvd3MuaXRlbShyKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSB5KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteScpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3dJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0Rm9vdCA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEZvb3QsIHJvdyA9IHRGb290LnJvd3NbMF07XHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG50eXBlIERhdGFNYXAgPSB7IFtzZXJpZXM6IHN0cmluZ106IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcblxyXG5leHBvcnQgdHlwZSBTdW1TZXR0aW5ncyA9IHtcclxuICB2YWx1ZT86IHN0cmluZyB8IG51bWJlcjtcclxuICBheGlzOiAnc2VyaWVzJyB8ICd4QXhpcyc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBmb3JtYXQ/OiAncGVyY2VudCcgfCAnY3VycmVuY3knIHwgJ251bWJlcic7XHJcbiAgcHJlY2lzaW9uPzogc3RyaW5nO1xyXG4gIGFjY3VtdWxhdGU/OiBib29sZWFuO1xyXG4gIGNhbGN1bGF0ZT86ICdxdWFydGVyJyB8ICd5ZWFyJyB8ICdtb250aCcgfCBDYWxjdWxhdGVGbjtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENhbGN1bGF0ZUZuIHtcclxuICAodmFsdWU6IHN0cmluZywgZGF0YTogeyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogbnVtYmVyOyB9OyB9KTogbnVtYmVyO1xyXG59XHJcblxyXG50eXBlIEhlYWRlckluZm8gPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IGFueTtcclxuICBmb3JtYXQ/OiAncGVyY2VudCcgfCAnY3VycmVuY3knIHwgJ251bWJlcic7XHJcbiAgcHJlY2lzaW9uPzogc3RyaW5nO1xyXG4gIGFjY3VtdWxhdGU/OiBib29sZWFuO1xyXG4gIGV4cGxvcmFibGU/OiBib29sZWFuO1xyXG4gIGluZGV4PzogbnVtYmVyO1xyXG59O1xyXG5pbnRlcmZhY2UgQ2VsbCB7IH1cclxuIiwiPHRhYmxlICN0YWJsZSBjbGFzcz1cIm1hdC10YWJsZSBjdWJlLXRhYmxlXCIgKG1vdXNlbGVhdmUpPVwibW92ZSgtMSwgLTEpXCIgKm5nSWY9XCJkYXRhXCI+XHJcbiAgPHRoZWFkPlxyXG4gICAgPCEtLSBoZWFkZXJzIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+XHJcbiAgICAgICAge3sgY29sdW1uLnZhbHVlIH19XHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPnt7eEF4aXNUb3RhbExhYmVsfX08L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3RoZWFkPlxyXG4gIDx0Ym9keT5cclxuICAgIDwhLS0gaW5kaWNlcyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3cgY3ViZS1pbmRleFwiICpuZ0Zvcj1cImxldCBpbmRleCBvZiBpbmRpY2VzOyBsZXQgeSA9IGluZGV4XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoMCwgeSlcIj57e2luZGV4LnRpdGxlfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5KVwiPlxyXG4gICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bY29sdW1uLmtleV0gfX1cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiPlxyXG4gICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bJ190b3RhbCddIH19XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSByb3dzIC0tPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IHkgPSBpbmRleFwiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKC0yLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+e3sgcm93LnZhbHVlIH19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSArIGluZGljZXMubGVuZ3RoKVwiPlxyXG4gICAgICAgIDxzcGFuIFtjbGFzcy5jbGlja2FibGVdPVwiaW50ZXJhY3RpdmUgJiYgY29sdW1uLmV4cGxvcmFibGUgIT09IGZhbHNlICYmIHJvdy5leHBsb3JhYmxlICE9PSBmYWxzZVwiIChjbGljayk9XCJleHBsb3JlKGNvbHVtbiwgcm93KVwiPlxyXG4gICAgICAgICAge3sgZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgtMSwgeSArIGluZGljZXMubGVuZ3RoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhW3Jvdy5rZXldWydfdG90YWwnXSAhPT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3Rib2R5PlxyXG4gIDx0Zm9vdD5cclxuICAgIDwhLS0gZm9vdGVyIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj57e3Nlcmllc1RvdGFsTGFiZWx9fTwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiXHJcbiAgICAgICAgICBbY2xhc3MubmVnYXRpdmUtZmlndXJlXT1cInRvdGFsc1tjb2x1bW4ua2V5XS5zdGFydHNXaXRoKCctJylcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWxzW2NvbHVtbi5rZXldICE9PSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgIHt7IHRvdGFsc1tjb2x1bW4ua2V5XSB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIj57eyB0b3RhbHNbJ19ncmFuZCddIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuIl19
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJeEQsT0FBTyxFQUFFLFFBQVEsRUFBUyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQWUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQUl4RCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUUvQywyQkFBMkI7QUFPM0IsTUFBTSxPQUFPLG1CQUFtQjtJQTZEOUIsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QixFQUN4QixVQUE0QixFQUM1QixHQUFzQjtRQUp0QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xC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TUFBTTt1QkFBQyxTQUFTO2dCQUNFLGFBQWE7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3ksIGZvcm1hdFBlcmNlbnQsIGZvcm1hdE51bWJlciwgZ2V0Q3VycmVuY3lTeW1ib2wgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGZpcnN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIG1vZGVsaXplIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEF4aXNUeXBlLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXRyaXhBbmltYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcblxyXG5jb25zdCBMT0FESU5HX0RFTEFZID0gMjAwLCBTVU1fUFJFRklYID0gJ19zdW0nO1xyXG5cclxuLyoqIGN1YmUgbWF0cml4IGNvbXBvbmVudCovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtbWF0cml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW21hdHJpeEFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVNYXRyaXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHJlYWRvbmx5IFBSRUNJU0lPTiA9IHRoaXMuX3NlcnZpY2UuZGlnaXRzSW5mbztcclxuICByZWFkb25seSBMQU5HVUFHRSA9IHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2U7XHJcbiAgQ1VSUkVOQ1k6IHN0cmluZztcclxuICBTWU1CT0w6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVGFibGVFbGVtZW50PjtcclxuICBASW5wdXQoKSBzZXJpZXNUb3RhbExhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgeEF4aXNUb3RhbExhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCdjdWJlJykgX2N1YmU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCd4QXhpcycpIF94QXhpcyE6IHN0cmluZztcclxuICBASW5wdXQoJ3NlcmllcycpIF9zZXJpZXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdpbmRpY2VzJylcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBwcml2YXRlIF9zdW06IFN1bVNldHRpbmdzW107XHJcbiAgQElucHV0KCkgc2V0IHN1bSh2YWw6IFN1bVNldHRpbmdzIHwgU3VtU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5fc3VtID0gKGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdKS5cclxuICAgICAgbWFwKHN1bSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlO1xyXG4gICAgICAgIGlmIChzdW0udmFsdWUpXHJcbiAgICAgICAgICB2YWx1ZSA9IHN1bS52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIGVsc2UgaWYgKHN1bS5jYWxjdWxhdGUpXHJcbiAgICAgICAgICBzd2l0Y2ggKHN1bS5jYWxjdWxhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ00nICsgKCcwJyArIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5jZWlsKChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSAvIDMpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnN1bSxcclxuICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEF4ZXNNYXA7XHJcbiAgcHJpdmF0ZSBfaW50ZXJhY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGl2ZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGludGVyYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbnRlcmFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKSByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4ZXNNYXA+KCk7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcm93czogSGVhZGVySW5mb1tdO1xyXG4gIGNvbHVtbnM6IEhlYWRlckluZm9bXTtcclxuICBpbmRpY2VzOiBDdWJlSW5kZXhbXSA9IFtdO1xyXG4gIGRhdGE6IHsgW3Nlcmllczogc3RyaW5nXTogeyBbeEF4aXM6IHN0cmluZ106IHN0cmluZzsgfTsgfTtcclxuICB0b3RhbHM6IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXIgfTtcclxuICBjdWJlOiBDdWJlO1xyXG4gIHhBeGlzOiBDdWJlQXhpcztcclxuICBzZXJpZXM6IEN1YmVBeGlzO1xyXG4gIHByaXZhdGUgX2RhdGE6IERhdGFNYXA7XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snX2N1YmUnXSkge1xyXG4gICAgICB0aGlzLmN1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5fY3ViZSk7XHJcbiAgICAgIHRoaXMuQ1VSUkVOQ1kgPSB0aGlzLmN1YmUuY3VycmVuY3lDb2RlIC8qfHwgdGhpcy5fc2VydmljZS5jdXJyZW5jeUNvZGUqLztcclxuICAgICAgdGhpcy5TWU1CT0wgPSBnZXRDdXJyZW5jeVN5bWJvbCh0aGlzLkNVUlJFTkNZLCAnbmFycm93Jyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY3ViZSkge1xyXG4gICAgICB0aGlzLmN1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICAgIHRoaXMuQ1VSUkVOQ1kgPSB0aGlzLmN1YmUuY3VycmVuY3lDb2RlIC8qfHwgdGhpcy5fc2VydmljZS5jdXJyZW5jeUNvZGUqLztcclxuICAgICAgdGhpcy5TWU1CT0wgPSBnZXRDdXJyZW5jeVN5bWJvbCh0aGlzLkNVUlJFTkNZLCAnbmFycm93Jyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snX2luZGljZXMnXSlcclxuICAgICAgdGhpcy5pbmRpY2VzID0gdGhpcy5jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gaXNBcnJheSh0aGlzLl9pbmRpY2VzKSA/IHRoaXMuX2luZGljZXMuaW5kZXhPZihpLm5hbWUpID4gLTEgOiB0aGlzLl9pbmRpY2VzID09PSBpLm5hbWUpO1xyXG4gICAgaWYgKGNoYW5nZXNbJ194QXhpcyddIHx8IGNoYW5nZXNbJ19zZXJpZXMnXSkge1xyXG4gICAgICB0aGlzLnhBeGlzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5feEF4aXMpO1xyXG4gICAgICB0aGlzLnNlcmllcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3Nlcmllcyk7XHJcbiAgICAgIHRoaXMuZGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmUgPSBmb3JrSm9pbih0aGlzLl9kcy5hbGwodGhpcy5zZXJpZXMuZGF0YVR5cGUpLnBpcGUodGFwKHIgPT5cclxuICAgICAgICB0aGlzLnJvd3MgPSByXHJcbiAgICAgICkpLFxyXG4gICAgICAgIHRoaXMuX2RzLmFsbCh0aGlzLnhBeGlzLmRhdGFUeXBlKS5waXBlKHRhcChjID0+XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBjXHJcbiAgICAgICAgKSkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zdW0gJiYgdGhpcy5fYWRkc3VtaGVhZGVycygpKTtcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10pXHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9hZGRzdW1oZWFkZXJzKCkge1xyXG4gICAgdGhpcy5fc3VtLmZvckVhY2goKHMsIGkpID0+IHtcclxuICAgICAgbGV0IHsgdmFsdWUsIGF4aXMgfSA9IHM7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgICAga2V5OiBTVU1fUFJFRklYICsgaSxcclxuICAgICAgICB2YWx1ZTogcy50aXRsZSxcclxuICAgICAgICBleHBsb3JhYmxlOiAhaXNGdW5jdGlvbihzLmNhbGN1bGF0ZSksXHJcbiAgICAgICAgYWNjdW11bGF0ZTogcy5hY2N1bXVsYXRlLFxyXG4gICAgICAgIHByZWNpc2lvbjogcy5wcmVjaXNpb24gfHwgdGhpcy5QUkVDSVNJT04sXHJcbiAgICAgICAgZm9ybWF0OiBzLmZvcm1hdCxcclxuICAgICAgICBpbmRleDogaVxyXG4gICAgICB9IGFzIEhlYWRlckluZm87XHJcbiAgICAgIGxldCBqID0gMDtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbnNbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMuc3BsaWNlKGogKyAxLCAwLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBqKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqID09PSB0aGlzLmNvbHVtbnMubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2hpbGUgKGogPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3dzW2pdLmtleSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dzLnNwbGljZShqICsgMSwgMCwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaisrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PT0gdGhpcy5yb3dzLmxlbmd0aClcclxuICAgICAgICAgIHRoaXMucm93cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBwcm9ncmVzc1Rhc2sgPSBzZXRUaW1lb3V0KCgpID0+XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IHRydWUpXHJcbiAgICAgICwgTE9BRElOR19ERUxBWSk7XHJcbiAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4gdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLm5hbWUsIHRoaXMuX3hBeGlzLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5fc2VyaWVzLFxyXG4gICAgICBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICB9IGFzIGFueSkucGlwZShcclxuICAgICAgbW9kZWxpemUoKSkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGQpKTtcclxuICAgICAgICB0aGlzLl90b3RhbHMoZCk7XHJcbiAgICAgICAgdGhpcy5fc3VtICYmIHRoaXMuX2NhbGN1bGF0ZXN1bShkKTtcclxuICAgICAgICB0aGlzLl9zdHJpbmdmeShkKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkIGFzIGFueTtcclxuICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgICAgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDA2ID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICAgIGNsZWFyVGltZW91dChwcm9ncmVzc1Rhc2spO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdHJpbmdmeShkYXRhOiBEYXRhTWFwKSB7XHJcbiAgICBjb25zdCBmbXQgPSAoeEF4aXMsIHNlcmllcykgPT5cclxuICAgICAgZGF0YVt4QXhpc11bc2VyaWVzXSA9IGZvcm1hdE51bWJlcihkYXRhW3hBeGlzXVtzZXJpZXNdIHx8IDAsIHRoaXMuTEFOR1VBR0UsIHRoaXMuUFJFQ0lTSU9OKSBhcyBhbnk7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgaWYgKGMuaW5kZXggIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5pbmRpY2VzLmZvckVhY2goaSA9PlxyXG4gICAgICAgIGZtdChpLm5hbWUsIGMua2V5KVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICByLmluZGV4ID09PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIGZtdChyLmtleSwgYy5rZXkpXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RvdGFscyhkYXRhOiBEYXRhTWFwKSB7XHJcbiAgICBsZXQgZ3JhbmQgPSAwO1xyXG4gICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBsZXQgcm93ID0gZGF0YVtpLm5hbWVdO1xyXG4gICAgICBpZiAoIXJvdykgcm93ID0gZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdW0gPSAwO1xyXG4gICAgICAgIGZvciAobGV0IHggaW4gcm93KVxyXG4gICAgICAgICAgc3VtICs9IHJvd1t4XTtcclxuICAgICAgICByb3dbJ190b3RhbCddID0gdGhpcy5fZm9ybWF0KHN1bSk7XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoci5hY2N1bXVsYXRlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgcm93ID0gZGF0YVtyLmtleV07XHJcbiAgICAgIGlmICghcm93KSByb3cgPSBkYXRhW3Iua2V5XSA9IHtcclxuICAgICAgICAnX3RvdGFsJzogJzAnIGFzIGFueVxyXG4gICAgICB9O1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgICBmb3IgKGxldCB4IGluIHJvdylcclxuICAgICAgICAgIHN1bSArPSByb3dbeF07XHJcbiAgICAgICAgcm93WydfdG90YWwnXSA9IHRoaXMuX2Zvcm1hdChzdW0sIHIpO1xyXG4gICAgICAgIGdyYW5kICs9IHN1bSAqIC0xO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHRvdGFscyA9IGRhdGFbJ190b3RhbCddID0gdGhpcy50b3RhbHMgPSB7fTtcclxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy5hY2N1bXVsYXRlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW2tleV1bYy5rZXldO1xyXG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1bSArPSB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2luZGljZXMuaW5kZXhPZihrZXkpID4gLTEgPyB2YWwgOiAtdmFsO1xyXG4gICAgICB9XHJcbiAgICAgIHRvdGFsc1tjLmtleV0gPSB0aGlzLl9mb3JtYXQoc3VtLCBjKTtcclxuICAgIH0pO1xyXG4gICAgdG90YWxzWydfZ3JhbmQnXSA9IHRoaXMuX2Zvcm1hdChncmFuZCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhbGN1bGF0ZXN1bShkYXRhOiBEYXRhTWFwKSB7XHJcbiAgICB0aGlzLl9zdW0uZm9yRWFjaCgocywgaSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGF4aXMsIHZhbHVlLCBjYWxjdWxhdGUsIGFjY3VtdWxhdGUgfSA9IHM7XHJcbiAgICAgIGNvbnN0IG5hbWUgPSBTVU1fUFJFRklYICsgaTtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgICAgaWYgKHIuYWNjdW11bGF0ZSA9PT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IGRhdGFbci5rZXldO1xyXG4gICAgICAgICAgaWYgKCFyb3cpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGxldCBzdW0gPSAwLCBqID0gMDtcclxuICAgICAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1uID0gdGhpcy5jb2x1bW5zW2pdLCBrZXkgPSBjb2x1bW4ua2V5O1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uLmluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoci5rZXksIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSByb3dba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm93W25hbWVdID0gdGhpcy5fZm9ybWF0KHN1bSwgcyk7XHJcbiAgICAgICAgICB0b3RhbCArPSBzdW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGFjY3VtdWxhdGUgIT09IGZhbHNlKVxyXG4gICAgICAgICAgZGF0YVsnX3RvdGFsJ11bbmFtZV0gPSB0aGlzLl9mb3JtYXQodG90YWwpO1xyXG4gICAgICAgIHRoaXMuaW5kaWNlcyAmJiB0aGlzLmluZGljZXMuZm9yRWFjaChpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgICAgIGlmICghcm93KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMCwgaiA9IDA7XHJcbiAgICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tqXS5rZXk7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoaS5uYW1lLCB0aGlzLl9kYXRhKTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSByb3dba2V5XTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm93W25hbWVdID0gdGhpcy5fZm9ybWF0KHN1bSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZGF0YVtuYW1lXSA9IHt9O1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICBpZiAoYy5leHBsb3JhYmxlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgbGV0IHN1bSA9IDAsIGogPSAwO1xyXG4gICAgICAgICAgd2hpbGUgKGogPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSB0aGlzLnJvd3Nbal0sIGtleSA9IHJvdy5rZXk7XHJcbiAgICAgICAgICAgIGlmIChyb3cuaW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIENhbGN1bGF0ZUZuKShjLmtleSwgdGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRyb3cgPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZiAoZHJvdykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdmFsID0gZHJvd1tjLmtleV07XHJcbiAgICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGF0YVtuYW1lXVtjLmtleV0gPSB0aGlzLl9mb3JtYXQoc3VtLCBzKTtcclxuICAgICAgICAgIGlmIChjLmluZGV4ID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWNjdW11bGF0ZSAhPT0gZmFsc2UpXHJcbiAgICAgICAgICBkYXRhW25hbWVdWydfdG90YWwnXSA9IHRoaXMuX2Zvcm1hdCh0b3RhbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXQodmFsLCBvcHRpb25zPzogeyBmb3JtYXQ/OiBzdHJpbmcsIHByZWNpc2lvbj86IHN0cmluZyB9KTogYW55IHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ3BlcmNlbnQnKVxyXG4gICAgICAgIHJldHVybiBmb3JtYXRQZXJjZW50KHZhbCwgdGhpcy5MQU5HVUFHRSwgb3B0aW9ucy5wcmVjaXNpb24pO1xyXG4gICAgICBlbHNlIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ2N1cnJlbmN5JylcclxuICAgICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlNZTUJPTCwgdGhpcy5DVVJSRU5DWSwgb3B0aW9ucy5wcmVjaXNpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuQ1VSUkVOQ1kpXHJcbiAgICAgIHJldHVybiBmb3JtYXRDdXJyZW5jeSh2YWwsIHRoaXMuTEFOR1VBR0UsIHRoaXMuU1lNQk9MLCB0aGlzLkNVUlJFTkNZLCB0aGlzLlBSRUNJU0lPTik7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIodmFsLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlBSRUNJU0lPTik7XHJcbiAgfVxyXG4gIGV4cGxvcmUoY29sdW1uOiBIZWFkZXJJbmZvLCByb3c6IEhlYWRlckluZm8pIHtcclxuICAgIGlmICghdGhpcy5pbnRlcmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgbGV0IHg6IEF4aXNUeXBlLCBzZXJpZXM6IEF4aXNUeXBlO1xyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5maWx0ZXJzIH0gYXMgQXhlc01hcDtcclxuICAgIGlmIChjb2x1bW4uaW5kZXggPT09IHVuZGVmaW5lZClcclxuICAgICAgeCA9IGNvbHVtbi5rZXk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHsgdmFsdWUsIGNhbGN1bGF0ZSB9ID0gdGhpcy5fc3VtW2NvbHVtbi5pbmRleF07XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHJldHVybjtcclxuICAgICAgeCA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbaV07XHJcbiAgICAgICAgaWYgKGNvbHVtbi5pbmRleCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgbGV0IGtleSA9IGNvbHVtbi5rZXk7XHJcbiAgICAgICAgeC5wdXNoKGtleSk7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJvdy5pbmRleCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICBzZXJpZXMgPSByb3cua2V5O1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IHRoaXMuX3N1bVtyb3cuaW5kZXhdO1xyXG4gICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSByZXR1cm47XHJcbiAgICAgIHNlcmllcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCByb3cgPSB0aGlzLnJvd3NbaV07XHJcbiAgICAgICAgaWYgKHJvdy5pbmRleCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgbGV0IGtleSA9IHJvdy5rZXk7XHJcbiAgICAgICAgc2VyaWVzLnB1c2goa2V5KTtcclxuICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBheGVzW3RoaXMueEF4aXMubmFtZV0gPSB4O1xyXG4gICAgYXhlc1t0aGlzLnNlcmllcy5uYW1lXSA9IHNlcmllcztcclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoYXhlcyk7XHJcbiAgfVxyXG4gIGV4cG9ydCgpIHtcclxuICAgIGNvbnN0IG51bWJlckZvcm1hdCA9IHRoaXMuX3NlcnZpY2UubnVtYmVyRm9ybWF0LFxyXG4gICAgICBjZWxscyA9IFtdIGFzIENlbGxbXSxcclxuICAgICAgcm93cyA9IFt7IGluZGV4OiAxLCBjZWxscyB9XTtcclxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjLCBqKSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGogKyAyLFxyXG4gICAgICB2YWx1ZTogYy52YWx1ZSwgc3R5bGU6IHsgYm9sZDogdHJ1ZSB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgbGV0IGkgPSAxO1xyXG4gICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YVt4Lm5hbWVdO1xyXG4gICAgICBjb25zdCBjZWxscyA9IFt7IGluZGV4OiAxLCB2YWx1ZTogeC50aXRsZSwgc3R5bGU6IHsgYm9sZDogdHJ1ZSB9IH1dIGFzIENlbGxbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGMsIGopID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgIGluZGV4OiBqICsgMixcclxuICAgICAgICB2YWx1ZTogZGF0YSAmJiBkYXRhW2Mua2V5XSAhPT0gdW5kZWZpbmVkID8gZGF0YVtjLmtleV0gOiAwXHJcbiAgICAgIH0pKTtcclxuICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICBpbmRleDogaSArIDEsXHJcbiAgICAgICAgY2VsbHNcclxuICAgICAgfSk7XHJcbiAgICAgIGkrKztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhW3Iua2V5XSxcclxuICAgICAgICBjZWxscyA9IFt7IGluZGV4OiAxLCB2YWx1ZTogci52YWx1ZSwgc3R5bGU6IHsgYm9sZDogdHJ1ZSB9IH1dIGFzIENlbGxbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGMsIGopID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGluZGV4OiBqICsgMixcclxuICAgICAgICB2YWx1ZTogZGF0YSAmJiBkYXRhW2Mua2V5XSAhPT0gdW5kZWZpbmVkID8gZGF0YVtjLmtleV0gOiAwLFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICBoQWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGFzIENlbGwpKTtcclxuICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICBpbmRleDogaSArIDEsXHJcbiAgICAgICAgY2VsbHNcclxuICAgICAgfSBhcyBSb3cpO1xyXG4gICAgICBpKys7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJvb2sgPSBuZXcgV29ya2Jvb2soXHJcbiAgICAgIHtcclxuICAgICAgICB3b3Jrc2hlZXRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTaGVldE4nLCAxKSxcclxuICAgICAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgIHJvd3MsXHJcbiAgICAgICAgICB9IGFzIFdvcmtzaGVldCxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICAneGxzeCdcclxuICAgICk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLm5hbWVPZih0aGlzLmZpbHRlcnMsIHRoaXMuY3ViZS5uYW1lKS5zdWJzY3JpYmUobiA9PlxyXG4gICAgICBib29rLnNhdmUoYCR7biB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYXRyaXgnKX0ueGxzeGApKTtcclxuICB9XHJcbiAgbW92ZSh4LCB5KSB7XHJcbiAgICBsZXQgcm93SW5kZXggPSAwO1xyXG4gICAgZm9yIChsZXQgYiA9IDA7IGIgPCB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMubGVuZ3RoOyBiKyspIHtcclxuICAgICAgbGV0IHRCb2R5ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLml0ZW0oYik7XHJcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgdEJvZHkucm93cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgIGxldCByb3cgPSB0Qm9keS5yb3dzLml0ZW0ocik7XHJcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgIGxldCBjZWxsID0gcm93LmNlbGxzLml0ZW0oYyk7XHJcbiAgICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0geSlcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXknKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm93SW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICBsZXQgdEZvb3QgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRGb290LCByb3cgPSB0Rm9vdC5yb3dzWzBdO1xyXG4gICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIGxldCBjZWxsID0gcm93LmNlbGxzLml0ZW0oYyk7XHJcbiAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxudHlwZSBEYXRhTWFwID0geyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogbnVtYmVyOyB9OyB9O1xyXG5cclxuZXhwb3J0IHR5cGUgU3VtU2V0dGluZ3MgPSB7XHJcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgYXhpczogJ3NlcmllcycgfCAneEF4aXMnO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZm9ybWF0PzogJ3BlcmNlbnQnIHwgJ2N1cnJlbmN5JyB8ICdudW1iZXInO1xyXG4gIHByZWNpc2lvbj86IHN0cmluZztcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBjYWxjdWxhdGU/OiAncXVhcnRlcicgfCAneWVhcicgfCAnbW9udGgnIHwgQ2FsY3VsYXRlRm47XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDYWxjdWxhdGVGbiB7XHJcbiAgKHZhbHVlOiBzdHJpbmcsIGRhdGE6IHsgW3Nlcmllczogc3RyaW5nXTogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlcjsgfTsgfSk6IG51bWJlcjtcclxufVxyXG5cclxudHlwZSBIZWFkZXJJbmZvID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgZm9ybWF0PzogJ3BlcmNlbnQnIHwgJ2N1cnJlbmN5JyB8ICdudW1iZXInO1xyXG4gIHByZWNpc2lvbj86IHN0cmluZztcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBleHBsb3JhYmxlPzogYm9vbGVhbjtcclxuICBpbmRleD86IG51bWJlcjtcclxufTtcclxuaW50ZXJmYWNlIENlbGwgeyB9XHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIm1vdmUoLTEsIC0xKVwiICpuZ0lmPVwiZGF0YVwiPlxyXG4gIDx0aGVhZD5cclxuICAgIDwhLS0gaGVhZGVycyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1oZWFkZXItcm93XCI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgLTIpXCIgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj5cclxuICAgICAgICB7eyBjb2x1bW4udmFsdWUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+e3t4QXhpc1RvdGFsTGFiZWx9fTwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSBpbmRpY2VzIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvdyBjdWJlLWluZGV4XCIgKm5nRm9yPVwibGV0IGluZGV4IG9mIGluZGljZXM7IGxldCB5ID0gaW5kZXhcIj5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiPnt7aW5kZXgudGl0bGV9fTwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIHkpXCI+XHJcbiAgICAgICAge3sgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XSB9fVxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKDAsIHkpXCI+XHJcbiAgICAgICAge3sgZGF0YVtpbmRleC5uYW1lXVsnX3RvdGFsJ10gfX1cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIHJvd3MgLS0+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgeSA9IGluZGV4XCIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTIsIHkgKyBpbmRpY2VzLmxlbmd0aClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPHNwYW4gW2NsYXNzLmNsaWNrYWJsZV09XCJpbnRlcmFjdGl2ZSAmJiBjb2x1bW4uZXhwbG9yYWJsZSAhPT0gZmFsc2UgJiYgcm93LmV4cGxvcmFibGUgIT09IGZhbHNlXCIgKGNsaWNrKT1cImV4cGxvcmUoY29sdW1uLCByb3cpXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKC0xLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFbcm93LmtleV1bJ190b3RhbCddICE9PSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgIHt7IGRhdGFbcm93LmtleV1bJ190b3RhbCddIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRmb290PlxyXG4gICAgPCEtLSBmb290ZXIgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPnt7c2VyaWVzVG90YWxMYWJlbH19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgLTIpXCJcclxuICAgICAgICAgIFtjbGFzcy5uZWdhdGl2ZS1maWd1cmVdPVwidG90YWxzW2NvbHVtbi5rZXldLnN0YXJ0c1dpdGgoJy0nKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbHNbY29sdW1uLmtleV0gIT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAge3sgdG90YWxzW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiPnt7IHRvdGFsc1snX2dyYW5kJ10gfX08L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3Rmb290PlxyXG48L3RhYmxlPlxyXG4iXX0=
|
@@ -69,7 +69,7 @@ export class CubeParallelComponent {
|
|
69
69
|
this.width = Math.max(Math.round(this.size / this.items.length), 150) + 'px';
|
70
70
|
this._loading.next(false);
|
71
71
|
}, (e) => {
|
72
|
-
this._sb.error(e.status ===
|
72
|
+
this._sb.error(e.status === 406 ? 'Unauthorized' : null);
|
73
73
|
this._loading.next(false);
|
74
74
|
});
|
75
75
|
}
|
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
157
157
|
}], palettes: [{
|
158
158
|
type: Input
|
159
159
|
}] } });
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3BhcmFsbGVsL3BhcmFsbGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9wYXJhbGxlbC9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUU5QixNQUFNO0FBTU4sTUFBTSxPQUNFLHFCQUFxQjtJQTBDM0IsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUEzQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxVQUFLLEdBQWdDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEYsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBUWhELFVBQUssR0FBVyxFQUFFLENBQUM7UUFFVixpQkFBWSxHQUFH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REgsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdHLFNBQVM7c0JBRGpCLE1BQU07dUJBQUMsU0FBUztnQkFRTixRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBeGlzU2V0dGluZ3NNb2RlbCwgSVBvaW50UmVnaW9uRXZlbnRBcmdzLCBMaW5lU2V0dGluZ3NNb2RlbCwgU3BhcmtsaW5lVHlwZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFYRVNfQ09ERV9ESVZJREVSLCBDdWJlU2VydmljZSwgU2VyaWVzIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJdGVtIH0gZnJvbSAnLi9pdGVtJztcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtcGFyYWxsZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3BhcmFsbGVsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQ3ViZVBhcmFsbGVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgeEF4aXMhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIHNlcmllcyE6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kaWNlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogU3BhcmtsaW5lVHlwZTtcclxuICBASW5wdXQoKVxyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKVxyXG4gIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXhwbG9yZUV2ZW50PigpO1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgcHJpdmF0ZSBfcGFsZXR0ZXMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgcHVibGljIGdldCBwYWxldHRlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wYWxldHRlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhbGV0dGVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9wYWxldHRlcyA9IHZhbHVlO1xyXG4gIH1cclxuICBpdGVtczogSXRlbVtdID0gW107XHJcbiAgZm9ybWF0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYXhpc1NldHRpbmdzID0ge1xyXG4gICAgbGluZVNldHRpbmdzOiB7XHJcbiAgICB9IGFzIExpbmVTZXR0aW5nc01vZGVsLFxyXG4gIH0gYXMgQXhpc1NldHRpbmdzTW9kZWw7XHJcbiAgd2lkdGg6IHN0cmluZyA9ICcxNTBweCc7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kYXRhOiBTZXJpZXNbXTtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHJlYWRvbmx5IGVuYWJsZVJ0bCA9IHRoaXMuX3Nlc3Npb24uaW52ZXJzZTtcclxuICBwcml2YXRlIF9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUob2sgPT4gdGhpcy5sb2FkaW5nID0gb2spO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBkZWxldGUgdGhpcy5maWx0ZXJzW3RoaXMueEF4aXMgYXMgc3RyaW5nXTtcclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKSB8fCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLmZvcm1hdCA9ICh0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJykgKyB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzO1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSkgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snc2l6ZSddICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB0aGlzLndpZHRoID0gTWF0aC5yb3VuZCh0aGlzLnNpemUgLyB0aGlzLml0ZW1zLmxlbmd0aCkgKyAncHgnO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgICB0aGlzLl9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcyxcclxuICAgICAgZ3JvdXBJbmRpY2VzOiB0cnVlLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gcjtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpIHRoaXMud2lkdGggPSBNYXRoLm1heChNYXRoLnJvdW5kKHRoaXMuc2l6ZSAvIHRoaXMuaXRlbXMubGVuZ3RoKSwgMTUwKSArICdweCc7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgY29uc3QgY29sb3JNYXAgPSB7fTtcclxuICAgIGxldCBjb2xvckluZGV4ID0gMDtcclxuXHJcbiAgICBsZXQgb3JpZ2luYWxYQXhpcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMueEF4aXMpID8gdGhpcy54QXhpc1swXSA6IHRoaXMueEF4aXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgICBvcmlnaW5hbFNlcmllcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMuc2VyaWVzKSA/IHRoaXMuc2VyaWVzWzBdIDogdGhpcy5zZXJpZXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFhBeGlzKSlcclxuICAgICAgb3JpZ2luYWxYQXhpcyA9IFtvcmlnaW5hbFhBeGlzXTtcclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFNlcmllcykpXHJcbiAgICAgIG9yaWdpbmFsU2VyaWVzID0gW29yaWdpbmFsU2VyaWVzXTtcclxuICAgIGxldCBtYXggPSAwO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBpZiAocy5wb2ludHMubGVuZ3RoIDwgMilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhbGV0dGVzID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5wb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnQgPSBzLnBvaW50c1tpXSwgY29sb3IgPSBjb2xvck1hcFtwb2ludC54XTtcclxuICAgICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGNvbG9yTWFwW3BvaW50LnhdID1cclxuICAgICAgICAgICAgcy5pbmRleFxyXG4gICAgICAgICAgICAgIHx8ICghdGhpcy5pbmRpY2VzICYmIG9yaWdpbmFsWEF4aXMuaW5kZXhPZihwb2ludC54KSA+IC0xXHJcbiAgICAgICAgICAgICAgICAmJiBvcmlnaW5hbFNlcmllcy5pbmRleE9mKHMubmFtZSkgPiAtMSlcclxuICAgICAgICAgICAgICA/IHRoaXMuX3ByaW1hcnlbY29sb3JJbmRleF0gOiB0aGlzLl9wYWxldHRlc1tjb2xvckluZGV4XTtcclxuICAgICAgICAgIGNvbG9ySW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFsZXR0ZXMucHVzaChjb2xvcik7XHJcbiAgICAgICAgaWYgKHBvaW50LnkgPiBtYXgpXHJcbiAgICAgICAgICBtYXggPSBwb2ludC55O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChuZXcgSXRlbSh0aGlzLmNoYXJ0VHlwZSB8fCAnUGllJyxcclxuICAgICAgICBzLCBwYWxldHRlcywgcy5pbmRleCA/IHRoaXMuX3ByaW1hcnlbNl0gOlxyXG4gICAgICAgIHRoaXMuX3BhbGV0dGVzWzZdKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXhpc1NldHRpbmdzLm1heFkgPSBtYXg7XHJcbiAgfVxyXG4gIHNwcmtsaW5lQ2xpY2soaXRlbTogSXRlbSwgZXZ0OiBJUG9pbnRSZWdpb25FdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IG5hbWUgPSBpdGVtLmRhdGEubmFtZSxcclxuICAgICAgeCA9IGl0ZW0uZGF0YS5wb2ludHNbZXZ0LnBvaW50SW5kZXhdLngsIGluZGV4ID0gaXRlbS5kYXRhLmluZGV4O1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZXMgfSA9IHRoaXM7XHJcbiAgICBpZiAoIWlzQXJyYXkoeEF4aXMpKSB4QXhpcyA9IFt4QXhpc107XHJcbiAgICBpZiAoIWlzQXJyYXkoc2VyaWVzKSkgeEF4aXMgPSBbc2VyaWVzXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICBheGVzW3Nlcmllc1tpXV0gPSBuYW1lLnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeEF4aXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXhlc1t4QXhpc1tpXV0gPSB4LnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIH1cclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoe1xyXG4gICAgICBheGVzOiB7IC4uLnRoaXMuZmlsdGVycywgLi4uYXhlcyB9LFxyXG4gICAgICBpbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9sb2FkaW5nLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhwbG9yZUV2ZW50IHtcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpdGVtcy5sZW5ndGhcIiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IHMgb2YgaXRlbXNcIiBjbGFzcz1cImVsZW1lbnRcIj5cclxuICAgIDxlanMtc3BhcmtsaW5lIFt3aWR0aF09J3dpZHRoJyBoZWlnaHQ9JzEwMHB4JyBbdHlwZV09J3MuY2hhcnRUeXBlJyBbaWRdPVwicy5kYXRhLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicy5kYXRhLnBvaW50c1wiIHhOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICB5TmFtZT1cInlcIiBbcGFsZXR0ZV09XCJzLnBhbGV0dGVcIiBbZm9ybWF0XT1cImZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGU9XCJDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZW5hYmxlUnRsXT1cImVuYWJsZVJ0bFwiXHJcbiAgICAgICAgICAgICAgICAgICBbYm9yZGVyXT1cInMuYm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgIFtmaWxsXT1cInMuZmlsbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbYXhpc1NldHRpbmdzXT1cImF4aXNTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbbWFya2VyU2V0dGluZ3NdPVwicy5tYXJrZXJTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAocG9pbnRSZWdpb25Nb3VzZUNsaWNrKT1cInNwcmtsaW5lQ2xpY2socywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFNldHRpbmdzXT1cInMudG9vbHRpcFNldHRpbmdzXCI+XHJcbiAgICA8L2Vqcy1zcGFya2xpbmU+XHJcbiAgICA8aDQgY2xhc3M9XCJtYXQtaDRcIj57e3MuZGF0YS50aXRsZX19PC9oND5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3BhcmFsbGVsL3BhcmFsbGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9wYXJhbGxlbC9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUU5QixNQUFNO0FBTU4sTUFBTSxPQUNFLHFCQUFxQjtJQTBDM0IsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUEzQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxVQUFLLEdBQWdDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEYsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBUWhELFVBQUssR0FBVyxFQUFFLENBQUM7UUFFVixpQkFBWSxHQUFH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REgsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdHLFNBQVM7c0JBRGpCLE1BQU07dUJBQUMsU0FBUztnQkFRTixRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBeGlzU2V0dGluZ3NNb2RlbCwgSVBvaW50UmVnaW9uRXZlbnRBcmdzLCBMaW5lU2V0dGluZ3NNb2RlbCwgU3BhcmtsaW5lVHlwZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFYRVNfQ09ERV9ESVZJREVSLCBDdWJlU2VydmljZSwgU2VyaWVzIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJdGVtIH0gZnJvbSAnLi9pdGVtJztcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtcGFyYWxsZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3BhcmFsbGVsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQ3ViZVBhcmFsbGVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgeEF4aXMhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIHNlcmllcyE6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kaWNlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogU3BhcmtsaW5lVHlwZTtcclxuICBASW5wdXQoKVxyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKVxyXG4gIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXhwbG9yZUV2ZW50PigpO1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgcHJpdmF0ZSBfcGFsZXR0ZXMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgcHVibGljIGdldCBwYWxldHRlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wYWxldHRlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhbGV0dGVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9wYWxldHRlcyA9IHZhbHVlO1xyXG4gIH1cclxuICBpdGVtczogSXRlbVtdID0gW107XHJcbiAgZm9ybWF0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYXhpc1NldHRpbmdzID0ge1xyXG4gICAgbGluZVNldHRpbmdzOiB7XHJcbiAgICB9IGFzIExpbmVTZXR0aW5nc01vZGVsLFxyXG4gIH0gYXMgQXhpc1NldHRpbmdzTW9kZWw7XHJcbiAgd2lkdGg6IHN0cmluZyA9ICcxNTBweCc7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kYXRhOiBTZXJpZXNbXTtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHJlYWRvbmx5IGVuYWJsZVJ0bCA9IHRoaXMuX3Nlc3Npb24uaW52ZXJzZTtcclxuICBwcml2YXRlIF9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUob2sgPT4gdGhpcy5sb2FkaW5nID0gb2spO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBkZWxldGUgdGhpcy5maWx0ZXJzW3RoaXMueEF4aXMgYXMgc3RyaW5nXTtcclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKSB8fCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLmZvcm1hdCA9ICh0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJykgKyB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzO1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSkgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snc2l6ZSddICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB0aGlzLndpZHRoID0gTWF0aC5yb3VuZCh0aGlzLnNpemUgLyB0aGlzLml0ZW1zLmxlbmd0aCkgKyAncHgnO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgICB0aGlzLl9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcyxcclxuICAgICAgZ3JvdXBJbmRpY2VzOiB0cnVlLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gcjtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpIHRoaXMud2lkdGggPSBNYXRoLm1heChNYXRoLnJvdW5kKHRoaXMuc2l6ZSAvIHRoaXMuaXRlbXMubGVuZ3RoKSwgMTUwKSArICdweCc7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwNiA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgY29uc3QgY29sb3JNYXAgPSB7fTtcclxuICAgIGxldCBjb2xvckluZGV4ID0gMDtcclxuXHJcbiAgICBsZXQgb3JpZ2luYWxYQXhpcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMueEF4aXMpID8gdGhpcy54QXhpc1swXSA6IHRoaXMueEF4aXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgICBvcmlnaW5hbFNlcmllcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMuc2VyaWVzKSA/IHRoaXMuc2VyaWVzWzBdIDogdGhpcy5zZXJpZXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFhBeGlzKSlcclxuICAgICAgb3JpZ2luYWxYQXhpcyA9IFtvcmlnaW5hbFhBeGlzXTtcclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFNlcmllcykpXHJcbiAgICAgIG9yaWdpbmFsU2VyaWVzID0gW29yaWdpbmFsU2VyaWVzXTtcclxuICAgIGxldCBtYXggPSAwO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBpZiAocy5wb2ludHMubGVuZ3RoIDwgMilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhbGV0dGVzID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5wb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnQgPSBzLnBvaW50c1tpXSwgY29sb3IgPSBjb2xvck1hcFtwb2ludC54XTtcclxuICAgICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGNvbG9yTWFwW3BvaW50LnhdID1cclxuICAgICAgICAgICAgcy5pbmRleFxyXG4gICAgICAgICAgICAgIHx8ICghdGhpcy5pbmRpY2VzICYmIG9yaWdpbmFsWEF4aXMuaW5kZXhPZihwb2ludC54KSA+IC0xXHJcbiAgICAgICAgICAgICAgICAmJiBvcmlnaW5hbFNlcmllcy5pbmRleE9mKHMubmFtZSkgPiAtMSlcclxuICAgICAgICAgICAgICA/IHRoaXMuX3ByaW1hcnlbY29sb3JJbmRleF0gOiB0aGlzLl9wYWxldHRlc1tjb2xvckluZGV4XTtcclxuICAgICAgICAgIGNvbG9ySW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFsZXR0ZXMucHVzaChjb2xvcik7XHJcbiAgICAgICAgaWYgKHBvaW50LnkgPiBtYXgpXHJcbiAgICAgICAgICBtYXggPSBwb2ludC55O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChuZXcgSXRlbSh0aGlzLmNoYXJ0VHlwZSB8fCAnUGllJyxcclxuICAgICAgICBzLCBwYWxldHRlcywgcy5pbmRleCA/IHRoaXMuX3ByaW1hcnlbNl0gOlxyXG4gICAgICAgIHRoaXMuX3BhbGV0dGVzWzZdKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXhpc1NldHRpbmdzLm1heFkgPSBtYXg7XHJcbiAgfVxyXG4gIHNwcmtsaW5lQ2xpY2soaXRlbTogSXRlbSwgZXZ0OiBJUG9pbnRSZWdpb25FdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IG5hbWUgPSBpdGVtLmRhdGEubmFtZSxcclxuICAgICAgeCA9IGl0ZW0uZGF0YS5wb2ludHNbZXZ0LnBvaW50SW5kZXhdLngsIGluZGV4ID0gaXRlbS5kYXRhLmluZGV4O1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZXMgfSA9IHRoaXM7XHJcbiAgICBpZiAoIWlzQXJyYXkoeEF4aXMpKSB4QXhpcyA9IFt4QXhpc107XHJcbiAgICBpZiAoIWlzQXJyYXkoc2VyaWVzKSkgeEF4aXMgPSBbc2VyaWVzXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICBheGVzW3Nlcmllc1tpXV0gPSBuYW1lLnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeEF4aXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXhlc1t4QXhpc1tpXV0gPSB4LnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIH1cclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoe1xyXG4gICAgICBheGVzOiB7IC4uLnRoaXMuZmlsdGVycywgLi4uYXhlcyB9LFxyXG4gICAgICBpbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9sb2FkaW5nLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhwbG9yZUV2ZW50IHtcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpdGVtcy5sZW5ndGhcIiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IHMgb2YgaXRlbXNcIiBjbGFzcz1cImVsZW1lbnRcIj5cclxuICAgIDxlanMtc3BhcmtsaW5lIFt3aWR0aF09J3dpZHRoJyBoZWlnaHQ9JzEwMHB4JyBbdHlwZV09J3MuY2hhcnRUeXBlJyBbaWRdPVwicy5kYXRhLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicy5kYXRhLnBvaW50c1wiIHhOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICB5TmFtZT1cInlcIiBbcGFsZXR0ZV09XCJzLnBhbGV0dGVcIiBbZm9ybWF0XT1cImZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGU9XCJDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZW5hYmxlUnRsXT1cImVuYWJsZVJ0bFwiXHJcbiAgICAgICAgICAgICAgICAgICBbYm9yZGVyXT1cInMuYm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgIFtmaWxsXT1cInMuZmlsbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbYXhpc1NldHRpbmdzXT1cImF4aXNTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbbWFya2VyU2V0dGluZ3NdPVwicy5tYXJrZXJTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAocG9pbnRSZWdpb25Nb3VzZUNsaWNrKT1cInNwcmtsaW5lQ2xpY2socywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFNldHRpbmdzXT1cInMudG9vbHRpcFNldHRpbmdzXCI+XHJcbiAgICA8L2Vqcy1zcGFya2xpbmU+XHJcbiAgICA8aDQgY2xhc3M9XCJtYXQtaDRcIj57e3MuZGF0YS50aXRsZX19PC9oND5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|