ng-tailwind 4.5.47 → 5.0.0

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.
@@ -35,40 +35,40 @@ export class NgtPaginationComponent {
35
35
  this.ngtPaginationActivePageButtonStyle = new NgtStylizableService();
36
36
  this.ngtPaginationPageButtonStyle = new NgtStylizableService();
37
37
  this.ngtPaginationNextPreviousButtonStyle.load(this.injector, 'NgtPaginationNextPreviousButton', {
38
- h: 'h-8',
39
- w: 'w-8',
38
+ h: 'h-6',
39
+ w: 'w-6',
40
40
  color: {
41
41
  text: 'text-white',
42
42
  bg: 'bg-gray-700'
43
43
  }
44
44
  });
45
45
  this.ngtPaginationNextPreviousSectionButtonStyle.load(this.injector, 'NgtPaginationNextPreviousButton', {
46
- h: 'h-8',
47
- w: 'w-8',
46
+ h: 'h-6',
47
+ w: 'w-6',
48
48
  color: {
49
49
  text: 'text-white',
50
50
  bg: 'bg-gray-300'
51
51
  }
52
52
  });
53
53
  this.ngtPaginationFirstLastButtonStyle.load(this.injector, 'NgtPaginationFirstLastButton', {
54
- h: 'h-8',
55
- w: 'w-8',
54
+ h: 'h-6',
55
+ w: 'w-6',
56
56
  color: {
57
57
  text: 'text-white',
58
58
  bg: 'bg-gray-900'
59
59
  }
60
60
  });
61
61
  this.ngtPaginationActivePageButtonStyle.load(this.injector, 'NgtPaginationActivePageButton', {
62
- h: 'h-8',
63
- w: 'w-8',
62
+ h: 'h-6',
63
+ w: 'w-6',
64
64
  color: {
65
65
  text: 'text-white',
66
66
  bg: 'bg-gray-500'
67
67
  }
68
68
  });
69
69
  this.ngtPaginationPageButtonStyle.load(this.injector, 'NgtPaginationPageButton', {
70
- h: 'h-8',
71
- w: 'w-8',
70
+ h: 'h-6',
71
+ w: 'w-6',
72
72
  color: {
73
73
  text: 'text-white',
74
74
  bg: 'bg-gray-300'
@@ -146,10 +146,10 @@ export class NgtPaginationComponent {
146
146
  }
147
147
  }
148
148
  NgtPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtPaginationComponent, deps: [{ token: i0.Injector }, { token: i1.NgtTranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
149
- NgtPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtPaginationComponent, selector: "ngt-pagination", inputs: { pagesInterval: "pagesInterval" }, outputs: { onPageChange: "onPageChange", onPerPageChange: "onPerPageChange" }, ngImport: i0, template: "<div class=\"{{ displayPagination ? 'flex' : 'hidden' }} items-center w-full h-full relative\">\n <ul class=\"flex justify-start\">\n <!-- FIRST -->\n <li (click)='goToFirstPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M18.41 7.41L17 6l-6 6l6 6l1.41-1.41L13.83 12l4.58-4.59m-6 0L11 6l-6 6l6 6l1.41-1.41L7.83 12l4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS -->\n <li (click)='goToPreviousPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6l1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS SECTION -->\n <li *ngIf=\"displayPreviousSectionButton\" (click)='goToPreviousSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <ng-container *ngFor='let page of pages'>\n <ng-container *ngIf='page == pagination.page'>\n <li class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationActivePageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n <ng-container *ngIf='page !== pagination.page'>\n <li (click)='goToPage(page)' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationPageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n </ng-container>\n\n <!-- NEXT SECTION -->\n <li *ngIf=\"displayNextSectionButton\" (click)='goToNextSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- NEXT -->\n <li (click)='goToNextPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- LAST -->\n <li (click)='goToLastPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M5.59 7.41L7 6l6 6l-6 6l-1.41-1.41L10.17 12L5.59 7.41m6 0L13 6l6 6l-6 6l-1.41-1.41L16.17 12l-4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n </ul>\n\n <!-- REGISTERS PER PAGE -->\n <div class=\"flex items-center w-auto absolute right-0\">\n <ngt-select class='block w-20 left-0' [searchable]='false' [clearable]='false' dropdownPosition='top'\n [items]='registersPerPageOptions' name='registersPerPageSelect' [(ngModel)]=\"currentRegistersPerPage\"\n h='h-auto' (ngModelChange)='onRegistersPerPageChange($event)' ngt-stylizable>\n <ng-template let-item=\"item\" let-index=\"index\" ngt-select-option>\n {{ item ? item : '' }}\n </ng-template>\n </ngt-select>\n\n <P class=\"ml-2\">\n {{ ngtTranslateService.ngtPagination(pagination.from, pagination.to, pagination.total) }}\n </P>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }, { kind: "component", type: i5.NgtActionComponent, selector: "ngt-action", inputs: ["href", "icon", "ngtStyle", "isDisabled", "forceEnable"] }, { kind: "component", type: i6.NgtSelectComponent, selector: "ngt-select", inputs: ["label", "labelIcon", "labelIconColor", "helpTitle", "helpText", "helpTextColor", "shining", "loading", "loadingText", "notFoundText", "dropdownPosition", "typeToSearchText", "clearAllTooltip", "placeholder", "createText", "labelForId", "dropdownPanelMinHeight", "helperReverseYPosition", "helperAutoXReverse", "name", "autoLoad", "allowCreate", "allowOriginalItemsUnselect", "isDisabled", "isReadonly", "remoteResource", "hideSelected", "bindLabel", "bindValue", "items", "inputAttrs", "closeOnSelect", "clearable", "groupBy", "maxSelectedItems", "multiple", "searchable", "clearSearchOnAdd", "virtualScroll", "tabIndex", "typeahead", "guessCompareWith", "autoSelectUniqueOption", "groupValue", "trackBy", "sortSelectedItemsFn", "isRequired", "compareWith"], outputs: ["onLoadRemoteResource", "onSelectedItemRemove", "onClear", "onClose"] }, { kind: "directive", type: i7.NgtSelectOptionTmp, selector: "[ngt-select-option]" }] });
149
+ NgtPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtPaginationComponent, selector: "ngt-pagination", inputs: { pagesInterval: "pagesInterval" }, outputs: { onPageChange: "onPageChange", onPerPageChange: "onPerPageChange" }, ngImport: i0, template: "<div class=\"{{ displayPagination ? 'flex' : 'hidden' }} items-center w-full h-full relative\">\n <ul class=\"flex justify-start\">\n <!-- FIRST -->\n <li (click)='goToFirstPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M18.41 7.41L17 6l-6 6l6 6l1.41-1.41L13.83 12l4.58-4.59m-6 0L11 6l-6 6l6 6l1.41-1.41L7.83 12l4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS -->\n <li (click)='goToPreviousPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6l1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS SECTION -->\n <li *ngIf=\"displayPreviousSectionButton\" (click)='goToPreviousSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <ng-container *ngFor='let page of pages'>\n <ng-container *ngIf='page == pagination.page'>\n <li class=\"mr-2\">\n <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationActivePageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n <ng-container *ngIf='page !== pagination.page'>\n <li (click)='goToPage(page)' class=\"mr-2\">\n <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationPageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n </ng-container>\n\n <!-- NEXT SECTION -->\n <li *ngIf=\"displayNextSectionButton\" (click)='goToNextSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- NEXT -->\n <li (click)='goToNextPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- LAST -->\n <li (click)='goToLastPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M5.59 7.41L7 6l6 6l-6 6l-1.41-1.41L10.17 12L5.59 7.41m6 0L13 6l6 6l-6 6l-1.41-1.41L16.17 12l-4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n </ul>\n\n <!-- REGISTERS PER PAGE -->\n <div class=\"flex items-center w-auto absolute right-0\">\n <ngt-select class='block w-20 left-0' [searchable]='false' [clearable]='false' dropdownPosition='top'\n [items]='registersPerPageOptions' name='registersPerPageSelect' [(ngModel)]=\"currentRegistersPerPage\"\n h='h-auto' (ngModelChange)='onRegistersPerPageChange($event)' ngt-stylizable>\n <ng-template let-item=\"item\" let-index=\"index\" ngt-select-option>\n {{ item ? item : '' }}\n </ng-template>\n </ngt-select>\n\n <P class=\"text-xs ml-2\">\n {{ ngtTranslateService.ngtPagination(pagination.from, pagination.to, pagination.total) }}\n </P>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }, { kind: "component", type: i5.NgtActionComponent, selector: "ngt-action", inputs: ["href", "icon", "ngtStyle", "isDisabled", "forceEnable"] }, { kind: "component", type: i6.NgtSelectComponent, selector: "ngt-select", inputs: ["label", "labelIcon", "labelIconColor", "helpTitle", "helpText", "helpTextColor", "shining", "loading", "loadingText", "notFoundText", "dropdownPosition", "typeToSearchText", "clearAllTooltip", "placeholder", "createText", "labelForId", "dropdownPanelMinHeight", "helperReverseYPosition", "helperAutoXReverse", "name", "autoLoad", "allowCreate", "allowOriginalItemsUnselect", "isDisabled", "isReadonly", "remoteResource", "hideSelected", "bindLabel", "bindValue", "items", "inputAttrs", "closeOnSelect", "clearable", "groupBy", "maxSelectedItems", "multiple", "searchable", "clearSearchOnAdd", "virtualScroll", "tabIndex", "typeahead", "guessCompareWith", "autoSelectUniqueOption", "groupValue", "trackBy", "sortSelectedItemsFn", "isRequired", "compareWith"], outputs: ["onLoadRemoteResource", "onSelectedItemRemove", "onClear", "onClose"] }, { kind: "directive", type: i7.NgtSelectOptionTmp, selector: "[ngt-select-option]" }] });
150
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtPaginationComponent, decorators: [{
151
151
  type: Component,
152
- args: [{ selector: 'ngt-pagination', template: "<div class=\"{{ displayPagination ? 'flex' : 'hidden' }} items-center w-full h-full relative\">\n <ul class=\"flex justify-start\">\n <!-- FIRST -->\n <li (click)='goToFirstPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M18.41 7.41L17 6l-6 6l6 6l1.41-1.41L13.83 12l4.58-4.59m-6 0L11 6l-6 6l6 6l1.41-1.41L7.83 12l4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS -->\n <li (click)='goToPreviousPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6l1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS SECTION -->\n <li *ngIf=\"displayPreviousSectionButton\" (click)='goToPreviousSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <ng-container *ngFor='let page of pages'>\n <ng-container *ngIf='page == pagination.page'>\n <li class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationActivePageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n <ng-container *ngIf='page !== pagination.page'>\n <li (click)='goToPage(page)' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationPageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n </ng-container>\n\n <!-- NEXT SECTION -->\n <li *ngIf=\"displayNextSectionButton\" (click)='goToNextSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- NEXT -->\n <li (click)='goToNextPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- LAST -->\n <li (click)='goToLastPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M5.59 7.41L7 6l6 6l-6 6l-1.41-1.41L10.17 12L5.59 7.41m6 0L13 6l6 6l-6 6l-1.41-1.41L16.17 12l-4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n </ul>\n\n <!-- REGISTERS PER PAGE -->\n <div class=\"flex items-center w-auto absolute right-0\">\n <ngt-select class='block w-20 left-0' [searchable]='false' [clearable]='false' dropdownPosition='top'\n [items]='registersPerPageOptions' name='registersPerPageSelect' [(ngModel)]=\"currentRegistersPerPage\"\n h='h-auto' (ngModelChange)='onRegistersPerPageChange($event)' ngt-stylizable>\n <ng-template let-item=\"item\" let-index=\"index\" ngt-select-option>\n {{ item ? item : '' }}\n </ng-template>\n </ngt-select>\n\n <P class=\"ml-2\">\n {{ ngtTranslateService.ngtPagination(pagination.from, pagination.to, pagination.total) }}\n </P>\n </div>\n</div>" }]
152
+ args: [{ selector: 'ngt-pagination', template: "<div class=\"{{ displayPagination ? 'flex' : 'hidden' }} items-center w-full h-full relative\">\n <ul class=\"flex justify-start\">\n <!-- FIRST -->\n <li (click)='goToFirstPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M18.41 7.41L17 6l-6 6l6 6l1.41-1.41L13.83 12l4.58-4.59m-6 0L11 6l-6 6l6 6l1.41-1.41L7.83 12l4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS -->\n <li (click)='goToPreviousPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6l1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- PREVIOUS SECTION -->\n <li *ngIf=\"displayPreviousSectionButton\" (click)='goToPreviousSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <ng-container *ngFor='let page of pages'>\n <ng-container *ngIf='page == pagination.page'>\n <li class=\"mr-2\">\n <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationActivePageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n <ng-container *ngIf='page !== pagination.page'>\n <li (click)='goToPage(page)' class=\"mr-2\">\n <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationPageButtonStyle' [forceEnable]=\"true\">\n {{ page }}\n </ngt-action>\n </li>\n </ng-container>\n\n </ng-container>\n\n <!-- NEXT SECTION -->\n <li *ngIf=\"displayNextSectionButton\" (click)='goToNextSection()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path\n d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- NEXT -->\n <li (click)='goToNextPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z\" />\n </svg>\n </ngt-action>\n </li>\n\n <!-- LAST -->\n <li (click)='goToLastPage()' class=\"mr-2\">\n <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\" focusable=\"false\"\n style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n <path\n d=\"M5.59 7.41L7 6l6 6l-6 6l-1.41-1.41L10.17 12L5.59 7.41m6 0L13 6l6 6l-6 6l-1.41-1.41L16.17 12l-4.58-4.59z\" />\n </svg>\n </ngt-action>\n </li>\n </ul>\n\n <!-- REGISTERS PER PAGE -->\n <div class=\"flex items-center w-auto absolute right-0\">\n <ngt-select class='block w-20 left-0' [searchable]='false' [clearable]='false' dropdownPosition='top'\n [items]='registersPerPageOptions' name='registersPerPageSelect' [(ngModel)]=\"currentRegistersPerPage\"\n h='h-auto' (ngModelChange)='onRegistersPerPageChange($event)' ngt-stylizable>\n <ng-template let-item=\"item\" let-index=\"index\" ngt-select-option>\n {{ item ? item : '' }}\n </ng-template>\n </ngt-select>\n\n <P class=\"text-xs ml-2\">\n {{ ngtTranslateService.ngtPagination(pagination.from, pagination.to, pagination.total) }}\n </P>\n </div>\n</div>\n" }]
153
153
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NgtTranslateService, decorators: [{
154
154
  type: Optional
155
155
  }] }]; }, propDecorators: { pagesInterval: [{
@@ -159,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
159
159
  }], onPerPageChange: [{
160
160
  type: Output
161
161
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXBhZ2luYXRpb24vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXBhZ2luYXRpb24vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7OztBQU01RixNQUFNLE9BQU8sc0JBQXNCO0lBcUMvQixZQUNZLFFBQWtCLEVBRW5CLG1CQUF3QztRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRW5CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFyQ2xDLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWFyRSxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFbEMsZUFBVSxHQUFzQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsRUFBRSxFQUFFLElBQUk7WUFDUixRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBRUssVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLDRCQUF1QixHQUFHO1lBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFB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Qyx3QkFBd0IsR0FBRyxjQUFjLEdBQUcsVUFBVSxDQUFDO0lBQ2hFLENBQUM7O21IQW5MUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpTENWbkMsd2hMQXdHTTsyRkQ5Rk8sc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNJLGdCQUFnQjs7MEJBMENyQixRQUFROzRDQXRDRyxhQUFhO3NCQUE1QixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmd0SHR0cE1ldGEsIE5ndEh0dHBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL25ndC10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5ndFBhZ2luYXRpb25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwYWdlc0ludGVydmFsOiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblBlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIFN0eWxlcyAqL1xuICAgIHB1YmxpYyBuZ3RQYWdpbmF0aW9uQWN0aXZlUGFnZUJ1dHRvblN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBwdWJsaWMgbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c0J1dHRvblN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBwdWJsaWMgbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFBhZ2luYXRpb25GaXJzdExhc3RCdXR0b25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFBhZ2luYXRpb25QYWdlQnV0dG9uU3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHVibGljIHNlY3Rpb25TdGFydFBhZ2U6IG51bWJlcjtcbiAgICBwdWJsaWMgc2VjdGlvbkVuZFBhZ2U6IG51bWJlcjtcbiAgICBwdWJsaWMgZGlzcGxheU5leHRTZWN0aW9uQnV0dG9uOiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5UHJldmlvdXNTZWN0aW9uQnV0dG9uOiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwdWJsaWMgcGFnaW5hdGlvbjogTmd0SHR0cFBhZ2luYXRpb24gPSB7XG4gICAgICAgIGNvdW50OiBudWxsLFxuICAgICAgICBwYWdlOiAxLFxuICAgICAgICBwYWdlczogbnVsbCxcbiAgICAgICAgdG90YWw6IG51bGwsXG4gICAgICAgIGZyb206IG51bGwsXG4gICAgICAgIHRvOiBudWxsLFxuICAgICAgICBwZXJfcGFnZTogbnVsbFxuICAgIH07XG5cbiAgICBwdWJsaWMgcGFnZXMgPSBbXTtcblxuICAgIHB1YmxpYyByZWdpc3RlcnNQZXJQYWdlT3B0aW9ucyA9IFtcbiAgICAgICAgNSwgMTAsIDE1LCAzMCwgNTAsIDEwMFxuICAgIF07XG5cbiAgICBwdWJsaWMgY3VycmVudFJlZ2lzdGVyc1BlclBhZ2U6IG51bWJlciA9IDE1O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgcHVibGljIG5ndFRyYW5zbGF0ZVNlcnZpY2U6IE5ndFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uU3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzU2VjdGlvbkJ1dHRvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkFjdGl2ZVBhZ2VCdXR0b25TdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB0aGlzLm5ndFBhZ2luYXRpb25QYWdlQnV0dG9uU3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcblxuICAgICAgICB0aGlzLm5ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtOCcsXG4gICAgICAgICAgICB3OiAndy04JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS03MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtOCcsXG4gICAgICAgICAgICB3OiAndy04JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS0zMDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFBhZ2luYXRpb25GaXJzdExhc3RCdXR0b24nLCB7XG4gICAgICAgICAgICBoOiAnaC04JyxcbiAgICAgICAgICAgIHc6ICd3LTgnLFxuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC13aGl0ZScsXG4gICAgICAgICAgICAgICAgYmc6ICdiZy1ncmF5LTkwMCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uQWN0aXZlUGFnZUJ1dHRvblN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFBhZ2luYXRpb25BY3RpdmVQYWdlQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtOCcsXG4gICAgICAgICAgICB3OiAndy04JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS01MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvblBhZ2VCdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uUGFnZUJ1dHRvbicsIHtcbiAgICAgICAgICAgIGg6ICdoLTgnLFxuICAgICAgICAgICAgdzogJ3ctOCcsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LXdoaXRlJyxcbiAgICAgICAgICAgICAgICBiZzogJ2JnLWdyYXktMzAwJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZWdpc3RlcnNQZXJQYWdlQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMucGFnaW5hdGlvbi5wZXJfcGFnZSAhPSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWdpc3RlcnNQZXJQYWdlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMub25QZXJQYWdlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9QYWdlKHBhZ2U6IG51bWJlcikge1xuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvUHJldmlvdXNQYWdlKCkge1xuICAgICAgICBpZiAoKHRoaXMucGFnaW5hdGlvbi5wYWdlIC0gMSkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnBhZ2luYXRpb24ucGFnZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9OZXh0UGFnZSgpIHtcbiAgICAgICAgaWYgKCh0aGlzLnBhZ2luYXRpb24ucGFnZSArIDEpIDw9IHRoaXMucGFnaW5hdGlvbi5wYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ29Ub1BhZ2UodGhpcy5wYWdpbmF0aW9uLnBhZ2UgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvUHJldmlvdXNTZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnNlY3Rpb25TdGFydFBhZ2UgLSAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ29Ub05leHRTZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnNlY3Rpb25FbmRQYWdlICsgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9GaXJzdFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb24ucGFnZSAhPSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvTGFzdFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb24ucGFnZSAhPSB0aGlzLnBhZ2luYXRpb24ucGFnZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvVG9QYWdlKHRoaXMucGFnaW5hdGlvbi5wYWdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ucGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnaW5hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJvY2Nlc3NQYWdpbmF0aW9uKG1ldGE6IE5ndEh0dHBNZXRhKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gbWV0YS5wYWdpbmF0aW9uO1xuXG4gICAgICAgIHRoaXMuc2VjdGlvblN0YXJ0UGFnZSA9IE1hdGguZmxvb3IoKHRoaXMucGFnaW5hdGlvbi5wYWdlIC0gMSkgLyB0aGlzLnBhZ2VzSW50ZXJ2YWwpICogdGhpcy5wYWdlc0ludGVydmFsICsgMTtcbiAgICAgICAgdGhpcy5zZWN0aW9uRW5kUGFnZSA9IHRoaXMuc2VjdGlvblN0YXJ0UGFnZSArICh0aGlzLnBhZ2VzSW50ZXJ2YWwgLSAxKTtcblxuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uLnBhZ2VzO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnNlY3Rpb25TdGFydFBhZ2U7IGkgPD0gdGhpcy5zZWN0aW9uRW5kUGFnZSAmJiBpIDw9IHRvdGFsUGFnZXM7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wYWdlcy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRGlzcGxheWVkQnV0dG9uU2VjdGlvbnModGhpcy5zZWN0aW9uU3RhcnRQYWdlLCB0aGlzLnNlY3Rpb25FbmRQYWdlLCB0b3RhbFBhZ2VzKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5UGFnaW5hdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UGFnaW5hdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgY291bnQ6IG51bGwsXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgcGFnZXM6IG51bGwsXG4gICAgICAgICAgICB0b3RhbDogbnVsbCxcbiAgICAgICAgICAgIGZyb206IG51bGwsXG4gICAgICAgICAgICB0bzogbnVsbCxcbiAgICAgICAgICAgIHBlcl9wYWdlOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kRGlzcGxheWVkQnV0dG9uU2VjdGlvbnMoc2VjdGlvblN0YXJ0UGFnZTogbnVtYmVyLCBzZWN0aW9uRW5kUGFnZTogbnVtYmVyLCB0b3RhbFBhZ2VzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNTZWN0aW9uQnV0dG9uID0gc2VjdGlvblN0YXJ0UGFnZSA+IDE7XG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRTZWN0aW9uQnV0dG9uID0gc2VjdGlvbkVuZFBhZ2UgPCB0b3RhbFBhZ2VzO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ7eyBkaXNwbGF5UGFnaW5hdGlvbiA/ICdmbGV4JyA6ICdoaWRkZW4nIH19IGl0ZW1zLWNlbnRlciB3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlXCI+XG4gICAgPHVsIGNsYXNzPVwiZmxleCBqdXN0aWZ5LXN0YXJ0XCI+XG4gICAgICAgIDwhLS0gRklSU1QgLS0+XG4gICAgICAgIDxsaSAoY2xpY2spPSdnb1RvRmlyc3RQYWdlKCknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgPG5ndC1hY3Rpb24gW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIi1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XCJcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjQxIDcuNDFMMTcgNmwtNiA2bDYgNmwxLjQxLTEuNDFMMTMuODMgMTJsNC41OC00LjU5bS02IDBMMTEgNmwtNiA2bDYgNmwxLjQxLTEuNDFMNy44MyAxMmw0LjU4LTQuNTl6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIFBSRVZJT1VTIC0tPlxuICAgICAgICA8bGkgKGNsaWNrKT0nZ29Ub1ByZXZpb3VzUGFnZSgpJyBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgIDxuZ3QtYWN0aW9uIFtuZ3RTdHlsZV09J25ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS40MSAxNi41OEwxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2bDYgNmwxLjQxLTEuNDJ6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIFBSRVZJT1VTIFNFQ1RJT04gLS0+XG4gICAgICAgIDxsaSAqbmdJZj1cImRpc3BsYXlQcmV2aW91c1NlY3Rpb25CdXR0b25cIiAoY2xpY2spPSdnb1RvUHJldmlvdXNTZWN0aW9uKCknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgPG5ndC1hY3Rpb24gW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxMmEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6bTYgMGEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6bTYgMGEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHBhZ2Ugb2YgcGFnZXMnPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ncGFnZSA9PSBwYWdpbmF0aW9uLnBhZ2UnPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5ndC1hY3Rpb24gW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbkFjdGl2ZVBhZ2VCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3QtYWN0aW9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ncGFnZSAhPT0gcGFnaW5hdGlvbi5wYWdlJz5cbiAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT0nZ29Ub1BhZ2UocGFnZSknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWFjdGlvbiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uUGFnZUJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25ndC1hY3Rpb24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTkVYVCBTRUNUSU9OIC0tPlxuICAgICAgICA8bGkgKm5nSWY9XCJkaXNwbGF5TmV4dFNlY3Rpb25CdXR0b25cIiAoY2xpY2spPSdnb1RvTmV4dFNlY3Rpb24oKScgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICA8bmd0LWFjdGlvbiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzU2VjdGlvbkJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDEyYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHptNiAwYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHptNiAwYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9uZ3QtYWN0aW9uPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDwhLS0gTkVYVCAtLT5cbiAgICAgICAgPGxpIChjbGljayk9J2dvVG9OZXh0UGFnZSgpJyBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgIDxuZ3QtYWN0aW9uIFtuZ3RTdHlsZV09J25ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjU5IDE2LjU4TDEzLjE3IDEyTDguNTkgNy40MUwxMCA2bDYgNmwtNiA2bC0xLjQxLTEuNDJ6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIExBU1QgLS0+XG4gICAgICAgIDxsaSAoY2xpY2spPSdnb1RvTGFzdFBhZ2UoKScgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICA8bmd0LWFjdGlvbiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uRmlyc3RMYXN0QnV0dG9uU3R5bGUnIFtmb3JjZUVuYWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGwtY3VycmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS41OSA3LjQxTDcgNmw2IDZsLTYgNmwtMS40MS0xLjQxTDEwLjE3IDEyTDUuNTkgNy40MW02IDBMMTMgNmw2IDZsLTYgNmwtMS40MS0xLjQxTDE2LjE3IDEybC00LjU4LTQuNTl6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPCEtLSBSRUdJU1RFUlMgUEVSIFBBR0UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctYXV0byBhYnNvbHV0ZSByaWdodC0wXCI+XG4gICAgICAgIDxuZ3Qtc2VsZWN0IGNsYXNzPSdibG9jayB3LTIwIGxlZnQtMCcgW3NlYXJjaGFibGVdPSdmYWxzZScgW2NsZWFyYWJsZV09J2ZhbHNlJyBkcm9wZG93blBvc2l0aW9uPSd0b3AnXG4gICAgICAgICAgICBbaXRlbXNdPSdyZWdpc3RlcnNQZXJQYWdlT3B0aW9ucycgbmFtZT0ncmVnaXN0ZXJzUGVyUGFnZVNlbGVjdCcgWyhuZ01vZGVsKV09XCJjdXJyZW50UmVnaXN0ZXJzUGVyUGFnZVwiXG4gICAgICAgICAgICBoPSdoLWF1dG8nIChuZ01vZGVsQ2hhbmdlKT0nb25SZWdpc3RlcnNQZXJQYWdlQ2hhbmdlKCRldmVudCknIG5ndC1zdHlsaXphYmxlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgbmd0LXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAge3sgaXRlbSA/IGl0ZW0gOiAnJyB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZ3Qtc2VsZWN0PlxuXG4gICAgICAgIDxQIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAge3sgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RQYWdpbmF0aW9uKHBhZ2luYXRpb24uZnJvbSwgcGFnaW5hdGlvbi50bywgcGFnaW5hdGlvbi50b3RhbCkgfX1cbiAgICAgICAgPC9QPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXBhZ2luYXRpb24vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXBhZ2luYXRpb24vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7OztBQU01RixNQUFNLE9BQU8sc0JBQXNCO0lBcUMvQixZQUNZLFFBQWtCLEVBRW5CLG1CQUF3QztRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRW5CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFyQ2xDLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWFyRSxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFbEMsZUFBVSxHQUFzQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsRUFBRSxFQUFFLElBQUk7WUFDUixRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBRUssVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLDRCQUF1QixHQUFHO1lBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFB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Qyx3QkFBd0IsR0FBRyxjQUFjLEdBQUcsVUFBVSxDQUFDO0lBQ2hFLENBQUM7O21IQW5MUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpTENWbkMsc2tMQXlHQTsyRkQvRmEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNJLGdCQUFnQjs7MEJBMENyQixRQUFROzRDQXRDRyxhQUFhO3NCQUE1QixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmd0SHR0cE1ldGEsIE5ndEh0dHBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL25ndC10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5ndFBhZ2luYXRpb25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwYWdlc0ludGVydmFsOiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblBlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIFN0eWxlcyAqL1xuICAgIHB1YmxpYyBuZ3RQYWdpbmF0aW9uQWN0aXZlUGFnZUJ1dHRvblN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBwdWJsaWMgbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c0J1dHRvblN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBwdWJsaWMgbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFBhZ2luYXRpb25GaXJzdExhc3RCdXR0b25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFBhZ2luYXRpb25QYWdlQnV0dG9uU3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHVibGljIHNlY3Rpb25TdGFydFBhZ2U6IG51bWJlcjtcbiAgICBwdWJsaWMgc2VjdGlvbkVuZFBhZ2U6IG51bWJlcjtcbiAgICBwdWJsaWMgZGlzcGxheU5leHRTZWN0aW9uQnV0dG9uOiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5UHJldmlvdXNTZWN0aW9uQnV0dG9uOiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwdWJsaWMgcGFnaW5hdGlvbjogTmd0SHR0cFBhZ2luYXRpb24gPSB7XG4gICAgICAgIGNvdW50OiBudWxsLFxuICAgICAgICBwYWdlOiAxLFxuICAgICAgICBwYWdlczogbnVsbCxcbiAgICAgICAgdG90YWw6IG51bGwsXG4gICAgICAgIGZyb206IG51bGwsXG4gICAgICAgIHRvOiBudWxsLFxuICAgICAgICBwZXJfcGFnZTogbnVsbFxuICAgIH07XG5cbiAgICBwdWJsaWMgcGFnZXMgPSBbXTtcblxuICAgIHB1YmxpYyByZWdpc3RlcnNQZXJQYWdlT3B0aW9ucyA9IFtcbiAgICAgICAgNSwgMTAsIDE1LCAzMCwgNTAsIDEwMFxuICAgIF07XG5cbiAgICBwdWJsaWMgY3VycmVudFJlZ2lzdGVyc1BlclBhZ2U6IG51bWJlciA9IDE1O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgcHVibGljIG5ndFRyYW5zbGF0ZVNlcnZpY2U6IE5ndFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uU3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzU2VjdGlvbkJ1dHRvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkFjdGl2ZVBhZ2VCdXR0b25TdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB0aGlzLm5ndFBhZ2luYXRpb25QYWdlQnV0dG9uU3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcblxuICAgICAgICB0aGlzLm5ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtNicsXG4gICAgICAgICAgICB3OiAndy02JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS03MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtNicsXG4gICAgICAgICAgICB3OiAndy02JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS0zMDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFBhZ2luYXRpb25GaXJzdExhc3RCdXR0b24nLCB7XG4gICAgICAgICAgICBoOiAnaC02JyxcbiAgICAgICAgICAgIHc6ICd3LTYnLFxuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC13aGl0ZScsXG4gICAgICAgICAgICAgICAgYmc6ICdiZy1ncmF5LTkwMCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uQWN0aXZlUGFnZUJ1dHRvblN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFBhZ2luYXRpb25BY3RpdmVQYWdlQnV0dG9uJywge1xuICAgICAgICAgICAgaDogJ2gtNicsXG4gICAgICAgICAgICB3OiAndy02JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgIGJnOiAnYmctZ3JheS01MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvblBhZ2VCdXR0b25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RQYWdpbmF0aW9uUGFnZUJ1dHRvbicsIHtcbiAgICAgICAgICAgIGg6ICdoLTYnLFxuICAgICAgICAgICAgdzogJ3ctNicsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LXdoaXRlJyxcbiAgICAgICAgICAgICAgICBiZzogJ2JnLWdyYXktMzAwJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZWdpc3RlcnNQZXJQYWdlQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMucGFnaW5hdGlvbi5wZXJfcGFnZSAhPSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWdpc3RlcnNQZXJQYWdlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMub25QZXJQYWdlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9QYWdlKHBhZ2U6IG51bWJlcikge1xuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvUHJldmlvdXNQYWdlKCkge1xuICAgICAgICBpZiAoKHRoaXMucGFnaW5hdGlvbi5wYWdlIC0gMSkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnBhZ2luYXRpb24ucGFnZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9OZXh0UGFnZSgpIHtcbiAgICAgICAgaWYgKCh0aGlzLnBhZ2luYXRpb24ucGFnZSArIDEpIDw9IHRoaXMucGFnaW5hdGlvbi5wYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ29Ub1BhZ2UodGhpcy5wYWdpbmF0aW9uLnBhZ2UgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvUHJldmlvdXNTZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnNlY3Rpb25TdGFydFBhZ2UgLSAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ29Ub05leHRTZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSh0aGlzLnNlY3Rpb25FbmRQYWdlICsgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdvVG9GaXJzdFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb24ucGFnZSAhPSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb1RvUGFnZSgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnb1RvTGFzdFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb24ucGFnZSAhPSB0aGlzLnBhZ2luYXRpb24ucGFnZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvVG9QYWdlKHRoaXMucGFnaW5hdGlvbi5wYWdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ucGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnaW5hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJvY2Nlc3NQYWdpbmF0aW9uKG1ldGE6IE5ndEh0dHBNZXRhKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gbWV0YS5wYWdpbmF0aW9uO1xuXG4gICAgICAgIHRoaXMuc2VjdGlvblN0YXJ0UGFnZSA9IE1hdGguZmxvb3IoKHRoaXMucGFnaW5hdGlvbi5wYWdlIC0gMSkgLyB0aGlzLnBhZ2VzSW50ZXJ2YWwpICogdGhpcy5wYWdlc0ludGVydmFsICsgMTtcbiAgICAgICAgdGhpcy5zZWN0aW9uRW5kUGFnZSA9IHRoaXMuc2VjdGlvblN0YXJ0UGFnZSArICh0aGlzLnBhZ2VzSW50ZXJ2YWwgLSAxKTtcblxuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uLnBhZ2VzO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnNlY3Rpb25TdGFydFBhZ2U7IGkgPD0gdGhpcy5zZWN0aW9uRW5kUGFnZSAmJiBpIDw9IHRvdGFsUGFnZXM7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wYWdlcy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRGlzcGxheWVkQnV0dG9uU2VjdGlvbnModGhpcy5zZWN0aW9uU3RhcnRQYWdlLCB0aGlzLnNlY3Rpb25FbmRQYWdlLCB0b3RhbFBhZ2VzKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5UGFnaW5hdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UGFnaW5hdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgY291bnQ6IG51bGwsXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgcGFnZXM6IG51bGwsXG4gICAgICAgICAgICB0b3RhbDogbnVsbCxcbiAgICAgICAgICAgIGZyb206IG51bGwsXG4gICAgICAgICAgICB0bzogbnVsbCxcbiAgICAgICAgICAgIHBlcl9wYWdlOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kRGlzcGxheWVkQnV0dG9uU2VjdGlvbnMoc2VjdGlvblN0YXJ0UGFnZTogbnVtYmVyLCBzZWN0aW9uRW5kUGFnZTogbnVtYmVyLCB0b3RhbFBhZ2VzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNTZWN0aW9uQnV0dG9uID0gc2VjdGlvblN0YXJ0UGFnZSA+IDE7XG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRTZWN0aW9uQnV0dG9uID0gc2VjdGlvbkVuZFBhZ2UgPCB0b3RhbFBhZ2VzO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ7eyBkaXNwbGF5UGFnaW5hdGlvbiA/ICdmbGV4JyA6ICdoaWRkZW4nIH19IGl0ZW1zLWNlbnRlciB3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlXCI+XG4gICAgPHVsIGNsYXNzPVwiZmxleCBqdXN0aWZ5LXN0YXJ0XCI+XG4gICAgICAgIDwhLS0gRklSU1QgLS0+XG4gICAgICAgIDxsaSAoY2xpY2spPSdnb1RvRmlyc3RQYWdlKCknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgPG5ndC1hY3Rpb24gW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbkZpcnN0TGFzdEJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIi1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XCJcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjQxIDcuNDFMMTcgNmwtNiA2bDYgNmwxLjQxLTEuNDFMMTMuODMgMTJsNC41OC00LjU5bS02IDBMMTEgNmwtNiA2bDYgNmwxLjQxLTEuNDFMNy44MyAxMmw0LjU4LTQuNTl6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIFBSRVZJT1VTIC0tPlxuICAgICAgICA8bGkgKGNsaWNrKT0nZ29Ub1ByZXZpb3VzUGFnZSgpJyBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgIDxuZ3QtYWN0aW9uIFtuZ3RTdHlsZV09J25ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS40MSAxNi41OEwxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2bDYgNmwxLjQxLTEuNDJ6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIFBSRVZJT1VTIFNFQ1RJT04gLS0+XG4gICAgICAgIDxsaSAqbmdJZj1cImRpc3BsYXlQcmV2aW91c1NlY3Rpb25CdXR0b25cIiAoY2xpY2spPSdnb1RvUHJldmlvdXNTZWN0aW9uKCknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgPG5ndC1hY3Rpb24gW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbk5leHRQcmV2aW91c1NlY3Rpb25CdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxMmEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6bTYgMGEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6bTYgMGEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHBhZ2Ugb2YgcGFnZXMnPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ncGFnZSA9PSBwYWdpbmF0aW9uLnBhZ2UnPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5ndC1hY3Rpb24gY2xhc3M9XCJ0ZXh0LXhzXCIgW25ndFN0eWxlXT0nbmd0UGFnaW5hdGlvbkFjdGl2ZVBhZ2VCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3QtYWN0aW9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ncGFnZSAhPT0gcGFnaW5hdGlvbi5wYWdlJz5cbiAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT0nZ29Ub1BhZ2UocGFnZSknIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWFjdGlvbiBjbGFzcz1cInRleHQteHNcIiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uUGFnZUJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25ndC1hY3Rpb24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTkVYVCBTRUNUSU9OIC0tPlxuICAgICAgICA8bGkgKm5nSWY9XCJkaXNwbGF5TmV4dFNlY3Rpb25CdXR0b25cIiAoY2xpY2spPSdnb1RvTmV4dFNlY3Rpb24oKScgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICA8bmd0LWFjdGlvbiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uTmV4dFByZXZpb3VzU2VjdGlvbkJ1dHRvblN0eWxlJyBbZm9yY2VFbmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDEyYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHptNiAwYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHptNiAwYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9uZ3QtYWN0aW9uPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDwhLS0gTkVYVCAtLT5cbiAgICAgICAgPGxpIChjbGljayk9J2dvVG9OZXh0UGFnZSgpJyBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgIDxuZ3QtYWN0aW9uIFtuZ3RTdHlsZV09J25ndFBhZ2luYXRpb25OZXh0UHJldmlvdXNCdXR0b25TdHlsZScgW2ZvcmNlRW5hYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjU5IDE2LjU4TDEzLjE3IDEyTDguNTkgNy40MUwxMCA2bDYgNmwtNiA2bC0xLjQxLTEuNDJ6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8IS0tIExBU1QgLS0+XG4gICAgICAgIDxsaSAoY2xpY2spPSdnb1RvTGFzdFBhZ2UoKScgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICA8bmd0LWFjdGlvbiBbbmd0U3R5bGVdPSduZ3RQYWdpbmF0aW9uRmlyc3RMYXN0QnV0dG9uU3R5bGUnIFtmb3JjZUVuYWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGwtY3VycmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS41OSA3LjQxTDcgNmw2IDZsLTYgNmwtMS40MS0xLjQxTDEwLjE3IDEyTDUuNTkgNy40MW02IDBMMTMgNmw2IDZsLTYgNmwtMS40MS0xLjQxTDE2LjE3IDEybC00LjU4LTQuNTl6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbmd0LWFjdGlvbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPCEtLSBSRUdJU1RFUlMgUEVSIFBBR0UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctYXV0byBhYnNvbHV0ZSByaWdodC0wXCI+XG4gICAgICAgIDxuZ3Qtc2VsZWN0IGNsYXNzPSdibG9jayB3LTIwIGxlZnQtMCcgW3NlYXJjaGFibGVdPSdmYWxzZScgW2NsZWFyYWJsZV09J2ZhbHNlJyBkcm9wZG93blBvc2l0aW9uPSd0b3AnXG4gICAgICAgICAgICBbaXRlbXNdPSdyZWdpc3RlcnNQZXJQYWdlT3B0aW9ucycgbmFtZT0ncmVnaXN0ZXJzUGVyUGFnZVNlbGVjdCcgWyhuZ01vZGVsKV09XCJjdXJyZW50UmVnaXN0ZXJzUGVyUGFnZVwiXG4gICAgICAgICAgICBoPSdoLWF1dG8nIChuZ01vZGVsQ2hhbmdlKT0nb25SZWdpc3RlcnNQZXJQYWdlQ2hhbmdlKCRldmVudCknIG5ndC1zdHlsaXphYmxlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgbmd0LXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAge3sgaXRlbSA/IGl0ZW0gOiAnJyB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZ3Qtc2VsZWN0PlxuXG4gICAgICAgIDxQIGNsYXNzPVwidGV4dC14cyBtbC0yXCI+XG4gICAgICAgICAgICB7eyBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndFBhZ2luYXRpb24ocGFnaW5hdGlvbi5mcm9tLCBwYWdpbmF0aW9uLnRvLCBwYWdpbmF0aW9uLnRvdGFsKSB9fVxuICAgICAgICA8L1A+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -82,7 +82,7 @@ export class NgtRadioButtonComponent extends NgtBaseNgModel {
82
82
  NgtRadioButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtRadioButtonComponent, deps: [{ token: i0.Injector }, { token: i0.Renderer2 }, { token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i2.NgtFormComponent, optional: true, skipSelf: true }, { token: i3.NgtSectionComponent, optional: true, skipSelf: true }, { token: i4.NgtModalComponent, optional: true, skipSelf: true }, { token: i5.NgtRadioButtonContainerComponent, optional: true, skipSelf: true }, { token: i6.ControlContainer, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
83
83
  NgtRadioButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtRadioButtonComponent, selector: "ngt-radio-button", inputs: { label: "label", name: "name", shining: "shining", isSelectable: "isSelectable", isDisabled: "isDisabled", helpTitle: "helpTitle", helpTextColor: "helpTextColor", helpText: "helpText" }, providers: [
84
84
  NgtMakeProvider(NgtRadioButtonComponent),
85
- ], viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<label\n class=\"inline-flex items-center {{ disabled() || !isSelectable ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\">\n <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]='disabled() || !isSelectable'\n #element>\n\n <div class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n shadow rounded-full border border-gray-400 {{ !shining ? 'flex justify-center items-center' : 'hidden' }}\"\n style=\"width: 19px; height: 19px;\">\n\n <div style=\"width: 13px; height: 13px;\">\n <svg *ngIf=\"value\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n\n <path\n d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\"/>\n </svg>\n </div>\n </div>\n\n <span *ngIf='label && !shining' class=\"text-sm ml-2\" [class.line-through]='!isSelectable'>\n {{ label }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n </div>\n</ng-container>", styles: ["label{margin-bottom:unset!important}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i9.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], viewProviders: [
85
+ ], viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<label\n class=\"inline-flex items-center {{ disabled() || !isSelectable ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\">\n <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]='disabled() || !isSelectable'\n #element>\n\n <div class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n shadow rounded-full border border-gray-400 text-sm {{ !shining ? 'flex justify-center items-center' : 'hidden' }}\"\n style=\"width: 19px; height: 19px;\">\n\n <div style=\"width: 14px; height: 14px;\">\n <svg *ngIf=\"value\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n\n <path\n d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\"/>\n </svg>\n </div>\n </div>\n\n <span *ngIf='label && !shining' class=\"text-xs ml-2\" [class.line-through]='!isSelectable'>\n {{ label }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n </div>\n</ng-container>\n", styles: ["label{margin-bottom:unset!important}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i9.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], viewProviders: [
86
86
  { provide: ControlContainer, useExisting: NgForm }
87
87
  ] });
88
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtRadioButtonComponent, decorators: [{
@@ -91,7 +91,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
91
91
  NgtMakeProvider(NgtRadioButtonComponent),
92
92
  ], viewProviders: [
93
93
  { provide: ControlContainer, useExisting: NgForm }
94
- ], template: "<label\n class=\"inline-flex items-center {{ disabled() || !isSelectable ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\">\n <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]='disabled() || !isSelectable'\n #element>\n\n <div class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n shadow rounded-full border border-gray-400 {{ !shining ? 'flex justify-center items-center' : 'hidden' }}\"\n style=\"width: 19px; height: 19px;\">\n\n <div style=\"width: 13px; height: 13px;\">\n <svg *ngIf=\"value\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n\n <path\n d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\"/>\n </svg>\n </div>\n </div>\n\n <span *ngIf='label && !shining' class=\"text-sm ml-2\" [class.line-through]='!isSelectable'>\n {{ label }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n </div>\n</ng-container>", styles: ["label{margin-bottom:unset!important}\n"] }]
94
+ ], template: "<label\n class=\"inline-flex items-center {{ disabled() || !isSelectable ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\">\n <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]='disabled() || !isSelectable'\n #element>\n\n <div class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n shadow rounded-full border border-gray-400 text-sm {{ !shining ? 'flex justify-center items-center' : 'hidden' }}\"\n style=\"width: 19px; height: 19px;\">\n\n <div style=\"width: 14px; height: 14px;\">\n <svg *ngIf=\"value\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n\n <path\n d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\"/>\n </svg>\n </div>\n </div>\n\n <span *ngIf='label && !shining' class=\"text-xs ml-2\" [class.line-through]='!isSelectable'>\n {{ label }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n </div>\n</ng-container>\n", styles: ["label{margin-bottom:unset!important}\n"] }]
95
95
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.Renderer2 }, { type: i1.NgtStylizableDirective, decorators: [{
96
96
  type: Self
97
97
  }, {
@@ -136,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
136
136
  }], helpText: [{
137
137
  type: Input
138
138
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXJhZGlvLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtcmFkaW8tYnV0dG9uL25ndC1yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXJhZGlvLWJ1dHRvbi9uZ3QtcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsSUFBSSxFQUVKLEtBQUssRUFFTCxRQUFRLEVBRVIsSUFBSSxFQUNKLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7Ozs7O0FBaUI1RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQWlCdkQsWUFDWSxRQUFrQixFQUNsQixRQUFtQixFQUduQixzQkFBOEMsRUFHOUMsT0FBeUIsRUFHekIsVUFBK0IsRUFHL0IsUUFBMkIsRUFHM0IsdUJBQXlELEVBRzFELGFBQStCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBckJBLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUduQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBRzlDLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBR3pCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBRy9CLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBRzNCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBa0M7UUFHMUQsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBL0IxQixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUk3QixrQkFBYSxHQUFXLGdCQUFnQixDQUFDO1FBS2pELGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQTBCNUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxpQkFBMEMsRUFBRSxFQUFFO2dCQUM1RyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ3pFO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFO1lBQzdDLEtBQUssRUFBRTtnQkFDSCxJQUFJLEVBQUUsZUFBZTtnQkFDckIsTUFBTSxFQUFFLGlCQUFpQjthQUM1QjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBYztRQUN4QixJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFM0MsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzRDtTQUNKO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVU7ZUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVO2VBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDOztvSEF4R1EsdUJBQXVCO3dHQUF2Qix1QkFBdUIsK09BUHJCO1FBQ1AsZUFBZSxDQUFDLHVCQUF1QixDQUFDO0tBQzNDLG1LQy9CTCx3NENBK0JlLHdnQkRDSTtRQUNYLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7S0FDckQ7MkZBRVEsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNJLGtCQUFrQixhQUdqQjt3QkFDUCxlQUFlLHlCQUF5QjtxQkFDM0MsaUJBQ2M7d0JBQ1gsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtxQkFDckQ7OzBCQXVCSSxJQUFJOzswQkFBSSxRQUFROzswQkFHaEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBR3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUdwQixRQUFROzswQkFBSSxRQUFROzswQkFHcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBR3BCLFFBQVE7OzBCQUFJLElBQUk7NENBbkMwQixPQUFPO3NCQUFyRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXRCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFFVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5ndEJhc2VOZ01vZGVsLCBOZ3RNYWtlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9iYXNlL25ndC1iYXNlLW5nLW1vZGVsJztcbmltcG9ydCB7IE5ndFN0eWxpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL25ndC1mb3JtL25ndC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5ndFJhZGlvQnV0dG9uQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtcmFkaW8tYnV0dG9uLWNvbnRhaW5lci9uZ3QtcmFkaW8tYnV0dG9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtbW9kYWwvbmd0LW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LXJhZGlvLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1yYWRpby1idXR0b24uY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBOZ3RNYWtlUHJvdmlkZXIoTmd0UmFkaW9CdXR0b25Db21wb25lbnQpLFxuICAgIF0sXG4gICAgdmlld1Byb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0UmFkaW9CdXR0b25Db21wb25lbnQgZXh0ZW5kcyBOZ3RCYXNlTmdNb2RlbCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnZWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hpbmluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNTZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRleHRDb2xvcjogc3RyaW5nID0gJ3RleHQtZ3JlZW4tNTAwJztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRleHQ6IHN0cmluZztcblxuICAgIHB1YmxpYyBuZ3RTdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblxuICAgICAgICBAU2VsZigpIEBPcHRpb25hbCgpXG4gICAgICAgIHByaXZhdGUgbmd0U3R5bGl6YWJsZURpcmVjdGl2ZTogTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndEZvcm06IE5ndEZvcm1Db21wb25lbnQsXG5cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RTZWN0aW9uOiBOZ3RTZWN0aW9uQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0TW9kYWw6IE5ndE1vZGFsQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0UmFkaW9CdXR0b25Db250YWluZXI6IE5ndFJhZGlvQnV0dG9uQ29udGFpbmVyQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KClcbiAgICAgICAgcHVibGljIGZvcm1Db250YWluZXI6IENvbnRyb2xDb250YWluZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5uZ3RSYWRpb0J1dHRvbkNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RSYWRpb0J1dHRvbkNvbnRhaW5lci5vbkFjdGl2ZVJhZGlvQnV0dG9uQ2hhbmdlLnN1YnNjcmliZSgoYWN0aXZlUmFkaW9CdXR0b246IE5ndFJhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAoYWN0aXZlUmFkaW9CdXR0b24ubmFtZSA9PT0gdGhpcy5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubmd0U3R5bGUgPSB0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUuZ2V0Tmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmd0U3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmd0U3R5bGUubG9hZCh0aGlzLmluamVjdG9yLCAnTmd0Q2hlY2tib3gnLCB7XG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICdib3JkZXItZ3JheS01MDAnLFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbk5hdGl2ZUNoYW5nZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubmd0UmFkaW9CdXR0b25Db250YWluZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5ndFJhZGlvQnV0dG9uQ29udGFpbmVyLnNldEFjdGl2ZVJhZGlvQnV0dG9uKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTmF0aXZlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/IHZhbHVlIDogIXZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLm5ndFJhZGlvQnV0dG9uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm5ndFJhZGlvQnV0dG9uQ29udGFpbmVyLnNldEFjdGl2ZVJhZGlvQnV0dG9uKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZEJ5UGFyZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkQnlQYXJlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5ndEZvcm0/LmlzRGlzYWJsZWRcbiAgICAgICAgICAgIHx8IHRoaXMubmd0U2VjdGlvbj8uaXNEaXNhYmxlZFxuICAgICAgICAgICAgfHwgdGhpcy5uZ3RNb2RhbD8uaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG59XG4iLCI8bGFiZWxcbiAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciB7eyBkaXNhYmxlZCgpIHx8ICFpc1NlbGVjdGFibGUgPyAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnIDogJ2N1cnNvci1wb2ludGVyJyB9fVwiPlxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbbmFtZV09J25hbWUnIGNsYXNzPVwiaGlkZGVuXCIgKFtuZ01vZGVsXSk9J3ZhbHVlJyBbZGlzYWJsZWRdPSdkaXNhYmxlZCgpIHx8ICFpc1NlbGVjdGFibGUnXG4gICAgICAgICNlbGVtZW50PlxuXG4gICAgPGRpdiBjbGFzcz1cInt7IHZhbHVlID8gbmd0U3R5bGUuY29tcGlsZShbJ2NvbG9yLmJvcmRlcicsICdjb2xvci50ZXh0J10pIDogJ2JvcmRlci1ncmF5LTUwMCcgfX1cbiAgICAgICAgICAgICAgICAgICAgc2hhZG93IHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWdyYXktNDAwIHt7ICFzaGluaW5nID8gJ2ZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyJyA6ICdoaWRkZW4nIH19XCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTlweDsgaGVpZ2h0OiAxOXB4O1wiPlxuXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTNweDsgaGVpZ2h0OiAxM3B4O1wiPlxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZhbHVlXCIgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyOS4xMDcgMjkuMTA3XCI+XG5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjU1NCAwQzYuNTYxIDAgMCA2LjU2MiAwIDE0LjU1MmMwIDcuOTk2IDYuNTYxIDE0LjU1NSAxNC41NTQgMTQuNTU1IDcuOTk2IDAgMTQuNTUzLTYuNTU5IDE0LjU1My0xNC41NTVDMjkuMTA2IDYuNTYyIDIyLjU1IDAgMTQuNTU0IDB6XCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHNwYW4gKm5nSWY9J2xhYmVsICYmICFzaGluaW5nJyBjbGFzcz1cInRleHQtc20gbWwtMlwiIFtjbGFzcy5saW5lLXRocm91Z2hdPSchaXNTZWxlY3RhYmxlJz5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBbaWNvbkNvbG9yXT1cImhlbHBUZXh0Q29sb3JcIiBjbGFzcz1cIm1sLTFcIj5cbiAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICA8L25ndC1oZWxwZXI+XG48L2xhYmVsPlxuXG48bmctY29udGFpbmVyICpuZ0lmPSdzaGluaW5nJz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJ3LTE2IGgtMTJcIj48L25ndC1zaGluaW5nPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXJhZGlvLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtcmFkaW8tYnV0dG9uL25ndC1yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXJhZGlvLWJ1dHRvbi9uZ3QtcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsSUFBSSxFQUVKLEtBQUssRUFFTCxRQUFRLEVBRVIsSUFBSSxFQUNKLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7Ozs7O0FBaUI1RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQWlCdkQsWUFDWSxRQUFrQixFQUNsQixRQUFtQixFQUduQixzQkFBOEMsRUFHOUMsT0FBeUIsRUFHekIsVUFBK0IsRUFHL0IsUUFBMkIsRUFHM0IsdUJBQXlELEVBRzFELGFBQStCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBckJBLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUduQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBRzlDLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBR3pCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBRy9CLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBRzNCLDRC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NUNBZ0NBLHdnQkRBbUI7UUFDWCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0tBQ3JEOzJGQUVRLHVCQUF1QjtrQkFYbkMsU0FBUzsrQkFDSSxrQkFBa0IsYUFHakI7d0JBQ1AsZUFBZSx5QkFBeUI7cUJBQzNDLGlCQUNjO3dCQUNYLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7cUJBQ3JEOzswQkF1QkksSUFBSTs7MEJBQUksUUFBUTs7MEJBR2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUdwQixRQUFROzswQkFBSSxRQUFROzswQkFHcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBR3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUdwQixRQUFROzswQkFBSSxJQUFJOzRDQW5DMEIsT0FBTztzQkFBckQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUV0QixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBRVUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3RCYXNlTmdNb2RlbCwgTmd0TWFrZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9uZ3QtYmFzZS1uZy1tb2RlbCc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0U2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25ndC1zZWN0aW9uL25ndC1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RSYWRpb0J1dHRvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd0LXJhZGlvLWJ1dHRvbi1jb250YWluZXIvbmd0LXJhZGlvLWJ1dHRvbi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5ndE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LW1vZGFsL25ndC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1yYWRpby1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTmd0TWFrZVByb3ZpZGVyKE5ndFJhZGlvQnV0dG9uQ29tcG9uZW50KSxcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdGb3JtIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5ndFJhZGlvQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgTmd0QmFzZU5nTW9kZWwgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ2VsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNoaW5pbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGlzU2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0Q29sb3I6IHN0cmluZyA9ICd0ZXh0LWdyZWVuLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgbmd0U3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG5cbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKVxuICAgICAgICBwcml2YXRlIG5ndFN0eWxpemFibGVEaXJlY3RpdmU6IE5ndFN0eWxpemFibGVEaXJlY3RpdmUsXG5cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RGb3JtOiBOZ3RGb3JtQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0U2VjdGlvbjogTmd0U2VjdGlvbkNvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndFJhZGlvQnV0dG9uQ29udGFpbmVyOiBOZ3RSYWRpb0J1dHRvbkNvbnRhaW5lckNvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmd0UmFkaW9CdXR0b25Db250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0UmFkaW9CdXR0b25Db250YWluZXIub25BY3RpdmVSYWRpb0J1dHRvbkNoYW5nZS5zdWJzY3JpYmUoKGFjdGl2ZVJhZGlvQnV0dG9uOiBOZ3RSYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gKGFjdGl2ZVJhZGlvQnV0dG9uLm5hbWUgPT09IHRoaXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gdGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlLmdldE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5ndFN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndENoZWNrYm94Jywge1xuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC1ncmF5LTUwMCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnYm9yZGVyLWdyYXktNTAwJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnLCAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25OYXRpdmVDaGFuZ2UodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm5ndFJhZGlvQnV0dG9uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RSYWRpb0J1dHRvbkNvbnRhaW5lci5zZXRBY3RpdmVSYWRpb0J1dHRvbih0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk5hdGl2ZUNoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB2YWx1ZSA6ICF2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5uZ3RSYWRpb0J1dHRvbkNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5uZ3RSYWRpb0J1dHRvbkNvbnRhaW5lci5zZXRBY3RpdmVSYWRpb0J1dHRvbih0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWRCeVBhcmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEaXNhYmxlZEJ5UGFyZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ3RGb3JtPy5pc0Rpc2FibGVkXG4gICAgICAgICAgICB8fCB0aGlzLm5ndFNlY3Rpb24/LmlzRGlzYWJsZWRcbiAgICAgICAgICAgIHx8IHRoaXMubmd0TW9kYWw/LmlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95U3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgfVxufVxuIiwiPGxhYmVsXG4gICAgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIge3sgZGlzYWJsZWQoKSB8fCAhaXNTZWxlY3RhYmxlID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJyA6ICdjdXJzb3ItcG9pbnRlcicgfX1cIj5cbiAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW25hbWVdPSduYW1lJyBjbGFzcz1cImhpZGRlblwiIChbbmdNb2RlbF0pPSd2YWx1ZScgW2Rpc2FibGVkXT0nZGlzYWJsZWQoKSB8fCAhaXNTZWxlY3RhYmxlJ1xuICAgICAgICAjZWxlbWVudD5cblxuICAgIDxkaXYgY2xhc3M9XCJ7eyB2YWx1ZSA/IG5ndFN0eWxlLmNvbXBpbGUoWydjb2xvci5ib3JkZXInLCAnY29sb3IudGV4dCddKSA6ICdib3JkZXItZ3JheS01MDAnIH19XG4gICAgICAgICAgICAgICAgICAgIHNoYWRvdyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ncmF5LTQwMCB0ZXh0LXNtIHt7ICFzaGluaW5nID8gJ2ZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyJyA6ICdoaWRkZW4nIH19XCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTlweDsgaGVpZ2h0OiAxOXB4O1wiPlxuXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTRweDsgaGVpZ2h0OiAxNHB4O1wiPlxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZhbHVlXCIgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyOS4xMDcgMjkuMTA3XCI+XG5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjU1NCAwQzYuNTYxIDAgMCA2LjU2MiAwIDE0LjU1MmMwIDcuOTk2IDYuNTYxIDE0LjU1NSAxNC41NTQgMTQuNTU1IDcuOTk2IDAgMTQuNTUzLTYuNTU5IDE0LjU1My0xNC41NTVDMjkuMTA2IDYuNTYyIDIyLjU1IDAgMTQuNTU0IDB6XCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHNwYW4gKm5nSWY9J2xhYmVsICYmICFzaGluaW5nJyBjbGFzcz1cInRleHQteHMgbWwtMlwiIFtjbGFzcy5saW5lLXRocm91Z2hdPSchaXNTZWxlY3RhYmxlJz5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBbaWNvbkNvbG9yXT1cImhlbHBUZXh0Q29sb3JcIiBjbGFzcz1cIm1sLTFcIj5cbiAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICA8L25ndC1oZWxwZXI+XG48L2xhYmVsPlxuXG48bmctY29udGFpbmVyICpuZ0lmPSdzaGluaW5nJz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJ3LTE2IGgtMTJcIj48L25ndC1zaGluaW5nPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=