ngx-sp-infra 2.0.11 → 2.0.12
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.
|
@@ -19,16 +19,12 @@ import * as i3 from "ngx-pagination";
|
|
|
19
19
|
export class TableComponent {
|
|
20
20
|
get paginationID() { return this._paginationID; }
|
|
21
21
|
set paginationID(value) {
|
|
22
|
-
this._paginationID = value;
|
|
23
|
-
this.paginationIDChange.emit(value);
|
|
22
|
+
this._paginationID = value || 'libTablePagination';
|
|
24
23
|
}
|
|
25
24
|
// #endregion PUBLIC
|
|
26
25
|
// #endregion ==========> PROPRIEDADES <==========
|
|
27
26
|
// #region ==========> INICIALIZAÇÃO <==========
|
|
28
27
|
constructor() {
|
|
29
|
-
// #region ==========> PROPRIEDADES <==========
|
|
30
|
-
// #region PRIVATE
|
|
31
|
-
this._paginationID = "libTablePagination";
|
|
32
28
|
// #endregion PRIVATE
|
|
33
29
|
// #region PUBLIC
|
|
34
30
|
/** Determina se a tabela deve usar paginação.
|
|
@@ -41,13 +37,10 @@ export class TableComponent {
|
|
|
41
37
|
this.itemsPerPageChange = new EventEmitter();
|
|
42
38
|
/** Evento emitido quando a página é alterada. */
|
|
43
39
|
this.pageChange = new EventEmitter();
|
|
44
|
-
/** Evento emitido quando o ID da paginação é criado no início. */
|
|
45
|
-
this.paginationIDChange = new EventEmitter();
|
|
46
40
|
/** Contador de registros (pode ser usado para futuras implementações de lógica interna). */
|
|
47
41
|
this.counter = 0;
|
|
48
42
|
/** Página atual da tabela. */
|
|
49
43
|
this.page = 1;
|
|
50
|
-
this.paginationID = (Math.random() * 10000).toString();
|
|
51
44
|
}
|
|
52
45
|
/** Inicializa o componente e define o número inicial de itens por página. */
|
|
53
46
|
ngOnInit() {
|
|
@@ -57,6 +50,8 @@ export class TableComponent {
|
|
|
57
50
|
else {
|
|
58
51
|
this.itemsPerPage = this.countOptions[0] ?? 10;
|
|
59
52
|
}
|
|
53
|
+
console.log("paginationID: ", this.paginationID);
|
|
54
|
+
console.log("this.paginationID ? this.paginationID : null: ", this.paginationID ? this.paginationID : null);
|
|
60
55
|
}
|
|
61
56
|
/** Monitora as mudanças nas entradas do componente e realiza ajustes, como resetar a paginação ou validar o layout das colunas.
|
|
62
57
|
* @param changes Objeto que contém as mudanças nas entradas do componente. */
|
|
@@ -68,6 +63,9 @@ export class TableComponent {
|
|
|
68
63
|
throw new Error("A soma de largura (classe com prefixo 'col-') de todas as colunas não pode ser maior que 12.");
|
|
69
64
|
}
|
|
70
65
|
}
|
|
66
|
+
if (changes["paginationID"]) {
|
|
67
|
+
console.log('Pagination ID changed:', this.paginationID);
|
|
68
|
+
}
|
|
71
69
|
}
|
|
72
70
|
// #endregion ==========> INICIALIZAÇÃO <==========
|
|
73
71
|
// #region ==========> UTILITÁRIOS <==========
|
|
@@ -87,11 +85,11 @@ export class TableComponent {
|
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "lib-table", inputs: { usePagination: "usePagination", recordsList: ["list", "recordsList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"], headersList: ["headers", "headersList"], emptyListMessage: "emptyListMessage" }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange"
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "lib-table", inputs: { usePagination: "usePagination", recordsList: ["list", "recordsList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"], headersList: ["headers", "headersList"], emptyListMessage: "emptyListMessage", paginationID: "paginationID" }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n class=\"sp-pagination mt-3\"\n (pageChange)=\"page = $event; pageChange.emit($event)\"\n previousLabel=\"\u00AB \" nextLabel=\" \u00BB\"\n [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINA\u00C7\u00C3O -->\n </div>\n </div>\n} @else {\n <!-- Loader enquanto os registros s\u00E3o carregados -->\n <div class=\"w-100 text-center\">\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\n </div>\n}\n", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#f9fafb!important}table thead>tr{background-color:#f9fafb!important}table thead>tr>th{background-color:#f9fafb!important}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
|
|
91
89
|
}
|
|
92
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
93
91
|
type: Component,
|
|
94
|
-
args: [{ selector: 'lib-table', template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n
|
|
92
|
+
args: [{ selector: 'lib-table', template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n class=\"sp-pagination mt-3\"\n (pageChange)=\"page = $event; pageChange.emit($event)\"\n previousLabel=\"\u00AB \" nextLabel=\" \u00BB\"\n [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINA\u00C7\u00C3O -->\n </div>\n </div>\n} @else {\n <!-- Loader enquanto os registros s\u00E3o carregados -->\n <div class=\"w-100 text-center\">\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\n </div>\n}\n", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#f9fafb!important}table thead>tr{background-color:#f9fafb!important}table thead>tr>th{background-color:#f9fafb!important}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
|
|
95
93
|
}], ctorParameters: () => [], propDecorators: { usePagination: [{
|
|
96
94
|
type: Input
|
|
97
95
|
}], recordsList: [{
|
|
@@ -113,7 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
113
111
|
type: Output
|
|
114
112
|
}], pageChange: [{
|
|
115
113
|
type: Output
|
|
116
|
-
}],
|
|
117
|
-
type:
|
|
114
|
+
}], paginationID: [{
|
|
115
|
+
type: Input
|
|
118
116
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFekc7Ozs7Ozs7Ozs7OztFQVlFO0FBTUYsTUFBTSxPQUFPLGNBQWM7SUF5RHpCLElBQVcsWUFBWSxLQUFhLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBVyxZQUFZLENBQUMsS0FBYTtRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxvQkFBb0I7SUFFcEIsa0RBQWtEO0lBR2xELGdEQUFnRDtJQUNoRDtRQWxFQSwrQ0FBK0M7UUFFL0Msa0JBQWtCO1FBQ1Ysa0JBQWEsR0FBVyxvQkFBb0IsQ0FBQztRQUNyRCxxQkFBcUI7UUFFckIsaUJBQWlCO1FBRWpCOzJCQUNtQjtRQUNILGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBVTlDOzRCQUNvQjtRQUNPLHdCQUFtQixHQUEyQyxLQUFLLENBQUM7UUFhL0YscUVBQXFFO1FBQ3BELHVCQUFrQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXZGLGlEQUFpRDtRQUNoQyxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFL0Usa0VBQWtFO1FBQ2pELHVCQUFrQixHQUF5QixJ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aW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBkZSBUYWJlbGEgQ3VzdG9taXrDoXZlbFxuICpcbiAqIE8gYFRhYmxlQ29tcG9uZW50YCDDqSB1bSBjb21wb25lbnRlIEFuZ3VsYXIgcHJvamV0YWRvIHBhcmEgZXhpYmlyIHVtYSB0YWJlbGEgY3VzdG9taXrDoXZlbFxuICogY29tIHN1cG9ydGUgYSBwYWdpbmHDp8Ojby4gRWxlIHBlcm1pdGUgYSBjb25maWd1cmHDp8OjbyBkZSBjYWJlw6dhbGhvcyBkZSBjb2x1bmFzLCBwb3NpY2lvbmFtZW50b1xuICogZGEgcGFnaW5hw6fDo28gZSBvcMOnw7VlcyBkZSBpdGVucyBwb3IgcMOhZ2luYS4gTyBjb21wb25lbnRlIMOpIGZsZXjDrXZlbCwgdXRpbGl6YW5kbyBjbGFzc2VzIEJvb3RzdHJhcFxuICogcGFyYSBhanVzdGFyIG8gbGF5b3V0IGRhcyBjb2x1bmFzIGUgZW1pdGluZG8gZXZlbnRvcyBwYXJhIHF1ZSBvIGNvbXBvbmVudGUgcGFpIHBvc3NhIHJlYWdpciBhXG4gKiBtdWRhbsOnYXMgbmEgcMOhZ2luYSBvdSBubyBuw7ptZXJvIGRlIGl0ZW5zIGV4aWJpZG9zLlxuICpcbiAqIEBzZWxlY3RvciBsaWItdGFibGVcbiAqIEB0ZW1wbGF0ZVVybCAuL3RhYmxlLmNvbXBvbmVudC5odG1sXG4gKiBAc3R5bGVVcmwgLi90YWJsZS5jb21wb25lbnQuc2Nzc1xuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QUklFREFERVMgPD09PT09PT09PT1cblxuICAvLyAjcmVnaW9uIFBSSVZBVEVcbiAgcHJpdmF0ZSBfcGFnaW5hdGlvbklEOiBzdHJpbmcgPSBcImxpYlRhYmxlUGFnaW5hdGlvblwiO1xuICAvLyAjZW5kcmVnaW9uIFBSSVZBVEVcblxuICAvLyAjcmVnaW9uIFBVQkxJQ1xuXG4gIC8qKiBEZXRlcm1pbmEgc2UgYSB0YWJlbGEgZGV2ZSB1c2FyIHBhZ2luYcOnw6NvLlxuICAgKiBAZGVmYXVsdCB0cnVlICovXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogTGlzdGEgZGUgcmVnaXN0cm9zIGEgc2VyZW0gZXhpYmlkb3MgbmEgdGFiZWxhLlxuICAgKiBAcmVxdWlyZWQgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdsaXN0JywgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIHJlY29yZHNMaXN0OiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICAvKiogT3DDp8O1ZXMgZGUgY29udGFnZW0gZGUgaXRlbnMgcG9yIHDDoWdpbmEgZGlzcG9uw612ZWlzIHBhcmEgbyB1c3XDoXJpby5cbiAgICogQHJlcXVpcmVkICovXG4gIEBJbnB1dCgnY291bnRzJykgcHVibGljIGNvdW50T3B0aW9uczogbnVtYmVyW107XG5cbiAgLyoqIFBvc2ljaW9uYW1lbnRvIGRvcyBjb250cm9sZXMgZGUgcGFnaW5hw6fDo28uXG4gICAqIEBkZWZhdWx0ICdlbmQnICovXG4gIEBJbnB1dCgncGxhY2VtZW50JykgcHVibGljIHBhZ2luYXRpb25QbGFjZW1lbnQ6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2JldHdlZW4nID0gJ2VuZCc7XG5cbiAgLyoqIExpc3RhIGRlIGNhYmXDp2FsaG9zIHBhcmEgYXMgY29sdW5hcyBkYSB0YWJlbGEsIGluY2x1aW5kbyBvIG5vbWUsIGEgbGFyZ3VyYSBkYSBjb2x1bmEgZSBjbGFzc2VzIGN1c3RvbWl6YWRhcy5cbiAgICogQHJlcXVpcmVkICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnaGVhZGVycycsIHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXJzTGlzdDoge1xuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb2w6IG51bWJlcixcbiAgICBjdXN0b21DbGFzc2VzPzogc3RyaW5nXG4gIH1bXTtcblxuICAvKiogTWVuc2FnZW0gY3VzdG9taXphZGEgcGFyYSBsaXN0YSB2YXppYSAqL1xuICBASW5wdXQoJ2VtcHR5TGlzdE1lc3NhZ2UnKSBwdWJsaWMgZW1wdHlMaXN0TWVzc2FnZT86IHN0cmluZztcblxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIG8gbsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYSDDqSBhbHRlcmFkby4gKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpdGVtc1BlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEV2ZW50byBlbWl0aWRvIHF1YW5kbyBhIHDDoWdpbmEgw6kgYWx0ZXJhZGEuICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIG8gSUQgZGEgcGFnaW5hw6fDo28gw6kgY3JpYWRvIG5vIGluw61jaW8uICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcGFnaW5hdGlvbklEQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG5cbiAgLyoqIENvbnRhZG9yIGRlIHJlZ2lzdHJvcyAocG9kZSBzZXIgdXNhZG8gcGFyYSBmdXR1cmFzIGltcGxlbWVudGHDp8O1ZXMgZGUgbMOzZ2ljYSBpbnRlcm5hKS4gKi9cbiAgcHVibGljIGNvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgLyoqIFDDoWdpbmEgYXR1YWwgZGEgdGFiZWxhLiAqL1xuXHRwdWJsaWMgcGFnZTogbnVtYmVyID0gMTtcblxuICAvKiogTsO6bWVybyBkZSBpdGVucyBhIHNlcmVtIGV4aWJpZG9zIHBvciBww6FnaW5hLiAqL1xuXHRwdWJsaWMgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG5cblxuICBwdWJsaWMgZ2V0IHBhZ2luYXRpb25JRCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fcGFnaW5hdGlvbklEOyB9XG4gIHB1YmxpYyBzZXQgcGFnaW5hdGlvbklEKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYWdpbmF0aW9uSUQgPSB2YWx1ZTtcbiAgICB0aGlzLnBhZ2luYXRpb25JRENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUFJJRURBREVTIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IElOSUNJQUxJWkHDh8ODTyA8PT09PT09PT09PVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBhZ2luYXRpb25JRCA9IChNYXRoLnJhbmRvbSgpICogMTAwMDApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKiogSW5pY2lhbGl6YSBvIGNvbXBvbmVudGUgZSBkZWZpbmUgbyBuw7ptZXJvIGluaWNpYWwgZGUgaXRlbnMgcG9yIHDDoWdpbmEuICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZHNMaXN0KSB7IHRoaXMuaXRlbXNQZXJQYWdlID0gdGhpcy5jb3VudE9wdGlvbnMgPyB0aGlzLmNvdW50T3B0aW9uc1swXSA6IHRoaXMucmVjb3Jkc0xpc3QubGVuZ3RoIH1cbiAgICBlbHNlIHsgdGhpcy5pdGVtc1BlclBhZ2UgPSB0aGlzLmNvdW50T3B0aW9uc1swXSA/PyAxMCB9XG4gIH1cblxuICAvKiogTW9uaXRvcmEgYXMgbXVkYW7Dp2FzIG5hcyBlbnRyYWRhcyBkbyBjb21wb25lbnRlIGUgcmVhbGl6YSBhanVzdGVzLCBjb21vIHJlc2V0YXIgYSBwYWdpbmHDp8OjbyBvdSB2YWxpZGFyIG8gbGF5b3V0IGRhcyBjb2x1bmFzLlxuICAgKiBAcGFyYW0gY2hhbmdlcyBPYmpldG8gcXVlIGNvbnTDqW0gYXMgbXVkYW7Dp2FzIG5hcyBlbnRyYWRhcyBkbyBjb21wb25lbnRlLiAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3JlY29yZHNMaXN0J10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbih0aGlzLnJlY29yZHNMaXN0ID8/IFtdKTtcblxuICAgICAgbGV0IG1heENvbHVtbnMgPSB0aGlzLmhlYWRlcnNMaXN0LnJlZHVjZSgobiwge2NvbH0pID0+IG4gKyBjb2wsIDApO1xuICAgICAgaWYgKG1heENvbHVtbnMgPj0gMTMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBzb21hIGRlIGxhcmd1cmEgKGNsYXNzZSBjb20gcHJlZml4byAnY29sLScpIGRlIHRvZGFzIGFzIGNvbHVuYXMgbsOjbyBwb2RlIHNlciBtYWlvciBxdWUgMTIuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IElOSUNJQUxJWkHDh8ODTyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMSVTDgVJJT1MgPD09PT09PT09PT1cblxuICAvKiogTW9kaWZpY2EgYSBxdWFudGlkYWRlIGRlIGl0ZW5zIGEgc2VyIG1vc3RyYWRhIG5hIGxpc3RhLlxuICAgKiBAcGFyYW0gZXZlbnQgcGFyw6JtZXRybyBkZSBldmVudG8gcXVlIGlyw6Egc2VsZWNpb25hciBhIG5vdmEgcXVhbnRpZGFkZS4gKi9cbiAgcHVibGljIG9uU2VsZWN0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSwgMTApO1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zUGVyUGFnZSk7XG4gIH1cblxuICAvKiogUmVzZXRhIGEgcGFnaW5hw6fDo28gZGEgbGlzdGFnZW0gY29tIGJhc2Ugbm8gbsO6bWVybyBhdHVhbCBkZSByZWdpc3Ryb3MuXG4gICAqIEBwYXJhbSBsaXN0IExpc3RhIGRlIHJlZ2lzdHJvcyBwYXJhIHJlc2V0YXIgYSBwYWdpbmHDp8Ojby4gKi9cbiAgcHVibGljIHJlc2V0UGFnaW5hdGlvbihsaXN0OiBhbnlbXSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICBpZiAobGlzdC5sZW5ndGggPD0gc3RhcnRJbmRleCkge1xuICAgICAgdGhpcy5wYWdlID0gMTtcbiAgICB9XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxJVMOBUklPUyA8PT09PT09PT09PVxuXG59XG4iLCJAaWYgKHJlY29yZHNMaXN0KSB7XG4gICA8ZGl2IGNsYXNzPVwidGFibGUtbGlzdCB3LTEwMCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPCEtLSBFeGliZSBvIG7Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGUgbyB0b3RhbCBkZSByZWdpc3Ryb3MgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj4gRXhpYmluZG8ge3sgaXRlbXNQZXJQYWdlIDw9IHJlY29yZHNMaXN0Lmxlbmd0aCA/IGl0ZW1zUGVyUGFnZSA6IHJlY29yZHNMaXN0Lmxlbmd0aCB9fSBkZSB7eyByZWNvcmRzTGlzdC5sZW5ndGggfX0gcmVnaXN0cm9zIDwvc3Bhbj5cbiAgICAgIFxuICAgICAgPCEtLSBDb250YWluZXIgZGEgdGFiZWxhIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWxpc3Qgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlci1ib3R0b20tMCByb3VuZGVkLWJvdHRvbSByb3VuZGVkXCI+XG4gICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlciBib3JkZXIgbWItMFwiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPCEtLSBJdGVyYSBzb2JyZSBhIGxpc3RhIGRlIGNhYmXDp2FsaG9zIHBhcmEgY3JpYXIgYXMgY29sdW5hcyAtLT5cbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGhlYWRlcnNMaXN0XCIgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1taWRkbGUgdGV4dC1kYXJrLWdyZXkge3sgaGVhZGVyLmNvbCA+IDAgPyAnY29sLScraGVhZGVyLmNvbCA6ICdjb2wnIH19IHt7IGhlYWRlci5jdXN0b21DbGFzc2VzIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICB7eyBoZWFkZXIubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJiZy1saWdodCBmYWRlLWluLXJvd1wiPlxuICAgICAgICAgICAgICAgQGlmIChyZWNvcmRzTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8IS0tIENvbnRlw7pkbyBkYXMgbGluaGFzIGRhIHRhYmVsYSAtLT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpbm5lclJvd3NdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPCEtLSBNZW5zYWdlbSBkZSBhdXPDqm5jaWEgZGUgcmVnaXN0cm9zIC0tPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMlwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWxpZ2h0IGZzdC1pdGFsaWMgdGV4dC1jZW50ZXJcIj4ge3sgZW1wdHlMaXN0TWVzc2FnZSA/IGVtcHR5TGlzdE1lc3NhZ2UgOiBcIkNvbnN1bHRhIG7Do28gcmV0b3Jub3UgcmVnaXN0cm9zLi4uXCIgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgPC90YWJsZT5cblxuICAgICAgICAgPCEtLSAjcmVnaW9uIFBBR0lOQcOHw4NPIC0tPlxuICAgICAgICAgPGRpdiAqbmdJZj1cInVzZVBhZ2luYXRpb24gJiYgcmVjb3Jkc0xpc3QubGVuZ3RoID4gMFwiIGNsYXNzPVwiZC1mbGV4IG10LTJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHBhZ2luYXRpb25QbGFjZW1lbnQgPT0gJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnZW5kJyxcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbic6IHBhZ2luYXRpb25QbGFjZW1lbnQgPT0gJ2JldHdlZW4nXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWUtMlwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj4gSXRlbnMgcG9yIHDDoWdpbmEgPC9sYWJlbD5cbiAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBzZWxlY3Qtc2VhcmNoXCIgKGNoYW5nZSk9XCJvblNlbGVjdENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb3VudCBvZiBjb3VudE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwiY291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImNvdW50T3B0aW9ucy5sZW5ndGggPiAwICYmIGkgPT0gMFwiPnt7IGNvdW50IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIENvbnRyb2xlIGRlIHBhZ2luYcOnw6NvIC0tPlxuICAgICAgICAgICAgPHBhZ2luYXRpb24tY29udHJvbHNcbiAgICAgICAgICAgICAgIFtpZF09XCJwYWdpbmF0aW9uSURcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJzcC1wYWdpbmF0aW9uIG10LTNcIlxuICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwicGFnZSA9ICRldmVudDsgcGFnZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgcHJldmlvdXNMYWJlbD1cIsKrJm5ic3A7Jm5ic3A7Jm5ic3A7XCIgbmV4dExhYmVsPVwiJm5ic3A7Jm5ic3A7Jm5ic3A7wrtcIlxuICAgICAgICAgICAgICAgW21heFNpemVdPVwiNVwiPlxuICAgICAgICAgICAgPC9wYWdpbmF0aW9uLWNvbnRyb2xzPlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8IS0tICNlbmRyZWdpb24gUEFHSU5Bw4fDg08gLS0+XG4gICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICA8IS0tIExvYWRlciBlbnF1YW50byBvcyByZWdpc3Ryb3Mgc8OjbyBjYXJyZWdhZG9zIC0tPlxuICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+IDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+Q2FycmVnYW5kbyBpbmZvcm1hw6fDtWVzLi4uPC9zcGFuPiA8L2Rpdj5cbiAgIDwvZGl2PlxufVxuIl19
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFekc7Ozs7Ozs7Ozs7OztFQVlFO0FBTUYsTUFBTSxPQUFPLGNBQWM7SUFzRHpCLElBQ1csWUFBWSxLQUFhLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBVyxZQUFZLENBQUMsS0FBYTtRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxvQkFBb0IsQ0FBQztJQUNyRCxDQUFDO0lBQ0Qsb0JBQW9CO0lBRXBCLGtEQUFrRDtJQUdsRCxnREFBZ0Q7SUFDaEQ7UUEzREEscUJBQXFCO1FBRXJCLGlCQUFpQjtRQUVqQjsyQkFDbUI7UUFDSCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQVU5Qzs0QkFDb0I7UUFDTyx3QkFBbUIsR0FBMkMsS0FBSyxDQUFDO1FBYS9GLHFFQUFxRTtRQUNwRCx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RixpREFBaUQ7UUFDaEMsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRy9FLDRGQUE0RjtRQUNyRixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRTNCLDhCQUE4QjtRQUN4QixTQUFJLEdBQVcsQ0FBQyxDQUFDO0lBaUJQLENBQUM7SUFFakIsNkVBQTZFO0lBQzdFLFFBQVE7UUFDTixJQUFJLElBQUks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c0JBQTFCLE1BQU07Z0JBY0ksWUFBWTtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENvbXBvbmVudGUgZGUgVGFiZWxhIEN1c3RvbWl6w6F2ZWxcbiAqXG4gKiBPIGBUYWJsZUNvbXBvbmVudGAgw6kgdW0gY29tcG9uZW50ZSBBbmd1bGFyIHByb2pldGFkbyBwYXJhIGV4aWJpciB1bWEgdGFiZWxhIGN1c3RvbWl6w6F2ZWxcbiAqIGNvbSBzdXBvcnRlIGEgcGFnaW5hw6fDo28uIEVsZSBwZXJtaXRlIGEgY29uZmlndXJhw6fDo28gZGUgY2FiZcOnYWxob3MgZGUgY29sdW5hcywgcG9zaWNpb25hbWVudG9cbiAqIGRhIHBhZ2luYcOnw6NvIGUgb3DDp8O1ZXMgZGUgaXRlbnMgcG9yIHDDoWdpbmEuIE8gY29tcG9uZW50ZSDDqSBmbGV4w612ZWwsIHV0aWxpemFuZG8gY2xhc3NlcyBCb290c3RyYXBcbiAqIHBhcmEgYWp1c3RhciBvIGxheW91dCBkYXMgY29sdW5hcyBlIGVtaXRpbmRvIGV2ZW50b3MgcGFyYSBxdWUgbyBjb21wb25lbnRlIHBhaSBwb3NzYSByZWFnaXIgYVxuICogbXVkYW7Dp2FzIG5hIHDDoWdpbmEgb3Ugbm8gbsO6bWVybyBkZSBpdGVucyBleGliaWRvcy5cbiAqXG4gKiBAc2VsZWN0b3IgbGliLXRhYmxlXG4gKiBAdGVtcGxhdGVVcmwgLi90YWJsZS5jb21wb25lbnQuaHRtbFxuICogQHN0eWxlVXJsIC4vdGFibGUuY29tcG9uZW50LnNjc3NcbiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUFJJRURBREVTIDw9PT09PT09PT09XG5cbiAgLy8gI3JlZ2lvbiBQUklWQVRFXG4gIHByaXZhdGUgX3BhZ2luYXRpb25JRDogc3RyaW5nO1xuICAvLyAjZW5kcmVnaW9uIFBSSVZBVEVcblxuICAvLyAjcmVnaW9uIFBVQkxJQ1xuXG4gIC8qKiBEZXRlcm1pbmEgc2UgYSB0YWJlbGEgZGV2ZSB1c2FyIHBhZ2luYcOnw6NvLlxuICAgKiBAZGVmYXVsdCB0cnVlICovXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogTGlzdGEgZGUgcmVnaXN0cm9zIGEgc2VyZW0gZXhpYmlkb3MgbmEgdGFiZWxhLlxuICAgKiBAcmVxdWlyZWQgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdsaXN0JywgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIHJlY29yZHNMaXN0OiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICAvKiogT3DDp8O1ZXMgZGUgY29udGFnZW0gZGUgaXRlbnMgcG9yIHDDoWdpbmEgZGlzcG9uw612ZWlzIHBhcmEgbyB1c3XDoXJpby5cbiAgICogQHJlcXVpcmVkICovXG4gIEBJbnB1dCgnY291bnRzJykgcHVibGljIGNvdW50T3B0aW9uczogbnVtYmVyW107XG5cbiAgLyoqIFBvc2ljaW9uYW1lbnRvIGRvcyBjb250cm9sZXMgZGUgcGFnaW5hw6fDo28uXG4gICAqIEBkZWZhdWx0ICdlbmQnICovXG4gIEBJbnB1dCgncGxhY2VtZW50JykgcHVibGljIHBhZ2luYXRpb25QbGFjZW1lbnQ6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2JldHdlZW4nID0gJ2VuZCc7XG5cbiAgLyoqIExpc3RhIGRlIGNhYmXDp2FsaG9zIHBhcmEgYXMgY29sdW5hcyBkYSB0YWJlbGEsIGluY2x1aW5kbyBvIG5vbWUsIGEgbGFyZ3VyYSBkYSBjb2x1bmEgZSBjbGFzc2VzIGN1c3RvbWl6YWRhcy5cbiAgICogQHJlcXVpcmVkICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnaGVhZGVycycsIHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXJzTGlzdDoge1xuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb2w6IG51bWJlcixcbiAgICBjdXN0b21DbGFzc2VzPzogc3RyaW5nXG4gIH1bXTtcblxuICAvKiogTWVuc2FnZW0gY3VzdG9taXphZGEgcGFyYSBsaXN0YSB2YXppYSAqL1xuICBASW5wdXQoJ2VtcHR5TGlzdE1lc3NhZ2UnKSBwdWJsaWMgZW1wdHlMaXN0TWVzc2FnZT86IHN0cmluZztcblxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIG8gbsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYSDDqSBhbHRlcmFkby4gKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpdGVtc1BlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEV2ZW50byBlbWl0aWRvIHF1YW5kbyBhIHDDoWdpbmEgw6kgYWx0ZXJhZGEuICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXG4gIC8qKiBDb250YWRvciBkZSByZWdpc3Ryb3MgKHBvZGUgc2VyIHVzYWRvIHBhcmEgZnV0dXJhcyBpbXBsZW1lbnRhw6fDtWVzIGRlIGzDs2dpY2EgaW50ZXJuYSkuICovXG4gIHB1YmxpYyBjb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIC8qKiBQw6FnaW5hIGF0dWFsIGRhIHRhYmVsYS4gKi9cblx0cHVibGljIHBhZ2U6IG51bWJlciA9IDE7XG5cbiAgLyoqIE7Dum1lcm8gZGUgaXRlbnMgYSBzZXJlbSBleGliaWRvcyBwb3IgcMOhZ2luYS4gKi9cblx0cHVibGljIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuXG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBwYWdpbmF0aW9uSUQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25JRDsgfVxuICBwdWJsaWMgc2V0IHBhZ2luYXRpb25JRCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGFnaW5hdGlvbklEID0gdmFsdWUgfHwgJ2xpYlRhYmxlUGFnaW5hdGlvbic7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BSSUVEQURFUyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBJTklDSUFMSVpBw4fDg08gPD09PT09PT09PT1cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKiogSW5pY2lhbGl6YSBvIGNvbXBvbmVudGUgZSBkZWZpbmUgbyBuw7ptZXJvIGluaWNpYWwgZGUgaXRlbnMgcG9yIHDDoWdpbmEuICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZHNMaXN0KSB7IHRoaXMuaXRlbXNQZXJQYWdlID0gdGhpcy5jb3VudE9wdGlvbnMgPyB0aGlzLmNvdW50T3B0aW9uc1swXSA6IHRoaXMucmVjb3Jkc0xpc3QubGVuZ3RoIH1cbiAgICBlbHNlIHsgdGhpcy5pdGVtc1BlclBhZ2UgPSB0aGlzLmNvdW50T3B0aW9uc1swXSA/PyAxMCB9XG5cbiAgICBjb25zb2xlLmxvZyhcInBhZ2luYXRpb25JRDogXCIsIHRoaXMucGFnaW5hdGlvbklEKTtcbiAgICBjb25zb2xlLmxvZyhcInRoaXMucGFnaW5hdGlvbklEID8gdGhpcy5wYWdpbmF0aW9uSUQgOiBudWxsOiBcIiwgdGhpcy5wYWdpbmF0aW9uSUQgPyB0aGlzLnBhZ2luYXRpb25JRCA6IG51bGwpO1xuICB9XG5cbiAgLyoqIE1vbml0b3JhIGFzIG11ZGFuw6dhcyBuYXMgZW50cmFkYXMgZG8gY29tcG9uZW50ZSBlIHJlYWxpemEgYWp1c3RlcywgY29tbyByZXNldGFyIGEgcGFnaW5hw6fDo28gb3UgdmFsaWRhciBvIGxheW91dCBkYXMgY29sdW5hcy5cbiAgICogQHBhcmFtIGNoYW5nZXMgT2JqZXRvIHF1ZSBjb250w6ltIGFzIG11ZGFuw6dhcyBuYXMgZW50cmFkYXMgZG8gY29tcG9uZW50ZS4gKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydyZWNvcmRzTGlzdCddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5yZXNldFBhZ2luYXRpb24odGhpcy5yZWNvcmRzTGlzdCA/PyBbXSk7XG5cbiAgICAgIGxldCBtYXhDb2x1bW5zID0gdGhpcy5oZWFkZXJzTGlzdC5yZWR1Y2UoKG4sIHtjb2x9KSA9PiBuICsgY29sLCAwKTtcbiAgICAgIGlmIChtYXhDb2x1bW5zID49IDEzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgc29tYSBkZSBsYXJndXJhIChjbGFzc2UgY29tIHByZWZpeG8gJ2NvbC0nKSBkZSB0b2RhcyBhcyBjb2x1bmFzIG7Do28gcG9kZSBzZXIgbWFpb3IgcXVlIDEyLlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcInBhZ2luYXRpb25JRFwiXSkge1xuICAgICAgY29uc29sZS5sb2coJ1BhZ2luYXRpb24gSUQgY2hhbmdlZDonLCB0aGlzLnBhZ2luYXRpb25JRCk7XG4gICAgfVxuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gSU5JQ0lBTElaQcOHw4NPIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFVUSUxJVMOBUklPUyA8PT09PT09PT09PVxuXG4gIC8qKiBNb2RpZmljYSBhIHF1YW50aWRhZGUgZGUgaXRlbnMgYSBzZXIgbW9zdHJhZGEgbmEgbGlzdGEuXG4gICAqIEBwYXJhbSBldmVudCBwYXLDom1ldHJvIGRlIGV2ZW50byBxdWUgaXLDoSBzZWxlY2lvbmFyIGEgbm92YSBxdWFudGlkYWRlLiAqL1xuICBwdWJsaWMgb25TZWxlY3RDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlLCAxMCk7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgfVxuXG4gIC8qKiBSZXNldGEgYSBwYWdpbmHDp8OjbyBkYSBsaXN0YWdlbSBjb20gYmFzZSBubyBuw7ptZXJvIGF0dWFsIGRlIHJlZ2lzdHJvcy5cbiAgICogQHBhcmFtIGxpc3QgTGlzdGEgZGUgcmVnaXN0cm9zIHBhcmEgcmVzZXRhciBhIHBhZ2luYcOnw6NvLiAqL1xuICBwdWJsaWMgcmVzZXRQYWdpbmF0aW9uKGxpc3Q6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9ICh0aGlzLnBhZ2UgLSAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlO1xuICAgIGlmIChsaXN0Lmxlbmd0aCA8PSBzdGFydEluZGV4KSB7XG4gICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIH1cbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gVVRJTElUw4FSSU9TIDw9PT09PT09PT09XG5cbn1cbiIsIkBpZiAocmVjb3Jkc0xpc3QpIHtcbiAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1saXN0IHctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICA8IS0tIEV4aWJlIG8gbsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZSBvIHRvdGFsIGRlIHJlZ2lzdHJvcyAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPiBFeGliaW5kbyB7eyBpdGVtc1BlclBhZ2UgPD0gcmVjb3Jkc0xpc3QubGVuZ3RoID8gaXRlbXNQZXJQYWdlIDogcmVjb3Jkc0xpc3QubGVuZ3RoIH19IGRlIHt7IHJlY29yZHNMaXN0Lmxlbmd0aCB9fSByZWdpc3Ryb3MgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIENvbnRhaW5lciBkYSB0YWJlbGEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtbGlzdCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyLWJvdHRvbS0wIHJvdW5kZWQtYm90dG9tIHJvdW5kZWRcIj5cbiAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWhvdmVyIGJvcmRlciBtYi0wXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICA8IS0tIEl0ZXJhIHNvYnJlIGEgbGlzdGEgZGUgY2FiZcOnYWxob3MgcGFyYSBjcmlhciBhcyBjb2x1bmFzIC0tPlxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgaGVhZGVyc0xpc3RcIiBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLW1pZGRsZSB0ZXh0LWRhcmstZ3JleSB7eyBoZWFkZXIuY29sID4gMCA/ICdjb2wtJytoZWFkZXIuY29sIDogJ2NvbCcgfX0ge3sgaGVhZGVyLmN1c3RvbUNsYXNzZXMgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgIHt7IGhlYWRlci5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImJnLWxpZ2h0IGZhZGUtaW4tcm93XCI+XG4gICAgICAgICAgICAgICBAaWYgKHJlY29yZHNMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDwhLS0gQ29udGXDumRvIGRhcyBsaW5oYXMgZGEgdGFiZWxhIC0tPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lubmVyUm93c11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8IS0tIE1lbnNhZ2VtIGRlIGF1c8OqbmNpYSBkZSByZWdpc3Ryb3MgLS0+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEyXCIgY2xhc3M9XCJhbGlnbi1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbGlnaHQgZnN0LWl0YWxpYyB0ZXh0LWNlbnRlclwiPiB7eyBlbXB0eUxpc3RNZXNzYWdlID8gZW1wdHlMaXN0TWVzc2FnZSA6IFwiQ29uc3VsdGEgbsOjbyByZXRvcm5vdSByZWdpc3Ryb3MuLi5cIiB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICA8IS0tICNyZWdpb24gUEFHSU5Bw4fDg08gLS0+XG4gICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlUGFnaW5hdGlvbiAmJiByZWNvcmRzTGlzdC5sZW5ndGggPiAwXCIgY2xhc3M9XCJkLWZsZXggbXQtMlwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50LXN0YXJ0JzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnc3RhcnQnLFxuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBwYWdpbmF0aW9uUGxhY2VtZW50ID09ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiBwYWdpbmF0aW9uUGxhY2VtZW50ID09ICdlbmQnLFxuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnYmV0d2VlbidcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPiBJdGVucyBwb3IgcMOhZ2luYSA8L2xhYmVsPlxuICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IHNlbGVjdC1zZWFyY2hcIiAoY2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvdW50IG9mIGNvdW50T3B0aW9uczsgbGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiY291bnRPcHRpb25zLmxlbmd0aCA+IDAgJiYgaSA9PSAwXCI+e3sgY291bnQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQ29udHJvbGUgZGUgcGFnaW5hw6fDo28gLS0+XG4gICAgICAgICAgICA8cGFnaW5hdGlvbi1jb250cm9sc1xuICAgICAgICAgICAgICAgY2xhc3M9XCJzcC1wYWdpbmF0aW9uIG10LTNcIlxuICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwicGFnZSA9ICRldmVudDsgcGFnZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgcHJldmlvdXNMYWJlbD1cIsKrJm5ic3A7Jm5ic3A7Jm5ic3A7XCIgbmV4dExhYmVsPVwiJm5ic3A7Jm5ic3A7Jm5ic3A7wrtcIlxuICAgICAgICAgICAgICAgW21heFNpemVdPVwiNVwiPlxuICAgICAgICAgICAgPC9wYWdpbmF0aW9uLWNvbnRyb2xzPlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8IS0tICNlbmRyZWdpb24gUEFHSU5Bw4fDg08gLS0+XG4gICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICA8IS0tIExvYWRlciBlbnF1YW50byBvcyByZWdpc3Ryb3Mgc8OjbyBjYXJyZWdhZG9zIC0tPlxuICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+IDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+Q2FycmVnYW5kbyBpbmZvcm1hw6fDtWVzLi4uPC9zcGFuPiA8L2Rpdj5cbiAgIDwvZGl2PlxufVxuIl19
|
|
@@ -3052,16 +3052,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3052
3052
|
class TableComponent {
|
|
3053
3053
|
get paginationID() { return this._paginationID; }
|
|
3054
3054
|
set paginationID(value) {
|
|
3055
|
-
this._paginationID = value;
|
|
3056
|
-
this.paginationIDChange.emit(value);
|
|
3055
|
+
this._paginationID = value || 'libTablePagination';
|
|
3057
3056
|
}
|
|
3058
3057
|
// #endregion PUBLIC
|
|
3059
3058
|
// #endregion ==========> PROPRIEDADES <==========
|
|
3060
3059
|
// #region ==========> INICIALIZAÇÃO <==========
|
|
3061
3060
|
constructor() {
|
|
3062
|
-
// #region ==========> PROPRIEDADES <==========
|
|
3063
|
-
// #region PRIVATE
|
|
3064
|
-
this._paginationID = "libTablePagination";
|
|
3065
3061
|
// #endregion PRIVATE
|
|
3066
3062
|
// #region PUBLIC
|
|
3067
3063
|
/** Determina se a tabela deve usar paginação.
|
|
@@ -3074,13 +3070,10 @@ class TableComponent {
|
|
|
3074
3070
|
this.itemsPerPageChange = new EventEmitter();
|
|
3075
3071
|
/** Evento emitido quando a página é alterada. */
|
|
3076
3072
|
this.pageChange = new EventEmitter();
|
|
3077
|
-
/** Evento emitido quando o ID da paginação é criado no início. */
|
|
3078
|
-
this.paginationIDChange = new EventEmitter();
|
|
3079
3073
|
/** Contador de registros (pode ser usado para futuras implementações de lógica interna). */
|
|
3080
3074
|
this.counter = 0;
|
|
3081
3075
|
/** Página atual da tabela. */
|
|
3082
3076
|
this.page = 1;
|
|
3083
|
-
this.paginationID = (Math.random() * 10000).toString();
|
|
3084
3077
|
}
|
|
3085
3078
|
/** Inicializa o componente e define o número inicial de itens por página. */
|
|
3086
3079
|
ngOnInit() {
|
|
@@ -3090,6 +3083,8 @@ class TableComponent {
|
|
|
3090
3083
|
else {
|
|
3091
3084
|
this.itemsPerPage = this.countOptions[0] ?? 10;
|
|
3092
3085
|
}
|
|
3086
|
+
console.log("paginationID: ", this.paginationID);
|
|
3087
|
+
console.log("this.paginationID ? this.paginationID : null: ", this.paginationID ? this.paginationID : null);
|
|
3093
3088
|
}
|
|
3094
3089
|
/** Monitora as mudanças nas entradas do componente e realiza ajustes, como resetar a paginação ou validar o layout das colunas.
|
|
3095
3090
|
* @param changes Objeto que contém as mudanças nas entradas do componente. */
|
|
@@ -3101,6 +3096,9 @@ class TableComponent {
|
|
|
3101
3096
|
throw new Error("A soma de largura (classe com prefixo 'col-') de todas as colunas não pode ser maior que 12.");
|
|
3102
3097
|
}
|
|
3103
3098
|
}
|
|
3099
|
+
if (changes["paginationID"]) {
|
|
3100
|
+
console.log('Pagination ID changed:', this.paginationID);
|
|
3101
|
+
}
|
|
3104
3102
|
}
|
|
3105
3103
|
// #endregion ==========> INICIALIZAÇÃO <==========
|
|
3106
3104
|
// #region ==========> UTILITÁRIOS <==========
|
|
@@ -3120,11 +3118,11 @@ class TableComponent {
|
|
|
3120
3118
|
}
|
|
3121
3119
|
}
|
|
3122
3120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "lib-table", inputs: { usePagination: "usePagination", recordsList: ["list", "recordsList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"], headersList: ["headers", "headersList"], emptyListMessage: "emptyListMessage" }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange"
|
|
3121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "lib-table", inputs: { usePagination: "usePagination", recordsList: ["list", "recordsList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"], headersList: ["headers", "headersList"], emptyListMessage: "emptyListMessage", paginationID: "paginationID" }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n class=\"sp-pagination mt-3\"\n (pageChange)=\"page = $event; pageChange.emit($event)\"\n previousLabel=\"\u00AB \" nextLabel=\" \u00BB\"\n [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINA\u00C7\u00C3O -->\n </div>\n </div>\n} @else {\n <!-- Loader enquanto os registros s\u00E3o carregados -->\n <div class=\"w-100 text-center\">\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\n </div>\n}\n", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#f9fafb!important}table thead>tr{background-color:#f9fafb!important}table thead>tr>th{background-color:#f9fafb!important}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
|
|
3124
3122
|
}
|
|
3125
3123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
3126
3124
|
type: Component,
|
|
3127
|
-
args: [{ selector: 'lib-table', template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n
|
|
3125
|
+
args: [{ selector: 'lib-table', template: "@if (recordsList) {\n <div class=\"table-list w-100 position-relative\">\n <!-- Exibe o n\u00FAmero de itens mostrados e o total de registros -->\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\n \n <!-- Container da tabela -->\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\n <table class=\"table table-hover border mb-0\">\n <thead>\n <tr>\n <!-- Itera sobre a lista de cabe\u00E7alhos para criar as colunas -->\n <th *ngFor=\"let header of headersList\" scope=\"col\"\n class=\"align-middle text-dark-grey {{ header.col > 0 ? 'col-'+header.col : 'col' }} {{ header.customClasses }}\">\n {{ header.name }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-light fade-in-row\">\n @if (recordsList.length > 0) {\n <!-- Conte\u00FAdo das linhas da tabela -->\n <ng-content select=\"[innerRows]\"></ng-content>\n }\n @else {\n <!-- Mensagem de aus\u00EAncia de registros -->\n <tr>\n <td colspan=\"12\" class=\"align-middle\">\n <span class=\"fw-light fst-italic text-center\"> {{ emptyListMessage ? emptyListMessage : \"Consulta n\u00E3o retornou registros...\" }} </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- #region PAGINA\u00C7\u00C3O -->\n <div *ngIf=\"usePagination && recordsList.length > 0\" class=\"d-flex mt-2\"\n [ngClass]=\"{\n 'justify-content-start': paginationPlacement == 'start',\n 'justify-content-center': paginationPlacement == 'center',\n 'justify-content-end': paginationPlacement == 'end',\n 'justify-content-between': paginationPlacement == 'between'\n }\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\n </select>\n </div>\n\n <!-- Controle de pagina\u00E7\u00E3o -->\n <pagination-controls\n class=\"sp-pagination mt-3\"\n (pageChange)=\"page = $event; pageChange.emit($event)\"\n previousLabel=\"\u00AB \" nextLabel=\" \u00BB\"\n [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINA\u00C7\u00C3O -->\n </div>\n </div>\n} @else {\n <!-- Loader enquanto os registros s\u00E3o carregados -->\n <div class=\"w-100 text-center\">\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\n </div>\n}\n", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#f9fafb!important}table thead>tr{background-color:#f9fafb!important}table thead>tr>th{background-color:#f9fafb!important}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
|
|
3128
3126
|
}], ctorParameters: () => [], propDecorators: { usePagination: [{
|
|
3129
3127
|
type: Input
|
|
3130
3128
|
}], recordsList: [{
|
|
@@ -3146,8 +3144,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3146
3144
|
type: Output
|
|
3147
3145
|
}], pageChange: [{
|
|
3148
3146
|
type: Output
|
|
3149
|
-
}],
|
|
3150
|
-
type:
|
|
3147
|
+
}], paginationID: [{
|
|
3148
|
+
type: Input
|
|
3151
3149
|
}] } });
|
|
3152
3150
|
|
|
3153
3151
|
/**
|