cps-ui-kit 0.36.0 → 0.38.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.
- package/esm2020/lib/base_components/cps-tree-dropdown-base.component.mjs +22 -3
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +15 -9
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +2 -2
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +2 -2
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +25 -9
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +2 -2
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +2 -2
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +2 -2
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +3 -3
- package/esm2020/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +2 -2
- package/esm2020/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +2 -2
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +15 -9
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +61 -9
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +2 -2
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +5 -4
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +5 -5
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +2 -2
- package/esm2020/lib/directives/internal/click-outside.directive.mjs +45 -0
- package/esm2020/lib/pipes/internal/check-option-selected.pipe.mjs +24 -0
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +25 -0
- package/esm2020/lib/pipes/internal/label-by-value.pipe.mjs +16 -0
- package/esm2020/lib/utils/internal/position-utils.mjs +12 -0
- package/esm2020/lib/utils/internal/size-utils.mjs +22 -0
- package/fesm2015/cps-ui-kit.mjs +135 -31
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +134 -29
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/base_components/cps-tree-dropdown-base.component.d.ts +1 -0
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +2 -1
- package/lib/components/cps-table/cps-table.component.d.ts +15 -1
- package/lib/utils/internal/position-utils.d.ts +1 -0
- package/package.json +1 -1
- package/esm2020/lib/directives/click-outside.directive.mjs +0 -45
- package/esm2020/lib/pipes/check-option-selected.pipe.mjs +0 -24
- package/esm2020/lib/pipes/combine-labels.pipe.mjs +0 -25
- package/esm2020/lib/pipes/label-by-value.pipe.mjs +0 -16
- package/esm2020/lib/utils/size-utils.mjs +0 -22
- /package/lib/directives/{click-outside.directive.d.ts → internal/click-outside.directive.d.ts} +0 -0
- /package/lib/pipes/{check-option-selected.pipe.d.ts → internal/check-option-selected.pipe.d.ts} +0 -0
- /package/lib/pipes/{combine-labels.pipe.d.ts → internal/combine-labels.pipe.d.ts} +0 -0
- /package/lib/pipes/{label-by-value.pipe.d.ts → internal/label-by-value.pipe.d.ts} +0 -0
- /package/lib/utils/{size-utils.d.ts → internal/size-utils.d.ts} +0 -0
|
@@ -5,7 +5,7 @@ import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
|
5
5
|
import { CpsChipComponent } from '../cps-chip/cps-chip.component';
|
|
6
6
|
import { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';
|
|
7
7
|
import { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';
|
|
8
|
-
import { ClickOutsideDirective } from '../../directives/click-outside.directive';
|
|
8
|
+
import { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';
|
|
9
9
|
import { find, isEqual } from 'lodash-es';
|
|
10
10
|
import { TreeModule } from 'primeng/tree';
|
|
11
11
|
import { CpsTreeDropdownBaseComponent } from '../../base_components/cps-tree-dropdown-base.component';
|
|
@@ -30,6 +30,7 @@ export class CpsTreeAutocompleteComponent extends CpsTreeDropdownBaseComponent {
|
|
|
30
30
|
ngAfterViewInit() {
|
|
31
31
|
this.treeContainer = this.treeAutocompleteContainer;
|
|
32
32
|
this.treeList = this.treeAutocompleteList;
|
|
33
|
+
this.isAutocomplete = true;
|
|
33
34
|
super.ngAfterViewInit();
|
|
34
35
|
}
|
|
35
36
|
ngOnDestroy() {
|
|
@@ -199,7 +200,7 @@ export class CpsTreeAutocompleteComponent extends CpsTreeDropdownBaseComponent {
|
|
|
199
200
|
}
|
|
200
201
|
}
|
|
201
202
|
CpsTreeAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTreeAutocompleteComponent, deps: [{ token: i1.NgControl, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
202
|
-
CpsTreeAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTreeAutocompleteComponent, isStandalone: true, selector: "cps-tree-autocomplete", inputs: { emptyMessage: "emptyMessage" }, viewQueries: [{ propertyName: "treeAutocompleteContainer", first: true, predicate: ["treeAutocompleteContainer"], descendants: true }, { propertyName: "treeAutocompleteList", first: true, predicate: ["treeAutocompleteList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n", styles: [":host{display:flex}:host .cps-treeautocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;display:grid}:host .cps-treeautocomplete-container{position:relative}:host .cps-treeautocomplete-container .cps-treeautocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-treeautocomplete-container.focused .cps-treeautocomplete-box{background:white!important}:host .cps-treeautocomplete.active .cps-treeautocomplete-options{display:block}:host .cps-treeautocomplete.active .cps-treeautocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete.active .cps-treeautocomplete-box .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem}:host .cps-treeautocomplete .cps-treeautocomplete-label .cps-treeautocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-treeautocomplete .persistent-clear .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container.focused .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container:hover .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-treeautocomplete .cps-treeautocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-text-lightest);transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-treeautocomplete .cps-treeautocomplete-box-input{padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-treeautocomplete .cps-treeautocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;margin-top:3px;margin-bottom:3px;position:relative}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px;display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:2.5px;padding-right:4px;height:24px}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons{display:flex}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-treeautocomplete.active .cps-treeautocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-treeautocomplete .cps-treeautocomplete-options{z-index:1001;position:absolute;width:100%;background:white;box-shadow:0 5px 20px #0000000d;border-radius:4px;overflow-x:hidden;display:none;max-height:242px;overflow-y:auto;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree{border:1px solid #dee2e6;background:#ffffff;color:var(--cps-color-text-dark);padding:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option{margin-right:8px;display:flex;align-items:center;justify-content:space-between}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-left{display:flex;align-items:center;margin-right:8px}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-info{margin-left:6px;color:var(--cps-color-text-light)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option .virtual-row{white-space:nowrap}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-wrapper{overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content{transition:box-shadow .2s;padding:.25rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content{display:flex;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content .p-treenode-label{width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler{margin-right:.5rem;width:2rem;height:2rem;color:var(--cps-color-text-light);border:0 none;background:transparent;border-radius:50%;transition:background-color .2s,color .2s,box-shadow .2s}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover{background:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:focus{outline:0 none;outline-offset:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):focus{background-color:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight{background:#efe4e7;color:var(--cps-color-calm);font-weight:600}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .cps-treeautocomplete-option-check{opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler{outline:0 none;outline-offset:0;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler :hover{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable>.p-treenode-content:hover .p-tree-toggler{color:var(--cps-color-calm)!important}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-treenode-children{padding:0 0 0 1rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-children{margin:0;padding:0;list-style-type:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-empty-message{padding:11px;font-size:16px;cursor:default}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable{cursor:pointer;-webkit-user-select:none;user-select:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-directory-elem{font-weight:700;font-size:16px}:host .cps-treeautocomplete .cps-treeautocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete .cps-treeautocomplete-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete.disabled{pointer-events:none}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box{background:#f7f7f7}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .text-group,:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-label{color:var(--cps-color-text-mild)}:host .cps-treeautocomplete.error .cps-treeautocomplete-box{border-color:#c33!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i3.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["skipTargets"], outputs: ["clickOutside"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }] });
|
|
203
|
+
CpsTreeAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTreeAutocompleteComponent, isStandalone: true, selector: "cps-tree-autocomplete", inputs: { emptyMessage: "emptyMessage" }, viewQueries: [{ propertyName: "treeAutocompleteContainer", first: true, predicate: ["treeAutocompleteContainer"], descendants: true }, { propertyName: "treeAutocompleteList", first: true, predicate: ["treeAutocompleteList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n", styles: [":host{display:flex}:host .cps-treeautocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;display:grid}:host .cps-treeautocomplete-container{position:relative}:host .cps-treeautocomplete-container .cps-treeautocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-treeautocomplete-container.focused .cps-treeautocomplete-box{background:white!important}:host .cps-treeautocomplete.active .cps-treeautocomplete-options{display:block}:host .cps-treeautocomplete.active .cps-treeautocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete.active .cps-treeautocomplete-box .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete.top-open .cps-treeautocomplete-options{box-shadow:0 -2px 4px -1px #0003,0 1px 5px #00000024,0 1px 10px #0000001f;bottom:39px}:host .cps-treeautocomplete .cps-treeautocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem}:host .cps-treeautocomplete .cps-treeautocomplete-label .cps-treeautocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-treeautocomplete .persistent-clear .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container.focused .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container:hover .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-treeautocomplete .cps-treeautocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-text-lightest);transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-treeautocomplete .cps-treeautocomplete-box-input{padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-treeautocomplete .cps-treeautocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;margin-top:3px;margin-bottom:3px;position:relative}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px;display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:2.5px;padding-right:4px;height:24px}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons{display:flex}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-treeautocomplete.active .cps-treeautocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-treeautocomplete .cps-treeautocomplete-options{z-index:1001;position:absolute;width:100%;background:white;box-shadow:0 5px 20px #0000000d;border-radius:4px;overflow-x:hidden;display:none;max-height:242px;overflow-y:auto;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree{border:1px solid #dee2e6;background:#ffffff;color:var(--cps-color-text-dark);padding:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option{margin-right:8px;display:flex;align-items:center;justify-content:space-between}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-left{display:flex;align-items:center;margin-right:8px}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-info{margin-left:6px;color:var(--cps-color-text-light)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option .virtual-row{white-space:nowrap}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-wrapper{overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content{transition:box-shadow .2s;padding:.25rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content{display:flex;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content .p-treenode-label{width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler{margin-right:.5rem;width:2rem;height:2rem;color:var(--cps-color-text-light);border:0 none;background:transparent;border-radius:50%;transition:background-color .2s,color .2s,box-shadow .2s}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover{background:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:focus{outline:0 none;outline-offset:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):focus{background-color:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight{background:#efe4e7;color:var(--cps-color-calm);font-weight:600}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .cps-treeautocomplete-option-check{opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler{outline:0 none;outline-offset:0;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler :hover{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable>.p-treenode-content:hover .p-tree-toggler{color:var(--cps-color-calm)!important}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-treenode-children{padding:0 0 0 1rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-children{margin:0;padding:0;list-style-type:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-empty-message{padding:11px;font-size:16px;cursor:default}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable{cursor:pointer;-webkit-user-select:none;user-select:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-directory-elem{font-weight:700;font-size:16px}:host .cps-treeautocomplete .cps-treeautocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete .cps-treeautocomplete-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete.disabled{pointer-events:none}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box{background:#f7f7f7}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .text-group,:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-label{color:var(--cps-color-text-mild)}:host .cps-treeautocomplete.error .cps-treeautocomplete-box{border-color:#c33!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i3.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["skipTargets"], outputs: ["clickOutside"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }] });
|
|
203
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTreeAutocompleteComponent, decorators: [{
|
|
204
205
|
type: Component,
|
|
205
206
|
args: [{ standalone: true, imports: [
|
|
@@ -211,7 +212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
211
212
|
CpsChipComponent,
|
|
212
213
|
CpsProgressLinearComponent,
|
|
213
214
|
CpsInfoCircleComponent
|
|
214
|
-
], selector: 'cps-tree-autocomplete', template: "<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n", styles: [":host{display:flex}:host .cps-treeautocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;display:grid}:host .cps-treeautocomplete-container{position:relative}:host .cps-treeautocomplete-container .cps-treeautocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-treeautocomplete-container.focused .cps-treeautocomplete-box{background:white!important}:host .cps-treeautocomplete.active .cps-treeautocomplete-options{display:block}:host .cps-treeautocomplete.active .cps-treeautocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete.active .cps-treeautocomplete-box .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem}:host .cps-treeautocomplete .cps-treeautocomplete-label .cps-treeautocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-treeautocomplete .persistent-clear .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container.focused .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container:hover .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-treeautocomplete .cps-treeautocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-text-lightest);transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-treeautocomplete .cps-treeautocomplete-box-input{padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-treeautocomplete .cps-treeautocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;margin-top:3px;margin-bottom:3px;position:relative}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px;display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:2.5px;padding-right:4px;height:24px}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons{display:flex}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-treeautocomplete.active .cps-treeautocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-treeautocomplete .cps-treeautocomplete-options{z-index:1001;position:absolute;width:100%;background:white;box-shadow:0 5px 20px #0000000d;border-radius:4px;overflow-x:hidden;display:none;max-height:242px;overflow-y:auto;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree{border:1px solid #dee2e6;background:#ffffff;color:var(--cps-color-text-dark);padding:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option{margin-right:8px;display:flex;align-items:center;justify-content:space-between}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-left{display:flex;align-items:center;margin-right:8px}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-info{margin-left:6px;color:var(--cps-color-text-light)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option .virtual-row{white-space:nowrap}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-wrapper{overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content{transition:box-shadow .2s;padding:.25rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content{display:flex;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content .p-treenode-label{width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler{margin-right:.5rem;width:2rem;height:2rem;color:var(--cps-color-text-light);border:0 none;background:transparent;border-radius:50%;transition:background-color .2s,color .2s,box-shadow .2s}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover{background:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:focus{outline:0 none;outline-offset:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):focus{background-color:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight{background:#efe4e7;color:var(--cps-color-calm);font-weight:600}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .cps-treeautocomplete-option-check{opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler{outline:0 none;outline-offset:0;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler :hover{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable>.p-treenode-content:hover .p-tree-toggler{color:var(--cps-color-calm)!important}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-treenode-children{padding:0 0 0 1rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-children{margin:0;padding:0;list-style-type:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-empty-message{padding:11px;font-size:16px;cursor:default}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable{cursor:pointer;-webkit-user-select:none;user-select:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-directory-elem{font-weight:700;font-size:16px}:host .cps-treeautocomplete .cps-treeautocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete .cps-treeautocomplete-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete.disabled{pointer-events:none}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box{background:#f7f7f7}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .text-group,:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-label{color:var(--cps-color-text-mild)}:host .cps-treeautocomplete.error .cps-treeautocomplete-box{border-color:#c33!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}\n"] }]
|
|
215
|
+
], selector: 'cps-tree-autocomplete', template: "<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n", styles: [":host{display:flex}:host .cps-treeautocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;display:grid}:host .cps-treeautocomplete-container{position:relative}:host .cps-treeautocomplete-container .cps-treeautocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-treeautocomplete-container.focused .cps-treeautocomplete-box{background:white!important}:host .cps-treeautocomplete.active .cps-treeautocomplete-options{display:block}:host .cps-treeautocomplete.active .cps-treeautocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete.active .cps-treeautocomplete-box .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete.top-open .cps-treeautocomplete-options{box-shadow:0 -2px 4px -1px #0003,0 1px 5px #00000024,0 1px 10px #0000001f;bottom:39px}:host .cps-treeautocomplete .cps-treeautocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem}:host .cps-treeautocomplete .cps-treeautocomplete-label .cps-treeautocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-treeautocomplete .persistent-clear .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container.focused .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon,:host .cps-treeautocomplete .cps-treeautocomplete-container:hover .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-treeautocomplete .cps-treeautocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-text-lightest);transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-treeautocomplete .cps-treeautocomplete-box-input{padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-treeautocomplete .cps-treeautocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;margin-top:3px;margin-bottom:3px;position:relative}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px;display:inline-flex;flex-wrap:wrap}:host .cps-treeautocomplete .cps-treeautocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:2.5px;padding-right:4px;height:24px}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box:hover .cps-treeautocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons{display:flex}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-treeautocomplete .cps-treeautocomplete-box .cps-treeautocomplete-box-icons .cps-treeautocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-treeautocomplete.active .cps-treeautocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-treeautocomplete .cps-treeautocomplete-options{z-index:1001;position:absolute;width:100%;background:white;box-shadow:0 5px 20px #0000000d;border-radius:4px;overflow-x:hidden;display:none;max-height:242px;overflow-y:auto;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree{border:1px solid #dee2e6;background:#ffffff;color:var(--cps-color-text-dark);padding:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option{margin-right:8px;display:flex;align-items:center;justify-content:space-between}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-left{display:flex;align-items:center;margin-right:8px}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option-info{margin-left:6px;color:var(--cps-color-text-light)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-option .virtual-row{white-space:nowrap}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-wrapper{overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content{transition:box-shadow .2s;padding:.25rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content{display:flex;align-items:center}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-content .p-treenode-label{width:100%}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler{margin-right:.5rem;width:2rem;height:2rem;color:var(--cps-color-text-light);border:0 none;background:transparent;border-radius:50%;transition:background-color .2s,color .2s,box-shadow .2s}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover{background:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:focus{outline:0 none;outline-offset:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):focus{background-color:#f8f4f5}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight{background:#efe4e7;color:var(--cps-color-calm);font-weight:600}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .cps-treeautocomplete-option-check{opacity:1}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler{outline:0 none;outline-offset:0;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-toggler :hover{color:var(--cps-color-calm)}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable>.p-treenode-content:hover .p-tree-toggler{color:var(--cps-color-calm)!important}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree .p-treenode-children{padding:0 0 0 1rem}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-treenode-children{margin:0;padding:0;list-style-type:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .p-tree-empty-message{padding:11px;font-size:16px;cursor:default}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-tree-node-fully-expandable{cursor:pointer;-webkit-user-select:none;user-select:none}:host .cps-treeautocomplete .cps-treeautocomplete-options ::ng-deep .cps-treeautocomplete-directory-elem{font-weight:700;font-size:16px}:host .cps-treeautocomplete .cps-treeautocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete .cps-treeautocomplete-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-treeautocomplete.disabled{pointer-events:none}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box{background:#f7f7f7}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .text-group,:host .cps-treeautocomplete.disabled .cps-treeautocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-treeautocomplete.disabled .cps-treeautocomplete-label{color:var(--cps-color-text-mild)}:host .cps-treeautocomplete.error .cps-treeautocomplete-box{border-color:#c33!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}\n"] }]
|
|
215
216
|
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
216
217
|
type: Optional
|
|
217
218
|
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { emptyMessage: [{
|
|
@@ -223,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
223
224
|
type: ViewChild,
|
|
224
225
|
args: ['treeAutocompleteList']
|
|
225
226
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRyZWUtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS9jcHMtdHJlZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtYXV0b2NvbXBsZXRlL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7O0FBa0J0RyxNQUFNLE9BQU8sNEJBQ1gsU0FBUSw0QkFBNEI7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TWIsNEJBQTRCO2tCQWhCeEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixzQkFBc0I7cUJBQ3ZCLFlBQ1MsdUJBQXVCOzswQkFvQjlCLFFBQVE7NEVBWkYsWUFBWTtzQkFBcEIsS0FBSztnQkFHTix5QkFBeUI7c0JBRHhCLFNBQVM7dUJBQUMsMkJBQTJCO2dCQUdILG9CQUFvQjtzQkFBdEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzQ2hpcENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1jaGlwL2Nwcy1jaGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1wcm9ncmVzcy1saW5lYXIvY3BzLXByb2dyZXNzLWxpbmVhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSW5mb0NpcmNsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbmZvLWNpcmNsZS9jcHMtaW5mby1jaXJjbGUuY29tcG9uZW50JztcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZmluZCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBUcmVlLCBUcmVlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90cmVlJztcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ3BzVHJlZURyb3Bkb3duQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2VfY29tcG9uZW50cy9jcHMtdHJlZS1kcm9wZG93bi1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzQ2hpcENvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50XG4gIF0sXG4gIHNlbGVjdG9yOiAnY3BzLXRyZWUtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc1RyZWVBdXRvY29tcGxldGVDb21wb25lbnRcbiAgZXh0ZW5kcyBDcHNUcmVlRHJvcGRvd25CYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWVBdXRvY29tcGxldGVDb250YWluZXInKVxuICB0cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0cmVlQXV0b2NvbXBsZXRlTGlzdCcpIHRyZWVBdXRvY29tcGxldGVMaXN0ITogVHJlZTtcblxuICBpbnB1dFRleHQgPSAnJztcbiAgYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcbiAgYWN0aXZlU2luZ2xlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIG92ZXJyaWRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKGNvbnRyb2wsIGNkUmVmKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50cmVlQ29udGFpbmVyID0gdGhpcy50cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyO1xuICAgIHRoaXMudHJlZUxpc3QgPSB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0O1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uU2VsZWN0Tm9kZSgpIHtcbiAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHN1cGVyLm9uU2VsZWN0Tm9kZSgpO1xuICB9XG5cbiAgb25DbGlja091dHNpZGUoZGQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fY2xvc2VBbmRDbGVhcihkZCk7XG4gIH1cblxuICBvbkJveENsaWNrKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5hY3RpdmVTaW5nbGUgPSB0cnVlO1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl9nZXRWYWx1ZUxhYmVsKCk7XG4gICAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXMoKTtcbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyS2V5RG93bihldmVudDogYW55LCBkZDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAvLyBlc2NhcGVcbiAgICBpZiAoY29kZSA9PT0gMjcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIoZGQpO1xuICAgIH1cbiAgICAvLyBjbGljayBkb3duIGFycm93XG4gICAgZWxzZSBpZiAoY29kZSA9PT0gNDApIHtcbiAgICAgIHRoaXMuaW5pdEFycm93c05hdmlnYXRvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRLZXlEb3duKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAvLyBiYWNrc3BhY2VcbiAgICBpZiAoY29kZSA9PT0gOCkge1xuICAgICAgdGhpcy5fcmVtb3ZlTGFzdFZhbHVlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgLy8gZW50ZXJcbiAgICBlbHNlIGlmIChjb2RlID09PSAxMykge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbkZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5fY29uZmlybUlucHV0KGV2ZW50Py50YXJnZXQ/LnZhbHVlIHx8ICcnKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgcmVtb3ZlKG9wdGlvbjogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmUob3B0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0KG9wdGlvbjogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhhcnJheTogYW55W10sIHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyYXkgPyAhIWZpbmQoYXJyYXksIChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIHZhbCkpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmIChpbmNsdWRlcyh0aGlzLnRyZWVTZWxlY3Rpb24sIG9wdGlvbikpIHtcbiAgICAgICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdGhpcy50cmVlU2VsZWN0aW9uLmZpbHRlcihcbiAgICAgICAgICAodjogVHJlZU5vZGUpID0+ICFpc0VxdWFsKHYsIG9wdGlvbilcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbi5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IG9wdGlvbjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHRoaXMudHJlZVNlbGVjdGlvbikpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBvdmVycmlkZSBjbGVhcihkZDogSFRNTEVsZW1lbnQsIGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5jbGVhcihkZCwgZXZlbnQpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudFxuICAgICAgPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpXG4gICAgICA/LmZvY3VzKCk7XG4gIH1cblxuICBvdmVycmlkZSBmb2N1cygpIHtcbiAgICBzdXBlci5mb2N1cygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgb25GaWx0ZXJPcHRpb25zKCkge1xuICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMoZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5pc09wZW5lZCkge1xuICAgICAgdGhpcy50b2dnbGVPcHRpb25zKHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCwgdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcbiAgICBjb25zdCBzZWFyY2hWYWwgPSAoZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXNlYXJjaFZhbCkgdGhpcy50cmVlQXV0b2NvbXBsZXRlTGlzdC5yZXNldEZpbHRlcigpO1xuICAgIGVsc2UgdGhpcy50cmVlQXV0b2NvbXBsZXRlTGlzdC5fZmlsdGVyKHNlYXJjaFZhbCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZUxhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVTZWxlY3Rpb24/LmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYXJJbnB1dCgpIHtcbiAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICB0aGlzLmFjdGl2ZVNpbmdsZSA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbmRDbGVhcihkZDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gICAgdGhpcy50b2dnbGVPcHRpb25zKGRkLCBmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maXJtSW5wdXQoc2VhcmNoVmFsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcbiAgICBzZWFyY2hWYWwgPSBzZWFyY2hWYWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXNlYXJjaFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHJldHVybjtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIodGhpcy50cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMudHJlZUF1dG9jb21wbGV0ZUxpc3Q/LnNlcmlhbGl6ZWRWYWx1ZT8uZmluZChcbiAgICAgIChzdjogYW55KSA9PiBzdj8ubm9kZT8ubGFiZWw/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaFZhbFxuICAgICk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICB0aGlzLl9zZWxlY3QoZm91bmQubm9kZSk7XG4gICAgICB0aGlzLnRvZ2dsZU9wdGlvbnMoXG4gICAgICAgIHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5tdWx0aXBsZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fZ2V0VmFsdWVMYWJlbCgpO1xuICAgICAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVMYXN0VmFsdWUoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuaW5wdXRUZXh0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50cmVlU2VsZWN0aW9uPy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlKSB7XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMudHJlZVNlbGVjdGlvbi5maWx0ZXIoXG4gICAgICAgICAgKHY6IFRyZWVOb2RlLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgaW5kZXggIT09IHRoaXMudHJlZVNlbGVjdGlvbi5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy50cmVlU2VsZWN0aW9uVG9WYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb24pKTtcblxuICAgICAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IHRydWU7XG4gICAgfSBlbHNlIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS1jeS1pZD1cImNwcy10cmVlYXV0b2NvbXBsZXRlXCJcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiXG4gIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGVcIlxuICB0YWJpbmRleD1cIjFcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCwgZXJyb3I6IGVycm9yIH1cIlxuICAjdHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIDxsYWJlbD57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgPGNwcy1pbmZvLWNpcmNsZVxuICAgICAgKm5nSWY9XCJpbmZvVG9vbHRpcFwiXG4gICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWxhYmVsLWluZm8tY2lyY2xlXCJcbiAgICAgIHNpemU9XCJ4c21hbGxcIlxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJpbmZvVG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgIFt0b29sdGlwQ29udGVudENsYXNzXT1cImluZm9Ub29sdGlwQ2xhc3NcIlxuICAgICAgW3Rvb2x0aXBNYXhXaWR0aF09XCJpbmZvVG9vbHRpcE1heFdpZHRoXCJcbiAgICAgIFt0b29sdGlwUGVyc2lzdGVudF09XCJpbmZvVG9vbHRpcFBlcnNpc3RlbnRcIlxuICAgICAgW3Rvb2x0aXBUZXh0XT1cImluZm9Ub29sdGlwXCI+XG4gICAgPC9jcHMtaW5mby1jaXJjbGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKGtleWRvd24pPVwib25Db250YWluZXJLZXlEb3duKCRldmVudCwgdHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcilcIlxuICAgIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJpc09wZW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BlcnNpc3RlbnQtY2xlYXInOiBwZXJzaXN0ZW50Q2xlYXJcbiAgICB9XCJcbiAgICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKHRyZWVBdXRvY29tcGxldGVDb250YWluZXIpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveFwiIChjbGljayk9XCJvbkJveENsaWNrKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1ib3gtYXJlYVwiPlxuICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAqbmdJZj1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtpY29uXT1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtzaXplXT1cInByZWZpeEljb25TaXplXCJcbiAgICAgICAgICBjbGFzcz1cInByZWZpeC1pY29uXCI+XG4gICAgICAgIDwvY3BzLWljb24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1pdGVtc1wiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0cmVlU2VsZWN0aW9uICYmICFtdWx0aXBsZSkgfHxcbiAgICAgICAgICAgICAgKHRyZWVTZWxlY3Rpb24/Lmxlbmd0aCA+IDAgJiYgbXVsdGlwbGUpO1xuICAgICAgICAgICAgZWxzZSB0cmVlQXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aXBsZVwiIGNsYXNzPVwic2luZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtaXRlbS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLm9wYWNpdHldPVwiYWN0aXZlU2luZ2xlID8gMCA6IDFcIj57e1xuICAgICAgICAgICAgICAgIHRyZWVTZWxlY3Rpb24ubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0cmVlQXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ3NpbmdsZS1pdGVtLWlucHV0JyxcbiAgICAgICAgICAgICAgICAgIGlucHV0U3R5bGU6IGFjdGl2ZVNpbmdsZSA/ICdvcGFjaXR5OiAxJyA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmICFjaGlwc1wiIGNsYXNzPVwidGV4dC1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsIG9mIHRyZWVTZWxlY3Rpb247IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncm91cC1pdGVtXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWJvdXQtdG8tcmVtb3ZlJzogbGFzdCAmJiBiYWNrc3BhY2VDbGlja2VkT25jZSB9XCI+XG4gICAgICAgICAgICAgIHt7IHZhbC5sYWJlbCB9fXt7ICFsYXN0ID8gJywnIDogJycgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVBdXRvY29tcGxldGVJbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmIGNoaXBzXCIgY2xhc3M9XCJjaGlwcy1ncm91cFwiPlxuICAgICAgICAgICAgPGNwcy1jaGlwXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWwgb2YgdHJlZVNlbGVjdGlvbjsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2Nsb3NhYmxlXT1cImNsb3NhYmxlQ2hpcHNcIlxuICAgICAgICAgICAgICAoY2xvc2VkKT1cInJlbW92ZSh2YWwpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWJvdXQtdG8tcmVtb3ZlJzogbGFzdCAmJiBiYWNrc3BhY2VDbGlja2VkT25jZSB9XCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInZhbC5sYWJlbFwiPlxuICAgICAgICAgICAgPC9jcHMtY2hpcD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlQXV0b2NvbXBsZXRlSW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtYm94LWljb25zXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiY2xlYXJhYmxlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJcbiAgICAgICAgICAgICAgcGVyc2lzdGVudENsZWFyIHx8XG4gICAgICAgICAgICAgICghcGVyc2lzdGVudENsZWFyICYmXG4gICAgICAgICAgICAgICAgKChtdWx0aXBsZSAmJiB0cmVlU2VsZWN0aW9uPy5sZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgICAoIW11bHRpcGxlICYmIHRyZWVTZWxlY3Rpb24pKSlcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1jbGVhci1pY29uXCI+XG4gICAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcih0cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyLCAkZXZlbnQpXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1ib3gtY2hldnJvblwiPlxuICAgICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBjb2xvcj1cInRleHQtZGFya1wiPjwvY3BzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb25zXCI+XG4gICAgICA8cC10cmVlXG4gICAgICAgICN0cmVlQXV0b2NvbXBsZXRlTGlzdFxuICAgICAgICBbZW1wdHlNZXNzYWdlXT1cImVtcHR5TWVzc2FnZVwiXG4gICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInZpcnR1YWxTY3JvbGxcIlxuICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiXG4gICAgICAgIFt2aXJ0dWFsU2Nyb2xsT3B0aW9uc109XCJ7IG51bVRvbGVyYXRlZEl0ZW1zOiAzIH1cIlxuICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInZpcnR1YWxMaXN0SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChvbk5vZGVTZWxlY3QpPVwib25TZWxlY3ROb2RlKClcIlxuICAgICAgICAob25Ob2RlRXhwYW5kKT1cInJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KClcIlxuICAgICAgICAob25Ob2RlQ29sbGFwc2UpPVwicmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKVwiXG4gICAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlck9wdGlvbnMoKVwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb25zXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInRyZWVTZWxlY3Rpb25cIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbbWV0YUtleVNlbGVjdGlvbl09XCJtdWx0aXBsZSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIm11bHRpcGxlID8gJ211bHRpcGxlJyA6ICdzaW5nbGUnXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbm9kZSBwVGVtcGxhdGU9XCJkaXJlY3RvcnlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWRpcmVjdG9yeS1lbGVtXCI+e3tcbiAgICAgICAgICAgIG5vZGUubGFiZWxcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ub2RlIHBUZW1wbGF0ZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLW9wdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24tbGVmdFwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm11bHRpcGxlXCIgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24tY2hlY2tcIj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtb3B0aW9uLWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudmlydHVhbC1yb3ddPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgPnt7IG5vZGUubGFiZWwgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24taW5mb1wiXG4gICAgICAgICAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgICAgICAgPnt7IG5vZGUuaW5mbyB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC10cmVlPlxuICAgIDwvZGl2PlxuICAgIDxjcHMtcHJvZ3Jlc3MtbGluZWFyXG4gICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgaGVpZ2h0PVwiM1wiXG4gICAgICByYWRpdXM9XCI0XCJcbiAgICAgIG9wYWNpdHk9XCIwLjNcIlxuICAgICAgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1wcm9ncmVzcy1iYXJcIlxuICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgPC9jcHMtcHJvZ3Jlc3MtbGluZWFyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFlcnJvciAmJiAhaGlkZURldGFpbHNcIiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1lcnJvclwiPlxuICAgIHt7IGVycm9yIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdHJlZUF1dG9jb21wbGV0ZUlucHV0XG4gIGxldC1pbnB1dENsYXNzPVwiaW5wdXRDbGFzc1wiXG4gIGxldC1pbnB1dFN0eWxlPVwiaW5wdXRTdHlsZVwiPlxuICA8aW5wdXRcbiAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1pbnB1dFwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgW3N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICghdHJlZVNlbGVjdGlvbiAmJiAhbXVsdGlwbGUpIHx8ICh0cmVlU2VsZWN0aW9uPy5sZW5ndGggPCAxICYmIG11bHRpcGxlKVxuICAgICAgICA/IHBsYWNlaG9sZGVyXG4gICAgICAgIDogJydcbiAgICBcIlxuICAgIChpbnB1dCk9XCJmaWx0ZXJPcHRpb25zKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlEb3duKCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRyZWUtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS9jcHMtdHJlZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtYXV0b2NvbXBsZXRlL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7O0FBa0J0RyxNQUFNLE9BQU8sNEJBQ1gsU0FBUSw0QkFBNEI7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QUFnQiw2SUFDaEIsMEJBQTBCLHNJQUMxQixzQkFBc0I7MkZBTWIsNEJBQTRCO2tCQWhCeEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixzQkFBc0I7cUJBQ3ZCLFlBQ1MsdUJBQXVCOzswQkFvQjlCLFFBQVE7NEVBWkYsWUFBWTtzQkFBcEIsS0FBSztnQkFHTix5QkFBeUI7c0JBRHhCLFNBQVM7dUJBQUMsMkJBQTJCO2dCQUdILG9CQUFvQjtzQkFBdEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzQ2hpcENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1jaGlwL2Nwcy1jaGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1wcm9ncmVzcy1saW5lYXIvY3BzLXByb2dyZXNzLWxpbmVhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSW5mb0NpcmNsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbmZvLWNpcmNsZS9jcHMtaW5mby1jaXJjbGUuY29tcG9uZW50JztcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvaW50ZXJuYWwvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZmluZCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBUcmVlLCBUcmVlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90cmVlJztcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ3BzVHJlZURyb3Bkb3duQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2VfY29tcG9uZW50cy9jcHMtdHJlZS1kcm9wZG93bi1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzQ2hpcENvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50XG4gIF0sXG4gIHNlbGVjdG9yOiAnY3BzLXRyZWUtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10cmVlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc1RyZWVBdXRvY29tcGxldGVDb21wb25lbnRcbiAgZXh0ZW5kcyBDcHNUcmVlRHJvcGRvd25CYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWVBdXRvY29tcGxldGVDb250YWluZXInKVxuICB0cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0cmVlQXV0b2NvbXBsZXRlTGlzdCcpIHRyZWVBdXRvY29tcGxldGVMaXN0ITogVHJlZTtcblxuICBpbnB1dFRleHQgPSAnJztcbiAgYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcbiAgYWN0aXZlU2luZ2xlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIG92ZXJyaWRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKGNvbnRyb2wsIGNkUmVmKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50cmVlQ29udGFpbmVyID0gdGhpcy50cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyO1xuICAgIHRoaXMudHJlZUxpc3QgPSB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0O1xuICAgIHRoaXMuaXNBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uU2VsZWN0Tm9kZSgpIHtcbiAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHN1cGVyLm9uU2VsZWN0Tm9kZSgpO1xuICB9XG5cbiAgb25DbGlja091dHNpZGUoZGQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fY2xvc2VBbmRDbGVhcihkZCk7XG4gIH1cblxuICBvbkJveENsaWNrKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5hY3RpdmVTaW5nbGUgPSB0cnVlO1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl9nZXRWYWx1ZUxhYmVsKCk7XG4gICAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXMoKTtcbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyS2V5RG93bihldmVudDogYW55LCBkZDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAvLyBlc2NhcGVcbiAgICBpZiAoY29kZSA9PT0gMjcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIoZGQpO1xuICAgIH1cbiAgICAvLyBjbGljayBkb3duIGFycm93XG4gICAgZWxzZSBpZiAoY29kZSA9PT0gNDApIHtcbiAgICAgIHRoaXMuaW5pdEFycm93c05hdmlnYXRvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRLZXlEb3duKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAvLyBiYWNrc3BhY2VcbiAgICBpZiAoY29kZSA9PT0gOCkge1xuICAgICAgdGhpcy5fcmVtb3ZlTGFzdFZhbHVlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgLy8gZW50ZXJcbiAgICBlbHNlIGlmIChjb2RlID09PSAxMykge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbkZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5fY29uZmlybUlucHV0KGV2ZW50Py50YXJnZXQ/LnZhbHVlIHx8ICcnKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgcmVtb3ZlKG9wdGlvbjogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmUob3B0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0KG9wdGlvbjogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhhcnJheTogYW55W10sIHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyYXkgPyAhIWZpbmQoYXJyYXksIChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIHZhbCkpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmIChpbmNsdWRlcyh0aGlzLnRyZWVTZWxlY3Rpb24sIG9wdGlvbikpIHtcbiAgICAgICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdGhpcy50cmVlU2VsZWN0aW9uLmZpbHRlcihcbiAgICAgICAgICAodjogVHJlZU5vZGUpID0+ICFpc0VxdWFsKHYsIG9wdGlvbilcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbi5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IG9wdGlvbjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHRoaXMudHJlZVNlbGVjdGlvbikpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBvdmVycmlkZSBjbGVhcihkZDogSFRNTEVsZW1lbnQsIGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5jbGVhcihkZCwgZXZlbnQpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudFxuICAgICAgPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpXG4gICAgICA/LmZvY3VzKCk7XG4gIH1cblxuICBvdmVycmlkZSBmb2N1cygpIHtcbiAgICBzdXBlci5mb2N1cygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgb25GaWx0ZXJPcHRpb25zKCkge1xuICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMoZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5pc09wZW5lZCkge1xuICAgICAgdGhpcy50b2dnbGVPcHRpb25zKHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCwgdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcbiAgICBjb25zdCBzZWFyY2hWYWwgPSAoZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXNlYXJjaFZhbCkgdGhpcy50cmVlQXV0b2NvbXBsZXRlTGlzdC5yZXNldEZpbHRlcigpO1xuICAgIGVsc2UgdGhpcy50cmVlQXV0b2NvbXBsZXRlTGlzdC5fZmlsdGVyKHNlYXJjaFZhbCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZUxhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVTZWxlY3Rpb24/LmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYXJJbnB1dCgpIHtcbiAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICB0aGlzLmFjdGl2ZVNpbmdsZSA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbmRDbGVhcihkZDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gICAgdGhpcy50b2dnbGVPcHRpb25zKGRkLCBmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maXJtSW5wdXQoc2VhcmNoVmFsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcbiAgICBzZWFyY2hWYWwgPSBzZWFyY2hWYWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXNlYXJjaFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHJldHVybjtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIodGhpcy50cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMudHJlZUF1dG9jb21wbGV0ZUxpc3Q/LnNlcmlhbGl6ZWRWYWx1ZT8uZmluZChcbiAgICAgIChzdjogYW55KSA9PiBzdj8ubm9kZT8ubGFiZWw/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaFZhbFxuICAgICk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICB0aGlzLl9zZWxlY3QoZm91bmQubm9kZSk7XG4gICAgICB0aGlzLnRvZ2dsZU9wdGlvbnMoXG4gICAgICAgIHRoaXMudHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5tdWx0aXBsZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fZ2V0VmFsdWVMYWJlbCgpO1xuICAgICAgICB0aGlzLnRyZWVBdXRvY29tcGxldGVMaXN0LnJlc2V0RmlsdGVyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVMYXN0VmFsdWUoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuaW5wdXRUZXh0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50cmVlU2VsZWN0aW9uPy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlKSB7XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMudHJlZVNlbGVjdGlvbi5maWx0ZXIoXG4gICAgICAgICAgKHY6IFRyZWVOb2RlLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgaW5kZXggIT09IHRoaXMudHJlZVNlbGVjdGlvbi5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy50cmVlU2VsZWN0aW9uVG9WYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb24pKTtcblxuICAgICAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IHRydWU7XG4gICAgfSBlbHNlIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS1jeS1pZD1cImNwcy10cmVlYXV0b2NvbXBsZXRlXCJcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiXG4gIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGVcIlxuICB0YWJpbmRleD1cIjFcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCwgZXJyb3I6IGVycm9yIH1cIlxuICAjdHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIDxsYWJlbD57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgPGNwcy1pbmZvLWNpcmNsZVxuICAgICAgKm5nSWY9XCJpbmZvVG9vbHRpcFwiXG4gICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWxhYmVsLWluZm8tY2lyY2xlXCJcbiAgICAgIHNpemU9XCJ4c21hbGxcIlxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJpbmZvVG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgIFt0b29sdGlwQ29udGVudENsYXNzXT1cImluZm9Ub29sdGlwQ2xhc3NcIlxuICAgICAgW3Rvb2x0aXBNYXhXaWR0aF09XCJpbmZvVG9vbHRpcE1heFdpZHRoXCJcbiAgICAgIFt0b29sdGlwUGVyc2lzdGVudF09XCJpbmZvVG9vbHRpcFBlcnNpc3RlbnRcIlxuICAgICAgW3Rvb2x0aXBUZXh0XT1cImluZm9Ub29sdGlwXCI+XG4gICAgPC9jcHMtaW5mby1jaXJjbGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKGtleWRvd24pPVwib25Db250YWluZXJLZXlEb3duKCRldmVudCwgdHJlZUF1dG9jb21wbGV0ZUNvbnRhaW5lcilcIlxuICAgIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJpc09wZW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BlcnNpc3RlbnQtY2xlYXInOiBwZXJzaXN0ZW50Q2xlYXJcbiAgICB9XCJcbiAgICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKHRyZWVBdXRvY29tcGxldGVDb250YWluZXIpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveFwiIChjbGljayk9XCJvbkJveENsaWNrKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1ib3gtYXJlYVwiPlxuICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAqbmdJZj1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtpY29uXT1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtzaXplXT1cInByZWZpeEljb25TaXplXCJcbiAgICAgICAgICBjbGFzcz1cInByZWZpeC1pY29uXCI+XG4gICAgICAgIDwvY3BzLWljb24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1pdGVtc1wiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0cmVlU2VsZWN0aW9uICYmICFtdWx0aXBsZSkgfHxcbiAgICAgICAgICAgICAgKHRyZWVTZWxlY3Rpb24/Lmxlbmd0aCA+IDAgJiYgbXVsdGlwbGUpO1xuICAgICAgICAgICAgZWxzZSB0cmVlQXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aXBsZVwiIGNsYXNzPVwic2luZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtaXRlbS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLm9wYWNpdHldPVwiYWN0aXZlU2luZ2xlID8gMCA6IDFcIj57e1xuICAgICAgICAgICAgICAgIHRyZWVTZWxlY3Rpb24ubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0cmVlQXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ3NpbmdsZS1pdGVtLWlucHV0JyxcbiAgICAgICAgICAgICAgICAgIGlucHV0U3R5bGU6IGFjdGl2ZVNpbmdsZSA/ICdvcGFjaXR5OiAxJyA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmICFjaGlwc1wiIGNsYXNzPVwidGV4dC1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsIG9mIHRyZWVTZWxlY3Rpb247IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncm91cC1pdGVtXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWJvdXQtdG8tcmVtb3ZlJzogbGFzdCAmJiBiYWNrc3BhY2VDbGlja2VkT25jZSB9XCI+XG4gICAgICAgICAgICAgIHt7IHZhbC5sYWJlbCB9fXt7ICFsYXN0ID8gJywnIDogJycgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVBdXRvY29tcGxldGVJbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmIGNoaXBzXCIgY2xhc3M9XCJjaGlwcy1ncm91cFwiPlxuICAgICAgICAgICAgPGNwcy1jaGlwXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWwgb2YgdHJlZVNlbGVjdGlvbjsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2Nsb3NhYmxlXT1cImNsb3NhYmxlQ2hpcHNcIlxuICAgICAgICAgICAgICAoY2xvc2VkKT1cInJlbW92ZSh2YWwpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWJvdXQtdG8tcmVtb3ZlJzogbGFzdCAmJiBiYWNrc3BhY2VDbGlja2VkT25jZSB9XCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInZhbC5sYWJlbFwiPlxuICAgICAgICAgICAgPC9jcHMtY2hpcD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlQXV0b2NvbXBsZXRlSW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtYm94LWljb25zXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiY2xlYXJhYmxlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJcbiAgICAgICAgICAgICAgcGVyc2lzdGVudENsZWFyIHx8XG4gICAgICAgICAgICAgICghcGVyc2lzdGVudENsZWFyICYmXG4gICAgICAgICAgICAgICAgKChtdWx0aXBsZSAmJiB0cmVlU2VsZWN0aW9uPy5sZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgICAoIW11bHRpcGxlICYmIHRyZWVTZWxlY3Rpb24pKSlcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1jbGVhci1pY29uXCI+XG4gICAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcih0cmVlQXV0b2NvbXBsZXRlQ29udGFpbmVyLCAkZXZlbnQpXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1ib3gtY2hldnJvblwiPlxuICAgICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBjb2xvcj1cInRleHQtZGFya1wiPjwvY3BzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb25zXCI+XG4gICAgICA8cC10cmVlXG4gICAgICAgICN0cmVlQXV0b2NvbXBsZXRlTGlzdFxuICAgICAgICBbZW1wdHlNZXNzYWdlXT1cImVtcHR5TWVzc2FnZVwiXG4gICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInZpcnR1YWxTY3JvbGxcIlxuICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiXG4gICAgICAgIFt2aXJ0dWFsU2Nyb2xsT3B0aW9uc109XCJ7IG51bVRvbGVyYXRlZEl0ZW1zOiAzIH1cIlxuICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInZpcnR1YWxMaXN0SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChvbk5vZGVTZWxlY3QpPVwib25TZWxlY3ROb2RlKClcIlxuICAgICAgICAob25Ob2RlRXhwYW5kKT1cInJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KClcIlxuICAgICAgICAob25Ob2RlQ29sbGFwc2UpPVwicmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKVwiXG4gICAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlck9wdGlvbnMoKVwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb25zXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInRyZWVTZWxlY3Rpb25cIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbbWV0YUtleVNlbGVjdGlvbl09XCJtdWx0aXBsZSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIm11bHRpcGxlID8gJ211bHRpcGxlJyA6ICdzaW5nbGUnXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbm9kZSBwVGVtcGxhdGU9XCJkaXJlY3RvcnlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWRpcmVjdG9yeS1lbGVtXCI+e3tcbiAgICAgICAgICAgIG5vZGUubGFiZWxcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ub2RlIHBUZW1wbGF0ZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLW9wdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24tbGVmdFwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm11bHRpcGxlXCIgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24tY2hlY2tcIj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRyZWVhdXRvY29tcGxldGUtb3B0aW9uLWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudmlydHVhbC1yb3ddPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgPnt7IG5vZGUubGFiZWwgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1vcHRpb24taW5mb1wiXG4gICAgICAgICAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgICAgICAgPnt7IG5vZGUuaW5mbyB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC10cmVlPlxuICAgIDwvZGl2PlxuICAgIDxjcHMtcHJvZ3Jlc3MtbGluZWFyXG4gICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgaGVpZ2h0PVwiM1wiXG4gICAgICByYWRpdXM9XCI0XCJcbiAgICAgIG9wYWNpdHk9XCIwLjNcIlxuICAgICAgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1wcm9ncmVzcy1iYXJcIlxuICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgPC9jcHMtcHJvZ3Jlc3MtbGluZWFyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFlcnJvciAmJiAhaGlkZURldGFpbHNcIiBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtdHJlZWF1dG9jb21wbGV0ZS1lcnJvclwiPlxuICAgIHt7IGVycm9yIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdHJlZUF1dG9jb21wbGV0ZUlucHV0XG4gIGxldC1pbnB1dENsYXNzPVwiaW5wdXRDbGFzc1wiXG4gIGxldC1pbnB1dFN0eWxlPVwiaW5wdXRTdHlsZVwiPlxuICA8aW5wdXRcbiAgICBjbGFzcz1cImNwcy10cmVlYXV0b2NvbXBsZXRlLWJveC1pbnB1dFwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgW3N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICghdHJlZVNlbGVjdGlvbiAmJiAhbXVsdGlwbGUpIHx8ICh0cmVlU2VsZWN0aW9uPy5sZW5ndGggPCAxICYmIG11bHRpcGxlKVxuICAgICAgICA/IHBsYWNlaG9sZGVyXG4gICAgICAgIDogJydcbiAgICBcIlxuICAgIChpbnB1dCk9XCJmaWx0ZXJPcHRpb25zKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlEb3duKCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|