@one-paragon/angular-utilities 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +7 -7
- package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +5 -5
- package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +6 -6
- package/esm2022/action-state/ngrx.mjs +6 -1
- package/esm2022/http-request-state/HttpRequestStateFactory.mjs +6 -7
- package/esm2022/http-request-state/HttpRequestStateStore.mjs +41 -37
- package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +17 -21
- package/esm2022/http-request-state/directives/http-error-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-success-state-directive.mjs +13 -18
- package/esm2022/http-request-state/directives/request-state-directive.mjs +20 -19
- package/esm2022/http-request-state/http-state-module.mjs +6 -6
- package/esm2022/ngrx/actionable-selector.mjs +12 -14
- package/esm2022/rxjs/subjectifier.mjs +6 -6
- package/esm2022/rxjs/subscriber.directive.mjs +11 -13
- package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +3 -1
- package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +10 -8
- package/esm2022/table-builder/classes/TableState.mjs +13 -15
- package/esm2022/table-builder/classes/table-builder-general-settings.mjs +46 -54
- package/esm2022/table-builder/classes/table-builder.mjs +4 -1
- package/esm2022/table-builder/classes/table-store.mjs +280 -282
- package/esm2022/table-builder/components/array-column.component.mjs +15 -19
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +44 -35
- package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +7 -7
- package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +7 -7
- package/esm2022/table-builder/components/filter/filter.component.mjs +24 -24
- package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +19 -18
- package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +15 -15
- package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +100 -86
- package/esm2022/table-builder/components/generic-table/paginator.component.mjs +20 -18
- package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +5 -7
- package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +24 -21
- package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +14 -13
- package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +11 -4
- package/esm2022/table-builder/components/link-column.component.mjs +19 -23
- package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +8 -8
- package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +26 -28
- package/esm2022/table-builder/components/scroll-strategy.mjs +11 -7
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +31 -31
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +23 -22
- package/esm2022/table-builder/components/table-container/table-container.mjs +90 -80
- package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +49 -51
- package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +8 -10
- package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +17 -15
- package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +14 -14
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +24 -20
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +10 -10
- package/esm2022/table-builder/directives/resize-column.directive.mjs +13 -14
- package/esm2022/table-builder/directives/table-wrapper.directive.mjs +5 -7
- package/esm2022/table-builder/directives/tb-filter.directive.mjs +105 -110
- package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +124 -124
- package/esm2022/table-builder/pipes/column-total.pipe.mjs +4 -4
- package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +4 -4
- package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +10 -12
- package/esm2022/table-builder/pipes/key-display.mjs +8 -10
- package/esm2022/table-builder/services/export-to-csv.service.mjs +57 -63
- package/esm2022/table-builder/services/table-template-service.mjs +11 -8
- package/esm2022/table-builder/services/transform-creator.mjs +35 -40
- package/esm2022/table-builder/table-builder.module.mjs +7 -7
- package/esm2022/utilities/directives/auto-focus.directive.mjs +8 -10
- package/esm2022/utilities/directives/clickEmitterDirective.mjs +4 -4
- package/esm2022/utilities/directives/clickSubject.mjs +5 -4
- package/esm2022/utilities/directives/conditional-classes.directive.mjs +11 -11
- package/esm2022/utilities/directives/dialog-service.mjs +5 -7
- package/esm2022/utilities/directives/dialog.mjs +38 -39
- package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +7 -8
- package/esm2022/utilities/directives/prevent-enter.directive.mjs +4 -4
- package/esm2022/utilities/directives/stop-propagation.directive.mjs +4 -4
- package/esm2022/utilities/directives/styler.mjs +10 -11
- package/esm2022/utilities/directives/trim-whitespace.directive.mjs +7 -9
- package/esm2022/utilities/module.mjs +7 -7
- package/esm2022/utilities/pipes/function.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/phone.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/space-case.pipes.mjs +4 -4
- package/fesm2022/one-paragon-angular-utilities.mjs +1666 -1678
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/http-request-state/HttpRequestStateStore.d.ts +2 -2
- package/http-request-state/directives/HttpStateDirectiveBase.d.ts +5 -7
- package/http-request-state/directives/http-error-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-inProgress-state-directive.d.ts +3 -6
- package/http-request-state/directives/http-notStarted-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-success-state-directive.d.ts +1 -6
- package/http-request-state/directives/request-state-directive.d.ts +0 -1
- package/package.json +8 -8
- package/rxjs/subjectifier.d.ts +0 -1
- package/table-builder/classes/TableBuilderDataSource.d.ts +0 -1
- package/table-builder/classes/table-store.d.ts +1 -2
- package/table-builder/components/column-builder/column-builder.component.d.ts +2 -6
- package/table-builder/components/filter/filter.component.d.ts +1 -2
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -3
- package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +1 -2
- package/table-builder/components/generic-table/generic-table.component.d.ts +4 -4
- package/table-builder/components/generic-table/paginator.component.d.ts +0 -2
- package/table-builder/components/header-menu/header-menu.component.d.ts +1 -2
- package/table-builder/components/in-filter/in-filter.component.d.ts +1 -2
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +1 -2
- package/table-builder/components/sort-menu/sort-menu.component.d.ts +2 -3
- package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
- package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -2
- package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +3 -3
- package/table-builder/directives/custom-cell-directive.d.ts +3 -3
- package/table-builder/directives/multi-sort.directive.d.ts +1 -2
- package/table-builder/directives/resize-column.directive.d.ts +1 -2
- package/table-builder/directives/tb-filter.directive.d.ts +19 -23
- package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -2
- package/table-builder/pipes/key-display.d.ts +0 -1
- package/table-builder/services/export-to-csv.service.d.ts +0 -3
- package/table-builder/services/table-template-service.d.ts +1 -2
- package/table-builder/services/transform-creator.d.ts +0 -5
- package/utilities/directives/auto-focus.directive.d.ts +1 -2
- package/utilities/directives/conditional-classes.directive.d.ts +1 -2
- package/utilities/directives/dialog.d.ts +2 -5
- package/utilities/directives/styler.d.ts +0 -2
- package/utilities/directives/trim-whitespace.directive.d.ts +0 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import { first, map, tap } from 'rxjs/operators';
|
|
5
|
+
import { TableStore } from '../../classes/table-store';
|
|
5
6
|
import { SortDirection } from '../../interfaces/report-def';
|
|
6
7
|
import { SortMenuComponentStore } from './sort-menu.component-store';
|
|
7
8
|
import { LetDirective } from '@ngrx/component';
|
|
@@ -12,23 +13,19 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
12
13
|
import { MatMenuModule } from '@angular/material/menu';
|
|
13
14
|
import { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "
|
|
16
|
-
import * as i2 from "
|
|
17
|
-
import * as i3 from "@angular/material/
|
|
18
|
-
import * as i4 from "@angular/material/
|
|
19
|
-
import * as i5 from "@angular/
|
|
20
|
-
import * as i6 from "@angular/material/menu";
|
|
21
|
-
import * as i7 from "@angular/cdk/drag-drop";
|
|
16
|
+
import * as i1 from "@angular/material/tooltip";
|
|
17
|
+
import * as i2 from "@angular/material/button";
|
|
18
|
+
import * as i3 from "@angular/material/icon";
|
|
19
|
+
import * as i4 from "@angular/material/menu";
|
|
20
|
+
import * as i5 from "@angular/cdk/drag-drop";
|
|
22
21
|
export class SortMenuComponent {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.tableState.setAllSort(this.store.sorted$.pipe(first()));
|
|
31
|
-
})));
|
|
22
|
+
tableState = inject(TableStore);
|
|
23
|
+
store = inject(SortMenuComponentStore);
|
|
24
|
+
sorted$;
|
|
25
|
+
notSorted$;
|
|
26
|
+
SortDirection = SortDirection;
|
|
27
|
+
dirty$ = new BehaviorSubject(false);
|
|
28
|
+
constructor() {
|
|
32
29
|
this.sorted$ = this.store.sorted$.pipe(map(data => [...data]));
|
|
33
30
|
this.notSorted$ = this.store.notSorted$.pipe(map(data => [...data]));
|
|
34
31
|
}
|
|
@@ -64,18 +61,22 @@ export class SortMenuComponent {
|
|
|
64
61
|
this.store.setSorted(event.previousContainer.data);
|
|
65
62
|
}
|
|
66
63
|
}
|
|
64
|
+
apply = this.store.effect((obs) => obs.pipe(tap(() => {
|
|
65
|
+
this.dirty$.next(false);
|
|
66
|
+
this.tableState.setAllSort(this.store.sorted$.pipe(first()));
|
|
67
|
+
})));
|
|
67
68
|
setDirection(sort) {
|
|
68
69
|
this.dirty$.next(true);
|
|
69
70
|
this.store.setDirection(sort);
|
|
70
71
|
}
|
|
71
|
-
static
|
|
72
|
-
static
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SortMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: SortMenuComponent, isStandalone: true, selector: "tb-sort-menu", providers: [SortMenuComponentStore], ngImport: i0, template: "<ng-container *ngrxLet=\"dirty$ as dirty\">\r\n @if(sorted$ | async; as sorted){\r\n @if (notSorted$ | async; as notSorted) {\r\n <!-- Menu Trigger -->\r\n <span matTooltip=\"Sort\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <!-- Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty){\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length) {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active) {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n \r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n \r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n \r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length){\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active) {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n }\r\n</ng-container>\r\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.list{padding:5px 2px;border-bottom:solid 1px #ccc;color:#000000de;background:#fff}.light-arrow{color:#93b1ea78}.dark-arrow{color:#224e9c}.up-down-button{background-color:#fff;border-radius:30%;border-color:#0ff;padding:1px 1px 0;border-width:.5px;cursor:pointer;height:27px}.mat-icon.up-down-icon{margin-right:0;font-size:20px;font-weight:lighter}.sort-item{display:flex;align-items:center;justify-content:space-between}.up-down-buttons-wrapper{margin-left:2rem}.up-button{margin-right:.3rem}.mat-mdc-menu-item.menu-item,.mat-mdc-menu-item.menu-button{min-height:initial;padding:0 3px;line-height:25px;height:30px}.mat-mdc-menu-item.menu-item{cursor:move}.sorted-name{color:#224e9c;font-size:17px;font-weight:700}.not-sorted-name{color:#93b1ea;font-size:17px;font-weight:700}.apply-border{border:#224e9c solid .5px}.apply-border:hover{background-color:#faebd7}.apply-button-wrapper{display:grid;justify-content:center}.sort-header{font-size:10px;font-style:italic}.tip{padding:0 3px;color:#d3d3d3}.direction-text{font-size:small;font-weight:400}.close-button-wrapper{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
73
74
|
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SortMenuComponent, decorators: [{
|
|
75
76
|
type: Component,
|
|
76
77
|
args: [{ selector: 'tb-sort-menu', providers: [SortMenuComponentStore], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
77
78
|
LetDirective, MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,
|
|
78
79
|
SpaceCasePipe, NgClass, AsyncPipe
|
|
79
80
|
], template: "<ng-container *ngrxLet=\"dirty$ as dirty\">\r\n @if(sorted$ | async; as sorted){\r\n @if (notSorted$ | async; as notSorted) {\r\n <!-- Menu Trigger -->\r\n <span matTooltip=\"Sort\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <!-- Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty){\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length) {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active) {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n \r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n \r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n \r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length){\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active) {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n }\r\n</ng-container>\r\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.list{padding:5px 2px;border-bottom:solid 1px #ccc;color:#000000de;background:#fff}.light-arrow{color:#93b1ea78}.dark-arrow{color:#224e9c}.up-down-button{background-color:#fff;border-radius:30%;border-color:#0ff;padding:1px 1px 0;border-width:.5px;cursor:pointer;height:27px}.mat-icon.up-down-icon{margin-right:0;font-size:20px;font-weight:lighter}.sort-item{display:flex;align-items:center;justify-content:space-between}.up-down-buttons-wrapper{margin-left:2rem}.up-button{margin-right:.3rem}.mat-mdc-menu-item.menu-item,.mat-mdc-menu-item.menu-button{min-height:initial;padding:0 3px;line-height:25px;height:30px}.mat-mdc-menu-item.menu-item{cursor:move}.sorted-name{color:#224e9c;font-size:17px;font-weight:700}.not-sorted-name{color:#93b1ea;font-size:17px;font-weight:700}.apply-border{border:#224e9c solid .5px}.apply-border:hover{background-color:#faebd7}.apply-button-wrapper{display:grid;justify-content:center}.sort-header{font-size:10px;font-style:italic}.tip{padding:0 3px;color:#d3d3d3}.direction-text{font-size:small;font-weight:400}.close-button-wrapper{display:flex;flex-direction:row-reverse}\n"] }]
|
|
80
|
-
}], ctorParameters: () => [
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvc29ydC1tZW51L3NvcnQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3NvcnQtbWVudS9zb3J0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBZ0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2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QkFBc0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLGNBQWM7d0JBQ3ZILGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUztxQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgRHJhZ0Ryb3BNb2R1bGUsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgU29ydE1lbnVDb21wb25lbnRTdG9yZSwgU29ydFdpdGhOYW1lIH0gZnJvbSAnLi9zb3J0LW1lbnUuY29tcG9uZW50LXN0b3JlJ1xyXG5pbXBvcnQgeyBMZXREaXJlY3RpdmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBTcGFjZUNhc2VQaXBlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Yi1zb3J0LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zb3J0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NvcnQtbWVudS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczpbU29ydE1lbnVDb21wb25lbnRTdG9yZV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBMZXREaXJlY3RpdmUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLCBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFNwYWNlQ2FzZVBpcGUsIE5nQ2xhc3MsIEFzeW5jUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNvcnRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICBzb3J0ZWQkOk9ic2VydmFibGU8U29ydFdpdGhOYW1lW10+O1xyXG4gIG5vdFNvcnRlZCQ6T2JzZXJ2YWJsZTxTb3J0V2l0aE5hbWVbXT47XHJcbiAgU29ydERpcmVjdGlvbiA9IFNvcnREaXJlY3Rpb247XHJcbiAgZGlydHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZVN0YXRlOiBUYWJsZVN0b3JlLCBwdWJsaWMgc3RvcmU6IFNvcnRNZW51Q29tcG9uZW50U3RvcmUpIHtcclxuICAgIHRoaXMuc29ydGVkJCA9IHRoaXMuc3RvcmUuc29ydGVkJC5waXBlKG1hcChkYXRhPT5bLi4uZGF0YV0pKTtcclxuICAgIHRoaXMubm90U29ydGVkJCA9IHRoaXMuc3RvcmUubm90U29ydGVkJC5waXBlKG1hcChkYXRhPT5bLi4uZGF0YV0pKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCl7XHJcbiAgICB0aGlzLmRpcnR5JC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuc3RvcmUucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLnN0b3JlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBkcm9wSW50b1NvcnRlZChldmVudDogQ2RrRHJhZ0Ryb3A8U29ydFdpdGhOYW1lW10+KSB7XHJcbiAgICB0aGlzLmRpcnR5JC5uZXh0KHRydWUpO1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcclxuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgICB0aGlzLnN0b3JlLnNldFNvcnRlZChldmVudC5jb250YWluZXIuZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhW2V2ZW50LmN1cnJlbnRJbmRleF0gPSB7Li4uZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XSxkaXJlY3Rpb246U29ydERpcmVjdGlvbi5hc2N9O1xyXG4gICAgICB0aGlzLnN0b3JlLnNldFNvcnRlZChldmVudC5jb250YWluZXIuZGF0YSk7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0Tm90U29ydGVkKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJvcEludG9Ob3RTb3J0ZWQoZXZlbnQ6IENka0RyYWdEcm9wPFNvcnRXaXRoTmFtZVtdPil7XHJcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpcnR5JC5uZXh0KHRydWUpO1xyXG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XSA9IHsuLi5ldmVudC5jb250YWluZXIuZGF0YVtldmVudC5jdXJyZW50SW5kZXhdfTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0Tm90U29ydGVkKGV2ZW50LmNvbnRhaW5lci5kYXRhKTtcclxuICAgICAgdGhpcy5zdG9yZS5zZXRTb3J0ZWQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseSA9IHRoaXMuc3RvcmUuZWZmZWN0KChvYnM6T2JzZXJ2YWJsZTxudWxsPik9PlxyXG4gICAgb2JzLnBpcGUodGFwKCgpPT57XHJcbiAgICAgIHRoaXMuZGlydHkkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnRhYmxlU3RhdGUuc2V0QWxsU29ydCh0aGlzLnN0b3JlLnNvcnRlZCQucGlwZShmaXJzdCgpKSlcclxuICB9KSkpO1xyXG5cclxuICBzZXREaXJlY3Rpb24oc29ydDpTb3J0V2l0aE5hbWUpe1xyXG4gICAgdGhpcy5kaXJ0eSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcmUuc2V0RGlyZWN0aW9uKHNvcnQpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCI8bmctY29udGFpbmVyICpuZ3J4TGV0PVwiZGlydHkkIGFzIGRpcnR5XCI+XHJcbiAgQGlmKHNvcnRlZCQgfCBhc3luYzsgYXMgc29ydGVkKXtcclxuICAgIEBpZiAobm90U29ydGVkJCB8IGFzeW5jOyBhcyBub3RTb3J0ZWQpIHtcclxuICAgICAgPCEtLSBNZW51IFRyaWdnZXIgLS0+XHJcbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJTb3J0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5zd2FwX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiAgY2xhc3M9XCJteS1tYXQtbWVudVwiIChjbG9zZWQpPVwicmVzZXQoKVwiPlxyXG4gICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1lbnUtYnV0dG9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UtYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gbWF0VG9vbHRpcD1cIkNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYoZGlydHkpe1xyXG4gICAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJVbmRvXCIgc3RvcC1wcm9wYWdhdGlvbiAoY2xpY2spPVwicmVzZXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnVuZG88L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEFwcGx5IEJ1dHRvbiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHkobnVsbClcIlxyXG4gICAgICAgICAgICBzdG9wLXByb3BhZ2F0aW9uIFtjbGFzcy5hcHBseS1ib3JkZXJdPVwiZGlydHlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRpcnR5XCI+XHJcbiAgICAgICAgICAgICAgQXBwbHkgQGlmIChkaXJ0eSkgeyBVbnNhdmVkIENoYW5nZXMgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVmYXVsdCBTb3J0aW5nIFRleHQgLS0+XHJcbiAgICAgICAgQGlmICghc29ydGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpcFwiID5cclxuICAgICAgICAgICAgU29ydGluZyBMaXN0XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDwhLS0gU29ydGVkIE1lbnUgTGlzdCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgI3NvcnRlZEdyb3VwPVwiY2RrRHJvcExpc3RcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW25vdFNvcnRlZEdyb3VwXVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInNvcnRlZFwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvU29ydGVkKCRldmVudClcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1lbnUgSXRlbSBXcmFwcGVyIC0tPlxyXG4gICAgICAgICAgQGZvciAoc29ydCBvZiBzb3J0ZWQ7IHRyYWNrIHNvcnQuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDwhLS0gTWVudSBJdGVtIEhlYWRlcnMgLS0+XHJcbiAgICAgICAgICAgIEBpZiAoc29ydGVkLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIHNvcnQtaGVhZGVyXCI+e3skaW5kZXggPT09IDAgPyAnRmlyc3QgQnknIDogJ1RoZW4gQnknfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgPCEtLSBNZW51IEl0ZW0gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSAgIGNka0RyYWcgY2xhc3M9XCJtZW51LWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvcnRlZC1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7c29ydC5kaXNwbGF5TmFtZSB8fCAoc29ydC5hY3RpdmUgfCBzcGFjZUNhc2UpfX1cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXJlY3Rpb24tdGV4dFwiPnt7c29ydC5kaXJlY3Rpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICAgIDwhLS0gU29ydCBEaXJlY3Rpb24gQnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cC1kb3duLWJ1dHRvbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICBjbGFzcz1cInVwLWRvd24tYnV0dG9uIHVwLWJ1dHRvblwiIHN0b3AtcHJvcGFnYXRpb25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERpcmVjdGlvbih7YWN0aXZlOnNvcnQuYWN0aXZlLGRpcmVjdGlvbjpTb3J0RGlyZWN0aW9uLmFzYyxkaXNwbGF5TmFtZTpzb3J0LmRpc3BsYXlOYW1lfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwic29ydC5kaXJlY3Rpb24gIT09IFNvcnREaXJlY3Rpb24uYXNjID8gJ2xpZ2h0LWFycm93JyA6ICdkYXJrLWFycm93J1wiIGNsYXNzPVwidXAtZG93bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dfdXB3YXJkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ1cC1kb3duLWJ1dHRvblwiIHN0b3AtcHJvcGFnYXRpb25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERpcmVjdGlvbih7YWN0aXZlOnNvcnQuYWN0aXZlLGRpcmVjdGlvbjpTb3J0RGlyZWN0aW9uLmRlc2MsZGlzcGxheU5hbWU6c29ydC5kaXNwbGF5TmFtZX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInNvcnQuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLmFzYyA/ICdsaWdodC1hcnJvdycgOiAnZGFyay1hcnJvdydcIiBjbGFzcz1cInVwLWRvd24taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJyb3dfZG93bndhcmRcclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVmYXVsdCBOb3QgU29ydGVkIFRleHQgLS0+XHJcbiAgICAgICAgQGlmKCFub3RTb3J0ZWQubGVuZ3RoKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXBcIiA+XHJcbiAgICAgICAgICAgIE5vdCBTb3J0ZWQgTGlzdFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIE5vdCBTb3J0ZWQgTWVudSBMaXN0IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0XCJcclxuICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAjbm90U29ydGVkR3JvdXA9XCJjZGtEcm9wTGlzdFwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbc29ydGVkR3JvdXBdXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibm90U29ydGVkXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9Ob3RTb3J0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgQGZvciAoc29ydCBvZiBub3RTb3J0ZWQ7IHRyYWNrIHNvcnQuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1lbnUtaXRlbVwiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3Qtc29ydGVkLW5hbWVcIj57e3NvcnQuZGlzcGxheU5hbWUgfHwgKHNvcnQuYWN0aXZlIHwgc3BhY2VDYXNlKX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIH1cclxuICB9XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
81
|
+
}], ctorParameters: () => [] });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvc29ydC1tZW51L3NvcnQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3NvcnQtbWVudS9zb3J0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFnQixNQUFNLDZCQUE2QixDQUFBO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdC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LGNBQWMsdy9CQUN2SCxhQUFhLGtEQUFFLE9BQU8sK0VBQUUsU0FBUzs7MkZBR3hCLGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDRSxjQUFjLGFBR2QsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLGNBQWM7d0JBQ3ZILGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUztxQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgRHJhZ0Ryb3BNb2R1bGUsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBTb3J0TWVudUNvbXBvbmVudFN0b3JlLCBTb3J0V2l0aE5hbWUgfSBmcm9tICcuL3NvcnQtbWVudS5jb21wb25lbnQtc3RvcmUnXHJcbmltcG9ydCB7IExldERpcmVjdGl2ZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLXNvcnQtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NvcnQtbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc29ydC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOltTb3J0TWVudUNvbXBvbmVudFN0b3JlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIExldERpcmVjdGl2ZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgU3BhY2VDYXNlUGlwZSwgTmdDbGFzcywgQXN5bmNQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU29ydE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgcHJpdmF0ZSB0YWJsZVN0YXRlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChTb3J0TWVudUNvbXBvbmVudFN0b3JlKTtcclxuXHJcblxyXG4gIHNvcnRlZCQ6T2JzZXJ2YWJsZTxTb3J0V2l0aE5hbWVbXT47XHJcbiAgbm90U29ydGVkJDpPYnNlcnZhYmxlPFNvcnRXaXRoTmFtZVtdPjtcclxuICBTb3J0RGlyZWN0aW9uID0gU29ydERpcmVjdGlvbjtcclxuICBkaXJ0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc29ydGVkJCA9IHRoaXMuc3RvcmUuc29ydGVkJC5waXBlKG1hcChkYXRhPT5bLi4uZGF0YV0pKTtcclxuICAgIHRoaXMubm90U29ydGVkJCA9IHRoaXMuc3RvcmUubm90U29ydGVkJC5waXBlKG1hcChkYXRhPT5bLi4uZGF0YV0pKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCl7XHJcbiAgICB0aGlzLmRpcnR5JC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuc3RvcmUucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLnN0b3JlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBkcm9wSW50b1NvcnRlZChldmVudDogQ2RrRHJhZ0Ryb3A8U29ydFdpdGhOYW1lW10+KSB7XHJcbiAgICB0aGlzLmRpcnR5JC5uZXh0KHRydWUpO1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcclxuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgICB0aGlzLnN0b3JlLnNldFNvcnRlZChldmVudC5jb250YWluZXIuZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhW2V2ZW50LmN1cnJlbnRJbmRleF0gPSB7Li4uZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XSxkaXJlY3Rpb246U29ydERpcmVjdGlvbi5hc2N9O1xyXG4gICAgICB0aGlzLnN0b3JlLnNldFNvcnRlZChldmVudC5jb250YWluZXIuZGF0YSk7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0Tm90U29ydGVkKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJvcEludG9Ob3RTb3J0ZWQoZXZlbnQ6IENka0RyYWdEcm9wPFNvcnRXaXRoTmFtZVtdPil7XHJcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpcnR5JC5uZXh0KHRydWUpO1xyXG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XSA9IHsuLi5ldmVudC5jb250YWluZXIuZGF0YVtldmVudC5jdXJyZW50SW5kZXhdfTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0Tm90U29ydGVkKGV2ZW50LmNvbnRhaW5lci5kYXRhKTtcclxuICAgICAgdGhpcy5zdG9yZS5zZXRTb3J0ZWQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseSA9IHRoaXMuc3RvcmUuZWZmZWN0KChvYnM6T2JzZXJ2YWJsZTxudWxsPik9PlxyXG4gICAgb2JzLnBpcGUodGFwKCgpPT57XHJcbiAgICAgIHRoaXMuZGlydHkkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnRhYmxlU3RhdGUuc2V0QWxsU29ydCh0aGlzLnN0b3JlLnNvcnRlZCQucGlwZShmaXJzdCgpKSlcclxuICB9KSkpO1xyXG5cclxuICBzZXREaXJlY3Rpb24oc29ydDpTb3J0V2l0aE5hbWUpe1xyXG4gICAgdGhpcy5kaXJ0eSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcmUuc2V0RGlyZWN0aW9uKHNvcnQpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCI8bmctY29udGFpbmVyICpuZ3J4TGV0PVwiZGlydHkkIGFzIGRpcnR5XCI+XHJcbiAgQGlmKHNvcnRlZCQgfCBhc3luYzsgYXMgc29ydGVkKXtcclxuICAgIEBpZiAobm90U29ydGVkJCB8IGFzeW5jOyBhcyBub3RTb3J0ZWQpIHtcclxuICAgICAgPCEtLSBNZW51IFRyaWdnZXIgLS0+XHJcbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJTb3J0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5zd2FwX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiAgY2xhc3M9XCJteS1tYXQtbWVudVwiIChjbG9zZWQpPVwicmVzZXQoKVwiPlxyXG4gICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1lbnUtYnV0dG9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UtYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gbWF0VG9vbHRpcD1cIkNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYoZGlydHkpe1xyXG4gICAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJVbmRvXCIgc3RvcC1wcm9wYWdhdGlvbiAoY2xpY2spPVwicmVzZXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnVuZG88L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEFwcGx5IEJ1dHRvbiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHkobnVsbClcIlxyXG4gICAgICAgICAgICBzdG9wLXByb3BhZ2F0aW9uIFtjbGFzcy5hcHBseS1ib3JkZXJdPVwiZGlydHlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRpcnR5XCI+XHJcbiAgICAgICAgICAgICAgQXBwbHkgQGlmIChkaXJ0eSkgeyBVbnNhdmVkIENoYW5nZXMgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVmYXVsdCBTb3J0aW5nIFRleHQgLS0+XHJcbiAgICAgICAgQGlmICghc29ydGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpcFwiID5cclxuICAgICAgICAgICAgU29ydGluZyBMaXN0XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDwhLS0gU29ydGVkIE1lbnUgTGlzdCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgI3NvcnRlZEdyb3VwPVwiY2RrRHJvcExpc3RcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW25vdFNvcnRlZEdyb3VwXVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInNvcnRlZFwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvU29ydGVkKCRldmVudClcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1lbnUgSXRlbSBXcmFwcGVyIC0tPlxyXG4gICAgICAgICAgQGZvciAoc29ydCBvZiBzb3J0ZWQ7IHRyYWNrIHNvcnQuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDwhLS0gTWVudSBJdGVtIEhlYWRlcnMgLS0+XHJcbiAgICAgICAgICAgIEBpZiAoc29ydGVkLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIHNvcnQtaGVhZGVyXCI+e3skaW5kZXggPT09IDAgPyAnRmlyc3QgQnknIDogJ1RoZW4gQnknfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgPCEtLSBNZW51IEl0ZW0gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSAgIGNka0RyYWcgY2xhc3M9XCJtZW51LWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvcnRlZC1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7c29ydC5kaXNwbGF5TmFtZSB8fCAoc29ydC5hY3RpdmUgfCBzcGFjZUNhc2UpfX1cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXJlY3Rpb24tdGV4dFwiPnt7c29ydC5kaXJlY3Rpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICAgIDwhLS0gU29ydCBEaXJlY3Rpb24gQnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cC1kb3duLWJ1dHRvbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICBjbGFzcz1cInVwLWRvd24tYnV0dG9uIHVwLWJ1dHRvblwiIHN0b3AtcHJvcGFnYXRpb25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERpcmVjdGlvbih7YWN0aXZlOnNvcnQuYWN0aXZlLGRpcmVjdGlvbjpTb3J0RGlyZWN0aW9uLmFzYyxkaXNwbGF5TmFtZTpzb3J0LmRpc3BsYXlOYW1lfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwic29ydC5kaXJlY3Rpb24gIT09IFNvcnREaXJlY3Rpb24uYXNjID8gJ2xpZ2h0LWFycm93JyA6ICdkYXJrLWFycm93J1wiIGNsYXNzPVwidXAtZG93bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dfdXB3YXJkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ1cC1kb3duLWJ1dHRvblwiIHN0b3AtcHJvcGFnYXRpb25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERpcmVjdGlvbih7YWN0aXZlOnNvcnQuYWN0aXZlLGRpcmVjdGlvbjpTb3J0RGlyZWN0aW9uLmRlc2MsZGlzcGxheU5hbWU6c29ydC5kaXNwbGF5TmFtZX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInNvcnQuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLmFzYyA/ICdsaWdodC1hcnJvdycgOiAnZGFyay1hcnJvdydcIiBjbGFzcz1cInVwLWRvd24taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJyb3dfZG93bndhcmRcclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVmYXVsdCBOb3QgU29ydGVkIFRleHQgLS0+XHJcbiAgICAgICAgQGlmKCFub3RTb3J0ZWQubGVuZ3RoKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXBcIiA+XHJcbiAgICAgICAgICAgIE5vdCBTb3J0ZWQgTGlzdFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIE5vdCBTb3J0ZWQgTWVudSBMaXN0IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0XCJcclxuICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAjbm90U29ydGVkR3JvdXA9XCJjZGtEcm9wTGlzdFwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbc29ydGVkR3JvdXBdXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibm90U29ydGVkXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9Ob3RTb3J0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgQGZvciAoc29ydCBvZiBub3RTb3J0ZWQ7IHRyYWNrIHNvcnQuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1lbnUtaXRlbVwiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3Qtc29ydGVkLW5hbWVcIj57e3NvcnQuZGlzcGxheU5hbWUgfHwgKHNvcnQuYWN0aXZlIHwgc3BhY2VDYXNlKX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIH1cclxuICB9XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|