keevo-components 2.0.97 → 2.0.98

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.
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
181
181
  ])
182
182
  ], template: "<div\r\n class=\"h-full flex flex-row p-2 kv-table-viewer overflow-hidden {{\r\n data().length == 0 ? 'empty-table' : ''\r\n }}\"\r\n>\r\n <div\r\n class=\"h-full {{ handleTableSize() }} m-0 p-0 flex flex-column gap-2\"\r\n [style.transition]=\"'all 0.3s ease-in-out'\"\r\n >\r\n <div\r\n class=\"flex flex-row align-items-center justify-content-between flex-initial\"\r\n >\r\n <div class=\"flex flex-row align-items-center gap-2\">\r\n @if(searchInput()) {\r\n <input\r\n style=\"height: 1.875rem\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n pInputText\r\n [(ngModel)]=\"searchValue\"\r\n />\r\n\r\n } @if(filterButton()) {\r\n <kv-button\r\n label=\"Filtrar\"\r\n icon=\"filter_alt\"\r\n severity=\"tertiary\"\r\n (onClick)=\"op.toggle($event)\"\r\n ></kv-button>\r\n }\r\n\r\n <p-overlayPanel #op>\r\n <ng-content select=\"[filtro]\"> </ng-content>\r\n </p-overlayPanel>\r\n </div>\r\n <div class=\"flex flex-row gap-2\">\r\n @if(actionsHeader()) { @for(action of actionsHeader(); track $index) {\r\n <kv-button\r\n [icon]=\"action?.icon || ''\"\r\n [label]=\"action?.label || ''\"\r\n [severity]=\"action['severity'] || 'tertiary'\"\r\n (onClick)=\"action?.command($event)\"\r\n ></kv-button>\r\n } } @if(selectedItem()) {\r\n <kv-button\r\n [pTooltip]=\"'Recolher'\"\r\n icon=\"reorder\"\r\n severity=\"tertiary\"\r\n (onClick)=\"selectedItem.set(null)\"\r\n ></kv-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-1 h-full overflow-hidden\">\r\n <p-table\r\n [value]=\"data()\"\r\n [lazy]=\"lazy()\"\r\n [selectionPageOnly]=\"selectionPageOnly()\"\r\n [columns]=\"columns()\"\r\n [paginator]=\"paginator()\"\r\n [rows]=\"rows()\"\r\n [totalRecords]=\"totalRecords()\"\r\n [loading]=\"loading()\"\r\n [pageLinks]=\"pageLinks()\"\r\n [first]=\"first()\"\r\n [scrollable]=\"scrollable()\"\r\n scrollHeight=\"flex\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\r\n (onPage)=\"handlePageChange($event)\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\r\n [(selection)]=\"selectedItems\"\r\n styleClass=\"p-datatable-sm text-xs overflow-y-auto h-full flex flex-column h-full\"\r\n >\r\n @if(showHeader()) {\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @if(selectableTable()) {\r\n <th style=\"width: 4rem\"><p-tableHeaderCheckbox /></th>\r\n } @for (col of columns; track col.field) {\r\n <th [style]=\"{ width: col.width || 'auto' }\">{{ col.header }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\r\n <tr\r\n class=\"cursor-pointer {{\r\n verifyItemSelecionado()(rowData) && 'bg-gray-100'\r\n }} hover:bg-gray-200\"\r\n >\r\n @if(selectableTable()) {\r\n <td><p-tableCheckbox [value]=\"rowData\" /></td>\r\n } @for (col of columns; track col.field) {\r\n <td (click)=\"rowSelect(rowData)\">\r\n @if(col?.template) {\r\n <div class=\"flex flex-row gap-2 align-items-center\">\r\n @if (getCustomTemplate()(col.template.name)) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"getCustomTemplate()(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n />\r\n }\r\n </div>\r\n } @else if(col?.icon) {\r\n <span class=\"material-symbols-outlined text-lg\">\r\n {{ col.icon(rowData) }}\r\n </span>\r\n } @else if(col?.tag) {\r\n <kv-tags [tags]=\"[col.tag(rowData)]\" />\r\n } @else {\r\n {{ transformData()(col.pipe, rowData[col.field]) }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"columns().length + 1\">\r\n <div\r\n class=\"w-full h-full flex align-items-center justify-content-center\"\r\n >\r\n <img\r\n [src]=\"emptyTableImg()\"\r\n class=\"h-10rem w-auto\"\r\n />\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"shadow-2 p-0 m-0 col selected-item-field ml-2\"\r\n [@slideInOut]=\"hasSelectedItems() ? 'i.n' : 'out'\"\r\n [style.overflow]=\"'hidden'\"\r\n >\r\n @if(selectedItems().length > 1) {\r\n <actions-lote-field\r\n [selectedItems]=\"selectedItems()\"\r\n [actionsLote]=\"actionsLote()\"\r\n />\r\n } @else if(selectedItems().length == 1 || selectedItem()) {\r\n <div class=\"bg-gray-100 w-full h-auto p-2 relative\">\r\n @if(actionsRow()) {\r\n <actions-row-menu [actionsRow]=\"actionsRow()\" />\r\n }\r\n <ng-content select=\"[selectedItemHeader]\"></ng-content>\r\n </div>\r\n <div class=\"p-2 overflow-y-auto h-full\">\r\n <ng-content select=\"[selectedItem]\"></ng-content>\r\n </div>\r\n }\r\n\r\n <!-- @else { Nenhum item selecionado } -->\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep .kv-table-viewer .p-paginator .p-paginator-pages .p-paginator-page{font-size:.75rem;min-width:2rem;height:2rem}::ng-deep .kv-table-viewer .p-paginator .p-paginator-current{font-size:.75rem}::ng-deep .kv-table-viewer .p-inputwrapper .p-dropdown{margin:0;height:auto}::ng-deep .p-paginator-rpp-options .p-dropdown-panel .p-dropdown-items{padding:.25rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item{border-radius:.25rem;height:1.5rem;display:flex;align-items:center;justify-content:center}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-label{padding:.5rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-trigger{width:1.5rem}::ng-deep .p-paginator-bottom .p-link{min-width:2rem;height:2rem}::ng-deep .p-paginator{padding:0rem}::ng-deep .p-dropdown-label{font-size:.75rem}::ng-deep .p-datatable-wrapper::-webkit-scrollbar{width:6px}::ng-deep .p-datatable-wrapper::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-datatable-wrapper::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-datatable-wrapper:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-datatable-wrapper::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .empty-table .p-datatable-table{height:100%}\n"] }]
183
183
  }], ctorParameters: () => [] });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhYmxlLXZpZXdlci9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUs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LFdBQ1AsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLENBQUMsY0FHM087d0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTs0QkFDcEIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0NBQ2hCLEtBQUssRUFBRSxHQUFHO2dDQUNWLE9BQU8sRUFBRSxDQUFDO2dDQUNWLFNBQVMsRUFBRSxlQUFlOzZCQUMzQixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Z0NBQ2pCLEtBQUssRUFBRSxLQUFLO2dDQUNaLE9BQU8sRUFBRSxDQUFDO2dDQUNWLFNBQVMsRUFBRSxrQkFBa0I7NkJBQzlCLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixPQUFPLENBQUMsbUJBQW1CLENBQUM7NkJBQzdCLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDOzZCQUM3QixDQUFDO3lCQUNILENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBjb250ZW50Q2hpbGRyZW4sIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NrZWxldG9uJztcclxuaW1wb3J0IHsgVGFibGVNb2R1bGUsIFRhYmxlUGFnZUV2ZW50IH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IEt2SW5wdXRzTW9kdWxlIH0gZnJvbSBcIi4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEt2QnV0dG9uTW9kdWxlIH0gZnJvbSBcIi4uL2t2LWJ1dHRvbi9rdi1idXR0b24ubW9kdWxlXCI7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHsgQWN0aW9uc0xvdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb25zLWxvdGUtZmllbGQvYWN0aW9ucy1sb3RlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEt2VGFnc01vZHVsZSB9IGZyb20gXCIuLi9rdi10YWdzL2t2LXRhZ3MubW9kdWxlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUaWVyZWRNZW51TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90aWVyZWRtZW51JztcclxuaW1wb3J0IHsgQWN0aW9uc1Jvd01lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9ucy1yb3ctbWVudS9hY3Rpb25zLXJvdy1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENwZkNucGpQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL2NwZmNucGoucGlwZSc7XHJcbmltcG9ydCB7IFRlbGVmb25lUGlwZSB9IGZyb20gJy4uLy4uL2FwaS9waXBlcy90ZWxlZm9uZS5waXBlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hcGkvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5cclxuaW50ZXJmYWNlIENvbHVtblRhYmxlVmlld2VyIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIGljb24/OiAocm93RGF0YTogYW55KSA9PiBzdHJpbmc7XHJcbiAgdGFnPzogKHJvd0RhdGE6IGFueSkgPT4geyBsYWJlbDogc3RyaW5nLCBzZXZlcml0eTogc3RyaW5nLCBpY29uOiBzdHJpbmcgfTtcclxuICBwaXBlPzogJ2NwZmNucGonIHwgJ3RlbGVmb25lJyB8ICdtb25leScgfCB1bmRlZmluZWQ7XHJcbiAgdGVtcGxhdGU/OiB7IG5hbWU6IHN0cmluZyB9O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXRhYmxlLXZpZXdlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbSW5wdXRUZXh0TW9kdWxlLCBDb21tb25Nb2R1bGUsIFRvb2x0aXBNb2R1bGUsIFRhYmxlTW9kdWxlLCBTa2VsZXRvbk1vZHVsZSwgQnV0dG9uTW9kdWxlLCBLdklucHV0c01vZHVsZSwgS3ZCdXR0b25Nb2R1bGUsIE92ZXJsYXlQYW5lbE1vZHVsZSwgQWN0aW9uc0xvdGVGaWVsZENvbXBvbmVudCwgS3ZUYWdzTW9kdWxlLCBUaWVyZWRNZW51TW9kdWxlLCBBY3Rpb25zUm93TWVudUNvbXBvbmVudCwgRm9ybXNNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHtcclxuICAgICAgICB3aWR0aDogJyonLFxyXG4gICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSdcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnb3V0Jywgc3R5bGUoe1xyXG4gICAgICAgIHdpZHRoOiAnMHB4JyxcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignb3V0ID0+IGluJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtcclxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VGFibGVWaWV3ZXJDb21wb25lbnQge1xyXG5cclxuICBjcGZDbnBqUGlwZSA9IGluamVjdChDcGZDbnBqUGlwZSk7XHJcbiAgdGVsZWZvbmVQaXBlID0gaW5qZWN0KFRlbGVmb25lUGlwZSk7XHJcbiAgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG5cclxuICBjb2x1bW5zID0gaW5wdXQ8Q29sdW1uVGFibGVWaWV3ZXJbXT4oW10pO1xyXG5cclxuICBhY3Rpb25zUm93ID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBhY3Rpb25zSGVhZGVyID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBhY3Rpb25zTG90ZSA9IGlucHV0PE1lbnVJdGVtW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGRhdGEgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIHRvdGFsUmVjb3JkcyA9IGlucHV0PG51bWJlcj4oMCk7XHJcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByb3dzID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcbiAgcm93c1BlclBhZ2VPcHRpb25zID0gaW5wdXQ8bnVtYmVyW10+KFsxMCwgMjUsIDUwXSk7XHJcbiAgcGFnaW5hdG9yID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgbGF6eSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNjcm9sbGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBwYWdlTGlua3MgPSBpbnB1dDxudW1iZXI+KDIpO1xyXG4gIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPSBpbnB1dDxzdHJpbmc+KCd7Zmlyc3R9IC0ge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9Jyk7XHJcbiAgc2VsZWN0aW9uUGFnZU9ubHkgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHJcblxyXG4gIHNlbGVjdGFibGVUYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dIZWFkZXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICB0YWJsZVZpZXdlclNpemUgPSBpbnB1dDxzdHJpbmc+KCdjb2wtOCcpO1xyXG4gIHNlYXJjaElucHV0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgZmlsdGVyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgaWROYW1lID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIGVtcHR5VGFibGVJbWcgPSBpbnB1dDxzdHJpbmc+KCdodHRwczovL3dvcmstYXNzZXRzLmtlZXZvLmNvbS5ici9pbWcvTmVuaHVtX3JlZ2lzdHJvX2xvY2FsaXphZG8ucG5nJyk7XHJcblxyXG5cclxuICBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XHJcbiAgc2VsZWN0ZWRJdGVtID0gc2lnbmFsPGFueT4obnVsbCk7XHJcbiAgZmlyc3QgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBzZWFyY2hWYWx1ZSA9IHNpZ25hbCgnJyk7XHJcblxyXG4gIG9uUGFnZUNoYW5nZSA9IG91dHB1dDxUYWJsZVBhZ2VFdmVudD4oKTtcclxuICBvbkNsaWNrUm93SXRlbSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgb25TZWxlY3RJdGVtcyA9IG91dHB1dDxhbnlbXT4oKTtcclxuICBvblNlYXJjaCA9IG91dHB1dDxzdHJpbmc+KCk7XHJcblxyXG4gIHRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgX3RlbXBsYXRlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+Pih7fSk7XHJcbiAgZ2V0Q3VzdG9tVGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiAodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9PiB7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZXMgPSB0aGlzLl90ZW1wbGF0ZXMoKTtcclxuICAgIHJldHVybiB0ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcclxuICB9KTtcclxuXHJcbiAgaGFzU2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwIHx8IHRoaXMuc2VsZWN0ZWRJdGVtKCk7XHJcbiAgfSk7XHJcblxyXG4gIHZlcmlmeUl0ZW1TZWxlY2lvbmFkbyA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnkpID0+IHtcclxuICAgIGxldCBpc1NlbGVjdGVkO1xyXG5cclxuICAgIGxldCBpZE5hbWUgPSB0aGlzLmlkTmFtZSgpIHx8ICdpZCc7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0YWJsZVRhYmxlKCkpXHJcbiAgICAgIGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW1baWROYW1lXSA9PSByb3dEYXRhW2lkTmFtZV0pO1xyXG4gICAgZWxzZSBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEl0ZW0oKT8uW2lkTmFtZV0gPT0gcm93RGF0YVtpZE5hbWVdO1xyXG5cclxuICAgIHJldHVybiBpc1NlbGVjdGVkO1xyXG4gIH0pXHJcblxyXG4gIHRyYW5zZm9ybURhdGEgPSBjb21wdXRlZCgoKSA9PiAodHlwZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2NwZmNucGonKSByZXR1cm4gdGhpcy5jcGZDbnBqUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgaWYgKHR5cGUgPT09ICd0ZWxlZm9uZScpIHJldHVybiB0aGlzLnRlbGVmb25lUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdtb25leScpIHJldHVybiB0aGlzLnRyYW5zZm9ybU1vbmV5KHZhbHVlKTtcclxuICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXknLCAnVVRDJyk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2RhdGV0aW1lJykgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eSBoaDptbScpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdkYXRlTW9udGhZZWFyJykgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnTU0veXl5eScpO1xyXG5cclxuICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xyXG4gIH0pXHJcblxyXG4gIGhhbmRsZVRhYmxlU2l6ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtKCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgJiYgIXNlbGVjdGVkSXRlbSlcclxuICAgICAgcmV0dXJuICdjb2wtMTInO1xyXG4gICAgZWxzZSByZXR1cm4gdGhpcy50YWJsZVZpZXdlclNpemUoKTtcclxuICB9KVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0SXRlbXMuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMoKSk7XHJcbiAgICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaFZhbHVlKCkpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZVBhZ2VDaGFuZ2UoZXZlbnQ6IFRhYmxlUGFnZUV2ZW50KSB7XHJcbiAgICB0aGlzLmZpcnN0LnNldChldmVudC5maXJzdCk7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHJvd1NlbGVjdChyb3dEYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGFibGVUYWJsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMoKS5pbmNsdWRlcyhyb3dEYXRhKSlcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMudXBkYXRlKChpdGVtczogYW55W10pID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHJvd0RhdGEpKTtcclxuICAgICAgZWxzZSB0aGlzLnNlbGVjdGVkSXRlbXMudXBkYXRlKChpdGVtczogYW55W10pID0+IFsuLi5pdGVtcywgcm93RGF0YV0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA9PT0gMSlcclxuICAgICAgICB0aGlzLm9uQ2xpY2tSb3dJdGVtLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKClbMF0pO1xyXG4gICAgICBlbHNlIHRoaXMub25DbGlja1Jvd0l0ZW0uZW1pdChyb3dEYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNldChyb3dEYXRhKTtcclxuICAgICAgdGhpcy5vbkNsaWNrUm93SXRlbS5lbWl0KHJvd0RhdGEpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybU1vbmV5KHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1yb3cgcC0yIGt2LXRhYmxlLXZpZXdlciBvdmVyZmxvdy1oaWRkZW4ge3tcclxuICAgIGRhdGEoKS5sZW5ndGggPT0gMCA/ICdlbXB0eS10YWJsZScgOiAnJ1xyXG4gIH19XCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaC1mdWxsIHt7IGhhbmRsZVRhYmxlU2l6ZSgpIH19IG0tMCBwLTAgZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiXHJcbiAgICBbc3R5bGUudHJhbnNpdGlvbl09XCInYWxsIDAuM3MgZWFzZS1pbi1vdXQnXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1pbml0aWFsXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgQGlmKHNlYXJjaElucHV0KCkpIHtcclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxLjg3NXJlbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICB9IEBpZihmaWx0ZXJCdXR0b24oKSkge1xyXG4gICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgIGxhYmVsPVwiRmlsdHJhclwiXHJcbiAgICAgICAgICBpY29uPVwiZmlsdGVyX2FsdFwiXHJcbiAgICAgICAgICBzZXZlcml0eT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgIChvbkNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9rdi1idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8cC1vdmVybGF5UGFuZWwgI29wPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZpbHRyb11cIj4gPC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvcC1vdmVybGF5UGFuZWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMlwiPlxyXG4gICAgICAgIEBpZihhY3Rpb25zSGVhZGVyKCkpIHsgQGZvcihhY3Rpb24gb2YgYWN0aW9uc0hlYWRlcigpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICBbaWNvbl09XCJhY3Rpb24/Lmljb24gfHwgJydcIlxyXG4gICAgICAgICAgW2xhYmVsXT1cImFjdGlvbj8ubGFiZWwgfHwgJydcIlxyXG4gICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblsnc2V2ZXJpdHknXSB8fCAndGVydGlhcnknXCJcclxuICAgICAgICAgIChvbkNsaWNrKT1cImFjdGlvbj8uY29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9rdi1idXR0b24+XHJcbiAgICAgICAgfSB9IEBpZihzZWxlY3RlZEl0ZW0oKSkge1xyXG4gICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgIFtwVG9vbHRpcF09XCInUmVjb2xoZXInXCJcclxuICAgICAgICAgIGljb249XCJyZW9yZGVyXCJcclxuICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgKG9uQ2xpY2spPVwic2VsZWN0ZWRJdGVtLnNldChudWxsKVwiXHJcbiAgICAgICAgPjwva3YtYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIGgtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgPHAtdGFibGVcclxuICAgICAgICBbdmFsdWVdPVwiZGF0YSgpXCJcclxuICAgICAgICBbbGF6eV09XCJsYXp5KClcIlxyXG4gICAgICAgIFtzZWxlY3Rpb25QYWdlT25seV09XCJzZWxlY3Rpb25QYWdlT25seSgpXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zKClcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yKClcIlxyXG4gICAgICAgIFtyb3dzXT1cInJvd3MoKVwiXHJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHMoKVwiXHJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcclxuICAgICAgICBbcGFnZUxpbmtzXT1cInBhZ2VMaW5rcygpXCJcclxuICAgICAgICBbZmlyc3RdPVwiZmlyc3QoKVwiXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZSgpXCJcclxuICAgICAgICBzY3JvbGxIZWlnaHQ9XCJmbGV4XCJcclxuICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG4gICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUoKVwiXHJcbiAgICAgICAgKG9uUGFnZSk9XCJoYW5kbGVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VPcHRpb25zKClcIlxyXG4gICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc20gdGV4dC14cyBvdmVyZmxvdy15LWF1dG8gaC1mdWxsIGZsZXggZmxleC1jb2x1bW4gaC1mdWxsXCJcclxuICAgICAgPlxyXG4gICAgICAgIEBpZihzaG93SGVhZGVyKCkpIHtcclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIEBpZihzZWxlY3RhYmxlVGFibGUoKSkge1xyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNHJlbVwiPjxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggLz48L3RoPlxyXG4gICAgICAgICAgICB9IEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wuZmllbGQpIHtcclxuICAgICAgICAgICAgPHRoIFtzdHlsZV09XCJ7IHdpZHRoOiBjb2wud2lkdGggfHwgJ2F1dG8nIH1cIj57eyBjb2wuaGVhZGVyIH19PC90aD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cclxuICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHt7XHJcbiAgICAgICAgICAgICAgdmVyaWZ5SXRlbVNlbGVjaW9uYWRvKCkocm93RGF0YSkgJiYgJ2JnLWdyYXktMTAwJ1xyXG4gICAgICAgICAgICB9fSBob3ZlcjpiZy1ncmF5LTIwMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZihzZWxlY3RhYmxlVGFibGUoKSkge1xyXG4gICAgICAgICAgICA8dGQ+PHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwicm93RGF0YVwiIC8+PC90ZD5cclxuICAgICAgICAgICAgfSBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sLmZpZWxkKSB7XHJcbiAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwicm93U2VsZWN0KHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgQGlmKGNvbD8udGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYoY29sPy5pY29uKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGdcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbC5pY29uKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYoY29sPy50YWcpIHtcclxuICAgICAgICAgICAgICA8a3YtdGFncyBbdGFnc109XCJbY29sLnRhZyhyb3dEYXRhKV1cIiAvPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIHt7IHRyYW5zZm9ybURhdGEoKShjb2wucGlwZSwgcm93RGF0YVtjb2wuZmllbGRdKSB9fVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMoKS5sZW5ndGggKyAxXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJlbXB0eVRhYmxlSW1nKClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTByZW0gdy1hdXRvXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvcC10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInNoYWRvdy0yIHAtMCBtLTAgY29sIHNlbGVjdGVkLWl0ZW0tZmllbGQgbWwtMlwiXHJcbiAgICBbQHNsaWRlSW5PdXRdPVwiaGFzU2VsZWN0ZWRJdGVtcygpID8gJ2kubicgOiAnb3V0J1wiXHJcbiAgICBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIlxyXG4gID5cclxuICAgIEBpZihzZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMSkge1xyXG4gICAgPGFjdGlvbnMtbG90ZS1maWVsZFxyXG4gICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zKClcIlxyXG4gICAgICBbYWN0aW9uc0xvdGVdPVwiYWN0aW9uc0xvdGUoKVwiXHJcbiAgICAvPlxyXG4gICAgfSBAZWxzZSBpZihzZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTEwMCB3LWZ1bGwgaC1hdXRvIHAtMiByZWxhdGl2ZVwiPlxyXG4gICAgICBAaWYoYWN0aW9uc1JvdygpKSB7XHJcbiAgICAgIDxhY3Rpb25zLXJvdy1tZW51IFthY3Rpb25zUm93XT1cImFjdGlvbnNSb3coKVwiIC8+XHJcbiAgICAgIH1cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlbGVjdGVkSXRlbUhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTIgb3ZlcmZsb3cteS1hdXRvIGgtZnVsbFwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2VsZWN0ZWRJdGVtXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gQGVsc2UgeyBOZW5odW0gaXRlbSBzZWxlY2lvbmFkbyB9IC0tPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhYmxlLXZpZXdlci9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUs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LFdBQ1AsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLENBQUMsY0FHM087d0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTs0QkFDcEIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0NBQ2hCLEtBQUssRUFBRSxHQUFHO2dDQUNWLE9BQU8sRUFBRSxDQUFDO2dDQUNWLFNBQVMsRUFBRSxlQUFlOzZCQUMzQixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Z0NBQ2pCLEtBQUssRUFBRSxLQUFLO2dDQUNaLE9BQU8sRUFBRSxDQUFDO2dDQUNWLFNBQVMsRUFBRSxrQkFBa0I7NkJBQzlCLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixPQUFPLENBQUMsbUJBQW1CLENBQUM7NkJBQzdCLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDOzZCQUM3QixDQUFDO3lCQUNILENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBjb250ZW50Q2hpbGRyZW4sIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NrZWxldG9uJztcclxuaW1wb3J0IHsgVGFibGVNb2R1bGUsIFRhYmxlUGFnZUV2ZW50IH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IEt2SW5wdXRzTW9kdWxlIH0gZnJvbSBcIi4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEt2QnV0dG9uTW9kdWxlIH0gZnJvbSBcIi4uL2t2LWJ1dHRvbi9rdi1idXR0b24ubW9kdWxlXCI7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHsgQWN0aW9uc0xvdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb25zLWxvdGUtZmllbGQvYWN0aW9ucy1sb3RlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEt2VGFnc01vZHVsZSB9IGZyb20gXCIuLi9rdi10YWdzL2t2LXRhZ3MubW9kdWxlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUaWVyZWRNZW51TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90aWVyZWRtZW51JztcclxuaW1wb3J0IHsgQWN0aW9uc1Jvd01lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9ucy1yb3ctbWVudS9hY3Rpb25zLXJvdy1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENwZkNucGpQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL2NwZmNucGoucGlwZSc7XHJcbmltcG9ydCB7IFRlbGVmb25lUGlwZSB9IGZyb20gJy4uLy4uL2FwaS9waXBlcy90ZWxlZm9uZS5waXBlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hcGkvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5cclxuaW50ZXJmYWNlIENvbHVtblRhYmxlVmlld2VyIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIGljb24/OiAocm93RGF0YTogYW55KSA9PiBzdHJpbmc7XHJcbiAgdGFnPzogKHJvd0RhdGE6IGFueSkgPT4geyBsYWJlbDogc3RyaW5nLCBzZXZlcml0eTogc3RyaW5nLCBpY29uOiBzdHJpbmcgfTtcclxuICBwaXBlPzogJ2NwZmNucGonIHwgJ3RlbGVmb25lJyB8ICdtb25leScgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ2RhdGVNb250aFllYXInIHwgdW5kZWZpbmVkO1xyXG4gIHRlbXBsYXRlPzogeyBuYW1lOiBzdHJpbmcgfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi10YWJsZS12aWV3ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0lucHV0VGV4dE1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBUYWJsZU1vZHVsZSwgU2tlbGV0b25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgS3ZJbnB1dHNNb2R1bGUsIEt2QnV0dG9uTW9kdWxlLCBPdmVybGF5UGFuZWxNb2R1bGUsIEFjdGlvbnNMb3RlRmllbGRDb21wb25lbnQsIEt2VGFnc01vZHVsZSwgVGllcmVkTWVudU1vZHVsZSwgQWN0aW9uc1Jvd01lbnVDb21wb25lbnQsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4va3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5zY3NzJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzbGlkZUluT3V0JywgW1xyXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7XHJcbiAgICAgICAgd2lkdGg6ICcqJyxcclxuICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHtcclxuICAgICAgICB3aWR0aDogJzBweCcsXHJcbiAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJ1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ291dCA9PiBpbicsIFtcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXHJcbiAgICAgIF0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbiA9PiBvdXQnLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdlRhYmxlVmlld2VyQ29tcG9uZW50IHtcclxuXHJcbiAgY3BmQ25walBpcGUgPSBpbmplY3QoQ3BmQ25walBpcGUpO1xyXG4gIHRlbGVmb25lUGlwZSA9IGluamVjdChUZWxlZm9uZVBpcGUpO1xyXG4gIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuXHJcbiAgY29sdW1ucyA9IGlucHV0PENvbHVtblRhYmxlVmlld2VyW10+KFtdKTtcclxuXHJcbiAgYWN0aW9uc1JvdyA9IGlucHV0PE1lbnVJdGVtW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgYWN0aW9uc0hlYWRlciA9IGlucHV0PE1lbnVJdGVtW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgYWN0aW9uc0xvdGUgPSBpbnB1dDxNZW51SXRlbVtdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICBkYXRhID0gaW5wdXQ8YW55W10+KFtdKTtcclxuICB0b3RhbFJlY29yZHMgPSBpbnB1dDxudW1iZXI+KDApO1xyXG4gIGxvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgcm93cyA9IGlucHV0PG51bWJlcj4oMTApO1xyXG4gIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPihbMTAsIDI1LCA1MF0pO1xyXG4gIHBhZ2luYXRvciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxhenkgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBzY3JvbGxhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgcGFnZUxpbmtzID0gaW5wdXQ8bnVtYmVyPigyKTtcclxuICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID0gaW5wdXQ8c3RyaW5nPigne2ZpcnN0fSAtIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfScpO1xyXG4gIHNlbGVjdGlvblBhZ2VPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG5cclxuICBzZWxlY3RhYmxlVGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBzaG93SGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgdGFibGVWaWV3ZXJTaXplID0gaW5wdXQ8c3RyaW5nPignY29sLTgnKTtcclxuICBzZWFyY2hJbnB1dCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGZpbHRlckJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGlkTmFtZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBlbXB0eVRhYmxlSW1nID0gaW5wdXQ8c3RyaW5nPignaHR0cHM6Ly93b3JrLWFzc2V0cy5rZWV2by5jb20uYnIvaW1nL05lbmh1bV9yZWdpc3Ryb19sb2NhbGl6YWRvLnBuZycpO1xyXG5cclxuXHJcbiAgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xyXG4gIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnk+KG51bGwpO1xyXG4gIGZpcnN0ID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcbiAgc2VhcmNoVmFsdWUgPSBzaWduYWwoJycpO1xyXG5cclxuICBvblBhZ2VDaGFuZ2UgPSBvdXRwdXQ8VGFibGVQYWdlRXZlbnQ+KCk7XHJcbiAgb25DbGlja1Jvd0l0ZW0gPSBvdXRwdXQ8YW55PigpO1xyXG4gIG9uU2VsZWN0SXRlbXMgPSBvdXRwdXQ8YW55W10+KCk7XHJcbiAgb25TZWFyY2ggPSBvdXRwdXQ8c3RyaW5nPigpO1xyXG5cclxuICB0ZW1wbGF0ZXMgPSBjb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIF90ZW1wbGF0ZXMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+Pj4oe30pO1xyXG4gIGdldEN1c3RvbVRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4gKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5fdGVtcGxhdGVzKCk7XHJcbiAgICByZXR1cm4gdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfSk7XHJcblxyXG4gIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMCB8fCB0aGlzLnNlbGVjdGVkSXRlbSgpO1xyXG4gIH0pO1xyXG5cclxuICB2ZXJpZnlJdGVtU2VsZWNpb25hZG8gPSBjb21wdXRlZCgoKSA9PiAocm93RGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgaXNTZWxlY3RlZDtcclxuXHJcbiAgICBsZXQgaWROYW1lID0gdGhpcy5pZE5hbWUoKSB8fCAnaWQnO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGFibGVUYWJsZSgpKVxyXG4gICAgICBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEl0ZW1zKCkuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtW2lkTmFtZV0gPT0gcm93RGF0YVtpZE5hbWVdKTtcclxuICAgIGVsc2UgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtKCk/LltpZE5hbWVdID09IHJvd0RhdGFbaWROYW1lXTtcclxuXHJcbiAgICByZXR1cm4gaXNTZWxlY3RlZDtcclxuICB9KVxyXG5cclxuICB0cmFuc2Zvcm1EYXRhID0gY29tcHV0ZWQoKCkgPT4gKHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgaWYgKHR5cGUgPT09ICdjcGZjbnBqJykgcmV0dXJuIHRoaXMuY3BmQ25walBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgIGlmICh0eXBlID09PSAndGVsZWZvbmUnKSByZXR1cm4gdGhpcy50ZWxlZm9uZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgIGlmICh0eXBlID09PSAnbW9uZXknKSByZXR1cm4gdGhpcy50cmFuc2Zvcm1Nb25leSh2YWx1ZSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2RhdGUnKSByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5JywgJ1VUQycpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdkYXRldGltZScpIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXkgaGg6bW0nKTtcclxuICAgIGlmICh0eXBlID09PSAnZGF0ZU1vbnRoWWVhcicpIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ01NL3l5eXknKTtcclxuXHJcbiAgICBlbHNlIHJldHVybiB2YWx1ZTtcclxuICB9KVxyXG5cclxuICBoYW5kbGVUYWJsZVNpemUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwICYmICFzZWxlY3RlZEl0ZW0pXHJcbiAgICAgIHJldHVybiAnY29sLTEyJztcclxuICAgIGVsc2UgcmV0dXJuIHRoaXMudGFibGVWaWV3ZXJTaXplKCk7XHJcbiAgfSlcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5vblNlbGVjdEl0ZW1zLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKCkpO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSgpKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlQ2hhbmdlKGV2ZW50OiBUYWJsZVBhZ2VFdmVudCkge1xyXG4gICAgdGhpcy5maXJzdC5zZXQoZXZlbnQuZmlyc3QpO1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICByb3dTZWxlY3Qocm93RGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlVGFibGUoKSkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zKCkuaW5jbHVkZXMocm93RGF0YSkpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnVwZGF0ZSgoaXRlbXM6IGFueVtdKSA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSByb3dEYXRhKSk7XHJcbiAgICAgIGVsc2UgdGhpcy5zZWxlY3RlZEl0ZW1zLnVwZGF0ZSgoaXRlbXM6IGFueVtdKSA9PiBbLi4uaXRlbXMsIHJvd0RhdGFdKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPT09IDEpXHJcbiAgICAgICAgdGhpcy5vbkNsaWNrUm93SXRlbS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcygpWzBdKTtcclxuICAgICAgZWxzZSB0aGlzLm9uQ2xpY2tSb3dJdGVtLmVtaXQocm93RGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQocm93RGF0YSk7XHJcbiAgICAgIHRoaXMub25DbGlja1Jvd0l0ZW0uZW1pdChyb3dEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Nb25leSh2YWxvcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgncHQtQlInLCB7XHJcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICBjdXJyZW5jeTogJ0JSTCcsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWxvcik7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtcm93IHAtMiBrdi10YWJsZS12aWV3ZXIgb3ZlcmZsb3ctaGlkZGVuIHt7XHJcbiAgICBkYXRhKCkubGVuZ3RoID09IDAgPyAnZW1wdHktdGFibGUnIDogJydcclxuICB9fVwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImgtZnVsbCB7eyBoYW5kbGVUYWJsZVNpemUoKSB9fSBtLTAgcC0wIGZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIlxyXG4gICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiJ2FsbCAwLjNzIGVhc2UtaW4tb3V0J1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtaW5pdGlhbFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgIEBpZihzZWFyY2hJbnB1dCgpKSB7XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogMS44NzVyZW1cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgfSBAaWYoZmlsdGVyQnV0dG9uKCkpIHtcclxuICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICBsYWJlbD1cIkZpbHRyYXJcIlxyXG4gICAgICAgICAgaWNvbj1cImZpbHRlcl9hbHRcIlxyXG4gICAgICAgICAgc2V2ZXJpdHk9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAob25DbGljayk9XCJvcC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwva3YtYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPHAtb3ZlcmxheVBhbmVsICNvcD5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmaWx0cm9dXCI+IDwvbmctY29udGVudD5cclxuICAgICAgICA8L3Atb3ZlcmxheVBhbmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cclxuICAgICAgICBAaWYoYWN0aW9uc0hlYWRlcigpKSB7IEBmb3IoYWN0aW9uIG9mIGFjdGlvbnNIZWFkZXIoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25dPVwiYWN0aW9uPy5pY29uIHx8ICcnXCJcclxuICAgICAgICAgIFtsYWJlbF09XCJhY3Rpb24/LmxhYmVsIHx8ICcnXCJcclxuICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25bJ3NldmVyaXR5J10gfHwgJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24/LmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwva3YtYnV0dG9uPlxyXG4gICAgICAgIH0gfSBAaWYoc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiJ1JlY29saGVyJ1wiXHJcbiAgICAgICAgICBpY29uPVwicmVvcmRlclwiXHJcbiAgICAgICAgICBzZXZlcml0eT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgIChvbkNsaWNrKT1cInNlbGVjdGVkSXRlbS5zZXQobnVsbClcIlxyXG4gICAgICAgID48L2t2LWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSBoLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgIDxwLXRhYmxlXHJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGEoKVwiXHJcbiAgICAgICAgW2xhenldPVwibGF6eSgpXCJcclxuICAgICAgICBbc2VsZWN0aW9uUGFnZU9ubHldPVwic2VsZWN0aW9uUGFnZU9ubHkoKVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucygpXCJcclxuICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvcigpXCJcclxuICAgICAgICBbcm93c109XCJyb3dzKClcIlxyXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzKClcIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiXHJcbiAgICAgICAgW3BhZ2VMaW5rc109XCJwYWdlTGlua3MoKVwiXHJcbiAgICAgICAgW2ZpcnN0XT1cImZpcnN0KClcIlxyXG4gICAgICAgIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGUoKVwiXHJcbiAgICAgICAgc2Nyb2xsSGVpZ2h0PVwiZmxleFwiXHJcbiAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlKClcIlxyXG4gICAgICAgIChvblBhZ2UpPVwiaGFuZGxlUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9ucygpXCJcclxuICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXNtIHRleHQteHMgb3ZlcmZsb3cteS1hdXRvIGgtZnVsbCBmbGV4IGZsZXgtY29sdW1uIGgtZnVsbFwiXHJcbiAgICAgID5cclxuICAgICAgICBAaWYoc2hvd0hlYWRlcigpKSB7XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICBAaWYoc2VsZWN0YWJsZVRhYmxlKCkpIHtcclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW1cIj48cC10YWJsZUhlYWRlckNoZWNrYm94IC8+PC90aD5cclxuICAgICAgICAgICAgfSBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sLmZpZWxkKSB7XHJcbiAgICAgICAgICAgIDx0aCBbc3R5bGVdPVwieyB3aWR0aDogY29sLndpZHRoIHx8ICdhdXRvJyB9XCI+e3sgY29sLmhlYWRlciB9fTwvdGg+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB7e1xyXG4gICAgICAgICAgICAgIHZlcmlmeUl0ZW1TZWxlY2lvbmFkbygpKHJvd0RhdGEpICYmICdiZy1ncmF5LTEwMCdcclxuICAgICAgICAgICAgfX0gaG92ZXI6YmctZ3JheS0yMDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBAaWYoc2VsZWN0YWJsZVRhYmxlKCkpIHtcclxuICAgICAgICAgICAgPHRkPjxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cInJvd0RhdGFcIiAvPjwvdGQ+XHJcbiAgICAgICAgICAgIH0gQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbC5maWVsZCkge1xyXG4gICAgICAgICAgICA8dGQgKGNsaWNrKT1cInJvd1NlbGVjdChyb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgIEBpZihjb2w/LnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGdldEN1c3RvbVRlbXBsYXRlKCkoY29sLnRlbXBsYXRlLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKCkoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhIH1cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9IEBlbHNlIGlmKGNvbD8uaWNvbikge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0ZXh0LWxnXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjb2wuaWNvbihyb3dEYXRhKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9IEBlbHNlIGlmKGNvbD8udGFnKSB7XHJcbiAgICAgICAgICAgICAgPGt2LXRhZ3MgW3RhZ3NdPVwiW2NvbC50YWcocm93RGF0YSldXCIgLz5cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1EYXRhKCkoY29sLnBpcGUsIHJvd0RhdGFbY29sLmZpZWxkXSkgfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zKCkubGVuZ3RoICsgMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZW1wdHlUYWJsZUltZygpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwcmVtIHctYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L3AtdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJzaGFkb3ctMiBwLTAgbS0wIGNvbCBzZWxlY3RlZC1pdGVtLWZpZWxkIG1sLTJcIlxyXG4gICAgW0BzbGlkZUluT3V0XT1cImhhc1NlbGVjdGVkSXRlbXMoKSA/ICdpLm4nIDogJ291dCdcIlxyXG4gICAgW3N0eWxlLm92ZXJmbG93XT1cIidoaWRkZW4nXCJcclxuICA+XHJcbiAgICBAaWYoc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDEpIHtcclxuICAgIDxhY3Rpb25zLWxvdGUtZmllbGRcclxuICAgICAgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtcygpXCJcclxuICAgICAgW2FjdGlvbnNMb3RlXT1cImFjdGlvbnNMb3RlKClcIlxyXG4gICAgLz5cclxuICAgIH0gQGVsc2UgaWYoc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA9PSAxIHx8IHNlbGVjdGVkSXRlbSgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgdy1mdWxsIGgtYXV0byBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgQGlmKGFjdGlvbnNSb3coKSkge1xyXG4gICAgICA8YWN0aW9ucy1yb3ctbWVudSBbYWN0aW9uc1Jvd109XCJhY3Rpb25zUm93KClcIiAvPlxyXG4gICAgICB9XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzZWxlY3RlZEl0ZW1IZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC0yIG92ZXJmbG93LXktYXV0byBoLWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlbGVjdGVkSXRlbV1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8IS0tIEBlbHNlIHsgTmVuaHVtIGl0ZW0gc2VsZWNpb25hZG8gfSAtLT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==