awf-test-lib 0.0.38 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/shared/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2020/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.mjs +3 -3
- package/esm2020/lib/shared/confirmed-date-information/confirmed-date-information.component.mjs +3 -3
- package/esm2020/lib/shared/contact/contact.component.mjs +13 -6
- package/esm2020/lib/shared/contact-support/contact-support.component.mjs +2 -2
- package/esm2020/lib/shared/maintenance-list/maintenance-list.component.mjs +6 -6
- package/esm2020/lib/shared/show-links/show-links.component.mjs +3 -3
- package/fesm2015/awf-test-lib.mjs +26 -19
- package/fesm2015/awf-test-lib.mjs.map +1 -1
- package/fesm2020/awf-test-lib.mjs +26 -19
- package/fesm2020/awf-test-lib.mjs.map +1 -1
- package/lib/shared/contact/contact.component.d.ts +1 -0
- package/lib/shared/maintenance-list/maintenance-list.component.d.ts +2 -1
- package/package.json +1 -1
@@ -67,7 +67,7 @@ export class ContactSupportComponent {
|
|
67
67
|
phone: [phone !== 'null' ? phone : '', [Validators.required]],
|
68
68
|
reason: [{ value: '', disabled: ((this.reasonContact === ReasonContact.CancelFormPm) || (this.reasonContact === ReasonContact.MoreDatesFormPm)) }, [Validators.required]],
|
69
69
|
system: [{ value: this.detailedPmJob.systemName + ' ' + this.detailedPmJob.systemId, disabled: true }, [Validators.required]],
|
70
|
-
workOrder: [{ value: this.detailedPmJob.pmJob.
|
70
|
+
workOrder: [{ value: this.detailedPmJob.pmJob.workorderNumber, disabled: true }, [Validators.required]],
|
71
71
|
message: ['', (this.reasonContact === ReasonContact.MoreDatesFormPm) ? [] : [Validators.required, Validators.minLength(15)]],
|
72
72
|
});
|
73
73
|
}
|
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
|
|
134
134
|
}], closeContactSupport: [{
|
135
135
|
type: Output
|
136
136
|
}] } });
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0QsTUFBTSxPQUFPLHVCQUF1QjtJQXFCaEMsWUFBb0IsY0FBOEIsRUFBUyxXQUF3QjtRQUEvRCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWJ6RSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHNUQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBSWlFLENBQUM7SUFDeEYsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBR0QsUUFB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QUFPO2dCQUNoQixNQUFNLEVBQUUscUJBQXFCO2FBQ2hDLENBQUMsQ0FBQztZQUNILE9BQU87U0FDVjtRQUNELElBQUksQ0FBRSxTQUFTLEVBQUUsQ0FBQztJQUdwQixDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQ3ZDO1lBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQzs7b0hBNUlRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGlZQUpyQixDQUFDLGNBQWMsQ0FBQywrQ0NWL0IsaXdVQTZIeUM7MkZEL0c1Qix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0kscUJBQXFCLGFBR3BCLENBQUMsY0FBYyxDQUFDOytIQUtsQixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEZXRhaWxlZFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RldGFpbGVkUG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWFzb25Db250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbkNvbnRhY3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jb250YWN0LXN1cHBvcnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3Qtc3VwcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb250YWN0LXN1cHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICAgXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFjdFN1cHBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBPbkNoYW5nZXMgIHtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXljb250YWN0U3VwcG9ydCE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzaG93RGF0ZSE6Ym9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRldGFpbGVkUG1Kb2IhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgQElucHV0KCkgcmVhc29uQ29udGFjdCE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJlYXNvbnMhOiBhbnk7XHJcbiAgICBAT3V0cHV0KCkgc2VuZERldGFpbGVkUG0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2xvc2VDb250YWN0U3VwcG9ydCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgICBkYXRlcyE6IERhdGVbXTtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgbWluRGF0ZSE6IERhdGU7XHJcbiAgICBtYXhEYXRlITogRGF0ZTtcclxuICAgIGRpc3BsYXlOdW1iZXIgPSBmYWxzZTtcclxuICAgXHJcbiAgICBzZWxlY3RlZFJlYXNvbiE6IFJlYXNvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlIDpNZXNzYWdlU2VydmljZSxwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikgeyB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2FkRGF0YXMoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZERhdGFzKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWREYXRhcygpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5yZWFzb25zICYmIHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVhc29uID0gdGhpcy5yZWFzb25zWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnJlYXNvbnMgJiYgdGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNhbmNlbEZvcm1QbSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWFzb24gPSB0aGlzLnJlYXNvbnNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2V0RGF0ZVJ1bGVzKCkgO1xyXG4gICAgICAgIHRoaXMubG9hZEZvcm0oKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsQ29udGFjdFN1cHBvcnQoKSB7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2VDb250YWN0U3VwcG9ydC5lbWl0KHRydWUpO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IHRoaXMuZ2xvYmFsdHJhbnNsYXRlLnN1bW1hcnlSZWplY3QsIGRldGFpbDogdGhpcy5nbG9iYWx0cmFuc2xhdGUuZGV0YWlsUmVqZWN0IH0pO1xyXG5cclxuICAgICAgICBcclxuXHJcbiAgICB9XHJcbiAgICBnZXQgZigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc2V0RGF0ZVJ1bGVzKCkge1xyXG4gICAgICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICBsZXQgeWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IHByZXZNb250aCA9IChtb250aCA9PT0gMCkgPyAxMSA6IG1vbnRoIC0gMTtcclxuICAgICAgICBsZXQgcHJldlllYXIgPSAocHJldk1vbnRoID09PSAxMSkgPyB5ZWFyIC0gMSA6IHllYXI7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgobW9udGgpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihwcmV2WWVhcik7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRGb3JtKCkge1xyXG4gICAgICAgIGxldCBuYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlck5hbWUnKSBhcyBzdHJpbmcgIDtcclxuICAgICAgICBsZXQgZW1haWwgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbWFpbCcpIGFzIHN0cmluZztcclxuICAgICAgICBsZXQgcGhvbmUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtb2JpbGVQaG9uZU51bWJlcicpIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIG5hbWU6IFsgIG5hbWUgIT09ICdudWxsJyA/IG5hbWUgOiAnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV1dLFxyXG4gICAgICAgICAgICBlbWFpbDogWyBlbWFpbCE9PSAnbnVsbCcgPyBlbWFpbCAgOiAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcclxuICAgICAgICAgICAgcGhvbmU6IFsgcGhvbmUhPT0gJ251bGwnID8gcGhvbmUgIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHJlYXNvbjogW3t2YWx1ZTogJycgLCBkaXNhYmxlZDogKCh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKXx8KHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pKX0gLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBzeXN0ZW06IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2Iuc3lzdGVtTmFtZSArICcgJyArIHRoaXMuZGV0YWlsZWRQbUpvYi5zeXN0ZW1JZCwgZGlzYWJsZWQ6IHRydWV9ICAgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICB3b3JrT3JkZXI6IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2IucG1Kb2Iud29ya29yZGVySWQgLCBkaXNhYmxlZDogdHJ1ZX0gICAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFsnJywgKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTUpXV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29udGFjdGVkKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnNlbmRDb250YWN0TWVFbWFpbE1ldGhvZGUoKTtcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIGNvbnRhY3QoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU51bWJlciA9IHRydWU7XHJcbiAgICBcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZU51bWJlcigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZENvbnRhY3RNZUVtYWlsTWV0aG9kZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLm5hbWUgPSB0aGlzLmZvcm0udmFsdWUubmFtZTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IucGhvbmUgPSB0aGlzLmZvcm0udmFsdWUucGhvbmU7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLmVtYWlsID0gdGhpcy5mb3JtLnZhbHVlLmVtYWlsO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5yZWFzb24gPSAodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSkgPyB0aGlzLnJlYXNvbnNbMF0ubmFtZSA6ICh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKSA/IHRoaXMucmVhc29uc1syXS5uYW1lIDogdGhpcy5mb3JtLnZhbHVlLnJlYXNvbi5uYW1lO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5jb21tZW50ID0gdGhpcy5mb3JtLnZhbHVlLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLnJlYXNvbkNvbnRhY3QgPSB0aGlzLnJlYXNvbkNvbnRhY3QgO1xyXG4gICAgICAgIHRoaXMuc2VuZERldGFpbGVkUG0uZW1pdCggdGhpcy5kZXRhaWxlZFBtSm9iKTtcclxuICAgIH1cclxuXHJcbiAgICBvblN1Ym1pdCgpIHtcclxuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiAnVGhlIGZvcm0gaXMgaW52YWxpZCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuIGNvbnRhY3RlZCgpO1xyXG5cclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgcHJldmVudFN0cmluZ0tleXByZXNzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGlzTmFOKE51bWJlcihTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSkpIHx8XHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpID09PSAnICdcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5pbnRlcmZhY2UgUmVhc29uIHtcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGNvZGU6IHN0cmluZ1xyXG59XHJcblxyXG4iLCI8cC1kaWFsb2cgaGVhZGVyPVwiXCIgW21vZGFsXT1cInRydWVcIiBbKHZpc2libGUpXT1cImRpc3BsYXljb250YWN0U3VwcG9ydFwiICBbbWF4aW1pemFibGVdPVwidHJ1ZVwiIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc5MDBweCcsaGVpZ2h0OicxNDAwcHgnfVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cInRydWVcIiAob25IaWRlKT1cImNhbmNlbENvbnRhY3RTdXBwb3J0KClcIj5cclxuICAgIDxzdHJvbmc+XHJcbiAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0aXRsZVwiPiB7e3RyYW5zbGF0ZS5oZWFkZXJ9fSA8L2gzPlxyXG4gIDwvc3Ryb25nPlxyXG4gICAgPGJyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInRyYW5zbGF0ZSAmJiBmb3JtICYmIHJlYXNvbnMgXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNhcmQtYmdcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV1ciBjb250YWN0LWJsb2NcIiBbc3R5bGVdPVwie2hlaWdodDonMTUwcHgnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL3Bob25lLWNhbGwtLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnRlciBjb250YWN0LWljb24gdGV4dC1jZW50ZXIgbXQtNFwiPnt7dHJhbnNsYXRlLmNvbnRhY3RlZH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm1cIiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybSB2YWxpZGF0ZS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLXRpdGxlXCI+e3t0cmFuc2xhdGUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPiogPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm5hbWUuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubmFtZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWROYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmVtYWlsLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMuZW1haWxcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZEVtYWlsRm9ybWF0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucGhvbmUuaW52YWxpZCB9XCIgKGtleXByZXNzKT1cInByZXZlbnRTdHJpbmdLZXlwcmVzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucGhvbmUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5waG9uZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFBob25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnN5c3RlbX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUuc3lzdGVtXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInN5c3RlbVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5zeXN0ZW0uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYuc3lzdGVtLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuc3lzdGVtLmVycm9ycz8ucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS53b3JrT3JkZXJ9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj48L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUud29ya09yZGVyXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cIndvcmtPcmRlclwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi53b3JrT3JkZXIuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYud29ya09yZGVyLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYud29ya09yZGVyLmVycm9ycz8ucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5yZWFzb259fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlYXNvbnNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFJlYXNvblwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSZWFzb25cIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWFzb25cIiAgb3B0aW9uRGlzYWJsZWQ9XCJpbmFjdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5yZWFzb24uaW52YWxpZCB9XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5yZWFzb25cIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5pbnZhbGlkIH1cIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucmVhc29uLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucmVhc29uLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlYXNvblJlcXVpcmVkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLm1lc3NhZ2V9fSA8L3NwYW4+IDxzcGFuICpuZ0lmPVwiIHJlYXNvbkNvbnRhY3QgIT09J01vcmVEYXRlc0Zvcm1QbSdcIiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHBJbnB1dFRleHRhcmVhIHN0eWxlPVwiIG1pbi1oZWlnaHQ6MTAwcHg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLm1lc3NhZ2UgKycuLi4nXCIgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9ycyB9XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYubWVzc2FnZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5tZXNzYWdlLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE1lc3NhZ2VNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1jb250YWN0MTAwLWZvcm0tYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRhY3QxMDAtZm9ybS1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0tYmdidG5cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgW3BUb29sdGlwXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgW3BUb29sdGlwXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cImNvbnRhY3RlZCgpXCI+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNhcmQtYmdcIiAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRldXIgY29udGFjdC1ibG9jXCIgW3N0eWxlXT1cIntoZWlnaHQ6JzE1MHB4J31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgc3JjPVwiYXNzZXRzL2ltZy9HRVBvcnRhbC9waG9uZS1jYWxsZWQucG5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb3VudGVyIGNvbnRhY3QtaWNvbiB0ZXh0LWNlbnRlciBtdC00XCI+e3t0cmFuc2xhdGUuY29udGFjdH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cImQtYmxvY2sgbXgtYXV0b1wiIFtsYWJlbF09XCJ0cmFuc2xhdGUuc2VlTnVtYmVyXCIgaWNvbj1cInBpIHBpLWV5ZVwiIFtwVG9vbHRpcF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cImNvbnRhY3QoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9XCJodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9MjgzLCUyMFJ1ZSUyMERlJTIwbGElMjBNaW5pZXJlLUJQMzQlMjAlMjA3ODUzMyUyMEJVQyUyMCVFMiU4MCU5MyUyMENlZGV4JmFtcDt0PSZhbXA7ej0xMyZhbXA7aWU9VVRGOCZhbXA7aXdsb2M9JmFtcDtvdXRwdXQ9ZW1iZWRcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIyNTBcIiBzdHlsZT1cImJvcmRlcjowO1wiIGFsbG93ZnVsbHNjcmVlbj1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtNCBtdC0zXCI+IHt7dHJhbnNsYXRlLmluZm9ybWF0aW9ufX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWVudmVsb3BlXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmVtYWlsVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuZW1haWx9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktbWFwXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmFkZHJlc3NUZXh0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5hZHJlc3N9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUudG93bn19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5jb3VudHJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbjwvcC1kaWFsb2c+XHJcbjxwLWRpYWxvZyAqbmdJZj1cInRyYW5zbGF0ZVwiW2hlYWRlcl09XCJ0cmFuc2xhdGUuc2VydmljZUNlbnRlclBob25lVGV4dFwiIFttb2RhbF09XCJ0cnVlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5TnVtYmVyXCIgIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc0MDBweCcsaGVpZ2h0OicyMDBweCd9XCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwiZmFsc2VcIiAob25IaWRlKT1cImNsb3NlTnVtYmVyKClcIj5cclxuPGJyPlxyXG4gIDxoNCBjbGFzcz1cIm51bWJlclwiPiA8c3Ryb25nPiA8aSBjbGFzcz1cInBpIHBpLXBob25lXCI+PC9pPiAgJm5ic3A7e3t0cmFuc2xhdGUuY29udGFjdE51bWJlcn19PC9zdHJvbmc+PC9oND5cclxuPC9wLWRpYWxvZz5cclxuXHJcblxyXG48cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+Il19
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0QsTUFBTSxPQUFPLHVCQUF1QjtJQXFCaEMsWUFBb0IsY0FBOEIsRUFBUyxXQUF3QjtRQUEvRCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWJ6RSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHNUQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBSWlFLENBQUM7SUFDeEYsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBR0QsUUFBUTtRQUVKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUVyQixDQUFDO0lBRUQsU0FBUztRQUVMLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxlQUFlLEVBQ3ZFO1lBQ0ksSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLFlBQVksRUFDcEU7WUFDSSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUU7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRXBCLENBQUM7SUFFRCxvQkFBb0I7UUFFaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFJM0ksQ0FBQztJQUNELElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUlELFlBQVk7UUFDUixJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMvQyxJQUFJLFFBQVEsR0FBRyxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFXLENBQUc7UUFDMUQsSUFBSSxLQUFLLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQVcsQ0FBQztRQUN0RCxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFXLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLEtBQUssRUFBRSxDQUFFLEtBQUssS0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEYsS0FBSyxFQUFFLENBQUUsS0FBSyxLQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUQsTUFBTSxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFDLEVBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkssTUFBTSxFQUFFLENBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsRUFBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvSCxTQUFTLEVBQUUsQ0FBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUcsUUFBUSxFQUFFLElBQUksRUFBQyxFQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0gsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7UUFFTCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUVyQyxDQUFDO0lBQ0QsT0FBTztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBRTlCLENBQUM7SUFFRCxXQUFXO1FBRVAsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELHlCQUF5QjtRQUVyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDck4sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUU7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixNQUFNLEVBQUUscUJBQXFCO2FBQ2hDLENBQUMsQ0FBQztZQUNILE9BQU87U0FDVjtRQUNELElBQUksQ0FBRSxTQUFTLEVBQUUsQ0FBQztJQUdwQixDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQ3ZDO1lBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQzs7b0hBNUlRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGlZQUpyQixDQUFDLGNBQWMsQ0FBQywrQ0NWL0IsaXdVQTZIeUM7MkZEL0c1Qix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0kscUJBQXFCLGFBR3BCLENBQUMsY0FBYyxDQUFDOytIQUtsQixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEZXRhaWxlZFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RldGFpbGVkUG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWFzb25Db250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbkNvbnRhY3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jb250YWN0LXN1cHBvcnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3Qtc3VwcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb250YWN0LXN1cHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICAgXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFjdFN1cHBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBPbkNoYW5nZXMgIHtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXljb250YWN0U3VwcG9ydCE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzaG93RGF0ZSE6Ym9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRldGFpbGVkUG1Kb2IhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgQElucHV0KCkgcmVhc29uQ29udGFjdCE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJlYXNvbnMhOiBhbnk7XHJcbiAgICBAT3V0cHV0KCkgc2VuZERldGFpbGVkUG0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2xvc2VDb250YWN0U3VwcG9ydCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgICBkYXRlcyE6IERhdGVbXTtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgbWluRGF0ZSE6IERhdGU7XHJcbiAgICBtYXhEYXRlITogRGF0ZTtcclxuICAgIGRpc3BsYXlOdW1iZXIgPSBmYWxzZTtcclxuICAgXHJcbiAgICBzZWxlY3RlZFJlYXNvbiE6IFJlYXNvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlIDpNZXNzYWdlU2VydmljZSxwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikgeyB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2FkRGF0YXMoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZERhdGFzKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWREYXRhcygpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5yZWFzb25zICYmIHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVhc29uID0gdGhpcy5yZWFzb25zWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnJlYXNvbnMgJiYgdGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNhbmNlbEZvcm1QbSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWFzb24gPSB0aGlzLnJlYXNvbnNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2V0RGF0ZVJ1bGVzKCkgO1xyXG4gICAgICAgIHRoaXMubG9hZEZvcm0oKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsQ29udGFjdFN1cHBvcnQoKSB7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2VDb250YWN0U3VwcG9ydC5lbWl0KHRydWUpO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IHRoaXMuZ2xvYmFsdHJhbnNsYXRlLnN1bW1hcnlSZWplY3QsIGRldGFpbDogdGhpcy5nbG9iYWx0cmFuc2xhdGUuZGV0YWlsUmVqZWN0IH0pO1xyXG5cclxuICAgICAgICBcclxuXHJcbiAgICB9XHJcbiAgICBnZXQgZigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc2V0RGF0ZVJ1bGVzKCkge1xyXG4gICAgICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICBsZXQgeWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IHByZXZNb250aCA9IChtb250aCA9PT0gMCkgPyAxMSA6IG1vbnRoIC0gMTtcclxuICAgICAgICBsZXQgcHJldlllYXIgPSAocHJldk1vbnRoID09PSAxMSkgPyB5ZWFyIC0gMSA6IHllYXI7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgobW9udGgpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihwcmV2WWVhcik7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRGb3JtKCkge1xyXG4gICAgICAgIGxldCBuYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlck5hbWUnKSBhcyBzdHJpbmcgIDtcclxuICAgICAgICBsZXQgZW1haWwgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbWFpbCcpIGFzIHN0cmluZztcclxuICAgICAgICBsZXQgcGhvbmUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtb2JpbGVQaG9uZU51bWJlcicpIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIG5hbWU6IFsgIG5hbWUgIT09ICdudWxsJyA/IG5hbWUgOiAnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV1dLFxyXG4gICAgICAgICAgICBlbWFpbDogWyBlbWFpbCE9PSAnbnVsbCcgPyBlbWFpbCAgOiAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcclxuICAgICAgICAgICAgcGhvbmU6IFsgcGhvbmUhPT0gJ251bGwnID8gcGhvbmUgIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHJlYXNvbjogW3t2YWx1ZTogJycgLCBkaXNhYmxlZDogKCh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKXx8KHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pKX0gLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBzeXN0ZW06IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2Iuc3lzdGVtTmFtZSArICcgJyArIHRoaXMuZGV0YWlsZWRQbUpvYi5zeXN0ZW1JZCwgZGlzYWJsZWQ6IHRydWV9ICAgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICB3b3JrT3JkZXI6IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2IucG1Kb2Iud29ya29yZGVyTnVtYmVyICwgZGlzYWJsZWQ6IHRydWV9ICAgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBbJycsICh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtKSA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDE1KV1dLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRhY3RlZCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5zZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKCk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBjb250YWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlOdW1iZXIgPSB0cnVlO1xyXG4gICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VOdW1iZXIoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU51bWJlciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmRDb250YWN0TWVFbWFpbE1ldGhvZGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5uYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWU7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLnBob25lID0gdGhpcy5mb3JtLnZhbHVlLnBob25lO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5lbWFpbCA9IHRoaXMuZm9ybS52YWx1ZS5lbWFpbDtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IucmVhc29uID0gKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pID8gdGhpcy5yZWFzb25zWzBdLm5hbWUgOiAodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNhbmNlbEZvcm1QbSkgPyB0aGlzLnJlYXNvbnNbMl0ubmFtZSA6IHRoaXMuZm9ybS52YWx1ZS5yZWFzb24ubmFtZTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IuY29tbWVudCA9IHRoaXMuZm9ybS52YWx1ZS5tZXNzYWdlO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5yZWFzb25Db250YWN0ID0gdGhpcy5yZWFzb25Db250YWN0IDtcclxuICAgICAgICB0aGlzLnNlbmREZXRhaWxlZFBtLmVtaXQoIHRoaXMuZGV0YWlsZWRQbUpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWJtaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogJ1RoZSBmb3JtIGlzIGludmFsaWQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiBjb250YWN0ZWQoKTtcclxuXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHByZXZlbnRTdHJpbmdLZXlwcmVzcyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpc05hTihOdW1iZXIoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB8fFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSA9PT0gJyAnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIFJlYXNvbiB7XHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuIiwiPHAtZGlhbG9nIGhlYWRlcj1cIlwiIFttb2RhbF09XCJ0cnVlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5Y29udGFjdFN1cHBvcnRcIiAgW21heGltaXphYmxlXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieyc5NjBweCc6ICc3NXZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnOTAwcHgnLGhlaWdodDonMTQwMHB4J31cIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgW3Jlc2l6YWJsZV09XCJ0cnVlXCIgKG9uSGlkZSk9XCJjYW5jZWxDb250YWN0U3VwcG9ydCgpXCI+XHJcbiAgICA8c3Ryb25nPlxyXG4gICAgPGgzIGNsYXNzPVwidGV4dC1jZW50ZXIgdGl0bGVcIj4ge3t0cmFuc2xhdGUuaGVhZGVyfX0gPC9oMz5cclxuICA8L3N0cm9uZz5cclxuICAgIDxicj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJ0cmFuc2xhdGUgJiYgZm9ybSAmJiByZWFzb25zIFwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjYXJkLWJnXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRldXIgY29udGFjdC1ibG9jXCIgW3N0eWxlXT1cIntoZWlnaHQ6JzE1MHB4J31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgc3JjPVwiYXNzZXRzL2ltZy9HRVBvcnRhbC9waG9uZS1jYWxsLS5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvdW50ZXIgY29udGFjdC1pY29uIHRleHQtY2VudGVyIG10LTRcIj57e3RyYW5zbGF0ZS5jb250YWN0ZWR9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCJmb3JtXCIgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0gdmFsaWRhdGUtZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybS10aXRsZVwiPnt7dHJhbnNsYXRlLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qIDwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5uYW1lLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm5hbWUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE5hbWVNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbH19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5lbWFpbC5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLmVtYWlsLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkRW1haWx9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbEZvcm1hdH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBob25lLmludmFsaWQgfVwiIChrZXlwcmVzcyk9XCJwcmV2ZW50U3RyaW5nS2V5cHJlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnBob25lLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucGhvbmUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRQaG9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5zeXN0ZW19fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnN5c3RlbVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJzeXN0ZW1cIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYuc3lzdGVtLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnN5c3RlbS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLnN5c3RlbS5lcnJvcnM/LnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUud29ya09yZGVyfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+PC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLndvcmtPcmRlclwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJ3b3JrT3JkZXJcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYud29ya09yZGVyLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLndvcmtPcmRlci5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLndvcmtPcmRlci5lcnJvcnM/LnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucmVhc29ufX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJyZWFzb25zXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5zZWxlY3RSZWFzb25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmVhc29uXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCIgIG9wdGlvbkRpc2FibGVkPVwiaW5hY3RpdmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucmVhc29uLmludmFsaWQgfVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucmVhc29uXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInJlYXNvblwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5yZWFzb24uaW52YWxpZCB9XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLnJlYXNvbi5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZWFzb25SZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5tZXNzYWdlfX0gPC9zcGFuPiA8c3BhbiAqbmdJZj1cIiByZWFzb25Db250YWN0ICE9PSdNb3JlRGF0ZXNGb3JtUG0nXCIgY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBwSW5wdXRUZXh0YXJlYSBzdHlsZT1cIiBtaW4taGVpZ2h0OjEwMHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7XCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5tZXNzYWdlICsnLi4uJ1wiIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYubWVzc2FnZS5lcnJvcnMgfVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubWVzc2FnZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm1lc3NhZ2UuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYubWVzc2FnZS5lcnJvcnMubWlubGVuZ3RoXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRNZXNzYWdlTWlufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItY29udGFjdDEwMC1mb3JtLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1jb250YWN0MTAwLWZvcm0tYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLWJnYnRuXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cImQtYmxvY2sgbXgtYXV0b1wiIFtsYWJlbF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgaWNvbj1cInBpIHBpLXRodW1icy11cFwiIFtwVG9vbHRpcF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cImQtYmxvY2sgbXgtYXV0b1wiIFtsYWJlbF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgaWNvbj1cInBpIHBpLXRodW1icy11cFwiIFtwVG9vbHRpcF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIChjbGljayk9XCJjb250YWN0ZWQoKVwiPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjYXJkLWJnXCIgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZXVyIGNvbnRhY3QtYmxvY1wiIFtzdHlsZV09XCJ7aGVpZ2h0OicxNTBweCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImQtYmxvY2sgbXgtYXV0b1wiIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvcGhvbmUtY2FsbGVkLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnRlciBjb250YWN0LWljb24gdGV4dC1jZW50ZXIgbXQtNFwiPnt7dHJhbnNsYXRlLmNvbnRhY3R9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBbbGFiZWxdPVwidHJhbnNsYXRlLnNlZU51bWJlclwiIGljb249XCJwaSBwaS1leWVcIiBbcFRvb2x0aXBdPVwidHJhbnNsYXRlLmFjY2VwdFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIChjbGljayk9XCJjb250YWN0KClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgIDxpZnJhbWUgc3JjPVwiaHR0cHM6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPTI4MywlMjBSdWUlMjBEZSUyMGxhJTIwTWluaWVyZS1CUDM0JTIwJTIwNzg1MzMlMjBCVUMlMjAlRTIlODAlOTMlMjBDZWRleCZhbXA7dD0mYW1wO3o9MTMmYW1wO2llPVVURjgmYW1wO2l3bG9jPSZhbXA7b3V0cHV0PWVtYmVkXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMjUwXCIgc3R5bGU9XCJib3JkZXI6MDtcIiBhbGxvd2Z1bGxzY3JlZW49XCJcIiBsb2FkaW5nPVwibGF6eVwiPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTQgbXQtM1wiPiB7e3RyYW5zbGF0ZS5pbmZvcm1hdGlvbn19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1lbnZlbG9wZVwiPjwvaT48bGFiZWw+ICZuYnNwOyB7e3RyYW5zbGF0ZS5lbWFpbFRleHR9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLmVtYWlsfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLW1hcFwiPjwvaT48bGFiZWw+ICZuYnNwOyB7e3RyYW5zbGF0ZS5hZGRyZXNzVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuYWRyZXNzfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLnRvd259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuY291bnRyeX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG48L3AtZGlhbG9nPlxyXG48cC1kaWFsb2cgKm5nSWY9XCJ0cmFuc2xhdGVcIltoZWFkZXJdPVwidHJhbnNsYXRlLnNlcnZpY2VDZW50ZXJQaG9uZVRleHRcIiBbbW9kYWxdPVwidHJ1ZVwiIFsodmlzaWJsZSldPVwiZGlzcGxheU51bWJlclwiICBbYnJlYWtwb2ludHNdPVwieyc5NjBweCc6ICc3NXZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnNDAwcHgnLGhlaWdodDonMjAwcHgnfVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cImZhbHNlXCIgKG9uSGlkZSk9XCJjbG9zZU51bWJlcigpXCI+XHJcbjxicj5cclxuICA8aDQgY2xhc3M9XCJudW1iZXJcIj4gPHN0cm9uZz4gPGkgY2xhc3M9XCJwaSBwaS1waG9uZVwiPjwvaT4gICZuYnNwO3t7dHJhbnNsYXRlLmNvbnRhY3ROdW1iZXJ9fTwvc3Ryb25nPjwvaDQ+XHJcbjwvcC1kaWFsb2c+XHJcblxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PiJdfQ==
|
@@ -40,9 +40,9 @@ export class MaintenanceListComponent {
|
|
40
40
|
this.isWithLinks = false;
|
41
41
|
this.isProposedDate = true;
|
42
42
|
this.reasonContact = "";
|
43
|
+
this.shwAlaternativeDates = false;
|
43
44
|
}
|
44
|
-
ngOnChanges(changes) {
|
45
|
-
}
|
45
|
+
ngOnChanges(changes) { }
|
46
46
|
ngOnDestroy() {
|
47
47
|
if (this.updatePmSubscription) {
|
48
48
|
this.updatePmSubscription.unsubscribe();
|
@@ -55,7 +55,7 @@ export class MaintenanceListComponent {
|
|
55
55
|
this.dt?.filterGlobal($event.target.value, stringVal);
|
56
56
|
}
|
57
57
|
selectElement(element) {
|
58
|
-
this.alternativeDatesList =
|
58
|
+
this.alternativeDatesList = null;
|
59
59
|
this.emailTypes = [];
|
60
60
|
if (element) {
|
61
61
|
this.pmSelectedStatus = element.status;
|
@@ -303,10 +303,10 @@ export class MaintenanceListComponent {
|
|
303
303
|
}
|
304
304
|
}
|
305
305
|
MaintenanceListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: MaintenanceListComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
306
|
-
MaintenanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: MaintenanceListComponent, selector: "awf-maintenance-list", inputs: { translate: "translate", reasons: "reasons", globaltranslate: "globaltranslate", maintenanceList: "maintenanceList", maintenanceListNotDisplayed: "maintenanceListNotDisplayed", pmJobList: "pmJobList", isAlreadyScheduled: "isAlreadyScheduled", displayConfirmedDateInfo: "displayConfirmedDateInfo", alternativeDatesList: "alternativeDatesList", status: "status" }, outputs: { emitForUpdate: "emitForUpdate", emitForAlternativeDates: "emitForAlternativeDates", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "op", first: true, predicate: ["op"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderId','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderId\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderId\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td>{{product.pmJob.caseType }}</td>\r\n <td><span [class]=\"'product-status status-' + product.status\" [pTooltip]=\"getStatusTooltip(product.status)\">{{transformStatus(product.status) }}</span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList ===null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfo]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ChooseAnotherDateComponent, selector: "app-choose-another-date", inputs: ["displayAnotherDate", "globaltranslate", "translate", "alternativeDatesList"], outputs: ["closeAnotherDate", "acceptDate"] }, { kind: "component", type: i10.ConfirmDialogComponent, selector: "app-confirm-dialog", inputs: ["displayConfirmDialog", "startDateTime", "endDateTime", "globaltranslate", "translate", "isProposedDate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialog"] }, { kind: "component", type: i11.ConfirmedDateInformationComponent, selector: "app-confirmed-date-information", inputs: ["displayConfirmedDateInfo", "startDateTime", "endDateTime", "globaltranslate", "translate"], outputs: ["closeConfirmedDateInfo"] }, { kind: "component", type: i12.ContactSupportComponent, selector: "app-contact-support", inputs: ["displaycontactSupport", "globaltranslate", "translate", "showDate", "detailedPmJob", "reasonContact", "reasons"], outputs: ["sendDetailedPm", "sendForm", "closeContactSupport"] }, { kind: "component", type: i13.ShowLinksComponent, selector: "app-show-links", inputs: ["displayShowLinks", "detailedPmJobLinkedList", "selectedWorkorderId", "globaltranslate", "translate", "status"], outputs: ["closeShowLinks"] }, { kind: "component", type: i14.ConfirmDialogContactComponent, selector: "app-confirm-dialog-contact", inputs: ["displayConfirmDialogContact", "startDateTime", "endDateTime", "globaltranslate", "translate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialogContact"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
306
|
+
MaintenanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: MaintenanceListComponent, selector: "awf-maintenance-list", inputs: { translate: "translate", reasons: "reasons", globaltranslate: "globaltranslate", maintenanceList: "maintenanceList", maintenanceListNotDisplayed: "maintenanceListNotDisplayed", pmJobList: "pmJobList", isAlreadyScheduled: "isAlreadyScheduled", displayConfirmedDateInfo: "displayConfirmedDateInfo", alternativeDatesList: "alternativeDatesList", status: "status" }, outputs: { emitForUpdate: "emitForUpdate", emitForAlternativeDates: "emitForAlternativeDates", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "op", first: true, predicate: ["op"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td>{{product.pmJob.caseType }}</td>\r\n <td><span [class]=\"'product-status status-' + product.status\" [pTooltip]=\"getStatusTooltip(product.status)\">{{transformStatus(product.status) }}</span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList ===null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfo]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ChooseAnotherDateComponent, selector: "app-choose-another-date", inputs: ["displayAnotherDate", "globaltranslate", "translate", "alternativeDatesList"], outputs: ["closeAnotherDate", "acceptDate"] }, { kind: "component", type: i10.ConfirmDialogComponent, selector: "app-confirm-dialog", inputs: ["displayConfirmDialog", "startDateTime", "endDateTime", "globaltranslate", "translate", "isProposedDate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialog"] }, { kind: "component", type: i11.ConfirmedDateInformationComponent, selector: "app-confirmed-date-information", inputs: ["displayConfirmedDateInfo", "startDateTime", "endDateTime", "globaltranslate", "translate"], outputs: ["closeConfirmedDateInfo"] }, { kind: "component", type: i12.ContactSupportComponent, selector: "app-contact-support", inputs: ["displaycontactSupport", "globaltranslate", "translate", "showDate", "detailedPmJob", "reasonContact", "reasons"], outputs: ["sendDetailedPm", "sendForm", "closeContactSupport"] }, { kind: "component", type: i13.ShowLinksComponent, selector: "app-show-links", inputs: ["displayShowLinks", "detailedPmJobLinkedList", "selectedWorkorderId", "globaltranslate", "translate", "status"], outputs: ["closeShowLinks"] }, { kind: "component", type: i14.ConfirmDialogContactComponent, selector: "app-confirm-dialog-contact", inputs: ["displayConfirmDialogContact", "startDateTime", "endDateTime", "globaltranslate", "translate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialogContact"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
307
307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: MaintenanceListComponent, decorators: [{
|
308
308
|
type: Component,
|
309
|
-
args: [{ selector: 'awf-maintenance-list', providers: [MessageService, ConfirmationService], template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.
|
309
|
+
args: [{ selector: 'awf-maintenance-list', providers: [MessageService, ConfirmationService], template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td>{{product.pmJob.caseType }}</td>\r\n <td><span [class]=\"'product-status status-' + product.status\" [pTooltip]=\"getStatusTooltip(product.status)\">{{transformStatus(product.status) }}</span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList ===null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfo]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"] }]
|
310
310
|
}], ctorParameters: function () { return [{ type: i1.MessageService }]; }, propDecorators: { dt: [{
|
311
311
|
type: ViewChild,
|
312
312
|
args: ['dt']
|
@@ -342,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
|
|
342
342
|
}], sendForm: [{
|
343
343
|
type: Output
|
344
344
|
}] } });
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLHdCQUF3QjtJQXlDakMsWUFDWSxjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFwQ2pDLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1QkFB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QyxDQUFDLE9BQU8sUUFBUSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQzs7cUhBeFpRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLG9rQkFGdEIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsb05DN0JwRCxvelFBaUdBOzJGRGxFYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksc0JBQXNCLGFBR3JCLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO3FHQUcvQixFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ0UsRUFBRTtzQkFBbEIsU0FBUzt1QkFBQyxJQUFJO2dCQUNOLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEFsdGVybmF0aXZlRGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbHRlcm5hdGl2ZURhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFbWFpbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1haWxUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbi8vaW1wb3J0IHsgUG1Kb2JSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iUmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFBNR3JvdXBlZEpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wTUdyb3VwZWRKb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F3Zi1tYWludGVuYW5jZS1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW50ZW5hbmNlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R0JykgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnb3AnKSBvcDogYW55IHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgdHJhbnNsYXRlOiBhbnk7XHJcbiAgICBASW5wdXQoKSByZWFzb25zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBtYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQ6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgcG1Kb2JMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGlzQWxyZWFkeVNjaGVkdWxlZCE6IEJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm89ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbHRlcm5hdGl2ZURhdGVzTGlzdCE6IEFsdGVybmF0aXZlRGF0ZVtdIDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICAgQE91dHB1dCgpIHNlbmRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBkZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgdXBkYXRlUG1TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgc2hvd0RhdGUhOiBib29sZWFuO1xyXG4gICAgbWFpbnRlbmFuY2VTZWxlY3RlZCE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBzdGFydERhdGVUaW1lITogYW55O1xyXG4gICAgZW5kRGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFdvcmtvcmRlcklkITogYW55O1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlITogQWx0ZXJuYXRpdmVEYXRlIDtcclxuICAgIGFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZDogQWx0ZXJuYXRpdmVEYXRlW10gPSBbXTtcclxuICAgIGRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNXaXRoTGlua3MgPSBmYWxzZTtcclxuICAgIGlzUHJvcG9zZWREYXRlID0gdHJ1ZTtcclxuICAgIHBtU2VsZWN0ZWRTdGF0dXMhOnN0cmluZyA7XHJcbiAgICBlbWFpbFR5cGVzITpzdHJpbmdbXTsgXHJcbiAgICBhbHJlYWR5U2NoZWR1bGVkTXNnICE6Ym9vbGVhbjtcclxuICAgIHJlYXNvbkNvbnRhY3Q9XCJcIjtcclxuICAgIGNvbnRhY3RNZVJlcXVlc3QhOkRldGFpbGVkUG1Kb2IgOyBcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4gICAgKSB7fVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50OiBhbnksIHN0cmluZ1ZhbDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kdD8uZmlsdGVyR2xvYmFsKFxyXG4gICAgICAgICAgICAoJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcclxuICAgICAgICAgICAgc3RyaW5nVmFsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RFbGVtZW50KGVsZW1lbnQ6IERldGFpbGVkUG1Kb2IpIHtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5lbWFpbFR5cGVzID1bXTtcclxuICAgICAgICBpZihlbGVtZW50KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5wbVNlbGVjdGVkU3RhdHVzID0gZWxlbWVudC5zdGF0dXMgO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgIGlmKGVsZW1lbnQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5pc1dpdGhMaW5rcyA9IGVsZW1lbnQucG1Kb2IuZ3JvdXBMaXN0Py5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtvcmRlcklkID0gZWxlbWVudC5wbUpvYi53b3Jrb3JkZXJJZDtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQgPSBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0FscmVhZHlTY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbHRlcm5hdGl2ZURhdGVzKGVsZW1lbnQucG1Kb2IpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB0aGlzLmdldExpbmtlZFBtSm9iKCk7XHJcbiAgICB9XHJcbiAgICBnZXRBbHRlcm5hdGl2ZURhdGVzKHBtSm9iIDogUG1Kb2IgKSAge1xyXG4gICAgICAgIHRoaXMuZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMuZW1pdChwbUpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGlua2VkUG1Kb2IoKVxyXG4gICAge1xyXG4gICAgICAgIC8vdGhpcy5wbUpvYkxpbmtlZExpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QgPVtdO1xyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihsaW5rZWQud29ya29yZGVySWQgPT09IGl0ZW0ucG1Kb2Iud29ya29yZGVySWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzLnBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgdGhlIGxpbmtlZCBQTSBpbiB0aGUgb3RoZXIgbWFpbnRlbmFuY2UgbGlzdCBub3Qgc2VsZWN0ZWRcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0ICYmICh0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCAhPT0gdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGgpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5mb3JFYWNoKChsaW5rZWQgOiBQTUdyb3VwZWRKb2IgICkgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlTGlzdE5vdERpc3BsYXllZC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS50b1VwZGF0ZSA9IGZhbHNlIDtcclxuICAgICAgICAgICAgICAgICAgICBpZihsaW5rZWQud29ya29yZGVySWQgPT09IGl0ZW0ucG1Kb2Iud29ya29yZGVySWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy5pc1Byb3Bvc2VkRGF0ZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgY2xvc2VDb25maXJtRGlhbG9nKGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzUHJvcG9zZWREYXRlKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZURhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9wb3NlZERhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ1NDKSA7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DbGllbnRzKSA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VDb25maXJtRGlhbG9nQ29udGFjdChjb25maXJtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMgPSBbXSBhcyBzdHJpbmdbXVxyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuc3RhdHVzIDsgIFxyXG4gICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ29udGFjdEZvcm1QbSApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ29udGFjdE1lX0NsaWVudHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNvbnRhY3RNZV9DU0MpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID0nWWVzJyA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ2FuY2VsUE1fQ1NDKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5DYW5jZWxQTV9DbGllbnRzKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID0nWWVzJyA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLlNlbmROZXdEYXRlc19DU0MpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtlZFBNRm9ybUNvbnRhY3QoKTtcclxuXHJcbiAgICAgICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnQodHJ1ZSkgO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGlua2VkUE1Gb3JtQ29udGFjdCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2godGhpcy5tYWludGVuYW5jZVNlbGVjdGVkKTtcclxuICAgICAgICBpZih0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCA+MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbTpEZXRhaWxlZFBtSm9iKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgaXRlbS5zdGF0dXMgO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZERhdGUgPSBpdGVtLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgICAgICAgICAgaWYodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSAgfHx0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIClcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWFzb24gPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucmVhc29uO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVhc29uQ29udGFjdCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5yZWFzb25Db250YWN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPSdZZXMnIDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9ICBQbUpvYlN0YXR1cy5XQUlUSU5HIDsgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNhbGxBcGlUb1VwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29udGFjdFN1cHBvcnQoZXZlbnQgOmFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9XCJcIjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJvcG9zZUFub3RoZXJEYXRlKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRhY3RTdXBwb3J0KGZyb21PdGhlckRhdGUgOiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9IGZyb21PdGhlckRhdGUgPyBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSA6ICBSZWFzb25Db250YWN0LkNvbnRhY3RGb3JtUG0gO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gdHJ1ZTsgIFxyXG4gICAgfVxyXG5cclxuICAgIHNob3dMaW5rcyhlbGVtZW50PzphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IHRydWUgO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjbG9zZVNob3dMaW5rcygpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5U2hvd0xpbmtzID0gZmFsc2UgO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29uZmlybWVkRGF0ZUluZm8oKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybWVkRGF0ZUluZm8gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhY2NlcHREYXRlKGFsdGVybmF0aXZlRGF0ZXM6IEFsdGVybmF0aXZlRGF0ZVtdKVxyXG4gICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkID0gYWx0ZXJuYXRpdmVEYXRlcztcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZERhdGVzU2VsZWN0ZWQoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkLmZvckVhY2goKGFsdGVybmF0aXZlRGF0ZTogQWx0ZXJuYXRpdmVEYXRlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKGFsdGVybmF0aXZlRGF0ZS5zZWxlY3RlZD09PVwiWWVzXCIpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IGFsdGVybmF0aXZlRGF0ZS5lbmREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5zZWxlY3RlZERhdGUgPSBhbHRlcm5hdGl2ZURhdGUuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQW5vdGhlckRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXZlbnQ9PT1mYWxzZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RTdXBwb3J0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQbUpvYigpIHtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2godGhpcy5tYWludGVuYW5jZVNlbGVjdGVkKTtcclxuICAgICAgICBpZih0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCA+MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgocE1Kb2I6RGV0YWlsZWRQbUpvYikgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHBNSm9iKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbGxBcGlUb1VwZGF0ZSgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBlZGl0UG0oKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9ICAgUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gO1xyXG4gICAgICAgIHRoaXMucHJlcGFyZUZvclBvcHVwKCkgO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHByZXBhcmVGb3JQb3B1cCgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPT09XCJZZXNcIilcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmVuZERhdGVUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICB1cGRhdGVQcm9wb3NlZERhdGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21lckFjY2VwdGVkID0gJ1llcyc7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9ICdZZXMnO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVBbHRlcm5hdGl2ZURhdGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcyA9ICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcyA9ICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICAgICAgaXRlbS5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9ICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZW5kQ29udGFjdE1lRm9ybShjb250YWN0TWVSZXF1ZXN0OmFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkID0gY29udGFjdE1lUmVxdWVzdCA7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbEFwaVRvVXBkYXRlKClcclxuICAgIHtcclxuICAgICAgICBsZXQgUG1Kb2JMaXN0Rm9yVXBkYXRlID0ge30gYXMgYW55O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5wbUpvYkxpc3QgPSB0aGlzLnBtSm9iTGlzdDtcclxuICAgICAgICBQbUpvYkxpc3RGb3JVcGRhdGUuZW1haWxUeXBlcyA9IHRoaXMuZW1haWxUeXBlcztcclxuICAgICAgICB0aGlzLmVtaXRGb3JVcGRhdGUuZW1pdChQbUpvYkxpc3RGb3JVcGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICBcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3O1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlbjtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuRE9ORSA6IHJldHVybiB0aGlzLnN0YXR1cy5kb25lO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWQ7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzVG9vbHRpcChzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ld1Rvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlVG9vbHRpcDtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZVRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYmxlICNkdCBbdmFsdWVdPVwibWFpbnRlbmFuY2VMaXN0XCIgcmVzcG9uc2l2ZUxheW91dD1cInN0YWNrXCIgW3Jvd3NdPVwiMTBcIiBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LDEwLDI1LDUwXVwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiWydzeXN0ZW1JZCcsJ3BtSm9iLmNhc2VJZCcsJ3N5c3RlbU5hbWUnLCdwbUpvYi53b3Jrb3JkZXJJZCcsJ3BtSm9iLnN0YXJ0RGF0ZVRpbWUnLCdwbUpvYi5lbmREYXRlVGltZScsJ3BtSm9iLmNhc2VfdHlwZScsJ3BtSm9iLmNhc2VfY2F0ZWdvcnknLCdzdGF0dXMnXVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiIGRhdGFLZXk9XCJpZFwiIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZS5jb3VudFBhZ2VzXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAoaW5wdXQpPVwiYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50LCAnY29udGFpbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbHRyYW5zbGF0ZS5zZWFyY2hcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPCEtLSA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZUlkXCI+Q2FzZSBJZCA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VJZFwiPjwvcC1zb3J0SWNvbj4gLS0+XHJcbiAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1OYW1lXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN5c3RlbX19XHJcbiAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbUlkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbUlkXCI+U3lzdGVtIElkXHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzeXN0ZW1OYW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJ3b3Jrb3JkZXJJZFwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlcklkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhcnREYXRlVGltZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGFydERhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGFydERhdGVUaW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlX3R5cGVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QudHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZV90eXBlXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXR1c1wiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGF0dXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIiA+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0Lk5ickxpbmtzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGF0dXNcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gQWN0aW9uPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXByb2R1Y3QgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPiAgIFxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbUlkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLnN0YXJ0RGF0ZVRpbWUgfCBkYXRlOiAnZGQgTU1NIHl5eXkgJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2IuY2FzZVR5cGUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gW2NsYXNzXT1cIidwcm9kdWN0LXN0YXR1cyBzdGF0dXMtJyArIHByb2R1Y3Quc3RhdHVzXCIgW3BUb29sdGlwXT1cImdldFN0YXR1c1Rvb2x0aXAocHJvZHVjdC5zdGF0dXMpXCI+e3t0cmFuc2Zvcm1TdGF0dXMocHJvZHVjdC5zdGF0dXMpICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QgIT09IG51bGwgXCIgKGNsaWNrKT1cInNob3dMaW5rcyhwcm9kdWN0KVwiPiA8c3BhbiBjbGFzcz1cImNpcmNsZVwiPnt7cHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoIH19PC9zcGFuPiA8aSBjbGFzcz1cInBpIHBpLWxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbVwiPjwvaT4gPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QgPT09bnVsbFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVsaW5rZWRcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIlwiIGljb249XCJwaSBwaS1jYWxlbmRhclwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZFwiICNhY3R1YWxUYXJnZXQgKGNsaWNrKT1cInNlbGVjdEVsZW1lbnQocHJvZHVjdClcIiAoY2xpY2spPVwib3AudG9nZ2xlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiKChwcm9kdWN0LnN0YXR1cyA9PT0nbGF0ZScgIHx8IHByb2R1Y3Quc3RhdHVzID09PSdhY2NlcHRlZCcpICYmICFpc0FscmVhZHlTY2hlZHVsZWQpIHx8IHByb2R1Y3Quc3RhdHVzID09PSd3YWl0aW5nJ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1kLWZsZXggcC1haS1jZW50ZXIgcC1qYy1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIHt7Z2xvYmFsdHJhbnNsYXRlLmNvdW50fX0ge3ttYWludGVuYW5jZUxpc3QgPyBtYWludGVuYW5jZUxpc3QubGVuZ3RoIDogMCB9fSB7e2dsb2JhbHRyYW5zbGF0ZS5lbGVtZW50c319LlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG48cC1vdmVybGF5UGFuZWwgI29wIFtkaXNtaXNzYWJsZV09XCJ0cnVlXCIgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIiBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIicwbXMnXCIgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiIGljb249XCJwaSBwaS10aHVtYnMtdXBcIiAoY2xpY2spPVwiY29uZmlybURpYWxvZygpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29uZmlybURhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QgIT09IG51bGwpIFwiIGljb249XCJwaSBwaS1jYWxlbmRhci1wbHVzXCIgKGNsaWNrKT1cInByb3Bvc2VBbm90aGVyRGF0ZSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2hvb3NlQW5vdGhlckRhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkICYmIChhbHRlcm5hdGl2ZURhdGVzTGlzdCE9PW51bGwpIFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktcGhvbmVcIiAoY2xpY2spPVwiY29udGFjdFN1cHBvcnQoZmFsc2UpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29udGFjdFN1cHBvclwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzV2l0aExpbmtzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1saW5rXCIgKm5nSWY9XCJpc1dpdGhMaW5rc1wiIChjbGljayk9XCJzaG93TGlua3MoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnNob3dMaW5rc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIiBpY29uPVwicGkgcGktcGVuY2lsXCIgKGNsaWNrKT1cImVkaXRQbSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2FuY2VsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXljb250YWN0U3VwcG9ydCBcIiA+XHJcbiAgICA8YXBwLWNvbnRhY3Qtc3VwcG9ydCBbcmVhc29uQ29udGFjdF09XCJyZWFzb25Db250YWN0XCIgKGNsb3NlQ29udGFjdFN1cHBvcnQpPVwiY2xvc2VDb250YWN0U3VwcG9ydCgkZXZlbnQpXCIgKHNlbmREZXRhaWxlZFBtKT1cInNlbmRDb250YWN0TWVGb3JtKCRldmVudClcIiBbZGV0YWlsZWRQbUpvYl0gPVwibWFpbnRlbmFuY2VTZWxlY3RlZFwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgIFtyZWFzb25zXT1cInJlYXNvbnNcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb250YWN0U3VwcG9ydFwiIFtkaXNwbGF5Y29udGFjdFN1cHBvcnRdPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0XCIgW3Nob3dEYXRlXT1cInNob3dEYXRlXCIgPjwvYXBwLWNvbnRhY3Qtc3VwcG9ydD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ1wiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZyBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgIFtpc1Byb3Bvc2VkRGF0ZV09XCJpc1Byb3Bvc2VkRGF0ZVwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURpYWxvZ1wiXHJcbiAgICAgICAgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybURpYWxvZ109XCJkaXNwbGF5Q29uZmlybURpYWxvZ1wiIChjbG9zZUNvbmZpcm1EaWFsb2cpPVwiY2xvc2VDb25maXJtRGlhbG9nKCRldmVudClcIj5cclxuICAgIDwvYXBwLWNvbmZpcm0tZGlhbG9nPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdFwiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZy1jb250YWN0IFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiICAgIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURpYWxvZ0NvbnRhY3RcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0XT1cImRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdFwiIChjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KT1cImNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QoJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtY29uZmlybS1kaWFsb2ctY29udGFjdCA+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCI+XHJcbiAgICA8YXBwLWNvbmZpcm1lZC1kYXRlLWluZm9ybWF0aW9uIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURhdGVJbmZvcm1hdGlvblwiIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXT1cImRpc3BsYXlDb25maXJtZWREYXRlSW5mb1wiIChjbG9zZUNvbmZpcm1lZERhdGVJbmZvKT1cImNsb3NlQ29uZmlybWVkRGF0ZUluZm8oKVwiPjwvYXBwLWNvbmZpcm1lZC1kYXRlLWluZm9ybWF0aW9uPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlBbm90aGVyRGF0ZSAmJiBhbHRlcm5hdGl2ZURhdGVzTGlzdFwiPlxyXG4gICAgPGFwcC1jaG9vc2UtYW5vdGhlci1kYXRlIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY2hvb3NlQW5vdGhlckRhdGVcIiBbYWx0ZXJuYXRpdmVEYXRlc0xpc3RdPVwiYWx0ZXJuYXRpdmVEYXRlc0xpc3RcIiBbZGlzcGxheUFub3RoZXJEYXRlXT1cImRpc3BsYXlBbm90aGVyRGF0ZVwiIChjbG9zZUFub3RoZXJEYXRlKT1cImNsb3NlQW5vdGhlckRhdGUoJGV2ZW50KVwiIChhY2NlcHREYXRlKT1cImFjY2VwdERhdGUoJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtY2hvb3NlLWFub3RoZXItZGF0ZT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5U2hvd0xpbmtzICYmIHNlbGVjdGVkV29ya29yZGVySWRcIj5cclxuICAgIDxhcHAtc2hvdy1saW5rcyBbc3RhdHVzXT1cInN0YXR1c1wiIFtzZWxlY3RlZFdvcmtvcmRlcklkXT1cInNlbGVjdGVkV29ya29yZGVySWRcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZVwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW2Rpc3BsYXlTaG93TGlua3NdPVwiZGlzcGxheVNob3dMaW5rc1wiIChjbG9zZVNob3dMaW5rcyk9XCJjbG9zZVNob3dMaW5rcygpXCIgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCI+PC9hcHAtc2hvdy1saW5rcz5cclxuPC9kaXY+XHJcblxyXG5cclxuIl19
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLHdCQUF3QjtJQTBDakMsWUFDWSxjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFyQ2pDLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1QkFB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QUMsZ0JBQWdCLENBQUM7WUFDakUsT0FBUSxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7U0FDN0I7SUFDTCxDQUFDOztxSEF4WlEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isb2tCQUZ0QixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxvTkM1QnBELGcwUUFpR0E7MkZEbkVhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSxzQkFBc0IsYUFHckIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7cUdBRy9CLEVBQUU7c0JBQWxCLFNBQVM7dUJBQUMsSUFBSTtnQkFDRSxFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ04sU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGV0YWlsZWRQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9kZXRhaWxlZFBtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgQWx0ZXJuYXRpdmVEYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsdGVybmF0aXZlRGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IEVtYWlsVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9lbWFpbFR5cGUnO1xyXG5pbXBvcnQgeyBFdmVudFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudFN0YXR1cyc7XHJcbmltcG9ydCB7IFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgUE1Hcm91cGVkSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BNR3JvdXBlZEpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFBtSm9iU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iU3RhdHVzJztcclxuaW1wb3J0IHsgUmVhc29uQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb25Db250YWN0JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXdmLW1haW50ZW5hbmNlLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpbnRlbmFuY2VMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgnZHQnKSBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdvcCcpIG9wOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIHJlYXNvbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZTogYW55O1xyXG4gICAgQElucHV0KCkgbWFpbnRlbmFuY2VMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdE5vdERpc3BsYXllZDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBwbUpvYkxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgaXNBbHJlYWR5U2NoZWR1bGVkITogQm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlDb25maXJtZWREYXRlSW5mbz1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGFsdGVybmF0aXZlRGF0ZXNMaXN0ITogYW55IDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICAgQE91dHB1dCgpIHNlbmRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBkZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgdXBkYXRlUG1TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgc2hvd0RhdGUhOiBib29sZWFuO1xyXG4gICAgbWFpbnRlbmFuY2VTZWxlY3RlZCE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBzdGFydERhdGVUaW1lITogYW55O1xyXG4gICAgZW5kRGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFdvcmtvcmRlcklkITogYW55O1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlITogQWx0ZXJuYXRpdmVEYXRlIDtcclxuICAgIGFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZDogQWx0ZXJuYXRpdmVEYXRlW10gPSBbXTtcclxuICAgIGRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNXaXRoTGlua3MgPSBmYWxzZTtcclxuICAgIGlzUHJvcG9zZWREYXRlID0gdHJ1ZTtcclxuICAgIHBtU2VsZWN0ZWRTdGF0dXMhOnN0cmluZyA7XHJcbiAgICBlbWFpbFR5cGVzITpzdHJpbmdbXTsgXHJcbiAgICBhbHJlYWR5U2NoZWR1bGVkTXNnICE6Ym9vbGVhbjtcclxuICAgIHJlYXNvbkNvbnRhY3Q9XCJcIjtcclxuICAgIGNvbnRhY3RNZVJlcXVlc3QhOkRldGFpbGVkUG1Kb2IgO1xyXG4gICAgc2h3QWxhdGVybmF0aXZlRGF0ZXMgPSBmYWxzZSA7IFxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHt9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7fVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQ6IGFueSwgc3RyaW5nVmFsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwoXHJcbiAgICAgICAgICAgICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLFxyXG4gICAgICAgICAgICBzdHJpbmdWYWxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudDogRGV0YWlsZWRQbUpvYikge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc0xpc3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZW1haWxUeXBlcyA9W107XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMucG1TZWxlY3RlZFN0YXR1cyA9IGVsZW1lbnQuc3RhdHVzIDtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgICBpZihlbGVtZW50LnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNXaXRoTGlua3MgPSBlbGVtZW50LnBtSm9iLmdyb3VwTGlzdD8ubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3Jrb3JkZXJJZCA9IGVsZW1lbnQucG1Kb2Iud29ya29yZGVySWQ7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkID0gZWxlbWVudDtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNBbHJlYWR5U2NoZWR1bGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWx0ZXJuYXRpdmVEYXRlcyhlbGVtZW50LnBtSm9iKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy5nZXRMaW5rZWRQbUpvYigpO1xyXG4gICAgfVxyXG4gICAgZ2V0QWx0ZXJuYXRpdmVEYXRlcyhwbUpvYiA6IFBtSm9iICkgIHtcclxuICAgICAgICB0aGlzLmVtaXRGb3JBbHRlcm5hdGl2ZURhdGVzLmVtaXQocG1Kb2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExpbmtlZFBtSm9iKClcclxuICAgIHtcclxuICAgICAgICAvL3RoaXMucG1Kb2JMaW5rZWRMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0ID1bXTtcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5mb3JFYWNoKChsaW5rZWQgOiBQTUdyb3VwZWRKb2IgICkgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5wbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIHRoZSBsaW5rZWQgUE0gaW4gdGhlIG90aGVyIG1haW50ZW5hbmNlIGxpc3Qgbm90IHNlbGVjdGVkXHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdCAmJiAodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggIT09IHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udG9VcGRhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtRGlhbG9nKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIGNsb3NlQ29uZmlybURpYWxvZyhjb25maXJtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9IFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDtcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgICAgICBpZighdGhpcy5pc1Byb3Bvc2VkRGF0ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVEYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvcG9zZWREYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkFjY2VwdGVkX0NTQykgO1xyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ2xpZW50cykgO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBtSm9iKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QoY29uZmlybTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzID0gW10gYXMgc3RyaW5nW11cclxuICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9ICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnN0YXR1cyA7ICBcclxuICAgICAgICAgICAgaWYodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNvbnRhY3RGb3JtUG0gKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNvbnRhY3RNZV9DbGllbnRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5Db250YWN0TWVfQ1NDKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdD0ge307XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9J1llcycgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9ICBQbUpvYlN0YXR1cy5XQUlUSU5HIDsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNhbmNlbFBNX0NTQyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ2FuY2VsUE1fQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdD0ge307XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9J1llcycgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9ICBQbUpvYlN0YXR1cy5XQUlUSU5HIDsgIFxyXG4gICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ1NDKTtcclxuICAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuU2VuZE5ld0RhdGVzX0NsaWVudHMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgdGhpcy51cGRhdGVMaW5rZWRQTUZvcm1Db250YWN0KCk7XHJcblxyXG4gICAgICAgICAgICAgdGhpcy5jbG9zZUNvbnRhY3RTdXBwb3J0KHRydWUpIDtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxpbmtlZFBNRm9ybUNvbnRhY3QoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYodGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKGl0ZW06RGV0YWlsZWRQbUpvYikgID0+IHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gIGl0ZW0uc3RhdHVzIDtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWREYXRlID0gaXRlbS5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9ICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG4gICAgICAgICAgICAgICAgIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0gIHx8dGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNhbmNlbEZvcm1QbSApXHJcbiAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVhc29uID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnJlYXNvbjtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlYXNvbkNvbnRhY3QgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucmVhc29uQ29udGFjdDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbU9iamVjdD0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID0nWWVzJyA7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbnRhY3RTdXBwb3J0KGV2ZW50IDphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPVwiXCI7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByb3Bvc2VBbm90aGVyRGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmlzUHJvcG9zZWREYXRlID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb250YWN0U3VwcG9ydChmcm9tT3RoZXJEYXRlIDogYm9vbGVhbikge1xyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSBmcm9tT3RoZXJEYXRlID8gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0gOiAgUmVhc29uQ29udGFjdC5Db250YWN0Rm9ybVBtIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7ICBcclxuICAgIH1cclxuXHJcbiAgICBzaG93TGlua3MoZWxlbWVudD86YW55KVxyXG4gICAge1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSB0cnVlIDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xvc2VTaG93TGlua3MoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IGZhbHNlIDtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbmZpcm1lZERhdGVJbmZvKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWNjZXB0RGF0ZShhbHRlcm5hdGl2ZURhdGVzOiBBbHRlcm5hdGl2ZURhdGVbXSlcclxuICAgIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA9IGFsdGVybmF0aXZlRGF0ZXM7XHJcbiAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmREYXRlc1NlbGVjdGVkKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZC5mb3JFYWNoKChhbHRlcm5hdGl2ZURhdGU6IEFsdGVybmF0aXZlRGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZihhbHRlcm5hdGl2ZURhdGUuc2VsZWN0ZWQ9PT1cIlllc1wiKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSBhbHRlcm5hdGl2ZURhdGUuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSBhbHRlcm5hdGl2ZURhdGUuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuc2VsZWN0ZWREYXRlID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUFub3RoZXJEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGV2ZW50PT09ZmFsc2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5jb250YWN0U3VwcG9ydCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUG1Kb2IoKSB7XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYodGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKHBNSm9iOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChwTUpvYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZWRpdFBtKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSAgIFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIDtcclxuICAgICAgICB0aGlzLnByZXBhcmVGb3JQb3B1cCgpIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIH1cclxuXHJcbiAgICBwcmVwYXJlRm9yUG9wdXAoKVxyXG4gICAge1xyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21lckFjY2VwdGVkID09PVwiWWVzXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcztcclxuICAgICAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgdXBkYXRlUHJvcG9zZWREYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9ICdZZXMnO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSAnWWVzJztcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQWx0ZXJuYXRpdmVEYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2VuZENvbnRhY3RNZUZvcm0oY29udGFjdE1lUmVxdWVzdDphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCA9IGNvbnRhY3RNZVJlcXVlc3QgO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGxBcGlUb1VwZGF0ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgbGV0IFBtSm9iTGlzdEZvclVwZGF0ZSA9IHt9IGFzIGFueTtcclxuICAgICAgICBQbUpvYkxpc3RGb3JVcGRhdGUucG1Kb2JMaXN0ID0gdGhpcy5wbUpvYkxpc3Q7XHJcbiAgICAgICAgUG1Kb2JMaXN0Rm9yVXBkYXRlLmVtYWlsVHlwZXMgPSB0aGlzLmVtYWlsVHlwZXM7XHJcbiAgICAgICAgdGhpcy5lbWl0Rm9yVXBkYXRlLmVtaXQoUG1Kb2JMaXN0Rm9yVXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2Zvcm1TdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ldztcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5DTE9TRUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuY2xvc2VkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkxhdGUgOiByZXR1cm4gdGhpcy5zdGF0dXMubGF0ZTtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5PUEVOIDogcmV0dXJuIHRoaXMuc3RhdHVzLm9wZW47XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZTtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5WQUxJREFURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMudmFsaWRhdGVkO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c1Rvb2x0aXAoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQUNDRVBURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuYWNjZXB0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk5FVyA6IHJldHVybiB0aGlzLnN0YXR1cy5uZXdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkxhdGUgOiByZXR1cm4gdGhpcy5zdGF0dXMubGF0ZVRvb2x0aXA7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlblRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJsZSAjZHQgW3ZhbHVlXT1cIm1haW50ZW5hbmNlTGlzdFwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzdGFja1wiIFtyb3dzXT1cIjEwXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwxMCwyNSw1MF1cIiBbcGFnaW5hdG9yXT1cInRydWVcIiBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cIlsnc3lzdGVtSWQnLCdwbUpvYi5jYXNlSWQnLCdzeXN0ZW1OYW1lJywncG1Kb2Iud29ya29yZGVyTnVtYmVyJywncG1Kb2Iuc3RhcnREYXRlVGltZScsJ3BtSm9iLmVuZERhdGVUaW1lJywncG1Kb2IuY2FzZV90eXBlJywncG1Kb2IuY2FzZV9jYXRlZ29yeScsJ3N0YXR1cyddXCJcclxuICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCIgZGF0YUtleT1cImlkXCIgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlLmNvdW50UGFnZXNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIChpbnB1dCk9XCJhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQsICdjb250YWlucycpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsdHJhbnNsYXRlLnNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8IS0tIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlSWRcIj5DYXNlIElkIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZUlkXCI+PC9wLXNvcnRJY29uPiAtLT5cclxuICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbU5hbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3lzdGVtfX1cclxuICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3lzdGVtSWRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3lzdGVtSWRcIj5TeXN0ZW0gSWRcclxuICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbU5hbWVcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cIndvcmtvcmRlck51bWJlclwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlck51bWJlclwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXJ0RGF0ZVRpbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhcnREYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhcnREYXRlVGltZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZV90eXBlXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VfdHlwZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhdHVzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN0YXR1c1wiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhdHVzXCIgPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5OYnJMaW5rc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IEFjdGlvbjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1wcm9kdWN0IGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj4gICBcclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1OYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1JZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2Iud29ya29yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi5zdGFydERhdGVUaW1lIHwgZGF0ZTogJ2RkIE1NTSB5eXl5ICcgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLmNhc2VUeXBlIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPjxzcGFuIFtjbGFzc109XCIncHJvZHVjdC1zdGF0dXMgc3RhdHVzLScgKyBwcm9kdWN0LnN0YXR1c1wiIFtwVG9vbHRpcF09XCJnZXRTdGF0dXNUb29sdGlwKHByb2R1Y3Quc3RhdHVzKVwiPnt7dHJhbnNmb3JtU3RhdHVzKHByb2R1Y3Quc3RhdHVzKSAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ICE9PSBudWxsIFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ID09PW51bGxcIiAoY2xpY2spPVwic2hvd0xpbmtzKHByb2R1Y3QpXCI+IDxzcGFuIGNsYXNzPVwiY2lyY2xlbGlua2VkXCI+e3twcm9kdWN0LnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggfX08L3NwYW4+IDxpIGNsYXNzPVwicGkgcGktbGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgbGFiZWw9XCJcIiBpY29uPVwicGkgcGktY2FsZW5kYXJcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWRcIiAjYWN0dWFsVGFyZ2V0IChjbGljayk9XCJzZWxlY3RFbGVtZW50KHByb2R1Y3QpXCIgKGNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIigocHJvZHVjdC5zdGF0dXMgPT09J2xhdGUnICB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nYWNjZXB0ZWQnKSAmJiAhaXNBbHJlYWR5U2NoZWR1bGVkKSB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nd2FpdGluZydcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZC1mbGV4IHAtYWktY2VudGVyIHAtamMtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICB7e2dsb2JhbHRyYW5zbGF0ZS5jb3VudH19IHt7bWFpbnRlbmFuY2VMaXN0ID8gbWFpbnRlbmFuY2VMaXN0Lmxlbmd0aCA6IDAgfX0ge3tnbG9iYWx0cmFuc2xhdGUuZWxlbWVudHN9fS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD5cclxuPHAtb3ZlcmxheVBhbmVsICNvcCBbZGlzbWlzc2FibGVdPVwidHJ1ZVwiIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCIgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzBtcydcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgKGNsaWNrKT1cImNvbmZpcm1EaWFsb2coKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbmZpcm1EYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWQgJiYgKGFsdGVybmF0aXZlRGF0ZXNMaXN0ICE9PSBudWxsKSBcIiBpY29uPVwicGkgcGktY2FsZW5kYXItcGx1c1wiIChjbGljayk9XCJwcm9wb3NlQW5vdGhlckRhdGUoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNob29zZUFub3RoZXJEYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QhPT1udWxsKSBcIj5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgaWNvbj1cInBpIHBpLXBob25lXCIgKGNsaWNrKT1cImNvbnRhY3RTdXBwb3J0KGZhbHNlKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbnRhY3RTdXBwb3JcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCJpc1dpdGhMaW5rc1wiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktbGlua1wiICpuZ0lmPVwiaXNXaXRoTGlua3NcIiAoY2xpY2spPVwic2hvd0xpbmtzKClcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zaG93TGlua3NcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCJpc0FscmVhZHlTY2hlZHVsZWQgJiYgcG1TZWxlY3RlZFN0YXR1cyA9PT0ndmFsaWRhdGVkJ1wiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCIgaWNvbj1cInBpIHBpLXBlbmNpbFwiIChjbGljayk9XCJlZGl0UG0oKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNhbmNlbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Y29udGFjdFN1cHBvcnQgXCIgPlxyXG4gICAgPGFwcC1jb250YWN0LXN1cHBvcnQgW3JlYXNvbkNvbnRhY3RdPVwicmVhc29uQ29udGFjdFwiIChjbG9zZUNvbnRhY3RTdXBwb3J0KT1cImNsb3NlQ29udGFjdFN1cHBvcnQoJGV2ZW50KVwiIChzZW5kRGV0YWlsZWRQbSk9XCJzZW5kQ29udGFjdE1lRm9ybSgkZXZlbnQpXCIgW2RldGFpbGVkUG1Kb2JdID1cIm1haW50ZW5hbmNlU2VsZWN0ZWRcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiICBbcmVhc29uc109XCJyZWFzb25zXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29udGFjdFN1cHBvcnRcIiBbZGlzcGxheWNvbnRhY3RTdXBwb3J0XT1cImRpc3BsYXljb250YWN0U3VwcG9ydFwiIFtzaG93RGF0ZV09XCJzaG93RGF0ZVwiID48L2FwcC1jb250YWN0LXN1cHBvcnQ+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2cgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICBbaXNQcm9wb3NlZERhdGVdPVwiaXNQcm9wb3NlZERhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2ddPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIiAoY2xvc2VDb25maXJtRGlhbG9nKT1cImNsb3NlQ29uZmlybURpYWxvZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2ctY29udGFjdCBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgICBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dDb250YWN0XCJcclxuICAgICAgICBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdF09XCJkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RcIiAoY2xvc2VDb25maXJtRGlhbG9nQ29udGFjdCk9XCJjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KCRldmVudClcIj5cclxuICAgIDwvYXBwLWNvbmZpcm0tZGlhbG9nLWNvbnRhY3QgPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlDb25maXJtZWREYXRlSW5mb1wiPlxyXG4gICAgPGFwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EYXRlSW5mb3JtYXRpb25cIiBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtZWREYXRlSW5mb109XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIiAoY2xvc2VDb25maXJtZWREYXRlSW5mbyk9XCJjbG9zZUNvbmZpcm1lZERhdGVJbmZvKClcIj48L2FwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5QW5vdGhlckRhdGUgJiYgYWx0ZXJuYXRpdmVEYXRlc0xpc3RcIj5cclxuICAgIDxhcHAtY2hvb3NlLWFub3RoZXItZGF0ZSBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNob29zZUFub3RoZXJEYXRlXCIgW2FsdGVybmF0aXZlRGF0ZXNMaXN0XT1cImFsdGVybmF0aXZlRGF0ZXNMaXN0XCIgW2Rpc3BsYXlBbm90aGVyRGF0ZV09XCJkaXNwbGF5QW5vdGhlckRhdGVcIiAoY2xvc2VBbm90aGVyRGF0ZSk9XCJjbG9zZUFub3RoZXJEYXRlKCRldmVudClcIiAoYWNjZXB0RGF0ZSk9XCJhY2NlcHREYXRlKCRldmVudClcIj5cclxuICAgIDwvYXBwLWNob29zZS1hbm90aGVyLWRhdGU+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheVNob3dMaW5rcyAmJiBzZWxlY3RlZFdvcmtvcmRlcklkXCI+XHJcbiAgICA8YXBwLXNob3ctbGlua3MgW3N0YXR1c109XCJzdGF0dXNcIiBbc2VsZWN0ZWRXb3Jrb3JkZXJJZF09XCJzZWxlY3RlZFdvcmtvcmRlcklkXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFtkaXNwbGF5U2hvd0xpbmtzXT1cImRpc3BsYXlTaG93TGlua3NcIiAoY2xvc2VTaG93TGlua3MpPVwiY2xvc2VTaG93TGlua3MoKVwiIFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiPjwvYXBwLXNob3ctbGlua3M+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
|