ng-tailwind 4.2.26 → 4.2.28
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/components/ngt-modal/ngt-modal.component.d.ts +2 -0
- package/esm2020/components/ngt-action/ngt-action.component.mjs +3 -3
- package/esm2020/components/ngt-action/ngt-action.module.mjs +4 -4
- package/esm2020/components/ngt-button/ngt-button.component.mjs +3 -3
- package/esm2020/components/ngt-button/ngt-button.module.mjs +4 -4
- package/esm2020/components/ngt-checkbox/ngt-checkbox.component.mjs +3 -3
- package/esm2020/components/ngt-checkbox/ngt-checkbox.module.mjs +4 -4
- package/esm2020/components/ngt-content/ngt-content.component.mjs +3 -3
- package/esm2020/components/ngt-content/ngt-content.module.mjs +4 -4
- package/esm2020/components/ngt-context-menu/ngt-context-menu.component.mjs +3 -3
- package/esm2020/components/ngt-context-menu/ngt-context-menu.directive.mjs +3 -3
- package/esm2020/components/ngt-context-menu/ngt-context-menu.module.mjs +4 -4
- package/esm2020/components/ngt-datatable/ngt-datatable.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-datatable.module.mjs +4 -4
- package/esm2020/components/ngt-datatable/ngt-tbody/ngt-tbody.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-td/ngt-td.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-td-check/ngt-td-check.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-th/ngt-th.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-th-check/ngt-th-check.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-thead/ngt-thead.component.mjs +3 -3
- package/esm2020/components/ngt-datatable/ngt-tr/ngt-tr.component.mjs +3 -3
- package/esm2020/components/ngt-date/ngt-date.component.mjs +3 -3
- package/esm2020/components/ngt-date/ngt-date.module.mjs +4 -4
- package/esm2020/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.mjs +3 -3
- package/esm2020/components/ngt-dropdown/ngt-dropdown.component.mjs +3 -3
- package/esm2020/components/ngt-dropdown/ngt-dropdown.module.mjs +4 -4
- package/esm2020/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.mjs +3 -3
- package/esm2020/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.mjs +3 -3
- package/esm2020/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.mjs +3 -3
- package/esm2020/components/ngt-dropzone/ngt-dropzone.component.mjs +5 -4
- package/esm2020/components/ngt-dropzone/ngt-dropzone.module.mjs +4 -4
- package/esm2020/components/ngt-floating-button/ngt-floating-button.component.mjs +3 -3
- package/esm2020/components/ngt-floating-button/ngt-floating-button.module.mjs +4 -4
- package/esm2020/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.mjs +3 -3
- package/esm2020/components/ngt-form/ngt-form.component.mjs +3 -3
- package/esm2020/components/ngt-form/ngt-form.module.mjs +4 -4
- package/esm2020/components/ngt-header-nav/ngt-header-nav.component.mjs +3 -3
- package/esm2020/components/ngt-header-nav/ngt-header-nav.module.mjs +4 -4
- package/esm2020/components/ngt-helper/ngt-helper.component.mjs +3 -3
- package/esm2020/components/ngt-helper/ngt-helper.module.mjs +4 -4
- package/esm2020/components/ngt-input/ngt-input.component.mjs +7 -4
- package/esm2020/components/ngt-input/ngt-input.module.mjs +4 -4
- package/esm2020/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.mjs +3 -3
- package/esm2020/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.mjs +3 -3
- package/esm2020/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.mjs +3 -3
- package/esm2020/components/ngt-modal/ngt-modal.component.mjs +13 -6
- package/esm2020/components/ngt-modal/ngt-modal.module.mjs +4 -4
- package/esm2020/components/ngt-multi-select/ngt-multi-select.component.mjs +3 -3
- package/esm2020/components/ngt-multi-select/ngt-multi-select.module.mjs +4 -4
- package/esm2020/components/ngt-pagination/ngt-pagination.component.mjs +3 -3
- package/esm2020/components/ngt-pagination/ngt-pagination.module.mjs +4 -4
- package/esm2020/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.mjs +3 -3
- package/esm2020/components/ngt-popover/ngt-popover.component.mjs +3 -3
- package/esm2020/components/ngt-popover/ngt-popover.directive.mjs +3 -3
- package/esm2020/components/ngt-popover/ngt-popover.module.mjs +4 -4
- package/esm2020/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.mjs +3 -3
- package/esm2020/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.mjs +3 -3
- package/esm2020/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.mjs +3 -3
- package/esm2020/components/ngt-portlet/ngt-portlet.component.mjs +3 -3
- package/esm2020/components/ngt-portlet/ngt-portlet.module.mjs +4 -4
- package/esm2020/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.mjs +3 -3
- package/esm2020/components/ngt-radio-button/ngt-radio-button.component.mjs +3 -3
- package/esm2020/components/ngt-radio-button/ngt-radio-button.module.mjs +4 -4
- package/esm2020/components/ngt-section/ngt-section.component.mjs +3 -3
- package/esm2020/components/ngt-section/ngt-section.module.mjs +4 -4
- package/esm2020/components/ngt-select/ngt-select.component.mjs +10 -8
- package/esm2020/components/ngt-select/ngt-select.directive.mjs +9 -9
- package/esm2020/components/ngt-select/ngt-select.module.mjs +4 -4
- package/esm2020/components/ngt-shining/ngt-shining.component.mjs +3 -3
- package/esm2020/components/ngt-shining/ngt-shining.module.mjs +4 -4
- package/esm2020/components/ngt-sidenav/ngt-sidenav.component.mjs +3 -3
- package/esm2020/components/ngt-sidenav/ngt-sidenav.module.mjs +4 -4
- package/esm2020/components/ngt-slider/ngt-slider.component.mjs +3 -3
- package/esm2020/components/ngt-slider/ngt-slider.module.mjs +4 -4
- package/esm2020/components/ngt-svg/ngt-svg.component.mjs +3 -3
- package/esm2020/components/ngt-svg/ngt-svg.module.mjs +4 -4
- package/esm2020/components/ngt-tag/ngt-tag.component.mjs +3 -3
- package/esm2020/components/ngt-tag/ngt-tag.module.mjs +4 -4
- package/esm2020/components/ngt-textarea/ngt-textarea.component.mjs +3 -3
- package/esm2020/components/ngt-textarea/ngt-textarea.module.mjs +4 -4
- package/esm2020/components/ngt-validation/ngt-validation.component.mjs +3 -3
- package/esm2020/components/ngt-validation/ngt-validation.module.mjs +4 -4
- package/esm2020/directives/ngt-stylizable/ngt-stylizable.directive.mjs +3 -3
- package/esm2020/directives/ngt-stylizable/ngt-stylizable.module.mjs +4 -4
- package/esm2020/helpers/input-mask/input-mask.helper.mjs +2 -1
- package/fesm2015/ng-tailwind.mjs +305 -291
- package/fesm2015/ng-tailwind.mjs.map +1 -1
- package/fesm2020/ng-tailwind.mjs +304 -290
- package/fesm2020/ng-tailwind.mjs.map +1 -1
- package/helpers/input-mask/input-mask.helper.d.ts +1 -0
- package/package.json +1 -1
|
@@ -294,6 +294,9 @@ export class NgtSelectComponent extends NgtBaseNgModel {
|
|
|
294
294
|
if (!this.items) {
|
|
295
295
|
this.items = [];
|
|
296
296
|
}
|
|
297
|
+
if (this.canAutoSelectUniqueOption()) {
|
|
298
|
+
this.onNativeChange(this.items[0]);
|
|
299
|
+
}
|
|
297
300
|
this.ngSelectItems = new Observable((observer) => {
|
|
298
301
|
this.ngSearchObserver = observer;
|
|
299
302
|
observer.next(this.items);
|
|
@@ -410,19 +413,18 @@ export class NgtSelectComponent extends NgtBaseNgModel {
|
|
|
410
413
|
this.subscriptions = [];
|
|
411
414
|
}
|
|
412
415
|
canAutoSelectUniqueOption(response) {
|
|
413
|
-
return !this.value
|
|
414
|
-
&&
|
|
415
|
-
|
|
416
|
-
&& response.data?.length === 1;
|
|
416
|
+
return !this.value && this.autoSelectUniqueOption
|
|
417
|
+
&& ((Array.isArray(response?.data) && response?.data?.length === 1)
|
|
418
|
+
|| (!response && Array.isArray(this.items) && this.items?.length == 1));
|
|
417
419
|
}
|
|
418
420
|
}
|
|
419
|
-
NgtSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
420
|
-
NgtSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
421
|
+
NgtSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectComponent, deps: [{ token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i0.Injector }, { token: i2.ControlContainer, host: true, optional: true }, { token: i3.NgtFormComponent, optional: true, skipSelf: true }, { token: i4.NgtHttpService }, { token: i0.ChangeDetectorRef }, { token: i5.NgtTranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
422
|
+
NgtSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSelectComponent, selector: "ngt-select", inputs: { label: "label", labelIcon: "labelIcon", labelIconColor: "labelIconColor", helpTitle: "helpTitle", helpText: "helpText", helpTextColor: "helpTextColor", shining: "shining", loading: "loading", loadingText: "loadingText", notFoundText: "notFoundText", dropdownPosition: "dropdownPosition", typeToSearchText: "typeToSearchText", clearAllTooltip: "clearAllTooltip", placeholder: "placeholder", createText: "createText", labelForId: "labelForId", dropdownPanelMinHeight: "dropdownPanelMinHeight", helperReverseYPosition: "helperReverseYPosition", helperAutoXReverse: "helperAutoXReverse", name: "name", autoLoad: "autoLoad", allowCreate: "allowCreate", allowOriginalItemsUnselect: "allowOriginalItemsUnselect", isDisabled: "isDisabled", isReadonly: "isReadonly", remoteResource: "remoteResource", hideSelected: "hideSelected", bindLabel: "bindLabel", bindValue: "bindValue", items: "items", inputAttrs: "inputAttrs", closeOnSelect: "closeOnSelect", clearable: "clearable", groupBy: "groupBy", maxSelectedItems: "maxSelectedItems", multiple: "multiple", searchable: "searchable", clearSearchOnAdd: "clearSearchOnAdd", virtualScroll: "virtualScroll", tabIndex: "tabIndex", typeahead: "typeahead", guessCompareWith: "guessCompareWith", autoSelectUniqueOption: "autoSelectUniqueOption", groupValue: "groupValue", trackBy: "trackBy", isRequired: "isRequired", compareWith: "compareWith" }, outputs: { onLoadRemoteResource: "onLoadRemoteResource", onClear: "onClear" }, providers: [
|
|
421
423
|
NgtMakeProvider(NgtSelectComponent)
|
|
422
424
|
], queries: [{ propertyName: "ngtOptionTemplate", first: true, predicate: NgtSelectOptionTmp, descendants: true, read: TemplateRef }, { propertyName: "ngtOptionSelectedTemplate", first: true, predicate: NgtSelectOptionSelectedTmp, descendants: true, read: TemplateRef }, { propertyName: "ngtSelectHeaderTemplate", first: true, predicate: NgtSelectHeaderTmp, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "ngSelectComponent", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label\" [hidden]='shining'\n class=\"{{ shining ? '' : 'block' }} {{ ngtStyle.compile(['color.text', 'text', 'font', 'fontCase']) }} mb-2 flex\">\n <ngt-svg *ngIf=\"labelIcon\" class=\"mr-1 {{labelIconColor}}\" src=\"{{labelIcon}}\"></ngt-svg>\n {{ label }}:\n\n <span class=\"text-red-500 font-bold text-md ml-1\" *ngIf=\"isRequired\">*</span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<div [hidden]='shining' class=\"{{ getSelectClass() }} normal-case\" style=\"min-height: 3rem;\">\n <ng-select class=\"custom\" [(ngModel)]='nativeValue' [name]='nativeName' [addTag]='allowCreate'\n [addTagText]=\"createText || ngtTranslateService.ngtSelectCreateText\" [bindLabel]=\"bindLabel\"\n [multiple]=\"multiple\" [hideSelected]=\"hideSelected\" [typeahead]=\"typeahead\"\n [notFoundText]=\"notFoundText || ngtTranslateService.ngtSelectNotFoundText\" [searchable]=\"searchable\"\n [disabled]='isDisabled || isReadonly' [clearable]=\"clearable && hasSelectedValue()\"\n [closeOnSelect]=\"closeOnSelect\" [trackByFn]=\"trackBy\" [labelForId]=\"labelForId\"\n [typeToSearchText]=\"typeToSearchText || ngtTranslateService.ngtSelectTypeToSearchText\"\n [placeholder]=\"placeholder || ngtTranslateService.ngtSelectPlaceholder\" [dropdownPosition]=\"dropdownPosition\"\n [groupBy]=\"groupBy\" [clearAllText]=\"clearAllTooltip || ngtTranslateService.ngtSelectClearAllTooltip\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\" [bindValue]=\"bindValue\" [virtualScroll]=\"virtualScroll\"\n [loadingText]=\"loadingText || ngtTranslateService.ngtSelectLoadingText\" [maxSelectedItems]=\"maxSelectedItems\"\n [tabIndex]=\"tabIndex\" [items]=\"ngSelectItems | async\" [groupValue]=\"groupValue\" [loading]=\"loading\"\n [compareWith]='compareWith' [inputAttrs]=\"inputAttrs\" (scroll)=\"onScroll($event)\"\n (change)=\"onNativeChange($event)\" (clear)='onClearSelect()' (remove)='onRemoveSelectedItem($event)'\n (click)=\"wasClicked = true\">\n\n <ng-template *ngIf='ngtSelectHeaderTemplate' ng-header-tmp>\n <ng-template [ngTemplateOutlet]=\"ngtSelectHeaderTemplate\">\n </ng-template>\n </ng-template>\n\n <ng-template ng-label-tmp let-item=\"item\">\n <div class=\"flex w-full items-center pr-1\">\n <ng-container *ngIf=\"multiple\">\n <div class=\"ng-value-icon px-1 h-full border-r mr-2 {{ ngtStyle.compile(['color.text', 'text']) }} cursor-pointer\"\n (click)='removeItem($event, item)'>\n <svg class=\"ng-value-icon fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n </svg>\n </div>\n </ng-container>\n\n <ng-template *ngIf='ngtOptionSelectedTemplate' [ngTemplateOutlet]=\"ngtOptionSelectedTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n\n <ng-template *ngIf='!ngtOptionSelectedTemplate' [ngTemplateOutlet]=\"ngtOptionTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </div>\n </ng-template>\n\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"ngtOptionTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, index: index, searchTerm: search }\">\n </ng-template>\n </ng-template>\n </ng-select>\n</div>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"{{ ngtStyle.compile(['h']) }} w-full\"></ngt-shining>\n </div>\n</ng-container>\n\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n\n<input *ngIf='componentReady' type='hidden' [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a}.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{background-color:#fff;border-radius:4px;border:1px solid #ccc;min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px #0000000f}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;background-color:#ebf5ff;border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:#999}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px #0000000f;left:0}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top-color:#e6e6e6;margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:#0000008a;cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{background-color:#ebf5ff;font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:#000000de;padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5faff;color:#333}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.ng-select,.ng-select.custom .ng-select-container{height:100%;margin-top:-1px;margin-bottom:-1px}.ng-select-container{color:inherit!important;min-height:3rem!important}.select-border-disabled .ng-select-container{border:solid #cbd5e0 1px!important;background-color:#fafafa!important;border-radius:.25rem;padding:1px}.select-border-error .ng-select-container{border:solid #c53030 1px!important;background-color:unset!important;border-radius:.25rem;padding:1px}.select-border-normal .ng-select-container{border:solid #cbd5e0 1px!important;background-color:unset!important;border-radius:.25rem;padding:1px}.ng-value{max-width:100%}.ng-select-dropdown-panel-auto .ng-dropdown-panel .ng-dropdown-panel-items{min-height:unset}.ng-select-dropdown-panel-xs .ng-dropdown-panel .ng-dropdown-panel-items{min-height:80px!important}.ng-select-dropdown-panel-sm .ng-dropdown-panel .ng-dropdown-panel-items{min-height:100px!important}.ng-select-dropdown-panel-md .ng-dropdown-panel .ng-dropdown-panel-items{min-height:120px!important}.ng-select-dropdown-panel-lg .ng-dropdown-panel .ng-dropdown-panel-items{min-height:140px!important}.ng-select-dropdown-panel-xl .ng-dropdown-panel .ng-dropdown-panel-items{min-height:160px!important}.ng-dropdown-panel .ng-dropdown-header{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i7.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i7.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "component", type: i8.NgtValidationComponent, selector: "ngt-validation", inputs: ["control", "container", "minValue", "minLength"] }, { kind: "component", type: i9.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i10.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }, { kind: "component", type: i11.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], viewProviders: [
|
|
423
425
|
{ provide: ControlContainer, useExisting: NgForm }
|
|
424
426
|
], encapsulation: i0.ViewEncapsulation.None });
|
|
425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectComponent, decorators: [{
|
|
426
428
|
type: Component,
|
|
427
429
|
args: [{ selector: 'ngt-select', providers: [
|
|
428
430
|
NgtMakeProvider(NgtSelectComponent)
|
|
@@ -563,4 +565,4 @@ export var NgtSelectDropdownPanelHeight;
|
|
|
563
565
|
NgtSelectDropdownPanelHeight["LG"] = "lg";
|
|
564
566
|
NgtSelectDropdownPanelHeight["XL"] = "xl";
|
|
565
567
|
})(NgtSelectDropdownPanelHeight || (NgtSelectDropdownPanelHeight = {}));
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3Qtc2VsZWN0L25ndC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlbGVjdC9uZ3Qtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixJQUFJLEVBRUosS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBWSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQVksT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWM1RyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQTZGbEQsWUFFVyxzQkFBOEMs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ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEb0NoZWNrLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdPcHRpb24sIE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3RCYXNlTmdNb2RlbCwgTmd0TWFrZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9uZ3QtYmFzZS1uZy1tb2RlbCc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dWlkJztcbmltcG9ydCB7IE5ndEh0dHBSZXNwb25zZSwgTmd0SHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL25ndC1odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0VHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndFN0eWxpemFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmd0LXN0eWxpemFibGUvbmd0LXN0eWxpemFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LWZvcm0vbmd0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE5ndFNlbGVjdEhlYWRlclRtcCwgTmd0U2VsZWN0T3B0aW9uU2VsZWN0ZWRUbXAsIE5ndFNlbGVjdE9wdGlvblRtcCB9IGZyb20gJy4vbmd0LXNlbGVjdC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3Qtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3Qtc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTmd0TWFrZVByb3ZpZGVyKE5ndFNlbGVjdENvbXBvbmVudClcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdGb3JtIH1cbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmd0U2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmd0QmFzZU5nTW9kZWwgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcbiAgICBAVmlld0NoaWxkKE5nU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgbmdTZWxlY3RDb21wb25lbnQ6IE5nU2VsZWN0Q29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoTmd0U2VsZWN0T3B0aW9uVG1wLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHB1YmxpYyBuZ3RPcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKE5ndFNlbGVjdE9wdGlvblNlbGVjdGVkVG1wLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHB1YmxpYyBuZ3RPcHRpb25TZWxlY3RlZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoTmd0U2VsZWN0SGVhZGVyVG1wLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHB1YmxpYyBuZ3RTZWxlY3RIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBWaXN1YWwgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbEljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWxJY29uQ29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0Q29sb3I6IHN0cmluZyA9ICd0ZXh0LWdyZWVuLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIHNoaW5pbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nVGV4dDogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIG5vdEZvdW5kVGV4dDogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duUG9zaXRpb24gPSAnYXV0byc7XG4gICAgQElucHV0KCkgcHVibGljIHR5cGVUb1NlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGVhckFsbFRvb2x0aXA6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIGNyZWF0ZVRleHQ6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbEZvcklkOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25QYW5lbE1pbkhlaWdodDogTmd0U2VsZWN0RHJvcGRvd25QYW5lbEhlaWdodCA9IE5ndFNlbGVjdERyb3Bkb3duUGFuZWxIZWlnaHQuQVVUTztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscGVyUmV2ZXJzZVlQb3NpdGlvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscGVyQXV0b1hSZXZlcnNlOiBib29sZWFuO1xuXG4gICAgLyoqIEJlaGF2aW9yICovXG4gICAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b0xvYWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGFsbG93Q3JlYXRlOiBib29sZWFuIHwgUHJvbWlzZTxhbnk+IHwgRnVuY3Rpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dPcmlnaW5hbEl0ZW1zVW5zZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVtb3RlUmVzb3VyY2U6IGFueTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGlkZVNlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZyA9ICduYW1lJztcbiAgICBASW5wdXQoKSBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBBcnJheTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgcHVibGljIGlucHV0QXR0cnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlT25TZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBncm91cEJ5OiBzdHJpbmcgfCBGdW5jdGlvbiA9IG51bGw7XG4gICAgQElucHV0KCkgcHVibGljIG1heFNlbGVjdGVkSXRlbXM6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGNsZWFyU2VhcmNoT25BZGQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgdGFiSW5kZXg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgdHlwZWFoZWFkOiBTdWJqZWN0PGFueT47XG4gICAgQElucHV0KCkgcHVibGljIGd1ZXNzQ29tcGFyZVdpdGg6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvU2VsZWN0VW5pcXVlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGdyb3VwVmFsdWU6IChncm91cEtleTogc3RyaW5nLCBjaWxkcmVuOiBhbnlbXSkgPT4gT2JqZWN0O1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0cmFja0J5OiAoaXRlbTogYW55KSA9PiBhbnk7XG5cbiAgICAvKiogVmFsaWRhdGlvbiAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uTG9hZFJlbW90ZVJlc291cmNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25DbGVhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcHVibGljIG5hdGl2ZU5hbWUgPSB1dWlkKCk7XG4gICAgcHVibGljIG5ndFN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBwdWJsaWMgbmdTZWxlY3RJdGVtczogYW55ID0gW107XG4gICAgcHVibGljIG5hdGl2ZVZhbHVlOiBhbnk7XG4gICAgcHVibGljIGNvbXBvbmVudFJlYWR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHdhc0NsaWNrZWQ6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIG5nU2VhcmNoT2JzZXJ2ZXI6IE9ic2VydmVyPGFueT47XG4gICAgcHJpdmF0ZSBvcmlnaW5hbFBlclBhZ2UgPSAxNTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcbiAgICBwcml2YXRlIG9yaWdpbmFsSXRlbXM6IEFycmF5PGFueT47XG5cbiAgICBwcml2YXRlIGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgICAgZmlsdGVyczoge30sXG4gICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGZpZWxkOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJydcbiAgICAgICAgfSxcbiAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgY291bnQ6IG51bGwsXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgcGFnZXM6IG51bGwsXG4gICAgICAgICAgICB0b3RhbDogbnVsbCxcbiAgICAgICAgICAgIGZyb206IG51bGwsXG4gICAgICAgICAgICB0bzogbnVsbCxcbiAgICAgICAgICAgIHBlcl9wYWdlOiBudWxsXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hUaW1lb3V0OiBhbnk7XG4gICAgcHJpdmF0ZSBoYWRGaXJzdEl0ZW1zTG9hZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKVxuICAgICAgICBwdWJsaWMgbmd0U3R5bGl6YWJsZURpcmVjdGl2ZTogTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KClcbiAgICAgICAgcHVibGljIGZvcm1Db250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHB1YmxpYyBuZ3RGb3JtQ29tcG9uZW50OiBOZ3RGb3JtQ29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIG5ndEh0dHA6IE5ndEh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgcHVibGljIG5ndFRyYW5zbGF0ZVNlcnZpY2U6IE5ndFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5uZ3RGb3JtQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSB0aGlzLm5ndEZvcm1Db21wb25lbnQuaXNTaGluaW5nKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0Rm9ybUNvbXBvbmVudC5vblNoaW5pbmdDaGFuZ2Uuc3Vic2NyaWJlKChzaGluaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hpbmluZyA9IHNoaW5pbmc7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gdGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlLmdldE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5ndFN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFNlbGVjdCcsIHtcbiAgICAgICAgICAgIGg6ICdoLTEyJyxcbiAgICAgICAgICAgIHRleHQ6ICd0ZXh0LXNtJyxcbiAgICAgICAgICAgIGZvbnRDYXNlOiAnJyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgYmc6ICdiZy13aGl0ZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIGNvbXBhcmVXaXRoID0gKGE6IGFueSwgYjogYW55KSA9PiBhID09PSBiO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSBlbGVtZW50IG11c3QgYmUgaW5zaWRlIGEgPGZvcm0gI2Zvcm09J25nRm9ybSc+IHRhZyFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSBlbGVtZW50IG11c3QgY29udGFpbiBhIG5hbWUgYXR0cmlidXRlIVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiB0aGlzLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU9uU2VsZWN0ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbml0Q29tcG9uZW50VmFsaWRhdGlvbigpO1xuICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgIHRoaXMubmdTZWxlY3RJdGVtcyA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1NlYXJjaE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KFtdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5iaW5kSW5uZXJJbnB1dFVuaXF1ZUlkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhZEZpcnN0SXRlbXNMb2FkICYmIHRoaXMuY2FuTG9hZEl0ZW1zKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFkRmlyc3RJdGVtc0xvYWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmluaXROZ1NlbGVjdEl0ZW1zKCk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwbGFjZVNob3dBZGRUYWcoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubmdTZWxlY3RDb21wb25lbnQuaXRlbXNMaXN0Lm1hcFNlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nZXRFbGVtZW50VGl0bGUoKSB8fCB0aGlzLmdldEVsZW1lbnRUaXRsZSgpID09PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5lbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnRpdGxlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5zZWxlY3RlZEl0ZW1zPy5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUl0ZW0oZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubmdTZWxlY3RDb21wb25lbnQuY2xlYXJJdGVtKGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWZyZXNoKCkge1xuICAgICAgICB0aGlzLmluaXROZ1NlbGVjdEl0ZW1zKCk7XG4gICAgICAgIHRoaXMuaW5pdENvbXBvbmVudFZhbGlkYXRpb24oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnJlbW90ZVJlc291cmNlIHx8IGNoYW5nZXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE5nU2VsZWN0SXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmRyb3Bkb3duUGFuZWxNaW5IZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25QYW5lbE1pbkhlaWdodCA9IGdldEVudW1Gcm9tU3RyaW5nKGNoYW5nZXMuZHJvcGRvd25QYW5lbE1pbkhlaWdodC5jdXJyZW50VmFsdWUsIE5ndFNlbGVjdERyb3Bkb3duUGFuZWxIZWlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZvY3VzKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdTZWxlY3RDb21wb25lbnQuZm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJTZWxlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycyA9IHt9O1xuXG4gICAgICAgIHRoaXMub25DbGVhci5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlU2VsZWN0ZWRJdGVtKGl0ZW06IE5nT3B0aW9uKSB7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd09yaWdpbmFsSXRlbXNVbnNlbGVjdCAmJiB0aGlzLmhhZFByZXZpb3VzU2VsZWN0aW9uKGl0ZW0udmFsdWUpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubmdTZWxlY3RDb21wb25lbnQuc2VsZWN0KGl0ZW0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJJbnB1dFZhbHVlKCkge1xuICAgICAgICBsZXQgaW5wdXRGaWVsZCA9IHRoaXMubmdTZWxlY3RDb21wb25lbnQuc2VhcmNoSW5wdXQgP1xuICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5zZWFyY2hJbnB1dCA6XG4gICAgICAgICAgICB0aGlzLm5nU2VsZWN0Q29tcG9uZW50WydzZWFyY2hJbnB1dCddO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlucHV0RmllbGQgJiZcbiAgICAgICAgICAgIGlucHV0RmllbGQubmF0aXZlRWxlbWVudFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dEZpZWxkLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoKGZpbHRlcnM6IGFueSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzID0geyAuLi50aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLCAuLi5maWx0ZXJzIH07XG5cbiAgICAgICAgaWYgKCF0aGlzLnJlbW90ZVJlc291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQodGhpcy5yZW1vdGVSZXNvdXJjZSwgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycywgdGhpcy5jdXJyZW50U3RhdGUucGFnaW5hdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZTogTmd0SHR0cFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRDb21wYXJlV2l0aEJ5UmVzcG9uc2UocmVzcG9uc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1NlYXJjaE9ic2VydmVyLm5leHQocmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYW5BdXRvU2VsZWN0VW5pcXVlT3B0aW9uKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTmF0aXZlQ2hhbmdlKHJlc3BvbnNlLmRhdGFbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkUmVtb3RlUmVzb3VyY2UuZW1pdChyZXNwb25zZS5kYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLnBhZ2luYXRpb24gPSByZXNwb25zZS5tZXRhLnBhZ2luYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nU2VhcmNoT2JzZXJ2ZXIubmV4dChbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTmF0aXZlQ2hhbmdlKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoYW5nZXNCZXR3ZWVuTW9kZWxzKHRoaXMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzQmV0d2Vlbk1vZGVscyh2YWx1ZSwgdGhpcy5uYXRpdmVWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2YWwpID0+IHZhbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNjcm9sbCh7IGVuZCB9KSB7XG4gICAgICAgIGxldCBjdXJyZW50UGVyUGFnZSA9IHRoaXMuY3VycmVudFN0YXRlLnBhZ2luYXRpb24ucGVyX3BhZ2U7XG4gICAgICAgIGxldCBtYXhJdGVuc0luQmFja2VuZCA9IHRoaXMuY3VycmVudFN0YXRlLnBhZ2luYXRpb24udG90YWw7XG5cbiAgICAgICAgaWYgKGVuZCA+PSBjdXJyZW50UGVyUGFnZSAmJiBlbmQgPD0gbWF4SXRlbnNJbkJhY2tlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLnBhZ2luYXRpb24ucGVyX3BhZ2UgPSBwYXJzZUludCh0aGlzLmN1cnJlbnRTdGF0ZS5wYWdpbmF0aW9uLnBlcl9wYWdlKSArIHRoaXMub3JpZ2luYWxQZXJQYWdlO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2goe30pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhc1NlbGVjdGVkVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICYmIEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWxlY3RDbGFzcygpIHtcbiAgICAgICAgbGV0IHNlbGVjdENsYXNzID0gdGhpcy5kcm9wZG93blBhbmVsTWluSGVpZ2h0ID8gJ25nLXNlbGVjdC1kcm9wZG93bi1wYW5lbC0nICsgdGhpcy5kcm9wZG93blBhbmVsTWluSGVpZ2h0IDogJ25nLXNlbGVjdC1kcm9wZG93bi1wYW5lbC1hdXRvJztcblxuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBzZWxlY3RDbGFzcyArPSAnIHNlbGVjdC1ib3JkZXItZGlzYWJsZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC5lcnJvcnMgJiYgKHRoaXMuZm9ybUNvbnRyb2wuZGlydHkgfHwgKHRoaXMuZm9ybUNvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250YWluZXJbJ3N1Ym1pdHRlZCddKSkpIHtcbiAgICAgICAgICAgIHNlbGVjdENsYXNzICs9ICcgc2VsZWN0LWJvcmRlci1lcnJvcic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RDbGFzcyArPSAnIHNlbGVjdC1ib3JkZXItbm9ybWFsJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBzZWxlY3RDbGFzcyArPSBgIGgtYXV0byAke3RoaXMubmd0U3R5bGUuY29tcGlsZShbJ2NvbG9yLmJnJywgJ2NvbG9yLnRleHQnXSl9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdENsYXNzICs9IGAgJHt0aGlzLm5ndFN0eWxlLmNvbXBpbGUoWydoJywgJ2NvbG9yLmJnJywgJ2NvbG9yLnRleHQnXSl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RDbGFzcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXROZ1NlbGVjdEl0ZW1zKCkge1xuICAgICAgICBpZiAodGhpcy5yZW1vdGVSZXNvdXJjZSAmJiB0aGlzLmNhbkxvYWRJdGVtcygpKSB7XG4gICAgICAgICAgICB0aGlzLm5nU2VsZWN0SXRlbXMgPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1NlYXJjaE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goe30pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudHlwZWFoZWFkID0gbmV3IFN1YmplY3QoKTtcblxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy50eXBlYWhlYWQuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKHsgdGVybTogdGVybSB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdEl0ZW1zID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1NlYXJjaE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q29tcG9uZW50VmFsaWRhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250YWluZXIuY29udHJvbCAmJiAodGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLm5hbWUpKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbGVtZW50VGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdTZWxlY3RDb21wb25lbnQuZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC50aXRsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0NoYW5nZXNCZXR3ZWVuTW9kZWxzKHZhbHVlLCBuYXRpdmVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShuYXRpdmVWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3luY1ZhbGlkYXRvcnMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICBzeW5jVmFsaWRhdG9ycy5wdXNoKHRoaXMuaXNSZXF1aXJlZFZhbGlkYXRvcigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUmVxdWlyZWRWYWxpZGF0b3IoKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wudmFsdWUgJiYgSlNPTi5zdHJpbmdpZnkoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgJ3JlcXVpcmVkJzogdHJ1ZSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZVNob3dBZGRUYWcoKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm5nU2VsZWN0Q29tcG9uZW50LCAnc2hvd0FkZFRhZycsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ1NlbGVjdENvbXBvbmVudFsnc2VhcmNoVGVybSddKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXJtID0gdGhpcy5uZ1NlbGVjdENvbXBvbmVudFsnc2VhcmNoVGVybSddLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5hZGRUYWcgJiYgIXRoaXMubmdTZWxlY3RDb21wb25lbnQubG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAmJiAoIXRoaXMuaGFzVGVybUluRmlsdGVyZWRJdGVtcyh0ZXJtKSAmJiAoIXRoaXMuaGFzVGVybUluU2VsZWN0ZWRJdGVtcyh0ZXJtKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgIXRoaXMubmdTZWxlY3RDb21wb25lbnQuaGlkZVNlbGVjdGVkICYmIHRoaXMubmdTZWxlY3RDb21wb25lbnQuaXNPcGVuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZElubmVySW5wdXRVbmlxdWVJZCgpIHtcbiAgICAgICAgY29uc3QgY2hpbGRJbnB1dHMgPSB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGNoaWxkSW5wdXRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVySW5wdXQgPSBjaGlsZElucHV0c1swXTtcblxuICAgICAgICAgICAgaW5uZXJJbnB1dC5pZCA9IHV1aWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmluZENvbXBhcmVXaXRoQnlSZXNwb25zZShyZXNwb25zZTogTmd0SHR0cFJlc3BvbnNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmd1ZXNzQ29tcGFyZVdpdGgpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhPy5sZW5ndGggJiYgdHlwZW9mIHJlc3BvbnNlLmRhdGFbMF1bJ2dldEFwaUlkJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBhcmVXaXRoID0gKGE6IGFueSwgYjogYW55KSA9PiBhLmdldEFwaUlkKCkgPT0gYi5nZXRBcGlJZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBhcmVXaXRoID0gKGE6IGFueSwgYjogYW55KSA9PiBhID09PSBiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNUZXJtSW5GaWx0ZXJlZEl0ZW1zKHRlcm06IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5pdGVtc0xpc3QuZmlsdGVyZWRJdGVtcztcblxuICAgICAgICBpZiAoZmlsdGVyZWRJdGVtcz8ubGVuZ3RoICYmIHRoaXMuaXNDb2xvcXVlbnRSZXNvdXJjZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRJdGVtcy5zb21lKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSAoPGFueT5lbGVtZW50LnZhbHVlKS5nZXRBdHRyaWJ1dGUodGhpcy5iaW5kTGFiZWwpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRWYWx1ZSAmJiBlbGVtZW50VmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gdGVybTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMuc29tZSgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSAoPGFueT5lbGVtZW50LnZhbHVlKVt0aGlzLmJpbmRMYWJlbF07XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUgJiYgZWxlbWVudFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRlcm07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzVGVybUluU2VsZWN0ZWRJdGVtcyh0ZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMubmdTZWxlY3RDb21wb25lbnQuc2VsZWN0ZWRJdGVtcztcblxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmIHRoaXMuaXNDb2xvcXVlbnRSZXNvdXJjZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtcy5zb21lKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSAoPGFueT5lbGVtZW50LnZhbHVlKS5nZXRBdHRyaWJ1dGUodGhpcy5iaW5kTGFiZWwpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRWYWx1ZSAmJiBlbGVtZW50VmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gdGVybTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbXMuc29tZSgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSAoPGFueT5lbGVtZW50LnZhbHVlKVt0aGlzLmJpbmRMYWJlbF07XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUgJiYgZWxlbWVudFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRlcm07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFkUHJldmlvdXNTZWxlY3Rpb24oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMub3JpZ2luYWxJdGVtcz8uZmluZChlbGVtZW50ID0+IHRoaXMuY29tcGFyZVdpdGgoZWxlbWVudCwgaXRlbSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDb2xvcXVlbnRSZXNvdXJjZSgpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLm5nU2VsZWN0Q29tcG9uZW50Lml0ZW1zTGlzdC5pdGVtcztcblxuICAgICAgICByZXR1cm4gaXRlbXM/Lmxlbmd0aCAmJiB0eXBlb2YgaXRlbXNbMF0udmFsdWVbJ2dldEF0dHJpYnV0ZSddID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuTG9hZEl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRvTG9hZCB8fCAoIXRoaXMuaXNEaXNhYmxlZCAmJiB0aGlzLndhc0NsaWNrZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuQXV0b1NlbGVjdFVuaXF1ZU9wdGlvbihyZXNwb25zZTogTmd0SHR0cFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy52YWx1ZVxuICAgICAgICAgICAgJiYgdGhpcy5hdXRvU2VsZWN0VW5pcXVlT3B0aW9uXG4gICAgICAgICAgICAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICAmJiByZXNwb25zZS5kYXRhPy5sZW5ndGggPT09IDE7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOZ3RTZWxlY3REcm9wZG93blBhbmVsSGVpZ2h0IHtcbiAgICBBVVRPID0gJ2F1dG8nLFxuICAgIFhTID0gJ3hzJyxcbiAgICBNRCA9ICdtZCcsXG4gICAgU00gPSAnc20nLFxuICAgIExHID0gJ2xnJyxcbiAgICBYTCA9ICd4bCdcbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2hpZGRlbl09J3NoaW5pbmcnXG4gICAgY2xhc3M9XCJ7eyBzaGluaW5nID8gJycgOiAnYmxvY2snIH19IHt7IG5ndFN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ3RleHQnLCAnZm9udCcsICdmb250Q2FzZSddKSB9fSBtYi0yIGZsZXhcIj5cbiAgICA8bmd0LXN2ZyAqbmdJZj1cImxhYmVsSWNvblwiIGNsYXNzPVwibXItMSB7e2xhYmVsSWNvbkNvbG9yfX1cIiBzcmM9XCJ7e2xhYmVsSWNvbn19XCI+PC9uZ3Qtc3ZnPlxuICAgIHt7IGxhYmVsIH19OlxuXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQtbWQgbWwtMVwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XG5cbiAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBbaWNvbkNvbG9yXT1cImhlbHBUZXh0Q29sb3JcIiBbaGVscGVyUmV2ZXJzZVlQb3NpdGlvbl09XCJoZWxwZXJSZXZlcnNlWVBvc2l0aW9uXCIgW2F1dG9YUmV2ZXJzZV09XCJoZWxwZXJBdXRvWFJldmVyc2VcIiBjbGFzcz1cIm1sLTFcIj5cbiAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICA8L25ndC1oZWxwZXI+XG48L2xhYmVsPlxuXG48ZGl2IFtoaWRkZW5dPSdzaGluaW5nJyBjbGFzcz1cInt7IGdldFNlbGVjdENsYXNzKCkgfX0gbm9ybWFsLWNhc2VcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDNyZW07XCI+XG4gICAgPG5nLXNlbGVjdCBjbGFzcz1cImN1c3RvbVwiIFsobmdNb2RlbCldPSduYXRpdmVWYWx1ZScgW25hbWVdPSduYXRpdmVOYW1lJyBbYWRkVGFnXT0nYWxsb3dDcmVhdGUnXG4gICAgICAgIFthZGRUYWdUZXh0XT1cImNyZWF0ZVRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3RDcmVhdGVUZXh0XCIgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWxcIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwidHlwZWFoZWFkXCJcbiAgICAgICAgW25vdEZvdW5kVGV4dF09XCJub3RGb3VuZFRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3ROb3RGb3VuZFRleHRcIiBbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT0naXNEaXNhYmxlZCB8fCBpc1JlYWRvbmx5JyBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZSAmJiBoYXNTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCIgW3RyYWNrQnlGbl09XCJ0cmFja0J5XCIgW2xhYmVsRm9ySWRdPVwibGFiZWxGb3JJZFwiXG4gICAgICAgIFt0eXBlVG9TZWFyY2hUZXh0XT1cInR5cGVUb1NlYXJjaFRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3RUeXBlVG9TZWFyY2hUZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0U2VsZWN0UGxhY2Vob2xkZXJcIiBbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uXCJcbiAgICAgICAgW2dyb3VwQnldPVwiZ3JvdXBCeVwiIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUb29sdGlwIHx8IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0U2VsZWN0Q2xlYXJBbGxUb29sdGlwXCJcbiAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiIFtiaW5kVmFsdWVdPVwiYmluZFZhbHVlXCIgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgIFtsb2FkaW5nVGV4dF09XCJsb2FkaW5nVGV4dCB8fCBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndFNlbGVjdExvYWRpbmdUZXh0XCIgW21heFNlbGVjdGVkSXRlbXNdPVwibWF4U2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiIFtpdGVtc109XCJuZ1NlbGVjdEl0ZW1zIHwgYXN5bmNcIiBbZ3JvdXBWYWx1ZV09XCJncm91cFZhbHVlXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgIFtjb21wYXJlV2l0aF09J2NvbXBhcmVXaXRoJyBbaW5wdXRBdHRyc109XCJpbnB1dEF0dHJzXCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCIgKGNsZWFyKT0nb25DbGVhclNlbGVjdCgpJyAocmVtb3ZlKT0nb25SZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50KSdcbiAgICAgICAgKGNsaWNrKT1cIndhc0NsaWNrZWQgPSB0cnVlXCI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPSduZ3RTZWxlY3RIZWFkZXJUZW1wbGF0ZScgbmctaGVhZGVyLXRtcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuZ3RTZWxlY3RIZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBwci0xXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZS1pY29uIHB4LTEgaC1mdWxsIGJvcmRlci1yIG1yLTIge3sgbmd0U3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAndGV4dCddKSB9fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPSdyZW1vdmVJdGVtKCRldmVudCwgaXRlbSknPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm5nLXZhbHVlLWljb24gZmlsbC1jdXJyZW50IHNlbGYtY2VudGVyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuMSAxNy4ybC01LjMtNS4zIDUuMy01LjMtMS44LTEuOC01LjMgNS40LTUuMy01LjMtMS44IDEuNyA1LjMgNS4zLTUuMyA1LjNMNi43IDE5bDUuMy01LjMgNS4zIDUuMyAxLjgtMS44elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9J25ndE9wdGlvblNlbGVjdGVkVGVtcGxhdGUnIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ndE9wdGlvblNlbGVjdGVkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPSchbmd0T3B0aW9uU2VsZWN0ZWRUZW1wbGF0ZScgW25nVGVtcGxhdGVPdXRsZXRdPVwibmd0T3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ndE9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLCBpbmRleDogaW5kZXgsIHNlYXJjaFRlcm06IHNlYXJjaCB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctc2VsZWN0PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9J3NoaW5pbmcnPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cInt7IG5ndFN0eWxlLmNvbXBpbGUoWydoJ10pIH19IHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5ndC12YWxpZGF0aW9uIFtjb250cm9sXT1cImZvcm1Db250cm9sXCIgW2NvbnRhaW5lcl09XCJmb3JtQ29udGFpbmVyXCI+PC9uZ3QtdmFsaWRhdGlvbj5cblxuPGlucHV0ICpuZ0lmPSdjb21wb25lbnRSZWFkeScgdHlwZT0naGlkZGVuJyBbbmdNb2RlbF09XCJ2YWx1ZVwiIFtuYW1lXT1cIm5hbWVcIiBbdmFsdWVdPVwidmFsdWVcIj5cbiJdfQ==
|
|
568
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3Qtc2VsZWN0L25ndC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlbGVjdC9uZ3Qtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixJQUFJLEVBRUosS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBWSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQVksT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWM1RyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQTZGbEQsWUFFVyxzQkFBOEMs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QVc7c0JBQTFCLEtBQUs7O0FBdVpWLE1BQU0sQ0FBTixJQUFZLDRCQU9YO0FBUEQsV0FBWSw0QkFBNEI7SUFDcEMsNkNBQWEsQ0FBQTtJQUNiLHlDQUFTLENBQUE7SUFDVCx5Q0FBUyxDQUFBO0lBQ1QseUNBQVMsQ0FBQTtJQUNULHlDQUFTLENBQUE7SUFDVCx5Q0FBUyxDQUFBO0FBQ2IsQ0FBQyxFQVBXLDRCQUE0QixLQUE1Qiw0QkFBNEIsUUFPdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRG9DaGVjayxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nT3B0aW9uLCBOZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd0QmFzZU5nTW9kZWwsIE5ndE1ha2VQcm92aWRlciB9IGZyb20gJy4uLy4uL2Jhc2Uvbmd0LWJhc2UtbmctbW9kZWwnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbmd0LXN0eWxpemFibGUvbmd0LXN0eWxpemFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldEVudW1Gcm9tU3RyaW5nIH0gZnJvbSAnLi4vLi4vaGVscGVycy9lbnVtL2VudW0nO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXVpZCc7XG5pbXBvcnQgeyBOZ3RIdHRwUmVzcG9uc2UsIE5ndEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL25ndC10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL25ndC1mb3JtL25ndC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RTZWxlY3RIZWFkZXJUbXAsIE5ndFNlbGVjdE9wdGlvblNlbGVjdGVkVG1wLCBOZ3RTZWxlY3RPcHRpb25UbXAgfSBmcm9tICcuL25ndC1zZWxlY3QuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3Qtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE5ndE1ha2VQcm92aWRlcihOZ3RTZWxlY3RDb21wb25lbnQpXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE5ndFNlbGVjdENvbXBvbmVudCBleHRlbmRzIE5ndEJhc2VOZ01vZGVsIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgRG9DaGVjayB7XG4gICAgQFZpZXdDaGlsZChOZ1NlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIG5nU2VsZWN0Q29tcG9uZW50OiBOZ1NlbGVjdENvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKE5ndFNlbGVjdE9wdGlvblRtcCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBwdWJsaWMgbmd0T3B0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZChOZ3RTZWxlY3RPcHRpb25TZWxlY3RlZFRtcCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBwdWJsaWMgbmd0T3B0aW9uU2VsZWN0ZWRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKE5ndFNlbGVjdEhlYWRlclRtcCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBwdWJsaWMgbmd0U2VsZWN0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogVmlzdWFsICovXG4gICAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWxJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGxhYmVsSWNvbkNvbG9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUaXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGV4dENvbG9yOiBzdHJpbmcgPSAndGV4dC1ncmVlbi01MDAnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaGluaW5nID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ1RleHQ6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBub3RGb3VuZFRleHQ6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93blBvc2l0aW9uID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0eXBlVG9TZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xlYXJBbGxUb29sdGlwOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjcmVhdGVUZXh0OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWxGb3JJZDogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duUGFuZWxNaW5IZWlnaHQ6IE5ndFNlbGVjdERyb3Bkb3duUGFuZWxIZWlnaHQgPSBOZ3RTZWxlY3REcm9wZG93blBhbmVsSGVpZ2h0LkFVVE87XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlclJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlckF1dG9YUmV2ZXJzZTogYm9vbGVhbjtcblxuICAgIC8qKiBCZWhhdmlvciAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGF1dG9Mb2FkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0NyZWF0ZTogYm9vbGVhbiB8IFByb21pc2U8YW55PiB8IEZ1bmN0aW9uID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGFsbG93T3JpZ2luYWxJdGVtc1Vuc2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHJlbW90ZVJlc291cmNlOiBhbnk7XG4gICAgQElucHV0KCkgcHVibGljIGhpZGVTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYmluZExhYmVsOiBzdHJpbmcgPSAnbmFtZSc7XG4gICAgQElucHV0KCkgcHVibGljIGJpbmRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogQXJyYXk8YW55PiB8IE9ic2VydmFibGU8YW55PiA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpbnB1dEF0dHJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xlYXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZ3JvdXBCeTogc3RyaW5nIHwgRnVuY3Rpb24gPSBudWxsO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhTZWxlY3RlZEl0ZW1zOiBudW1iZXI7XG4gICAgQElucHV0KCkgcHVibGljIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHNlYXJjaGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGVhclNlYXJjaE9uQWRkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgdmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHRhYkluZGV4OiBudW1iZXI7XG4gICAgQElucHV0KCkgcHVibGljIHR5cGVhaGVhZDogU3ViamVjdDxhbnk+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBndWVzc0NvbXBhcmVXaXRoOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1NlbGVjdFVuaXF1ZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBncm91cFZhbHVlOiAoZ3JvdXBLZXk6IHN0cmluZywgY2lsZHJlbjogYW55W10pID0+IE9iamVjdDtcbiAgICBASW5wdXQoKSBwdWJsaWMgdHJhY2tCeTogKGl0ZW06IGFueSkgPT4gYW55O1xuXG4gICAgLyoqIFZhbGlkYXRpb24gKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkxvYWRSZW1vdGVSZXNvdXJjZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBuYXRpdmVOYW1lID0gdXVpZCgpO1xuICAgIHB1YmxpYyBuZ3RTdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5nU2VsZWN0SXRlbXM6IGFueSA9IFtdO1xuICAgIHB1YmxpYyBuYXRpdmVWYWx1ZTogYW55O1xuICAgIHB1YmxpYyBjb21wb25lbnRSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyB3YXNDbGlja2VkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBuZ1NlYXJjaE9ic2VydmVyOiBPYnNlcnZlcjxhbnk+O1xuICAgIHByaXZhdGUgb3JpZ2luYWxQZXJQYWdlID0gMTU7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEl0ZW1zOiBBcnJheTxhbnk+O1xuXG4gICAgcHJpdmF0ZSBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBmaWVsZDogJycsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgIGNvdW50OiBudWxsLFxuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgIHBhZ2VzOiBudWxsLFxuICAgICAgICAgICAgdG90YWw6IG51bGwsXG4gICAgICAgICAgICBmcm9tOiBudWxsLFxuICAgICAgICAgICAgdG86IG51bGwsXG4gICAgICAgICAgICBwZXJfcGFnZTogbnVsbFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2VhcmNoVGltZW91dDogYW55O1xuICAgIHByaXZhdGUgaGFkRmlyc3RJdGVtc0xvYWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKClcbiAgICAgICAgcHVibGljIG5ndFN0eWxpemFibGVEaXJlY3RpdmU6IE5ndFN0eWxpemFibGVEaXJlY3RpdmUsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwdWJsaWMgbmd0Rm9ybUNvbXBvbmVudDogTmd0Rm9ybUNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBuZ3RIdHRwOiBOZ3RIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHB1YmxpYyBuZ3RUcmFuc2xhdGVTZXJ2aWNlOiBOZ3RUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmd0Rm9ybUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5zaGluaW5nID0gdGhpcy5uZ3RGb3JtQ29tcG9uZW50LmlzU2hpbmluZygpO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm5ndEZvcm1Db21wb25lbnQub25TaGluaW5nQ2hhbmdlLnN1YnNjcmliZSgoc2hpbmluZzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSBzaGluaW5nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZS5nZXROZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RTZWxlY3QnLCB7XG4gICAgICAgICAgICBoOiAnaC0xMicsXG4gICAgICAgICAgICB0ZXh0OiAndGV4dC1zbScsXG4gICAgICAgICAgICBmb250Q2FzZTogJycsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIGJnOiAnYmctd2hpdGUnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb21wYXJlV2l0aCA9IChhOiBhbnksIGI6IGFueSkgPT4gYSA9PT0gYjtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Db250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZWxlbWVudCBtdXN0IGJlIGluc2lkZSBhIDxmb3JtICNmb3JtPSduZ0Zvcm0nPiB0YWchXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZWxlbWVudCBtdXN0IGNvbnRhaW4gYSBuYW1lIGF0dHJpYnV0ZSFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPblNlbGVjdCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5pdENvbXBvbmVudFZhbGlkYXRpb24oKTtcbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICB0aGlzLm5nU2VsZWN0SXRlbXMgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdTZWFyY2hPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChbXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuYmluZElubmVySW5wdXRVbmlxdWVJZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYWRGaXJzdEl0ZW1zTG9hZCAmJiB0aGlzLmNhbkxvYWRJdGVtcygpKSB7XG4gICAgICAgICAgICB0aGlzLmhhZEZpcnN0SXRlbXNMb2FkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5pbml0TmdTZWxlY3RJdGVtcygpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcGxhY2VTaG93QWRkVGFnKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm5nU2VsZWN0Q29tcG9uZW50Lml0ZW1zTGlzdC5tYXBTZWxlY3RlZEl0ZW1zKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2V0RWxlbWVudFRpdGxlKCkgfHwgdGhpcy5nZXRFbGVtZW50VGl0bGUoKSA9PT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdTZWxlY3RDb21wb25lbnQuZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC50aXRsZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IHRoaXMubmdTZWxlY3RDb21wb25lbnQuc2VsZWN0ZWRJdGVtcz8ubWFwKChlbGVtZW50KSA9PiBlbGVtZW50LnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJdGVtKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmNsZWFySXRlbShpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5pbml0TmdTZWxlY3RJdGVtcygpO1xuICAgICAgICB0aGlzLmluaXRDb21wb25lbnRWYWxpZGF0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5yZW1vdGVSZXNvdXJjZSB8fCBjaGFuZ2VzLml0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmluaXROZ1NlbGVjdEl0ZW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5kcm9wZG93blBhbmVsTWluSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUGFuZWxNaW5IZWlnaHQgPSBnZXRFbnVtRnJvbVN0cmluZyhjaGFuZ2VzLmRyb3Bkb3duUGFuZWxNaW5IZWlnaHQuY3VycmVudFZhbHVlLCBOZ3RTZWxlY3REcm9wZG93blBhbmVsSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGb2N1cygpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VsZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMgPSB7fTtcblxuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZVNlbGVjdGVkSXRlbShpdGVtOiBOZ09wdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMuYWxsb3dPcmlnaW5hbEl0ZW1zVW5zZWxlY3QgJiYgdGhpcy5oYWRQcmV2aW91c1NlbGVjdGlvbihpdGVtLnZhbHVlKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LnNlbGVjdChpdGVtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVySW5wdXRWYWx1ZSgpIHtcbiAgICAgICAgbGV0IGlucHV0RmllbGQgPSB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LnNlYXJjaElucHV0ID9cbiAgICAgICAgICAgIHRoaXMubmdTZWxlY3RDb21wb25lbnQuc2VhcmNoSW5wdXQgOlxuICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdENvbXBvbmVudFsnc2VhcmNoSW5wdXQnXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpbnB1dEZpZWxkICYmXG4gICAgICAgICAgICBpbnB1dEZpZWxkLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaChmaWx0ZXJzOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycyA9IHsgLi4udGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycywgLi4uZmlsdGVycyB9O1xuXG4gICAgICAgIGlmICghdGhpcy5yZW1vdGVSZXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0SHR0cFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMucmVtb3RlUmVzb3VyY2UsIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMsIHRoaXMuY3VycmVudFN0YXRlLnBhZ2luYXRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IE5ndEh0dHBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kQ29tcGFyZVdpdGhCeVJlc3BvbnNlKHJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdTZWFyY2hPYnNlcnZlci5uZXh0KHJlc3BvbnNlLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FuQXV0b1NlbGVjdFVuaXF1ZU9wdGlvbihyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5hdGl2ZUNoYW5nZShyZXNwb25zZS5kYXRhWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZFJlbW90ZVJlc291cmNlLmVtaXQocmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5wYWdpbmF0aW9uID0gcmVzcG9uc2UubWV0YS5wYWdpbmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1NlYXJjaE9ic2VydmVyLm5leHQoW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9LCA1MDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5hdGl2ZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzQmV0d2Vlbk1vZGVscyh0aGlzLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2UodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hhbmdlc0JldHdlZW5Nb2RlbHModmFsdWUsIHRoaXMubmF0aXZlVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgodmFsKSA9PiB2YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TY3JvbGwoeyBlbmQgfSkge1xuICAgICAgICBsZXQgY3VycmVudFBlclBhZ2UgPSB0aGlzLmN1cnJlbnRTdGF0ZS5wYWdpbmF0aW9uLnBlcl9wYWdlO1xuICAgICAgICBsZXQgbWF4SXRlbnNJbkJhY2tlbmQgPSB0aGlzLmN1cnJlbnRTdGF0ZS5wYWdpbmF0aW9uLnRvdGFsO1xuXG4gICAgICAgIGlmIChlbmQgPj0gY3VycmVudFBlclBhZ2UgJiYgZW5kIDw9IG1heEl0ZW5zSW5CYWNrZW5kKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5wYWdpbmF0aW9uLnBlcl9wYWdlID0gcGFyc2VJbnQodGhpcy5jdXJyZW50U3RhdGUucGFnaW5hdGlvbi5wZXJfcGFnZSkgKyB0aGlzLm9yaWdpbmFsUGVyUGFnZTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoKHt9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYXNTZWxlY3RlZFZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VsZWN0Q2xhc3MoKSB7XG4gICAgICAgIGxldCBzZWxlY3RDbGFzcyA9IHRoaXMuZHJvcGRvd25QYW5lbE1pbkhlaWdodCA/ICduZy1zZWxlY3QtZHJvcGRvd24tcGFuZWwtJyArIHRoaXMuZHJvcGRvd25QYW5lbE1pbkhlaWdodCA6ICduZy1zZWxlY3QtZHJvcGRvd24tcGFuZWwtYXV0byc7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgc2VsZWN0Q2xhc3MgKz0gJyBzZWxlY3QtYm9yZGVyLWRpc2FibGVkJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1Db250cm9sICYmIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzICYmICh0aGlzLmZvcm1Db250cm9sLmRpcnR5IHx8ICh0aGlzLmZvcm1Db250YWluZXIgJiYgdGhpcy5mb3JtQ29udGFpbmVyWydzdWJtaXR0ZWQnXSkpKSB7XG4gICAgICAgICAgICBzZWxlY3RDbGFzcyArPSAnIHNlbGVjdC1ib3JkZXItZXJyb3InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0Q2xhc3MgKz0gJyBzZWxlY3QtYm9yZGVyLW5vcm1hbCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgc2VsZWN0Q2xhc3MgKz0gYCBoLWF1dG8gJHt0aGlzLm5ndFN0eWxlLmNvbXBpbGUoWydjb2xvci5iZycsICdjb2xvci50ZXh0J10pfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RDbGFzcyArPSBgICR7dGhpcy5uZ3RTdHlsZS5jb21waWxlKFsnaCcsICdjb2xvci5iZycsICdjb2xvci50ZXh0J10pfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0Q2xhc3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TmdTZWxlY3RJdGVtcygpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlUmVzb3VyY2UgJiYgdGhpcy5jYW5Mb2FkSXRlbXMoKSkge1xuICAgICAgICAgICAgdGhpcy5uZ1NlbGVjdEl0ZW1zID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdTZWFyY2hPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKHt9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMudHlwZWFoZWFkLnN1YnNjcmliZSgodGVybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaCh7IHRlcm06IHRlcm0gfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcyBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMubmdTZWxlY3RJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbkF1dG9TZWxlY3RVbmlxdWVPcHRpb24oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25OYXRpdmVDaGFuZ2UodGhpcy5pdGVtc1swXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmdTZWxlY3RJdGVtcyA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdTZWFyY2hPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5pdGVtcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENvbXBvbmVudFZhbGlkYXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250YWluZXIgJiYgdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wgJiYgKHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250YWluZXIuY29udHJvbC5nZXQodGhpcy5uYW1lKSkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250YWluZXIuY29udHJvbC5nZXQodGhpcy5uYW1lKTtcbiAgICAgICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWxlbWVudFRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQudGl0bGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNDaGFuZ2VzQmV0d2Vlbk1vZGVscyh2YWx1ZSwgbmF0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmF0aXZlVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN5bmNWYWxpZGF0b3JzID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgc3luY1ZhbGlkYXRvcnMucHVzaCh0aGlzLmlzUmVxdWlyZWRWYWxpZGF0b3IoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhzeW5jVmFsaWRhdG9ycyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1JlcXVpcmVkVmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIEpTT04uc3RyaW5naWZ5KGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7ICdyZXF1aXJlZCc6IHRydWUgfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcGxhY2VTaG93QWRkVGFnKCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5uZ1NlbGVjdENvbXBvbmVudCwgJ3Nob3dBZGRUYWcnLCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubmdTZWxlY3RDb21wb25lbnRbJ3NlYXJjaFRlcm0nXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgdGVybSA9IHRoaXMubmdTZWxlY3RDb21wb25lbnRbJ3NlYXJjaFRlcm0nXS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdTZWxlY3RDb21wb25lbnQuYWRkVGFnICYmICF0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgJiYgKCF0aGlzLmhhc1Rlcm1JbkZpbHRlcmVkSXRlbXModGVybSkgJiYgKCF0aGlzLmhhc1Rlcm1JblNlbGVjdGVkSXRlbXModGVybSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICF0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmhpZGVTZWxlY3RlZCAmJiB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmlzT3BlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRJbm5lcklucHV0VW5pcXVlSWQoKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkSW5wdXRzID0gdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xuXG4gICAgICAgIGlmIChjaGlsZElucHV0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lcklucHV0ID0gY2hpbGRJbnB1dHNbMF07XG5cbiAgICAgICAgICAgIGlubmVySW5wdXQuaWQgPSB1dWlkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb21wYXJlV2l0aEJ5UmVzcG9uc2UocmVzcG9uc2U6IE5ndEh0dHBSZXNwb25zZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ndWVzc0NvbXBhcmVXaXRoKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YT8ubGVuZ3RoICYmIHR5cGVvZiByZXNwb25zZS5kYXRhWzBdWydnZXRBcGlJZCddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wYXJlV2l0aCA9IChhOiBhbnksIGI6IGFueSkgPT4gYS5nZXRBcGlJZCgpID09IGIuZ2V0QXBpSWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wYXJlV2l0aCA9IChhOiBhbnksIGI6IGFueSkgPT4gYSA9PT0gYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzVGVybUluRmlsdGVyZWRJdGVtcyh0ZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IHRoaXMubmdTZWxlY3RDb21wb25lbnQuaXRlbXNMaXN0LmZpbHRlcmVkSXRlbXM7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkSXRlbXM/Lmxlbmd0aCAmJiB0aGlzLmlzQ29sb3F1ZW50UmVzb3VyY2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMuc29tZSgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gKDxhbnk+ZWxlbWVudC52YWx1ZSkuZ2V0QXR0cmlidXRlKHRoaXMuYmluZExhYmVsKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUgJiYgZWxlbWVudFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRlcm07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zLnNvbWUoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gKDxhbnk+ZWxlbWVudC52YWx1ZSlbdGhpcy5iaW5kTGFiZWxdO1xuXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudFZhbHVlICYmIGVsZW1lbnRWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSB0ZXJtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1Rlcm1JblNlbGVjdGVkSXRlbXModGVybTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LnNlbGVjdGVkSXRlbXM7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJiB0aGlzLmlzQ29sb3F1ZW50UmVzb3VyY2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbXMuc29tZSgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gKDxhbnk+ZWxlbWVudC52YWx1ZSkuZ2V0QXR0cmlidXRlKHRoaXMuYmluZExhYmVsKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUgJiYgZWxlbWVudFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRlcm07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLnNvbWUoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gKDxhbnk+ZWxlbWVudC52YWx1ZSlbdGhpcy5iaW5kTGFiZWxdO1xuXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudFZhbHVlICYmIGVsZW1lbnRWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSB0ZXJtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhZFByZXZpb3VzU2VsZWN0aW9uKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9yaWdpbmFsSXRlbXM/LmZpbmQoZWxlbWVudCA9PiB0aGlzLmNvbXBhcmVXaXRoKGVsZW1lbnQsIGl0ZW0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ29sb3F1ZW50UmVzb3VyY2UoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5uZ1NlbGVjdENvbXBvbmVudC5pdGVtc0xpc3QuaXRlbXM7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zPy5sZW5ndGggJiYgdHlwZW9mIGl0ZW1zWzBdLnZhbHVlWydnZXRBdHRyaWJ1dGUnXSA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkxvYWRJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b0xvYWQgfHwgKCF0aGlzLmlzRGlzYWJsZWQgJiYgdGhpcy53YXNDbGlja2VkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkF1dG9TZWxlY3RVbmlxdWVPcHRpb24ocmVzcG9uc2U/OiBOZ3RIdHRwUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlICYmIHRoaXMuYXV0b1NlbGVjdFVuaXF1ZU9wdGlvblxuICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHJlc3BvbnNlPy5kYXRhKSAmJiByZXNwb25zZT8uZGF0YT8ubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgIHx8ICghcmVzcG9uc2UgJiYgQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSAmJiB0aGlzLml0ZW1zPy5sZW5ndGggPT0gMSlcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOZ3RTZWxlY3REcm9wZG93blBhbmVsSGVpZ2h0IHtcbiAgICBBVVRPID0gJ2F1dG8nLFxuICAgIFhTID0gJ3hzJyxcbiAgICBNRCA9ICdtZCcsXG4gICAgU00gPSAnc20nLFxuICAgIExHID0gJ2xnJyxcbiAgICBYTCA9ICd4bCdcbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2hpZGRlbl09J3NoaW5pbmcnXG4gICAgY2xhc3M9XCJ7eyBzaGluaW5nID8gJycgOiAnYmxvY2snIH19IHt7IG5ndFN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ3RleHQnLCAnZm9udCcsICdmb250Q2FzZSddKSB9fSBtYi0yIGZsZXhcIj5cbiAgICA8bmd0LXN2ZyAqbmdJZj1cImxhYmVsSWNvblwiIGNsYXNzPVwibXItMSB7e2xhYmVsSWNvbkNvbG9yfX1cIiBzcmM9XCJ7e2xhYmVsSWNvbn19XCI+PC9uZ3Qtc3ZnPlxuICAgIHt7IGxhYmVsIH19OlxuXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQtbWQgbWwtMVwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XG5cbiAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBbaWNvbkNvbG9yXT1cImhlbHBUZXh0Q29sb3JcIiBbaGVscGVyUmV2ZXJzZVlQb3NpdGlvbl09XCJoZWxwZXJSZXZlcnNlWVBvc2l0aW9uXCIgW2F1dG9YUmV2ZXJzZV09XCJoZWxwZXJBdXRvWFJldmVyc2VcIiBjbGFzcz1cIm1sLTFcIj5cbiAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICA8L25ndC1oZWxwZXI+XG48L2xhYmVsPlxuXG48ZGl2IFtoaWRkZW5dPSdzaGluaW5nJyBjbGFzcz1cInt7IGdldFNlbGVjdENsYXNzKCkgfX0gbm9ybWFsLWNhc2VcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDNyZW07XCI+XG4gICAgPG5nLXNlbGVjdCBjbGFzcz1cImN1c3RvbVwiIFsobmdNb2RlbCldPSduYXRpdmVWYWx1ZScgW25hbWVdPSduYXRpdmVOYW1lJyBbYWRkVGFnXT0nYWxsb3dDcmVhdGUnXG4gICAgICAgIFthZGRUYWdUZXh0XT1cImNyZWF0ZVRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3RDcmVhdGVUZXh0XCIgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWxcIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwidHlwZWFoZWFkXCJcbiAgICAgICAgW25vdEZvdW5kVGV4dF09XCJub3RGb3VuZFRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3ROb3RGb3VuZFRleHRcIiBbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT0naXNEaXNhYmxlZCB8fCBpc1JlYWRvbmx5JyBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZSAmJiBoYXNTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCIgW3RyYWNrQnlGbl09XCJ0cmFja0J5XCIgW2xhYmVsRm9ySWRdPVwibGFiZWxGb3JJZFwiXG4gICAgICAgIFt0eXBlVG9TZWFyY2hUZXh0XT1cInR5cGVUb1NlYXJjaFRleHQgfHwgbmd0VHJhbnNsYXRlU2VydmljZS5uZ3RTZWxlY3RUeXBlVG9TZWFyY2hUZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0U2VsZWN0UGxhY2Vob2xkZXJcIiBbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uXCJcbiAgICAgICAgW2dyb3VwQnldPVwiZ3JvdXBCeVwiIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUb29sdGlwIHx8IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0U2VsZWN0Q2xlYXJBbGxUb29sdGlwXCJcbiAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiIFtiaW5kVmFsdWVdPVwiYmluZFZhbHVlXCIgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgIFtsb2FkaW5nVGV4dF09XCJsb2FkaW5nVGV4dCB8fCBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndFNlbGVjdExvYWRpbmdUZXh0XCIgW21heFNlbGVjdGVkSXRlbXNdPVwibWF4U2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiIFtpdGVtc109XCJuZ1NlbGVjdEl0ZW1zIHwgYXN5bmNcIiBbZ3JvdXBWYWx1ZV09XCJncm91cFZhbHVlXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgIFtjb21wYXJlV2l0aF09J2NvbXBhcmVXaXRoJyBbaW5wdXRBdHRyc109XCJpbnB1dEF0dHJzXCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCIgKGNsZWFyKT0nb25DbGVhclNlbGVjdCgpJyAocmVtb3ZlKT0nb25SZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50KSdcbiAgICAgICAgKGNsaWNrKT1cIndhc0NsaWNrZWQgPSB0cnVlXCI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPSduZ3RTZWxlY3RIZWFkZXJUZW1wbGF0ZScgbmctaGVhZGVyLXRtcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuZ3RTZWxlY3RIZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBwci0xXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZS1pY29uIHB4LTEgaC1mdWxsIGJvcmRlci1yIG1yLTIge3sgbmd0U3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAndGV4dCddKSB9fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPSdyZW1vdmVJdGVtKCRldmVudCwgaXRlbSknPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm5nLXZhbHVlLWljb24gZmlsbC1jdXJyZW50IHNlbGYtY2VudGVyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuMSAxNy4ybC01LjMtNS4zIDUuMy01LjMtMS44LTEuOC01LjMgNS40LTUuMy01LjMtMS44IDEuNyA1LjMgNS4zLTUuMyA1LjNMNi43IDE5bDUuMy01LjMgNS4zIDUuMyAxLjgtMS44elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9J25ndE9wdGlvblNlbGVjdGVkVGVtcGxhdGUnIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ndE9wdGlvblNlbGVjdGVkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPSchbmd0T3B0aW9uU2VsZWN0ZWRUZW1wbGF0ZScgW25nVGVtcGxhdGVPdXRsZXRdPVwibmd0T3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ndE9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLCBpbmRleDogaW5kZXgsIHNlYXJjaFRlcm06IHNlYXJjaCB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctc2VsZWN0PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9J3NoaW5pbmcnPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cInt7IG5ndFN0eWxlLmNvbXBpbGUoWydoJ10pIH19IHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5ndC12YWxpZGF0aW9uIFtjb250cm9sXT1cImZvcm1Db250cm9sXCIgW2NvbnRhaW5lcl09XCJmb3JtQ29udGFpbmVyXCI+PC9uZ3QtdmFsaWRhdGlvbj5cblxuPGlucHV0ICpuZ0lmPSdjb21wb25lbnRSZWFkeScgdHlwZT0naGlkZGVuJyBbbmdNb2RlbF09XCJ2YWx1ZVwiIFtuYW1lXT1cIm5hbWVcIiBbdmFsdWVdPVwidmFsdWVcIj5cbiJdfQ==
|
|
@@ -5,9 +5,9 @@ export class NgtSelectOptionTmp {
|
|
|
5
5
|
this.template = template;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
NgtSelectOptionTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
9
|
-
NgtSelectOptionTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
8
|
+
NgtSelectOptionTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectOptionTmp, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
+
NgtSelectOptionTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: NgtSelectOptionTmp, selector: "[ngt-select-option]", ngImport: i0 });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectOptionTmp, decorators: [{
|
|
11
11
|
type: Directive,
|
|
12
12
|
args: [{ selector: '[ngt-select-option]' }]
|
|
13
13
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
@@ -16,9 +16,9 @@ export class NgtSelectOptionSelectedTmp {
|
|
|
16
16
|
this.template = template;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
NgtSelectOptionSelectedTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
20
|
-
NgtSelectOptionSelectedTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
19
|
+
NgtSelectOptionSelectedTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectOptionSelectedTmp, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
NgtSelectOptionSelectedTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: NgtSelectOptionSelectedTmp, selector: "[ngt-select-option-selected]", ngImport: i0 });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectOptionSelectedTmp, decorators: [{
|
|
22
22
|
type: Directive,
|
|
23
23
|
args: [{ selector: '[ngt-select-option-selected]' }]
|
|
24
24
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
@@ -27,9 +27,9 @@ export class NgtSelectHeaderTmp {
|
|
|
27
27
|
this.template = template;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
NgtSelectHeaderTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
31
|
-
NgtSelectHeaderTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
30
|
+
NgtSelectHeaderTmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectHeaderTmp, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
31
|
+
NgtSelectHeaderTmp.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: NgtSelectHeaderTmp, selector: "[ngt-select-header]", ngImport: i0 });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectHeaderTmp, decorators: [{
|
|
33
33
|
type: Directive,
|
|
34
34
|
args: [{ selector: '[ngt-select-header]' }]
|
|
35
35
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
@@ -12,8 +12,8 @@ import { NgtSelectHeaderTmp, NgtSelectOptionSelectedTmp, NgtSelectOptionTmp } fr
|
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
export class NgtSelectModule {
|
|
14
14
|
}
|
|
15
|
-
NgtSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
16
|
-
NgtSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
15
|
+
NgtSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
+
NgtSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectModule, declarations: [NgtSelectComponent,
|
|
17
17
|
NgtSelectOptionTmp,
|
|
18
18
|
NgtSelectOptionSelectedTmp,
|
|
19
19
|
NgtSelectHeaderTmp], imports: [CommonModule,
|
|
@@ -27,7 +27,7 @@ NgtSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
|
|
|
27
27
|
NgtSelectOptionTmp,
|
|
28
28
|
NgtSelectOptionSelectedTmp,
|
|
29
29
|
NgtSelectHeaderTmp] });
|
|
30
|
-
NgtSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
30
|
+
NgtSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectModule, imports: [CommonModule,
|
|
31
31
|
FormsModule,
|
|
32
32
|
NgSelectModule,
|
|
33
33
|
NgtValidationModule,
|
|
@@ -35,7 +35,7 @@ NgtSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
|
|
|
35
35
|
NgtShiningModule,
|
|
36
36
|
NgtHelperModule,
|
|
37
37
|
NgtSvgModule] });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSelectModule, decorators: [{
|
|
39
39
|
type: NgModule,
|
|
40
40
|
args: [{
|
|
41
41
|
declarations: [
|
|
@@ -18,9 +18,9 @@ export class NgtShiningComponent {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
NgtShiningComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
22
|
-
NgtShiningComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
21
|
+
NgtShiningComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningComponent, deps: [{ token: i0.Injector }, { token: i1.NgtStylizableDirective, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
NgtShiningComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtShiningComponent, selector: "ngt-shining", inputs: { shiningWidth: "shiningWidth" }, ngImport: i0, template: "<div class=\"text-center w-full h-full ngt-shining-{{ shiningWidth }} {{ ngtStyle.compile(['rounded']) }}\"></div>", styles: [".ngt-shining-xs{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-xs}.ngt-shining-sm{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-sm}.ngt-shining-lg{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-lg}.ngt-shining-xl{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-xl}\n"] });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
25
|
args: [{ selector: 'ngt-shining', template: "<div class=\"text-center w-full h-full ngt-shining-{{ shiningWidth }} {{ ngtStyle.compile(['rounded']) }}\"></div>", styles: [".ngt-shining-xs{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-xs}.ngt-shining-sm{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-sm}.ngt-shining-lg{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-lg}.ngt-shining-xl{background:#f6f7f8;background-image:linear-gradient(to right,#f6f7f8 0%,#edeef1 20%,#f6f7f8 40%,#f6f7f8 100%);background-repeat:no-repeat;background-size:100%;-webkit-animation-duration:1s;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-name:shimmer-xl}\n"] }]
|
|
26
26
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NgtStylizableDirective, decorators: [{
|
|
@@ -4,10 +4,10 @@ import { NgtShiningComponent } from './ngt-shining.component';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class NgtShiningModule {
|
|
6
6
|
}
|
|
7
|
-
NgtShiningModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
8
|
-
NgtShiningModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
9
|
-
NgtShiningModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
7
|
+
NgtShiningModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NgtShiningModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningModule, declarations: [NgtShiningComponent], imports: [CommonModule], exports: [NgtShiningComponent] });
|
|
9
|
+
NgtShiningModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningModule, imports: [CommonModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtShiningModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
declarations: [NgtShiningComponent],
|
|
@@ -100,11 +100,11 @@ export class NgtSidenavComponent {
|
|
|
100
100
|
return this.screenWidth < 1024;
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
NgtSidenavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
104
|
-
NgtSidenavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
103
|
+
NgtSidenavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavComponent, deps: [{ token: i0.Injector }, { token: i1.NgtStylizableDirective, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
NgtSidenavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSidenavComponent, selector: "ngt-sidenav", inputs: { size: "size", initVisible: "initVisible", closeMenuOnMobileView: "closeMenuOnMobileView" }, host: { listeners: { "window:resize": "bindScreenSize($event)" } }, viewQueries: [{ propertyName: "sideMenuRef", first: true, predicate: ["sideMenu"], descendants: true, static: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex h-full w-full\">\n <ng-container *ngIf=\"visible\">\n <div class=\"{{ getNavSize() }} {{ ngtStyle.compile(['color.bg', 'h']) }} {{ open ? 'block' : 'hidden' }} top-auto fixed {{ isMobileView() ? '' : 'sm:static sm:block' }}\"\n @fadeDownAnimation #sideMenu>\n <ng-content select='[sideMenu]'></ng-content>\n </div>\n\n <ng-container *ngIf=\"open\">\n <button (click)='closeMenu()' tabindex=\"-1\"\n class=\"fixed z-30 inset-0 h-full w-full bg-black opacity-50 cursor-default\">\n </button>\n </ng-container>\n </ng-container>\n\n <div class=\"flex-wrap {{ getContainerSize() }} overflow-auto\" #container>\n <ng-content></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
105
105
|
fadeDownAnimation('fadeDownAnimation', 600)
|
|
106
106
|
] });
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavComponent, decorators: [{
|
|
108
108
|
type: Component,
|
|
109
109
|
args: [{ selector: 'ngt-sidenav', animations: [
|
|
110
110
|
fadeDownAnimation('fadeDownAnimation', 600)
|
|
@@ -4,10 +4,10 @@ import { NgtSidenavComponent } from './ngt-sidenav.component';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class NgtSidenavModule {
|
|
6
6
|
}
|
|
7
|
-
NgtSidenavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
8
|
-
NgtSidenavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
9
|
-
NgtSidenavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
7
|
+
NgtSidenavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NgtSidenavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavModule, declarations: [NgtSidenavComponent], imports: [CommonModule], exports: [NgtSidenavComponent] });
|
|
9
|
+
NgtSidenavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavModule, imports: [CommonModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSidenavModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
declarations: [NgtSidenavComponent],
|
|
@@ -46,13 +46,13 @@ export class NgtSliderComponent extends NgtBaseNgModel {
|
|
|
46
46
|
this.subscriptions = [];
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
NgtSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
50
|
-
NgtSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
49
|
+
NgtSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true }, { token: i0.Renderer2 }, { token: i2.NgtFormComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
NgtSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSliderComponent, selector: "ngt-slider", inputs: { label: "label", shining: "shining", isDisabled: "isDisabled", showPercentageSymbol: "showPercentageSymbol", name: "name", min: "min", max: "max", step: "step", color: "color" }, providers: [
|
|
51
51
|
NgtMakeProvider(NgtSliderComponent),
|
|
52
52
|
], viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true, static: true }, { propertyName: "display", first: true, predicate: ["display"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col\">\n <span *ngIf='label && !shining' class=\"text-sm mb-2\">{{ label }}:</span>\n\n <div class=\"{{ shining ? 'hidden' : 'flex' }} items-center\">\n <input class=\"block w-full cursor-pointer overflow-hidden appearance-none bg-gray-400 {{color}}\"\n [class.cursor-not-allowed]=\"isDisabled\" type=\"range\" [name]='name' ([ngModel])='value'\n oninput=\"display.innerHTML=value\" onchange=\"display.innerHTML=value\" [min]='min' [max]='max' [step]='step'\n [disabled]=\"isDisabled\" #element>\n\n <span id='display' class=\"text-xs ml-2 font-semibold\" #display></span>\n <span *ngIf=\"showPercentageSymbol\" class=\"text-xs font-semibold\">%</span>\n </div>\n</div>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"w-full h-6\"></ngt-shining>\n </div>\n</ng-container>", styles: ["@media screen and (-webkit-min-device-pixel-ratio: 0){input[type=range]::-webkit-slider-thumb{width:15px;-webkit-appearance:none;appearance:none;height:15px;cursor:pointer;background:#FFF;border-radius:50%}.primary::-webkit-slider-thumb{box-shadow:-405px 0 0 400px #4299e1}.success::-webkit-slider-thumb{box-shadow:-405px 0 0 400px #6c9f23}.warning::-webkit-slider-thumb{box-shadow:-405px 0 0 400px #ffb822}.danger::-webkit-slider-thumb{box-shadow:-405px 0 0 400px #f56565}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }], viewProviders: [
|
|
53
53
|
{ provide: ControlContainer, useExisting: NgForm }
|
|
54
54
|
] });
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{ selector: 'ngt-slider', providers: [
|
|
58
58
|
NgtMakeProvider(NgtSliderComponent),
|
|
@@ -5,12 +5,12 @@ import { NgtSliderComponent } from './ngt-slider.component';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class NgtSliderModule {
|
|
7
7
|
}
|
|
8
|
-
NgtSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
9
|
-
NgtSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
8
|
+
NgtSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NgtSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderModule, declarations: [NgtSliderComponent], imports: [CommonModule,
|
|
10
10
|
NgtShiningModule], exports: [NgtSliderComponent] });
|
|
11
|
-
NgtSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
11
|
+
NgtSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderModule, imports: [CommonModule,
|
|
12
12
|
NgtShiningModule] });
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSliderModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
declarations: [NgtSliderComponent],
|
|
@@ -35,9 +35,9 @@ export class NgtSvgComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
NgtSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
39
|
-
NgtSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
38
|
+
NgtSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
NgtSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSvgComponent, selector: "ngt-svg", inputs: { src: "src", class: "class" }, host: { classAttribute: "flex justify-center" }, viewQueries: [{ propertyName: "svgIconElement", first: true, predicate: SvgIconComponent, descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<svg-icon [src]='src' class=\"flex {{ class }}\"></svg-icon>\n", styles: ["svg{height:1rem}.text-xs svg{height:.75rem}.text-sm svg{height:.875rem}.text-base svg{height:1rem}.text-lg svg{height:1.125rem}.text-xl svg{height:1.25rem}.text-2xl svg{height:1.5rem}.text-3xl svg{height:1.875rem}.text-4xl svg{height:2.25rem}.text-5xl svg{height:3rem}.text-6xl svg{height:4rem}\n"], dependencies: [{ kind: "component", type: i1.SvgIconComponent, selector: "svg-icon", inputs: ["stretch", "applyClass", "applyCss", "svgStyle", "src", "name", "svgClass", "class", "viewBox", "svgAriaLabel"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
42
|
args: [{ selector: 'ngt-svg', host: {
|
|
43
43
|
class: 'flex justify-center'
|
|
@@ -7,13 +7,13 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
import * as i1 from "angular-svg-icon";
|
|
8
8
|
export class NgtSvgModule {
|
|
9
9
|
}
|
|
10
|
-
NgtSvgModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
11
|
-
NgtSvgModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
10
|
+
NgtSvgModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
NgtSvgModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgModule, declarations: [NgtSvgComponent], imports: [CommonModule,
|
|
12
12
|
HttpClientModule, i1.AngularSvgIconModule], exports: [NgtSvgComponent] });
|
|
13
|
-
NgtSvgModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
13
|
+
NgtSvgModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgModule, imports: [CommonModule,
|
|
14
14
|
HttpClientModule,
|
|
15
15
|
AngularSvgIconModule.forRoot()] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSvgModule, decorators: [{
|
|
17
17
|
type: NgModule,
|
|
18
18
|
args: [{
|
|
19
19
|
declarations: [NgtSvgComponent],
|