bit-ng-library 17.1.2 → 17.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/esm2022/lib/sharedlibrary/components/footer/bit-footer.component.mjs +3 -3
- package/esm2022/lib/sharedlibrary/services/custom-validators.service.mjs +2 -2
- package/fesm2022/bit-ng-library.mjs +3 -3
- package/fesm2022/bit-ng-library.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,6 +26,14 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
|
|
|
26
26
|
|
|
27
27
|
## changelog
|
|
28
28
|
|
|
29
|
+
## [17.1.4] - 2024-11-21
|
|
30
|
+
|
|
31
|
+
En el paginador se añaden dos nuevos posibles valores para el número de elementos por página.
|
|
32
|
+
|
|
33
|
+
## [17.1.3] - 2024-10-25
|
|
34
|
+
|
|
35
|
+
Se permite que un campo numérico pueda tener un cero y no de un fallo de que el campo es required
|
|
36
|
+
|
|
29
37
|
## [17.1.2] - 2024-09-30
|
|
30
38
|
|
|
31
39
|
En el bit-dropdown y el bit-dropdowon-multiple se tienen en cuenta los inputs "atributoLabel" y "atributoValue" a la hora de mostrar el valor del campo en modo solo lectura.
|
|
@@ -79,11 +79,11 @@ export class BitFooterComponent {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BitFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina", visible: "visible", forcePageLinkSize: "forcePageLinkSize" }, outputs: { onPageChange: "onPageChange", onNewPageSize: "onNewPageSize" }, usesOnChanges: true, ngImport: i0, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n", dependencies: [{ kind: "component", type: i1.BitPajigatorComponent, selector: "bit-pajigator", inputs: ["page", "totalItems", "itemsPerPage", "rowsPerPageOptions", "maxCurrentItems"], outputs: ["onPageChange", "onPageSizeChange"] }, { kind: "component", type: i2.BitFooterMessagesComponent, selector: "bit-footer-messages", inputs: ["messages", "status", "typeFooter", "maxCurrentItems", "totalItems"] }, { kind: "pipe", type: i3.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina", visible: "visible", forcePageLinkSize: "forcePageLinkSize" }, outputs: { onPageChange: "onPageChange", onNewPageSize: "onNewPageSize" }, usesOnChanges: true, ngImport: i0, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n", dependencies: [{ kind: "component", type: i1.BitPajigatorComponent, selector: "bit-pajigator", inputs: ["page", "totalItems", "itemsPerPage", "rowsPerPageOptions", "maxCurrentItems"], outputs: ["onPageChange", "onPageSizeChange"] }, { kind: "component", type: i2.BitFooterMessagesComponent, selector: "bit-footer-messages", inputs: ["messages", "status", "typeFooter", "maxCurrentItems", "totalItems"] }, { kind: "pipe", type: i3.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
83
83
|
}
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BitFooterComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
|
-
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n" }]
|
|
86
|
+
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n" }]
|
|
87
87
|
}], ctorParameters: () => [], propDecorators: { totalItems: [{
|
|
88
88
|
type: Input
|
|
89
89
|
}], filter: [{
|
|
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
114
114
|
}], onNewPageSize: [{
|
|
115
115
|
type: Output
|
|
116
116
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV2Rjs7SUFFSTtBQU1KLE1BQU0sT0FBTyxrQkFBa0I7SUFpQzdCO1FBekJBLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlCLFVBQUssR0FBWSxJQUFJLENBQUMsQ0FBQyxtRUFBbUU7UUFJMUYsV0FBTSxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQywwR0FBMEc7UUFJaEosMEJBQXFCLEdBQVksSUFBSSxDQUFDLENBQUUsWUFBWTtRQUVwRCwrQkFBMEIsR0FBWSxJQUFJLENBQUMsQ0FBQyxZQUFZO1FBRXhELFlBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDLENBQUMsZ0hBQWdIO1FBRS9JLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQyxDQUFDLCtDQUErQztRQUUxRixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFV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SztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLE1BQU07c0JBREwsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7dUJBQUMsTUFBTTtnQkFHYixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxNQUFNO2dCQUdQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2UsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi9iYXNlL3NoYXJlZC9iYXNlLmZpbHRlclwiO1xyXG5pbXBvcnQgeyBQYWdlU3RhdHVzLCBUWVBFX0ZPUk0sIFRZUEVfTElTVCwgVFlQRV9TQ1JPTEwgfSBmcm9tIFwiLi4vLi4vZ2xvYmFsLmNvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIG11ZXN0cmEgdW4gcGFnaW5hZG9yIGVuIGxhIHNlY2Npw7NuIGZvb3Rlci5cclxuICoqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJiaXQtZm9vdGVyXCIsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgdGVtcGxhdGVVcmw6IFwiYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaXRGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KClcclxuICB0b3RhbEl0ZW1zOiBudW1iZXI7ICAgICAvLyBOw7ptZXJvIHRvdGFsIGRlIGVsZW1lbnRvcyByZWN1cGVyYWRvcyBkZSBsYSBjb25zdWx0YVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVyOiBCYXNlRmlsdGVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnaW5hdG9yOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgbW9zdHJhckF2aXNvczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBmaXhlZDogYm9vbGVhbiA9IHRydWU7IC8vIEluZGljYXLDoSBzaSBsbyBxdWVyZW1vcyBmaWpvIGFiYWpvIGVuIGxhIHDDoWdpbmEuIFBvciBkZWZlY3RvIHPDrS5cclxuICBASW5wdXQoKVxyXG4gIG1lc3NhZ2VzOiBNYXA8UGFnZVN0YXR1cywgc3RyaW5nPjtcclxuICBASW5wdXQoKVxyXG4gIHN0YXR1czogUGFnZVN0YXR1cyA9IFBhZ2VTdGF0dXMuSW5pdDsgLy8gRGV0ZXJtaW5hIGVuIHF1w6kgZXN0YWRvIGVzdMOhIGxhIHDDoWdpbmE6IFBhZ2VTdGF0dXMuSW5pdCwgUGFnZVN0YXR1cy5TRUFSQ0hJTkcsIFBhZ2VTdGF0dXMuRklOSVNIX1NFQVJDSFxyXG4gIEBJbnB1dChcInR5cGVcIilcclxuICB0eXBlRm9vdGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBtb3N0cmFyRW5sYWNlc1BhZ2luYXM6IGJvb2xlYW4gPSB0cnVlOyAgLy9kZXByZWNhdGVkXHJcbiAgQElucHV0KClcclxuICBtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYTogYm9vbGVhbiA9IHRydWU7IC8vZGVwcmVjYXRlZFxyXG4gIEBJbnB1dCgpXHJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBmb3JjZVBhZ2VMaW5rU2l6ZTogbnVtYmVyID0gMTsgLy9kZXByZWNhdGVkIG7Dum1lcm8gZGUgZW5sYWNlcyBlbiBlbCBwYWdpbmFkb3IgcGFyYSBwb2RlciBuYXZlZ2FyIGhhY2lhIGRlbGFudGUgbyBkZXRyw6FzIHF1ZSBmb3J6YW1vcyBhIHF1ZSBoYXlhXHJcbiAgQE91dHB1dCgpXHJcbiAgb25QYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7IC8vcGFyYSBub3RpZmljYXIgY2FtYmlvcyBlbiBsYSBww6FnaW5hIGEgbW9zdHJhclxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uTmV3UGFnZVNpemUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy9wYXJhIG5vdGlmaWNhciBjYW1iaW9zIGVuIGxvcyBlbGVtZW50b3MgYSBtb3N0cmFyIHBvciBww6FnaW5hXHJcblxyXG4gIGJhc2VJdGVtc1BlclBhZ2U6IG51bWJlciA9IEJhc2VGaWx0ZXIuUkVTVUxUQURPU19QQUdFOyAvLyBndWFyZGFtb3MgZWwgbsO6bWVybyBkZSByZXN1bHRhZG9zIHByZS1jb25maWd1cmFkb3MgcG9yIHDDoWdpbmEgcGFyYSBtb3N0cmFyIGxhIGxpc3RhIGRlIHgsIHgrMTAgeSB4KzIwXHJcbiAgbWF4Q3VycmVudEl0ZW1zOiBudW1iZXIgPSAtMTsgICAvLyBuw7ptZXJvIGRlIGVsZW1lbnRvcyBxdWUgbW9zdHJhbW9zIGVuIHBhbnRhbGxhLiBOZWNlc2FyaW8gcGFyYSBlbCBtb2RvIHNjcm9sbFxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHlwZUZvb3RlciA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy50eXBlRm9vdGVyID0gXCJsaXN0XCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc2N1Y2hhcmVtb3MgYSBjYW1iaW9zIGVuIGxhcyBwcm9waWVkYWRlcyB0b3RhbEl0ZW1zIHBhcmEgYWN0dWFsaXphciBlbCBwYWdpbmFkb3IgY29uIHJlc3BlY3RvIGEgbGFzIHDDoWdpbmFzIHF1ZSBtb3N0cmFtb3NcclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xyXG4gICAgZm9yIChsZXQgcHJvcE5hbWUgaW4gY2hhbmdlcykge1xyXG4gICAgICBsZXQgY2hhbmdlZFByb3AgPSBjaGFuZ2VzW3Byb3BOYW1lXTtcclxuICAgICAgaWYgKHByb3BOYW1lID09PSBcInN0YXR1c1wiKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwidG90YWxJdGVtc1wiKSB7XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4Q3VycmVudEl0ZW1zKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwiZmlsdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU1heEN1cnJlbnRJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UGFqaWdhdG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gJ2xpc3QnICYmIHRoaXMudmlzaWJsZSAmJiB0aGlzLnBhZ2luYXRvcjtcclxuICB9XHJcblxyXG4gIHNob3dTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlRm9vdGVyID09PSAnc2Nyb2xsJyAmJiB0aGlzLnZpc2libGU7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVNYXhDdXJyZW50SXRlbXMoKSB7XHJcbiAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMuZmlsdGVyPy5wYWdpbmEgKiB0aGlzLmZpbHRlcj8ucmVzdWx0YWRvcztcclxuICAgIGlmICh0aGlzLm1heEN1cnJlbnRJdGVtcyA+IHRoaXMudG90YWxJdGVtcykge1xyXG4gICAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMudG90YWxJdGVtcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vbk5ld1BhZ2VTaXplLmVtaXQocGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGUoKSB7XHJcbiAgICBpZiAodGhpcy5maXhlZCAmJiB0aGlzLnR5cGVGb290ZXIgPT09IFRZUEVfTElTVCB8fCB0aGlzLnR5cGVGb290ZXIgPT09IFRZUEVfU0NST0xMKSB7XHJcbiAgICAgIHJldHVybiBcImZvb3RlciBuYXZiYXItZml4ZWQtYm90dG9tXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZml4ZWQgJiYgdGhpcy50eXBlRm9vdGVyID09PSBUWVBFX0ZPUk0pIHtcclxuICAgICAgcmV0dXJuIFwiZm9vdGVyIG5hdmJhci1maXhlZC1ib3R0b20tZm9ybVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiZm9vdGVyXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9vdGVyIFtjbGFzc109XCJnZXRTdHlsZSgpXCI+XHJcblxyXG4gIEBpZiAoc2hvd1Njcm9sbCgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLW91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFqaWdhdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e1wiYml0bmdsaWJyYXJ5LmZvb3Rlci5yZXN1bHRzXCIgfCB0cmFuc2xvY299fTwvbGFiZWw+XHJcbiAgICAgICAgQGlmIChtYXhDdXJyZW50SXRlbXMgPj0gdG90YWxJdGVtcykge1xyXG4gICAgICAgICAgPHNwYW4+e3t0b3RhbEl0ZW1zfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobWF4Q3VycmVudEl0ZW1zIDwgdG90YWxJdGVtcykge1xyXG4gICAgICAgICAgPHNwYW4+e3ttYXhDdXJyZW50SXRlbXN9fSAvIHt7dG90YWxJdGVtc319PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIEBpZiAoc2hvd1BhamlnYXRvcigpKSB7XHJcbiAgICA8Yml0LXBhamlnYXRvclxyXG4gICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgW3BhZ2VdPVwiZmlsdGVyID8gZmlsdGVyLnBhZ2luYSA6IDFcIlxyXG4gICAgICBbaXRlbXNQZXJQYWdlXT1cImZpbHRlciA/IGZpbHRlci5yZXN1bHRhZG9zIDogMjBcIlxyXG4gICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIltiYXNlSXRlbXNQZXJQYWdlLGJhc2VJdGVtc1BlclBhZ2UqNSxiYXNlSXRlbXNQZXJQYWdlKjI1LGJhc2VJdGVtc1BlclBhZ2UqNTBdXCJcclxuICAgICAgW21heEN1cnJlbnRJdGVtc109XCJtYXhDdXJyZW50SXRlbXNcIlxyXG4gICAgICAob25QYWdlQ2hhbmdlKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAob25QYWdlU2l6ZUNoYW5nZSk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9iaXQtcGFqaWdhdG9yPlxyXG4gIH1cclxuXHJcbiAgQGlmIChtb3N0cmFyQXZpc29zKSB7XHJcbiAgICA8Yml0LWZvb3Rlci1tZXNzYWdlc1xyXG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXNcIlxyXG4gICAgICBbdHlwZUZvb3Rlcl09XCJ0eXBlRm9vdGVyXCJcclxuICAgICAgW3N0YXR1c109XCJzdGF0dXNcIlxyXG4gICAgICBbbWF4Q3VycmVudEl0ZW1zXT1cIm1heEN1cnJlbnRJdGVtc1wiXHJcbiAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCI+PC9iaXQtZm9vdGVyLW1lc3NhZ2VzPlxyXG4gIH1cclxuXHJcbjwvZm9vdGVyPlxyXG4iXX0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV2Rjs7SUFFSTtBQU1KLE1BQU0sT0FBTyxrQkFBa0I7SUFpQzdCO1FBekJBLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlCLFVBQUssR0FBWSxJQUFJLENBQUMsQ0FBQyxtRUFBbUU7UUFJMUYsV0FBTSxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQywwR0FBMEc7UUFJaEosMEJBQXFCLEdBQVksSUFBSSxDQUFDLENBQUUsWUFBWTtRQUVwRCwrQkFBMEIsR0FBWSxJQUFJLENBQUMsQ0FBQyxZQUFZO1FBRXhELFlBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDLENBQUMsZ0hBQWdIO1FBRS9JLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQyxDQUFDLCtDQUErQztRQUUxRixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFV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SztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLE1BQU07c0JBREwsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7dUJBQUMsTUFBTTtnQkFHYixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxNQUFNO2dCQUdQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2UsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi9iYXNlL3NoYXJlZC9iYXNlLmZpbHRlclwiO1xyXG5pbXBvcnQgeyBQYWdlU3RhdHVzLCBUWVBFX0ZPUk0sIFRZUEVfTElTVCwgVFlQRV9TQ1JPTEwgfSBmcm9tIFwiLi4vLi4vZ2xvYmFsLmNvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIG11ZXN0cmEgdW4gcGFnaW5hZG9yIGVuIGxhIHNlY2Npw7NuIGZvb3Rlci5cclxuICoqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJiaXQtZm9vdGVyXCIsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgdGVtcGxhdGVVcmw6IFwiYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaXRGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KClcclxuICB0b3RhbEl0ZW1zOiBudW1iZXI7ICAgICAvLyBOw7ptZXJvIHRvdGFsIGRlIGVsZW1lbnRvcyByZWN1cGVyYWRvcyBkZSBsYSBjb25zdWx0YVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVyOiBCYXNlRmlsdGVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnaW5hdG9yOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgbW9zdHJhckF2aXNvczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBmaXhlZDogYm9vbGVhbiA9IHRydWU7IC8vIEluZGljYXLDoSBzaSBsbyBxdWVyZW1vcyBmaWpvIGFiYWpvIGVuIGxhIHDDoWdpbmEuIFBvciBkZWZlY3RvIHPDrS5cclxuICBASW5wdXQoKVxyXG4gIG1lc3NhZ2VzOiBNYXA8UGFnZVN0YXR1cywgc3RyaW5nPjtcclxuICBASW5wdXQoKVxyXG4gIHN0YXR1czogUGFnZVN0YXR1cyA9IFBhZ2VTdGF0dXMuSW5pdDsgLy8gRGV0ZXJtaW5hIGVuIHF1w6kgZXN0YWRvIGVzdMOhIGxhIHDDoWdpbmE6IFBhZ2VTdGF0dXMuSW5pdCwgUGFnZVN0YXR1cy5TRUFSQ0hJTkcsIFBhZ2VTdGF0dXMuRklOSVNIX1NFQVJDSFxyXG4gIEBJbnB1dChcInR5cGVcIilcclxuICB0eXBlRm9vdGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBtb3N0cmFyRW5sYWNlc1BhZ2luYXM6IGJvb2xlYW4gPSB0cnVlOyAgLy9kZXByZWNhdGVkXHJcbiAgQElucHV0KClcclxuICBtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYTogYm9vbGVhbiA9IHRydWU7IC8vZGVwcmVjYXRlZFxyXG4gIEBJbnB1dCgpXHJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBmb3JjZVBhZ2VMaW5rU2l6ZTogbnVtYmVyID0gMTsgLy9kZXByZWNhdGVkIG7Dum1lcm8gZGUgZW5sYWNlcyBlbiBlbCBwYWdpbmFkb3IgcGFyYSBwb2RlciBuYXZlZ2FyIGhhY2lhIGRlbGFudGUgbyBkZXRyw6FzIHF1ZSBmb3J6YW1vcyBhIHF1ZSBoYXlhXHJcbiAgQE91dHB1dCgpXHJcbiAgb25QYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7IC8vcGFyYSBub3RpZmljYXIgY2FtYmlvcyBlbiBsYSBww6FnaW5hIGEgbW9zdHJhclxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uTmV3UGFnZVNpemUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy9wYXJhIG5vdGlmaWNhciBjYW1iaW9zIGVuIGxvcyBlbGVtZW50b3MgYSBtb3N0cmFyIHBvciBww6FnaW5hXHJcblxyXG4gIGJhc2VJdGVtc1BlclBhZ2U6IG51bWJlciA9IEJhc2VGaWx0ZXIuUkVTVUxUQURPU19QQUdFOyAvLyBndWFyZGFtb3MgZWwgbsO6bWVybyBkZSByZXN1bHRhZG9zIHByZS1jb25maWd1cmFkb3MgcG9yIHDDoWdpbmEgcGFyYSBtb3N0cmFyIGxhIGxpc3RhIGRlIHgsIHgrMTAgeSB4KzIwXHJcbiAgbWF4Q3VycmVudEl0ZW1zOiBudW1iZXIgPSAtMTsgICAvLyBuw7ptZXJvIGRlIGVsZW1lbnRvcyBxdWUgbW9zdHJhbW9zIGVuIHBhbnRhbGxhLiBOZWNlc2FyaW8gcGFyYSBlbCBtb2RvIHNjcm9sbFxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHlwZUZvb3RlciA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy50eXBlRm9vdGVyID0gXCJsaXN0XCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc2N1Y2hhcmVtb3MgYSBjYW1iaW9zIGVuIGxhcyBwcm9waWVkYWRlcyB0b3RhbEl0ZW1zIHBhcmEgYWN0dWFsaXphciBlbCBwYWdpbmFkb3IgY29uIHJlc3BlY3RvIGEgbGFzIHDDoWdpbmFzIHF1ZSBtb3N0cmFtb3NcclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xyXG4gICAgZm9yIChsZXQgcHJvcE5hbWUgaW4gY2hhbmdlcykge1xyXG4gICAgICBsZXQgY2hhbmdlZFByb3AgPSBjaGFuZ2VzW3Byb3BOYW1lXTtcclxuICAgICAgaWYgKHByb3BOYW1lID09PSBcInN0YXR1c1wiKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwidG90YWxJdGVtc1wiKSB7XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4Q3VycmVudEl0ZW1zKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwiZmlsdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU1heEN1cnJlbnRJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UGFqaWdhdG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gJ2xpc3QnICYmIHRoaXMudmlzaWJsZSAmJiB0aGlzLnBhZ2luYXRvcjtcclxuICB9XHJcblxyXG4gIHNob3dTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlRm9vdGVyID09PSAnc2Nyb2xsJyAmJiB0aGlzLnZpc2libGU7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVNYXhDdXJyZW50SXRlbXMoKSB7XHJcbiAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMuZmlsdGVyPy5wYWdpbmEgKiB0aGlzLmZpbHRlcj8ucmVzdWx0YWRvcztcclxuICAgIGlmICh0aGlzLm1heEN1cnJlbnRJdGVtcyA+IHRoaXMudG90YWxJdGVtcykge1xyXG4gICAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMudG90YWxJdGVtcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vbk5ld1BhZ2VTaXplLmVtaXQocGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGUoKSB7XHJcbiAgICBpZiAodGhpcy5maXhlZCAmJiB0aGlzLnR5cGVGb290ZXIgPT09IFRZUEVfTElTVCB8fCB0aGlzLnR5cGVGb290ZXIgPT09IFRZUEVfU0NST0xMKSB7XHJcbiAgICAgIHJldHVybiBcImZvb3RlciBuYXZiYXItZml4ZWQtYm90dG9tXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZml4ZWQgJiYgdGhpcy50eXBlRm9vdGVyID09PSBUWVBFX0ZPUk0pIHtcclxuICAgICAgcmV0dXJuIFwiZm9vdGVyIG5hdmJhci1maXhlZC1ib3R0b20tZm9ybVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiZm9vdGVyXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9vdGVyIFtjbGFzc109XCJnZXRTdHlsZSgpXCI+XHJcblxyXG4gIEBpZiAoc2hvd1Njcm9sbCgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLW91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFqaWdhdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e1wiYml0bmdsaWJyYXJ5LmZvb3Rlci5yZXN1bHRzXCIgfCB0cmFuc2xvY299fTwvbGFiZWw+XHJcbiAgICAgICAgQGlmIChtYXhDdXJyZW50SXRlbXMgPj0gdG90YWxJdGVtcykge1xyXG4gICAgICAgICAgPHNwYW4+e3t0b3RhbEl0ZW1zfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobWF4Q3VycmVudEl0ZW1zIDwgdG90YWxJdGVtcykge1xyXG4gICAgICAgICAgPHNwYW4+e3ttYXhDdXJyZW50SXRlbXN9fSAvIHt7dG90YWxJdGVtc319PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIEBpZiAoc2hvd1BhamlnYXRvcigpKSB7XHJcbiAgICA8Yml0LXBhamlnYXRvclxyXG4gICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgW3BhZ2VdPVwiZmlsdGVyID8gZmlsdGVyLnBhZ2luYSA6IDFcIlxyXG4gICAgICBbaXRlbXNQZXJQYWdlXT1cImZpbHRlciA/IGZpbHRlci5yZXN1bHRhZG9zIDogMjBcIlxyXG4gICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIltiYXNlSXRlbXNQZXJQYWdlLGJhc2VJdGVtc1BlclBhZ2UqMi41LGJhc2VJdGVtc1BlclBhZ2UqNSxiYXNlSXRlbXNQZXJQYWdlKjEyLjUsYmFzZUl0ZW1zUGVyUGFnZSoyNSxiYXNlSXRlbXNQZXJQYWdlKjUwXVwiXHJcbiAgICAgIFttYXhDdXJyZW50SXRlbXNdPVwibWF4Q3VycmVudEl0ZW1zXCJcclxuICAgICAgKG9uUGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKG9uUGFnZVNpemVDaGFuZ2UpPVwicGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvYml0LXBhamlnYXRvcj5cclxuICB9XHJcblxyXG4gIEBpZiAobW9zdHJhckF2aXNvcykge1xyXG4gICAgPGJpdC1mb290ZXItbWVzc2FnZXNcclxuICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCJcclxuICAgICAgW3R5cGVGb290ZXJdPVwidHlwZUZvb3RlclwiXHJcbiAgICAgIFtzdGF0dXNdPVwic3RhdHVzXCJcclxuICAgICAgW21heEN1cnJlbnRJdGVtc109XCJtYXhDdXJyZW50SXRlbXNcIlxyXG4gICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiPjwvYml0LWZvb3Rlci1tZXNzYWdlcz5cclxuICB9XHJcblxyXG48L2Zvb3Rlcj5cclxuIl19
|
|
@@ -73,7 +73,7 @@ export class CustomValidators {
|
|
|
73
73
|
return result;
|
|
74
74
|
}
|
|
75
75
|
static required(control) {
|
|
76
|
-
if (
|
|
76
|
+
if (control.value === null || control.value === undefined || control.value === "") {
|
|
77
77
|
return { required: true };
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
@@ -627,4 +627,4 @@ export class CustomValidators {
|
|
|
627
627
|
return result;
|
|
628
628
|
}
|
|
629
629
|
}
|
|
630
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JpdC1uZy1saWJyYXJ5L3NyYy9saWIvc2hhcmVkbGlicmFyeS9zZXJ2aWNlcy9jdXN0b20tdmFsaWRhdG9ycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsTUFBTSxPQUFPLGdCQUFnQjthQUNwQixXQUFNLEdBQUc7UUFDZCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1FBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO1FBQzlFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BGLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7UUFDaEUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1FBQ3RFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7UUFDOUQsYUFBYSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQztRQUNsRSxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FB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LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEdlbmVyYWxVdGlscyB9IGZyb20gXCIuL2dlbmVyYWwtdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVkTWVzc2FnZSwgRXJyb3JWYWxpZGF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vYmFzZS9tb2RlbHMvdHlwZXNcIjtcclxuaW1wb3J0IHsgYnVpbGRUcmFuc2xhdGVkTWVzc2FnZSB9IGZyb20gXCIuL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tVmFsaWRhdG9ycyB7XHJcbiAgc3RhdGljIGNvbmZpZyA9IHtcclxuICAgIHJlcXVpcmVkOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwicmVxdWlyZWRcIiksXHJcbiAgICBpbnZhbGlkRGF0ZTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcIkRhdGEgaW5jb3JyZWN0YVwiKSxcclxuICAgIGludmFsaWRUaW1lOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFRpbWVcIiksXHJcbiAgICBpbnZhbGlkRW1haWxBZGRyZXNzOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZEVtYWlsQWRkcmVzc1wiKSxcclxuICAgIGludmFsaWRFbWFpbENTVkFkZHJlc3M6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkRW1haWxDU1ZBZGRyZXNzXCIpLFxyXG4gICAgaW52YWxpZExvZ2luOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZExvZ2luXCIpLFxyXG4gICAgaW52YWxpZEV0aXF1ZXRhOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZEV0aXF1ZXRhXCIpLFxyXG4gICAgaW52YWxpZE5hbWU6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTmFtZVwiKSxcclxuICAgIGludmFsaWRDb2RpZ286IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkQ29kaWdvXCIpLFxyXG4gICAgaW52YWxpZEFsZmFudW1lcmljbzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRBbGZhbnVtZXJpY29cIiksXHJcbiAgICBpbnZhbGlkQ2FudGlkYWQ6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkQ2FudGlkYWRcIiksXHJcbiAgICBpbnZhbGlkRW50ZXJvUG9zaXRpdm86IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkRW50ZXJvUG9zaXRpdm9cIiksXHJcbiAgICBpbnZhbGlkRW50ZXJvUG9zaXRpdm9JbmNsdXllQ2VybzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRFbnRlcm9Qb3NpdGl2b0luY2x1eWVDZXJvXCIpLFxyXG4gICAgaW52YWxpZENhbnRpZGFkRGVjaW1hbDogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRDYW50aWRhZERlY2ltYWxcIiksXHJcbiAgICBpbnZhbGlkTnVtZXJvUG9zaXRpdm86IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTnVtZXJvUG9zaXRpdm9cIiksXHJcbiAgICBpbnZhbGlkQ29kaWdvUG9zdGFsOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZENvZGlnb1Bvc3RhbFwiKSxcclxuICAgIGludmFsaWRUZWxlZm9ubzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRUZWxlZm9ub1wiKSxcclxuICAgIGludmFsaWRUZWxlZm9ub0NTVjogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRUZWxlZm9ub0NTVlwiKSxcclxuICAgIGludmFsaWRQb3JjZW50YWplOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFBvcmNlbnRhamVcIiksXHJcbiAgICBpbnZhbGlkVXJsOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFVybFwiKSxcclxuICAgIGludmFsaWRQYXRoOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFBhdGhcIiksXHJcbiAgICBpbnZhbGlkTklGOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZE5JRlwiKSxcclxuICAgIGludmFsaWROSUU6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTklFXCIpLFxyXG4gICAgaW52YWxpZENJRjogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRDSUZcIiksXHJcbiAgICBpbnZhbGlkTklGTklFOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZE5JRk5JRVwiKSxcclxuICAgIGludmFsaWRBbnlvOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZEFueW9cIiksXHJcbiAgICBtYXhsZW5ndGg6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJtYXhsZW5ndGhcIiksXHJcbiAgICBpbnZhbGlkTnVtZXJvRG9jdW1lbnRvVGlwb0RvY3VtZW50bzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWROdW1lcm9Eb2N1bWVudG9UaXBvRG9jdW1lbnRvXCIpLFxyXG4gICAgZGlyZWNjaW9uSW5jb21wbGV0YTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImRpcmVjY2lvbkluY29tcGxldGFcIiksXHJcbiAgICByZXF1aXJlZEV4dHJhRGF0YTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcInJlcXVpcmVkRXh0cmFEYXRhXCIpLFxyXG4gICAgaW52YWxpZFJhbmdvRmVjaGFGaW5Qb3N0ZXJpb3JJbmljaW86IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkUmFuZ29GZWNoYUZpblBvc3RlcmlvckluaWNpb1wiKSxcclxuICAgIGludmFsaWRSYW5nb0hvcmFGaW5Qb3N0ZXJpb3JJbmljaW86IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkUmFuZ29Ib3JhRmluUG9zdGVyaW9ySW5pY2lvXCIpLFxyXG4gICAgaW52YWxpZERhdGVUaW1lTm90QWZ0ZXJDdXJyZW50RGF0ZTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWREYXRlVGltZU5vdEFmdGVyQ3VycmVudERhdGVcIilcclxuICB9O1xyXG5cclxuICBzdGF0aWMgQ3VzdG9tVmFsaWRhdG9yc01hcCA9IHtcclxuICAgIGNvZGlnb051bWVyaWNvOiBDdXN0b21WYWxpZGF0b3JzLmNvZGlnb1ZhbGlkYXRvcixcclxuICAgIGNvZGlnb0FsZmFudW1lcmljbzogQ3VzdG9tVmFsaWRhdG9ycy5hbGZhbnVtZXJpY29WYWxpZGF0b3IsXHJcbiAgICBub21icmU6IEN1c3RvbVZhbGlkYXRvcnMubm9tYnJlVmFsaWRhdG9yLFxyXG4gICAgbnVtZXJvOiBDdXN0b21WYWxpZGF0b3JzLmNhbnRpZGFkRGVjaW1hbFZhbGlkYXRvcixcclxuICAgIGVudGVybzogQ3VzdG9tVmFsaWRhdG9ycy5jYW50aWRhZFZhbGlkYXRvcixcclxuICAgIG51bWVyb1Bvc2l0aXZvOiBDdXN0b21WYWxpZGF0b3JzLm51bWVyb1Bvc2l0aXZvVmFsaWRhdG9yLFxyXG4gICAgZW50ZXJvUG9zaXRpdm86IEN1c3RvbVZhbGlkYXRvcnMuZW50ZXJvUG9zaXRpdm9WYWxpZGF0b3IsXHJcbiAgICBuaWY6IEN1c3RvbVZhbGlkYXRvcnMubmlmVmFsaWRhdG9yLFxyXG4gICAgbmllOiBDdXN0b21WYWxpZGF0b3JzLm5pZVZhbGlkYXRvcixcclxuICAgIGNpZjogQ3VzdG9tVmFsaWRhdG9ycy5jaWZWYWxpZGF0b3IsXHJcbiAgICBuaWZuaWU6IEN1c3RvbVZhbGlkYXRvcnMubmlmTmllVmFsaWRhdG9yLFxyXG4gICAgY3A6IEN1c3RvbVZhbGlkYXRvcnMuY29kaWdvUG9zdGFsVmFsaWRhdG9yLFxyXG4gICAgdGVsZWZvbm86IEN1c3RvbVZhbGlkYXRvcnMudGVsZWZvbm9WYWxpZGF0b3IsXHJcbiAgICB0ZWxlZm9ub0NTVjogQ3VzdG9tVmFsaWRhdG9ycy50ZWxlZm9ub0NTVlZhbGlkYXRvcixcclxuICAgIGVtYWlsQ1NWOiBDdXN0b21WYWxpZGF0b3JzLmVtYWlsQ1NWVmFsaWRhdG9yLFxyXG4gICAgZW1haWw6IEN1c3RvbVZhbGlkYXRvcnMuZW1haWxWYWxpZGF0b3IsXHJcbiAgICBmZWNoYTogQ3VzdG9tVmFsaWRhdG9ycy5kYXRhVmFsaWRhdG9yLFxyXG4gICAgYW55bzogQ3VzdG9tVmFsaWRhdG9ycy5hbnlvVmFsaWRhdG9yXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGJ1aWxkRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgcGFyYW1zPzoge30pOiBUcmFuc2xhdGVkTWVzc2FnZSB7XHJcbiAgICByZXR1cm4gYnVpbGRUcmFuc2xhdGVkTWVzc2FnZShcImZvcm0ubWVzc2FnZXMuXCIgKyBjb2RlLCBcImJpdG5nbGlicmFyeVwiLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFZhbGlkYXRvckVycm9yTWVzc2FnZShjb2RlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tjb2RlXTtcclxuICB9XHJcblxyXG4gIC8vIG3DqXRvZG8gcGFyYSB1bmlyIHZhbGlkYWRvcmVzXHJcbiAgc3RhdGljIGNvbXBvc2UodmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSk6IFZhbGlkYXRvckZuIHtcclxuICAgIGxldCByZXN1bHQgPSBmdW5jdGlvbiAoZzogRm9ybUdyb3VwKSB7XHJcbiAgICAgIC8vIGVqZWN1dGFtb3MgY2FkYSB1bm8gZGUgbG9zIHZhbGlkYWRvcmVzIHkgdW5pbW9zIHN1cyByZXN1bHRhZG9zXHJcbiAgICAgIGxldCBpbm5lclJlc3VsdCA9IHZhbGlkYXRvcnMubWFwKCh2YWxpZGF0b3IpID0+IHZhbGlkYXRvcihnKSkucmVkdWNlKChhY2MsIHJlc3VsdCA9IHt9KSA9PiBPYmplY3QuYXNzaWduKGFjYywgcmVzdWx0KSwge30pO1xyXG4gICAgICByZXR1cm4gaW5uZXJSZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZXF1aXJlZChjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBlc3RlIHZhbGlkYWRvciBlbiByZWFsaWRhZCBubyBlc3TDoSBoYWNpZW5kbyBuYWRhIHBvcnF1ZSBiaXQtaW5wdXQsIHBhcmEgZmVjaGFzIG5vIHbDoWxpZGFzLCBzdXN0aXR1eWVcclxuICAvLyBjb250cm9sLnZhbHVlIHBvciB1biBudWxsIHkgZWwgdmFsaWRhZG9yIHBhc2Egc2llbXByZVxyXG4gIHN0YXRpYyBkYXRhVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gZm9ybWF0byBkZC9NTS95eXl5XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5tYXRjaCgvXigwWzEtOV18MVxcZHwyXFxkfDNbMDFdKVxcLygwWzEtOV18MVswLTJdKVxcLygxOXwyMClcXGR7Mn0kLykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRGF0ZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRpbWVWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBmb3JtYXRvIGhoOm1tXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5tYXRjaCgvXlswLTldWzAtOV06WzAtOV1bMC05XSQvKSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkVGltZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gUkZDIDI4MjIgY29tcGxpYW50IHJlZ2V4XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5tYXRjaCgvXFxTK0AoWy1cXHddK1xcLikrXFx3Ky9nKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRFbWFpbEFkZHJlc3M6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbWFpbENTVlZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIFJGQyAyODIyIGNvbXBsaWFudCByZWdleFxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL14oKCApKltcXHdcXC5dK0AoWy1cXHddK1xcLikrXFx3KyggKSopKCwoICkqW1xcd1xcLl0rQChbLVxcd10rXFwuKStcXHcrKCApKikqJC9nKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRFbWFpbENTVkFkZHJlc3M6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBsb2dpblZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eW2EtejAtOV8tXXszLDE1fS8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZExvZ2luOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZXRpcXVldGFWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5tYXRjaCgvXlthLXpBLVowLTlfLV0rLykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRXRpcXVldGE6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBub21icmVWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICFjb250cm9sLnZhbHVlIHx8XHJcbiAgICAgIC9eKFtBLVphLXowLTlfXFwuXFwsXFwnXFxcIlxcKFxcKVxcO1xcOlxcLVxcL1xcQFxcP1xcJVxcP1xcwr9cXCZcXCtcXC1cXCpcXC9cXCBcXG5cXHLCusKqJ8K04oCZwrfDr8O8P2DDocOpw63Ds8O6w4HDicONw5PDmsOgw6jDrMOyw7nDgMOIw4zDksOZw4TDi8OPw5bDnMOkw6vDr8O2w7zDscORw6fDh8KhISNdKSskLy50ZXN0KGNvbnRyb2wudmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkTmFtZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNvZGlnb1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eKFswLTldKSskLykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkQ29kaWdvOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWxmYW51bWVyaWNvVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL14oW0EtWjAtOV9cXC5cXC3DkcOHXSkrJC8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEFsZmFudW1lcmljbzogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhbnRpZGFkVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gdmFsdWUgaXMgZWl0aGVyIGVtcHR5LCBvciBhIG51bWJlciB3aXRob3V0IGRlY2ltYWxzXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtICUgMSA9PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaW52YWxpZENhbnRpZGFkOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgbsO6bWVyb3MgZW50ZXJvcyAoc2luIGRlY2ltYWxlcykgcG9zaXRpdm9zICg+PTApICovXHJcbiAgc3RhdGljIGVudGVyb1Bvc2l0aXZvVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gdmFsdWUgaXMgZWl0aGVyIGVtcHR5LCBvciBhIG51bWJlciB3aXRob3V0IGRlY2ltYWxzXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtICUgMSA9PSAwICYmIG51bSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaW52YWxpZEVudGVyb1Bvc2l0aXZvOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW50ZXJvUG9zaXRpdm9WYWxpZGF0b3JJbmNsdXllQ2Vyb1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIHZhbHVlIGlzIGVpdGhlciBlbXB0eSwgb3IgYSBwb3NpdGl2ZSBudW1iZXIgKGluY2x1ZGluZyAwKSB3aXRob3V0IGRlY2ltYWxzXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtICUgMSA9PSAwICYmIG51bSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaW52YWxpZEVudGVyb1Bvc2l0aXZvSW5jbHV5ZUNlcm86IHRydWUgfTtcclxuICB9XHJcblxyXG4gIC8qIFZhbGlkYSBuw7ptZXJvcyBlbnRlcm9zIChjb24gZGVjaW1hbGVzKSAqL1xyXG4gIHN0YXRpYyBjYW50aWRhZERlY2ltYWxWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyB2YWx1ZSBpcyBlaXRoZXIgZW1wdHksIG9yIGEgbnVtYmVyIChpbmNsdWRpbmcgZGVjaW1hbHMpXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIiB8fCAhaXNOYU4oTnVtYmVyKGNvbnRyb2wudmFsdWUpKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRDYW50aWRhZERlY2ltYWw6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIFZhbGlkYSBuw7ptZXJvcyBlbnRlcm9zIChjb24gZGVjaW1hbGVzKSBwb3NpdGl2b3MgKD49MCkgKi9cclxuICBzdGF0aWMgbnVtZXJvUG9zaXRpdm9WYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIiB8fCAoIWlzTmFOKE51bWJlcihjb250cm9sLnZhbHVlKSkgJiYgTnVtYmVyKGNvbnRyb2wudmFsdWUpID49IDApKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZE51bWVyb1Bvc2l0aXZvOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgY8OzZGlnbyBwb3N0YWwgKG51bWVybyBkZSA1IGTDrWdpdG9zKSAqL1xyXG4gIHN0YXRpYyBjb2RpZ29Qb3N0YWxWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgKGNvbnRyb2wudmFsdWUubWF0Y2goL14oWzAtOV0pKyQvKSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1KSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRDb2RpZ29Qb3N0YWw6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIFZhbGlkYSB0ZWxlZm9ubyAobnVtZXJvIGRlIDkgZMOtZ2l0b3MpICovXHJcbiAgc3RhdGljIHRlbGVmb25vVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL15bMC05XVswLTldWzAtOV1bMC05XVswLTldWzAtOV1bMC05XVswLTldWzAtOV0kLykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkVGVsZWZvbm86IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIFZhbGlkYSB0ZWxlZm9ubyAobnVtZXJvIGRlIDkgZMOtZ2l0b3MpICovXHJcbiAgc3RhdGljIHRlbGVmb25vQ1NWVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL15bMC05XXs5fSgoICosICopWzAtOV17OX0pKiQvZykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkVGVsZWZvbm9DU1Y6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBidWlsZExvbmdpdHVkVmFsaWRhdG9yKGxvbjogbnVtYmVyKSB7XHJcbiAgICBsZXQgZXJyb3JLZXkgPSBcImludmFsaWRMb25naXR1ZFwiO1xyXG4gICAgbGV0IGVycm9yS2V5SW5kZXggPSBlcnJvcktleSArIFwiIF9cIiArIGxvbi50b1N0cmluZygpO1xyXG4gICAgQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXlJbmRleF0gPSBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKGVycm9yS2V5LCB7IGxvbjogbG9uIH0pO1xyXG4gICAgcmV0dXJuIChjb250cm9sKSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA8PSBsb24pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcmV0ID0ge307XHJcbiAgICAgICAgcmV0W2Vycm9yS2V5SW5kZXhdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGJ1aWxkQ2FudGlkYWRNaW5WYWxpZGF0b3IobWluOiBudW1iZXIpIHtcclxuICAgIGxldCBlcnJvcktleSA9IFwiaW52YWxpZENhbnRpZGFkTWluXCI7XHJcbiAgICBsZXQgZXJyb3JLZXlJbmRleCA9IGVycm9yS2V5ICsgXCIgX1wiICsgbWluLnRvU3RyaW5nKCk7XHJcbiAgICBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tlcnJvcktleUluZGV4XSA9IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoZXJyb3JLZXksIHsgbWluOiBtaW4gfSk7XHJcbiAgICByZXR1cm4gKGNvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IFwiXCIgfHwgY29udHJvbC52YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgbGV0IG51bSA9IE51bWJlcihjb250cm9sLnZhbHVlKTtcclxuICAgICAgaWYgKGlzTmFOKG51bSkgfHwgbnVtID49IG1pbikge1xyXG4gICAgICAgIC8vIHNpIG5vIGVzIG51bcOpcmljbyBvIGVsIHZhbG9yID49IG1pbiwgcGFzYSBsYSB2YWxpZGFjacOzblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCByZXQgPSB7fTtcclxuICAgICAgICByZXRbZXJyb3JLZXlJbmRleF0gPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYnVpbGRDYW50aWRhZE1heFZhbGlkYXRvcihtYXg6IG51bWJlcikge1xyXG4gICAgbGV0IGVycm9yS2V5ID0gXCJpbnZhbGlkQ2FudGlkYWRNYXhcIjtcclxuICAgIGxldCBlcnJvcktleUluZGV4ID0gZXJyb3JLZXkgKyBcIl9cIiArIG1heC50b1N0cmluZygpO1xyXG4gICAgQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXlJbmRleF0gPSBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKGVycm9yS2V5LCB7IG1heDogbWF4IH0pO1xyXG4gICAgcmV0dXJuIChjb250cm9sKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlID09PSBcIlwiIHx8IGNvbnRyb2wudmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIGlmIChpc05hTihudW0pIHx8IG51bSA8PSBtYXgpIHtcclxuICAgICAgICAvLyBzaSBubyBlcyBudW3DqXJpY28gbyBlbCB2YWxvciDiiaQgbWF4LCBwYXNhIGxhIHZhbGlkYWNpw7NuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHt9O1xyXG4gICAgICAgIHJldFtlcnJvcktleUluZGV4XSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBidWlsZENhbnRpZGFkTWluTWF4VmFsaWRhdG9yKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgbGV0IGVycm9yS2V5ID0gXCJpbnZhbGlkQ2FudGlkYWRNaW5NYXhcIjtcclxuICAgIGxldCBlcnJvcktleUluZGV4ID0gZXJyb3JLZXkgKyBcIl9cIiArIG1pbi50b1N0cmluZygpICsgXCJfXCIgKyBtYXgudG9TdHJpbmcoKTtcclxuICAgIEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2Vycm9yS2V5SW5kZXhdID0gQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShlcnJvcktleSwge1xyXG4gICAgICBtaW46IG1pbixcclxuICAgICAgbWF4OiBtYXhcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChjb250cm9sKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlID09PSBcIlwiIHx8IGNvbnRyb2wudmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIGlmICghaXNOYU4obnVtKSAmJiBudW0gPj0gbWluICYmIG51bSA8PSBtYXgpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcmV0ID0ge307XHJcbiAgICAgICAgcmV0W2Vycm9yS2V5SW5kZXhdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBvcmNlbnRhamVWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBleHBlY3RlZCBhIG51bWVyaWMgdmFsdWUgYmV0d2VlbiAwIGFuZCAxMDBcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlID09PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG4gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIGlmICghaXNOYU4obikgJiYgbiA+PSAwICYmIG4gPD0gMTAwKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZFBvcmNlbnRhamU6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHVybFZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcclxuICAgICAgXCJeKGh0dHBzPzpcXFxcL1xcXFwvKT9cIiArIC8vIHByb3RvY29sXHJcbiAgICAgICAgXCIoKChbYS16XFxcXGRdKFthLXpcXFxcZC1dKlthLXpcXFxcZF0pKilcXFxcLj8pK1thLXpdezIsfXxcIiArIC8vIGRvbWFpbiBuYW1lXHJcbiAgICAgICAgXCIoKFxcXFxkezEsM31cXFxcLil7M31cXFxcZHsxLDN9KSlcIiArIC8vIE9SIGlwICh2NCkgYWRkcmVzc1xyXG4gICAgICAgIFwiKFxcXFw6XFxcXGQrKT8oXFxcXC9bLWEtelxcXFxkJV8ufitdKikqXCIgKyAvLyBwb3J0IGFuZCBwYXRoXHJcbiAgICAgICAgXCIoXFxcXD9bOyZhLXpcXFxcZCVfLn4rPS1dKik/XCIgKyAvLyBxdWVyeSBzdHJpbmdcclxuICAgICAgICBcIihcXFxcI1stYS16XFxcXGRfXSopPyRcIixcclxuICAgICAgXCJpXCJcclxuICAgICk7IC8vIGZyYWdtZW50IGxvY2F0b3JcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBwYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkVXJsOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGF0aFZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcclxuICAgICAgXCJeKChcXFxcLyk/Wy1hLXpcXFxcZCVfLn4rXSopKlwiICsgLy8gcG9ydCBhbmQgcGF0aFxyXG4gICAgICAgIFwiKFxcXFw/WzsmYS16XFxcXGQlXy5+Kz0tXSopP1wiICsgLy8gcXVlcnkgc3RyaW5nXHJcbiAgICAgICAgXCIoXFxcXCNbLWEtelxcXFxkX10qKT8kXCIsXHJcbiAgICAgIFwiaVwiXHJcbiAgICApOyAvLyBmcmFnbWVudCBsb2NhdG9yXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgcGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFBhdGg6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgdW4gc3RyaW5nIGNvbiB0b2RvcyBsb3MgZXJyb3JlcyBxdWUgY29udGllbmUgZWwgZm9ybXVsYXJpbywgc2VwYXJhZG9zIHBvciBzYWx0b3MgZGUgbMOtbmVhLlxyXG4gICAqL1xyXG4gIHN0YXRpYyB2YWxpZGF0ZUZvcm0oZm9ybTogRm9ybUdyb3VwLCBwcmVmaXg6IHN0cmluZ1tdID0gW10pOiBFcnJvclZhbGlkYXRlRm9ybVtdIHtcclxuICAgIGxldCBtZW5zYWplczogRXJyb3JWYWxpZGF0ZUZvcm1bXSA9IFtdO1xyXG4gICAgLy8gZXJyb3JlcyBlbiB0w6lybWlub3MgZGUgZ3J1cG9cclxuICAgIGZvciAobGV0IGVycm9yS2V5IGluIGZvcm0uZXJyb3JzKSB7XHJcbiAgICAgIGxldCBwciA9IHByZWZpeCA/IGAke3ByZWZpeH06IGAgOiBcIlwiO1xyXG4gICAgICBtZW5zYWplcy5wdXNoKHsgcHJlZml4ZXM6IFtwcl0sIGVycm9yTWVzc2FnZTogQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXldIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGNvbnRyb2xLZXkgaW4gZm9ybS5jb250cm9scykge1xyXG4gICAgICBsZXQgY29udHJvbCA9IGZvcm0uY29udHJvbHNbY29udHJvbEtleV07XHJcbiAgICAgIGlmICghY29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIC8vIG5vIGVzIHbDoWxpZG8sIGhheSBtZW5zYWplcyBxdWUgcmVjdXBlcmFyXHJcbiAgICAgICAgbGV0IGNvbnRyb2xMYWJlbDogc3RyaW5nW10gPSBwcmVmaXguY29uY2F0KFtjb250cm9sS2V5XSk7IC8vIG5vbWJyZSBhcGlsYWRvXHJcblxyXG4gICAgICAgIC8vIGRldGVjdGFtb3Mgc2kgZXMgdW4gY2FtcG8gbyB1biBmb3JtdWxhcmlvIGFuaWRhZG9cclxuICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgLy8gZXMgdW4gZm9ybXVsYXJpbyBhbmlkYWRvLCBzZWd1aW1vcyBiYWphbmRvIHJlY3Vyc2l2YW1lbnRlXHJcbiAgICAgICAgICBtZW5zYWplcyA9IG1lbnNhamVzLmNvbmNhdChDdXN0b21WYWxpZGF0b3JzLnZhbGlkYXRlRm9ybShjb250cm9sLCBjb250cm9sTGFiZWwpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgIC8vIGVzIHVuIGNhbXBvIGZpbmFsLCBhw7FhZGltb3Mgc3VzIG1lbnNhamVzIGRlIGVycm9yXHJcbiAgICAgICAgICBmb3IgKGxldCBlcnJvcktleSBpbiBjb250cm9sLmVycm9ycykge1xyXG4gICAgICAgICAgICBtZW5zYWplcy5wdXNoKHsgcHJlZml4ZXM6IGNvbnRyb2xMYWJlbCwgZXJyb3JNZXNzYWdlOiBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tlcnJvcktleV0gfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgLy8gZXMgdW5hIGxpc3RhIGRlIGNvbnRyb2xlcyBhbmlkYWRhLCBsYSByZWNvcnJlbW9zXHJcbiAgICAgICAgICBjb250cm9sLmNvbnRyb2xzICYmXHJcbiAgICAgICAgICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaCgoYXJyQ29udHJvbCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgYXJyQ29udHJvbExhYmVsOiBzdHJpbmdbXSA9IGNvbnRyb2xMYWJlbC5jb25jYXQoW2luZGV4LnRvU3RyaW5nKCldKTtcclxuICAgICAgICAgICAgICBpZiAoYXJyQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZXMgdW5hIGxpc3RhIGRlIEZvcm1Hcm91cHMsIGJhamFtb3MgYSBlbGxvcyByZWN1cnNpdmFtZW50ZVxyXG4gICAgICAgICAgICAgICAgbWVuc2FqZXMgPSBtZW5zYWplcy5jb25jYXQoQ3VzdG9tVmFsaWRhdG9ycy52YWxpZGF0ZUZvcm0oYXJyQ29udHJvbCwgYXJyQ29udHJvbExhYmVsKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcnJDb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlcyB1bmEgbGlzdGEgZGUgRm9ybUNvbnRyb2xzLCBsb3MgdHJhdGFtb3MgZGVzZGUgYXF1w61cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGVycm9yS2V5IGluIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1lbnNhamVzLnB1c2goeyBwcmVmaXhlczogYXJyQ29udHJvbExhYmVsLCBlcnJvck1lc3NhZ2U6IEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2Vycm9yS2V5XSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gPz8/IMK/VW4gYXJyYXkgZGUgYXJyYXlzPyBObyBlc3TDoSBwcmV2aXN0by5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0N1c3RvbVZhbGlkYXRvcnNdIFVuZXhwZWN0ZWQgRm9ybUFycmF5IHdpdGggbmVzdGVkIEZvcm1BcnJheXNcIik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtZW5zYWplcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlY2liZSB1biBvYmpldG8gY29uIGxhcyBwcm9waWVkYWRlcyB7ZmllbGRUaXBvLCBmaWVsZE51bWVyb30geSBkZXZ1ZWx2ZSB1biB2YWxpZGFkb3IgZGUgZm9ybXVsYXJpbyBwYXJhIGRvY3VtZW50b3MgZGUgaWRlbnRpZmljYWNpw7NuLlxyXG4gICAqIEVsIGVycm9yIHF1ZSBwdWVkZSBnZW5lcmFyc2UgZXMgZGVsIHRpcG8gJ2ludmFsaWROdW1lcm9Eb2N1bWVudG9UaXBvRG9jdW1lbnRvJy5cclxuICAgKi9cclxuICBzdGF0aWMgYnVpbGROdW1lcm9Eb2N1bWVudG9WYWxpZGF0b3IoeyBmaWVsZFRpcG8gPSBcImRvY3VtZW50b1RpcG9cIiwgZmllbGROdW1lcm8gPSBcImRvY3VtZW50b051bWVyb1wiIH0gPSB7fSk6IFZhbGlkYXRvckZuIHtcclxuICAgIGxldCByZXN1bHQgPSBmdW5jdGlvbiAoZzogRm9ybUdyb3VwKSB7XHJcbiAgICAgIGlmICghZykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkb2N1bWVudG9UaXBvID0gZy5nZXQoZmllbGRUaXBvKSAmJiBnLmdldChmaWVsZFRpcG8pLnZhbHVlO1xyXG4gICAgICBsZXQgZG9jdW1lbnRvTnVtZXJvID0gZyAmJiBnLmdldChmaWVsZE51bWVybykgJiYgZy5nZXQoZmllbGROdW1lcm8pLnZhbHVlO1xyXG4gICAgICBsZXQgaW52YWxpZCA9IGZhbHNlO1xyXG4gICAgICBpZiAoZG9jdW1lbnRvVGlwbyAmJiBkb2N1bWVudG9OdW1lcm8pIHtcclxuICAgICAgICBpZiAoZG9jdW1lbnRvVGlwbyA9PSBcIkROSVwiKSB7XHJcbiAgICAgICAgICBpbnZhbGlkID0gIUN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZEROSShkb2N1bWVudG9OdW1lcm8pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRvVGlwbyA9PSBcIkNJRlwiKSB7XHJcbiAgICAgICAgICBpbnZhbGlkID0gIUN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZENJRihkb2N1bWVudG9OdW1lcm8pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRvVGlwbyA9PSBcIk5JRlwiKSB7XHJcbiAgICAgICAgICAvL2ludmFsaWQgPSAhZG9jdW1lbnRvTnVtZXJvLm1hdGNoKC9eWzAtOV17OH1bYS16fEEtWl0kLyk7XHJcbiAgICAgICAgICBpbnZhbGlkID0gIUN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZE5JRihkb2N1bWVudG9OdW1lcm8pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRvVGlwbyA9PSBcIk5JRVwiKSB7XHJcbiAgICAgICAgICBpbnZhbGlkID0gIUN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZE5JRShkb2N1bWVudG9OdW1lcm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGludmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBpbnZhbGlkTnVtZXJvRG9jdW1lbnRvVGlwb0RvY3VtZW50bzogdHJ1ZSB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuaWZWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgQ3VzdG9tVmFsaWRhdG9ycy5pc1ZhbGlkTklGKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZE5JRjogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5pZVZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWROSUUoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkTklFOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbmlmTmllVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IEN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZE5JRihjb250cm9sLnZhbHVlKSB8fCBDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWROSUUoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkTklGTklFOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2lmVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgbGV0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKC9eW2EtenxBLVpdWzAtOV17N31bYS16fEEtWnwwLTldLyk7IC8vIFRPRE9cclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBwYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkQ0lGOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYW55b1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgvXlswLTldezR9JC8pOyAvLyBUT0RPXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgcGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEFueW86IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc1ZhbGlkRE5JKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlOyAvLyDCv2RlYmVyw61hbW9zIHZhbGlkYXIgYWxnbz8gQ29uIGxldHJhIHlhIHRlbmVtb3MgZWwgTklGXHJcbiAgfVxyXG5cclxuICAvLyBSZWZlcmVuY2lhIHByaW5jaXBhbDogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vY2FybG9zLW1nODkvNGFhYWZhMzEwYzllNGI5MWY1ZmI4OTA1NDBmMzhjYWVcclxuICBzdGF0aWMgaXNWYWxpZENJRih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBDSUZfUkVHRVggPSAvXihbQUJDREVGR0hKS0xNTlBRUlNVVlddKShcXGR7N30pKFswLTlBLUpdKSQvO1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubWF0Y2goQ0lGX1JFR0VYKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcclxuICAgIHZhciBtYXRjaCA9IHZhbHVlLm1hdGNoKENJRl9SRUdFWCk7XHJcbiAgICBjb25zdCBsZXR0ZXIgPSBtYXRjaFsxXTtcclxuICAgIGNvbnN0IG51bWJlciA9IG1hdGNoWzJdO1xyXG4gICAgY29uc3QgY29udHJvbCA9IG1hdGNoWzNdO1xyXG5cclxuICAgIHZhciBldmVuX3N1bSA9IDA7XHJcbiAgICB2YXIgb2RkX3N1bSA9IDA7XHJcbiAgICB2YXIgbjogbnVtYmVyO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG4gPSBwYXJzZUludChudW1iZXJbaV0sIDEwKTtcclxuICAgICAgLy8gT2RkIHBvc2l0aW9ucyAoRXZlbiBpbmRleCBlcXVhbHMgdG8gb2RkIHBvc2l0aW9uLiBpPTAgZXF1YWxzIGZpcnN0IHBvc2l0aW9uKVxyXG4gICAgICBpZiAoaSAlIDIgPT09IDApIHtcclxuICAgICAgICAvLyBPZGQgcG9zaXRpb25zIGFyZSBtdWx0aXBsaWVkIGZpcnN0XHJcbiAgICAgICAgbiAqPSAyO1xyXG4gICAgICAgIC8vIElmIHRoZSBtdWx0aXBsaWNhdGlvbiBpcyBiaWdnZXIgdGhhbiAxMCB3ZSBuZWVkIHRvIGFkanVzdFxyXG4gICAgICAgIG9kZF9zdW0gKz0gbiA8IDEwID8gbiA6IG4gLSA5O1xyXG4gICAgICAgIC8vIEV2ZW4gcG9zaXRpb25zLCBqdXN0IHN1bSB0aGVtXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXZlbl9zdW0gKz0gbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xfZGlnaXQgPSAoMTAgLSBOdW1iZXIoKGV2ZW5fc3VtICsgb2RkX3N1bSkudG9TdHJpbmcoKS5zdWJzdHIoLTEpKSkudG9TdHJpbmcoKS5zdWJzdHIoLTEpO1xyXG4gICAgY29uc3QgY29udHJvbF9sZXR0ZXIgPSBcIkpBQkNERUZHSElcIi5zdWJzdHIoTnVtYmVyKGNvbnRyb2xfZGlnaXQpLCAxKTtcclxuXHJcbiAgICAvLyBDb250cm9sIG11c3QgYmUgYSBkaWdpdFxyXG4gICAgaWYgKGxldHRlci5tYXRjaCgvW0FCRUhdLykpIHtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wgPT09IGNvbnRyb2xfZGlnaXQ7XHJcbiAgICB9XHJcbiAgICAvLyBDb250cm9sIG11c3QgYmUgYSBsZXR0ZXIgKCByZWZlcmVuY2lhOiBodHRwczovL2VzLndpa2lwZWRpYS5vcmcvd2lraS9DJUMzJUIzZGlnb19kZV9pZGVudGlmaWNhY2klQzMlQjNuX2Zpc2NhbCApXHJcbiAgICBlbHNlIGlmIChsZXR0ZXIubWF0Y2goL1tQUVJTV05dLykpIHtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wgPT09IGNvbnRyb2xfbGV0dGVyO1xyXG4gICAgfVxyXG4gICAgLy8gQ2FuIGJlIGVpdGhlclxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBjb250cm9sID09PSBjb250cm9sX2RpZ2l0IHx8IGNvbnRyb2wgPT09IGNvbnRyb2xfbGV0dGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS12YWxpZGF0aW9uL2pxdWVyeS12YWxpZGF0aW9uL2Jsb2IvbWFzdGVyL3NyYy9hZGRpdGlvbmFsL25pZkVTLmpzXHJcbiAgc3RhdGljIGlzVmFsaWROSUYodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgdmFsdWUgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgLy8gQmFzaWMgZm9ybWF0IHRlc3RcclxuICAgIGlmICghdmFsdWUubWF0Y2goXCIoKF5bQS1aXXsxfVswLTldezd9W0EtWjAtOV17MX0kfF5bVF17MX1bQS1aMC05XXs4fSQpfF5bMC05XXs4fVtBLVpdezF9JClcIikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gVGVzdCBOSUZcclxuICAgIGlmICgvXlswLTldezh9W0EtWl17MX0kLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gXCJUUldBR01ZRlBEWEJOSlpTUVZITENLRVwiLmNoYXJBdChOdW1iZXIodmFsdWUuc3Vic3RyaW5nKDgsIDApKSAlIDIzKSA9PT0gdmFsdWUuY2hhckF0KDgpO1xyXG4gICAgfVxyXG4gICAgLy8gVGVzdCBzcGVjaWFscyBOSUYgKHN0YXJ0cyB3aXRoIEssIEwgb3IgTSlcclxuICAgIGlmICgvXltLTE1dezF9Ly50ZXN0KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWVbOF0gIT09IFwiVFJXQUdNWUZQRFhCTkpaU1FWSExDS0VcIi5jaGFyQXQoTnVtYmVyKHZhbHVlLnN1YnN0cmluZyg4LCAxKSkgJSAyMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZE5JRSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBVbiBOSUUgc2lndWUgdW5hIHZhbGlkYWNpw7NuIG11eSBzaW1pbGFyIGEgbGEgZGUgdW4gRE5JLCBjb24gbGEgZGlmZXJlbmNpYVxyXG4gICAgLy8gZGUgcXVlIGVuIGx1Z2FyIGRlIHNlciBvY2hvIG7Dum1lcm9zICsgbGV0cmEgZGViZSBzZXIgbGV0cmEgKyBzaWV0ZSBuw7ptZXJvcyArIGxldHJhLFxyXG4gICAgLy8gc2llbmRvIGxhIHByaW1lcmEgbGV0cmEgWCwgWSBvIFogc3VzdGl0dWlibGUgcG9yIDAsIDEgbyAyIHJlc3BlY3RpdmFtZW50ZS5cclxuICAgIGxldCBuaWVSZWdFeCA9IG5ldyBSZWdFeHAoL15bWFlaXXsxfVswLTldezd9W1RSV0FHTVlGUERYQk5KWlNRVkhMQ0tFVF17MX0kL2dpKTtcclxuXHJcbiAgICAvLyBTaSBubyB0aWVuZSBlbCBmb3JtYXRvIGLDoXNpY28sIG5vIGVzIHbDoWxpZG9cclxuICAgIGlmICghbmllUmVnRXgudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1c3RpdHVpbW9zIGxhIHByaW1lcmEgbGV0cmEgcG9yIGVsIG7Dum1lcm8gZXF1aXZhbGVudGUgeSBhcHJvdmVjaGFtb3MgbGEgdmFsaWRhY2nDs24gZGUgTklGXHJcbiAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKS5yZXBsYWNlKC9eW1hdLywgXCIwXCIpLnJlcGxhY2UoL15bWV0vLCBcIjFcIikucmVwbGFjZSgvXltaXS8sIFwiMlwiKTtcclxuXHJcbiAgICByZXR1cm4gQ3VzdG9tVmFsaWRhdG9ycy5pc1ZhbGlkTklGKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByYW5nb0ZlY2hhc1ZhbGlkYXRvcih7IGZpZWxkRmVjaGFJbmljaW8gPSBcImZlY2hhSW5pY2lvXCIsIGZpZWxkRmVjaGFGaW4gPSBcImZlY2hhRmluXCIgfSA9IHt9KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZ1bmN0aW9uIChnOiBGb3JtR3JvdXApIHtcclxuICAgICAgaWYgKCFnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZlY2hhSW5pY2lvID0gZy5nZXQoZmllbGRGZWNoYUluaWNpbykgJiYgZy5nZXQoZmllbGRGZWNoYUluaWNpbykudmFsdWU7XHJcbiAgICAgIGxldCBmZWNoYUZpbiA9IGcgJiYgZy5nZXQoZmllbGRGZWNoYUZpbikgJiYgZy5nZXQoZmllbGRGZWNoYUZpbikudmFsdWU7XHJcbiAgICAgIGlmIChmZWNoYUluaWNpbyAmJiBmZWNoYUZpbikge1xyXG4gICAgICAgIGxldCBpbmljaW8gPSBHZW5lcmFsVXRpbHMuc3RyaW5nU2hvcnRUb0RhdGUoZmVjaGFJbmljaW8pO1xyXG4gICAgICAgIGxldCBmaW4gPSBHZW5lcmFsVXRpbHMuc3RyaW5nU2hvcnRUb0RhdGUoZmVjaGFGaW4pO1xyXG4gICAgICAgIGlmIChpbmljaW8gPiBmaW4pIHtcclxuICAgICAgICAgIHJldHVybiB7IGludmFsaWRSYW5nb0ZlY2hhRmluUG9zdGVyaW9ySW5pY2lvOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmFuZ29Ib3Jhc1ZhbGlkYXRvcih7IGZpZWxkSG9yYUluaWNpbyA9IFwiaG9yYUluaWNpb1wiLCBmaWVsZEhvcmFGaW4gPSBcImhvcmFGaW5cIiB9ID0ge30pOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZnVuY3Rpb24gKGc6IEZvcm1Hcm91cCkge1xyXG4gICAgICBpZiAoIWcpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgaW5pY2lvID0gZy5nZXQoZmllbGRIb3JhSW5pY2lvKSAmJiBnLmdldChmaWVsZEhvcmFJbmljaW8pLnZhbHVlICYmIEdlbmVyYWxVdGlscy5zdHJpbmdUb1RpbWUoZy5nZXQoZmllbGRIb3JhSW5pY2lvKS52YWx1ZSk7XHJcbiAgICAgIGxldCBmaW4gPSBnICYmIGcuZ2V0KGZpZWxkSG9yYUZpbikgJiYgZy5nZXQoZmllbGRIb3JhRmluKS52YWx1ZSAmJiBHZW5lcmFsVXRpbHMuc3RyaW5nVG9UaW1lKGcuZ2V0KGZpZWxkSG9yYUZpbikudmFsdWUpO1xyXG4gICAgICBpZiAoaW5pY2lvICYmIGZpbiAmJiBpbmljaW8gPj0gZmluKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZFJhbmdvSG9yYUZpblBvc3RlcmlvckluaWNpbzogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0ZVRpbWVOb3RBZnRlckN1cnJlbnREYXRlVmFsaWRhdG9yKHsgZmllbGRmZWNoYSA9IFwiZmVjaGFcIiwgZmllbGRIb3JhID0gXCJob3JhXCIgfSA9IHt9KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZ1bmN0aW9uIChnOiBGb3JtR3JvdXApIHtcclxuICAgICAgaWYgKCFnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNhbXBvRmVjaGEgPSBnLmdldChmaWVsZGZlY2hhKTtcclxuICAgICAgbGV0IGNhbXBvSG9yYSA9IGcuZ2V0KGZpZWxkSG9yYSk7XHJcbiAgICAgIGlmIChjYW1wb0ZlY2hhICYmIGNhbXBvRmVjaGEudmFsdWUgJiYgY2FtcG9GZWNoYS52YWx1ZS5tYXRjaCgvXigwWzEtOV18MVxcZHwyXFxkfDNbMDFdKVxcLygwWzEtOV18MVswLTJdKVxcLygxOXwyMClcXGR7Mn0kLykpIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IEdlbmVyYWxVdGlscy5nZXRTdHJpbmdBc0RhdGUoY2FtcG9GZWNoYS52YWx1ZSk7XHJcbiAgICAgICAgaWYgKGNhbXBvSG9yYSAmJiBjYW1wb0hvcmEudmFsdWUgJiYgY2FtcG9Ib3JhLnZhbHVlLm1hdGNoKC9eWzAtOV1bMC05XTpbMC05XVswLTldJC8pKSB7XHJcbiAgICAgICAgICBkYXRlLnNldEhvdXJzKGNhbXBvSG9yYS52YWx1ZS5zcGxpdChcIjpcIilbMF0pO1xyXG4gICAgICAgICAgZGF0ZS5zZXRNaW51dGVzKGNhbXBvSG9yYS52YWx1ZS5zcGxpdChcIjpcIilbMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0ZSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICAgIHJldHVybiB7IGludmFsaWREYXRlVGltZU5vdEFmdGVyQ3VycmVudERhdGU6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBidWlsZE1pbkxvbmdpdHVkVmFsaWRhdG9yKGxvbjogbnVtYmVyKSB7XHJcbiAgICBsZXQgZXJyb3JLZXkgPSBcImludmFsaWRNaW5Mb25naXR1ZFwiO1xyXG4gICAgbGV0IGVycm9yS2V5SW5kZXggPSBlcnJvcktleSArIFwiX1wiICsgbG9uLnRvU3RyaW5nKCk7XHJcbiAgICBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tlcnJvcktleUluZGV4XSA9IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoZXJyb3JLZXksIHsgbG9uOiBsb24gfSk7XHJcbiAgICBsZXQgcmVzdWx0ID0gKGNvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID49IGxvbikge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCByZXQgPSB7fTtcclxuICAgICAgICByZXRbZXJyb3JLZXlJbmRleF0gPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
630
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JpdC1uZy1saWJyYXJ5L3NyYy9saWIvc2hhcmVkbGlicmFyeS9zZXJ2aWNlcy9jdXN0b20tdmFsaWRhdG9ycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsTUFBTSxPQUFPLGdCQUFnQjthQUNwQixXQUFNLEdBQUc7UUFDZCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1FBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO1FBQzlFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BGLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7UUFDaEUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1FBQ3RFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7UUFDOUQsYUFBYSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQztRQUNsRSxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FB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LE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVmFsaWRhdG9yRm4gfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgR2VuZXJhbFV0aWxzIH0gZnJvbSBcIi4vZ2VuZXJhbC11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZWRNZXNzYWdlLCBFcnJvclZhbGlkYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9iYXNlL21vZGVscy90eXBlc1wiO1xyXG5pbXBvcnQgeyBidWlsZFRyYW5zbGF0ZWRNZXNzYWdlIH0gZnJvbSBcIi4vdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21WYWxpZGF0b3JzIHtcclxuICBzdGF0aWMgY29uZmlnID0ge1xyXG4gICAgcmVxdWlyZWQ6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJyZXF1aXJlZFwiKSxcclxuICAgIGludmFsaWREYXRlOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiRGF0YSBpbmNvcnJlY3RhXCIpLFxyXG4gICAgaW52YWxpZFRpbWU6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkVGltZVwiKSxcclxuICAgIGludmFsaWRFbWFpbEFkZHJlc3M6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkRW1haWxBZGRyZXNzXCIpLFxyXG4gICAgaW52YWxpZEVtYWlsQ1NWQWRkcmVzczogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRFbWFpbENTVkFkZHJlc3NcIiksXHJcbiAgICBpbnZhbGlkTG9naW46IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTG9naW5cIiksXHJcbiAgICBpbnZhbGlkRXRpcXVldGE6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkRXRpcXVldGFcIiksXHJcbiAgICBpbnZhbGlkTmFtZTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWROYW1lXCIpLFxyXG4gICAgaW52YWxpZENvZGlnbzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRDb2RpZ29cIiksXHJcbiAgICBpbnZhbGlkQWxmYW51bWVyaWNvOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZEFsZmFudW1lcmljb1wiKSxcclxuICAgIGludmFsaWRDYW50aWRhZDogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRDYW50aWRhZFwiKSxcclxuICAgIGludmFsaWRFbnRlcm9Qb3NpdGl2bzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRFbnRlcm9Qb3NpdGl2b1wiKSxcclxuICAgIGludmFsaWRFbnRlcm9Qb3NpdGl2b0luY2x1eWVDZXJvOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZEVudGVyb1Bvc2l0aXZvSW5jbHV5ZUNlcm9cIiksXHJcbiAgICBpbnZhbGlkQ2FudGlkYWREZWNpbWFsOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZENhbnRpZGFkRGVjaW1hbFwiKSxcclxuICAgIGludmFsaWROdW1lcm9Qb3NpdGl2bzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWROdW1lcm9Qb3NpdGl2b1wiKSxcclxuICAgIGludmFsaWRDb2RpZ29Qb3N0YWw6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkQ29kaWdvUG9zdGFsXCIpLFxyXG4gICAgaW52YWxpZFRlbGVmb25vOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFRlbGVmb25vXCIpLFxyXG4gICAgaW52YWxpZFRlbGVmb25vQ1NWOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZFRlbGVmb25vQ1NWXCIpLFxyXG4gICAgaW52YWxpZFBvcmNlbnRhamU6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkUG9yY2VudGFqZVwiKSxcclxuICAgIGludmFsaWRVcmw6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkVXJsXCIpLFxyXG4gICAgaW52YWxpZFBhdGg6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkUGF0aFwiKSxcclxuICAgIGludmFsaWROSUY6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTklGXCIpLFxyXG4gICAgaW52YWxpZE5JRTogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWROSUVcIiksXHJcbiAgICBpbnZhbGlkQ0lGOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZENJRlwiKSxcclxuICAgIGludmFsaWROSUZOSUU6IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkTklGTklFXCIpLFxyXG4gICAgaW52YWxpZEFueW86IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoXCJpbnZhbGlkQW55b1wiKSxcclxuICAgIG1heGxlbmd0aDogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcIm1heGxlbmd0aFwiKSxcclxuICAgIGludmFsaWROdW1lcm9Eb2N1bWVudG9UaXBvRG9jdW1lbnRvOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZE51bWVyb0RvY3VtZW50b1RpcG9Eb2N1bWVudG9cIiksXHJcbiAgICBkaXJlY2Npb25JbmNvbXBsZXRhOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiZGlyZWNjaW9uSW5jb21wbGV0YVwiKSxcclxuICAgIHJlcXVpcmVkRXh0cmFEYXRhOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwicmVxdWlyZWRFeHRyYURhdGFcIiksXHJcbiAgICBpbnZhbGlkUmFuZ29GZWNoYUZpblBvc3RlcmlvckluaWNpbzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRSYW5nb0ZlY2hhRmluUG9zdGVyaW9ySW5pY2lvXCIpLFxyXG4gICAgaW52YWxpZFJhbmdvSG9yYUZpblBvc3RlcmlvckluaWNpbzogQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShcImludmFsaWRSYW5nb0hvcmFGaW5Qb3N0ZXJpb3JJbmljaW9cIiksXHJcbiAgICBpbnZhbGlkRGF0ZVRpbWVOb3RBZnRlckN1cnJlbnREYXRlOiBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKFwiaW52YWxpZERhdGVUaW1lTm90QWZ0ZXJDdXJyZW50RGF0ZVwiKVxyXG4gIH07XHJcblxyXG4gIHN0YXRpYyBDdXN0b21WYWxpZGF0b3JzTWFwID0ge1xyXG4gICAgY29kaWdvTnVtZXJpY286IEN1c3RvbVZhbGlkYXRvcnMuY29kaWdvVmFsaWRhdG9yLFxyXG4gICAgY29kaWdvQWxmYW51bWVyaWNvOiBDdXN0b21WYWxpZGF0b3JzLmFsZmFudW1lcmljb1ZhbGlkYXRvcixcclxuICAgIG5vbWJyZTogQ3VzdG9tVmFsaWRhdG9ycy5ub21icmVWYWxpZGF0b3IsXHJcbiAgICBudW1lcm86IEN1c3RvbVZhbGlkYXRvcnMuY2FudGlkYWREZWNpbWFsVmFsaWRhdG9yLFxyXG4gICAgZW50ZXJvOiBDdXN0b21WYWxpZGF0b3JzLmNhbnRpZGFkVmFsaWRhdG9yLFxyXG4gICAgbnVtZXJvUG9zaXRpdm86IEN1c3RvbVZhbGlkYXRvcnMubnVtZXJvUG9zaXRpdm9WYWxpZGF0b3IsXHJcbiAgICBlbnRlcm9Qb3NpdGl2bzogQ3VzdG9tVmFsaWRhdG9ycy5lbnRlcm9Qb3NpdGl2b1ZhbGlkYXRvcixcclxuICAgIG5pZjogQ3VzdG9tVmFsaWRhdG9ycy5uaWZWYWxpZGF0b3IsXHJcbiAgICBuaWU6IEN1c3RvbVZhbGlkYXRvcnMubmllVmFsaWRhdG9yLFxyXG4gICAgY2lmOiBDdXN0b21WYWxpZGF0b3JzLmNpZlZhbGlkYXRvcixcclxuICAgIG5pZm5pZTogQ3VzdG9tVmFsaWRhdG9ycy5uaWZOaWVWYWxpZGF0b3IsXHJcbiAgICBjcDogQ3VzdG9tVmFsaWRhdG9ycy5jb2RpZ29Qb3N0YWxWYWxpZGF0b3IsXHJcbiAgICB0ZWxlZm9ubzogQ3VzdG9tVmFsaWRhdG9ycy50ZWxlZm9ub1ZhbGlkYXRvcixcclxuICAgIHRlbGVmb25vQ1NWOiBDdXN0b21WYWxpZGF0b3JzLnRlbGVmb25vQ1NWVmFsaWRhdG9yLFxyXG4gICAgZW1haWxDU1Y6IEN1c3RvbVZhbGlkYXRvcnMuZW1haWxDU1ZWYWxpZGF0b3IsXHJcbiAgICBlbWFpbDogQ3VzdG9tVmFsaWRhdG9ycy5lbWFpbFZhbGlkYXRvcixcclxuICAgIGZlY2hhOiBDdXN0b21WYWxpZGF0b3JzLmRhdGFWYWxpZGF0b3IsXHJcbiAgICBhbnlvOiBDdXN0b21WYWxpZGF0b3JzLmFueW9WYWxpZGF0b3JcclxuICB9O1xyXG5cclxuICBzdGF0aWMgYnVpbGRFcnJvck1lc3NhZ2UoY29kZTogc3RyaW5nLCBwYXJhbXM/OiB7fSk6IFRyYW5zbGF0ZWRNZXNzYWdlIHtcclxuICAgIHJldHVybiBidWlsZFRyYW5zbGF0ZWRNZXNzYWdlKFwiZm9ybS5tZXNzYWdlcy5cIiArIGNvZGUsIFwiYml0bmdsaWJyYXJ5XCIsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VmFsaWRhdG9yRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2NvZGVdO1xyXG4gIH1cclxuXHJcbiAgLy8gbcOpdG9kbyBwYXJhIHVuaXIgdmFsaWRhZG9yZXNcclxuICBzdGF0aWMgY29tcG9zZSh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZ1bmN0aW9uIChnOiBGb3JtR3JvdXApIHtcclxuICAgICAgLy8gZWplY3V0YW1vcyBjYWRhIHVubyBkZSBsb3MgdmFsaWRhZG9yZXMgeSB1bmltb3Mgc3VzIHJlc3VsdGFkb3NcclxuICAgICAgbGV0IGlubmVyUmVzdWx0ID0gdmFsaWRhdG9ycy5tYXAoKHZhbGlkYXRvcikgPT4gdmFsaWRhdG9yKGcpKS5yZWR1Y2UoKGFjYywgcmVzdWx0ID0ge30pID0+IE9iamVjdC5hc3NpZ24oYWNjLCByZXN1bHQpLCB7fSk7XHJcbiAgICAgIHJldHVybiBpbm5lclJlc3VsdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlcXVpcmVkKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IG51bGwgfHwgY29udHJvbC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHRydWUgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXN0ZSB2YWxpZGFkb3IgZW4gcmVhbGlkYWQgbm8gZXN0w6EgaGFjaWVuZG8gbmFkYSBwb3JxdWUgYml0LWlucHV0LCBwYXJhIGZlY2hhcyBubyB2w6FsaWRhcywgc3VzdGl0dXllXHJcbiAgLy8gY29udHJvbC52YWx1ZSBwb3IgdW4gbnVsbCB5IGVsIHZhbGlkYWRvciBwYXNhIHNpZW1wcmVcclxuICBzdGF0aWMgZGF0YVZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIGZvcm1hdG8gZGQvTU0veXl5eVxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL14oMFsxLTldfDFcXGR8MlxcZHwzWzAxXSlcXC8oMFsxLTldfDFbMC0yXSlcXC8oMTl8MjApXFxkezJ9JC8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZERhdGU6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0aW1lVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gZm9ybWF0byBoaDptbVxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubWF0Y2goL15bMC05XVswLTldOlswLTldWzAtOV0kLykpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFRpbWU6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbWFpbFZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIFJGQyAyODIyIGNvbXBsaWFudCByZWdleFxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL1xcUytAKFstXFx3XStcXC4pK1xcdysvZykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRW1haWxBZGRyZXNzOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW1haWxDU1ZWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBSRkMgMjgyMiBjb21wbGlhbnQgcmVnZXhcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eKCggKSpbXFx3XFwuXStAKFstXFx3XStcXC4pK1xcdysoICkqKSgsKCApKltcXHdcXC5dK0AoWy1cXHddK1xcLikrXFx3KyggKSopKiQvZykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRW1haWxDU1ZBZGRyZXNzOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbG9naW5WYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5tYXRjaCgvXlthLXowLTlfLV17MywxNX0vKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRMb2dpbjogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGV0aXF1ZXRhVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubWF0Y2goL15bYS16QS1aMC05Xy1dKy8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEV0aXF1ZXRhOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbm9tYnJlVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKFxyXG4gICAgICAhY29udHJvbC52YWx1ZSB8fFxyXG4gICAgICAvXihbQS1aYS16MC05X1xcLlxcLFxcJ1xcXCJcXChcXClcXDtcXDpcXC1cXC9cXEBcXD9cXCVcXD9cXMK/XFwmXFwrXFwtXFwqXFwvXFwgXFxuXFxywrrCqifCtOKAmcK3w6/DvD9gw6HDqcOtw7PDusOBw4nDjcOTw5rDoMOow6zDssO5w4DDiMOMw5LDmcOEw4vDj8OWw5zDpMOrw6/DtsO8w7HDkcOnw4fCoSEjXSkrJC8udGVzdChjb250cm9sLnZhbHVlKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZE5hbWU6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjb2RpZ29WYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5tYXRjaCgvXihbMC05XSkrJC8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZENvZGlnbzogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFsZmFudW1lcmljb1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eKFtBLVowLTlfXFwuXFwtw5HDh10pKyQvKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRBbGZhbnVtZXJpY286IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjYW50aWRhZFZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIHZhbHVlIGlzIGVpdGhlciBlbXB0eSwgb3IgYSBudW1iZXIgd2l0aG91dCBkZWNpbWFsc1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgbnVtID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgaWYgKCFpc05hTihudW0pICYmIG51bSAlIDEgPT0gMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGludmFsaWRDYW50aWRhZDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyogVmFsaWRhIG7Dum1lcm9zIGVudGVyb3MgKHNpbiBkZWNpbWFsZXMpIHBvc2l0aXZvcyAoPj0wKSAqL1xyXG4gIHN0YXRpYyBlbnRlcm9Qb3NpdGl2b1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIHZhbHVlIGlzIGVpdGhlciBlbXB0eSwgb3IgYSBudW1iZXIgd2l0aG91dCBkZWNpbWFsc1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgbnVtID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgaWYgKCFpc05hTihudW0pICYmIG51bSAlIDEgPT0gMCAmJiBudW0gPj0gMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGludmFsaWRFbnRlcm9Qb3NpdGl2bzogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVudGVyb1Bvc2l0aXZvVmFsaWRhdG9ySW5jbHV5ZUNlcm9WYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyB2YWx1ZSBpcyBlaXRoZXIgZW1wdHksIG9yIGEgcG9zaXRpdmUgbnVtYmVyIChpbmNsdWRpbmcgMCkgd2l0aG91dCBkZWNpbWFsc1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgbnVtID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgaWYgKCFpc05hTihudW0pICYmIG51bSAlIDEgPT0gMCAmJiBudW0gPj0gMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGludmFsaWRFbnRlcm9Qb3NpdGl2b0luY2x1eWVDZXJvOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgbsO6bWVyb3MgZW50ZXJvcyAoY29uIGRlY2ltYWxlcykgKi9cclxuICBzdGF0aWMgY2FudGlkYWREZWNpbWFsVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gdmFsdWUgaXMgZWl0aGVyIGVtcHR5LCBvciBhIG51bWJlciAoaW5jbHVkaW5nIGRlY2ltYWxzKVxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIgfHwgIWlzTmFOKE51bWJlcihjb250cm9sLnZhbHVlKSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkQ2FudGlkYWREZWNpbWFsOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgbsO6bWVyb3MgZW50ZXJvcyAoY29uIGRlY2ltYWxlcykgcG9zaXRpdm9zICg+PTApICovXHJcbiAgc3RhdGljIG51bWVyb1Bvc2l0aXZvVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IFwiXCIgfHwgKCFpc05hTihOdW1iZXIoY29udHJvbC52YWx1ZSkpICYmIE51bWJlcihjb250cm9sLnZhbHVlKSA+PSAwKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWROdW1lcm9Qb3NpdGl2bzogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogVmFsaWRhIGPDs2RpZ28gcG9zdGFsIChudW1lcm8gZGUgNSBkw61naXRvcykgKi9cclxuICBzdGF0aWMgY29kaWdvUG9zdGFsVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IChjb250cm9sLnZhbHVlLm1hdGNoKC9eKFswLTldKSskLykgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPT0gNSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkQ29kaWdvUG9zdGFsOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgdGVsZWZvbm8gKG51bWVybyBkZSA5IGTDrWdpdG9zKSAqL1xyXG4gIHN0YXRpYyB0ZWxlZm9ub1ZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eWzAtOV1bMC05XVswLTldWzAtOV1bMC05XVswLTldWzAtOV1bMC05XVswLTldJC8pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFRlbGVmb25vOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBWYWxpZGEgdGVsZWZvbm8gKG51bWVybyBkZSA5IGTDrWdpdG9zKSAqL1xyXG4gIHN0YXRpYyB0ZWxlZm9ub0NTVlZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLm1hdGNoKC9eWzAtOV17OX0oKCAqLCAqKVswLTldezl9KSokL2cpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFRlbGVmb25vQ1NWOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYnVpbGRMb25naXR1ZFZhbGlkYXRvcihsb246IG51bWJlcikge1xyXG4gICAgbGV0IGVycm9yS2V5ID0gXCJpbnZhbGlkTG9uZ2l0dWRcIjtcclxuICAgIGxldCBlcnJvcktleUluZGV4ID0gZXJyb3JLZXkgKyBcIiBfXCIgKyBsb24udG9TdHJpbmcoKTtcclxuICAgIEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2Vycm9yS2V5SW5kZXhdID0gQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShlcnJvcktleSwgeyBsb246IGxvbiB9KTtcclxuICAgIHJldHVybiAoY29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPD0gbG9uKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHt9O1xyXG4gICAgICAgIHJldFtlcnJvcktleUluZGV4XSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBidWlsZENhbnRpZGFkTWluVmFsaWRhdG9yKG1pbjogbnVtYmVyKSB7XHJcbiAgICBsZXQgZXJyb3JLZXkgPSBcImludmFsaWRDYW50aWRhZE1pblwiO1xyXG4gICAgbGV0IGVycm9yS2V5SW5kZXggPSBlcnJvcktleSArIFwiIF9cIiArIG1pbi50b1N0cmluZygpO1xyXG4gICAgQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXlJbmRleF0gPSBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKGVycm9yS2V5LCB7IG1pbjogbWluIH0pO1xyXG4gICAgcmV0dXJuIChjb250cm9sKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlID09PSBcIlwiIHx8IGNvbnRyb2wudmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgIGxldCBudW0gPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIGlmIChpc05hTihudW0pIHx8IG51bSA+PSBtaW4pIHtcclxuICAgICAgICAvLyBzaSBubyBlcyBudW3DqXJpY28gbyBlbCB2YWxvciA+PSBtaW4sIHBhc2EgbGEgdmFsaWRhY2nDs25cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcmV0ID0ge307XHJcbiAgICAgICAgcmV0W2Vycm9yS2V5SW5kZXhdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGJ1aWxkQ2FudGlkYWRNYXhWYWxpZGF0b3IobWF4OiBudW1iZXIpIHtcclxuICAgIGxldCBlcnJvcktleSA9IFwiaW52YWxpZENhbnRpZGFkTWF4XCI7XHJcbiAgICBsZXQgZXJyb3JLZXlJbmRleCA9IGVycm9yS2V5ICsgXCJfXCIgKyBtYXgudG9TdHJpbmcoKTtcclxuICAgIEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2Vycm9yS2V5SW5kZXhdID0gQ3VzdG9tVmFsaWRhdG9ycy5idWlsZEVycm9yTWVzc2FnZShlcnJvcktleSwgeyBtYXg6IG1heCB9KTtcclxuICAgIHJldHVybiAoY29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gXCJcIiB8fCBjb250cm9sLnZhbHVlID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgICBsZXQgbnVtID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICBpZiAoaXNOYU4obnVtKSB8fCBudW0gPD0gbWF4KSB7XHJcbiAgICAgICAgLy8gc2kgbm8gZXMgbnVtw6lyaWNvIG8gZWwgdmFsb3Ig4omkIG1heCwgcGFzYSBsYSB2YWxpZGFjacOzblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCByZXQgPSB7fTtcclxuICAgICAgICByZXRbZXJyb3JLZXlJbmRleF0gPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYnVpbGRDYW50aWRhZE1pbk1heFZhbGlkYXRvcihtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcclxuICAgIGxldCBlcnJvcktleSA9IFwiaW52YWxpZENhbnRpZGFkTWluTWF4XCI7XHJcbiAgICBsZXQgZXJyb3JLZXlJbmRleCA9IGVycm9yS2V5ICsgXCJfXCIgKyBtaW4udG9TdHJpbmcoKSArIFwiX1wiICsgbWF4LnRvU3RyaW5nKCk7XHJcbiAgICBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tlcnJvcktleUluZGV4XSA9IEN1c3RvbVZhbGlkYXRvcnMuYnVpbGRFcnJvck1lc3NhZ2UoZXJyb3JLZXksIHtcclxuICAgICAgbWluOiBtaW4sXHJcbiAgICAgIG1heDogbWF4XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoY29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gXCJcIiB8fCBjb250cm9sLnZhbHVlID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgICBsZXQgbnVtID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtID49IG1pbiAmJiBudW0gPD0gbWF4KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHt9O1xyXG4gICAgICAgIHJldFtlcnJvcktleUluZGV4XSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBwb3JjZW50YWplVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gZXhwZWN0ZWQgYSBudW1lcmljIHZhbHVlIGJldHdlZW4gMCBhbmQgMTAwXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICBpZiAoIWlzTmFOKG4pICYmIG4gPj0gMCAmJiBuIDw9IDEwMCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7IGludmFsaWRQb3JjZW50YWplOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB1cmxWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBsZXQgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgIFwiXihodHRwcz86XFxcXC9cXFxcLyk/XCIgKyAvLyBwcm90b2NvbFxyXG4gICAgICAgIFwiKCgoW2EtelxcXFxkXShbYS16XFxcXGQtXSpbYS16XFxcXGRdKSopXFxcXC4/KStbYS16XXsyLH18XCIgKyAvLyBkb21haW4gbmFtZVxyXG4gICAgICAgIFwiKChcXFxcZHsxLDN9XFxcXC4pezN9XFxcXGR7MSwzfSkpXCIgKyAvLyBPUiBpcCAodjQpIGFkZHJlc3NcclxuICAgICAgICBcIihcXFxcOlxcXFxkKyk/KFxcXFwvWy1hLXpcXFxcZCVfLn4rXSopKlwiICsgLy8gcG9ydCBhbmQgcGF0aFxyXG4gICAgICAgIFwiKFxcXFw/WzsmYS16XFxcXGQlXy5+Kz0tXSopP1wiICsgLy8gcXVlcnkgc3RyaW5nXHJcbiAgICAgICAgXCIoXFxcXCNbLWEtelxcXFxkX10qKT8kXCIsXHJcbiAgICAgIFwiaVwiXHJcbiAgICApOyAvLyBmcmFnbWVudCBsb2NhdG9yXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgcGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFVybDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBhdGhWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBsZXQgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgIFwiXigoXFxcXC8pP1stYS16XFxcXGQlXy5+K10qKSpcIiArIC8vIHBvcnQgYW5kIHBhdGhcclxuICAgICAgICBcIihcXFxcP1s7JmEtelxcXFxkJV8ufis9LV0qKT9cIiArIC8vIHF1ZXJ5IHN0cmluZ1xyXG4gICAgICAgIFwiKFxcXFwjWy1hLXpcXFxcZF9dKik/JFwiLFxyXG4gICAgICBcImlcIlxyXG4gICAgKTsgLy8gZnJhZ21lbnQgbG9jYXRvclxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IHBhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRQYXRoOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIHVuIHN0cmluZyBjb24gdG9kb3MgbG9zIGVycm9yZXMgcXVlIGNvbnRpZW5lIGVsIGZvcm11bGFyaW8sIHNlcGFyYWRvcyBwb3Igc2FsdG9zIGRlIGzDrW5lYS5cclxuICAgKi9cclxuICBzdGF0aWMgdmFsaWRhdGVGb3JtKGZvcm06IEZvcm1Hcm91cCwgcHJlZml4OiBzdHJpbmdbXSA9IFtdKTogRXJyb3JWYWxpZGF0ZUZvcm1bXSB7XHJcbiAgICBsZXQgbWVuc2FqZXM6IEVycm9yVmFsaWRhdGVGb3JtW10gPSBbXTtcclxuICAgIC8vIGVycm9yZXMgZW4gdMOpcm1pbm9zIGRlIGdydXBvXHJcbiAgICBmb3IgKGxldCBlcnJvcktleSBpbiBmb3JtLmVycm9ycykge1xyXG4gICAgICBsZXQgcHIgPSBwcmVmaXggPyBgJHtwcmVmaXh9OiBgIDogXCJcIjtcclxuICAgICAgbWVuc2FqZXMucHVzaCh7IHByZWZpeGVzOiBbcHJdLCBlcnJvck1lc3NhZ2U6IEN1c3RvbVZhbGlkYXRvcnMuY29uZmlnW2Vycm9yS2V5XSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBjb250cm9sS2V5IGluIGZvcm0uY29udHJvbHMpIHtcclxuICAgICAgbGV0IGNvbnRyb2wgPSBmb3JtLmNvbnRyb2xzW2NvbnRyb2xLZXldO1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICAvLyBubyBlcyB2w6FsaWRvLCBoYXkgbWVuc2FqZXMgcXVlIHJlY3VwZXJhclxyXG4gICAgICAgIGxldCBjb250cm9sTGFiZWw6IHN0cmluZ1tdID0gcHJlZml4LmNvbmNhdChbY29udHJvbEtleV0pOyAvLyBub21icmUgYXBpbGFkb1xyXG5cclxuICAgICAgICAvLyBkZXRlY3RhbW9zIHNpIGVzIHVuIGNhbXBvIG8gdW4gZm9ybXVsYXJpbyBhbmlkYWRvXHJcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgIC8vIGVzIHVuIGZvcm11bGFyaW8gYW5pZGFkbywgc2VndWltb3MgYmFqYW5kbyByZWN1cnNpdmFtZW50ZVxyXG4gICAgICAgICAgbWVuc2FqZXMgPSBtZW5zYWplcy5jb25jYXQoQ3VzdG9tVmFsaWRhdG9ycy52YWxpZGF0ZUZvcm0oY29udHJvbCwgY29udHJvbExhYmVsKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAvLyBlcyB1biBjYW1wbyBmaW5hbCwgYcOxYWRpbW9zIHN1cyBtZW5zYWplcyBkZSBlcnJvclxyXG4gICAgICAgICAgZm9yIChsZXQgZXJyb3JLZXkgaW4gY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICAgICAgbWVuc2FqZXMucHVzaCh7IHByZWZpeGVzOiBjb250cm9sTGFiZWwsIGVycm9yTWVzc2FnZTogQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXldIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcclxuICAgICAgICAgIC8vIGVzIHVuYSBsaXN0YSBkZSBjb250cm9sZXMgYW5pZGFkYSwgbGEgcmVjb3JyZW1vc1xyXG4gICAgICAgICAgY29udHJvbC5jb250cm9scyAmJlxyXG4gICAgICAgICAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGFyckNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGFyckNvbnRyb2xMYWJlbDogc3RyaW5nW10gPSBjb250cm9sTGFiZWwuY29uY2F0KFtpbmRleC50b1N0cmluZygpXSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFyckNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIC8vIGVzIHVuYSBsaXN0YSBkZSBGb3JtR3JvdXBzLCBiYWphbW9zIGEgZWxsb3MgcmVjdXJzaXZhbWVudGVcclxuICAgICAgICAgICAgICAgIG1lbnNhamVzID0gbWVuc2FqZXMuY29uY2F0KEN1c3RvbVZhbGlkYXRvcnMudmFsaWRhdGVGb3JtKGFyckNvbnRyb2wsIGFyckNvbnRyb2xMYWJlbCkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyQ29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZXMgdW5hIGxpc3RhIGRlIEZvcm1Db250cm9scywgbG9zIHRyYXRhbW9zIGRlc2RlIGFxdcOtXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlcnJvcktleSBpbiBjb250cm9sLmVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgICBtZW5zYWplcy5wdXNoKHsgcHJlZml4ZXM6IGFyckNvbnRyb2xMYWJlbCwgZXJyb3JNZXNzYWdlOiBDdXN0b21WYWxpZGF0b3JzLmNvbmZpZ1tlcnJvcktleV0gfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vID8/PyDCv1VuIGFycmF5IGRlIGFycmF5cz8gTm8gZXN0w6EgcHJldmlzdG8uXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIltDdXN0b21WYWxpZGF0b3JzXSBVbmV4cGVjdGVkIEZvcm1BcnJheSB3aXRoIG5lc3RlZCBGb3JtQXJyYXlzXCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVuc2FqZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNpYmUgdW4gb2JqZXRvIGNvbiBsYXMgcHJvcGllZGFkZXMge2ZpZWxkVGlwbywgZmllbGROdW1lcm99IHkgZGV2dWVsdmUgdW4gdmFsaWRhZG9yIGRlIGZvcm11bGFyaW8gcGFyYSBkb2N1bWVudG9zIGRlIGlkZW50aWZpY2FjacOzbi5cclxuICAgKiBFbCBlcnJvciBxdWUgcHVlZGUgZ2VuZXJhcnNlIGVzIGRlbCB0aXBvICdpbnZhbGlkTnVtZXJvRG9jdW1lbnRvVGlwb0RvY3VtZW50bycuXHJcbiAgICovXHJcbiAgc3RhdGljIGJ1aWxkTnVtZXJvRG9jdW1lbnRvVmFsaWRhdG9yKHsgZmllbGRUaXBvID0gXCJkb2N1bWVudG9UaXBvXCIsIGZpZWxkTnVtZXJvID0gXCJkb2N1bWVudG9OdW1lcm9cIiB9ID0ge30pOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZnVuY3Rpb24gKGc6IEZvcm1Hcm91cCkge1xyXG4gICAgICBpZiAoIWcpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZG9jdW1lbnRvVGlwbyA9IGcuZ2V0KGZpZWxkVGlwbykgJiYgZy5nZXQoZmllbGRUaXBvKS52YWx1ZTtcclxuICAgICAgbGV0IGRvY3VtZW50b051bWVybyA9IGcgJiYgZy5nZXQoZmllbGROdW1lcm8pICYmIGcuZ2V0KGZpZWxkTnVtZXJvKS52YWx1ZTtcclxuICAgICAgbGV0IGludmFsaWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGRvY3VtZW50b1RpcG8gJiYgZG9jdW1lbnRvTnVtZXJvKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50b1RpcG8gPT0gXCJETklcIikge1xyXG4gICAgICAgICAgaW52YWxpZCA9ICFDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWRETkkoZG9jdW1lbnRvTnVtZXJvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50b1RpcG8gPT0gXCJDSUZcIikge1xyXG4gICAgICAgICAgaW52YWxpZCA9ICFDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWRDSUYoZG9jdW1lbnRvTnVtZXJvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50b1RpcG8gPT0gXCJOSUZcIikge1xyXG4gICAgICAgICAgLy9pbnZhbGlkID0gIWRvY3VtZW50b051bWVyby5tYXRjaCgvXlswLTldezh9W2EtenxBLVpdJC8pO1xyXG4gICAgICAgICAgaW52YWxpZCA9ICFDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWROSUYoZG9jdW1lbnRvTnVtZXJvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50b1RpcG8gPT0gXCJOSUVcIikge1xyXG4gICAgICAgICAgaW52YWxpZCA9ICFDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWROSUUoZG9jdW1lbnRvTnVtZXJvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZE51bWVyb0RvY3VtZW50b1RpcG9Eb2N1bWVudG86IHRydWUgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbmlmVmFsaWRhdG9yKGNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IEN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZE5JRihjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWROSUY6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBuaWVWYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgQ3VzdG9tVmFsaWRhdG9ycy5pc1ZhbGlkTklFKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZE5JRTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5pZk5pZVZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBDdXN0b21WYWxpZGF0b3JzLmlzVmFsaWROSUYoY29udHJvbC52YWx1ZSkgfHwgQ3VzdG9tVmFsaWRhdG9ycy5pc1ZhbGlkTklFKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZE5JRk5JRTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNpZlZhbGlkYXRvcihjb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgvXlthLXp8QS1aXVswLTldezd9W2EtenxBLVp8MC05XS8pOyAvLyBUT0RPXHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgcGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZENJRjogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFueW9WYWxpZGF0b3IoY29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBsZXQgcGF0dGVybiA9IG5ldyBSZWdFeHAoL15bMC05XXs0fSQvKTsgLy8gVE9ET1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IHBhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRBbnlvOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZEROSSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8gwr9kZWJlcsOtYW1vcyB2YWxpZGFyIGFsZ28/IENvbiBsZXRyYSB5YSB0ZW5lbW9zIGVsIE5JRlxyXG4gIH1cclxuXHJcbiAgLy8gUmVmZXJlbmNpYSBwcmluY2lwYWw6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2Nhcmxvcy1tZzg5LzRhYWFmYTMxMGM5ZTRiOTFmNWZiODkwNTQwZjM4Y2FlXHJcbiAgc3RhdGljIGlzVmFsaWRDSUYodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgQ0lGX1JFR0VYID0gL14oW0FCQ0RFRkdISktMTU5QUVJTVVZXXSkoXFxkezd9KShbMC05QS1KXSkkLztcclxuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLm1hdGNoKENJRl9SRUdFWCkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB2YWx1ZSA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB2YXIgbWF0Y2ggPSB2YWx1ZS5tYXRjaChDSUZfUkVHRVgpO1xyXG4gICAgY29uc3QgbGV0dGVyID0gbWF0Y2hbMV07XHJcbiAgICBjb25zdCBudW1iZXIgPSBtYXRjaFsyXTtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBtYXRjaFszXTtcclxuXHJcbiAgICB2YXIgZXZlbl9zdW0gPSAwO1xyXG4gICAgdmFyIG9kZF9zdW0gPSAwO1xyXG4gICAgdmFyIG46IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBuID0gcGFyc2VJbnQobnVtYmVyW2ldLCAxMCk7XHJcbiAgICAgIC8vIE9kZCBwb3NpdGlvbnMgKEV2ZW4gaW5kZXggZXF1YWxzIHRvIG9kZCBwb3NpdGlvbi4gaT0wIGVxdWFscyBmaXJzdCBwb3NpdGlvbilcclxuICAgICAgaWYgKGkgJSAyID09PSAwKSB7XHJcbiAgICAgICAgLy8gT2RkIHBvc2l0aW9ucyBhcmUgbXVsdGlwbGllZCBmaXJzdFxyXG4gICAgICAgIG4gKj0gMjtcclxuICAgICAgICAvLyBJZiB0aGUgbXVsdGlwbGljYXRpb24gaXMgYmlnZ2VyIHRoYW4gMTAgd2UgbmVlZCB0byBhZGp1c3RcclxuICAgICAgICBvZGRfc3VtICs9IG4gPCAxMCA/IG4gOiBuIC0gOTtcclxuICAgICAgICAvLyBFdmVuIHBvc2l0aW9ucywganVzdCBzdW0gdGhlbVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGV2ZW5fc3VtICs9IG47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250cm9sX2RpZ2l0ID0gKDEwIC0gTnVtYmVyKChldmVuX3N1bSArIG9kZF9zdW0pLnRvU3RyaW5nKCkuc3Vic3RyKC0xKSkpLnRvU3RyaW5nKCkuc3Vic3RyKC0xKTtcclxuICAgIGNvbnN0IGNvbnRyb2xfbGV0dGVyID0gXCJKQUJDREVGR0hJXCIuc3Vic3RyKE51bWJlcihjb250cm9sX2RpZ2l0KSwgMSk7XHJcblxyXG4gICAgLy8gQ29udHJvbCBtdXN0IGJlIGEgZGlnaXRcclxuICAgIGlmIChsZXR0ZXIubWF0Y2goL1tBQkVIXS8pKSB7XHJcbiAgICAgIHJldHVybiBjb250cm9sID09PSBjb250cm9sX2RpZ2l0O1xyXG4gICAgfVxyXG4gICAgLy8gQ29udHJvbCBtdXN0IGJlIGEgbGV0dGVyICggcmVmZXJlbmNpYTogaHR0cHM6Ly9lcy53aWtpcGVkaWEub3JnL3dpa2kvQyVDMyVCM2RpZ29fZGVfaWRlbnRpZmljYWNpJUMzJUIzbl9maXNjYWwgKVxyXG4gICAgZWxzZSBpZiAobGV0dGVyLm1hdGNoKC9bUFFSU1dOXS8pKSB7XHJcbiAgICAgIHJldHVybiBjb250cm9sID09PSBjb250cm9sX2xldHRlcjtcclxuICAgIH1cclxuICAgIC8vIENhbiBiZSBlaXRoZXJcclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gY29udHJvbCA9PT0gY29udHJvbF9kaWdpdCB8fCBjb250cm9sID09PSBjb250cm9sX2xldHRlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnktdmFsaWRhdGlvbi9qcXVlcnktdmFsaWRhdGlvbi9ibG9iL21hc3Rlci9zcmMvYWRkaXRpb25hbC9uaWZFUy5qc1xyXG4gIHN0YXRpYyBpc1ZhbGlkTklGKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcclxuICAgIC8vIEJhc2ljIGZvcm1hdCB0ZXN0XHJcbiAgICBpZiAoIXZhbHVlLm1hdGNoKFwiKCheW0EtWl17MX1bMC05XXs3fVtBLVowLTldezF9JHxeW1RdezF9W0EtWjAtOV17OH0kKXxeWzAtOV17OH1bQS1aXXsxfSQpXCIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIFRlc3QgTklGXHJcbiAgICBpZiAoL15bMC05XXs4fVtBLVpdezF9JC8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiVFJXQUdNWUZQRFhCTkpaU1FWSExDS0VcIi5jaGFyQXQoTnVtYmVyKHZhbHVlLnN1YnN0cmluZyg4LCAwKSkgJSAyMykgPT09IHZhbHVlLmNoYXJBdCg4KTtcclxuICAgIH1cclxuICAgIC8vIFRlc3Qgc3BlY2lhbHMgTklGIChzdGFydHMgd2l0aCBLLCBMIG9yIE0pXHJcbiAgICBpZiAoL15bS0xNXXsxfS8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlWzhdICE9PSBcIlRSV0FHTVlGUERYQk5KWlNRVkhMQ0tFXCIuY2hhckF0KE51bWJlcih2YWx1ZS5zdWJzdHJpbmcoOCwgMSkpICUgMjMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWROSUUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVW4gTklFIHNpZ3VlIHVuYSB2YWxpZGFjacOzbiBtdXkgc2ltaWxhciBhIGxhIGRlIHVuIEROSSwgY29uIGxhIGRpZmVyZW5jaWFcclxuICAgIC8vIGRlIHF1ZSBlbiBsdWdhciBkZSBzZXIgb2NobyBuw7ptZXJvcyArIGxldHJhIGRlYmUgc2VyIGxldHJhICsgc2lldGUgbsO6bWVyb3MgKyBsZXRyYSxcclxuICAgIC8vIHNpZW5kbyBsYSBwcmltZXJhIGxldHJhIFgsIFkgbyBaIHN1c3RpdHVpYmxlIHBvciAwLCAxIG8gMiByZXNwZWN0aXZhbWVudGUuXHJcbiAgICBsZXQgbmllUmVnRXggPSBuZXcgUmVnRXhwKC9eW1hZWl17MX1bMC05XXs3fVtUUldBR01ZRlBEWEJOSlpTUVZITENLRVRdezF9JC9naSk7XHJcblxyXG4gICAgLy8gU2kgbm8gdGllbmUgZWwgZm9ybWF0byBiw6FzaWNvLCBubyBlcyB2w6FsaWRvXHJcbiAgICBpZiAoIW5pZVJlZ0V4LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXN0aXR1aW1vcyBsYSBwcmltZXJhIGxldHJhIHBvciBlbCBuw7ptZXJvIGVxdWl2YWxlbnRlIHkgYXByb3ZlY2hhbW9zIGxhIHZhbGlkYWNpw7NuIGRlIE5JRlxyXG4gICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvXltYXS8sIFwiMFwiKS5yZXBsYWNlKC9eW1ldLywgXCIxXCIpLnJlcGxhY2UoL15bWl0vLCBcIjJcIik7XHJcblxyXG4gICAgcmV0dXJuIEN1c3RvbVZhbGlkYXRvcnMuaXNWYWxpZE5JRih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmFuZ29GZWNoYXNWYWxpZGF0b3IoeyBmaWVsZEZlY2hhSW5pY2lvID0gXCJmZWNoYUluaWNpb1wiLCBmaWVsZEZlY2hhRmluID0gXCJmZWNoYUZpblwiIH0gPSB7fSk6IFZhbGlkYXRvckZuIHtcclxuICAgIGxldCByZXN1bHQgPSBmdW5jdGlvbiAoZzogRm9ybUdyb3VwKSB7XHJcbiAgICAgIGlmICghZykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBmZWNoYUluaWNpbyA9IGcuZ2V0KGZpZWxkRmVjaGFJbmljaW8pICYmIGcuZ2V0KGZpZWxkRmVjaGFJbmljaW8pLnZhbHVlO1xyXG4gICAgICBsZXQgZmVjaGFGaW4gPSBnICYmIGcuZ2V0KGZpZWxkRmVjaGFGaW4pICYmIGcuZ2V0KGZpZWxkRmVjaGFGaW4pLnZhbHVlO1xyXG4gICAgICBpZiAoZmVjaGFJbmljaW8gJiYgZmVjaGFGaW4pIHtcclxuICAgICAgICBsZXQgaW5pY2lvID0gR2VuZXJhbFV0aWxzLnN0cmluZ1Nob3J0VG9EYXRlKGZlY2hhSW5pY2lvKTtcclxuICAgICAgICBsZXQgZmluID0gR2VuZXJhbFV0aWxzLnN0cmluZ1Nob3J0VG9EYXRlKGZlY2hhRmluKTtcclxuICAgICAgICBpZiAoaW5pY2lvID4gZmluKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBpbnZhbGlkUmFuZ29GZWNoYUZpblBvc3RlcmlvckluaWNpbzogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJhbmdvSG9yYXNWYWxpZGF0b3IoeyBmaWVsZEhvcmFJbmljaW8gPSBcImhvcmFJbmljaW9cIiwgZmllbGRIb3JhRmluID0gXCJob3JhRmluXCIgfSA9IHt9KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZ1bmN0aW9uIChnOiBGb3JtR3JvdXApIHtcclxuICAgICAgaWYgKCFnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGluaWNpbyA9IGcuZ2V0KGZpZWxkSG9yYUluaWNpbykgJiYgZy5nZXQoZmllbGRIb3JhSW5pY2lvKS52YWx1ZSAmJiBHZW5lcmFsVXRpbHMuc3RyaW5nVG9UaW1lKGcuZ2V0KGZpZWxkSG9yYUluaWNpbykudmFsdWUpO1xyXG4gICAgICBsZXQgZmluID0gZyAmJiBnLmdldChmaWVsZEhvcmFGaW4pICYmIGcuZ2V0KGZpZWxkSG9yYUZpbikudmFsdWUgJiYgR2VuZXJhbFV0aWxzLnN0cmluZ1RvVGltZShnLmdldChmaWVsZEhvcmFGaW4pLnZhbHVlKTtcclxuICAgICAgaWYgKGluaWNpbyAmJiBmaW4gJiYgaW5pY2lvID49IGZpbikge1xyXG4gICAgICAgIHJldHVybiB7IGludmFsaWRSYW5nb0hvcmFGaW5Qb3N0ZXJpb3JJbmljaW86IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRhdGVUaW1lTm90QWZ0ZXJDdXJyZW50RGF0ZVZhbGlkYXRvcih7IGZpZWxkZmVjaGEgPSBcImZlY2hhXCIsIGZpZWxkSG9yYSA9IFwiaG9yYVwiIH0gPSB7fSk6IFZhbGlkYXRvckZuIHtcclxuICAgIGxldCByZXN1bHQgPSBmdW5jdGlvbiAoZzogRm9ybUdyb3VwKSB7XHJcbiAgICAgIGlmICghZykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBjYW1wb0ZlY2hhID0gZy5nZXQoZmllbGRmZWNoYSk7XHJcbiAgICAgIGxldCBjYW1wb0hvcmEgPSBnLmdldChmaWVsZEhvcmEpO1xyXG4gICAgICBpZiAoY2FtcG9GZWNoYSAmJiBjYW1wb0ZlY2hhLnZhbHVlICYmIGNhbXBvRmVjaGEudmFsdWUubWF0Y2goL14oMFsxLTldfDFcXGR8MlxcZHwzWzAxXSlcXC8oMFsxLTldfDFbMC0yXSlcXC8oMTl8MjApXFxkezJ9JC8pKSB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBHZW5lcmFsVXRpbHMuZ2V0U3RyaW5nQXNEYXRlKGNhbXBvRmVjaGEudmFsdWUpO1xyXG4gICAgICAgIGlmIChjYW1wb0hvcmEgJiYgY2FtcG9Ib3JhLnZhbHVlICYmIGNhbXBvSG9yYS52YWx1ZS5tYXRjaCgvXlswLTldWzAtOV06WzAtOV1bMC05XSQvKSkge1xyXG4gICAgICAgICAgZGF0ZS5zZXRIb3VycyhjYW1wb0hvcmEudmFsdWUuc3BsaXQoXCI6XCIpWzBdKTtcclxuICAgICAgICAgIGRhdGUuc2V0TWludXRlcyhjYW1wb0hvcmEudmFsdWUuc3BsaXQoXCI6XCIpWzFdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRhdGUgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBpbnZhbGlkRGF0ZVRpbWVOb3RBZnRlckN1cnJlbnREYXRlOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYnVpbGRNaW5Mb25naXR1ZFZhbGlkYXRvcihsb246IG51bWJlcikge1xyXG4gICAgbGV0IGVycm9yS2V5ID0gXCJpbnZhbGlkTWluTG9uZ2l0dWRcIjtcclxuICAgIGxldCBlcnJvcktleUluZGV4ID0gZXJyb3JLZXkgKyBcIl9cIiArIGxvbi50b1N0cmluZygpO1xyXG4gICAgQ3VzdG9tVmFsaWRhdG9ycy5jb25maWdbZXJyb3JLZXlJbmRleF0gPSBDdXN0b21WYWxpZGF0b3JzLmJ1aWxkRXJyb3JNZXNzYWdlKGVycm9yS2V5LCB7IGxvbjogbG9uIH0pO1xyXG4gICAgbGV0IHJlc3VsdCA9IChjb250cm9sKSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA+PSBsb24pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcmV0ID0ge307XHJcbiAgICAgICAgcmV0W2Vycm9yS2V5SW5kZXhdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1394,7 +1394,7 @@ class CustomValidators {
|
|
|
1394
1394
|
return result;
|
|
1395
1395
|
}
|
|
1396
1396
|
static required(control) {
|
|
1397
|
-
if (
|
|
1397
|
+
if (control.value === null || control.value === undefined || control.value === "") {
|
|
1398
1398
|
return { required: true };
|
|
1399
1399
|
}
|
|
1400
1400
|
else {
|
|
@@ -3136,11 +3136,11 @@ class BitFooterComponent {
|
|
|
3136
3136
|
}
|
|
3137
3137
|
}
|
|
3138
3138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BitFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina", visible: "visible", forcePageLinkSize: "forcePageLinkSize" }, outputs: { onPageChange: "onPageChange", onNewPageSize: "onNewPageSize" }, usesOnChanges: true, ngImport: i0, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n", dependencies: [{ kind: "component", type: BitPajigatorComponent, selector: "bit-pajigator", inputs: ["page", "totalItems", "itemsPerPage", "rowsPerPageOptions", "maxCurrentItems"], outputs: ["onPageChange", "onPageSizeChange"] }, { kind: "component", type: BitFooterMessagesComponent, selector: "bit-footer-messages", inputs: ["messages", "status", "typeFooter", "maxCurrentItems", "totalItems"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina", visible: "visible", forcePageLinkSize: "forcePageLinkSize" }, outputs: { onPageChange: "onPageChange", onNewPageSize: "onNewPageSize" }, usesOnChanges: true, ngImport: i0, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n", dependencies: [{ kind: "component", type: BitPajigatorComponent, selector: "bit-pajigator", inputs: ["page", "totalItems", "itemsPerPage", "rowsPerPageOptions", "maxCurrentItems"], outputs: ["onPageChange", "onPageSizeChange"] }, { kind: "component", type: BitFooterMessagesComponent, selector: "bit-footer-messages", inputs: ["messages", "status", "typeFooter", "maxCurrentItems", "totalItems"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3140
3140
|
}
|
|
3141
3141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BitFooterComponent, decorators: [{
|
|
3142
3142
|
type: Component,
|
|
3143
|
-
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n" }]
|
|
3143
|
+
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems >= totalItems) {\r\n <span>{{totalItems}}</span>\r\n }\r\n @if (maxCurrentItems < totalItems) {\r\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator\r\n [totalItems]=\"totalItems\"\r\n [page]=\"filter ? filter.pagina : 1\"\r\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\r\n }\r\n\r\n @if (mostrarAvisos) {\r\n <bit-footer-messages\r\n [messages]=\"messages\"\r\n [typeFooter]=\"typeFooter\"\r\n [status]=\"status\"\r\n [maxCurrentItems]=\"maxCurrentItems\"\r\n [totalItems]=\"totalItems\"></bit-footer-messages>\r\n }\r\n\r\n</footer>\r\n" }]
|
|
3144
3144
|
}], ctorParameters: () => [], propDecorators: { totalItems: [{
|
|
3145
3145
|
type: Input
|
|
3146
3146
|
}], filter: [{
|