@energycap/components 0.39.6-standalone-components.20240125-1418 → 0.39.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components.module.mjs +401 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +5 -5
- package/esm2020/lib/controls/button/button.component.mjs +5 -6
- package/esm2020/lib/controls/button/copy-button.directive.mjs +3 -4
- package/esm2020/lib/controls/button/copy-table-button.directive.mjs +3 -4
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +8 -10
- package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +4 -4
- package/esm2020/lib/controls/combobox/combobox.component.mjs +9 -9
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +8 -6
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +10 -11
- package/esm2020/lib/controls/form-control/form-control.component.mjs +4 -4
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +4 -5
- package/esm2020/lib/controls/form-group/form-group.component.mjs +4 -5
- package/esm2020/lib/controls/help-popover/help-popover.component.mjs +6 -7
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +12 -11
- package/esm2020/lib/controls/link-button/link-button.component.mjs +3 -3
- package/esm2020/lib/controls/menu/menu.component.mjs +8 -9
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +3 -4
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +6 -6
- package/esm2020/lib/controls/popover/popover.component.mjs +5 -5
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +6 -8
- package/esm2020/lib/controls/select/select.component.mjs +6 -8
- package/esm2020/lib/controls/tabs/tabs.component.mjs +6 -7
- package/esm2020/lib/controls/textbox/textbox.component.mjs +10 -8
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +6 -6
- package/esm2020/lib/display/avatar/avatar.component.mjs +3 -3
- package/esm2020/lib/display/confirm/confirm.component.mjs +12 -12
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +5 -5
- package/esm2020/lib/display/dialog/dialog.component.mjs +3 -4
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +7 -2
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +7 -7
- package/esm2020/lib/display/item-display/item-display.component.mjs +7 -8
- package/esm2020/lib/display/json-display/json-display.component.mjs +6 -6
- package/esm2020/lib/display/resizable/resizable.component.mjs +3 -3
- package/esm2020/lib/display/spinner/spinner.component.mjs +3 -3
- package/esm2020/lib/display/splash/splash.component.mjs +3 -3
- package/esm2020/lib/display/table/resizable-column.component.mjs +3 -3
- package/esm2020/lib/display/table/resizable-table.directive.mjs +3 -4
- package/esm2020/lib/display/table/searchable-table.component.mjs +9 -7
- package/esm2020/lib/display/table/table-detail-row.component.mjs +3 -3
- package/esm2020/lib/display/table/table-locked-column.component.mjs +3 -3
- package/esm2020/lib/display/table/table-master-header-row.component.mjs +4 -4
- package/esm2020/lib/display/table/table-master-row.component.mjs +6 -6
- package/esm2020/lib/display/table/table-pagination.component.mjs +6 -6
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +6 -6
- package/esm2020/lib/display/table/table.component.mjs +5 -5
- package/esm2020/lib/display/tags/tags.component.mjs +5 -6
- package/esm2020/lib/display/toast/toast/toast.component.mjs +7 -8
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +4 -4
- package/esm2020/lib/display/tooltip/tooltip.component.mjs +5 -5
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +3 -4
- package/esm2020/lib/display/tour/tour.component.mjs +6 -6
- package/esm2020/lib/display/tree/tree.component.mjs +18 -8
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +7 -8
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +3 -4
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +3 -4
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +3 -6
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +4 -13
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +4 -11
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +4 -11
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +4 -11
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +4 -13
- package/esm2020/lib/shared/page/page-title/page-title.component.mjs +5 -5
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +11 -10
- package/esm2020/lib/shared/testing/public-mocks.spec.mjs +3 -6
- package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +5 -5
- package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +5 -6
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/energycap-components.mjs +9030 -8739
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +8455 -8164
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/lib/components.module.d.ts +87 -0
- package/lib/controls/banner/banner.component.d.ts +1 -1
- package/lib/controls/button/button.component.d.ts +1 -1
- package/lib/controls/button/copy-button.directive.d.ts +1 -1
- package/lib/controls/button/copy-table-button.directive.d.ts +1 -1
- package/lib/controls/checkbox/checkbox.component.d.ts +3 -3
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +1 -1
- package/lib/controls/combobox/combobox.component.d.ts +1 -1
- package/lib/controls/dropdown/dropdown.component.d.ts +1 -1
- package/lib/controls/file-upload/file-upload.component.d.ts +1 -1
- package/lib/controls/form-control/form-control.component.d.ts +1 -1
- package/lib/controls/form-control-label/form-control-label.component.d.ts +1 -1
- package/lib/controls/form-group/form-group.component.d.ts +1 -1
- package/lib/controls/help-popover/help-popover.component.d.ts +1 -1
- package/lib/controls/item-picker/item-picker.component.d.ts +1 -1
- package/lib/controls/link-button/link-button.component.d.ts +1 -1
- package/lib/controls/menu/menu.component.d.ts +1 -1
- package/lib/controls/navigation/nav-item-active.directive.d.ts +1 -1
- package/lib/controls/numericbox/numericbox.component.d.ts +1 -1
- package/lib/controls/popover/popover.component.d.ts +1 -1
- package/lib/controls/radio-button/radio-button.component.d.ts +1 -1
- package/lib/controls/select/select.component.d.ts +1 -1
- package/lib/controls/tabs/tabs.component.d.ts +1 -1
- package/lib/controls/textbox/textbox.component.d.ts +1 -1
- package/lib/display/app-bar/app-bar.component.d.ts +1 -1
- package/lib/display/avatar/avatar.component.d.ts +1 -1
- package/lib/display/confirm/confirm.component.d.ts +1 -1
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +1 -1
- package/lib/display/dialog/dialog.component.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-base.d.ts +10 -1
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +1 -1
- package/lib/display/item-display/item-display.component.d.ts +1 -1
- package/lib/display/json-display/json-display.component.d.ts +1 -1
- package/lib/display/resizable/resizable.component.d.ts +1 -1
- package/lib/display/spinner/spinner.component.d.ts +1 -1
- package/lib/display/splash/splash.component.d.ts +1 -1
- package/lib/display/table/resizable-column.component.d.ts +1 -1
- package/lib/display/table/resizable-table.directive.d.ts +1 -1
- package/lib/display/table/searchable-table.component.d.ts +1 -1
- package/lib/display/table/table-detail-row.component.d.ts +1 -1
- package/lib/display/table/table-locked-column.component.d.ts +1 -1
- package/lib/display/table/table-master-header-row.component.d.ts +1 -1
- package/lib/display/table/table-master-row.component.d.ts +1 -1
- package/lib/display/table/table-pagination.component.d.ts +1 -1
- package/lib/display/table/table-selectable-row.component.d.ts +1 -1
- package/lib/display/table/table.component.d.ts +1 -1
- package/lib/display/tags/tags.component.d.ts +1 -1
- package/lib/display/toast/toast/toast.component.d.ts +1 -1
- package/lib/display/toast/toaster/toaster.component.d.ts +1 -1
- package/lib/display/tooltip/tooltip.component.d.ts +1 -1
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +1 -1
- package/lib/display/tour/tour.component.d.ts +1 -1
- package/lib/display/tree/tree.component.d.ts +6 -2
- package/lib/display/view-overlay/view-overlay.component.d.ts +1 -1
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +1 -1
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +1 -1
- package/lib/shared/directives/popup/popup-container.directive.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -2
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +1 -2
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +1 -2
- package/lib/shared/display/pipes/row-count.pipe.d.ts +1 -2
- package/lib/shared/display/pipes/time-display.pipe.d.ts +1 -2
- package/lib/shared/page/page-title/page-title.component.d.ts +1 -1
- package/lib/shared/page/page-view/page-view.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +1 -1
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
@@ -4,12 +4,12 @@ import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/oper
|
|
4
4
|
import { getDecimalPattern, integerPattern } from '../../core/validation-patterns';
|
5
5
|
import { FormControlBase } from "../form-control-base";
|
6
6
|
import { TextboxComponent } from '../textbox/textbox.component';
|
7
|
-
import { TranslateModule } from '@ngx-translate/core';
|
8
|
-
import { NgIf } from '@angular/common';
|
9
7
|
import * as i0 from "@angular/core";
|
10
8
|
import * as i1 from "../../core/validation-message.service";
|
11
9
|
import * as i2 from "../../shared/form-group.helper";
|
12
|
-
import * as i3 from "@
|
10
|
+
import * as i3 from "@angular/common";
|
11
|
+
import * as i4 from "../textbox/textbox.component";
|
12
|
+
import * as i5 from "@ngx-translate/core";
|
13
13
|
/**
|
14
14
|
* Custom validator to check that min/max and pattern validation is met on the numericbox
|
15
15
|
* component
|
@@ -339,10 +339,10 @@ export class NumericboxComponent extends FormControlBase {
|
|
339
339
|
}
|
340
340
|
}
|
341
341
|
NumericboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NumericboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
342
|
-
NumericboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NumericboxComponent,
|
342
|
+
NumericboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NumericboxComponent, selector: "ec-numericbox", inputs: { placeholder: "placeholder", decimals: "decimals", showPrecision: "showPrecision", maxPrecisionDigits: "maxPrecisionDigits", max: "max", min: "min", leftUnits: "leftUnits", rightUnits: "rightUnits", autoUpdateFormModel: "autoUpdateFormModel" }, viewQueries: [{ propertyName: "textboxEl", first: true, predicate: TextboxComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "textboxInput", first: true, predicate: ["textbox"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control control-label-{{labelPosition}}\"\r\n [class.invalid]=\"formModel?.invalid && (formModel?.touched)\">\r\n <label *ngIf=\"label\"\r\n ngPreserveWhitespaces>\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length && formModel?.touched && formModel?.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n <!-- Setting the maxlength to 13 to combat the user from entering too large of a number\r\n for javascript to support. If the user enters all 13 characters as numbers and we have showPrecision set, adding the\r\n decimal and the empty zero characters will get them in a situation where to edit it they must remove characters\r\n as we would push them past the limit -->\r\n <ec-textbox [id]=\"id\"\r\n #textbox\r\n class=\"control-input mb-0\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxPrecisionDigits ? maxPrecisionDigits + 3 : 13\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"textboxFormModel\"\r\n [required]=\"required\"\r\n [tabindex]=\"tabindex\"\r\n [readonly]=\"readonly\"\r\n [tooltip]=\"tooltip\"\r\n (focusout)=\"onFocusOut()\">\r\n </ec-textbox>\r\n</div>\r\n", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}ec-textbox ::ng-deep .input-wrapper{position:relative}ec-textbox ::ng-deep input{text-align:right}ec-textbox ::ng-deep input:required.is-empty:not(:disabled)~.units-left{left:1.25rem}ec-textbox ::ng-deep input.ng-invalid.ng-touched~.units-left{left:1.25rem}ec-textbox ::ng-deep .control:not(.is-readonly) input:disabled~.units{color:var(--ec-form-control-color-disabled);opacity:.65}ec-textbox ::ng-deep .units{display:block;position:absolute;top:0;height:2rem;line-height:1.25rem;padding:.375rem .25rem;z-index:2}ec-textbox ::ng-deep .units.units-right{right:0;padding-right:.5rem}ec-textbox ::ng-deep .units.units-left{left:0;padding-left:.5rem}.control.invalid ec-textbox ::ng-deep input.ng-invalid,.control.invalid ec-textbox ::ng-deep input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}.control.invalid ec-textbox ::ng-deep input.ng-invalid:focus,.control.invalid ec-textbox ::ng-deep input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.units-left,.control.invalid ec-textbox ::ng-deep input.ng-valid~.units-left{left:1.25rem}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.icon-invalid,.control.invalid ec-textbox ::ng-deep input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.icon-required,.control.invalid ec-textbox ::ng-deep input.ng-valid~.icon-required{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TextboxComponent, selector: "ec-textbox", inputs: ["autocomplete", "type", "placeholder", "maxlength", "minlength", "rows", "selectOnAutofocus", "upperCase"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
343
343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NumericboxComponent, decorators: [{
|
344
344
|
type: Component,
|
345
|
-
args: [{ selector: 'ec-numericbox',
|
345
|
+
args: [{ selector: 'ec-numericbox', template: "<div class=\"control control-label-{{labelPosition}}\"\r\n [class.invalid]=\"formModel?.invalid && (formModel?.touched)\">\r\n <label *ngIf=\"label\"\r\n ngPreserveWhitespaces>\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length && formModel?.touched && formModel?.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n <!-- Setting the maxlength to 13 to combat the user from entering too large of a number\r\n for javascript to support. If the user enters all 13 characters as numbers and we have showPrecision set, adding the\r\n decimal and the empty zero characters will get them in a situation where to edit it they must remove characters\r\n as we would push them past the limit -->\r\n <ec-textbox [id]=\"id\"\r\n #textbox\r\n class=\"control-input mb-0\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxPrecisionDigits ? maxPrecisionDigits + 3 : 13\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"textboxFormModel\"\r\n [required]=\"required\"\r\n [tabindex]=\"tabindex\"\r\n [readonly]=\"readonly\"\r\n [tooltip]=\"tooltip\"\r\n (focusout)=\"onFocusOut()\">\r\n </ec-textbox>\r\n</div>\r\n", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}ec-textbox ::ng-deep .input-wrapper{position:relative}ec-textbox ::ng-deep input{text-align:right}ec-textbox ::ng-deep input:required.is-empty:not(:disabled)~.units-left{left:1.25rem}ec-textbox ::ng-deep input.ng-invalid.ng-touched~.units-left{left:1.25rem}ec-textbox ::ng-deep .control:not(.is-readonly) input:disabled~.units{color:var(--ec-form-control-color-disabled);opacity:.65}ec-textbox ::ng-deep .units{display:block;position:absolute;top:0;height:2rem;line-height:1.25rem;padding:.375rem .25rem;z-index:2}ec-textbox ::ng-deep .units.units-right{right:0;padding-right:.5rem}ec-textbox ::ng-deep .units.units-left{left:0;padding-left:.5rem}.control.invalid ec-textbox ::ng-deep input.ng-invalid,.control.invalid ec-textbox ::ng-deep input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}.control.invalid ec-textbox ::ng-deep input.ng-invalid:focus,.control.invalid ec-textbox ::ng-deep input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.units-left,.control.invalid ec-textbox ::ng-deep input.ng-valid~.units-left{left:1.25rem}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.icon-invalid,.control.invalid ec-textbox ::ng-deep input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}.control.invalid ec-textbox ::ng-deep input.ng-invalid~.icon-required,.control.invalid ec-textbox ::ng-deep input.ng-valid~.icon-required{display:none}\n"] }]
|
346
346
|
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }, { type: i0.Renderer2 }]; }, propDecorators: { placeholder: [{
|
347
347
|
type: Input
|
348
348
|
}], decimals: [{
|
@@ -368,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
368
368
|
type: ViewChild,
|
369
369
|
args: ['textbox', { static: true }]
|
370
370
|
}] } });
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpY2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvbnVtZXJpY2JveC9udW1lcmljYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9udW1lcmljYm94L251bWVyaWNib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBMEQsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sRUFBbUIsa0JBQWtCLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUd2Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQXVCLEVBQUUsR0FBdUIsRUFBRSxRQUE0QixFQUFFLGtCQUFzQyxFQUFlLEVBQUU7SUFDeEssT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNoQyxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUM7UUFFOUIsK0VBQStFO1FBQy9F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a1hBdUVqQixnQkFBZ0IsMkJBQVUsVUFBVSwrTEN2Sm5ELGswQ0EwQkEsNG5KRG1EYyxJQUFJLDZGQUFFLGdCQUFnQiwyS0FBRSxlQUFlOzJGQUd4QyxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0ksZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUM7cUtBU2xDLFdBQVc7c0JBQTFCLEtBQUs7Z0JBTVUsUUFBUTtzQkFBdkIsS0FBSztnQkFPVSxhQUFhO3NCQUE1QixLQUFLO2dCQVNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFVVSxHQUFHO3NCQUFsQixLQUFLO2dCQVVVLEdBQUc7c0JBQWxCLEtBQUs7Z0JBTVUsU0FBUztzQkFBeEIsS0FBSztnQkFNVSxVQUFVO3NCQUF6QixLQUFLO2dCQU1VLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFLbUUsU0FBUztzQkFBakYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFzQmYsWUFBWTtzQkFBM0QsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0RGVjaW1hbFBhdHRlcm4sIGludGVnZXJQYXR0ZXJuIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLXBhdHRlcm5zJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4uL2Zvcm0tY29udHJvbC1iYXNlXCI7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gdmFsaWRhdG9yIHRvIGNoZWNrIHRoYXQgbWluL21heCBhbmQgcGF0dGVybiB2YWxpZGF0aW9uIGlzIG1ldCBvbiB0aGUgbnVtZXJpY2JveFxyXG4gKiBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBudW1lcmljYm94VmFsaWRhdGlvbiA9IChtaW46IG51bWJlciB8IHVuZGVmaW5lZCwgbWF4OiBudW1iZXIgfCB1bmRlZmluZWQsIGRlY2ltYWxzOiBudW1iZXIgfCB1bmRlZmluZWQsIG1heFByZWNpc2lvbkRpZ2l0czogbnVtYmVyIHwgdW5kZWZpbmVkKTogVmFsaWRhdG9yRm4gPT4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgICBsZXQgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGNvbnRyb2wgaXMgZW1wdHkgd2Ugd29uJ3QgYXR0ZW1wdCB0byB2YWxpZGF0ZSwgaWYgdGhlcmUgaXMgYSByZXF1aXJlZFxyXG4gICAgICAgIC8vIHZhbGlkYXRvciB3ZSB3aWxsIG5ldmVyIGdldCBoZXJlIHVudGlsIHRoZXJlIGlzIGEgdmFsdWVcclxuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlICE9PSBcIlwiKSB7XHJcblxyXG4gICAgICAgICAgICBsZXQgbnVtZXJpY1BhdHRlcm46IFJlZ0V4cDtcclxuICAgICAgICAgICAgaWYgKGRlY2ltYWxzICYmIGRlY2ltYWxzID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbnVtZXJpY1BhdHRlcm4gPSBnZXREZWNpbWFsUGF0dGVybihkZWNpbWFscyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWF4UHJlY2lzaW9uRGlnaXRzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIGZvciBhIHZhbGlkIG51bWJlciBmb3JtYXR0aW5nIHdoZW4gaW4gbWF4IHByZWNpc2lvbiBtb2RlXHJcbiAgICAgICAgICAgICAgICBudW1lcmljUGF0dGVybiA9IGdldERlY2ltYWxQYXR0ZXJuKG1heFByZWNpc2lvbkRpZ2l0cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyBhbiBvcHRpb25hbCBuZWdhdGl2ZSBzaWduIGFuZCBhbnkgbnVtYmVyIG9mIGRpZ2l0cyAwLTlcclxuICAgICAgICAgICAgICAgIG51bWVyaWNQYXR0ZXJuID0gaW50ZWdlclBhdHRlcm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghbnVtZXJpY1BhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1heFByZWNpc2lvbkRpZ2l0cykge1xyXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydGluZyB0byBhIG51bWJlciB0aGVuIGJhY2sgdG8gc3RyaW5nIHJlbW92ZXMgdHJhaWxpbmcgemVyb3MsIGFuZCB0aGUgcmVnZXggcmVwbGFjZSByZW1vdmVzXHJcbiAgICAgICAgICAgICAgICAvLyBhbnkgbmVnYXRpdmUgc2lnbnMsIGxlYWRpbmcgemVyb3Mgb3IgZGVjaW1hbCBwb2ludHMgZnJvbSB0aGUgbnVtYmVyLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gTnVtYmVyKGNvbnRyb2wudmFsdWUpLnRvU3RyaW5nKCkucmVwbGFjZSgvXi0/LywgJycpLnJlcGxhY2UoLyheMFxcLil8KFxcLikvLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHZhbC5sZW5ndGggPiBtYXhQcmVjaXNpb25EaWdpdHM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFdlIG5vdyBrbm93IHdlIGhhdmUgYSB2YWxpZCBudW1iZXIsIHNvIHdlIGNhbiBjYXN0IHRoZXNlIHRvIG51bWJlcnNcclxuICAgICAgICAgICAgLy8gZm9yIHByb3BlciByYW5nZSB2YWxpZGF0aW9uXHJcbiAgICAgICAgICAgIGlmIChtaW4gIT09IHVuZGVmaW5lZCAmJiBOdW1iZXIoY29udHJvbC52YWx1ZSkgPCBtaW4pIHtcclxuICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG1heCAhPT0gdW5kZWZpbmVkICYmIE51bWJlcihjb250cm9sLnZhbHVlKSA+IG1heCkge1xyXG4gICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaGFzRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIG51bWVyaWNib3g6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbWluOiBtaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4OiBtYXgsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbHM6IGRlY2ltYWxzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heFByZWNpc2lvbkRpZ2l0czogbWF4UHJlY2lzaW9uRGlnaXRzXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdlYy1udW1lcmljYm94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1lcmljYm94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL251bWVyaWNib3guY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGV4dGJveENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE51bWVyaWNib3hDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkLCBBZnRlclZpZXdJbml0IHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdmFsdWUgb2YgdGhlIHRleHRib3ggaW5wdXQncyBwbGFjZWhvbGRlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIGFsbG93ZWQuICBJZiBub3Qgc3VwcGxpZWQgdGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgdmFsaWRhdGVkIGFzIGFcclxuICAgICAqIHdob2xlIG51bWJlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGVjaW1hbHM/OiBudW1iZXI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyB0cmFpbGluZyB6ZXJvcyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC5cclxuICAgICAqIERvIG5vdCB1c2Ugd2l0aCBtYXhQcmVjaXNpb25EaWdpdHMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93UHJlY2lzaW9uPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIHRvdGFsIGRpZ2l0cyBhIG51bWJlciBjYW4gaGF2ZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBkZWNpbWFsIHBvaW50LlxyXG4gICAgICogRHVlIHRvIGxpbWl0YXRpb25zIHdpdGggaG93IEpTIGhhbmRsZXMgbnVtYmVycywgdGhlIG1heCB2YWx1ZSBmb3IgdGhpcyBpcyAxNS5cclxuICAgICAqIE51bWJlcnMgbG9uZ2VyIHRoYW4gMTUgZGlnaXRzIG1heSBjYXVzZSByb3VuZGluZyBlcnJvcnMuXHJcbiAgICAgKiBEbyBub3QgdXNlIHdpdGggc2hvd1ByZWNpc2lvbiA9IHRydWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIG1heFByZWNpc2lvbkRpZ2l0cz86IG51bWJlcjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWF4aW11bSB2YWx1ZSBhbGxvd2VkIGluIHRoZSBpbnB1dFxyXG4gICAgICpcclxuICAgICAqIFRoaXMgaXMgZm9yIGFkZGluZyB0aGUgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IHRvIGdldCB0aGUgYnJvd3NlciBmdW5jdGlvbmFsaXR5XHJcbiAgICAgKiBmcm9tIHRoZSBpbnB1dC4gIElmIHlvdSBuZWVkIHRoZSBmb3JtIHRvIGJlIHZhbGlkYXRlZCBiZWZvcmUgc3VibWlzc2lvbiwgYXBwbHkgdGhlXHJcbiAgICAgKiBtYXggdmFsaWRhdG9yIHRvIHRoZSBmb3JtIGNvbnJvbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIG1heD86IG51bWJlcjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWluaW11bSB2YWx1ZSBhbGxvd2VkIGluIHRoZSBpbnB1dFxyXG4gICAgICpcclxuICAgICAqIFRoaXMgaXMgZm9yIGFkZGluZyB0aGUgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IHRvIGdldCB0aGUgYnJvd3NlciBmdW5jdGlvbmFsaXR5XHJcbiAgICAgKiBmcm9tIHRoZSBpbnB1dC4gIElmIHlvdSBuZWVkIHRoZSBmb3JtIHRvIGJlIHZhbGlkYXRlZCBiZWZvcmUgc3VibWlzc2lvbiwgYXBwbHkgdGhlXHJcbiAgICAgKiBtaW4gdmFsaWRhdG9yIHRvIHRoZSBmb3JtIGNvbnJvbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIG1pbj86IG51bWJlcjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaW5wdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGxlZnRVbml0cz86IHN0cmluZztcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyByaWdodFVuaXRzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgc2V0IHRvIHRydWUgdGhpcyB3aWxsIHVwZGF0ZSB0aGUgZm9ybSBtb2RlbCBhZnRlciBhIGRlYm91bmNlIGFzIHRoZSB1c2VyXHJcbiAgICAgKiBpbnRlcmFjdHMgd2l0aCB0aGUgY29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvVXBkYXRlRm9ybU1vZGVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgdGV4dGJveCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoVGV4dGJveENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB0ZXh0Ym94RWwhOiBFbGVtZW50UmVmO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBpbnRlcm5hbCBmb3JtIG1vZGVsIHdlIHVzZSB0byBkaXNwbGF5IHRoZSB2YWx1ZSB3aXRoIGZvcm1hdHRpbmdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHRleHRib3hGb3JtTW9kZWwhOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqIEZsYWcgdG8gdGVsbCB0aGUgcGFnZSB3ZSBmaW5hbGx5IGNvbXB1dGVkIGEgZ3JlYXRlciB0aGFuIHplcm9cclxuICAgICAqICB3aWR0aCBmb3IgdW5pdHMgKGlmIGFwcGxpY2FibGUpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdW5pdHNXaWR0aENhbGN1bGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogRmxhZyB1c2VkIHRvIGZpbHRlciB0aGUgZm9ybSBtb2RlbHMgdmFsdWUgY2hhbmdlcyBzdWJzY3JpcHRpb25cclxuICAgICAqICB0byBwcmV2ZW50IHRoZSB0ZXh0Ym94IG1vZGVsIGZyb20gYmVpbmcgZm9ybWF0dGVkIGFzIHRoZSBmb3JtIG1vZGVsIGlzIHVwZGF0ZWRcclxuICAgICAqICBwcm9ncmFtbWF0aWNhbGx5IHdoZW4gdGhlIHRleHRib3ggbW9kZWwgdXBkYXRlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGF1dG9VcGRhdGluZ0Zvcm1Nb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgdGV4dGJveCBpbnB1dCBjb250cm9sXHJcbiAgICovXHJcbiAgICBAVmlld0NoaWxkKCd0ZXh0Ym94JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB0ZXh0Ym94SW5wdXQhOiBUZXh0Ym94Q29tcG9uZW50O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUdyb3VwSGVscGVyOiBGb3JtR3JvdXBIZWxwZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgQWZ0ZXJWaWV3SW5pdCBsaWZlLWN5Y2xlIGhvb2tcclxuICAgICAqIFN1YnNjcmliZSB0byB0ZXh0Ym94IG1vZGVsIHZhbHVlIGNoYW5nZXMgaWYgdGhlIGhvc3RpbmdcclxuICAgICAqIHBhZ2UgaGFzIG9wdGVkIGluIGZvciB0aGlzIGNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9VcGRhdGVGb3JtTW9kZWwpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpLFxyXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybU1vZGVsVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgb25DaGFuZ2VzIGxpZmUtY3ljbGUgaG9va1xyXG4gICAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rcyB8IExpZmUtY3ljbGUgaG9va3N9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gSWYgZWl0aGVyIHVuaXRzIGNoYW5nZSBhZnRlciB3ZSd2ZSBjYWxjdWxhdGVkLFxyXG4gICAgICAgIC8vIHJlc2V0IHRoZSBmbGFnIHNvIHdlIGNhbiByZWFjdCBhbmQgcmVkcmF3XHJcbiAgICAgICAgaWYgKGNoYW5nZXMucmlnaHRVbml0cyB8fCBjaGFuZ2VzLmxlZnRVbml0cykge1xyXG4gICAgICAgICAgICB0aGlzLnVuaXRzV2lkdGhDYWxjdWxhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIG9uSW5pdCBsaWZlY3ljbGUgaG9va1xyXG4gICAgICogSWYgdW5pdHMgaXMgZGVmaW5lZCwgc2V0IHRoZSBwb3NpdGlvbiBhbmQgbGlzdGVuIGZvciBzdGF0dXMgY2hhbmdlcyBzbyB3ZVxyXG4gICAgICogY2FuIHVwZGF0ZSB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIHVuaXRzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHRib3ggZm9ybSBtb2RlbCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBtb2RlbCBhbmQgc3luY2hyb25pemVcclxuICAgICAgICAvLyBkaXNhYmxlZCBzdGF0ZVxyXG4gICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5mb3JtTW9kZWwudmFsdWUsIGRpc2FibGVkOiB0aGlzLmZvcm1Nb2RlbC5kaXNhYmxlZCB9KTtcclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBmb3JtIG1vZGVsJ3MgZXJyb3JzIHdoZW4gdGhlIHRleHRib3ggZm9ybSBtb2RlbCBzdGF0dXMgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybU1vZGVsLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldEVycm9ycyh0aGlzLnRleHRib3hGb3JtTW9kZWwuZXJyb3JzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIC8vIFN5bmNocm9uaXplIGRpc2FibGVkIHN0YXRlIGJldHdlZW4gZm9ybSBtb2RlbCBhbmQgaW50ZXJuYWwgdGV4dGJveCBmb3JtIG1vZGVsXHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRleHRib3hGb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRleHRib3ggdmFsaWRhdG9yc1xyXG4gICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5zZXRWYWxpZGF0b3JzKHRoaXMuZ2V0VmFsaWRhdG9ycygpKTtcclxuXHJcbiAgICAgICAgLy8gTm93IHRoYXQgdGhlIHRleHRib3ggaXMgc2V0IHVwIHdlIHdpbGwgc2V0IGl0J3MgdmFsdWUgdG8gd2hhdGV2ZXIgdGhlXHJcbiAgICAgICAgLy8gZm9ybSBtb2RlbCBoYWQgd2hlbiB3ZSBpbml0aWFsaXplZFxyXG4gICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdERpc3BsYXlOdW1iZXIodGhpcy5mb3JtTW9kZWwudmFsdWUpKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGZvcm0gbW9kZWwncyB2YWx1ZSBjaGFuZ2VzIHByb2dyYW1tYXRpY2FsbHkgd2UgbmVlZCB0byB1cGRhdGUgdGhlXHJcbiAgICAgICAgLy8gdGV4dGJveCBmb3JtIG1vZGVsXHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZmlsdGVyIG91dCB3aGVuIHdlIGFyZSB1cGRhdGluZyBpdCBwcm9ncmFtbWF0aWNhbGx5IGlmIHRoZVxyXG4gICAgICAgICAgICAvLyBob3N0aW5nIHBhZ2UgaGFzIG9wdGVkIGludG8gdGhlIGF1dG8gdXBkYXRpbmcgaW5wdXRcclxuICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmF1dG9VcGRhdGluZ0Zvcm1Nb2RlbCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwuc2V0VmFsdWUodGhpcy5mb3JtYXREaXNwbGF5TnVtYmVyKHZhbHVlKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBJZiB0aGUgdGV4dGJveCBzdGF0dXMgY2hhbmdlcyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGVmdCB1bml0cyBwb3NpdGlvbiBiZWNhdXNlXHJcbiAgICAgICAgLy8gd2Ugd2FudCB0byBtYWtlIHJvb20gZm9yIHRoZSBpbnZhbGlkIGljb25cclxuICAgICAgICBpZiAodGhpcy5sZWZ0VW5pdHMpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkxlZnRVbml0cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciBhZnRlclZpZXdDaGVja2VkIGxpZmVjeWNsZSBob29rXHJcbiAgICAgKiBTaG93IHRoZSB1bml0cyBlbGVtZW50IGlmIHVuaXRzIGlzIGRlZmluZWQuIFJ1bnMgYWZ0ZXIgZXZlcnkgbmdPbkNoYW5nZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoKHRoaXMubGVmdFVuaXRzIHx8IHRoaXMucmlnaHRVbml0cykgJiYgIXRoaXMudW5pdHNXaWR0aENhbGN1bGF0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VW5pdHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0aGF0IGJ1aWxkcyBhbmQgcmV0dXJucyBhIFZhbGlkYXRvckZuIGFycmF5IHRvIHNldCBvbiB0aGUgZm9ybSBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgICAgICBsZXQgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2gobnVtZXJpY2JveFZhbGlkYXRpb24odGhpcy5taW4sIHRoaXMubWF4LCB0aGlzLmRlY2ltYWxzLCB0aGlzLm1heFByZWNpc2lvbkRpZ2l0cykpO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvY3VzIG91dCBldmVudCBoYW5kbGVyIGZvciB0aGUgVGV4dGJveCBjb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uRm9jdXNPdXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtTW9kZWxWYWx1ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogRnVuY3Rpb24gdG8gc2V0IGZvY3VzIG9uIGFuIGlucHV0IHByb2dyYW1hdGljYWxseSBhZnRlciB0aGUgcGFnZVxyXG4gICAgKiBoYWQgYmVlbiByZW5kZXJlZC4gIFRoZSBoaWdobGlnaHQgdGV4dCBmbGFnIHdpbGwgc2VsZWN0IHRoZSB0ZXh0XHJcbiAgICAqIHdpdGhpbiB0aGUgaW5wdXQgaWYgcGFzc2VkIGluIGFuZCB0cnVlXHJcbiAgICAqL1xyXG4gICAgcHVibGljIHNldEZvY3VzKGhpZ2hsaWdodFRleHQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50ZXh0Ym94SW5wdXQuc2V0Rm9jdXMoaGlnaGxpZ2h0VGV4dCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB0aGUgdGV4dGJveCBtb2RlbCB1cGRhdGVzIHdlIG5lZWQgdG8gYWRkIHNvbWUgZGlzcGxheSBmb3JtYXR0aW5nIGZvclxyXG4gICAgICogZGlzcGxheSBpbiB0aGUgdGV4dGJveCBhbmQgY2FzdCB0aGUgdGV4dGJveCBtb2RlbCB0byBhIG51bWJlci4gQXZvaWQgdXBkYXRpbmdcclxuICAgICAqIHRoZSBmb3JtIG1vZGVsIHdoZW4gdGhlIHZhbHVlIGRvZXNuJ3QgY2hhbmdlIGJlY2F1c2UgbGlzdGVuZXJzIHdpbGwgZmlyZSBmb3Igbm8gcmVhc29uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlRm9ybU1vZGVsVmFsdWUoaXNGb2N1c091dD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvVXBkYXRlRm9ybU1vZGVsKSB7XHJcbiAgICAgICAgICAgIC8vIE1ha2UgaXQgc28gdmFsdWUgY2hhbmdlcyBvbiB0aGUgZm9ybSBtb2RlbCBkbyBub3QgZ2V0IHRyaWdnZXJlZFxyXG4gICAgICAgICAgICAvLyBhcyB3ZSBjaGFuZ2UgaXQgcHJvZ3JhbW1hdGljYWxseS4gIFdlIGRvIG5vdCB3YW50IHRoZSB0ZXh0Ym94XHJcbiAgICAgICAgICAgIC8vIG1vZGVsIHRvIGJlIHVwZGF0ZWQgd2hpbGUgdGhlIHVzZXIgaXMgaW4gdGhlIGlucHV0XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1VwZGF0aW5nRm9ybU1vZGVsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHRib3hGb3JtTW9kZWwudmFsaWQgfHwgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnZhbHVlID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTdGFydCBvdXQgd2l0aCBudWxsIGZvciB0aGUgbnVtYmVyLCBpZiB0aGUgdGV4dGJveCB2YWx1ZSBpcyBub3QgYSBudW1iZXJcclxuICAgICAgICAgICAgICAgIC8vIHdlIHdpbGwgY2xlYXIgaXQgb3V0IG9uIGZvY3VzIG91dFxyXG4gICAgICAgICAgICAgICAgbGV0IG51bWJlcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSB0ZXh0Ym94IG1vZGVsIGlzIGEgbnVtYmVyIGJlZm9yZSB0cnlpbmcgdG8gdXBkYXRlIHRoZVxyXG4gICAgICAgICAgICAgICAgLy8gZm9ybSBtb2RlbCB2YWx1ZSB3aXRoIGl0XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnZhbHVlICYmICFpc05hTih0aGlzLnRleHRib3hGb3JtTW9kZWwudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT3VyIHZhbHVlIGlzIGEgbGVnaXQgbnVtYmVyLCBvbiBmb2N1cyBvdXQgd2Ugd2lsbCBmb3JtYXQgaXQgaWYgbmVlZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyID0gTnVtYmVyKHRoaXMudGV4dGJveEZvcm1Nb2RlbC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNraW5nIGlmIHRoZSB2YWx1ZSBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgaWYgbm90IGRvbid0IHNldCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0byBhdm9pZCBleHRyYSBsaXN0ZW5lciBjYWxsc1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Nb2RlbC52YWx1ZSAhPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKG51bWJlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSB0ZXh0Ym94IG1vZGVsIGlzIG5vdCBhIG51bWJlciwgY2hlY2sgdG8gc2VlIGlmIG91ciBmb3JtIG1vZGVsIGhhcyBhIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGlmIHNvIGNsZWFyIGl0IG91dFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1Nb2RlbC52YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2lsbCB1cGRhdGUgdGhlIHRleHRib3ggZm9ybSBtb2RlbCB3aXRoIGZvcm1hdHRpbmcgaWYgbmVlZGVkXHJcbiAgICAgICAgICAgICAgICAvLyBvbiBGb2N1cyBvdXQuICBUaGlzIHdvcmtzIHdlbGwgZm9yIHRoZSB1c2VyIHdoZXRoZXIgdGhlIGF1dG8gdXBkYXRlXHJcbiAgICAgICAgICAgICAgICAvLyBpcyBvcHRlZCBpbiBvciBub3RcclxuICAgICAgICAgICAgICAgIGlmIChpc0ZvY3VzT3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnNldFZhbHVlKHRoaXMuZm9ybWF0RGlzcGxheU51bWJlcihudW1iZXIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZGlzcGxheSwganVzdCBlbnN1cmluZyB3ZSByZXNldCBvdXIgZmxhZyB0aGF0IGZpbHRlcnNcclxuICAgICAgICAgICAgLy8gdGhlIGZvcm0gbW9kZWwgdmFsdWUgY2hhbmdlc1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1VwZGF0aW5nRm9ybU1vZGVsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydCBhIG51bWJlciB2YWx1ZSB0byB0aGUgZm9ybW1hdGVkIGRpc3BsYXkgc3RyaW5nLiBJZiB0aGVyZSBpcyBubyB2YWx1ZVxyXG4gICAgICogcmV0dXJuIG51bGxcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBmb3JtYXREaXNwbGF5TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgY2FsbGluZyB0b0ZpeGVkIGlmIHRoZSB2YWx1ZSBpc24ndCBhIG51bWJlci4gIFRoaXMgaXMgcG9zc2libGVcclxuICAgICAgICAgICAgLy8gaWYgcGF0Y2hpbmcgYSB2YWx1ZSBmcm9tIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudCBhcyB5b3UgZG9uJ3QgaGF2ZVxyXG4gICAgICAgICAgICAvLyB0eXBlIGNoZWNraW5nIHRoZXJlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dQcmVjaXNpb24gJiYgdGhpcy5kZWNpbWFscyAmJiAhaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCh0aGlzLmRlY2ltYWxzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gdGhlIHVuaXRzIGVsZW1lbnQgYW5kIHNldCB0aGUgcGFkZGluZyBpbiB0aGUgdGV4dGJveCBpbnB1dCBiYXNlZFxyXG4gICAgICogb24gdGhlIHdpZHRoIG9mIHRoZSB1bml0cyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcG9zaXRpb25SaWdodFVuaXRzKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCB1bml0c0VsID0gdGhpcy50ZXh0Ym94RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudW5pdHMtcmlnaHQnKTtcclxuICAgICAgICBsZXQgaW5wdXRFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuXHJcbiAgICAgICAgaWYgKHVuaXRzRWwgJiYgaW5wdXRFbCkge1xyXG4gICAgICAgICAgICBsZXQgdW5pdHNXaWR0aCA9IHVuaXRzRWwub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgICAgICBpZiAodW5pdHNXaWR0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5pdHNXaWR0aENhbGN1bGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgcGFkZGluZyA9IHVuaXRzV2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW5wdXRFbCwgJ3BhZGRpbmctcmlnaHQnLCBwYWRkaW5nICsgJ3B4Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHBvc2l0aW9uTGVmdFVuaXRzKCkge1xyXG4gICAgICAgIGxldCB1bml0c0VsID0gdGhpcy50ZXh0Ym94RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudW5pdHMtbGVmdCcpO1xyXG4gICAgICAgIGxldCBpbnB1dEVsID0gdGhpcy50ZXh0Ym94RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xyXG5cclxuICAgICAgICBpZiAodW5pdHNFbCAmJiBpbnB1dEVsKSB7XHJcbiAgICAgICAgICAgIGxldCB1bml0c1dpZHRoID0gdW5pdHNFbC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgICAgIGlmICh1bml0c1dpZHRoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51bml0c1dpZHRoQ2FsY3VsYXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBwYWRkaW5nID0gdW5pdHNXaWR0aDtcclxuICAgICAgICAgICAgbGV0IGxlZnRQb3NpdGlvbiA9IGdldENvbXB1dGVkU3R5bGUodW5pdHNFbCkubGVmdDtcclxuICAgICAgICAgICAgaWYgKGxlZnRQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZyArPSBwYXJzZUludChsZWZ0UG9zaXRpb24ucmVwbGFjZSgncHgnLCAnJyksIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW5wdXRFbCwgJ3BhZGRpbmctbGVmdCcsIHBhZGRpbmcgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgYW5kIGFwcGVuZCB0aGUgdW5pdHMgZWxlbWVudCB0byB0aGUgdGV4dGJveCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2hvd1VuaXRzKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBpbnB1dFdyYXBwZXIgPSB0aGlzLnRleHRib3hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC13cmFwcGVyJyk7XHJcblxyXG4gICAgICAgIGlmIChpbnB1dFdyYXBwZXIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubGVmdFVuaXRzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pdHNFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnVuaXRzLWxlZnQnKTtcclxuICAgICAgICAgICAgICAgIGlmICh1bml0c0VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh1bml0c0VsLCAnaW5uZXJIVE1MJywgdGhpcy5sZWZ0VW5pdHMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGlucHV0V3JhcHBlciwgdGhpcy5tYWtlVW5pdEVsZW1lbnQoJ2xlZnQnLCB0aGlzLmxlZnRVbml0cykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkxlZnRVbml0cygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5yaWdodFVuaXRzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pdHNFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnVuaXRzLXJpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodW5pdHNFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodW5pdHNFbCwgJ2lubmVySFRNTCcsIHRoaXMucmlnaHRVbml0cyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaW5wdXRXcmFwcGVyLCB0aGlzLm1ha2VVbml0RWxlbWVudCgncmlnaHQnLCB0aGlzLnJpZ2h0VW5pdHMpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25SaWdodFVuaXRzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYWtlVW5pdEVsZW1lbnQoc2lkZTogJ2xlZnQnIHwgJ3JpZ2h0JywgdGV4dDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBsZXQgdW5pdHNFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHVuaXRzRWwsICdjbGFzcycsIGB1bml0cyB1bml0cy0ke3NpZGV9YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodW5pdHNFbCwgJ2lkJywgYCR7dGhpcy5pZH1fdW5pdHNgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh1bml0c0VsLCAnc3R5bGUnLCAncG9pbnRlci1ldmVudHM6IG5vbmUnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHVuaXRzRWwsICdpbm5lckhUTUwnLCB0ZXh0KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHVuaXRzRWw7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29udHJvbCBjb250cm9sLWxhYmVsLXt7bGFiZWxQb3NpdGlvbn19XCJcclxuICAgICBbY2xhc3MuaW52YWxpZF09XCJmb3JtTW9kZWw/LmludmFsaWQgJiYgKGZvcm1Nb2RlbD8udG91Y2hlZClcIj5cclxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiXHJcbiAgICAgICAgIG5nUHJlc2VydmVXaGl0ZXNwYWNlcz5cclxuICAgIDxzcGFuPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoICYmIGZvcm1Nb2RlbD8udG91Y2hlZCAmJiBmb3JtTW9kZWw/LmludmFsaWRcIj57e3ZhbGlkYXRpb25FcnJvcnMgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG4gIDwhLS0gU2V0dGluZyB0aGUgbWF4bGVuZ3RoIHRvIDEzIHRvIGNvbWJhdCB0aGUgdXNlciBmcm9tIGVudGVyaW5nIHRvbyBsYXJnZSBvZiBhIG51bWJlclxyXG4gICAgICAgICBmb3IgamF2YXNjcmlwdCB0byBzdXBwb3J0LiAgSWYgdGhlIHVzZXIgZW50ZXJzIGFsbCAxMyBjaGFyYWN0ZXJzIGFzIG51bWJlcnMgYW5kIHdlIGhhdmUgc2hvd1ByZWNpc2lvbiBzZXQsIGFkZGluZyB0aGVcclxuICAgICAgICAgZGVjaW1hbCBhbmQgdGhlIGVtcHR5IHplcm8gY2hhcmFjdGVycyB3aWxsIGdldCB0aGVtIGluIGEgc2l0dWF0aW9uIHdoZXJlIHRvIGVkaXQgaXQgdGhleSBtdXN0IHJlbW92ZSBjaGFyYWN0ZXJzXHJcbiAgICAgICAgIGFzIHdlIHdvdWxkIHB1c2ggdGhlbSBwYXN0IHRoZSBsaW1pdCAtLT5cclxuICA8ZWMtdGV4dGJveCBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgICN0ZXh0Ym94XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWlucHV0IG1iLTBcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhQcmVjaXNpb25EaWdpdHMgPyBtYXhQcmVjaXNpb25EaWdpdHMgKyAzIDogMTNcIlxyXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgICAgICAgICAgICBbZm9ybU1vZGVsXT1cInRleHRib3hGb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIj5cclxuICA8L2VjLXRleHRib3g+XHJcbjwvZGl2PlxyXG4iXX0=
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpY2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvbnVtZXJpY2JveC9udW1lcmljYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9udW1lcmljYm94L251bWVyaWNib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBMEQsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sRUFBbUIsa0JBQWtCLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQUdoRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQXVCLEVBQUUsR0FBdUIsRUFBRSxRQUE0QixFQUFFLGtCQUFzQyxFQUFlLEVBQUU7SUFDeEssT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNoQyxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUM7UUFFOUIsK0VBQStFO1FBQy9FLDBEQUEwRDtRQUMxRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFFdkMsSUFBSSxjQUFz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LFdBQVc7c0JBQTFCLEtBQUs7Z0JBTVUsUUFBUTtzQkFBdkIsS0FBSztnQkFPVSxhQUFhO3NCQUE1QixLQUFLO2dCQVNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFVVSxHQUFHO3NCQUFsQixLQUFLO2dCQVVVLEdBQUc7c0JBQWxCLEtBQUs7Z0JBTVUsU0FBUztzQkFBeEIsS0FBSztnQkFNVSxVQUFVO3NCQUF6QixLQUFLO2dCQU1VLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFLbUUsU0FBUztzQkFBakYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFzQmYsWUFBWTtzQkFBM0QsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0RGVjaW1hbFBhdHRlcm4sIGludGVnZXJQYXR0ZXJuIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLXBhdHRlcm5zJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4uL2Zvcm0tY29udHJvbC1iYXNlXCI7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuXHJcblxyXG4vKipcclxuICogQ3VzdG9tIHZhbGlkYXRvciB0byBjaGVjayB0aGF0IG1pbi9tYXggYW5kIHBhdHRlcm4gdmFsaWRhdGlvbiBpcyBtZXQgb24gdGhlIG51bWVyaWNib3hcclxuICogY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgbnVtZXJpY2JveFZhbGlkYXRpb24gPSAobWluOiBudW1iZXIgfCB1bmRlZmluZWQsIG1heDogbnVtYmVyIHwgdW5kZWZpbmVkLCBkZWNpbWFsczogbnVtYmVyIHwgdW5kZWZpbmVkLCBtYXhQcmVjaXNpb25EaWdpdHM6IG51bWJlciB8IHVuZGVmaW5lZCk6IFZhbGlkYXRvckZuID0+IHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgbGV0IGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBjb250cm9sIGlzIGVtcHR5IHdlIHdvbid0IGF0dGVtcHQgdG8gdmFsaWRhdGUsIGlmIHRoZXJlIGlzIGEgcmVxdWlyZWRcclxuICAgICAgICAvLyB2YWxpZGF0b3Igd2Ugd2lsbCBuZXZlciBnZXQgaGVyZSB1bnRpbCB0aGVyZSBpcyBhIHZhbHVlXHJcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZSAhPT0gXCJcIikge1xyXG5cclxuICAgICAgICAgICAgbGV0IG51bWVyaWNQYXR0ZXJuOiBSZWdFeHA7XHJcbiAgICAgICAgICAgIGlmIChkZWNpbWFscyAmJiBkZWNpbWFscyA+IDApIHtcclxuICAgICAgICAgICAgICAgIG51bWVyaWNQYXR0ZXJuID0gZ2V0RGVjaW1hbFBhdHRlcm4oZGVjaW1hbHMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1heFByZWNpc2lvbkRpZ2l0cykge1xyXG4gICAgICAgICAgICAgICAgLy8gU3RpbGwgbmVlZCB0byBjaGVjayBmb3IgYSB2YWxpZCBudW1iZXIgZm9ybWF0dGluZyB3aGVuIGluIG1heCBwcmVjaXNpb24gbW9kZVxyXG4gICAgICAgICAgICAgICAgbnVtZXJpY1BhdHRlcm4gPSBnZXREZWNpbWFsUGF0dGVybihtYXhQcmVjaXNpb25EaWdpdHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQWxsb3cgYW4gb3B0aW9uYWwgbmVnYXRpdmUgc2lnbiBhbmQgYW55IG51bWJlciBvZiBkaWdpdHMgMC05XHJcbiAgICAgICAgICAgICAgICBudW1lcmljUGF0dGVybiA9IGludGVnZXJQYXR0ZXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIW51bWVyaWNQYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXhQcmVjaXNpb25EaWdpdHMpIHtcclxuICAgICAgICAgICAgICAgIC8vIENvbnZlcnRpbmcgdG8gYSBudW1iZXIgdGhlbiBiYWNrIHRvIHN0cmluZyByZW1vdmVzIHRyYWlsaW5nIHplcm9zLCBhbmQgdGhlIHJlZ2V4IHJlcGxhY2UgcmVtb3Zlc1xyXG4gICAgICAgICAgICAgICAgLy8gYW55IG5lZ2F0aXZlIHNpZ25zLCBsZWFkaW5nIHplcm9zIG9yIGRlY2ltYWwgcG9pbnRzIGZyb20gdGhlIG51bWJlci5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcihjb250cm9sLnZhbHVlKS50b1N0cmluZygpLnJlcGxhY2UoL14tPy8sICcnKS5yZXBsYWNlKC8oXjBcXC4pfChcXC4pLywgJycpO1xyXG4gICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB2YWwubGVuZ3RoID4gbWF4UHJlY2lzaW9uRGlnaXRzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBXZSBub3cga25vdyB3ZSBoYXZlIGEgdmFsaWQgbnVtYmVyLCBzbyB3ZSBjYW4gY2FzdCB0aGVzZSB0byBudW1iZXJzXHJcbiAgICAgICAgICAgIC8vIGZvciBwcm9wZXIgcmFuZ2UgdmFsaWRhdGlvblxyXG4gICAgICAgICAgICBpZiAobWluICE9PSB1bmRlZmluZWQgJiYgTnVtYmVyKGNvbnRyb2wudmFsdWUpIDwgbWluKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChtYXggIT09IHVuZGVmaW5lZCAmJiBOdW1iZXIoY29udHJvbC52YWx1ZSkgPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGhhc0Vycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBudW1lcmljYm94OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbjogbWluLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heDogbWF4LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlY2ltYWxzOiBkZWNpbWFscyxcclxuICAgICAgICAgICAgICAgICAgICBtYXhQcmVjaXNpb25EaWdpdHM6IG1heFByZWNpc2lvbkRpZ2l0c1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZWMtbnVtZXJpY2JveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtZXJpY2JveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9udW1lcmljYm94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOdW1lcmljYm94Q29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSB0ZXh0Ym94IGlucHV0J3MgcGxhY2Vob2xkZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG51bWJlciBvZiBkZWNpbWFscyBhbGxvd2VkLiAgSWYgbm90IHN1cHBsaWVkIHRoZSBpbnB1dCB2YWx1ZSB3aWxsIGJlIHZhbGlkYXRlZCBhcyBhXHJcbiAgICAgKiB3aG9sZSBudW1iZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGRlY2ltYWxzPzogbnVtYmVyO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgdHJhaWxpbmcgemVyb3MgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXHJcbiAgICAgKiBEbyBub3QgdXNlIHdpdGggbWF4UHJlY2lzaW9uRGlnaXRzLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1ByZWNpc2lvbj86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWF4aW11bSB0b3RhbCBkaWdpdHMgYSBudW1iZXIgY2FuIGhhdmUgbGVmdCBvciByaWdodCBvZiB0aGUgZGVjaW1hbCBwb2ludC5cclxuICAgICAqIER1ZSB0byBsaW1pdGF0aW9ucyB3aXRoIGhvdyBKUyBoYW5kbGVzIG51bWJlcnMsIHRoZSBtYXggdmFsdWUgZm9yIHRoaXMgaXMgMTUuXHJcbiAgICAgKiBOdW1iZXJzIGxvbmdlciB0aGFuIDE1IGRpZ2l0cyBtYXkgY2F1c2Ugcm91bmRpbmcgZXJyb3JzLlxyXG4gICAgICogRG8gbm90IHVzZSB3aXRoIHNob3dQcmVjaXNpb24gPSB0cnVlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhQcmVjaXNpb25EaWdpdHM/OiBudW1iZXI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1heGltdW0gdmFsdWUgYWxsb3dlZCBpbiB0aGUgaW5wdXRcclxuICAgICAqXHJcbiAgICAgKiBUaGlzIGlzIGZvciBhZGRpbmcgdGhlIGF0dHJpYnV0ZSBvbiB0aGUgZWxlbWVudCB0byBnZXQgdGhlIGJyb3dzZXIgZnVuY3Rpb25hbGl0eVxyXG4gICAgICogZnJvbSB0aGUgaW5wdXQuICBJZiB5b3UgbmVlZCB0aGUgZm9ybSB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHN1Ym1pc3Npb24sIGFwcGx5IHRoZVxyXG4gICAgICogbWF4IHZhbGlkYXRvciB0byB0aGUgZm9ybSBjb25yb2wuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXg/OiBudW1iZXI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1pbmltdW0gdmFsdWUgYWxsb3dlZCBpbiB0aGUgaW5wdXRcclxuICAgICAqXHJcbiAgICAgKiBUaGlzIGlzIGZvciBhZGRpbmcgdGhlIGF0dHJpYnV0ZSBvbiB0aGUgZWxlbWVudCB0byBnZXQgdGhlIGJyb3dzZXIgZnVuY3Rpb25hbGl0eVxyXG4gICAgICogZnJvbSB0aGUgaW5wdXQuICBJZiB5b3UgbmVlZCB0aGUgZm9ybSB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHN1Ym1pc3Npb24sIGFwcGx5IHRoZVxyXG4gICAgICogbWluIHZhbGlkYXRvciB0byB0aGUgZm9ybSBjb25yb2wuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtaW4/OiBudW1iZXI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCB0byBkaXNwbGF5IG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsZWZ0VW5pdHM/OiBzdHJpbmc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCB0byBkaXNwbGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBpbnB1dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcmlnaHRVbml0cz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHNldCB0byB0cnVlIHRoaXMgd2lsbCB1cGRhdGUgdGhlIGZvcm0gbW9kZWwgYWZ0ZXIgYSBkZWJvdW5jZSBhcyB0aGUgdXNlclxyXG4gICAgICogaW50ZXJhY3RzIHdpdGggdGhlIGNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1VwZGF0ZUZvcm1Nb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIHRleHRib3ggZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKFRleHRib3hDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdGV4dGJveEVsITogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW50ZXJuYWwgZm9ybSBtb2RlbCB3ZSB1c2UgdG8gZGlzcGxheSB0aGUgdmFsdWUgd2l0aCBmb3JtYXR0aW5nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0ZXh0Ym94Rm9ybU1vZGVsITogVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICAgIC8qKiBGbGFnIHRvIHRlbGwgdGhlIHBhZ2Ugd2UgZmluYWxseSBjb21wdXRlZCBhIGdyZWF0ZXIgdGhhbiB6ZXJvXHJcbiAgICAgKiAgd2lkdGggZm9yIHVuaXRzIChpZiBhcHBsaWNhYmxlKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHVuaXRzV2lkdGhDYWxjdWxhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEZsYWcgdXNlZCB0byBmaWx0ZXIgdGhlIGZvcm0gbW9kZWxzIHZhbHVlIGNoYW5nZXMgc3Vic2NyaXB0aW9uXHJcbiAgICAgKiAgdG8gcHJldmVudCB0aGUgdGV4dGJveCBtb2RlbCBmcm9tIGJlaW5nIGZvcm1hdHRlZCBhcyB0aGUgZm9ybSBtb2RlbCBpcyB1cGRhdGVkXHJcbiAgICAgKiAgcHJvZ3JhbW1hdGljYWxseSB3aGVuIHRoZSB0ZXh0Ym94IG1vZGVsIHVwZGF0ZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhdXRvVXBkYXRpbmdGb3JtTW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIHRleHRib3ggaW5wdXQgY29udHJvbFxyXG4gICAqL1xyXG4gICAgQFZpZXdDaGlsZCgndGV4dGJveCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdGV4dGJveElucHV0ITogVGV4dGJveENvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlOiBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1Hcm91cEhlbHBlcjogRm9ybUdyb3VwSGVscGVyLFxyXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcih2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsIGZvcm1Hcm91cEhlbHBlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIEFmdGVyVmlld0luaXQgbGlmZS1jeWNsZSBob29rXHJcbiAgICAgKiBTdWJzY3JpYmUgdG8gdGV4dGJveCBtb2RlbCB2YWx1ZSBjaGFuZ2VzIGlmIHRoZSBob3N0aW5nXHJcbiAgICAgKiBwYWdlIGhhcyBvcHRlZCBpbiBmb3IgdGhpcyBjb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvVXBkYXRlRm9ybU1vZGVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSxcclxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Nb2RlbFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIG9uQ2hhbmdlcyBsaWZlLWN5Y2xlIGhvb2tcclxuICAgICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9saWZlY3ljbGUtaG9va3MgfCBMaWZlLWN5Y2xlIGhvb2tzfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIC8vIElmIGVpdGhlciB1bml0cyBjaGFuZ2UgYWZ0ZXIgd2UndmUgY2FsY3VsYXRlZCxcclxuICAgICAgICAvLyByZXNldCB0aGUgZmxhZyBzbyB3ZSBjYW4gcmVhY3QgYW5kIHJlZHJhd1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLnJpZ2h0VW5pdHMgfHwgY2hhbmdlcy5sZWZ0VW5pdHMpIHtcclxuICAgICAgICAgICAgdGhpcy51bml0c1dpZHRoQ2FsY3VsYXRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciBvbkluaXQgbGlmZWN5Y2xlIGhvb2tcclxuICAgICAqIElmIHVuaXRzIGlzIGRlZmluZWQsIHNldCB0aGUgcG9zaXRpb24gYW5kIGxpc3RlbiBmb3Igc3RhdHVzIGNoYW5nZXMgc28gd2VcclxuICAgICAqIGNhbiB1cGRhdGUgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSB1bml0cyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0Ym94IGZvcm0gbW9kZWwgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gbW9kZWwgYW5kIHN5bmNocm9uaXplXHJcbiAgICAgICAgLy8gZGlzYWJsZWQgc3RhdGVcclxuICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuZm9ybU1vZGVsLnZhbHVlLCBkaXNhYmxlZDogdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQgfSk7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgZm9ybSBtb2RlbCdzIGVycm9ycyB3aGVuIHRoZSB0ZXh0Ym94IGZvcm0gbW9kZWwgc3RhdHVzIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwuc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5lbmFibGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRFcnJvcnModGhpcy50ZXh0Ym94Rm9ybU1vZGVsLmVycm9ycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICAvLyBTeW5jaHJvbml6ZSBkaXNhYmxlZCBzdGF0ZSBiZXR3ZWVuIGZvcm0gbW9kZWwgYW5kIGludGVybmFsIHRleHRib3ggZm9ybSBtb2RlbFxyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0Ym94Rm9ybU1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0ZXh0Ym94IHZhbGlkYXRvcnNcclxuICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwuc2V0VmFsaWRhdG9ycyh0aGlzLmdldFZhbGlkYXRvcnMoKSk7XHJcblxyXG4gICAgICAgIC8vIE5vdyB0aGF0IHRoZSB0ZXh0Ym94IGlzIHNldCB1cCB3ZSB3aWxsIHNldCBpdCdzIHZhbHVlIHRvIHdoYXRldmVyIHRoZVxyXG4gICAgICAgIC8vIGZvcm0gbW9kZWwgaGFkIHdoZW4gd2UgaW5pdGlhbGl6ZWRcclxuICAgICAgICB0aGlzLnRleHRib3hGb3JtTW9kZWwuc2V0VmFsdWUodGhpcy5mb3JtYXREaXNwbGF5TnVtYmVyKHRoaXMuZm9ybU1vZGVsLnZhbHVlKSk7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBmb3JtIG1vZGVsJ3MgdmFsdWUgY2hhbmdlcyBwcm9ncmFtbWF0aWNhbGx5IHdlIG5lZWQgdG8gdXBkYXRlIHRoZVxyXG4gICAgICAgIC8vIHRleHRib3ggZm9ybSBtb2RlbFxyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGZpbHRlciBvdXQgd2hlbiB3ZSBhcmUgdXBkYXRpbmcgaXQgcHJvZ3JhbW1hdGljYWxseSBpZiB0aGVcclxuICAgICAgICAgICAgLy8gaG9zdGluZyBwYWdlIGhhcyBvcHRlZCBpbnRvIHRoZSBhdXRvIHVwZGF0aW5nIGlucHV0XHJcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5hdXRvVXBkYXRpbmdGb3JtTW9kZWwpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnNldFZhbHVlKHRoaXMuZm9ybWF0RGlzcGxheU51bWJlcih2YWx1ZSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHRleHRib3ggc3RhdHVzIGNoYW5nZXMgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxlZnQgdW5pdHMgcG9zaXRpb24gYmVjYXVzZVxyXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gbWFrZSByb29tIGZvciB0aGUgaW52YWxpZCBpY29uXHJcbiAgICAgICAgaWYgKHRoaXMubGVmdFVuaXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25MZWZ0VW5pdHMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgYWZ0ZXJWaWV3Q2hlY2tlZCBsaWZlY3ljbGUgaG9va1xyXG4gICAgICogU2hvdyB0aGUgdW5pdHMgZWxlbWVudCBpZiB1bml0cyBpcyBkZWZpbmVkLiBSdW5zIGFmdGVyIGV2ZXJ5IG5nT25DaGFuZ2VzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmxlZnRVbml0cyB8fCB0aGlzLnJpZ2h0VW5pdHMpICYmICF0aGlzLnVuaXRzV2lkdGhDYWxjdWxhdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1VuaXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdGhhdCBidWlsZHMgYW5kIHJldHVybnMgYSBWYWxpZGF0b3JGbiBhcnJheSB0byBzZXQgb24gdGhlIGZvcm0gY29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgICAgICAgbGV0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKG51bWVyaWNib3hWYWxpZGF0aW9uKHRoaXMubWluLCB0aGlzLm1heCwgdGhpcy5kZWNpbWFscywgdGhpcy5tYXhQcmVjaXNpb25EaWdpdHMpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb2N1cyBvdXQgZXZlbnQgaGFuZGxlciBmb3IgdGhlIFRleHRib3ggY29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybU1vZGVsVmFsdWUodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEZ1bmN0aW9uIHRvIHNldCBmb2N1cyBvbiBhbiBpbnB1dCBwcm9ncmFtYXRpY2FsbHkgYWZ0ZXIgdGhlIHBhZ2VcclxuICAgICogaGFkIGJlZW4gcmVuZGVyZWQuICBUaGUgaGlnaGxpZ2h0IHRleHQgZmxhZyB3aWxsIHNlbGVjdCB0aGUgdGV4dFxyXG4gICAgKiB3aXRoaW4gdGhlIGlucHV0IGlmIHBhc3NlZCBpbiBhbmQgdHJ1ZVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyBzZXRGb2N1cyhoaWdobGlnaHRUZXh0PzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGV4dGJveElucHV0LnNldEZvY3VzKGhpZ2hsaWdodFRleHQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gdGhlIHRleHRib3ggbW9kZWwgdXBkYXRlcyB3ZSBuZWVkIHRvIGFkZCBzb21lIGRpc3BsYXkgZm9ybWF0dGluZyBmb3JcclxuICAgICAqIGRpc3BsYXkgaW4gdGhlIHRleHRib3ggYW5kIGNhc3QgdGhlIHRleHRib3ggbW9kZWwgdG8gYSBudW1iZXIuIEF2b2lkIHVwZGF0aW5nXHJcbiAgICAgKiB0aGUgZm9ybSBtb2RlbCB3aGVuIHRoZSB2YWx1ZSBkb2Vzbid0IGNoYW5nZSBiZWNhdXNlIGxpc3RlbmVycyB3aWxsIGZpcmUgZm9yIG5vIHJlYXNvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUZvcm1Nb2RlbFZhbHVlKGlzRm9jdXNPdXQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b1VwZGF0ZUZvcm1Nb2RlbCkge1xyXG4gICAgICAgICAgICAvLyBNYWtlIGl0IHNvIHZhbHVlIGNoYW5nZXMgb24gdGhlIGZvcm0gbW9kZWwgZG8gbm90IGdldCB0cmlnZ2VyZWRcclxuICAgICAgICAgICAgLy8gYXMgd2UgY2hhbmdlIGl0IHByb2dyYW1tYXRpY2FsbHkuICBXZSBkbyBub3Qgd2FudCB0aGUgdGV4dGJveFxyXG4gICAgICAgICAgICAvLyBtb2RlbCB0byBiZSB1cGRhdGVkIHdoaWxlIHRoZSB1c2VyIGlzIGluIHRoZSBpbnB1dFxyXG4gICAgICAgICAgICB0aGlzLmF1dG9VcGRhdGluZ0Zvcm1Nb2RlbCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnZhbGlkIHx8IHRoaXMudGV4dGJveEZvcm1Nb2RlbC52YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgLy8gU3RhcnQgb3V0IHdpdGggbnVsbCBmb3IgdGhlIG51bWJlciwgaWYgdGhlIHRleHRib3ggdmFsdWUgaXMgbm90IGEgbnVtYmVyXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSB3aWxsIGNsZWFyIGl0IG91dCBvbiBmb2N1cyBvdXRcclxuICAgICAgICAgICAgICAgIGxldCBudW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgdGV4dGJveCBtb2RlbCBpcyBhIG51bWJlciBiZWZvcmUgdHJ5aW5nIHRvIHVwZGF0ZSB0aGVcclxuICAgICAgICAgICAgICAgIC8vIGZvcm0gbW9kZWwgdmFsdWUgd2l0aCBpdFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dGJveEZvcm1Nb2RlbC52YWx1ZSAmJiAhaXNOYU4odGhpcy50ZXh0Ym94Rm9ybU1vZGVsLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE91ciB2YWx1ZSBpcyBhIGxlZ2l0IG51bWJlciwgb24gZm9jdXMgb3V0IHdlIHdpbGwgZm9ybWF0IGl0IGlmIG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciA9IE51bWJlcih0aGlzLnRleHRib3hGb3JtTW9kZWwudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVja2luZyBpZiB0aGUgdmFsdWUgaGFzIGFjdHVhbGx5IGNoYW5nZWQsIGlmIG5vdCBkb24ndCBzZXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgdG8gYXZvaWQgZXh0cmEgbGlzdGVuZXIgY2FsbHNcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtTW9kZWwudmFsdWUgIT09IG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZShudW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdGV4dGJveCBtb2RlbCBpcyBub3QgYSBudW1iZXIsIGNoZWNrIHRvIHNlZSBpZiBvdXIgZm9ybSBtb2RlbCBoYXMgYSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpZiBzbyBjbGVhciBpdCBvdXRcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtTW9kZWwudmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdpbGwgdXBkYXRlIHRoZSB0ZXh0Ym94IGZvcm0gbW9kZWwgd2l0aCBmb3JtYXR0aW5nIGlmIG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgLy8gb24gRm9jdXMgb3V0LiAgVGhpcyB3b3JrcyB3ZWxsIGZvciB0aGUgdXNlciB3aGV0aGVyIHRoZSBhdXRvIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgLy8gaXMgb3B0ZWQgaW4gb3Igbm90XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNGb2N1c091dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveEZvcm1Nb2RlbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdERpc3BsYXlOdW1iZXIobnVtYmVyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRpc3BsYXksIGp1c3QgZW5zdXJpbmcgd2UgcmVzZXQgb3VyIGZsYWcgdGhhdCBmaWx0ZXJzXHJcbiAgICAgICAgICAgIC8vIHRoZSBmb3JtIG1vZGVsIHZhbHVlIGNoYW5nZXNcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9VcGRhdGluZ0Zvcm1Nb2RlbCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnQgYSBudW1iZXIgdmFsdWUgdG8gdGhlIGZvcm1tYXRlZCBkaXNwbGF5IHN0cmluZy4gSWYgdGhlcmUgaXMgbm8gdmFsdWVcclxuICAgICAqIHJldHVybiBudWxsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZm9ybWF0RGlzcGxheU51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IGNhbGxpbmcgdG9GaXhlZCBpZiB0aGUgdmFsdWUgaXNuJ3QgYSBudW1iZXIuICBUaGlzIGlzIHBvc3NpYmxlXHJcbiAgICAgICAgICAgIC8vIGlmIHBhdGNoaW5nIGEgdmFsdWUgZnJvbSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQgYXMgeW91IGRvbid0IGhhdmVcclxuICAgICAgICAgICAgLy8gdHlwZSBjaGVja2luZyB0aGVyZVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93UHJlY2lzaW9uICYmIHRoaXMuZGVjaW1hbHMgJiYgIWlzTmFOKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQodGhpcy5kZWNpbWFscyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIHRoZSB1bml0cyBlbGVtZW50IGFuZCBzZXQgdGhlIHBhZGRpbmcgaW4gdGhlIHRleHRib3ggaW5wdXQgYmFzZWRcclxuICAgICAqIG9uIHRoZSB3aWR0aCBvZiB0aGUgdW5pdHMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHBvc2l0aW9uUmlnaHRVbml0cygpOiB2b2lkIHtcclxuICAgICAgICBsZXQgdW5pdHNFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnVuaXRzLXJpZ2h0Jyk7XHJcbiAgICAgICAgbGV0IGlucHV0RWwgPSB0aGlzLnRleHRib3hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XHJcblxyXG4gICAgICAgIGlmICh1bml0c0VsICYmIGlucHV0RWwpIHtcclxuICAgICAgICAgICAgbGV0IHVuaXRzV2lkdGggPSB1bml0c0VsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgaWYgKHVuaXRzV2lkdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzV2lkdGhDYWxjdWxhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhZGRpbmcgPSB1bml0c1dpZHRoO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGlucHV0RWwsICdwYWRkaW5nLXJpZ2h0JywgcGFkZGluZyArICdweCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBwb3NpdGlvbkxlZnRVbml0cygpIHtcclxuICAgICAgICBsZXQgdW5pdHNFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnVuaXRzLWxlZnQnKTtcclxuICAgICAgICBsZXQgaW5wdXRFbCA9IHRoaXMudGV4dGJveEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuXHJcbiAgICAgICAgaWYgKHVuaXRzRWwgJiYgaW5wdXRFbCkge1xyXG4gICAgICAgICAgICBsZXQgdW5pdHNXaWR0aCA9IHVuaXRzRWwub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgICAgICBpZiAodW5pdHNXaWR0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5pdHNXaWR0aENhbGN1bGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgcGFkZGluZyA9IHVuaXRzV2lkdGg7XHJcbiAgICAgICAgICAgIGxldCBsZWZ0UG9zaXRpb24gPSBnZXRDb21wdXRlZFN0eWxlKHVuaXRzRWwpLmxlZnQ7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0UG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmcgKz0gcGFyc2VJbnQobGVmdFBvc2l0aW9uLnJlcGxhY2UoJ3B4JywgJycpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGlucHV0RWwsICdwYWRkaW5nLWxlZnQnLCBwYWRkaW5nICsgJ3B4Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGFuZCBhcHBlbmQgdGhlIHVuaXRzIGVsZW1lbnQgdG8gdGhlIHRleHRib3ggZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNob3dVbml0cygpOiB2b2lkIHtcclxuICAgICAgICBsZXQgaW5wdXRXcmFwcGVyID0gdGhpcy50ZXh0Ym94RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtd3JhcHBlcicpO1xyXG5cclxuICAgICAgICBpZiAoaW5wdXRXcmFwcGVyKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxlZnRVbml0cykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVuaXRzRWwgPSB0aGlzLnRleHRib3hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy51bml0cy1sZWZ0Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodW5pdHNFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodW5pdHNFbCwgJ2lubmVySFRNTCcsIHRoaXMubGVmdFVuaXRzKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChpbnB1dFdyYXBwZXIsIHRoaXMubWFrZVVuaXRFbGVtZW50KCdsZWZ0JywgdGhpcy5sZWZ0VW5pdHMpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25MZWZ0VW5pdHMoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMucmlnaHRVbml0cykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVuaXRzRWwgPSB0aGlzLnRleHRib3hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy51bml0cy1yaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVuaXRzRWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHVuaXRzRWwsICdpbm5lckhUTUwnLCB0aGlzLnJpZ2h0VW5pdHMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGlucHV0V3JhcHBlciwgdGhpcy5tYWtlVW5pdEVsZW1lbnQoJ3JpZ2h0JywgdGhpcy5yaWdodFVuaXRzKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uUmlnaHRVbml0cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWFrZVVuaXRFbGVtZW50KHNpZGU6ICdsZWZ0JyB8ICdyaWdodCcsIHRleHQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHVuaXRzRWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh1bml0c0VsLCAnY2xhc3MnLCBgdW5pdHMgdW5pdHMtJHtzaWRlfWApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHVuaXRzRWwsICdpZCcsIGAke3RoaXMuaWR9X3VuaXRzYCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodW5pdHNFbCwgJ3N0eWxlJywgJ3BvaW50ZXItZXZlbnRzOiBub25lJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh1bml0c0VsLCAnaW5uZXJIVE1MJywgdGV4dCk7XHJcblxyXG4gICAgICAgIHJldHVybiB1bml0c0VsO1xyXG4gICAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRyb2wgY29udHJvbC1sYWJlbC17e2xhYmVsUG9zaXRpb259fVwiXHJcbiAgICAgW2NsYXNzLmludmFsaWRdPVwiZm9ybU1vZGVsPy5pbnZhbGlkICYmIChmb3JtTW9kZWw/LnRvdWNoZWQpXCI+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgICAgICBuZ1ByZXNlcnZlV2hpdGVzcGFjZXM+XHJcbiAgICA8c3Bhbj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCAmJiBmb3JtTW9kZWw/LnRvdWNoZWQgJiYgZm9ybU1vZGVsPy5pbnZhbGlkXCI+e3t2YWxpZGF0aW9uRXJyb3JzIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuICA8IS0tIFNldHRpbmcgdGhlIG1heGxlbmd0aCB0byAxMyB0byBjb21iYXQgdGhlIHVzZXIgZnJvbSBlbnRlcmluZyB0b28gbGFyZ2Ugb2YgYSBudW1iZXJcclxuICAgICAgICAgZm9yIGphdmFzY3JpcHQgdG8gc3VwcG9ydC4gIElmIHRoZSB1c2VyIGVudGVycyBhbGwgMTMgY2hhcmFjdGVycyBhcyBudW1iZXJzIGFuZCB3ZSBoYXZlIHNob3dQcmVjaXNpb24gc2V0LCBhZGRpbmcgdGhlXHJcbiAgICAgICAgIGRlY2ltYWwgYW5kIHRoZSBlbXB0eSB6ZXJvIGNoYXJhY3RlcnMgd2lsbCBnZXQgdGhlbSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB0byBlZGl0IGl0IHRoZXkgbXVzdCByZW1vdmUgY2hhcmFjdGVyc1xyXG4gICAgICAgICBhcyB3ZSB3b3VsZCBwdXNoIHRoZW0gcGFzdCB0aGUgbGltaXQgLS0+XHJcbiAgPGVjLXRleHRib3ggW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICAjdGV4dGJveFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1pbnB1dCBtYi0wXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4UHJlY2lzaW9uRGlnaXRzID8gbWF4UHJlY2lzaW9uRGlnaXRzICsgMyA6IDEzXCJcclxuICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Nb2RlbF09XCJ0ZXh0Ym94Rm9ybU1vZGVsXCJcclxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ0b29sdGlwXCJcclxuICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCI+XHJcbiAgPC9lYy10ZXh0Ym94PlxyXG48L2Rpdj5cclxuIl19
|
@@ -3,11 +3,11 @@ import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
3
|
import { Component, HostListener, Input, ViewChild } from '@angular/core';
|
4
4
|
import { of, Subject } from 'rxjs';
|
5
5
|
import { delay, switchMap, takeUntil } from 'rxjs/operators';
|
6
|
-
import { TagsComponent } from '../../display/tags/tags.component';
|
7
|
-
import { NgIf } from '@angular/common';
|
8
6
|
import * as i0 from "@angular/core";
|
9
7
|
import * as i1 from "@angular/cdk/overlay";
|
10
8
|
import * as i2 from "../../display/tooltip/tooltip.service";
|
9
|
+
import * as i3 from "@angular/common";
|
10
|
+
import * as i4 from "../../display/tags/tags.component";
|
11
11
|
export class PopoverComponent {
|
12
12
|
constructor(overlay, viewContainerRef, elementRef, tooltipService) {
|
13
13
|
this.overlay = overlay;
|
@@ -90,10 +90,10 @@ export class PopoverComponent {
|
|
90
90
|
}
|
91
91
|
}
|
92
92
|
PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PopoverComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i2.TooltipService }], target: i0.ɵɵFactoryTarget.Component });
|
93
|
-
PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverComponent,
|
93
|
+
PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverComponent, selector: "ec-popover", inputs: { icon: "icon", tag: "tag", tagHoverType: "tagHoverType", contentPosition: "contentPosition", iconHoverClass: "iconHoverClass" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<!-- Before hover state -->\r\n<div class=\"p-2\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed] = \"true\"\r\n [tags]=\"tag\">\r\n </ec-tags>\r\n</div>\r\n<!-- ./Before hover state -->\r\n\r\n<!-- Hover state -->\r\n<ng-template #content>\r\n <article class=\"popover-content\"\r\n (document:mousemove)=\"onMouseMove($event)\">\r\n <ng-content></ng-content>\r\n </article>\r\n <div class=\"p-2 {{contentPosition}}\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm {{iconHoverClass}}\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed]=\"true\"\r\n [tags]=\"hoverTag\">\r\n </ec-tags>\r\n </div>\r\n</ng-template>\r\n<!-- ./Hover state -->\r\n", styles: [":host{line-height:.75rem;display:inline-block}.popover-content{border-radius:var(--ec-border-radius);box-shadow:0 3px 6px #1a1a231f;overflow:hidden;position:relative}.popover-content+div{position:absolute;line-height:.75rem}.popover-content+div.top-left{top:0;left:0}.popover-content+div.top-right{top:0;right:0}.popover-content+div.bottom-right{bottom:0;right:0}.popover-content+div.bottom-left{bottom:0;left:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TagsComponent, selector: "ec-tags", inputs: ["id", "tags", "wrap", "isCondensed"], outputs: ["tagClosed"] }] });
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PopoverComponent, decorators: [{
|
95
95
|
type: Component,
|
96
|
-
args: [{ selector: 'ec-popover',
|
96
|
+
args: [{ selector: 'ec-popover', template: "<!-- Before hover state -->\r\n<div class=\"p-2\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed] = \"true\"\r\n [tags]=\"tag\">\r\n </ec-tags>\r\n</div>\r\n<!-- ./Before hover state -->\r\n\r\n<!-- Hover state -->\r\n<ng-template #content>\r\n <article class=\"popover-content\"\r\n (document:mousemove)=\"onMouseMove($event)\">\r\n <ng-content></ng-content>\r\n </article>\r\n <div class=\"p-2 {{contentPosition}}\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm {{iconHoverClass}}\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed]=\"true\"\r\n [tags]=\"hoverTag\">\r\n </ec-tags>\r\n </div>\r\n</ng-template>\r\n<!-- ./Hover state -->\r\n", styles: [":host{line-height:.75rem;display:inline-block}.popover-content{border-radius:var(--ec-border-radius);box-shadow:0 3px 6px #1a1a231f;overflow:hidden;position:relative}.popover-content+div{position:absolute;line-height:.75rem}.popover-content+div.top-left{top:0;left:0}.popover-content+div.top-right{top:0;right:0}.popover-content+div.bottom-right{bottom:0;right:0}.popover-content+div.bottom-left{bottom:0;left:0}\n"] }]
|
97
97
|
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i2.TooltipService }]; }, propDecorators: { icon: [{
|
98
98
|
type: Input
|
99
99
|
}], tag: [{
|
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
114
114
|
type: HostListener,
|
115
115
|
args: ['mouseleave']
|
116
116
|
}] } });
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBK0IsWUFBWSxFQUFFLEtBQUssRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBV3ZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLGNBQThCO1FBSDlCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXBDeEMsOEZBQThGO1FBQ3JGLFNBQUksR0FBWSxFQUFFLENBQUM7UUFRbkIsb0JBQWUsR0FBMkIsVUFBVSxDQUFDO1FBRXJELG1CQUFj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LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhZywgVGFnVHlwZSB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdGFncy90YWcnO1xyXG5pbXBvcnQgeyBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlzcGxheS90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFRhZ3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3RhZ3MvdGFncy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCB0eXBlIFBvcG92ZXJDb250ZW50UG9zaXRpb24gPSAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZWMtcG9wb3ZlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIFRhZ3NDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqIEFuIG9wdGlvbmFsIGljb24gdGhhdCwgaWYgcHJvdmlkZWQsIGVuYWJsZXMgdGhlIHBvcG92ZXIgdG8gdXNlIGl0IGFzIHRoZSBhbmNob3IgZWxlbWVudCAqL1xyXG4gIEBJbnB1dCgpIGljb24/OiBzdHJpbmcgPSAnJztcclxuICBcclxuICAvKiogQW4gb3B0aW9uYWwgdGFnIHRoYXQsIGlmIHByb3ZpZGVkLCBlbmFibGVzIHRoZSBwb3BvdmVyIHRvIHVzZSBpdCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi9cclxuICBASW5wdXQoKSB0YWc/OiBUYWc7XHJcblxyXG4gIC8qKiBVc2VkIHRvIGRlbm90ZSB0aGUgaG92ZXIgdGFnJ3MgdHlwZSAoYW5kIHRodXMgYmFja2dyb3VuZC1jb2xvcikgKi9cclxuICBASW5wdXQoKSB0YWdIb3ZlclR5cGU/OiBUYWdUeXBlO1xyXG5cclxuICBASW5wdXQoKSBjb250ZW50UG9zaXRpb246IFBvcG92ZXJDb250ZW50UG9zaXRpb24gPSAndG9wLWxlZnQnO1xyXG5cclxuICBASW5wdXQoKSBpY29uSG92ZXJDbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBwdWJsaWMgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIFxyXG5cclxuICAvKiogSW4gdGhlIHRlbXBsYXRlLCB3ZSB1c2UgYW4gZWMtdGFncyBlbGVtZW50IGZvciB0aGUgcHJlLWhvdmVyIHN0YXRlIGFuZCBhbiBlbnRpcmVseVxyXG4gICAqICBzZXBhcmF0ZSBlYy10YWdzIGVsZW1lbnQgZm9yIG91ciBob3ZlciBzdGF0ZSwgcmVzdWx0aW5nIGluIHR3byBjb21wb25lbnRzLiBUbyBhY2hpZXZlIGEgY2hhbmdlIFxyXG4gICAqIGluIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIGZvciBvdXIgYW5jaG9yIHRhZywgb24gaG92ZXIsIGEgZGlmZmVyZW50IHRhZy50YWdUeXBlIG11c3QgYmUgcHJvdmlkZWQgb24gdGhlXHJcbiAgICogc2Vjb25kIGVjLXRhZyBlbGVtZW50XHJcbiAgICovXHJcbiAgcHVibGljIGhvdmVyVGFnPzogVGFnO1xyXG5cclxuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgY29udGVudFZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcclxuICBwcml2YXRlIGNvbnRlbnRSZWN0OiBET01SZWN0IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgbW91c2VPdmVyID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIHByaXZhdGUgaW50ZXJydXB0ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHRvb2x0aXBTZXJ2aWNlOiBUb29sdGlwU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICAvKiogV2hlbiB0aGUgcG9wb3ZlciBpbml0aWFsaXplcywgaWYgYSBuZXcgdGFnVHlwZSBpcyBwcm92aWRlZCBmb3IgdGhlIGhvdmVyIHN0YXRlIG9mIHRoZSBwb3BvdmVyLCBcclxuICAgKiAgd2UgdXNlIGl0IHRvIHVwZGF0ZSB0aGUgdHlwZSBvZiBvdXIgXCJob3ZlclRhZ1wiICh3aGljaCBjb250cm9scyBiYWNrZ3JvdW5kLWNvbG9yIG9mIHRhZykgXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy50YWcgJiYgdGhpcy50YWdIb3ZlclR5cGUpIHtcclxuICAgICAgdGhpcy5ob3ZlclRhZyA9IHsuLi50aGlzLnRhZywgdHlwZTogdGhpcy50YWdIb3ZlclR5cGUgfTtcclxuICAgIH1cclxuICAgIHRoaXMubW91c2VPdmVyXHJcbiAgICAucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHYgPT5cclxuICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgZGVsYXkoMzAwKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmludGVycnVwdClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93KCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdygpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGNvbnRlbnRQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5jb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICB0aGlzLmNvbnRlbnRWaWV3UmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChjb250ZW50UG9ydGFsKTtcclxuICBcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdmVyJylcclxuICBwdWJsaWMgb25Nb3VzZU92ZXIoKSB7XHJcbiAgICB0aGlzLm1vdXNlT3Zlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICBwdWJsaWMgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGVzIHRoZSBwb3BvdmVyIGlmIHRoZSBtb3VzZSBtb3ZlcyBvdXRzaWRlIG9mIHRoZSBwb3BvdmVyIGNvbnRlbnRcclxuICAgKi9cclxuICBwdWJsaWMgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGxldCBjYWxsQ2FsbGJhY2sgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuY29udGVudFJlY3QpIHtcclxuICAgICAgdGhpcy5jb250ZW50UmVjdCA9IHRoaXMuY29udGVudFZpZXdSZWY/LnJvb3ROb2Rlc1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIGNhbGxDYWxsYmFjayA9IHRoaXMudG9vbHRpcFNlcnZpY2Uub25Nb3ZlKGV2ZW50LCB0aGlzLmNvbnRlbnRSZWN0ISk7XHJcbiAgICB9XHJcbiAgICBpZihjYWxsQ2FsbGJhY2spIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfSBcclxuXHJcbiAgcHJpdmF0ZSBoaWRlKCkge1xyXG4gICAgdGhpcy5pbnRlcnJ1cHQubmV4dCgpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb250ZW50UmVjdCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtwb3NpdGlvbl0pO1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogcG9zaXRpb25TdHJhdGVneVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UG9zaXRpb24oKTogQ29ubmVjdGVkUG9zaXRpb24ge1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmNvbnRlbnRQb3NpdGlvbi5zcGxpdCgnLScpO1xyXG4gICAgY29uc3Qgb3ZlcmxheVggPSA8J3N0YXJ0JyB8ICdlbmQnPihwb3NpdGlvblsxXSA9PSAnbGVmdCcgPyAnc3RhcnQnIDogJ2VuZCcpO1xyXG4gICAgY29uc3Qgb3ZlcmxheVkgPSA8J3RvcCcgfCAnYm90dG9tJz5wb3NpdGlvblswXTtcclxuICAgIHJldHVybiB7IG9yaWdpblg6IG92ZXJsYXlYLCBvcmlnaW5ZOiBvdmVybGF5WSwgb3ZlcmxheVg6IG92ZXJsYXlYLCBvdmVybGF5WTogb3ZlcmxheVkgfTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSBCZWZvcmUgaG92ZXIgc3RhdGUgLS0+XHJcbjxkaXYgY2xhc3M9XCJwLTJcIj5cclxuICA8aSAqbmdJZj1cIiF0YWdcIiBjbGFzcz1cImVjLWljb24ge3tpY29ufX0gZWMtaWNvbi1zbVwiPjwvaT5cclxuICA8ZWMtdGFncyAqbmdJZj1cInRhZ1wiXHJcbiAgICAgICAgICAgIFtpc0NvbmRlbnNlZF0gPSBcInRydWVcIlxyXG4gICAgICAgICAgICBbdGFnc109XCJ0YWdcIj5cclxuICA8L2VjLXRhZ3M+XHJcbjwvZGl2PlxyXG48IS0tIC4vQmVmb3JlIGhvdmVyIHN0YXRlIC0tPlxyXG5cclxuPCEtLSBIb3ZlciBzdGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxyXG4gIDxhcnRpY2xlIGNsYXNzPVwicG9wb3Zlci1jb250ZW50XCJcclxuICAgICAgICAgICAoZG9jdW1lbnQ6bW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2FydGljbGU+XHJcbiAgPGRpdiBjbGFzcz1cInAtMiB7e2NvbnRlbnRQb3NpdGlvbn19XCI+XHJcbiAgICA8aSAqbmdJZj1cIiF0YWdcIiBjbGFzcz1cImVjLWljb24ge3tpY29ufX0gZWMtaWNvbi1zbSB7e2ljb25Ib3ZlckNsYXNzfX1cIj48L2k+XHJcbiAgICA8ZWMtdGFncyAqbmdJZj1cInRhZ1wiXHJcbiAgICAgICAgICAgICBbaXNDb25kZW5zZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbdGFnc109XCJob3ZlclRhZ1wiPlxyXG4gICAgPC9lYy10YWdzPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIC4vSG92ZXIgc3RhdGUgLS0+XHJcbiJdfQ==
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBK0IsWUFBWSxFQUFFLEtBQUssRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBVTdELE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLGNBQThCO1FBSDlCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXBDeEMsOEZBQThGO1FBQ3JGLFNBQUksR0FBWSxFQUFFLENBQUM7UUFRbkIsb0JBQWUsR0FBMkIsVUFBVSxDQUFDO1FBRXJELG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBZ0I3QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xD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LENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUUsTUFBTSxRQUFRLEdBQXFCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzFGLENBQUM7OzZHQXBJVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixrWENmN0IsMnhCQXlCQTsyRkRWYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsWUFBWTttTEFPYixJQUFJO3NCQUFaLEtBQUs7Z0JBR0csR0FBRztzQkFBWCxLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUV1QixPQUFPO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBZ0ViLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVztnQkFNbEIsT0FBTztzQkFEYixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWcsIFRhZ1R5cGUgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3RhZ3MvdGFnJztcclxuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwU2VydmljZSB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdG9vbHRpcC90b29sdGlwLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHR5cGUgUG9wb3ZlckNvbnRlbnRQb3NpdGlvbiA9ICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBBbiBvcHRpb25hbCBpY29uIHRoYXQsIGlmIHByb3ZpZGVkLCBlbmFibGVzIHRoZSBwb3BvdmVyIHRvIHVzZSBpdCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi9cclxuICBASW5wdXQoKSBpY29uPzogc3RyaW5nID0gJyc7XHJcbiAgXHJcbiAgLyoqIEFuIG9wdGlvbmFsIHRhZyB0aGF0LCBpZiBwcm92aWRlZCwgZW5hYmxlcyB0aGUgcG9wb3ZlciB0byB1c2UgaXQgYXMgdGhlIGFuY2hvciBlbGVtZW50ICovXHJcbiAgQElucHV0KCkgdGFnPzogVGFnO1xyXG5cclxuICAvKiogVXNlZCB0byBkZW5vdGUgdGhlIGhvdmVyIHRhZydzIHR5cGUgKGFuZCB0aHVzIGJhY2tncm91bmQtY29sb3IpICovXHJcbiAgQElucHV0KCkgdGFnSG92ZXJUeXBlPzogVGFnVHlwZTtcclxuXHJcbiAgQElucHV0KCkgY29udGVudFBvc2l0aW9uOiBQb3BvdmVyQ29udGVudFBvc2l0aW9uID0gJ3RvcC1sZWZ0JztcclxuXHJcbiAgQElucHV0KCkgaWNvbkhvdmVyQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250ZW50JykgcHVibGljIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBcclxuXHJcbiAgLyoqIEluIHRoZSB0ZW1wbGF0ZSwgd2UgdXNlIGFuIGVjLXRhZ3MgZWxlbWVudCBmb3IgdGhlIHByZS1ob3ZlciBzdGF0ZSBhbmQgYW4gZW50aXJlbHlcclxuICAgKiAgc2VwYXJhdGUgZWMtdGFncyBlbGVtZW50IGZvciBvdXIgaG92ZXIgc3RhdGUsIHJlc3VsdGluZyBpbiB0d28gY29tcG9uZW50cy4gVG8gYWNoaWV2ZSBhIGNoYW5nZSBcclxuICAgKiBpbiB0aGUgYmFja2dyb3VuZC1jb2xvciBmb3Igb3VyIGFuY2hvciB0YWcsIG9uIGhvdmVyLCBhIGRpZmZlcmVudCB0YWcudGFnVHlwZSBtdXN0IGJlIHByb3ZpZGVkIG9uIHRoZVxyXG4gICAqIHNlY29uZCBlYy10YWcgZWxlbWVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBob3ZlclRhZz86IFRhZztcclxuXHJcbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcclxuICBwcml2YXRlIGNvbnRlbnRWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcbiAgcHJpdmF0ZSBjb250ZW50UmVjdDogRE9NUmVjdCB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIG1vdXNlT3ZlciA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwcml2YXRlIGludGVycnVwdCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB0b29sdGlwU2VydmljZTogVG9vbHRpcFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqIFdoZW4gdGhlIHBvcG92ZXIgaW5pdGlhbGl6ZXMsIGlmIGEgbmV3IHRhZ1R5cGUgaXMgcHJvdmlkZWQgZm9yIHRoZSBob3ZlciBzdGF0ZSBvZiB0aGUgcG9wb3ZlciwgXHJcbiAgICogIHdlIHVzZSBpdCB0byB1cGRhdGUgdGhlIHR5cGUgb2Ygb3VyIFwiaG92ZXJUYWdcIiAod2hpY2ggY29udHJvbHMgYmFja2dyb3VuZC1jb2xvciBvZiB0YWcpIFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMudGFnICYmIHRoaXMudGFnSG92ZXJUeXBlKSB7XHJcbiAgICAgIHRoaXMuaG92ZXJUYWcgPSB7Li4udGhpcy50YWcsIHR5cGU6IHRoaXMudGFnSG92ZXJUeXBlIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vdXNlT3ZlclxyXG4gICAgLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+XHJcbiAgICAgICAgb2YodikucGlwZShcclxuICAgICAgICAgIGRlbGF5KDMwMCksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5pbnRlcnJ1cHQpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2hvdygpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3coKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICBcclxuICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZygpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xyXG4gIFxyXG4gICAgICBjb25zdCBjb250ZW50UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuY29udGVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgdGhpcy5jb250ZW50Vmlld1JlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2goY29udGVudFBvcnRhbCk7XHJcbiAgXHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXHJcbiAgcHVibGljIG9uTW91c2VPdmVyKCkge1xyXG4gICAgdGhpcy5tb3VzZU92ZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgcHVibGljIG9uTGVhdmUoKSB7XHJcbiAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIaWRlcyB0aGUgcG9wb3ZlciBpZiB0aGUgbW91c2UgbW92ZXMgb3V0c2lkZSBvZiB0aGUgcG9wb3ZlciBjb250ZW50XHJcbiAgICovXHJcbiAgcHVibGljIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgY2FsbENhbGxiYWNrID0gZmFsc2U7XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIHRoaXMuY29udGVudFJlY3QgPSB0aGlzLmNvbnRlbnRWaWV3UmVmPy5yb290Tm9kZXNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5jb250ZW50UmVjdCkge1xyXG4gICAgICBjYWxsQ2FsbGJhY2sgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLm9uTW92ZShldmVudCwgdGhpcy5jb250ZW50UmVjdCEpO1xyXG4gICAgfVxyXG4gICAgaWYoY2FsbENhbGxiYWNrKSB7XHJcbiAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH0gXHJcblxyXG4gIHByaXZhdGUgaGlkZSgpIHtcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuY29udGVudFJlY3QgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxyXG4gICAgICAud2l0aFBvc2l0aW9ucyhbcG9zaXRpb25dKTtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHBvc2l0aW9uU3RyYXRlZ3lcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBvc2l0aW9uKCk6IENvbm5lY3RlZFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5jb250ZW50UG9zaXRpb24uc3BsaXQoJy0nKTtcclxuICAgIGNvbnN0IG92ZXJsYXlYID0gPCdzdGFydCcgfCAnZW5kJz4ocG9zaXRpb25bMV0gPT0gJ2xlZnQnID8gJ3N0YXJ0JyA6ICdlbmQnKTtcclxuICAgIGNvbnN0IG92ZXJsYXlZID0gPCd0b3AnIHwgJ2JvdHRvbSc+cG9zaXRpb25bMF07XHJcbiAgICByZXR1cm4geyBvcmlnaW5YOiBvdmVybGF5WCwgb3JpZ2luWTogb3ZlcmxheVksIG92ZXJsYXlYOiBvdmVybGF5WCwgb3ZlcmxheVk6IG92ZXJsYXlZIH07XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gQmVmb3JlIGhvdmVyIHN0YXRlIC0tPlxyXG48ZGl2IGNsYXNzPVwicC0yXCI+XHJcbiAgPGkgKm5nSWY9XCIhdGFnXCIgY2xhc3M9XCJlYy1pY29uIHt7aWNvbn19IGVjLWljb24tc21cIj48L2k+XHJcbiAgPGVjLXRhZ3MgKm5nSWY9XCJ0YWdcIlxyXG4gICAgICAgICAgICBbaXNDb25kZW5zZWRdID0gXCJ0cnVlXCJcclxuICAgICAgICAgICAgW3RhZ3NdPVwidGFnXCI+XHJcbiAgPC9lYy10YWdzPlxyXG48L2Rpdj5cclxuPCEtLSAuL0JlZm9yZSBob3ZlciBzdGF0ZSAtLT5cclxuXHJcbjwhLS0gSG92ZXIgc3RhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuICA8YXJ0aWNsZSBjbGFzcz1cInBvcG92ZXItY29udGVudFwiXHJcbiAgICAgICAgICAgKGRvY3VtZW50Om1vdXNlbW92ZSk9XCJvbk1vdXNlTW92ZSgkZXZlbnQpXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9hcnRpY2xlPlxyXG4gIDxkaXYgY2xhc3M9XCJwLTIge3tjb250ZW50UG9zaXRpb259fVwiPlxyXG4gICAgPGkgKm5nSWY9XCIhdGFnXCIgY2xhc3M9XCJlYy1pY29uIHt7aWNvbn19IGVjLWljb24tc20ge3tpY29uSG92ZXJDbGFzc319XCI+PC9pPlxyXG4gICAgPGVjLXRhZ3MgKm5nSWY9XCJ0YWdcIlxyXG4gICAgICAgICAgICAgW2lzQ29uZGVuc2VkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgW3RhZ3NdPVwiaG92ZXJUYWdcIj5cclxuICAgIDwvZWMtdGFncz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAuL0hvdmVyIHN0YXRlIC0tPlxyXG4iXX0=
|