@tetacom/ng-components 1.0.18 → 1.0.22
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/common/util/position-util.d.ts +1 -1
- package/component/date-picker/date-picker/date-picker.component.d.ts +5 -1
- package/esm2020/common/util/position-util.mjs +13 -4
- package/esm2020/component/chart/model/chart-options.mjs +7 -2
- package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +17 -6
- package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +3 -3
- package/esm2020/component/dropdown/dropdown-base.mjs +24 -16
- package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
- package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +1 -1
- package/esm2020/component/resize-panel/resize-panel/resize-panel.component.mjs +2 -2
- package/esm2020/component/select/select/select.component.mjs +3 -3
- package/esm2020/component/table/default/date-cell/date-cell.component.mjs +3 -3
- package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
- package/esm2020/component/table/default/list-cell/list-cell.component.mjs +3 -3
- package/esm2020/component/table/table/table.component.mjs +2 -2
- package/esm2020/component/table/table-body/table-body.component.mjs +3 -3
- package/fesm2015/tetacom-ng-components.mjs +83 -57
- package/fesm2015/tetacom-ng-components.mjs.map +1 -1
- package/fesm2020/tetacom-ng-components.mjs +87 -57
- package/fesm2020/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
- package/style/progress.scss +6 -6
|
@@ -98,7 +98,7 @@ export class TableComponent {
|
|
|
98
98
|
this.startEditRowOrCell(coordinates);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
if (!this.eventIsOnRow(event)) {
|
|
101
|
+
if (!this.eventIsOnRow(event) && !event.defaultPrevented) {
|
|
102
102
|
this._svc.startEditRow(null);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -422,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
422
422
|
type: HostListener,
|
|
423
423
|
args: ['contextmenu', ['$event']]
|
|
424
424
|
}] } });
|
|
425
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBTXJELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR3BELE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFN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QyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFlTCxPQUFPO3NCQUEzQyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZcEMsS0FBSztzQkFESixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrQkQsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTUksV0FBVztzQkFBbkQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlUm93fSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1yb3cnO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtGaWx0ZXJTdGF0ZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQge0RldGFpbENvbXBvbmVudEJhc2V9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7SUNlbGxFdmVudH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWV2ZW50JztcbmltcG9ydCB7SUNlbGxDb29yZGluYXRlc30gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWNvb3JkaW5hdGVzJztcbmltcG9ydCB7R3JvdXBSb3dDb21wb25lbnRCYXNlfSBmcm9tICcuLi9iYXNlL2dyb3VwLXJvdy1jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQge0dyb3VwUm93Q29tcG9uZW50fSBmcm9tICcuLi9kZWZhdWx0L2dyb3VwLXJvdy9ncm91cC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlV2hpbGUsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VkaXRUeXBlfSBmcm9tICcuLi9lbnVtL2VkaXQtdHlwZS5lbnVtJztcbmltcG9ydCB7RWRpdEV2ZW50fSBmcm9tICcuLi9lbnVtL2VkaXQtZXZlbnQuZW51bSc7XG5pbXBvcnQge1NlbGVjdFR5cGV9IGZyb20gJy4uL2VudW0vc2VsZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQge0lJZE5hbWV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHtJRGljdGlvbmFyeX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktZGljdGlvbmFyeSc7XG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXJyYXlVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC9hcnJheS11dGlsJztcbmltcG9ydCB7UG9zaXRpb25VdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC9wb3NpdGlvbi11dGlsJztcbmltcG9ydCB7QWxpZ259IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW0nO1xuaW1wb3J0IHtWZXJ0aWNhbEFsaWdufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS92ZXJ0aWNhbC1hbGlnbi5lbnVtJztcbmltcG9ydCB7RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQge1RhYmxlQ29udGV4dE1lbnVDb25maWd9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbnRleHQtbWVudS1jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1RhYmxlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcblxuICBASW5wdXQoKVxuICBzZXQgc3RhdGUoc3RhdGU6IEZpbHRlclN0YXRlKSB7XG4gICAgdGhpcy5fc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHJvd0hlaWdodCA9IDI0O1xuICBASW5wdXQoKSBjb29raWVOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRldGFpbENvbXBvbmVudDogVHlwZTxEZXRhaWxDb21wb25lbnRCYXNlPFQ+PjtcbiAgQElucHV0KCkgYWN0aXZlUm93OiBUYWJsZVJvdzxUPjtcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBUYWJsZVJvdzxUPltdO1xuICBASW5wdXQoKSBzZWxlY3RUeXBlOiBTZWxlY3RUeXBlID0gU2VsZWN0VHlwZS5ub25lO1xuICBASW5wdXQoKSBhZ2dyZWdhdGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBncm91cFJvd0NvbXBvbmVudDogVHlwZTxHcm91cFJvd0NvbXBvbmVudEJhc2U8VD4+ID1cbiAgICBHcm91cFJvd0NvbXBvbmVudDtcbiAgQElucHV0KCkgb3BlbkxldmVsczogbnVtYmVyO1xuICBASW5wdXQoKSB0cmVlOiBib29sZWFuO1xuICBASW5wdXQoKSB0cmFja0J5OiAocm93OiBUYWJsZVJvdzxUPikgPT4gYW55O1xuICBASW5wdXQoKSBlZGl0VHlwZTogRWRpdFR5cGU7XG4gIEBJbnB1dCgpIGVkaXRFdmVudDogRWRpdEV2ZW50O1xuICBASW5wdXQoKSByb3dFZGl0YWJsZTogYm9vbGVhbiB8ICgocm93OiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbik7XG4gIEBJbnB1dCgpIGNlbGxFZGl0YWJsZTogYm9vbGVhbiB8ICgocm93OiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PiBib29sZWFuKTtcbiAgQElucHV0KCkgcm93Q2xhc3M6IChyb3c6IFRhYmxlUm93PFQ+LCBpbmRleD86IG51bWJlcikgPT4gc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldCBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdmMuc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gIH1cblxuICBASW5wdXQoKSBjb250ZXh0TWVudUNvbmZpZzogVGFibGVDb250ZXh0TWVudUNvbmZpZyA9XG4gICAgbmV3IFRhYmxlQ29udGV4dE1lbnVDb25maWcoKTtcblxuICBASW5wdXQoKSBzaG93SGVhZENlbGxNZW51ID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgc3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWx0ZXJTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclN0YXRlPigpO1xuICBAT3V0cHV0KCkgYm9keUxlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgYWN0aXZlUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVSb3c8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVSb3c8VD5bXT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJvd0xlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgcm93RWRpdFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvdzxUPj4oKTtcbiAgQE91dHB1dCgpIHJvd0VkaXRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxDb29yZGluYXRlczxUPj4oKTtcbiAgQE91dHB1dCgpIGNlbGxFZGl0RW5kID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbENvb3JkaW5hdGVzPFQ+PigpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsQ29vcmRpbmF0ZXM8VD4+KCk7XG4gIEBPdXRwdXQoKSBjZWxsS2V5VXAgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsRXZlbnQ8VD4+KCk7XG5cbiAgQE91dHB1dCgpIHBhc3RlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvdzxUPltdPigpO1xuICBAT3V0cHV0KCkgdGFibGVTZXJ2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlcnZpY2U8VD4+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnLCB7c3RhdGljOiB0cnVlfSkgbWVudTogRWxlbWVudFJlZjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWJsZScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVDbGFzcyA9IHRydWU7XG5cbiAgc2hvd0NvbnRleHRNZW51OiBib29sZWFuO1xuICBzZWxlY3RlZFJvd3NMaXN0OiBUYWJsZVJvdzxUPltdO1xuICBjb250ZXh0TWVudVRhcmdldDogSUNlbGxDb29yZGluYXRlczxUPjtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX2JvZHlFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfaGVhZEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgX3N0YXRlOiBGaWx0ZXJTdGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPiwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX3N2Yy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSAhPT0gdGhpcy5fc3RhdGUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogRmlsdGVyU3RhdGUpID0+IHRoaXMuc3RhdGVDaGFuZ2UubmV4dChzdGF0ZSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RhcnRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogSUNlbGxDb29yZGluYXRlczxUPikgPT4gdGhpcy5jZWxsRWRpdFN0YXJ0LmVtaXQoaXRlbSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RvcFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PiB0aGlzLmNlbGxFZGl0RW5kLmVtaXQoaXRlbSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRSb3dTdGFydFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PlxuICAgICAgICB0aGlzLnJvd0VkaXRTdGFydC5lbWl0KGl0ZW0/LnJvdylcbiAgICAgICk7XG5cbiAgICB0aGlzLl9zdmMuZWRpdFJvd1N0b3BcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogSUNlbGxDb29yZGluYXRlczxUPikgPT5cbiAgICAgICAgdGhpcy5yb3dFZGl0RW5kLmVtaXQoaXRlbT8ucm93KVxuICAgICAgKTtcblxuICAgIHRoaXMuX3N2Yy5zZWxlY3RlZFJvd3NcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IFRhYmxlUm93PFQ+W10pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NMaXN0ID0gaXRlbXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuYWN0aXZlUm93XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFRhYmxlUm93PFQ+KSA9PiB0aGlzLmFjdGl2ZVJvd0NoYW5nZS5lbWl0KGl0ZW0pKTtcblxuICAgIHRoaXMuX3N2Yy52YWx1ZUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoY29vcmRpbmF0ZXM6IElDZWxsQ29vcmRpbmF0ZXM8VD4pID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvb3JkaW5hdGVzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBoYW5kbGVDbGlja091dHNpZGVBbnlSb3coXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcbiAgKSB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmdldENvb3JkaW5hdGVzKGV2ZW50KTtcbiAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY2VsbENsaWNrLmVtaXQoY29vcmRpbmF0ZXMpO1xuICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuY2xpY2spIHtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuZXZlbnRJc09uUm93KGV2ZW50KSkge1xuICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSkgZm9jdXNJbihldmVudDogYW55KSB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmdldENvb3JkaW5hdGVzKGV2ZW50KTtcbiAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY2VsbEZvY3VzLmVtaXQoY29vcmRpbmF0ZXMpO1xuICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuZm9jdXMpIHtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJywgWyckZXZlbnQnXSlcbiAgZGJsY2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgdGhpcy5jZWxsRG91YmxlQ2xpY2suZW1pdChjb29yZGluYXRlcyk7XG4gICAgICBpZiAodGhpcy5lZGl0RXZlbnQgPT09IEVkaXRFdmVudC5kb3VibGVDbGljaykge1xuICAgICAgICB0aGlzLnN0YXJ0RWRpdFJvd09yQ2VsbChjb29yZGluYXRlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwJywgWyckZXZlbnQnXSlcbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgdGhpcy5jZWxsS2V5VXAuZW1pdChjb29yZGluYXRlcyk7XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRSb3cobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSkgY29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmdldFNlbGVjdGVkVGV4dCgpIHx8XG4gICAgICB0aGlzLmNvbnRleHRNZW51Q29uZmlnPy5jb250ZXh0TWVudSA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gdGhpcy5nZXRDb29yZGluYXRlcyhldmVudCk7XG4gICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSB0cnVlO1xuICAgIHRoaXMuc2V0UG9zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgcm93QWRkKCkge1xuICAgIHRoaXMuYWRkUm93LmVtaXQoKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgY29weShyb3dzOiBUYWJsZVJvdzxUPltdKSB7XG4gICAgb2YoMSlcbiAgICAgIC5waXBlKHdpdGhMYXRlc3RGcm9tKHRoaXMuX3N2Yy5jb2x1bW5zLCB0aGlzLl9zdmMuaGlkZGVuQ29sdW1ucykpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBbbnVtYmVyLCBUYWJsZUNvbHVtbltdLCBzdHJpbmdbXV0pID0+IHtcbiAgICAgICAgY29uc3QgWywgY29sdW1ucywgaGlkZGVuXSA9IGRhdGE7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFxuICAgICAgICAgIHRoaXMudG9DbGlwYm9hcmRTdHJpbmcocm93cywgdGhpcy5nZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zLCBoaWRkZW4pKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlKHJvd3M6IFRhYmxlUm93PFQ+W10pIHtcbiAgICB0aGlzLmRlbGV0ZVJvd3MuZW1pdChyb3dzKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgcGFzdGVEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKTtcbiAgICBvZigxKVxuICAgICAgLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5fc3ZjLmNvbHVtbnMsIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFtudW1iZXIsIFRhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbLCBjb2x1bW5zLCBoaWRkZW5dID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYXN0ZVJvd3MuZW1pdChcbiAgICAgICAgICB0aGlzLmZyb21DbGlwYm9hcmQocmVzdWx0LCB0aGlzLmdldFZpc2libGVDb2x1bW5zKGNvbHVtbnMsIGhpZGRlbikpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3ZjLnJlc3RvcmVTdGF0ZSgpO1xuICAgIHRoaXMuX3N2Yy5yZXN0b3JlSGlkZGVuQ29sdW1ucygpO1xuICAgIHRoaXMudGFibGVTZXJ2aWNlLmVtaXQodGhpcy5fc3ZjKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkRWxlbWVudCA9XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLWhlYWQnKTtcbiAgICB0aGlzLl9ib2R5RWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy50YWJsZS1ib2R5LWNvbnRhaW5lcidcbiAgICApO1xuICAgIHRoaXMuX2JvZHlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9ib2R5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZWRpdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLmVkaXRUeXBlID0gdGhpcy5lZGl0VHlwZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NlbGVjdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFR5cGUgPSB0aGlzLnNlbGVjdFR5cGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdzZWxlY3RlZFJvd3MnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFJvd3ModGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93RWRpdGFibGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnJvd0VkaXRhYmxlID0gdGhpcy5yb3dFZGl0YWJsZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NlbGxFZGl0YWJsZScpKSB7XG4gICAgICB0aGlzLl9zdmMuY2VsbEVkaXRhYmxlID0gdGhpcy5jZWxsRWRpdGFibGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb29raWVOYW1lJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRDb29raWVOYW1lKHRoaXMuY29va2llTmFtZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb2x1bW5zJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXREYXRhKHRoaXMuZGF0YSk7XG4gICAgICB0aGlzLl9zdmMuc2VsZWN0Um93cyhbXSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkaWN0JykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXREaWN0KHRoaXMuZGljdCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXM6IElDZWxsQ29vcmRpbmF0ZXM8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0VHlwZSA9PT0gRWRpdFR5cGUucm93KSB7XG4gICAgICB0aGlzLl9zdmMuc3RhcnRFZGl0Um93KGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZWRpdFR5cGUgPT09IEVkaXRUeXBlLmNlbGwpIHtcbiAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50Q2VsbChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5maW5kKCh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd0ZXRhLWNlbGwnO1xuICAgIH0pIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudElzT25Sb3coZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93ID0gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRhcmdldD8uZ2V0QXR0cmlidXRlICYmIHRhcmdldD8uZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIH0pO1xuICAgIHJldHVybiByb3cgJiYgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvb3JkaW5hdGVzKGV2ZW50OiBFdmVudCk6IElDZWxsRXZlbnQ8VD4gfCBudWxsIHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRFdmVudENlbGwoZXZlbnQpO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICBjb25zdCByb3dJbmRleCA9IGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbicpO1xuICAgICAgaWYgKHJvd0luZGV4ICYmIGNvbHVtbk5hbWUpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fc3ZjLmdldFJvd0J5SW5kZXgocm93SW5kZXgpO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLl9zdmMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbiA/IGNvbHVtbiA6IG5ldyBUYWJsZUNvbHVtbigpLFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgdGhpcy5faGVhZEVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuX2JvZHlFbGVtZW50LnNjcm9sbExlZnQ7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFRleHQoKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5nZXRTZWxlY3Rpb24gIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRleHQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBQb3NpdGlvblV0aWwuZ2V0UG9zaXRpb24oXG4gICAgICB7XG4gICAgICAgIHRvcDogZXZlbnQueSxcbiAgICAgICAgYm90dG9tOiBldmVudC55LFxuICAgICAgICBsZWZ0OiBldmVudC54LFxuICAgICAgICByaWdodDogZXZlbnQueCxcbiAgICAgIH0sXG4gICAgICB0aGlzLm1lbnUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIEFsaWduLmxlZnQsXG4gICAgICBWZXJ0aWNhbEFsaWduLmF1dG9cbiAgICApO1xuICAgIFBvc2l0aW9uVXRpbC5zZXRFbGVtZW50UG9zaXRpb24odGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9DbGlwYm9hcmRTdHJpbmcocm93czogVGFibGVSb3c8VD5bXSwgY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIHJldHVybiByb3dzLnJlZHVjZShcbiAgICAgIChyZXM6IHN0cmluZywgY3VycmVudFJvdzogVGFibGVSb3c8VD4sIGk6IG51bWJlcikgPT5cbiAgICAgICAgYCR7cmVzfSR7aSA9PT0gMCA/ICcnIDogJ1xcbid9JHtjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgICAoY29sdW1uUmVzdWx0OiBzdHJpbmcsIGNvbHVtbjogVGFibGVDb2x1bW4sIGo6IG51bWJlcikgPT5cbiAgICAgICAgICAgIGAke2NvbHVtblJlc3VsdH0ke2ogPT09IDAgPyAnJyA6ICdcXHQnfSR7XG4gICAgICAgICAgICAgIGN1cnJlbnRSb3cuZGF0YVtjb2x1bW4ubmFtZV0gPz8gJydcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICcnXG4gICAgICAgICl9YCxcbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZnJvbUNsaXBib2FyZChkYXRhOiBzdHJpbmcsIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pIHtcbiAgICBjb25zdCByb3dzID0gZGF0YS5zcGxpdCgnXFxuJykuZmlsdGVyKChfKSA9PiBfPy5sZW5ndGggPiAwKTtcbiAgICBjb25zdCByZXN1bHQgPSByb3dzLm1hcCgoXykgPT5cbiAgICAgIF8ucmVwbGFjZSgnXFxyJywgJycpLnJlcGxhY2UoJ1xcbicsICcnKS5zcGxpdCgnXFx0JylcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQubWFwKChyb3c6IHN0cmluZ1tdKSA9PlxuICAgICAgcm93LnJlZHVjZSgocmVzLCBpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWU6IGFueSA9IGl0ZW07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjb2x1bW5zW2luZGV4XT8uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5udW1iZXIgfHxcbiAgICAgICAgICBjb2x1bW5zW2luZGV4XT8uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5saXN0XG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sdW1uc1tpbmRleF0/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuYm9vbGVhbikge1xuICAgICAgICAgIHZhbHVlID0gQm9vbGVhbihKU09OLnBhcnNlKGl0ZW0udG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2x1bW5zW2luZGV4XSkge1xuICAgICAgICAgIHJlc1tjb2x1bW5zW2luZGV4XS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9LCB7fSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBoaWRkZW46IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IEFycmF5VXRpbC5mbGF0dGVuKGNvbHVtbnMsICdjb2x1bW5zJywgdHJ1ZSkuZmlsdGVyKFxuICAgICAgKF8pID0+IGhpZGRlbi5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgKTtcbiAgICByZXR1cm4gdmlzaWJsZS5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgPHRldGEtdGFibGUtaGVhZCBbc2VsZWN0VHlwZV09XCJzZWxlY3RUeXBlXCIgW3Nob3dIZWFkQ2VsbE1lbnVdPVwic2hvd0hlYWRDZWxsTWVudVwiPjwvdGV0YS10YWJsZS1oZWFkPlxuICA8dGV0YS10YWJsZS1ib2R5XG4gICAgW2FnZ3JlZ2F0ZV09XCJhZ2dyZWdhdGVcIlxuICAgIFt2aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgIFthY3RpdmVSb3ddPVwiYWN0aXZlUm93XCJcbiAgICBbYWRkaXRpb25hbENvbXBvbmVudF09XCJkZXRhaWxDb21wb25lbnRcIlxuICAgIFtncm91cGluZ109XCJncm91cGluZ1wiXG4gICAgW2dyb3VwUm93Q29tcG9uZW50XT1cImdyb3VwUm93Q29tcG9uZW50XCJcbiAgICBbb3BlbkxldmVsc109XCJvcGVuTGV2ZWxzXCJcbiAgICBbc2VsZWN0VHlwZV09XCJzZWxlY3RUeXBlXCJcbiAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXG4gICAgW3Jvd0NsYXNzXT1cInJvd0NsYXNzXCJcbiAgICBbdHJlZV09XCJ0cmVlXCI+PC90ZXRhLXRhYmxlLWJvZHk+XG48L2Rpdj5cblxuPGRpdiAjY29udGV4dE1lbnVcbiAgICAgY2xhc3M9XCJsaXN0IHNoYWRvdy0xXCJcbiAgICAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHotaW5kZXg6IDI7XCJcbiAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwic2hvd0NvbnRleHRNZW51ID8gJ3Zpc2libGUgJyA6ICdoaWRkZW4nXCJcbiAgICAgW3RldGFDbGlja091dHNpZGVdPVwic2hvd0NvbnRleHRNZW51XCJcbiAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93Q29udGV4dE1lbnUgPSBmYWxzZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVDb25maWc/LmFkZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJyb3dBZGQoKVwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInYWRkJ1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAg0JTQvtCx0LDQstC40YLRjCDRgdGC0YDQvtC60YNcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1kaXZpZGVyXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVDb25maWc/LmNvcHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiY29weShzZWxlY3RlZFJvd3NMaXN0KVwiXG4gICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm93c0xpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ2NvcHlTZWxlY3RlZCdcIiBbcGFsZXR0ZV09XCIndGV4dCdcIj48L3RldGEtaWNvbj5cbiAgICAgINCa0L7Qv9C40YDQvtCy0LDRgtGMINCy0YvQtNC10LvQtdC90L3Ri9C1INGB0YLRgNC+0LrQuFxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJjb3B5KFtjb250ZXh0TWVudVRhcmdldC5yb3ddKVwiXG4gICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51VGFyZ2V0XCI+XG4gICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidjb3B5J1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAg0JrQvtC/0LjRgNC+0LLQsNGC0Ywg0YHRgtGA0L7QutGDXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtZGl2aWRlclwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRNZW51Q29uZmlnPy5wYXN0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJwYXN0ZURhdGEoKVwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCIncGFzdGUnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQktGB0YLQsNCy0LjRgtGMXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtZGl2aWRlclwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRNZW51Q29uZmlnPy5kZWxldGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHNlbGVjdGVkUm93c0xpc3QpXCJcbiAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInZGVsZXRlU2VsZWN0ZWQnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQo9C00LDQu9C40YLRjCDQstGL0LTQtdC70LXQvdC90YvQtSDRgdGC0YDQvtC60LhcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiZGVsZXRlKFtjb250ZXh0TWVudVRhcmdldC5yb3ddKVwiXG4gICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51VGFyZ2V0XCI+XG4gICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidkZWxldGUnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQo9C00LDQu9C40YLRjCDRgdGC0YDQvtC60YNcbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBTXJELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR3BELE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFN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RGtCLHdCQUF3QjtzQkFBbkUsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFlTCxPQUFPO3NCQUEzQyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZcEMsS0FBSztzQkFESixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrQkQsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTUksV0FBVztzQkFBbkQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlUm93fSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1yb3cnO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtGaWx0ZXJTdGF0ZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQge0RldGFpbENvbXBvbmVudEJhc2V9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7SUNlbGxFdmVudH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWV2ZW50JztcbmltcG9ydCB7SUNlbGxDb29yZGluYXRlc30gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWNvb3JkaW5hdGVzJztcbmltcG9ydCB7R3JvdXBSb3dDb21wb25lbnRCYXNlfSBmcm9tICcuLi9iYXNlL2dyb3VwLXJvdy1jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQge0dyb3VwUm93Q29tcG9uZW50fSBmcm9tICcuLi9kZWZhdWx0L2dyb3VwLXJvdy9ncm91cC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlV2hpbGUsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VkaXRUeXBlfSBmcm9tICcuLi9lbnVtL2VkaXQtdHlwZS5lbnVtJztcbmltcG9ydCB7RWRpdEV2ZW50fSBmcm9tICcuLi9lbnVtL2VkaXQtZXZlbnQuZW51bSc7XG5pbXBvcnQge1NlbGVjdFR5cGV9IGZyb20gJy4uL2VudW0vc2VsZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQge0lJZE5hbWV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHtJRGljdGlvbmFyeX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktZGljdGlvbmFyeSc7XG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXJyYXlVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC9hcnJheS11dGlsJztcbmltcG9ydCB7UG9zaXRpb25VdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC9wb3NpdGlvbi11dGlsJztcbmltcG9ydCB7QWxpZ259IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW0nO1xuaW1wb3J0IHtWZXJ0aWNhbEFsaWdufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS92ZXJ0aWNhbC1hbGlnbi5lbnVtJztcbmltcG9ydCB7RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQge1RhYmxlQ29udGV4dE1lbnVDb25maWd9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbnRleHQtbWVudS1jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1RhYmxlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcblxuICBASW5wdXQoKVxuICBzZXQgc3RhdGUoc3RhdGU6IEZpbHRlclN0YXRlKSB7XG4gICAgdGhpcy5fc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHJvd0hlaWdodCA9IDI0O1xuICBASW5wdXQoKSBjb29raWVOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRldGFpbENvbXBvbmVudDogVHlwZTxEZXRhaWxDb21wb25lbnRCYXNlPFQ+PjtcbiAgQElucHV0KCkgYWN0aXZlUm93OiBUYWJsZVJvdzxUPjtcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBUYWJsZVJvdzxUPltdO1xuICBASW5wdXQoKSBzZWxlY3RUeXBlOiBTZWxlY3RUeXBlID0gU2VsZWN0VHlwZS5ub25lO1xuICBASW5wdXQoKSBhZ2dyZWdhdGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBncm91cFJvd0NvbXBvbmVudDogVHlwZTxHcm91cFJvd0NvbXBvbmVudEJhc2U8VD4+ID1cbiAgICBHcm91cFJvd0NvbXBvbmVudDtcbiAgQElucHV0KCkgb3BlbkxldmVsczogbnVtYmVyO1xuICBASW5wdXQoKSB0cmVlOiBib29sZWFuO1xuICBASW5wdXQoKSB0cmFja0J5OiAocm93OiBUYWJsZVJvdzxUPikgPT4gYW55O1xuICBASW5wdXQoKSBlZGl0VHlwZTogRWRpdFR5cGU7XG4gIEBJbnB1dCgpIGVkaXRFdmVudDogRWRpdEV2ZW50O1xuICBASW5wdXQoKSByb3dFZGl0YWJsZTogYm9vbGVhbiB8ICgocm93OiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbik7XG4gIEBJbnB1dCgpIGNlbGxFZGl0YWJsZTogYm9vbGVhbiB8ICgocm93OiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PiBib29sZWFuKTtcbiAgQElucHV0KCkgcm93Q2xhc3M6IChyb3c6IFRhYmxlUm93PFQ+LCBpbmRleD86IG51bWJlcikgPT4gc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldCBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdmMuc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gIH1cblxuICBASW5wdXQoKSBjb250ZXh0TWVudUNvbmZpZzogVGFibGVDb250ZXh0TWVudUNvbmZpZyA9XG4gICAgbmV3IFRhYmxlQ29udGV4dE1lbnVDb25maWcoKTtcblxuICBASW5wdXQoKSBzaG93SGVhZENlbGxNZW51ID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgc3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWx0ZXJTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclN0YXRlPigpO1xuICBAT3V0cHV0KCkgYm9keUxlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgYWN0aXZlUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVSb3c8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVSb3c8VD5bXT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJvd0xlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgcm93RWRpdFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvdzxUPj4oKTtcbiAgQE91dHB1dCgpIHJvd0VkaXRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxDb29yZGluYXRlczxUPj4oKTtcbiAgQE91dHB1dCgpIGNlbGxFZGl0RW5kID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbENvb3JkaW5hdGVzPFQ+PigpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsQ29vcmRpbmF0ZXM8VD4+KCk7XG4gIEBPdXRwdXQoKSBjZWxsS2V5VXAgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsRXZlbnQ8VD4+KCk7XG5cbiAgQE91dHB1dCgpIHBhc3RlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvdzxUPltdPigpO1xuICBAT3V0cHV0KCkgdGFibGVTZXJ2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlcnZpY2U8VD4+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnLCB7c3RhdGljOiB0cnVlfSkgbWVudTogRWxlbWVudFJlZjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWJsZScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVDbGFzcyA9IHRydWU7XG5cbiAgc2hvd0NvbnRleHRNZW51OiBib29sZWFuO1xuICBzZWxlY3RlZFJvd3NMaXN0OiBUYWJsZVJvdzxUPltdO1xuICBjb250ZXh0TWVudVRhcmdldDogSUNlbGxDb29yZGluYXRlczxUPjtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX2JvZHlFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfaGVhZEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgX3N0YXRlOiBGaWx0ZXJTdGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPiwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX3N2Yy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSAhPT0gdGhpcy5fc3RhdGUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogRmlsdGVyU3RhdGUpID0+IHRoaXMuc3RhdGVDaGFuZ2UubmV4dChzdGF0ZSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RhcnRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogSUNlbGxDb29yZGluYXRlczxUPikgPT4gdGhpcy5jZWxsRWRpdFN0YXJ0LmVtaXQoaXRlbSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RvcFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PiB0aGlzLmNlbGxFZGl0RW5kLmVtaXQoaXRlbSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRSb3dTdGFydFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbENvb3JkaW5hdGVzPFQ+KSA9PlxuICAgICAgICB0aGlzLnJvd0VkaXRTdGFydC5lbWl0KGl0ZW0/LnJvdylcbiAgICAgICk7XG5cbiAgICB0aGlzLl9zdmMuZWRpdFJvd1N0b3BcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogSUNlbGxDb29yZGluYXRlczxUPikgPT5cbiAgICAgICAgdGhpcy5yb3dFZGl0RW5kLmVtaXQoaXRlbT8ucm93KVxuICAgICAgKTtcblxuICAgIHRoaXMuX3N2Yy5zZWxlY3RlZFJvd3NcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IFRhYmxlUm93PFQ+W10pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NMaXN0ID0gaXRlbXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuYWN0aXZlUm93XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFRhYmxlUm93PFQ+KSA9PiB0aGlzLmFjdGl2ZVJvd0NoYW5nZS5lbWl0KGl0ZW0pKTtcblxuICAgIHRoaXMuX3N2Yy52YWx1ZUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoY29vcmRpbmF0ZXM6IElDZWxsQ29vcmRpbmF0ZXM8VD4pID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvb3JkaW5hdGVzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBoYW5kbGVDbGlja091dHNpZGVBbnlSb3coXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcbiAgKSB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmdldENvb3JkaW5hdGVzKGV2ZW50KTtcbiAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY2VsbENsaWNrLmVtaXQoY29vcmRpbmF0ZXMpO1xuICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuY2xpY2spIHtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuZXZlbnRJc09uUm93KGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSkgZm9jdXNJbihldmVudDogYW55KSB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmdldENvb3JkaW5hdGVzKGV2ZW50KTtcbiAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY2VsbEZvY3VzLmVtaXQoY29vcmRpbmF0ZXMpO1xuICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuZm9jdXMpIHtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJywgWyckZXZlbnQnXSlcbiAgZGJsY2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgdGhpcy5jZWxsRG91YmxlQ2xpY2suZW1pdChjb29yZGluYXRlcyk7XG4gICAgICBpZiAodGhpcy5lZGl0RXZlbnQgPT09IEVkaXRFdmVudC5kb3VibGVDbGljaykge1xuICAgICAgICB0aGlzLnN0YXJ0RWRpdFJvd09yQ2VsbChjb29yZGluYXRlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwJywgWyckZXZlbnQnXSlcbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgdGhpcy5jZWxsS2V5VXAuZW1pdChjb29yZGluYXRlcyk7XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRSb3cobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSkgY29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmdldFNlbGVjdGVkVGV4dCgpIHx8XG4gICAgICB0aGlzLmNvbnRleHRNZW51Q29uZmlnPy5jb250ZXh0TWVudSA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gdGhpcy5nZXRDb29yZGluYXRlcyhldmVudCk7XG4gICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSB0cnVlO1xuICAgIHRoaXMuc2V0UG9zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgcm93QWRkKCkge1xuICAgIHRoaXMuYWRkUm93LmVtaXQoKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgY29weShyb3dzOiBUYWJsZVJvdzxUPltdKSB7XG4gICAgb2YoMSlcbiAgICAgIC5waXBlKHdpdGhMYXRlc3RGcm9tKHRoaXMuX3N2Yy5jb2x1bW5zLCB0aGlzLl9zdmMuaGlkZGVuQ29sdW1ucykpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBbbnVtYmVyLCBUYWJsZUNvbHVtbltdLCBzdHJpbmdbXV0pID0+IHtcbiAgICAgICAgY29uc3QgWywgY29sdW1ucywgaGlkZGVuXSA9IGRhdGE7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFxuICAgICAgICAgIHRoaXMudG9DbGlwYm9hcmRTdHJpbmcocm93cywgdGhpcy5nZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zLCBoaWRkZW4pKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlKHJvd3M6IFRhYmxlUm93PFQ+W10pIHtcbiAgICB0aGlzLmRlbGV0ZVJvd3MuZW1pdChyb3dzKTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgcGFzdGVEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKTtcbiAgICBvZigxKVxuICAgICAgLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5fc3ZjLmNvbHVtbnMsIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFtudW1iZXIsIFRhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbLCBjb2x1bW5zLCBoaWRkZW5dID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYXN0ZVJvd3MuZW1pdChcbiAgICAgICAgICB0aGlzLmZyb21DbGlwYm9hcmQocmVzdWx0LCB0aGlzLmdldFZpc2libGVDb2x1bW5zKGNvbHVtbnMsIGhpZGRlbikpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB0aGlzLmNvbnRleHRNZW51VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3ZjLnJlc3RvcmVTdGF0ZSgpO1xuICAgIHRoaXMuX3N2Yy5yZXN0b3JlSGlkZGVuQ29sdW1ucygpO1xuICAgIHRoaXMudGFibGVTZXJ2aWNlLmVtaXQodGhpcy5fc3ZjKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkRWxlbWVudCA9XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLWhlYWQnKTtcbiAgICB0aGlzLl9ib2R5RWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy50YWJsZS1ib2R5LWNvbnRhaW5lcidcbiAgICApO1xuICAgIHRoaXMuX2JvZHlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9ib2R5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZWRpdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLmVkaXRUeXBlID0gdGhpcy5lZGl0VHlwZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NlbGVjdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFR5cGUgPSB0aGlzLnNlbGVjdFR5cGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdzZWxlY3RlZFJvd3MnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFJvd3ModGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93RWRpdGFibGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnJvd0VkaXRhYmxlID0gdGhpcy5yb3dFZGl0YWJsZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NlbGxFZGl0YWJsZScpKSB7XG4gICAgICB0aGlzLl9zdmMuY2VsbEVkaXRhYmxlID0gdGhpcy5jZWxsRWRpdGFibGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb29raWVOYW1lJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRDb29raWVOYW1lKHRoaXMuY29va2llTmFtZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb2x1bW5zJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXREYXRhKHRoaXMuZGF0YSk7XG4gICAgICB0aGlzLl9zdmMuc2VsZWN0Um93cyhbXSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkaWN0JykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXREaWN0KHRoaXMuZGljdCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXM6IElDZWxsQ29vcmRpbmF0ZXM8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0VHlwZSA9PT0gRWRpdFR5cGUucm93KSB7XG4gICAgICB0aGlzLl9zdmMuc3RhcnRFZGl0Um93KGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZWRpdFR5cGUgPT09IEVkaXRUeXBlLmNlbGwpIHtcbiAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50Q2VsbChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5maW5kKCh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd0ZXRhLWNlbGwnO1xuICAgIH0pIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudElzT25Sb3coZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93ID0gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRhcmdldD8uZ2V0QXR0cmlidXRlICYmIHRhcmdldD8uZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIH0pO1xuICAgIHJldHVybiByb3cgJiYgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvb3JkaW5hdGVzKGV2ZW50OiBFdmVudCk6IElDZWxsRXZlbnQ8VD4gfCBudWxsIHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRFdmVudENlbGwoZXZlbnQpO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICBjb25zdCByb3dJbmRleCA9IGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbicpO1xuICAgICAgaWYgKHJvd0luZGV4ICYmIGNvbHVtbk5hbWUpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fc3ZjLmdldFJvd0J5SW5kZXgocm93SW5kZXgpO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLl9zdmMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbiA/IGNvbHVtbiA6IG5ldyBUYWJsZUNvbHVtbigpLFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgdGhpcy5faGVhZEVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuX2JvZHlFbGVtZW50LnNjcm9sbExlZnQ7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFRleHQoKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5nZXRTZWxlY3Rpb24gIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRleHQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBQb3NpdGlvblV0aWwuZ2V0UG9zaXRpb24oXG4gICAgICB7XG4gICAgICAgIHRvcDogZXZlbnQueSxcbiAgICAgICAgYm90dG9tOiBldmVudC55LFxuICAgICAgICBsZWZ0OiBldmVudC54LFxuICAgICAgICByaWdodDogZXZlbnQueCxcbiAgICAgIH0sXG4gICAgICB0aGlzLm1lbnUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIEFsaWduLmxlZnQsXG4gICAgICBWZXJ0aWNhbEFsaWduLmF1dG9cbiAgICApO1xuICAgIFBvc2l0aW9uVXRpbC5zZXRFbGVtZW50UG9zaXRpb24odGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9DbGlwYm9hcmRTdHJpbmcocm93czogVGFibGVSb3c8VD5bXSwgY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIHJldHVybiByb3dzLnJlZHVjZShcbiAgICAgIChyZXM6IHN0cmluZywgY3VycmVudFJvdzogVGFibGVSb3c8VD4sIGk6IG51bWJlcikgPT5cbiAgICAgICAgYCR7cmVzfSR7aSA9PT0gMCA/ICcnIDogJ1xcbid9JHtjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgICAoY29sdW1uUmVzdWx0OiBzdHJpbmcsIGNvbHVtbjogVGFibGVDb2x1bW4sIGo6IG51bWJlcikgPT5cbiAgICAgICAgICAgIGAke2NvbHVtblJlc3VsdH0ke2ogPT09IDAgPyAnJyA6ICdcXHQnfSR7XG4gICAgICAgICAgICAgIGN1cnJlbnRSb3cuZGF0YVtjb2x1bW4ubmFtZV0gPz8gJydcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICcnXG4gICAgICAgICl9YCxcbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZnJvbUNsaXBib2FyZChkYXRhOiBzdHJpbmcsIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pIHtcbiAgICBjb25zdCByb3dzID0gZGF0YS5zcGxpdCgnXFxuJykuZmlsdGVyKChfKSA9PiBfPy5sZW5ndGggPiAwKTtcbiAgICBjb25zdCByZXN1bHQgPSByb3dzLm1hcCgoXykgPT5cbiAgICAgIF8ucmVwbGFjZSgnXFxyJywgJycpLnJlcGxhY2UoJ1xcbicsICcnKS5zcGxpdCgnXFx0JylcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQubWFwKChyb3c6IHN0cmluZ1tdKSA9PlxuICAgICAgcm93LnJlZHVjZSgocmVzLCBpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWU6IGFueSA9IGl0ZW07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjb2x1bW5zW2luZGV4XT8uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5udW1iZXIgfHxcbiAgICAgICAgICBjb2x1bW5zW2luZGV4XT8uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5saXN0XG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sdW1uc1tpbmRleF0/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuYm9vbGVhbikge1xuICAgICAgICAgIHZhbHVlID0gQm9vbGVhbihKU09OLnBhcnNlKGl0ZW0udG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2x1bW5zW2luZGV4XSkge1xuICAgICAgICAgIHJlc1tjb2x1bW5zW2luZGV4XS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9LCB7fSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBoaWRkZW46IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IEFycmF5VXRpbC5mbGF0dGVuKGNvbHVtbnMsICdjb2x1bW5zJywgdHJ1ZSkuZmlsdGVyKFxuICAgICAgKF8pID0+IGhpZGRlbi5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgKTtcbiAgICByZXR1cm4gdmlzaWJsZS5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgPHRldGEtdGFibGUtaGVhZCBbc2VsZWN0VHlwZV09XCJzZWxlY3RUeXBlXCIgW3Nob3dIZWFkQ2VsbE1lbnVdPVwic2hvd0hlYWRDZWxsTWVudVwiPjwvdGV0YS10YWJsZS1oZWFkPlxuICA8dGV0YS10YWJsZS1ib2R5XG4gICAgW2FnZ3JlZ2F0ZV09XCJhZ2dyZWdhdGVcIlxuICAgIFt2aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgIFthY3RpdmVSb3ddPVwiYWN0aXZlUm93XCJcbiAgICBbYWRkaXRpb25hbENvbXBvbmVudF09XCJkZXRhaWxDb21wb25lbnRcIlxuICAgIFtncm91cGluZ109XCJncm91cGluZ1wiXG4gICAgW2dyb3VwUm93Q29tcG9uZW50XT1cImdyb3VwUm93Q29tcG9uZW50XCJcbiAgICBbb3BlbkxldmVsc109XCJvcGVuTGV2ZWxzXCJcbiAgICBbc2VsZWN0VHlwZV09XCJzZWxlY3RUeXBlXCJcbiAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXG4gICAgW3Jvd0NsYXNzXT1cInJvd0NsYXNzXCJcbiAgICBbdHJlZV09XCJ0cmVlXCI+PC90ZXRhLXRhYmxlLWJvZHk+XG48L2Rpdj5cblxuPGRpdiAjY29udGV4dE1lbnVcbiAgICAgY2xhc3M9XCJsaXN0IHNoYWRvdy0xXCJcbiAgICAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHotaW5kZXg6IDI7XCJcbiAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwic2hvd0NvbnRleHRNZW51ID8gJ3Zpc2libGUgJyA6ICdoaWRkZW4nXCJcbiAgICAgW3RldGFDbGlja091dHNpZGVdPVwic2hvd0NvbnRleHRNZW51XCJcbiAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93Q29udGV4dE1lbnUgPSBmYWxzZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVDb25maWc/LmFkZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJyb3dBZGQoKVwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInYWRkJ1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAg0JTQvtCx0LDQstC40YLRjCDRgdGC0YDQvtC60YNcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1kaXZpZGVyXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVDb25maWc/LmNvcHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiY29weShzZWxlY3RlZFJvd3NMaXN0KVwiXG4gICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm93c0xpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ2NvcHlTZWxlY3RlZCdcIiBbcGFsZXR0ZV09XCIndGV4dCdcIj48L3RldGEtaWNvbj5cbiAgICAgINCa0L7Qv9C40YDQvtCy0LDRgtGMINCy0YvQtNC10LvQtdC90L3Ri9C1INGB0YLRgNC+0LrQuFxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJjb3B5KFtjb250ZXh0TWVudVRhcmdldC5yb3ddKVwiXG4gICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51VGFyZ2V0XCI+XG4gICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidjb3B5J1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAg0JrQvtC/0LjRgNC+0LLQsNGC0Ywg0YHRgtGA0L7QutGDXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtZGl2aWRlclwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRNZW51Q29uZmlnPy5wYXN0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlXCJcbiAgICAgICAgIChjbGljayk9XCJwYXN0ZURhdGEoKVwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCIncGFzdGUnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQktGB0YLQsNCy0LjRgtGMXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtZGl2aWRlclwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRNZW51Q29uZmlnPy5kZWxldGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHNlbGVjdGVkUm93c0xpc3QpXCJcbiAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInZGVsZXRlU2VsZWN0ZWQnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQo9C00LDQu9C40YLRjCDQstGL0LTQtdC70LXQvdC90YvQtSDRgdGC0YDQvtC60LhcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgICAoY2xpY2spPVwiZGVsZXRlKFtjb250ZXh0TWVudVRhcmdldC5yb3ddKVwiXG4gICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51VGFyZ2V0XCI+XG4gICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidkZWxldGUnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICDQo9C00LDQu9C40YLRjCDRgdGC0YDQvtC60YNcbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -204,10 +204,10 @@ export class TableBodyComponent {
|
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
TableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableBodyComponent, deps: [{ token: i1.TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
207
|
-
TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", rowHeight: "rowHeight", additionalComponent: "additionalComponent", tree: "tree", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [
|
|
207
|
+
TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", rowHeight: "rowHeight", additionalComponent: "additionalComponent", tree: "tree", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""], components: [{ type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i3.SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { type: i4.CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { type: i5.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "tetaNumber": i7.NumberPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
208
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
209
209
|
type: Component,
|
|
210
|
-
args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [
|
|
210
|
+
args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""] }]
|
|
211
211
|
}], ctorParameters: function () { return [{ type: i1.TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { virtual: [{
|
|
212
212
|
type: Input
|
|
213
213
|
}], activeRow: [{
|
|
@@ -237,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
237
237
|
type: HostBinding,
|
|
238
238
|
args: ['class.table-body']
|
|
239
239
|
}] } });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBQyxVQUFVLEVBQWUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLGtCQUFrQjtJQXVEN0IsWUFBb0IsSUFBcUIsRUFBVSxJQUF1QjtRQUF0RCxTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBeEN4QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQWlCeEUsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pD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Z0JBQ1IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRO2dCQUNuQyxRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBcFBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdkQWFsQix3QkFBd0IsZ0RDL0NyQyx5N0tBMkhBOzJGRHpGYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07bUlBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVnRCxRQUFRO3NCQUE3RCxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFRixjQUFjO3NCQUEvRCxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtcm93JztcbmltcG9ydCB7VGFibGVDb2x1bW59IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQge0dyb3VwUm93Q29tcG9uZW50QmFzZX0gZnJvbSAnLi4vYmFzZS9ncm91cC1yb3ctY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge0RldGFpbENvbXBvbmVudEJhc2V9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7dGFrZVdoaWxlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RhYmxlVXRpbH0gZnJvbSAnLi4vdXRpbC90YWJsZS11dGlsJztcbmltcG9ydCB7U2VsZWN0VHlwZX0gZnJvbSAnLi4vZW51bS9zZWxlY3QtdHlwZS5lbnVtJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FycmF5VXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQge0lEaWN0aW9uYXJ5fSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1kaWN0aW9uYXJ5JztcbmltcG9ydCB7SUlkTmFtZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktaWQtbmFtZSc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uVHlwZX0gZnJvbSAnLi4vZW51bS9hZ2dyZWdhdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHtEYXRhc291cmNlLCBJRGF0YXNvdXJjZSwgU2l6ZVN0cmF0ZWd5fSBmcm9tICduZ3gtdWktc2Nyb2xsJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWJsZS1ib2R5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1ib2R5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUJvZHlDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFjdGl2ZVJvdzogVGFibGVSb3c8VD47XG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyO1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQ29tcG9uZW50OiBUeXBlPERldGFpbENvbXBvbmVudEJhc2U8VD4+O1xuICBASW5wdXQoKSB0cmVlOiBib29sZWFuO1xuICBASW5wdXQoKSBhZ2dyZWdhdGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBncm91cFJvd0NvbXBvbmVudDogVHlwZTxHcm91cFJvd0NvbXBvbmVudEJhc2U8VD4+O1xuICBASW5wdXQoKSBvcGVuTGV2ZWxzOiBudW1iZXI7XG4gIEBJbnB1dCgpIHNlbGVjdFR5cGU6IFNlbGVjdFR5cGU7XG4gIEBJbnB1dCgpIHJvd0NsYXNzOiAocm93OiBUYWJsZVJvdzxUPiwgaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZztcblxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwge3N0YXRpYzogZmFsc2V9KSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtYm9keScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVCb2R5Q2xhc3MgPSB0cnVlO1xuXG4gIHNldCBkYXRhKGRhdGE6IFRhYmxlUm93PFQ+W10pIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5jcmVhdGVBZGFwdGVyKCk7XG4gICAgfVxuICAgIHRoaXMucmVzZXRBZGFwdGVyKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcblxuICBncmlkVGVtcGxhdGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlbGVjdGVkUm93czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICBsb2NrZWQ6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgdW5sb2NrZWQ6IFRhYmxlQ29sdW1uW10gPSBbXTtcblxuICBzZWxlY3RUeXBlRW51bSA9IFNlbGVjdFR5cGU7XG4gIGRhdGFTb3VyY2U6IElEYXRhc291cmNlPFRhYmxlUm93PFQ+PjtcblxuICBwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZGF0YTogVGFibGVSb3c8VD5bXTtcbiAgcHJpdmF0ZSBfaGlkZGVuQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcjtcblxuICBzZXQgY29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5sb2NrZWQgPSB0aGlzLl9jb2x1bW5zPy5maWx0ZXIoKF8pID0+IF8ubG9ja2VkID09PSB0cnVlKTtcbiAgICB0aGlzLnVubG9ja2VkID0gdGhpcy5fY29sdW1ucz8uZmlsdGVyKChfKSA9PiBfLmxvY2tlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnMoKTogVGFibGVDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPiwgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3N2Yy5jb2x1bW5zLCB0aGlzLl9zdmMuaGlkZGVuQ29sdW1uc10pXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogW1RhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1ucywgaGlkZGVuQ29sdW1uc10gPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBoaWRkZW5Db2x1bW5zO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbihjb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgICAoXykgPT4gdGhpcy5faGlkZGVuQ29sdW1ucy5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZ3JpZFRlbXBsYXRlQ29sdW1ucyA9IFRhYmxlVXRpbC5nZXRHcmlkVGVtcGxhdGVDb2x1bW5zKFxuICAgICAgICAgIHRoaXMuY29sdW1ucy5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuZGlzcGxheURhdGEucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRhdGEgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLmRpY3QucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRpY3QgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLnNjcm9sbEluZGV4XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKF8pID0+IHtcbiAgICAgICAgLy8gaWYgKHRoaXMudmlld3BvcnQgJiYgdGhpcy5kYXRhU291cmNlICYmIF8gIT09IG51bGwpIHtcbiAgICAgICAgLy8gICBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuYWRhcHRlci5yZWxheCgpO1xuICAgICAgICAvLyAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5hZGFwdGVyLmZpeCh7XG4gICAgICAgIC8vICAgICBzY3JvbGxQb3NpdGlvbjogKF8gKyAxKSAqIDI0LFxuICAgICAgICAvLyAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICh0aGlzLnZpZXdwb3J0KSB7XG4gICAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KF8sICdzbW9vdGgnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5hY3RpdmVSb3dcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoXykgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IF87XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0QWN0aXZlUm93KHJvdzogVGFibGVSb3c8VD4pIHtcbiAgICB0aGlzLl9zdmMuc2V0QWN0aXZlUm93KHJvdyk7XG4gIH1cblxuICBnZXREYXRhID0gKGluZGV4LCBjb3VudCwgc3VjY2VzcykgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGluZGV4KTtcbiAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGluZGV4ICsgY291bnQgLSAxLCB0aGlzLmRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgZGF0YS5wdXNoKHRoaXMuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKGRhdGEpO1xuICB9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbjogVGFibGVDb2x1bW4pOiBudW1iZXIge1xuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuc3VtKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdW0oY29sdW1uLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLmF2Zykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VtKGNvbHVtbi5uYW1lKSAvIHRoaXMuZGF0YS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNaW4oY29sdW1uLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1heCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWF4KGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbjogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuc3VtKSB7XG4gICAgICByZXR1cm4gJ9Ch0YPQvNC80LA9JztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiAn0KHRgNC10LTQvdC10LU9JztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5taW4pIHtcbiAgICAgIHJldHVybiAn0JzQuNC9PSc7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWF4KSB7XG4gICAgICByZXR1cm4gJ9Cc0LDQutGBPSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldFNwYW4oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5sb2NrZWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzcGFuID0gdGhpcy5sb2NrZWQubGVuZ3RoO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0VHlwZSAhPT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICAgIHNwYW4gKz0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgc3BhbiAke3NwYW59YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRUZW1wbGF0ZUNvbHVtbnMoKSB7XG4gICAgbGV0IHRlbXBsYXRlID0gdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW5zO1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgdGVtcGxhdGUgPSBgNDhweCAke3RlbXBsYXRlfWA7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIGdldExvY2tlZEdyaWRUZW1wbGF0ZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIGxldCB0ZW1wbGF0ZSA9IFRhYmxlVXRpbC5nZXRHcmlkVGVtcGxhdGVDb2x1bW5zKGNvbHVtbnMpO1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgdGVtcGxhdGUgPSBgNDhweCAke3RlbXBsYXRlfWA7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHRyYWNrUm93KGluZGV4OiBudW1iZXIsIHJvdzogVGFibGVSb3c8VD4pOiBhbnkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHRyYWNrQ29sdW1ucyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogYW55IHtcbiAgICByZXR1cm4gY29sdW1uLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldFN1bShjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKChhY2N1bSwgY3VycmVudCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChjdXJyZW50LmRhdGFbY29sdW1uTmFtZV0pO1xuICAgICAgcmV0dXJuIGFjY3VtICsgKGlzTmFOKHZhbCkgPyAwIDogdmFsKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluKGNvbHVtbk5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnJlbnQpID0+XG4gICAgICAgIGFjY3VtICE9IG51bGwgJiYgYWNjdW0gPD0gY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE1heChjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKFxuICAgICAgKGFjY3VtLCBjdXJyZW50KSA9PlxuICAgICAgICBhY2N1bSAhPSBudWxsICYmIGFjY3VtID49IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXVxuICAgICAgICAgID8gYWNjdW1cbiAgICAgICAgICA6IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEFkYXB0ZXIoKSB7XG4gICAgYXdhaXQgdGhpcy5kYXRhU291cmNlLmFkYXB0ZXIucmVsYXgoKTtcbiAgICBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuYWRhcHRlci5yZXNldCh7XG4gICAgICBnZXQ6IHRoaXMuZ2V0RGF0YSxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIG1pbkluZGV4OiAwLFxuICAgICAgICBtYXhJbmRleDogdGhpcy5fZGF0YT8ubGVuZ3RoID8gdGhpcy5fZGF0YS5sZW5ndGggLSAxIDogMCxcbiAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgaXRlbVNpemU6IDI0LFxuICAgICAgICBzaXplU3RyYXRlZ3k6IFNpemVTdHJhdGVneS5Db25zdGFudCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5kYXRhU291cmNlLmFkYXB0ZXIuY2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWRhcHRlcigpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgRGF0YXNvdXJjZTxUYWJsZVJvdzxUPj4oe1xuICAgICAgZ2V0OiB0aGlzLmdldERhdGEsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBzdGFydEluZGV4OiAwLFxuICAgICAgICBidWZmZXJTaXplOiAyLFxuICAgICAgICBzaXplU3RyYXRlZ3k6IFNpemVTdHJhdGVneS5Db25zdGFudCxcbiAgICAgICAgaXRlbVNpemU6IDI0LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLTxkaXYgI3ZpZXdwb3J0IGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXIgdGFibGUtYm9keS1jb250YWluZXItdmlydHVhbFwiLS0+XG48IS0tICAgICAqbmdJZj1cInZpcnR1YWxcIi0tPlxuPCEtLSAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJnZXRUZW1wbGF0ZUNvbHVtbnMoKVwiLS0+XG48IS0tICAgICBzdHlsZT1cImhlaWdodDogMTAwJTtcIj4tLT5cbjwhLS0gIDxuZy1jb250YWluZXItLT5cbjwhLS0gICAgKnVpU2Nyb2xsPVwibGV0IHJvdyBvZiBkYXRhU291cmNlOyBsZXQgcm93SW5kZXggPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0O1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWdyb3c6IDFcIj4tLT5cbjwhLS0gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+LS0+XG48IS0tICA8L25nLWNvbnRhaW5lcj4tLT5cbjwhLS0gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGVcIj4tLT5cbjwhLS0gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFnZ1RlbXBsYXRlO1wiPjwvbmctY29udGFpbmVyPi0tPlxuPCEtLSAgPC9uZy1jb250YWluZXI+LS0+XG48IS0tPC9kaXY+LS0+XG5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhCdWZmZXJQeF09XCI2MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluQnVmZmVyUHhdPVwiMjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIjI0XCI+XG4gIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcm93IG9mIGRhdGE7dGVtcGxhdGVDYWNoZVNpemU6IDA7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja1JvdztcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlOyBjb250ZXh0OiB7cm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuXG48ZGl2ICpuZ0lmPVwiIXZpcnR1YWxcIlxuICAgICBjbGFzcz1cInRhYmxlLWJvZHktY29udGFpbmVyXCJcbiAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtcm93c109XCJyb3dIZWlnaHQgKyAncHgnXCJcbiAgICAgW3N0eWxlLmdyaWQtYXV0by1yb3dzXT1cInJvd0hlaWdodCArICdweCdcIlxuICAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImdldFRlbXBsYXRlQ29sdW1ucygpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tSb3c7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFnZ1RlbXBsYXRlO1wiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVJvdyhyb3cpXCJcbiAgICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICAgW25nQ2xhc3NdPVwicm93Q2xhc3MgPyByb3dDbGFzcyhyb3csIHJvd0luZGV4KSA6ICcnXCJcbiAgICAgICBbY2xhc3MudGFibGUtcm93X3ZpcnR1YWxdPVwidmlydHVhbFwiXG4gICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJ2aXJ0dWFsID8gZ2V0VGVtcGxhdGVDb2x1bW5zKCkgOiAnJ1wiXG4gICAgICAgW2NsYXNzLnRhYmxlLXJvd19hY3RpdmVdPVwicm93ID09PSBhY3RpdmVSb3cgfHwgc2VsZWN0ZWRSb3dzLmluZGV4T2Yocm93KSA+PSAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cGluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgICAqbmdJZj1cImxvY2tlZC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJnZXRMb2NrZWRHcmlkVGVtcGxhdGVDb2x1bW5zKGxvY2tlZClcIlxuICAgICAgICAgICBbc3R5bGUuekluZGV4XT1cInJvdyA9PT0gYWN0aXZlUm93ID8gMSA6ICd1bnNldCdcIlxuICAgICAgICAgICBbc3R5bGUuZ3JpZC1jb2x1bW4tZW5kXT1cImdldFNwYW4oKVwiPlxuICAgICAgICA8dGV0YS1zZWxlY3Rpb24tY2VsbCAqbmdJZj1cInNlbGVjdFR5cGUgIT09IHNlbGVjdFR5cGVFbnVtLm5vbmUgJiYgbG9ja2VkLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCI+PC90ZXRhLXNlbGVjdGlvbi1jZWxsPlxuICAgICAgICA8dGV0YS1jZWxsXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBsb2NrZWQ7IGxldCBjb2xJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0NvbHVtbnM7XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJkaWN0W2NvbHVtbi5uYW1lXVwiXG4gICAgICAgICAgW2RpY3RdPVwiZGljdFwiXG4gICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICA+PC90ZXRhLWNlbGw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx0ZXRhLXNlbGVjdGlvbi1jZWxsICpuZ0lmPVwic2VsZWN0VHlwZSAhPT0gc2VsZWN0VHlwZUVudW0ubm9uZSAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiPjwvdGV0YS1zZWxlY3Rpb24tY2VsbD5cbiAgICAgIDx0ZXRhLWNlbGxcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB1bmxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJkaWN0W2NvbHVtbi5uYW1lXVwiXG4gICAgICAgIFtkaWN0XT1cImRpY3RcIlxuICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgID48L3RldGEtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBpbmdcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FnZ1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAqbmdJZj1cImFnZ3JlZ2F0ZVwiXG4gICAgICAgW2NsYXNzLnRhYmxlLXJvd192aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwidmlydHVhbCA/IGdldFRlbXBsYXRlQ29sdW1ucygpIDogJydcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93X2xvY2tlZFwiXG4gICAgICAgICAqbmdJZj1cImxvY2tlZC5sZW5ndGggPiAwXCJcbiAgICAgICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwiZ2V0TG9ja2VkR3JpZFRlbXBsYXRlQ29sdW1ucyhsb2NrZWQpXCJcbiAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbi1lbmRdPVwiZ2V0U3BhbigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidzdW1Db2xvcidcIj48L3RldGEtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNlbGwgY2VsbC1jb21wb25lbnQganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxDbGFzc1wiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjZWxsLXRleHQgY2VsbC10ZXh0X251bWVyaWMgZm9udC10aXRsZS0zXCI+XG4gICAgICAgICAge3tnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbil9fTpcbiAgICAgICAgICB7e2dldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbikgfCB0ZXRhTnVtYmVyIDogMn19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjZWxsIGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICpuZ0lmPVwic2VsZWN0VHlwZSAhPT0gc2VsZWN0VHlwZUVudW0ubm9uZSAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiPlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInc3VtQ29sb3InXCI+PC90ZXRhLWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNlbGwgY2VsbC1jb21wb25lbnQganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHVubG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2VsbC10ZXh0IGNlbGwtdGV4dF9udW1lcmljIGZvbnQtdGl0bGUtM1wiPlxuICAgICAgICB7e2dldEFnZ3JlZ2F0ZVRleHQoY29sdW1uKX19XG4gICAgICAgIHt7Z2V0QWdncmVnYXRlVmFsdWUoY29sdW1uKSB8IHRldGFOdW1iZXIgOiAyfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBQyxVQUFVLEVBQWUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLGtCQUFrQjtJQXVEN0IsWUFBb0IsSUFBcUIsRUFBVSxJQUF1QjtRQUF0RCxTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBeEN4QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQWlCeEUsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pD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Z0JBQ1IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRO2dCQUNuQyxRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBcFBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdkQWFsQix3QkFBd0IsZ0RDL0NyQyxpMUtBeUhBOzJGRHZGYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07bUlBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVnRCxRQUFRO3NCQUE3RCxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFRixjQUFjO3NCQUEvRCxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtcm93JztcbmltcG9ydCB7VGFibGVDb2x1bW59IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQge0dyb3VwUm93Q29tcG9uZW50QmFzZX0gZnJvbSAnLi4vYmFzZS9ncm91cC1yb3ctY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge0RldGFpbENvbXBvbmVudEJhc2V9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7dGFrZVdoaWxlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RhYmxlVXRpbH0gZnJvbSAnLi4vdXRpbC90YWJsZS11dGlsJztcbmltcG9ydCB7U2VsZWN0VHlwZX0gZnJvbSAnLi4vZW51bS9zZWxlY3QtdHlwZS5lbnVtJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FycmF5VXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQge0lEaWN0aW9uYXJ5fSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1kaWN0aW9uYXJ5JztcbmltcG9ydCB7SUlkTmFtZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktaWQtbmFtZSc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uVHlwZX0gZnJvbSAnLi4vZW51bS9hZ2dyZWdhdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHtEYXRhc291cmNlLCBJRGF0YXNvdXJjZSwgU2l6ZVN0cmF0ZWd5fSBmcm9tICduZ3gtdWktc2Nyb2xsJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWJsZS1ib2R5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1ib2R5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUJvZHlDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFjdGl2ZVJvdzogVGFibGVSb3c8VD47XG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyO1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQ29tcG9uZW50OiBUeXBlPERldGFpbENvbXBvbmVudEJhc2U8VD4+O1xuICBASW5wdXQoKSB0cmVlOiBib29sZWFuO1xuICBASW5wdXQoKSBhZ2dyZWdhdGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBncm91cFJvd0NvbXBvbmVudDogVHlwZTxHcm91cFJvd0NvbXBvbmVudEJhc2U8VD4+O1xuICBASW5wdXQoKSBvcGVuTGV2ZWxzOiBudW1iZXI7XG4gIEBJbnB1dCgpIHNlbGVjdFR5cGU6IFNlbGVjdFR5cGU7XG4gIEBJbnB1dCgpIHJvd0NsYXNzOiAocm93OiBUYWJsZVJvdzxUPiwgaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZztcblxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwge3N0YXRpYzogZmFsc2V9KSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtYm9keScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVCb2R5Q2xhc3MgPSB0cnVlO1xuXG4gIHNldCBkYXRhKGRhdGE6IFRhYmxlUm93PFQ+W10pIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5jcmVhdGVBZGFwdGVyKCk7XG4gICAgfVxuICAgIHRoaXMucmVzZXRBZGFwdGVyKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcblxuICBncmlkVGVtcGxhdGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlbGVjdGVkUm93czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICBsb2NrZWQ6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgdW5sb2NrZWQ6IFRhYmxlQ29sdW1uW10gPSBbXTtcblxuICBzZWxlY3RUeXBlRW51bSA9IFNlbGVjdFR5cGU7XG4gIGRhdGFTb3VyY2U6IElEYXRhc291cmNlPFRhYmxlUm93PFQ+PjtcblxuICBwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZGF0YTogVGFibGVSb3c8VD5bXTtcbiAgcHJpdmF0ZSBfaGlkZGVuQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcjtcblxuICBzZXQgY29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5sb2NrZWQgPSB0aGlzLl9jb2x1bW5zPy5maWx0ZXIoKF8pID0+IF8ubG9ja2VkID09PSB0cnVlKTtcbiAgICB0aGlzLnVubG9ja2VkID0gdGhpcy5fY29sdW1ucz8uZmlsdGVyKChfKSA9PiBfLmxvY2tlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnMoKTogVGFibGVDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPiwgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3N2Yy5jb2x1bW5zLCB0aGlzLl9zdmMuaGlkZGVuQ29sdW1uc10pXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogW1RhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1ucywgaGlkZGVuQ29sdW1uc10gPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBoaWRkZW5Db2x1bW5zO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbihjb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgICAoXykgPT4gdGhpcy5faGlkZGVuQ29sdW1ucy5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZ3JpZFRlbXBsYXRlQ29sdW1ucyA9IFRhYmxlVXRpbC5nZXRHcmlkVGVtcGxhdGVDb2x1bW5zKFxuICAgICAgICAgIHRoaXMuY29sdW1ucy5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuZGlzcGxheURhdGEucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRhdGEgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLmRpY3QucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRpY3QgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLnNjcm9sbEluZGV4XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKF8pID0+IHtcbiAgICAgICAgLy8gaWYgKHRoaXMudmlld3BvcnQgJiYgdGhpcy5kYXRhU291cmNlICYmIF8gIT09IG51bGwpIHtcbiAgICAgICAgLy8gICBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuYWRhcHRlci5yZWxheCgpO1xuICAgICAgICAvLyAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5hZGFwdGVyLmZpeCh7XG4gICAgICAgIC8vICAgICBzY3JvbGxQb3NpdGlvbjogKF8gKyAxKSAqIDI0LFxuICAgICAgICAvLyAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICh0aGlzLnZpZXdwb3J0KSB7XG4gICAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KF8sICdzbW9vdGgnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5hY3RpdmVSb3dcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoXykgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IF87XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0QWN0aXZlUm93KHJvdzogVGFibGVSb3c8VD4pIHtcbiAgICB0aGlzLl9zdmMuc2V0QWN0aXZlUm93KHJvdyk7XG4gIH1cblxuICBnZXREYXRhID0gKGluZGV4LCBjb3VudCwgc3VjY2VzcykgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGluZGV4KTtcbiAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGluZGV4ICsgY291bnQgLSAxLCB0aGlzLmRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgZGF0YS5wdXNoKHRoaXMuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzKGRhdGEpO1xuICB9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbjogVGFibGVDb2x1bW4pOiBudW1iZXIge1xuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuc3VtKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdW0oY29sdW1uLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLmF2Zykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VtKGNvbHVtbi5uYW1lKSAvIHRoaXMuZGF0YS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNaW4oY29sdW1uLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1heCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWF4KGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbjogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuc3VtKSB7XG4gICAgICByZXR1cm4gJ9Ch0YPQvNC80LA9JztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiAn0KHRgNC10LTQvdC10LU9JztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5taW4pIHtcbiAgICAgIHJldHVybiAn0JzQuNC9PSc7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWF4KSB7XG4gICAgICByZXR1cm4gJ9Cc0LDQutGBPSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldFNwYW4oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5sb2NrZWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzcGFuID0gdGhpcy5sb2NrZWQubGVuZ3RoO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0VHlwZSAhPT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICAgIHNwYW4gKz0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgc3BhbiAke3NwYW59YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRUZW1wbGF0ZUNvbHVtbnMoKSB7XG4gICAgbGV0IHRlbXBsYXRlID0gdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW5zO1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgdGVtcGxhdGUgPSBgNDhweCAke3RlbXBsYXRlfWA7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIGdldExvY2tlZEdyaWRUZW1wbGF0ZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIGxldCB0ZW1wbGF0ZSA9IFRhYmxlVXRpbC5nZXRHcmlkVGVtcGxhdGVDb2x1bW5zKGNvbHVtbnMpO1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgdGVtcGxhdGUgPSBgNDhweCAke3RlbXBsYXRlfWA7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHRyYWNrUm93KGluZGV4OiBudW1iZXIsIHJvdzogVGFibGVSb3c8VD4pOiBhbnkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHRyYWNrQ29sdW1ucyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogYW55IHtcbiAgICByZXR1cm4gY29sdW1uLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldFN1bShjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKChhY2N1bSwgY3VycmVudCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChjdXJyZW50LmRhdGFbY29sdW1uTmFtZV0pO1xuICAgICAgcmV0dXJuIGFjY3VtICsgKGlzTmFOKHZhbCkgPyAwIDogdmFsKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluKGNvbHVtbk5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnJlbnQpID0+XG4gICAgICAgIGFjY3VtICE9IG51bGwgJiYgYWNjdW0gPD0gY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE1heChjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKFxuICAgICAgKGFjY3VtLCBjdXJyZW50KSA9PlxuICAgICAgICBhY2N1bSAhPSBudWxsICYmIGFjY3VtID49IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXVxuICAgICAgICAgID8gYWNjdW1cbiAgICAgICAgICA6IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEFkYXB0ZXIoKSB7XG4gICAgYXdhaXQgdGhpcy5kYXRhU291cmNlLmFkYXB0ZXIucmVsYXgoKTtcbiAgICBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuYWRhcHRlci5yZXNldCh7XG4gICAgICBnZXQ6IHRoaXMuZ2V0RGF0YSxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIG1pbkluZGV4OiAwLFxuICAgICAgICBtYXhJbmRleDogdGhpcy5fZGF0YT8ubGVuZ3RoID8gdGhpcy5fZGF0YS5sZW5ndGggLSAxIDogMCxcbiAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgaXRlbVNpemU6IDI0LFxuICAgICAgICBzaXplU3RyYXRlZ3k6IFNpemVTdHJhdGVneS5Db25zdGFudCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5kYXRhU291cmNlLmFkYXB0ZXIuY2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWRhcHRlcigpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgRGF0YXNvdXJjZTxUYWJsZVJvdzxUPj4oe1xuICAgICAgZ2V0OiB0aGlzLmdldERhdGEsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBzdGFydEluZGV4OiAwLFxuICAgICAgICBidWZmZXJTaXplOiAyLFxuICAgICAgICBzaXplU3RyYXRlZ3k6IFNpemVTdHJhdGVneS5Db25zdGFudCxcbiAgICAgICAgaXRlbVNpemU6IDI0LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLTxkaXYgI3ZpZXdwb3J0IGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXIgdGFibGUtYm9keS1jb250YWluZXItdmlydHVhbFwiLS0+XG48IS0tICAgICAqbmdJZj1cInZpcnR1YWxcIi0tPlxuPCEtLSAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJnZXRUZW1wbGF0ZUNvbHVtbnMoKVwiLS0+XG48IS0tICAgICBzdHlsZT1cImhlaWdodDogMTAwJTtcIj4tLT5cbjwhLS0gIDxuZy1jb250YWluZXItLT5cbjwhLS0gICAgKnVpU2Nyb2xsPVwibGV0IHJvdyBvZiBkYXRhU291cmNlOyBsZXQgcm93SW5kZXggPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0O1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWdyb3c6IDFcIj4tLT5cbjwhLS0gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+LS0+XG48IS0tICA8L25nLWNvbnRhaW5lcj4tLT5cbjwhLS0gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGVcIj4tLT5cbjwhLS0gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFnZ1RlbXBsYXRlO1wiPjwvbmctY29udGFpbmVyPi0tPlxuPCEtLSAgPC9uZy1jb250YWluZXI+LS0+XG48IS0tPC9kaXY+LS0+XG5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCIyNFwiPlxuICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhO3RlbXBsYXRlQ2FjaGVTaXplOiAwOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tSb3c7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cblxuPGRpdiAqbmdJZj1cIiF2aXJ0dWFsXCJcbiAgICAgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLXJvd3NdPVwicm93SGVpZ2h0ICsgJ3B4J1wiXG4gICAgIFtzdHlsZS5ncmlkLWF1dG8tcm93c109XCJyb3dIZWlnaHQgKyAncHgnXCJcbiAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJnZXRUZW1wbGF0ZUNvbHVtbnMoKVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YTsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrUm93O1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5VGVtcGxhdGU7IGNvbnRleHQ6IHtyb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZ2dUZW1wbGF0ZTtcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVSb3cocm93KVwiXG4gICAgICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgICAgIFtuZ0NsYXNzXT1cInJvd0NsYXNzID8gcm93Q2xhc3Mocm93LCByb3dJbmRleCkgOiAnJ1wiXG4gICAgICAgW2NsYXNzLnRhYmxlLXJvd192aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwidmlydHVhbCA/IGdldFRlbXBsYXRlQ29sdW1ucygpIDogJydcIlxuICAgICAgIFtjbGFzcy50YWJsZS1yb3dfYWN0aXZlXT1cInJvdyA9PT0gYWN0aXZlUm93IHx8IHNlbGVjdGVkUm93cy5pbmRleE9mKHJvdykgPj0gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dfbG9ja2VkXCJcbiAgICAgICAgICAgKm5nSWY9XCJsb2NrZWQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwiZ2V0TG9ja2VkR3JpZFRlbXBsYXRlQ29sdW1ucyhsb2NrZWQpXCJcbiAgICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJyb3cgPT09IGFjdGl2ZVJvdyA/IDEgOiAndW5zZXQnXCJcbiAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uLWVuZF09XCJnZXRTcGFuKClcIj5cbiAgICAgICAgPHRldGEtc2VsZWN0aW9uLWNlbGwgKm5nSWY9XCJzZWxlY3RUeXBlICE9PSBzZWxlY3RUeXBlRW51bS5ub25lICYmIGxvY2tlZC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiPjwvdGV0YS1zZWxlY3Rpb24tY2VsbD5cbiAgICAgICAgPHRldGEtY2VsbFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgW2ZpbHRlck9wdGlvbnNdPVwiZGljdFtjb2x1bW4ubmFtZV1cIlxuICAgICAgICAgIFtkaWN0XT1cImRpY3RcIlxuICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgPjwvdGV0YS1jZWxsPlxuICAgICAgPC9kaXY+XG4gICAgICA8dGV0YS1zZWxlY3Rpb24tY2VsbCAqbmdJZj1cInNlbGVjdFR5cGUgIT09IHNlbGVjdFR5cGVFbnVtLm5vbmUgJiYgbG9ja2VkLmxlbmd0aCA8IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIj48L3RldGEtc2VsZWN0aW9uLWNlbGw+XG4gICAgICA8dGV0YS1jZWxsXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdW5sb2NrZWQ7IGxldCBjb2xJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0NvbHVtbnM7XCJcbiAgICAgICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW2ZpbHRlck9wdGlvbnNdPVwiZGljdFtjb2x1bW4ubmFtZV1cIlxuICAgICAgICBbZGljdF09XCJkaWN0XCJcbiAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICA+PC90ZXRhLWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwaW5nXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZ2dUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgKm5nSWY9XCJhZ2dyZWdhdGVcIlxuICAgICAgIFtjbGFzcy50YWJsZS1yb3dfdmlydHVhbF09XCJ2aXJ0dWFsXCJcbiAgICAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cInZpcnR1YWwgPyBnZXRUZW1wbGF0ZUNvbHVtbnMoKSA6ICcnXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgKm5nSWY9XCJsb2NrZWQubGVuZ3RoID4gMFwiXG4gICAgICAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImdldExvY2tlZEdyaWRUZW1wbGF0ZUNvbHVtbnMobG9ja2VkKVwiXG4gICAgICAgICBbc3R5bGUuZ3JpZC1jb2x1bW4tZW5kXT1cImdldFNwYW4oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInc3VtQ29sb3InXCI+PC90ZXRhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2VsbC10ZXh0IGNlbGwtdGV4dF9udW1lcmljIGZvbnQtdGl0bGUtM1wiPlxuICAgICAgICAgIHt7Z2V0QWdncmVnYXRlVGV4dChjb2x1bW4pfX06XG4gICAgICAgICAge3tnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW4pIHwgdGV0YU51bWJlciA6IDJ9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAqbmdJZj1cInNlbGVjdFR5cGUgIT09IHNlbGVjdFR5cGVFbnVtLm5vbmUgJiYgbG9ja2VkLmxlbmd0aCA8IDFcIj5cbiAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ3N1bUNvbG9yJ1wiPjwvdGV0YS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB1bmxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxDbGFzc1wiXG4gICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNlbGwtdGV4dCBjZWxsLXRleHRfbnVtZXJpYyBmb250LXRpdGxlLTNcIj5cbiAgICAgICAge3tnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbil9fVxuICAgICAgICB7e2dldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbikgfCB0ZXRhTnVtYmVyIDogMn19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|