axidio-styleguide-library1-v2 0.2.19 → 0.2.20

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.
@@ -7,15 +7,12 @@ import * as i3 from "../header-alt/header-alt.component";
7
7
  export class AxTableComponent {
8
8
  constructor() {
9
9
  this.clickEvent = new EventEmitter();
10
- // Display state
11
10
  this.isHeaderVisible = true;
12
11
  this.isUserSort = false;
13
- // Table structure
14
12
  this.tableHeadList = [];
15
13
  this.itemList = [];
16
14
  this.masterList = [];
17
15
  this.currentList = [];
18
- // Pagination state
19
16
  this.DEFAULT_PAGE_SIZE = 10;
20
17
  this.MAX_PAGES_TO_SHOW = 5;
21
18
  this.currentPage = 1;
@@ -24,17 +21,14 @@ export class AxTableComponent {
24
21
  this.totalPages = 1;
25
22
  this.goToPageNumber = 1;
26
23
  this.pagesToShow = [];
27
- // Sorting state
28
24
  this.sortDirection = 'asc';
29
25
  this.sortColumn = '';
30
- // Configuration
31
26
  this.chartConfiguration = {};
32
27
  this.defaultConfiguration = {};
33
28
  }
34
29
  ngOnInit() {
35
30
  this.initializeComponent();
36
31
  }
37
- // ==================== Initialization ====================
38
32
  initializeComponent() {
39
33
  this.extractTableHeaders();
40
34
  this.mergeConfigurations();
@@ -69,7 +63,6 @@ export class AxTableComponent {
69
63
  this.isHeaderVisible = this.tableData.metaData.isHeaderVisible;
70
64
  }
71
65
  }
72
- // ==================== Pagination ====================
73
66
  loadPage() {
74
67
  const startIndex = (this.currentPage - 1) * this.pageSize;
75
68
  const endIndex = startIndex + this.pageSize;
@@ -140,7 +133,6 @@ export class AxTableComponent {
140
133
  this.currentPage = this.goToPageNumber;
141
134
  this.onPaginationChange();
142
135
  }
143
- // ==================== Sorting ====================
144
136
  sortByColumn(columnId) {
145
137
  if (columnId === 'viewDetails' || this.tableData.metaData.isHeaderSortHidden) {
146
138
  return;
@@ -183,7 +175,6 @@ export class AxTableComponent {
183
175
  getSortDirection() {
184
176
  return this.sortDirection === 'asc' ? 'arrow-up' : 'arrow-down';
185
177
  }
186
- // ==================== Search ====================
187
178
  onEnter(event) {
188
179
  const searchText = event.target.value;
189
180
  this.itemList = this.filterItems(searchText);
@@ -209,7 +200,6 @@ export class AxTableComponent {
209
200
  this.generatePagesToShow();
210
201
  this.loadPage();
211
202
  }
212
- // ==================== UI Helpers ====================
213
203
  getWidthById(columnId, index) {
214
204
  if (this.tableHeadList.length === 3) {
215
205
  return index === 1 ? '60%' : '20%';
@@ -230,16 +220,18 @@ export class AxTableComponent {
230
220
  }
231
221
  return true;
232
222
  }
233
- // ==================== Event Handlers ====================
234
223
  handleClick(data) {
235
224
  this.clickEvent.emit(data);
236
225
  }
226
+ shouldShowPagination() {
227
+ return !this.tableData?.metaData?.isPaginationHidden;
228
+ }
237
229
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AxTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AxTableComponent, selector: "lib-ax-table", inputs: { tableData: "tableData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \" [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".modal-dialog{max-height:90vh;height:90vh;margin:5vh auto;display:flex;flex-direction:column}.modal-content{height:100%;display:flex;flex-direction:column;max-height:100%;overflow:hidden}.modal-header{flex-shrink:0;border-bottom:1px solid #dee2e6;padding:1rem}.modal-body{flex:1;overflow:hidden;padding:1rem;display:flex;flex-direction:column;min-height:0}.modal-footer{flex-shrink:0;border-top:1px solid #dee2e6;padding:1rem}.pagination-bar{display:flex;align-items:center;justify-content:flex-end;font-size:15px;gap:10px;width:100%;border:var(--table-border);border-top:0;background:var(--table-bg);color:var(--font-color);padding:12px 4px}.page-input::placeholder{color:var(--font-color)}.pagination-btn{background:none;border:none;color:var(--font-color, #444);border-radius:5px;transition:background .15s,color .15s;font-size:1.14rem;display:inline-flex;align-items:center;justify-content:center}.pagination-btn[disabled]{color:#c3c3c3!important;cursor:not-allowed}.pagination-btn:not([disabled]):hover,.pagination-btn:not([disabled]):focus{background:#e6f0ff!important;color:#1976d2!important;outline:none}.page-input{width:45px;text-align:center;font-size:15px;border:var(--table-border);height:32px;background:var(--table-bg);color:var(--font-color)}.popup-body-for-scroll{overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;max-height:90%;gap:.5rem}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:0;flex-shrink:0}.table-wrapper{background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);box-shadow:0 0 8px #0000000f;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;margin-bottom:0}.table-responsive{width:100%;overflow:auto;flex:1;min-height:0}table{width:100%;background-color:var(--background-color, #ffffff);margin-bottom:0}table th,table td{vertical-align:middle;white-space:nowrap;background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);border:var(--border, 1px solid #dee2e6);padding:8px 12px}thead th{background-color:var(--bs-tertiary-bg, #f8f9fa);color:var(--bs-body-color, #212529);font-weight:600;position:sticky;top:0;z-index:2}.table-responsive::-webkit-scrollbar{width:6px;height:6px}.table-responsive::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.sort-icons{margin-left:5px;color:var(--bs-body-color, #212529)}.textalign-left{text-align:left}.textalign-right{text-align:right}.textalign-center{text-align:center}.last-column-color{color:var(--link-menu, #2b6ecf)}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-bold{font-weight:700}.pagination-section{flex-shrink:0;background-color:var(--background-color, #ffffff);border:1px solid #dee2e6;border-radius:8px;margin-top:0;margin-bottom:0;padding:.5rem;min-height:60px;max-height:70px;overflow:visible;position:relative;z-index:1}@media (max-width: 575.98px){.modal-dialog{margin:0;max-height:100vh;height:100vh;width:100%;max-width:100%}.modal-content{max-height:100vh;border-radius:0;height:100vh}.modal-body{padding:.75rem}table th,table td{padding:6px 8px;font-size:.875rem}.pagination-section{margin-top:.25rem;padding:.5rem;max-height:118px}}@media (min-width: 576px) and (max-width: 767.98px){.modal-dialog{max-width:95%;margin:2.5vh auto;max-height:95vh;height:95vh}.modal-content{max-height:95vh;height:100%}}@media (min-width: 768px) and (max-width: 991.98px){.modal-dialog{max-width:90%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 992px){.modal-dialog{max-width:85%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 1200px){.modal-dialog{max-width:1140px}}.custom-input{max-width:300px;margin-left:auto}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:.5rem;flex-shrink:0}.modal-backdrop{z-index:1040}.modal{z-index:1050}.modal.show .modal-dialog{transform:none}.modal-dialog{position:relative;width:auto;pointer-events:none}.modal-dialog .modal-content{pointer-events:auto}.pagination-section .btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.2}.page-gap{gap:5px}.pagination-section .form-control{height:30px;font-size:.875rem}.pagination-section span{font-size:.875rem;line-height:1.2}@media (max-width: 480px){.table-responsive{font-size:.8rem}table th,table td{min-width:80px;padding:4px 6px}.pagination-section .btn{padding:.25rem .5rem;font-size:.8rem}.page-gap{gap:0}}@media (max-width: 576px){.page-gap{gap:0}}@media print{.modal-dialog{max-height:none;height:auto}.table-responsive{overflow:visible}.pagination-section{display:none}}@media screen and (max-width: 768px) and (max-height: 900px){.popup-body-for-scroll{max-height:85%}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.HeaderAltComponent, selector: "lib-header-alt", inputs: ["title"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] }); }
230
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AxTableComponent, selector: "lib-ax-table", inputs: { tableData: "tableData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \" [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\" *ngIf=\"shouldShowPagination()\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".modal-dialog{max-height:90vh;height:90vh;margin:5vh auto;display:flex;flex-direction:column}.modal-content{height:100%;display:flex;flex-direction:column;max-height:100%;overflow:hidden}.modal-header{flex-shrink:0;border-bottom:1px solid #dee2e6;padding:1rem}.modal-body{flex:1;overflow:hidden;padding:1rem;display:flex;flex-direction:column;min-height:0}.modal-footer{flex-shrink:0;border-top:1px solid #dee2e6;padding:1rem}.pagination-bar{display:flex;align-items:center;justify-content:flex-end;font-size:15px;gap:10px;width:100%;border:var(--table-border);border-top:0;background:var(--table-bg);color:var(--font-color);padding:12px 4px}.page-input::placeholder{color:var(--font-color)}.pagination-btn{background:none;border:none;color:var(--font-color, #444);border-radius:5px;transition:background .15s,color .15s;font-size:1.14rem;display:inline-flex;align-items:center;justify-content:center}.pagination-btn[disabled]{color:#c3c3c3!important;cursor:not-allowed}.pagination-btn:not([disabled]):hover,.pagination-btn:not([disabled]):focus{background:#e6f0ff!important;color:#1976d2!important;outline:none}.page-input{width:45px;text-align:center;font-size:15px;border:var(--table-border);height:32px;background:var(--table-bg);color:var(--font-color)}.popup-body-for-scroll{overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;max-height:90%;gap:.5rem}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:0;flex-shrink:0}.table-wrapper{background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);box-shadow:0 0 8px #0000000f;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;margin-bottom:0}.table-responsive{width:100%;overflow:auto;flex:1;min-height:0}table{width:100%;background-color:var(--background-color, #ffffff);margin-bottom:0}table th,table td{vertical-align:middle;white-space:nowrap;background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);border:var(--border, 1px solid #dee2e6);padding:8px 12px}thead th{background-color:var(--bs-tertiary-bg, #f8f9fa);color:var(--bs-body-color, #212529);font-weight:600;position:sticky;top:0;z-index:2}.table-responsive::-webkit-scrollbar{width:6px;height:6px}.table-responsive::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.sort-icons{margin-left:5px;color:var(--bs-body-color, #212529)}.textalign-left{text-align:left}.textalign-right{text-align:right}.textalign-center{text-align:center}.last-column-color{color:var(--link-menu, #2b6ecf)}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-bold{font-weight:700}.pagination-section{flex-shrink:0;background-color:var(--background-color, #ffffff);border:1px solid #dee2e6;border-radius:8px;margin-top:0;margin-bottom:0;padding:.5rem;min-height:60px;max-height:70px;overflow:visible;position:relative;z-index:1}@media (max-width: 575.98px){.modal-dialog{margin:0;max-height:100vh;height:100vh;width:100%;max-width:100%}.modal-content{max-height:100vh;border-radius:0;height:100vh}.modal-body{padding:.75rem}table th,table td{padding:6px 8px;font-size:.875rem}.pagination-section{margin-top:.25rem;padding:.5rem;max-height:118px}}@media (min-width: 576px) and (max-width: 767.98px){.modal-dialog{max-width:95%;margin:2.5vh auto;max-height:95vh;height:95vh}.modal-content{max-height:95vh;height:100%}}@media (min-width: 768px) and (max-width: 991.98px){.modal-dialog{max-width:90%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 992px){.modal-dialog{max-width:85%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 1200px){.modal-dialog{max-width:1140px}}.custom-input{max-width:300px;margin-left:auto}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:.5rem;flex-shrink:0}.modal-backdrop{z-index:1040}.modal{z-index:1050}.modal.show .modal-dialog{transform:none}.modal-dialog{position:relative;width:auto;pointer-events:none}.modal-dialog .modal-content{pointer-events:auto}.pagination-section .btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.2}.page-gap{gap:5px}.pagination-section .form-control{height:30px;font-size:.875rem}.pagination-section span{font-size:.875rem;line-height:1.2}@media (max-width: 480px){.table-responsive{font-size:.8rem}table th,table td{min-width:80px;padding:4px 6px}.pagination-section .btn{padding:.25rem .5rem;font-size:.8rem}.page-gap{gap:0}}@media (max-width: 576px){.page-gap{gap:0}}@media print{.modal-dialog{max-height:none;height:auto}.table-responsive{overflow:visible}.pagination-section{display:none}}@media screen and (max-width: 768px) and (max-height: 900px){.popup-body-for-scroll{max-height:85%}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.HeaderAltComponent, selector: "lib-header-alt", inputs: ["title"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] }); }
239
231
  }
240
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AxTableComponent, decorators: [{
241
233
  type: Component,
242
- args: [{ selector: 'lib-ax-table', template: "<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \" [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".modal-dialog{max-height:90vh;height:90vh;margin:5vh auto;display:flex;flex-direction:column}.modal-content{height:100%;display:flex;flex-direction:column;max-height:100%;overflow:hidden}.modal-header{flex-shrink:0;border-bottom:1px solid #dee2e6;padding:1rem}.modal-body{flex:1;overflow:hidden;padding:1rem;display:flex;flex-direction:column;min-height:0}.modal-footer{flex-shrink:0;border-top:1px solid #dee2e6;padding:1rem}.pagination-bar{display:flex;align-items:center;justify-content:flex-end;font-size:15px;gap:10px;width:100%;border:var(--table-border);border-top:0;background:var(--table-bg);color:var(--font-color);padding:12px 4px}.page-input::placeholder{color:var(--font-color)}.pagination-btn{background:none;border:none;color:var(--font-color, #444);border-radius:5px;transition:background .15s,color .15s;font-size:1.14rem;display:inline-flex;align-items:center;justify-content:center}.pagination-btn[disabled]{color:#c3c3c3!important;cursor:not-allowed}.pagination-btn:not([disabled]):hover,.pagination-btn:not([disabled]):focus{background:#e6f0ff!important;color:#1976d2!important;outline:none}.page-input{width:45px;text-align:center;font-size:15px;border:var(--table-border);height:32px;background:var(--table-bg);color:var(--font-color)}.popup-body-for-scroll{overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;max-height:90%;gap:.5rem}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:0;flex-shrink:0}.table-wrapper{background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);box-shadow:0 0 8px #0000000f;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;margin-bottom:0}.table-responsive{width:100%;overflow:auto;flex:1;min-height:0}table{width:100%;background-color:var(--background-color, #ffffff);margin-bottom:0}table th,table td{vertical-align:middle;white-space:nowrap;background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);border:var(--border, 1px solid #dee2e6);padding:8px 12px}thead th{background-color:var(--bs-tertiary-bg, #f8f9fa);color:var(--bs-body-color, #212529);font-weight:600;position:sticky;top:0;z-index:2}.table-responsive::-webkit-scrollbar{width:6px;height:6px}.table-responsive::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.sort-icons{margin-left:5px;color:var(--bs-body-color, #212529)}.textalign-left{text-align:left}.textalign-right{text-align:right}.textalign-center{text-align:center}.last-column-color{color:var(--link-menu, #2b6ecf)}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-bold{font-weight:700}.pagination-section{flex-shrink:0;background-color:var(--background-color, #ffffff);border:1px solid #dee2e6;border-radius:8px;margin-top:0;margin-bottom:0;padding:.5rem;min-height:60px;max-height:70px;overflow:visible;position:relative;z-index:1}@media (max-width: 575.98px){.modal-dialog{margin:0;max-height:100vh;height:100vh;width:100%;max-width:100%}.modal-content{max-height:100vh;border-radius:0;height:100vh}.modal-body{padding:.75rem}table th,table td{padding:6px 8px;font-size:.875rem}.pagination-section{margin-top:.25rem;padding:.5rem;max-height:118px}}@media (min-width: 576px) and (max-width: 767.98px){.modal-dialog{max-width:95%;margin:2.5vh auto;max-height:95vh;height:95vh}.modal-content{max-height:95vh;height:100%}}@media (min-width: 768px) and (max-width: 991.98px){.modal-dialog{max-width:90%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 992px){.modal-dialog{max-width:85%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 1200px){.modal-dialog{max-width:1140px}}.custom-input{max-width:300px;margin-left:auto}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:.5rem;flex-shrink:0}.modal-backdrop{z-index:1040}.modal{z-index:1050}.modal.show .modal-dialog{transform:none}.modal-dialog{position:relative;width:auto;pointer-events:none}.modal-dialog .modal-content{pointer-events:auto}.pagination-section .btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.2}.page-gap{gap:5px}.pagination-section .form-control{height:30px;font-size:.875rem}.pagination-section span{font-size:.875rem;line-height:1.2}@media (max-width: 480px){.table-responsive{font-size:.8rem}table th,table td{min-width:80px;padding:4px 6px}.pagination-section .btn{padding:.25rem .5rem;font-size:.8rem}.page-gap{gap:0}}@media (max-width: 576px){.page-gap{gap:0}}@media print{.modal-dialog{max-height:none;height:auto}.table-responsive{overflow:visible}.pagination-section{display:none}}@media screen and (max-width: 768px) and (max-height: 900px){.popup-body-for-scroll{max-height:85%}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
234
+ args: [{ selector: 'lib-ax-table', template: "<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i == tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \" [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\" *ngIf=\"shouldShowPagination()\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".modal-dialog{max-height:90vh;height:90vh;margin:5vh auto;display:flex;flex-direction:column}.modal-content{height:100%;display:flex;flex-direction:column;max-height:100%;overflow:hidden}.modal-header{flex-shrink:0;border-bottom:1px solid #dee2e6;padding:1rem}.modal-body{flex:1;overflow:hidden;padding:1rem;display:flex;flex-direction:column;min-height:0}.modal-footer{flex-shrink:0;border-top:1px solid #dee2e6;padding:1rem}.pagination-bar{display:flex;align-items:center;justify-content:flex-end;font-size:15px;gap:10px;width:100%;border:var(--table-border);border-top:0;background:var(--table-bg);color:var(--font-color);padding:12px 4px}.page-input::placeholder{color:var(--font-color)}.pagination-btn{background:none;border:none;color:var(--font-color, #444);border-radius:5px;transition:background .15s,color .15s;font-size:1.14rem;display:inline-flex;align-items:center;justify-content:center}.pagination-btn[disabled]{color:#c3c3c3!important;cursor:not-allowed}.pagination-btn:not([disabled]):hover,.pagination-btn:not([disabled]):focus{background:#e6f0ff!important;color:#1976d2!important;outline:none}.page-input{width:45px;text-align:center;font-size:15px;border:var(--table-border);height:32px;background:var(--table-bg);color:var(--font-color)}.popup-body-for-scroll{overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;max-height:90%;gap:.5rem}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:0;flex-shrink:0}.table-wrapper{background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);box-shadow:0 0 8px #0000000f;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;margin-bottom:0}.table-responsive{width:100%;overflow:auto;flex:1;min-height:0}table{width:100%;background-color:var(--background-color, #ffffff);margin-bottom:0}table th,table td{vertical-align:middle;white-space:nowrap;background-color:var(--background-color, #ffffff);color:var(--bs-body-color, #212529);border:var(--border, 1px solid #dee2e6);padding:8px 12px}thead th{background-color:var(--bs-tertiary-bg, #f8f9fa);color:var(--bs-body-color, #212529);font-weight:600;position:sticky;top:0;z-index:2}.table-responsive::-webkit-scrollbar{width:6px;height:6px}.table-responsive::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.table-responsive::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.sort-icons{margin-left:5px;color:var(--bs-body-color, #212529)}.textalign-left{text-align:left}.textalign-right{text-align:right}.textalign-center{text-align:center}.last-column-color{color:var(--link-menu, #2b6ecf)}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-bold{font-weight:700}.pagination-section{flex-shrink:0;background-color:var(--background-color, #ffffff);border:1px solid #dee2e6;border-radius:8px;margin-top:0;margin-bottom:0;padding:.5rem;min-height:60px;max-height:70px;overflow:visible;position:relative;z-index:1}@media (max-width: 575.98px){.modal-dialog{margin:0;max-height:100vh;height:100vh;width:100%;max-width:100%}.modal-content{max-height:100vh;border-radius:0;height:100vh}.modal-body{padding:.75rem}table th,table td{padding:6px 8px;font-size:.875rem}.pagination-section{margin-top:.25rem;padding:.5rem;max-height:118px}}@media (min-width: 576px) and (max-width: 767.98px){.modal-dialog{max-width:95%;margin:2.5vh auto;max-height:95vh;height:95vh}.modal-content{max-height:95vh;height:100%}}@media (min-width: 768px) and (max-width: 991.98px){.modal-dialog{max-width:90%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 992px){.modal-dialog{max-width:85%;margin:5vh auto;max-height:90vh;height:90vh}.modal-content{max-height:90vh;height:100%}}@media (min-width: 1200px){.modal-dialog{max-width:1140px}}.custom-input{max-width:300px;margin-left:auto}.d-flex.align-items-center.justify-content-between.w-100{margin-bottom:.5rem;flex-shrink:0}.modal-backdrop{z-index:1040}.modal{z-index:1050}.modal.show .modal-dialog{transform:none}.modal-dialog{position:relative;width:auto;pointer-events:none}.modal-dialog .modal-content{pointer-events:auto}.pagination-section .btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.2}.page-gap{gap:5px}.pagination-section .form-control{height:30px;font-size:.875rem}.pagination-section span{font-size:.875rem;line-height:1.2}@media (max-width: 480px){.table-responsive{font-size:.8rem}table th,table td{min-width:80px;padding:4px 6px}.pagination-section .btn{padding:.25rem .5rem;font-size:.8rem}.page-gap{gap:0}}@media (max-width: 576px){.page-gap{gap:0}}@media print{.modal-dialog{max-height:none;height:auto}.table-responsive{overflow:visible}.pagination-section{display:none}}@media screen and (max-width: 768px) and (max-height: 900px){.popup-body-for-scroll{max-height:85%}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
243
235
  }], ctorParameters: () => [], propDecorators: { tableData: [{
244
236
  type: Input
245
237
  }], customChartConfiguration: [{
@@ -247,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
247
239
  }], clickEvent: [{
248
240
  type: Output
249
241
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXgtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2F4LXRhYmxlL2F4LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9heC10YWJsZS9heC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQTZCMUMsTUFBTSxPQUFPLGdCQUFnQjtJQWtDM0I7UUEvQlUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQWdCO1FBQ2hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsa0JBQWtCO1FBQ2xCLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUV4QixtQkFBbUI7UUFDVixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUUzQixnQkFBZ0I7UUFDaEIsa0JBQWEs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Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBDaGFydEhlbHBlciBmcm9tICcuLi9jaGFydC1oZWxwZXInO1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlTWV0YURhdGEge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGlzUGFnaW5hdGlvbkhpZGRlbj86IGJvb2xlYW47XHJcbiAgaXNIZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcclxuICBpc1NlYXJjaEhpZGRlbj86IGJvb2xlYW47XHJcbiAgaXNIZWFkZXJBbGlnbmVkVG9DZW50ZXI/OiBib29sZWFuO1xyXG4gIGlzSGVhZGVyU29ydEhpZGRlbj86IGJvb2xlYW47XHJcbiAgaXNGaXJzdENvbHVtbkhlYWRlckhpZGRlbj86IGJvb2xlYW47XHJcbiAgaXNBbGxBbGlnbmVkVG9SaWdodD86IGJvb2xlYW47XHJcbiAgaGFzRHJpbGxEb3duPzogYm9vbGVhbjtcclxuICBoZWFkZXJDb2xvcj86IHN0cmluZztcclxuICBoZWFkZXJUZXh0Q29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUYWJsZURhdGEge1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIG1ldGFEYXRhOiBUYWJsZU1ldGFEYXRhO1xyXG4gIGhpZ2hsaWdodGVkVGV4dHM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxudHlwZSBTb3J0RGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1heC10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F4LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9heC10YWJsZS5jb21wb25lbnQubGVzcycsICcuLi9jb21tb24tc3R5bGVzLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF4VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTtcclxuICBASW5wdXQoKSBjdXN0b21DaGFydENvbmZpZ3VyYXRpb246IGFueTtcclxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyBEaXNwbGF5IHN0YXRlXHJcbiAgaXNIZWFkZXJWaXNpYmxlID0gdHJ1ZTtcclxuICBpc1VzZXJTb3J0ID0gZmFsc2U7XHJcblxyXG4gIC8vIFRhYmxlIHN0cnVjdHVyZVxyXG4gIHRhYmxlSGVhZExpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgaXRlbUxpc3Q6IGFueVtdID0gW107XHJcbiAgbWFzdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBjdXJyZW50TGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBzdGF0ZVxyXG4gIHJlYWRvbmx5IERFRkFVTFRfUEFHRV9TSVpFID0gMTA7XHJcbiAgcmVhZG9ubHkgTUFYX1BBR0VTX1RPX1NIT1cgPSA1O1xyXG4gIFxyXG4gIGN1cnJlbnRQYWdlID0gMTtcclxuICBwYWdlU2l6ZSA9IHRoaXMuREVGQVVMVF9QQUdFX1NJWkU7XHJcbiAgdG90YWxJdGVtcyA9IDA7XHJcbiAgdG90YWxQYWdlcyA9IDE7XHJcbiAgZ29Ub1BhZ2VOdW1iZXIgPSAxO1xyXG4gIHBhZ2VzVG9TaG93OiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBTb3J0aW5nIHN0YXRlXHJcbiAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gIHNvcnRDb2x1bW4gPSAnJztcclxuXHJcbiAgLy8gQ29uZmlndXJhdGlvblxyXG4gIGNoYXJ0Q29uZmlndXJhdGlvbjogYW55ID0ge307XHJcbiAgZGVmYXVsdENvbmZpZ3VyYXRpb246IGFueSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICAvLyA9PT09PT09PT09PT09PT09PT09PSBJbml0aWFsaXphdGlvbiA9PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dHJhY3RUYWJsZUhlYWRlcnMoKTtcclxuICAgIHRoaXMubWVyZ2VDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xyXG4gICAgdGhpcy51cGRhdGVIZWFkZXJWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RUYWJsZUhlYWRlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGE/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50YWJsZUhlYWRMaXN0ID0gT2JqZWN0LmtleXModGhpcy50YWJsZURhdGEuZGF0YVswXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1lcmdlQ29uZmlndXJhdGlvbnMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uW2tleV0gPSBDaGFydEhlbHBlci5nZXRWYWx1ZUJ5Q29uZmlndXJhdGlvblR5cGUoXHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgdGhpcy5jdXN0b21DaGFydENvbmZpZ3VyYXRpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hc3Rlckxpc3QgPSBbLi4udGhpcy50YWJsZURhdGEuZGF0YV07XHJcbiAgICB0aGlzLml0ZW1MaXN0ID0gWy4uLnRoaXMubWFzdGVyTGlzdF07XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLml0ZW1MaXN0Lmxlbmd0aDtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWxQYWdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VzVG9TaG93KCk7XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhLm1ldGFEYXRhLmlzUGFnaW5hdGlvbkhpZGRlbikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gdGhpcy5pdGVtTGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSGVhZGVyVmlzaWJpbGl0eSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YS5tZXRhRGF0YS5pc0hlYWRlclZpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmlzSGVhZGVyVmlzaWJsZSA9IHRoaXMudGFibGVEYXRhLm1ldGFEYXRhLmlzSGVhZGVyVmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09IFBhZ2luYXRpb24gPT09PT09PT09PT09PT09PT09PT1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkUGFnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZTtcclxuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmN1cnJlbnRMaXN0ID0gdGhpcy5pdGVtTGlzdC5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVRvdGFsUGFnZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSk7XHJcbiAgICB0aGlzLmdvVG9QYWdlTnVtYmVyID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVQYWdlc1RvU2hvdygpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZXNUb1Nob3cgPSBbXTtcclxuICAgIFxyXG4gICAgbGV0IHN0YXJ0UGFnZSA9IE1hdGgubWF4KFxyXG4gICAgICAxLFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcih0aGlzLk1BWF9QQUdFU19UT19TSE9XIC8gMilcclxuICAgICk7XHJcbiAgICBsZXQgZW5kUGFnZSA9IE1hdGgubWluKFxyXG4gICAgICB0aGlzLnRvdGFsUGFnZXMsXHJcbiAgICAgIHN0YXJ0UGFnZSArIHRoaXMuTUFYX1BBR0VTX1RPX1NIT1cgLSAxXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChlbmRQYWdlIC0gc3RhcnRQYWdlICsgMSA8IHRoaXMuTUFYX1BBR0VTX1RPX1NIT1cpIHtcclxuICAgICAgc3RhcnRQYWdlID0gTWF0aC5tYXgoMSwgZW5kUGFnZSAtIHRoaXMuTUFYX1BBR0VTX1RPX1NIT1cgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlOyBpIDw9IGVuZFBhZ2U7IGkrKykge1xyXG4gICAgICB0aGlzLnBhZ2VzVG9TaG93LnB1c2goaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUGFnaW5hdGlvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICAgIHRoaXMuZ29Ub1BhZ2VOdW1iZXIgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VzVG9TaG93KCk7XHJcbiAgfVxyXG5cclxuICBnb1RvRmlyc3RQYWdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgIT09IDEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAxKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UtLTtcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UrKztcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMudG90YWxQYWdlcztcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRoaXMudG90YWxQYWdlcyAmJiBwYWdlICE9PSB0aGlzLmN1cnJlbnRQYWdlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub1NwZWNpZmljUGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdvVG9QYWdlTnVtYmVyID09IG51bGwpIHtcclxuICAgICAgdGhpcy5nb1RvUGFnZU51bWJlciA9IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYWdlTnVtID0gcGFyc2VJbnQodGhpcy5nb1RvUGFnZU51bWJlci50b1N0cmluZygpLCAxMCk7XHJcblxyXG4gICAgaWYgKGlzTmFOKHBhZ2VOdW0pIHx8IHBhZ2VOdW0gPCAxKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgfSBlbHNlIGlmIChwYWdlTnVtID4gdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ29Ub1BhZ2VOdW1iZXI7XHJcbiAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT0gU29ydGluZyA9PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICBzb3J0QnlDb2x1bW4oY29sdW1uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNvbHVtbklkID09PSAndmlld0RldGFpbHMnIHx8IHRoaXMudGFibGVEYXRhLm1ldGFEYXRhLmlzSGVhZGVyU29ydEhpZGRlbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1VzZXJTb3J0ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoY29sdW1uSWQgIT09IHRoaXMuc29ydENvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bW4gPSBjb2x1bW5JZDtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gJ2FzYyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYyc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZXJmb3JtU29ydChjb2x1bW5JZCk7XHJcbiAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbkFmdGVyU29ydCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwZXJmb3JtU29ydChjb2x1bW5JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHRoaXMuY29tcGFyZVZhbHVlcyhhW2NvbHVtbklkXSwgYltjb2x1bW5JZF0pO1xyXG4gICAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IGNvbXBhcmlzb24gOiAtY29tcGFyaXNvbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wYXJlVmFsdWVzKHYxOiBhbnksIHYyOiBhbnkpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbnVtMSA9IHBhcnNlRmxvYXQodjEpO1xyXG4gICAgY29uc3QgbnVtMiA9IHBhcnNlRmxvYXQodjIpO1xyXG5cclxuICAgIGlmICghaXNOYU4obnVtMSkgJiYgIWlzTmFOKG51bTIpKSB7XHJcbiAgICAgIHJldHVybiBudW0xIC0gbnVtMjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdjEgPCB2MiA/IC0xIDogdjEgPiB2MiA/IDEgOiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldFBhZ2luYXRpb25BZnRlclNvcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMuaXRlbUxpc3QubGVuZ3RoO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XHJcbiAgICB0aGlzLmdlbmVyYXRlUGFnZXNUb1Nob3coKTtcclxuICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZDb2x1bW5DdXJyZW50bHlCZWluZ1NvcnRlZChjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zb3J0Q29sdW1uID09PSBjb2x1bW5JZDtcclxuICB9XHJcblxyXG4gIGdldFNvcnREaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJztcclxuICB9XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09IFNlYXJjaCA9PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICBvbkVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBcclxuICAgIHRoaXMuaXRlbUxpc3QgPSB0aGlzLmZpbHRlckl0ZW1zKHNlYXJjaFRleHQpO1xyXG4gICAgdGhpcy5yZXNldFBhZ2luYXRpb25BZnRlclNlYXJjaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJJdGVtcyhzZWFyY2hUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICBpZiAoIXNlYXJjaFRleHQpIHtcclxuICAgICAgcmV0dXJuIFsuLi50aGlzLm1hc3Rlckxpc3RdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxvd2VyU2VhcmNoVGV4dCA9IHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5tYXN0ZXJMaXN0LmZpbHRlcihpdGVtID0+IFxyXG4gICAgICB0aGlzLnRhYmxlSGVhZExpc3Quc29tZShoZWFkZXIgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtoZWFkZXJdO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3Qgc2VhcmNoYWJsZVN0cmluZyA9IFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gc2VhcmNoYWJsZVN0cmluZy5pbmNsdWRlcyhsb3dlclNlYXJjaFRleHQpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRQYWdpbmF0aW9uQWZ0ZXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMuaXRlbUxpc3QubGVuZ3RoO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XHJcbiAgICB0aGlzLmdlbmVyYXRlUGFnZXNUb1Nob3coKTtcclxuICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09IFVJIEhlbHBlcnMgPT09PT09PT09PT09PT09PT09PT1cclxuXHJcbiAgZ2V0V2lkdGhCeUlkKGNvbHVtbklkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMudGFibGVIZWFkTGlzdC5sZW5ndGggPT09IDMpIHtcclxuICAgICAgcmV0dXJuIGluZGV4ID09PSAxID8gJzYwJScgOiAnMjAlJztcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3Qgd2lkdGggPSAxMDAgLyB0aGlzLnRhYmxlSGVhZExpc3QubGVuZ3RoO1xyXG4gICAgcmV0dXJuIGAke3dpZHRofSVgO1xyXG4gIH1cclxuXHJcbiAgcHJldmVudE5lZ2F0aXZlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnZhbGlkS2V5cyA9IFsnLScsICcrJywgJ2UnLCAnRSddO1xyXG4gICAgaWYgKGludmFsaWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlTnVtYmVySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcclxuICAgIGlmIChjaGFyQ29kZSA+IDMxICYmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT0gRXZlbnQgSGFuZGxlcnMgPT09PT09PT09PT09PT09PT09PT1cclxuXHJcbiAgaGFuZGxlQ2xpY2soZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChkYXRhKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICA8bGliLWhlYWRlci1hbHQgW3RpdGxlXT1cInRhYmxlRGF0YS5tZXRhRGF0YS50aXRsZVwiICpuZ0lmPVwiIWlzSGVhZGVyVmlzaWJsZVwiPjwvbGliLWhlYWRlci1hbHQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwiIXRhYmxlRGF0YS5tZXRhRGF0YS5pc1NlYXJjaEhpZGRlblwiXHJcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20taW5wdXQgbWVkaXVtLWZvbnQtc2l6ZSB0ZXh0Ym94LWF4LWNvbW1vblwiIGlkPVwiZXhhbXBsZUlucHV0RW1haWwxXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgIHBsYWNlaG9sZGVyPVwiICBTZWFyY2ggIFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbEhlbHBcIiAoa2V5dXApPVwib25FbnRlcigkZXZlbnQpXCIgLz5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicG9wdXAtYm9keS1mb3Itc2Nyb2xsXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBib3JkZXJcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgYWxpZ24tbWlkZGxlIG1iLTBcIj5cclxuICAgICAgICA8dGhlYWQgY2xhc3M9XCJ0YWJsZS1kYXJrXCI+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkTGlzdDsgaW5kZXggYXMgaVwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAhdGFibGVEYXRhLm1ldGFEYXRhLmlzSGVhZGVyQWxpZ25lZFRvQ2VudGVyXHJcbiAgICAgICAgICAgICAgPyBpID09IHRhYmxlSGVhZExpc3QubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgPyAndGV4dGFsaWduLXJpZ2h0J1xyXG4gICAgICAgICAgICAgICAgOiAndGV4dGFsaWduLWxlZnQnXHJcbiAgICAgICAgICAgICAgOiAndGV4dGFsaWduLWNlbnRlcidcclxuICAgICAgICAgIFwiIFtzdHlsZS53aWR0aF09XCJnZXRXaWR0aEJ5SWQoaGVhZGVyLCBpKVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidGFibGVEYXRhLm1ldGFEYXRhLmhlYWRlckNvbG9yXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFibGVEYXRhLm1ldGFEYXRhLmhlYWRlclRleHRDb2xvclwiIChjbGljayk9XCJzb3J0QnlDb2x1bW4oaGVhZGVyKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKCF0YWJsZURhdGEubWV0YURhdGEuaXNGaXJzdENvbHVtbkhlYWRlckhpZGRlbiAmJiBpID09IDApIHx8IGkgPiAwXHJcbiAgICAgICAgICAgIFwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICF0YWJsZURhdGEubWV0YURhdGEuaXNIZWFkZXJTb3J0SGlkZGVuXHJcbiAgICAgICAgICAgICAgICA/ICdjdXJzb3ItcG9pbnRlcidcclxuICAgICAgICAgICAgICAgIDogJ2N1cnNvci1kZWZhdWx0J1xyXG4gICAgICAgICAgICBcIj57eyBoZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAoIWlzVXNlclNvcnQgfHwgY2hlY2tJZkNvbHVtbkN1cnJlbnRseUJlaW5nU29ydGVkKGhlYWRlcikpICYmXHJcbiAgICAgICAgICAgICAgIXRhYmxlRGF0YS5tZXRhRGF0YS5pc0hlYWRlclNvcnRIaWRkZW5cclxuICAgICAgICAgICAgXCIgY2xhc3M9XCJzb3J0LWljb25zIGZhXCIgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgIWlzVXNlclNvcnRcclxuICAgICAgICAgICAgICAgID8gJ2ZhLXNvcnQnXHJcbiAgICAgICAgICAgICAgICA6IHNvcnREaXJlY3Rpb24gPT0gJ2FzYydcclxuICAgICAgICAgICAgICAgID8gJ2ZhLXNvcnQtYXNjJ1xyXG4gICAgICAgICAgICAgICAgOiAnZmEtc29ydC1kZXNjJ1xyXG4gICAgICAgICAgICBcIj48L2k+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgY3VycmVudExpc3RcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHRhYmxlRGF0YT8uaGlnaGxpZ2h0ZWRUZXh0cz8uaW5jbHVkZXMoc3RvcmVbdGFibGVIZWFkTGlzdFswXV0pXHJcbiAgICAgICAgICAgID8gJ2ZvbnQtd2VpZ2h0LWJvbGQnXHJcbiAgICAgICAgICAgIDogJydcclxuICAgICAgICBcIj5cclxuICAgICAgICAgICAgPHRkIChjbGljayk9XCJoYW5kbGVDbGljayhzdG9yZSlcIiBjbGFzcz1cInRhYmxlLWNlbGxcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZExpc3Q7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRXaWR0aEJ5SWQoaGVhZGVyLCBpKVwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAhdGFibGVEYXRhLm1ldGFEYXRhLmlzQWxsQWxpZ25lZFRvUmlnaHRcclxuICAgICAgICAgICAgICA/IGkgPT0gdGFibGVIZWFkTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICA/ICd0ZXh0YWxpZ24tcmlnaHQgbGFzdC1jb2x1bW4tY29sb3InXHJcbiAgICAgICAgICAgICAgICA6ICd0ZXh0YWxpZ24tbGVmdCdcclxuICAgICAgICAgICAgICA6ICd0ZXh0YWxpZ24tcmlnaHQnXHJcbiAgICAgICAgICBcIiBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICB0YWJsZURhdGEubWV0YURhdGEuaGFzRHJpbGxEb3duID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnXHJcbiAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBzdG9yZVtoZWFkZXJdIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tYmFyIG10LTBcIj5cclxuICAgICAgPHNwYW4+R28gVG88L3NwYW4+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJwYWdlLWlucHV0XCIgbWluPVwiMVwiIFttYXhdPVwidG90YWxQYWdlc1wiIChrZXl1cC5lbnRlcik9XCJnb1RvU3BlY2lmaWNQYWdlKClcIiBbKG5nTW9kZWwpXT1cImdvVG9QYWdlTnVtYmVyXCJcclxuICAgICAgICAoa2V5cHJlc3MpPVwicHJldmVudE5lZ2F0aXZlKCRldmVudClcIlxyXG4gICAgICA+XHJcblxyXG4gICAgICA8c3Bhbj4ge3sgKGN1cnJlbnRMaXN0Lmxlbmd0aCA+IDAgPyAoKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZSArIDEpIDogMCkgfX0gLVxyXG4gICAgICAgIHt7ICgoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplICsgY3VycmVudExpc3QubGVuZ3RoKSB9fSBvZlxyXG4gICAgICAgIHt7IHRvdGFsSXRlbXMgfCBudW1iZXIgfX08L3NwYW4+XHJcblxyXG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgdGl0bGU9XCJGaXJzdCBQYWdlXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1jaGV2cm9uLWRvdWJsZS1sZWZ0XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIiAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCIgY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIHRpdGxlPVwiUHJldmlvdXMgUGFnZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2hldnJvbi1sZWZ0XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIiAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgdGl0bGU9XCJOZXh0IFBhZ2VcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNoZXZyb24tcmlnaHRcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiIChjbGljayk9XCJnb1RvTGFzdFBhZ2UoKVwiIGNsYXNzPVwicGFnaW5hdGlvbi1idG5cIiB0aXRsZT1cIkxhc3QgUGFnZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2hldnJvbi1kb3VibGUtcmlnaHRcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXgtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2F4LXRhYmxlL2F4LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9heC10YWJsZS9heC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQTZCMUMsTUFBTSxPQUFPLGdCQUFnQjtJQTZCM0I7UUExQlUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFFZixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUUzQixrQkFBYSxHQUFrQixLQUFLLENBQUM7UUFDckMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQix1QkFBa0IsR0FBUSxFQUFFLENBQUM7UUFDN0IseUJBQW9CLEdBQVEsRUFBRSxDQUFDO0lBRWhCLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUNwRSxHQUFHLEVBQ0gsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsd0JBQXdCLENBQzlCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3RCLENBQUMsRUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUMxRCxDQUFDO1FBQ0YsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFVBQVUsRUFDZixTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FDdkMsQ0FBQztRQUVGLElBQUksT0FBTyxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckQsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN2QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxRQUFRLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEVBQU8sRUFBRSxFQUFPO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUNBQWlDLENBQUMsUUFBZ0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE1BQU0sVUFBVSxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUU1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUFrQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVoQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCLEVBQUUsS0FBYTtRQUMxQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckMsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM5QyxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFvQjtRQUNsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUMsSUFBSSxRQUFRLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBUztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUMsb0JBQW9CO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQztJQUN2RCxDQUFDOytHQTVSVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixxTEM5QjdCLHEzSUE4Rk07OzRGRGhFTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzt3REFLZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQ2hhcnRIZWxwZXIgZnJvbSAnLi4vY2hhcnQtaGVscGVyJztcclxuXHJcbmludGVyZmFjZSBUYWJsZU1ldGFEYXRhIHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc1BhZ2luYXRpb25IaWRkZW4/OiBib29sZWFuO1xyXG4gIGlzSGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaXNTZWFyY2hIaWRkZW4/OiBib29sZWFuO1xyXG4gIGlzSGVhZGVyQWxpZ25lZFRvQ2VudGVyPzogYm9vbGVhbjtcclxuICBpc0hlYWRlclNvcnRIaWRkZW4/OiBib29sZWFuO1xyXG4gIGlzRmlyc3RDb2x1bW5IZWFkZXJIaWRkZW4/OiBib29sZWFuO1xyXG4gIGlzQWxsQWxpZ25lZFRvUmlnaHQ/OiBib29sZWFuO1xyXG4gIGhhc0RyaWxsRG93bj86IGJvb2xlYW47XHJcbiAgaGVhZGVyQ29sb3I/OiBzdHJpbmc7XHJcbiAgaGVhZGVyVGV4dENvbG9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGFibGVEYXRhIHtcclxuICBkYXRhOiBhbnlbXTtcclxuICBtZXRhRGF0YTogVGFibGVNZXRhRGF0YTtcclxuICBoaWdobGlnaHRlZFRleHRzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbnR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXgtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9heC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXgtdGFibGUuY29tcG9uZW50Lmxlc3MnLCAnLi4vY29tbW9uLXN0eWxlcy5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBeFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0YWJsZURhdGEhOiBUYWJsZURhdGE7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2hhcnRDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgaXNIZWFkZXJWaXNpYmxlID0gdHJ1ZTtcclxuICBpc1VzZXJTb3J0ID0gZmFsc2U7XHJcblxyXG4gIHRhYmxlSGVhZExpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgaXRlbUxpc3Q6IGFueVtdID0gW107XHJcbiAgbWFzdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBjdXJyZW50TGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgcmVhZG9ubHkgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcclxuICByZWFkb25seSBNQVhfUEFHRVNfVE9fU0hPVyA9IDU7XHJcbiAgXHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHBhZ2VTaXplID0gdGhpcy5ERUZBVUxUX1BBR0VfU0laRTtcclxuICB0b3RhbEl0ZW1zID0gMDtcclxuICB0b3RhbFBhZ2VzID0gMTtcclxuICBnb1RvUGFnZU51bWJlciA9IDE7XHJcbiAgcGFnZXNUb1Nob3c6IG51bWJlcltdID0gW107XHJcblxyXG4gIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuICBzb3J0Q29sdW1uID0gJyc7XHJcblxyXG4gIGNoYXJ0Q29uZmlndXJhdGlvbjogYW55ID0ge307XHJcbiAgZGVmYXVsdENvbmZpZ3VyYXRpb246IGFueSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dHJhY3RUYWJsZUhlYWRlcnMoKTtcclxuICAgIHRoaXMubWVyZ2VDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xyXG4gICAgdGhpcy51cGRhdGVIZWFkZXJWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RUYWJsZUhlYWRlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGE/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50YWJsZUhlYWRMaXN0ID0gT2JqZWN0LmtleXModGhpcy50YWJsZURhdGEuZGF0YVswXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1lcmdlQ29uZmlndXJhdGlvbnMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uW2tleV0gPSBDaGFydEhlbHBlci5nZXRWYWx1ZUJ5Q29uZmlndXJhdGlvblR5cGUoXHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgdGhpcy5jdXN0b21DaGFydENvbmZpZ3VyYXRpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hc3Rlckxpc3QgPSBbLi4udGhpcy50YWJsZURhdGEuZGF0YV07XHJcbiAgICB0aGlzLml0ZW1MaXN0ID0gWy4uLnRoaXMubWFzdGVyTGlzdF07XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLml0ZW1MaXN0Lmxlbmd0aDtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWxQYWdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VzVG9TaG93KCk7XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhLm1ldGFEYXRhLmlzUGFnaW5hdGlvbkhpZGRlbikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gdGhpcy5pdGVtTGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSGVhZGVyVmlzaWJpbGl0eSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YS5tZXRhRGF0YS5pc0hlYWRlclZpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmlzSGVhZGVyVmlzaWJsZSA9IHRoaXMudGFibGVEYXRhLm1ldGFEYXRhLmlzSGVhZGVyVmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFBhZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XHJcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5jdXJyZW50TGlzdCA9IHRoaXMuaXRlbUxpc3Quc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVUb3RhbFBhZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMucGFnZVNpemUpO1xyXG4gICAgdGhpcy5nb1RvUGFnZU51bWJlciA9IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlUGFnZXNUb1Nob3coKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VzVG9TaG93ID0gW107XHJcbiAgICBcclxuICAgIGxldCBzdGFydFBhZ2UgPSBNYXRoLm1heChcclxuICAgICAgMSxcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSAtIE1hdGguZmxvb3IodGhpcy5NQVhfUEFHRVNfVE9fU0hPVyAvIDIpXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFBhZ2UgPSBNYXRoLm1pbihcclxuICAgICAgdGhpcy50b3RhbFBhZ2VzLFxyXG4gICAgICBzdGFydFBhZ2UgKyB0aGlzLk1BWF9QQUdFU19UT19TSE9XIC0gMVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZW5kUGFnZSAtIHN0YXJ0UGFnZSArIDEgPCB0aGlzLk1BWF9QQUdFU19UT19TSE9XKSB7XHJcbiAgICAgIHN0YXJ0UGFnZSA9IE1hdGgubWF4KDEsIGVuZFBhZ2UgLSB0aGlzLk1BWF9QQUdFU19UT19TSE9XICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcclxuICAgICAgdGhpcy5wYWdlc1RvU2hvdy5wdXNoKGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblBhZ2luYXRpb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgICB0aGlzLmdvVG9QYWdlTnVtYmVyID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVQYWdlc1RvU2hvdygpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSAxKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gMSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLS07XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvTmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA8IHRoaXMudG90YWxQYWdlcykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlKys7XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvTGFzdFBhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSAhPT0gdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChwYWdlID49IDEgJiYgcGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMgJiYgcGFnZSAhPT0gdGhpcy5jdXJyZW50UGFnZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9TcGVjaWZpY1BhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nb1RvUGFnZU51bWJlciA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2VOdW1iZXIgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHRoaXMuZ29Ub1BhZ2VOdW1iZXIudG9TdHJpbmcoKSwgMTApO1xyXG5cclxuICAgIGlmIChpc05hTihwYWdlTnVtKSB8fCBwYWdlTnVtIDwgMSkge1xyXG4gICAgICB0aGlzLmdvVG9QYWdlTnVtYmVyID0gMTtcclxuICAgIH0gZWxzZSBpZiAocGFnZU51bSA+IHRoaXMudG90YWxQYWdlcykge1xyXG4gICAgICB0aGlzLmdvVG9QYWdlTnVtYmVyID0gdGhpcy50b3RhbFBhZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLmdvVG9QYWdlTnVtYmVyO1xyXG4gICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHNvcnRCeUNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY29sdW1uSWQgPT09ICd2aWV3RGV0YWlscycgfHwgdGhpcy50YWJsZURhdGEubWV0YURhdGEuaXNIZWFkZXJTb3J0SGlkZGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzVXNlclNvcnQgPSB0cnVlO1xyXG5cclxuICAgIGlmIChjb2x1bW5JZCAhPT0gdGhpcy5zb3J0Q29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydENvbHVtbiA9IGNvbHVtbklkO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlcmZvcm1Tb3J0KGNvbHVtbklkKTtcclxuICAgIHRoaXMucmVzZXRQYWdpbmF0aW9uQWZ0ZXJTb3J0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBlcmZvcm1Tb3J0KGNvbHVtbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBjb25zdCBjb21wYXJpc29uID0gdGhpcy5jb21wYXJlVmFsdWVzKGFbY29sdW1uSWRdLCBiW2NvbHVtbklkXSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gY29tcGFyaXNvbiA6IC1jb21wYXJpc29uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVWYWx1ZXModjE6IGFueSwgdjI6IGFueSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBudW0xID0gcGFyc2VGbG9hdCh2MSk7XHJcbiAgICBjb25zdCBudW0yID0gcGFyc2VGbG9hdCh2Mik7XHJcblxyXG4gICAgaWYgKCFpc05hTihudW0xKSAmJiAhaXNOYU4obnVtMikpIHtcclxuICAgICAgcmV0dXJuIG51bTEgLSBudW0yO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2MSA8IHYyID8gLTEgOiB2MSA+IHYyID8gMSA6IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0UGFnaW5hdGlvbkFmdGVyU29ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5pdGVtTGlzdC5sZW5ndGg7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVQYWdlc1RvU2hvdygpO1xyXG4gICAgdGhpcy5sb2FkUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkNvbHVtbkN1cnJlbnRseUJlaW5nU29ydGVkKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNvcnRDb2x1bW4gPT09IGNvbHVtbklkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydERpcmVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWRvd24nO1xyXG4gIH1cclxuXHJcbiAgb25FbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgXHJcbiAgICB0aGlzLml0ZW1MaXN0ID0gdGhpcy5maWx0ZXJJdGVtcyhzZWFyY2hUZXh0KTtcclxuICAgIHRoaXMucmVzZXRQYWdpbmF0aW9uQWZ0ZXJTZWFyY2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVySXRlbXMoc2VhcmNoVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG4gICAgaWYgKCFzZWFyY2hUZXh0KSB7XHJcbiAgICAgIHJldHVybiBbLi4udGhpcy5tYXN0ZXJMaXN0XTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsb3dlclNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMubWFzdGVyTGlzdC5maWx0ZXIoaXRlbSA9PiBcclxuICAgICAgdGhpcy50YWJsZUhlYWRMaXN0LnNvbWUoaGVhZGVyID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1baGVhZGVyXTtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHNlYXJjaGFibGVTdHJpbmcgPSBTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgcmV0dXJuIHNlYXJjaGFibGVTdHJpbmcuaW5jbHVkZXMobG93ZXJTZWFyY2hUZXh0KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0UGFnaW5hdGlvbkFmdGVyU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLml0ZW1MaXN0Lmxlbmd0aDtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWxQYWdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VzVG9TaG93KCk7XHJcbiAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRXaWR0aEJ5SWQoY29sdW1uSWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy50YWJsZUhlYWRMaXN0Lmxlbmd0aCA9PT0gMykge1xyXG4gICAgICByZXR1cm4gaW5kZXggPT09IDEgPyAnNjAlJyA6ICcyMCUnO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCB3aWR0aCA9IDEwMCAvIHRoaXMudGFibGVIZWFkTGlzdC5sZW5ndGg7XHJcbiAgICByZXR1cm4gYCR7d2lkdGh9JWA7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50TmVnYXRpdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGludmFsaWRLZXlzID0gWyctJywgJysnLCAnZScsICdFJ107XHJcbiAgICBpZiAoaW52YWxpZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVOdW1iZXJJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlO1xyXG4gICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGljayhkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgICBzaG91bGRTaG93UGFnaW5hdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy50YWJsZURhdGE/Lm1ldGFEYXRhPy5pc1BhZ2luYXRpb25IaWRkZW47XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDBcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgPGxpYi1oZWFkZXItYWx0IFt0aXRsZV09XCJ0YWJsZURhdGEubWV0YURhdGEudGl0bGVcIiAqbmdJZj1cIiFpc0hlYWRlclZpc2libGVcIj48L2xpYi1oZWFkZXItYWx0PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiF0YWJsZURhdGEubWV0YURhdGEuaXNTZWFyY2hIaWRkZW5cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWlucHV0IG1lZGl1bS1mb250LXNpemUgdGV4dGJveC1heC1jb21tb25cIiBpZD1cImV4YW1wbGVJbnB1dEVtYWlsMVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICBwbGFjZWhvbGRlcj1cIiAgU2VhcmNoICBcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWxIZWxwXCIgKGtleXVwKT1cIm9uRW50ZXIoJGV2ZW50KVwiIC8+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInBvcHVwLWJvZHktZm9yLXNjcm9sbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgYm9yZGVyXCI+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWhvdmVyIGFsaWduLW1pZGRsZSBtYi0wXCI+XHJcbiAgICAgICAgPHRoZWFkIGNsYXNzPVwidGFibGUtZGFya1wiPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZExpc3Q7IGluZGV4IGFzIGlcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgIXRhYmxlRGF0YS5tZXRhRGF0YS5pc0hlYWRlckFsaWduZWRUb0NlbnRlclxyXG4gICAgICAgICAgICAgID8gaSA9PSB0YWJsZUhlYWRMaXN0Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgID8gJ3RleHRhbGlnbi1yaWdodCdcclxuICAgICAgICAgICAgICAgIDogJ3RleHRhbGlnbi1sZWZ0J1xyXG4gICAgICAgICAgICAgIDogJ3RleHRhbGlnbi1jZW50ZXInXHJcbiAgICAgICAgICBcIiBbc3R5bGUud2lkdGhdPVwiZ2V0V2lkdGhCeUlkKGhlYWRlciwgaSlcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInRhYmxlRGF0YS5tZXRhRGF0YS5oZWFkZXJDb2xvclwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYmxlRGF0YS5tZXRhRGF0YS5oZWFkZXJUZXh0Q29sb3JcIiAoY2xpY2spPVwic29ydEJ5Q29sdW1uKGhlYWRlcilcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICghdGFibGVEYXRhLm1ldGFEYXRhLmlzRmlyc3RDb2x1bW5IZWFkZXJIaWRkZW4gJiYgaSA9PSAwKSB8fCBpID4gMFxyXG4gICAgICAgICAgICBcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAhdGFibGVEYXRhLm1ldGFEYXRhLmlzSGVhZGVyU29ydEhpZGRlblxyXG4gICAgICAgICAgICAgICAgPyAnY3Vyc29yLXBvaW50ZXInXHJcbiAgICAgICAgICAgICAgICA6ICdjdXJzb3ItZGVmYXVsdCdcclxuICAgICAgICAgICAgXCI+e3sgaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKCFpc1VzZXJTb3J0IHx8IGNoZWNrSWZDb2x1bW5DdXJyZW50bHlCZWluZ1NvcnRlZChoZWFkZXIpKSAmJlxyXG4gICAgICAgICAgICAgICF0YWJsZURhdGEubWV0YURhdGEuaXNIZWFkZXJTb3J0SGlkZGVuXHJcbiAgICAgICAgICAgIFwiIGNsYXNzPVwic29ydC1pY29ucyBmYVwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICFpc1VzZXJTb3J0XHJcbiAgICAgICAgICAgICAgICA/ICdmYS1zb3J0J1xyXG4gICAgICAgICAgICAgICAgOiBzb3J0RGlyZWN0aW9uID09ICdhc2MnXHJcbiAgICAgICAgICAgICAgICA/ICdmYS1zb3J0LWFzYydcclxuICAgICAgICAgICAgICAgIDogJ2ZhLXNvcnQtZGVzYydcclxuICAgICAgICAgICAgXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIGN1cnJlbnRMaXN0XCIgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICB0YWJsZURhdGE/LmhpZ2hsaWdodGVkVGV4dHM/LmluY2x1ZGVzKHN0b3JlW3RhYmxlSGVhZExpc3RbMF1dKVxyXG4gICAgICAgICAgICA/ICdmb250LXdlaWdodC1ib2xkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwiaGFuZGxlQ2xpY2soc3RvcmUpXCIgY2xhc3M9XCJ0YWJsZS1jZWxsXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRMaXN0OyBpbmRleCBhcyBpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0V2lkdGhCeUlkKGhlYWRlciwgaSlcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgIXRhYmxlRGF0YS5tZXRhRGF0YS5pc0FsbEFsaWduZWRUb1JpZ2h0XHJcbiAgICAgICAgICAgICAgPyBpID09IHRhYmxlSGVhZExpc3QubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgPyAndGV4dGFsaWduLXJpZ2h0IGxhc3QtY29sdW1uLWNvbG9yJ1xyXG4gICAgICAgICAgICAgICAgOiAndGV4dGFsaWduLWxlZnQnXHJcbiAgICAgICAgICAgICAgOiAndGV4dGFsaWduLXJpZ2h0J1xyXG4gICAgICAgICAgXCIgW3N0eWxlLmN1cnNvcl09XCJcclxuICAgICAgICAgICAgdGFibGVEYXRhLm1ldGFEYXRhLmhhc0RyaWxsRG93biA/ICdwb2ludGVyJyA6ICdkZWZhdWx0J1xyXG4gICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgc3RvcmVbaGVhZGVyXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWJhciBtdC0wXCIgKm5nSWY9XCJzaG91bGRTaG93UGFnaW5hdGlvbigpXCI+XHJcbiAgICAgIDxzcGFuPkdvIFRvPC9zcGFuPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwicGFnZS1pbnB1dFwiIG1pbj1cIjFcIiBbbWF4XT1cInRvdGFsUGFnZXNcIiAoa2V5dXAuZW50ZXIpPVwiZ29Ub1NwZWNpZmljUGFnZSgpXCIgWyhuZ01vZGVsKV09XCJnb1RvUGFnZU51bWJlclwiXHJcbiAgICAgICAgKGtleXByZXNzKT1cInByZXZlbnROZWdhdGl2ZSgkZXZlbnQpXCJcclxuICAgICAgPlxyXG5cclxuICAgICAgPHNwYW4+IHt7IChjdXJyZW50TGlzdC5sZW5ndGggPiAwID8gKChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxKSA6IDApIH19IC1cclxuICAgICAgICB7eyAoKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZSArIGN1cnJlbnRMaXN0Lmxlbmd0aCkgfX0gb2ZcclxuICAgICAgICB7eyB0b3RhbEl0ZW1zIHwgbnVtYmVyIH19PC9zcGFuPlxyXG5cclxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIiAoY2xpY2spPVwiZ29Ub0ZpcnN0UGFnZSgpXCIgY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIHRpdGxlPVwiRmlyc3QgUGFnZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2hldnJvbi1kb3VibGUtbGVmdFwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCIgKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiIGNsYXNzPVwicGFnaW5hdGlvbi1idG5cIiB0aXRsZT1cIlByZXZpb3VzIFBhZ2VcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNoZXZyb24tbGVmdFwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzXCIgKGNsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCIgY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIHRpdGxlPVwiTmV4dCBQYWdlXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIiAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgdGl0bGU9XCJMYXN0IFBhZ2VcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNoZXZyb24tZG91YmxlLXJpZ2h0XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19