@taiga-ui/kit 3.37.0 → 3.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-kit-components-badged-content.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-badged-content.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-calendar-month.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-calendar-month.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-combo-box.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-copy.umd.js +17 -14
- package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-date-range.umd.js +19 -17
- package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-date-time.umd.js +25 -19
- package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-date.umd.js +17 -14
- package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-number.umd.js +67 -25
- package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-password.umd.js +13 -16
- package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +18 -4
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-range.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-tag.umd.js +11 -8
- package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-time.umd.js +17 -14
- package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-year.umd.js +39 -12
- package/bundles/taiga-ui-kit-components-input-year.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-progress.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-select.umd.js +17 -3
- package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-text-area.umd.js +3 -3
- package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
- package/components/combo-box/combo-box.component.d.ts +5 -3
- package/components/input/input.component.d.ts +5 -3
- package/components/input-copy/input-copy.component.d.ts +3 -3
- package/components/input-date/input-date.component.d.ts +4 -4
- package/components/input-date-range/input-date-range.component.d.ts +4 -4
- package/components/input-date-time/input-date-time.component.d.ts +5 -5
- package/components/input-month/input-month.component.d.ts +5 -3
- package/components/input-month-range/input-month-range.component.d.ts +5 -3
- package/components/input-number/input-number.component.d.ts +9 -5
- package/components/input-password/input-password.component.d.ts +1 -2
- package/components/input-phone/input-phone.component.d.ts +5 -3
- package/components/input-phone-international/input-phone-international.component.d.ts +5 -3
- package/components/input-tag/input-tag.component.d.ts +1 -1
- package/components/input-time/input-time.component.d.ts +3 -3
- package/components/input-year/input-year.component.d.ts +8 -4
- package/components/input-year/input-year.directive.d.ts +1 -0
- package/components/select/select.component.d.ts +5 -3
- package/esm2015/components/badged-content/badged-content.component.js +1 -1
- package/esm2015/components/breadcrumbs/breadcrumbs.component.js +1 -1
- package/esm2015/components/calendar-month/calendar-month.component.js +1 -1
- package/esm2015/components/combo-box/combo-box.component.js +16 -6
- package/esm2015/components/input/input.component.js +16 -6
- package/esm2015/components/input-copy/input-copy.component.js +15 -12
- package/esm2015/components/input-count/input-count.component.js +1 -1
- package/esm2015/components/input-date/input-date.component.js +15 -12
- package/esm2015/components/input-date-range/input-date-range.component.js +17 -15
- package/esm2015/components/input-date-time/input-date-time.component.js +18 -12
- package/esm2015/components/input-month/input-month.component.js +16 -6
- package/esm2015/components/input-month-range/input-month-range.component.js +16 -6
- package/esm2015/components/input-number/input-number.component.js +61 -30
- package/esm2015/components/input-password/input-password.component.js +12 -16
- package/esm2015/components/input-phone/input-phone.component.js +16 -6
- package/esm2015/components/input-phone-international/input-phone-international.component.js +17 -7
- package/esm2015/components/input-range/input-range.component.js +2 -2
- package/esm2015/components/input-tag/input-tag.component.js +9 -6
- package/esm2015/components/input-time/input-time.component.js +15 -12
- package/esm2015/components/input-year/input-year.component.js +28 -13
- package/esm2015/components/input-year/input-year.directive.js +5 -1
- package/esm2015/components/progress/progress-label/progress-label.component.js +1 -1
- package/esm2015/components/select/select.component.js +16 -6
- package/esm2015/components/text-area/text-area.component.js +5 -5
- package/fesm2015/taiga-ui-kit-components-badged-content.js +1 -1
- package/fesm2015/taiga-ui-kit-components-badged-content.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-breadcrumbs.js +1 -1
- package/fesm2015/taiga-ui-kit-components-breadcrumbs.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-calendar-month.js +1 -1
- package/fesm2015/taiga-ui-kit-components-calendar-month.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-combo-box.js +15 -5
- package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-copy.js +14 -11
- package/fesm2015/taiga-ui-kit-components-input-copy.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-count.js +1 -1
- package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-date-range.js +16 -14
- package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-date-time.js +17 -11
- package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-date.js +14 -11
- package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-month-range.js +15 -5
- package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-month.js +15 -5
- package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-number.js +60 -29
- package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-password.js +11 -15
- package/fesm2015/taiga-ui-kit-components-input-password.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js +16 -6
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-phone.js +15 -5
- package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-range.js +1 -1
- package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-tag.js +8 -5
- package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-time.js +14 -11
- package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-year.js +31 -12
- package/fesm2015/taiga-ui-kit-components-input-year.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input.js +15 -5
- package/fesm2015/taiga-ui-kit-components-input.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-progress.js +1 -1
- package/fesm2015/taiga-ui-kit-components-select.js +15 -5
- package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-text-area.js +4 -4
- package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
- package/package.json +7 -7
|
@@ -77,15 +77,15 @@ export class TuiInputTagComponent extends AbstractTuiMultipleControl {
|
|
|
77
77
|
const { size, labelOutside } = this.controller;
|
|
78
78
|
return size === 's' || labelOutside;
|
|
79
79
|
}
|
|
80
|
+
get iconLeft() {
|
|
81
|
+
return this.controller.iconLeft;
|
|
82
|
+
}
|
|
80
83
|
get icon() {
|
|
81
84
|
return this.controller.icon;
|
|
82
85
|
}
|
|
83
86
|
get iconCleaner() {
|
|
84
87
|
return this.controller.options.iconCleaner;
|
|
85
88
|
}
|
|
86
|
-
get iconLeft() {
|
|
87
|
-
return this.controller.iconLeft;
|
|
88
|
-
}
|
|
89
89
|
get hasCleaner() {
|
|
90
90
|
return this.controller.cleaner && this.hasValue && this.interactive;
|
|
91
91
|
}
|
|
@@ -317,13 +317,13 @@ export class TuiInputTagComponent extends AbstractTuiMultipleControl {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
TuiInputTagComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputTagComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: ElementRef }, { token: TuiModeDirective, optional: true }, { token: TUI_MODE }, { token: TuiHintOptionsDirective, optional: true }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }, { token: TUI_INPUT_TAG_OPTIONS }, { token: TuiHostedDropdownComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
320
|
-
TuiInputTagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputTagComponent, selector: "tui-input-tag", inputs: { separator: "separator", search: "search", editable: "editable", tagValidator: "tagValidator", expandable: "expandable", rows: "rows", inputHidden: "inputHidden", uniqueTags: "uniqueTags", maxLength: "maxLength", placeholder: "placeholder", removable: "removable", disabledItemHandler: "disabledItemHandler", pseudoFocusedSetter: ["pseudoFocused", "pseudoFocusedSetter"] }, outputs: { searchChange: "searchChange" }, host: { properties: { "class._expandable": "this.expandable", "attr.data-size": "this.size", "class._label-outside": "this.labelOutside" } }, providers: [
|
|
320
|
+
TuiInputTagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputTagComponent, selector: "tui-input-tag", inputs: { separator: "separator", search: "search", editable: "editable", tagValidator: "tagValidator", expandable: "expandable", rows: "rows", inputHidden: "inputHidden", uniqueTags: "uniqueTags", maxLength: "maxLength", placeholder: "placeholder", removable: "removable", disabledItemHandler: "disabledItemHandler", pseudoFocusedSetter: ["pseudoFocused", "pseudoFocusedSetter"] }, outputs: { searchChange: "searchChange" }, host: { properties: { "class._expandable": "this.expandable", "attr.data-size": "this.size", "class._label-outside": "this.labelOutside", "class._icon-left": "this.iconLeft" } }, providers: [
|
|
321
321
|
tuiAsFocusableItemAccessor(TuiInputTagComponent),
|
|
322
322
|
tuiAsControl(TuiInputTagComponent),
|
|
323
323
|
tuiAsDataListHost(TuiInputTagComponent),
|
|
324
324
|
TEXTFIELD_CONTROLLER_PROVIDER,
|
|
325
325
|
MODE_PROVIDER,
|
|
326
|
-
], queries: [{ propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "hostedDropdown", first: true, predicate: TuiHostedDropdownComponent, descendants: true }, { propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true }, { propertyName: "tagsContainer", first: true, predicate: ["tagsContainer"], descendants: true }, { propertyName: "cleanerSvg", first: true, predicate: ["cleaner"], descendants: true, read: ElementRef }, { propertyName: "scrollBar", first: true, predicate: TuiScrollbarComponent, descendants: true, read: ElementRef }, { propertyName: "errorIconTemplate", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "tags", predicate: ["tag"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hintOptions?.change$ | async\"></ng-container>\n<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"datalist || ''\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div\n tuiWrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [disabled]=\"computedDisabled\"\n [invalid]=\"computedInvalid\"\n (mousedown)=\"onMouseDown($event)\"\n >\n <div class=\"t-content\">\n <div\n *ngIf=\"iconLeft\"\n class=\"t-icons t-icons_left t-textfield-icon\"\n >\n <tui-svg\n *polymorpheusOutlet=\"iconLeft as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n <div class=\"t-wrapper\">\n <div class=\"t-absolute-wrapper\">\n <div\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-tag__placeholder\"\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n <tui-scrollbar\n class=\"t-scrollbar\"\n [hidden]=\"!expandable\"\n [style.maxHeight.rem]=\"computeMaxHeight\"\n >\n <div\n class=\"t-tags\"\n [class.t-tags_expandable]=\"expandable\"\n >\n <ng-container *ngIf=\"labelOutside; else text\">\n <tui-tag\n *ngFor=\"let item of value; index as index; trackBy: trackByFn\"\n #tag\n automation-id=\"tui-input-tag__tag\"\n class=\"t-tag\"\n [status]=\"(status$ | async)!\"\n [leftContent]=\"getLeftContent(item)\"\n [tuiFocusable]=\"false\"\n [disabled]=\"computedDisabled || disabledItemHandler(item)\"\n [editable]=\"editable && !readOnly\"\n [hoverable]=\"!readOnly\"\n [removable]=\"!readOnly && removable\"\n [separator]=\"separator\"\n [maxLength]=\"maxLength\"\n [size]=\"controller.size\"\n [value]=\"item.toString()\"\n (edited)=\"onTagEdited($event, index)\"\n (keydown.arrowLeft.prevent)=\"onTagKeyDownArrowLeft(index)\"\n (keydown.arrowRight.prevent)=\"onTagKeyDownArrowRight(index)\"\n ></tui-tag>\n </ng-container>\n <ng-template #text>\n <span\n *ngFor=\"let item of value\"\n class=\"t-text\"\n [class.t-text_comma]=\"computedFocused && !inputHidden\"\n [class.t-text_disabled]=\"disabledItemHandler(item)\"\n [class.t-text_error]=\"!tagValidator(item)\"\n [textContent]=\"item\"\n ></span>\n </ng-template>\n <div\n class=\"t-input-wrapper\"\n [class.t-input-wrapper_collapsed]=\"computedDisabled || readOnly || inputHidden\"\n >\n <div class=\"t-ghost\">{{ search }}</div>\n <input\n #focusableElement\n type=\"text\"\n automation-id=\"tui-input-tag__native\"\n class=\"t-native\"\n [placeholder]=\"placeholder\"\n [class.t-native_hidden]=\"inputHidden\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly || inputHidden\"\n [tuiFocusable]=\"computedFocusable\"\n [ngModel]=\"search\"\n (ngModelChange)=\"onInput($event)\"\n (paste.prevent)=\"onPaste($event)\"\n (drop.prevent)=\"onDrop($any($event))\"\n (keydown.arrowLeft)=\"onFieldKeyDownArrowLeft($event)\"\n (keydown.backspace)=\"onFieldKeyDownBackspace($event)\"\n (keydown.enter.prevent)=\"onFieldKeyDownEnter()\"\n />\n </div>\n </div>\n </tui-scrollbar>\n <ng-content select=\"tuiContent\"></ng-content>\n </div>\n <ng-content select=\"select\"></ng-content>\n <div\n *ngIf=\"hasRightIcons\"\n class=\"t-icons t-icons_right\"\n >\n <ng-container *ngIf=\"hasCleaner\">\n <tui-svg\n *polymorpheusOutlet=\"iconCleaner as src; context: {$implicit: size}\"\n #cleaner\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-input-tag__cleaner\"\n class=\"t-cleaner\"\n [src]=\"src\"\n (click.stop)=\"onCleanerClick()\"\n ></tui-svg>\n </ng-container>\n <tui-tooltip\n *ngIf=\"showHint\"\n automation-id=\"tui-input-tag__tooltip\"\n class=\"t-tooltip\"\n [describeId]=\"id\"\n [content]=\"hintOptions?.content\"\n ></tui-tooltip>\n <div\n *ngIf=\"icon\"\n class=\"t-icon t-textfield-icon\"\n >\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n </div>\n </div>\n <ng-template #errorIcon>\n <tui-svg\n src=\"tuiIconAlertCircle\"\n class=\"t-error-icon\"\n ></tui-svg>\n </ng-template>\n </div>\n</tui-hosted-dropdown>\n", styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left;height:var(--tui-height);min-height:var(--tui-height);max-height:var(--tui-height)}:host[data-size=s]{--tui-height: var(--tui-height-s)}:host[data-size=m]{--tui-height: var(--tui-height-m)}:host[data-size=l]{--tui-height: var(--tui-height-l);font:var(--tui-font-text-m);line-height:1.25rem}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end, 0) 0 var(--border-start, 0);border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}.t-input:-webkit-autofill,.t-input:-webkit-autofill:hover,.t-input:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-input:-webkit-autofill,.t-input:-webkit-autofill:first-line{font-size:inherit;line-height:inherit}.t-input::-webkit-caps-lock-indicator,.t-input::-webkit-contacts-auto-fill-button,.t-input::-webkit-credit-card-auto-fill-button,.t-input::-webkit-credentials-auto-fill-button,.t-input::-webkit-strong-password-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input::placeholder{color:var(--tui-text-03);opacity:0}:host._focused:not(._readonly) .t-input::placeholder,:host-context(tui-primitive-textfield._focused:not(._readonly)) .t-input::placeholder,:host-context(tui-text-area._focused:not(._readonly)) .t-input::placeholder{opacity:1}[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:hover,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:hover,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:focus,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}[tuiWrapper][data-mode=onDark] .t-input::placeholder,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"])::placeholder{color:var(--tui-text-03-night)}:host[data-size=s] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=l] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-input,.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1rem}:host[data-size=m]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-input,.t-input :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size=s] .t-content{padding:0 var(--tui-padding-s)}:host[data-size=l] .t-content{padding:0 var(--tui-padding-l)}.t-content:after{content:\"\";margin-right:-.25rem}:host[data-size=m] .t-content:after{display:none}.t-wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.t-wrapper+*{margin:0}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;font:var(--tui-font-text-s);color:var(--tui-text-02);pointer-events:none;will-change:transform;transform:translateY(0)}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size=m] .t-placeholder_raised{font:var(--tui-font-text-xs);line-height:1.25rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill)}:host._invalid:not(._focused) [tuiWrapper][data-mode=onDark] .t-placeholder_raised,:host._invalid:not(._focused):hover [tuiWrapper][data-mode=onDark] .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size=m]._focused._label-outside .t-placeholder,:host[data-size=l]._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size=l] .t-placeholder{font:var(--tui-font-text-m);line-height:1.25rem}:host[data-size=l] .t-placeholder_raised{font-size:.8156rem}:host[data-size=m]._focused:not(._label-outside) .t-placeholder,:host[data-size=l]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}[tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size=m]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-01-night)}:host._focused [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=m]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens: none){.t-placeholder{will-change:unset;transition-property:transform,color,letter-spacing}}.t-cleaner{position:relative;display:flex;width:1.5rem;height:1.5rem;margin:0 0 0 .25rem;-webkit-margin-start:.25rem;margin-inline-start:.25rem;-webkit-margin-end:0;margin-inline-end:0;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer}:host._readonly .t-cleaner,:host._disabled .t-cleaner{pointer-events:none}.t-icon{position:relative;display:flex;width:1.5rem;height:1.5rem;margin:0 0 0 .25rem;-webkit-margin-start:.25rem;margin-inline-start:.25rem;-webkit-margin-end:0;margin-inline-end:0;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer;pointer-events:none}.t-icon_left{margin:0 .375rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.375rem;margin-inline-end:.375rem}:host[data-size=l] .t-icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host{cursor:text}:host._expandable{height:auto;max-height:none}:host._disabled{pointer-events:none}:host._readonly{cursor:default}:host[data-size=m]{line-height:1rem}.t-hosted{display:block;border-radius:inherit}.t-scrollbar{margin:0 -.25rem;min-width:100%;scroll-behavior:smooth}:host[data-size=m]:not(._label-outside) .t-scrollbar{border-top:1rem solid transparent}:host[data-size=l]:not(._label-outside) .t-scrollbar{border-top:1.25rem solid transparent}.t-tags{display:flex;padding-left:.25rem;-webkit-padding-start:.25rem;padding-inline-start:.25rem;padding-right:.5rem;-webkit-padding-end:.5rem;padding-inline-end:.5rem}.t-tags_expandable{overflow:hidden}:host._expandable .t-tags{flex-wrap:wrap;white-space:normal}:host._readonly .t-tags{pointer-events:none}.t-tags :host[data-size]{-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:.25rem;padding-inline-end:.25rem}:host[data-size]:not(._label-outside) .t-tags{-webkit-padding-end:1rem;padding-inline-end:1rem}.t-content{align-items:flex-start}:host[data-size=s] .t-content{min-height:var(--tui-height-s)}:host[data-size=m] .t-content{min-height:var(--tui-height-m)}:host[data-size=l] .t-content{min-height:var(--tui-height-l)}.t-icons{display:flex;align-items:center}.t-icons_left{margin:0 .75rem 0 -.5rem;-webkit-margin-start:-.5rem;margin-inline-start:-.5rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}:host._expandable .t-icons_right{margin:0 0 0 -.625rem;-webkit-margin-start:-.625rem;margin-inline-start:-.625rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-icons{height:var(--tui-height-s)}:host[data-size=m] .t-icons{height:var(--tui-height-m)}:host[data-size=l] .t-icons{height:var(--tui-height-l)}.t-tooltip{margin:0 0 0 .25rem;-webkit-margin-start:.25rem;margin-inline-start:.25rem;-webkit-margin-end:0;margin-inline-end:0}.t-absolute-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}:host[data-size=m] .t-absolute-wrapper{height:var(--tui-height-m)}:host[data-size=l] .t-absolute-wrapper{height:var(--tui-height-l)}.t-wrapper{position:relative;display:flex;align-items:center;padding:0;box-sizing:border-box}:host[data-size=s] .t-wrapper{min-height:var(--tui-height-s);padding:calc((var(--tui-height-s) - 1.5rem) / 2) 0}:host[data-size=m] .t-wrapper{min-height:var(--tui-height-m);padding:calc((var(--tui-height-m) - var(--tui-height-xs) - .25rem) / 2) 0}:host[data-size=l] .t-wrapper{padding:calc((var(--tui-height-l) - var(--tui-height-s) - .25rem) / 2) 0}:host[data-size=m]:not(._label-outside) .t-wrapper{padding:calc((var(--tui-height-m) - 2rem) / 2) 0}:host[data-size=l]:not(._label-outside) .t-wrapper{padding:calc((var(--tui-height-l) - 2.5rem) / 2) 0}.t-tag{margin:.125rem .5rem .125rem -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem;max-width:100%;flex-shrink:0}.t-text:after{content:\",\\a0\"}.t-text_disabled{color:var(--tui-text-03)}.t-text_error{color:var(--tui-negative)}.t-text:not(.t-text_comma):last-of-type:after{content:\"\"}:host:not(._expandable) .t-text{white-space:nowrap}.t-input-wrapper{position:relative;flex:1;max-width:100%}.t-input-wrapper_collapsed{flex:0;margin:0 0 0 -.5rem;-webkit-margin-start:-.5rem;margin-inline-start:-.5rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-input-wrapper{min-height:1.5rem}:host[data-size=m] .t-input-wrapper{min-height:calc(var(--tui-height-xs) + 2 * .125rem)}:host[data-size=l] .t-input-wrapper{min-height:calc(var(--tui-height-s) + 2 * .125rem)}:host:not(._label-outside) .t-input-wrapper{min-height:1rem}.t-ghost{visibility:hidden;white-space:pre;text-overflow:clip;min-width:.125rem}:host:not(._expandable) .t-ghost{min-width:2rem}.t-native{margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0;cursor:inherit}.t-native:-webkit-autofill,.t-native:-webkit-autofill:hover,.t-native:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-native_hidden{opacity:0;text-indent:-10em}.t-native::placeholder{color:var(--tui-text-03);opacity:0}[tuiWrapper][data-mode=onDark] .t-native::placeholder{color:var(--tui-text-03-night)}:host._focused .t-native:not(:-moz-read-only)::placeholder{opacity:1}:host._focused .t-native:not(:read-only)::placeholder{opacity:1}.t-error-icon{display:block;color:var(--tui-error-fill);width:1rem;height:1rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiScrollbarComponent, selector: "tui-scrollbar", inputs: ["hidden"] }, { type: i2.TuiTagComponent, selector: "tui-tag, a[tuiTag], button[tuiTag]", inputs: ["value", "editable", "separator", "maxLength", "size", "showLoader", "status", "hoverable", "removable", "disabled", "autoColor", "leftContent"], outputs: ["edited"] }, { type: i1.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i3.AsyncPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
326
|
+
], queries: [{ propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "hostedDropdown", first: true, predicate: TuiHostedDropdownComponent, descendants: true }, { propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true }, { propertyName: "tagsContainer", first: true, predicate: ["tagsContainer"], descendants: true }, { propertyName: "cleanerSvg", first: true, predicate: ["cleaner"], descendants: true, read: ElementRef }, { propertyName: "scrollBar", first: true, predicate: TuiScrollbarComponent, descendants: true, read: ElementRef }, { propertyName: "errorIconTemplate", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "tags", predicate: ["tag"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hintOptions?.change$ | async\"></ng-container>\n<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"datalist || ''\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div\n tuiWrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [disabled]=\"computedDisabled\"\n [invalid]=\"computedInvalid\"\n (mousedown)=\"onMouseDown($event)\"\n >\n <div class=\"t-content\">\n <div\n *ngIf=\"iconLeft\"\n class=\"t-icon t-icon_left t-textfield-icon t-icon-wrapper\"\n >\n <tui-svg\n *polymorpheusOutlet=\"iconLeft as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n <div class=\"t-wrapper\">\n <div class=\"t-absolute-wrapper\">\n <div\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-tag__placeholder\"\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n <tui-scrollbar\n class=\"t-scrollbar\"\n [hidden]=\"!expandable\"\n [style.maxHeight.rem]=\"computeMaxHeight\"\n >\n <div class=\"t-tags\">\n <ng-container *ngIf=\"labelOutside; else text\">\n <tui-tag\n *ngFor=\"let item of value; index as index; trackBy: trackByFn\"\n #tag\n automation-id=\"tui-input-tag__tag\"\n class=\"t-tag\"\n [status]=\"(status$ | async)!\"\n [leftContent]=\"getLeftContent(item)\"\n [tuiFocusable]=\"false\"\n [disabled]=\"computedDisabled || disabledItemHandler(item)\"\n [editable]=\"editable && !readOnly\"\n [hoverable]=\"!readOnly\"\n [removable]=\"!readOnly && removable\"\n [separator]=\"separator\"\n [maxLength]=\"maxLength\"\n [size]=\"controller.size\"\n [value]=\"item.toString()\"\n (edited)=\"onTagEdited($event, index)\"\n (keydown.arrowLeft.prevent)=\"onTagKeyDownArrowLeft(index)\"\n (keydown.arrowRight.prevent)=\"onTagKeyDownArrowRight(index)\"\n ></tui-tag>\n </ng-container>\n <ng-template #text>\n <span\n *ngFor=\"let item of value\"\n class=\"t-text\"\n [class.t-text_comma]=\"computedFocused && !inputHidden\"\n [class.t-text_disabled]=\"disabledItemHandler(item)\"\n [class.t-text_error]=\"!tagValidator(item)\"\n [textContent]=\"item\"\n ></span>\n </ng-template>\n <div\n class=\"t-input-wrapper\"\n [class.t-input-wrapper_collapsed]=\"computedDisabled || readOnly || inputHidden\"\n >\n <div class=\"t-ghost\">{{ search }}</div>\n <input\n #focusableElement\n type=\"text\"\n automation-id=\"tui-input-tag__native\"\n class=\"t-native\"\n [placeholder]=\"placeholder\"\n [class.t-native_hidden]=\"inputHidden\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly || inputHidden\"\n [tuiFocusable]=\"computedFocusable\"\n [ngModel]=\"search\"\n (ngModelChange)=\"onInput($event)\"\n (paste.prevent)=\"onPaste($event)\"\n (drop.prevent)=\"onDrop($any($event))\"\n (keydown.arrowLeft)=\"onFieldKeyDownArrowLeft($event)\"\n (keydown.backspace)=\"onFieldKeyDownBackspace($event)\"\n (keydown.enter.prevent)=\"onFieldKeyDownEnter()\"\n />\n </div>\n </div>\n </tui-scrollbar>\n <ng-content select=\"tuiContent\"></ng-content>\n </div>\n <ng-content select=\"select\"></ng-content>\n <div\n *ngIf=\"hasRightIcons\"\n class=\"t-icons t-icon-wrapper\"\n >\n <ng-container *ngIf=\"hasCleaner\">\n <tui-svg\n *polymorpheusOutlet=\"iconCleaner as src; context: {$implicit: size}\"\n #cleaner\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-input-tag__cleaner\"\n class=\"t-cleaner\"\n [src]=\"src\"\n (click.stop)=\"onCleanerClick()\"\n ></tui-svg>\n </ng-container>\n <tui-tooltip\n *ngIf=\"showHint\"\n automation-id=\"tui-input-tag__tooltip\"\n class=\"t-tooltip\"\n [describeId]=\"id\"\n [content]=\"hintOptions?.content\"\n ></tui-tooltip>\n <div\n *ngIf=\"icon\"\n class=\"t-icon t-textfield-icon\"\n >\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n </div>\n </div>\n <ng-template #errorIcon>\n <tui-svg\n src=\"tuiIconAlertCircle\"\n class=\"t-error-icon\"\n ></tui-svg>\n </ng-template>\n </div>\n</tui-hosted-dropdown>\n", styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;text-align:left;border-radius:var(--tui-radius-m);height:var(--tui-height);min-height:var(--tui-height);max-height:var(--tui-height)}:host[data-size=s]{--tui-height: var(--tui-height-s)}:host[data-size=m]{--tui-height: var(--tui-height-m)}:host[data-size=l]{--tui-height: var(--tui-height-l);font:var(--tui-font-text-m);line-height:1.25rem}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;border:solid transparent;border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}.t-input:-webkit-autofill,.t-input:-webkit-autofill:hover,.t-input:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-input:-webkit-autofill,.t-input:-webkit-autofill:first-line{font-size:inherit;line-height:inherit}.t-input::-webkit-caps-lock-indicator,.t-input::-webkit-contacts-auto-fill-button,.t-input::-webkit-credit-card-auto-fill-button,.t-input::-webkit-credentials-auto-fill-button,.t-input::-webkit-strong-password-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input::placeholder{color:var(--tui-text-03);opacity:0}:host._focused:not(._readonly) .t-input::placeholder,:host-context(tui-primitive-textfield._focused:not(._readonly)) .t-input::placeholder,:host-context(tui-text-area._focused:not(._readonly)) .t-input::placeholder{opacity:1}[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:hover,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:hover,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:focus,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}[tuiWrapper][data-mode=onDark] .t-input::placeholder,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"])::placeholder{color:var(--tui-text-03-night)}:host[data-size=s] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=m] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"m\"]):not(tui-text-area){padding:0 var(--tui-padding-m)}:host[data-size=l] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-input,.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1rem}:host[data-size=m]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-input,.t-input :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-content{display:flex;height:100%;width:100%;box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size=s] .t-content{padding:0 var(--tui-padding-s)}:host[data-size=m] .t-content{padding:0 var(--tui-padding-m)}:host[data-size=l] .t-content{padding:0 var(--tui-padding-l)}.t-wrapper{flex:1;min-width:0;-webkit-padding-end:.25rem;padding-inline-end:.25rem}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;font:var(--tui-font-text-s);color:var(--tui-text-02);pointer-events:none;will-change:transform;transform:translateY(0)}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size=m] .t-placeholder_raised{font:var(--tui-font-text-xs);line-height:1.25rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill)}:host._invalid:not(._focused) [tuiWrapper][data-mode=onDark] .t-placeholder_raised,:host._invalid:not(._focused):hover [tuiWrapper][data-mode=onDark] .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size=m]._focused._label-outside .t-placeholder,:host[data-size=l]._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size=l] .t-placeholder{font:var(--tui-font-text-m);line-height:1.25rem}:host[data-size=l] .t-placeholder_raised{font-size:.8156rem}:host[data-size=m]._focused:not(._label-outside) .t-placeholder,:host[data-size=l]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}[tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size=m]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-01-night)}:host._focused [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=m]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens: none){.t-placeholder{will-change:unset;transition-property:transform,color,letter-spacing}}.t-cleaner{position:relative;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer;pointer-events:none;pointer-events:auto}:host._readonly .t-cleaner,:host._disabled .t-cleaner{pointer-events:none}.t-icon{position:relative;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer;pointer-events:none}:host[data-size=s] .t-icon_left{-webkit-margin-start:-.375rem;margin-inline-start:-.375rem}:host[data-size=m] .t-icon_left{-webkit-margin-start:-.125rem;margin-inline-start:-.125rem;-webkit-margin-end:.375rem;margin-inline-end:.375rem}:host[data-size=l] .t-icon_left{-webkit-margin-end:.75rem;margin-inline-end:.75rem}.t-icons{display:flex;align-items:center}:host[data-size=m] .t-icons{-webkit-margin-end:-.125rem;margin-inline-end:-.125rem}:host[data-size=s] .t-icons{-webkit-margin-end:-.375rem;margin-inline-end:-.375rem}:host:not([data-size=\"s\"]) .t-icons>:not(:first-child){-webkit-margin-start:.25rem;margin-inline-start:.25rem}:host{cursor:text}:host._expandable{height:auto;max-height:none}:host._disabled{pointer-events:none}:host._readonly{cursor:default}:host[data-size=m]{line-height:1rem}.t-hosted{display:block;border-radius:inherit}.t-scrollbar{-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;min-width:100%;scroll-behavior:smooth}:host:not(._label-outside) .t-scrollbar,:host._label-outside._icon-left .t-scrollbar{margin:0}:host[data-size=s]._icon-left .t-scrollbar{-webkit-margin-start:.25rem;margin-inline-start:.25rem}:host[data-size=m]:not(._label-outside) .t-scrollbar{border-top:1rem solid transparent}:host[data-size=l]:not(._label-outside) .t-scrollbar{border-top:1.25rem solid transparent}.t-tags{display:flex;-webkit-padding-start:.25rem;padding-inline-start:.25rem}.t-tags_expandable{overflow:hidden}:host._expandable .t-tags{flex-wrap:wrap;white-space:normal;overflow:hidden}:host._readonly .t-tags{pointer-events:none}:host[data-size=m]:not(._label-outside) .t-tags,:host[data-size=l]:not(._label-outside) .t-tags{padding:0}.t-content{align-items:flex-start}:host[data-size=s] .t-content{min-height:var(--tui-height-s)}:host[data-size=m] .t-content{min-height:var(--tui-height-m)}:host[data-size=l] .t-content{min-height:var(--tui-height-l)}:host[data-size=s] .t-icon-wrapper{height:var(--tui-height-s)}:host[data-size=m] .t-icon-wrapper{height:var(--tui-height-m)}:host[data-size=l] .t-icon-wrapper{height:var(--tui-height-l)}.t-absolute-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}:host[data-size=m] .t-absolute-wrapper{height:var(--tui-height-m)}:host[data-size=l] .t-absolute-wrapper{height:var(--tui-height-l)}.t-wrapper{position:relative;display:flex;align-items:center;padding:0;box-sizing:border-box}:host[data-size=s] .t-wrapper{min-height:var(--tui-height-s);padding:calc((var(--tui-height-s) - 1.5rem) / 2) 0}:host[data-size=m] .t-wrapper{min-height:var(--tui-height-m);padding:calc((var(--tui-height-m) - var(--tui-height-xs) - .25rem) / 2) 0}:host[data-size=l] .t-wrapper{padding:calc((var(--tui-height-l) - var(--tui-height-s) - .25rem) / 2) 0}:host[data-size=m]:not(._label-outside) .t-wrapper{padding:calc((var(--tui-height-m) - 2rem) / 2) 0}:host[data-size=l]:not(._label-outside) .t-wrapper{padding:calc((var(--tui-height-l) - 2.5rem) / 2) 0}.t-tag{margin:.125rem .5rem .125rem -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem;max-width:100%;flex-shrink:0}:host[data-size=m] .t-tag{-webkit-margin-start:-.125rem;margin-inline-start:-.125rem;-webkit-margin-end:.375rem;margin-inline-end:.375rem}.t-text:after{content:\",\\a0\"}.t-text_disabled{color:var(--tui-text-03)}.t-text_error{color:var(--tui-negative)}.t-text:not(.t-text_comma):last-of-type:after{content:\"\"}:host:not(._expandable) .t-text{white-space:nowrap}.t-input-wrapper{position:relative;flex:1;max-width:100%}.t-input-wrapper_collapsed{flex:0;-webkit-margin-start:-.5rem;margin-inline-start:-.5rem}:host[data-size=s] .t-input-wrapper{min-height:1.5rem}:host[data-size=m] .t-input-wrapper{min-height:calc(var(--tui-height-xs) + 2 * .125rem)}:host[data-size=l] .t-input-wrapper{min-height:calc(var(--tui-height-s) + 2 * .125rem)}:host:not(._label-outside) .t-input-wrapper{min-height:1rem}.t-ghost{visibility:hidden;white-space:pre;text-overflow:clip;min-width:.125rem}:host:not(._expandable) .t-ghost{min-width:2rem}.t-native{margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0;cursor:inherit}.t-native:-webkit-autofill,.t-native:-webkit-autofill:hover,.t-native:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-native_hidden{opacity:0;text-indent:-10em}.t-native::placeholder{color:var(--tui-text-03);opacity:0}[tuiWrapper][data-mode=onDark] .t-native::placeholder{color:var(--tui-text-03-night)}:host._focused .t-native:not(:-moz-read-only)::placeholder{opacity:1}:host._focused .t-native:not(:read-only)::placeholder{opacity:1}.t-error-icon{display:block;color:var(--tui-error-fill);width:1rem;height:1rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiScrollbarComponent, selector: "tui-scrollbar", inputs: ["hidden"] }, { type: i2.TuiTagComponent, selector: "tui-tag, a[tuiTag], button[tuiTag]", inputs: ["value", "editable", "separator", "maxLength", "size", "showLoader", "status", "hoverable", "removable", "disabled", "autoColor", "leftContent"], outputs: ["edited"] }, { type: i1.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i3.AsyncPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
327
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputTagComponent, decorators: [{
|
|
328
328
|
type: Component,
|
|
329
329
|
args: [{
|
|
@@ -439,5 +439,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
439
439
|
}], labelOutside: [{
|
|
440
440
|
type: HostBinding,
|
|
441
441
|
args: ['class._label-outside']
|
|
442
|
+
}], iconLeft: [{
|
|
443
|
+
type: HostBinding,
|
|
444
|
+
args: ['class._icon-left']
|
|
442
445
|
}] } });
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LXRhZy9pbnB1dC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGFnL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxjQUFjLEVBQ2QsWUFBWSxFQUNaLDBCQUEwQixFQUkxQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixvQkFBb0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFDYiw2QkFBNkIsRUFDN0IsUUFBUSxFQUNSLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFFakIsb0JBQW9CLEVBRXBCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixHQUl4QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTNFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMscUJB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ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlNdWx0aXBsZUNvbnRyb2wsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFycmF5UmVtb3ZlLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgdHVpR2V0Q2xpcGJvYXJkRGF0YVRleHQsXG4gICAgdHVpSXNFbGVtZW50LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgTU9ERV9QUk9WSURFUixcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfTU9ERSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICB0dWlBc0RhdGFMaXN0SG9zdCxcbiAgICBUdWlCcmlnaHRuZXNzLFxuICAgIFR1aURhdGFMaXN0RGlyZWN0aXZlLFxuICAgIFR1aURhdGFMaXN0SG9zdCxcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudCxcbiAgICBUdWlNb2RlRGlyZWN0aXZlLFxuICAgIFR1aVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aVN0cmluZ2lmaWFibGVJdGVtfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1R1aVN0YXR1c30gZnJvbSAnQHRhaWdhLXVpL2tpdC90eXBlcyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfVEFHX09QVElPTlMsIFR1aUlucHV0VGFnT3B0aW9uc30gZnJvbSAnLi9pbnB1dC10YWcub3B0aW9ucyc7XG5cbmNvbnN0IFRBR19TSVpFX1JFTSA9IHtcbiAgICBzOiAxLjI1LFxuICAgIG06IDEuNSxcbiAgICBsOiAyLFxufTtcbmNvbnN0IExJTkVfSEVJR0hUX1JFTSA9IHtcbiAgICBzOiAxLFxuICAgIG06IDEuMjUsXG4gICAgbDogMS4yNSxcbn07XG5jb25zdCBUQUdfVkVSVElDQUxfU1BBQ0VfUkVNID0gMC4xMjU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXRhZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC10YWcuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFRhZ0NvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFRhZ0NvbXBvbmVudCksXG4gICAgICAgIHR1aUFzRGF0YUxpc3RIb3N0KFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgICAgIE1PREVfUFJPVklERVIsXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0VGFnQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU11bHRpcGxlQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsIFR1aURhdGFMaXN0SG9zdDxzdHJpbmc+XG57XG4gICAgQFZpZXdDaGlsZChUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3RlZERyb3Bkb3duPzogVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdmb2N1c2FibGVFbGVtZW50JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzYWJsZUVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFnc0NvbnRhaW5lcicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWdzQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKCd0YWcnLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAVmlld0NoaWxkKCdjbGVhbmVyJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xlYW5lclN2Zz86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChUdWlTY3JvbGxiYXJDb21wb25lbnQsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbEJhcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBzZXBhcmF0b3I6IFJlZ0V4cCB8IHN0cmluZyA9IHRoaXMub3B0aW9ucy5zZXBhcmF0b3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHRhZ1ZhbGlkYXRvcjpcbiAgICAgICAgfCBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmc+XG4gICAgICAgIHwgVHVpQm9vbGVhbkhhbmRsZXI8VHVpU3RyaW5naWZpYWJsZUl0ZW08dW5rbm93bj4gfCBzdHJpbmc+ID0gQUxXQVlTX1RSVUVfSEFORExFUjtcblxuICAgIC8vIFRPRE86IDQuMCBDb25zaWRlciByZW1vdmluZyBhbmQgdXNlIHJvd3MgPSAxIGluc3RlYWRcbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2V4cGFuZGFibGUnKVxuICAgIGV4cGFuZGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICByb3dzID0gSW5maW5pdHk7XG5cbiAgICBASW5wdXQoKVxuICAgIGlucHV0SGlkZGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHVuaXF1ZVRhZ3MgPSB0aGlzLm9wdGlvbnMudW5pcXVlVGFncztcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgcmVtb3ZhYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpU3RyaW5naWZpYWJsZUl0ZW08YW55PiB8IHN0cmluZz4gPVxuICAgICAgICBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgncHNldWRvRm9jdXNlZCcpXG4gICAgc2V0IHBzZXVkb0ZvY3VzZWRTZXR0ZXIodmFsdWU6IGJvb2xlYW4gfCBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUgJiYgIXRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHNldWRvRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpRGF0YUxpc3REaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgZGF0YWxpc3Q/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Vycm9ySWNvbicpXG4gICAgcmVhZG9ubHkgZXJyb3JJY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgICBzdGF0dXMkOiBPYnNlcnZhYmxlPFR1aVN0YXR1cz4gPSB0aGlzLm1vZGUkLnBpcGUobWFwKCgpID0+IHRoaXMuc3RhdHVzKSk7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlNb2RlRGlyZWN0aXZlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9NT0RFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGUkOiBPYnNlcnZhYmxlPFR1aUJyaWdodG5lc3MgfCBudWxsPixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSlcbiAgICAgICAgcmVhZG9ubHkgaGludE9wdGlvbnM6IFR1aUhpbnRPcHRpb25zRGlyZWN0aXZlIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgY29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfVEFHX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRUYWdPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEhvc3RlZERyb3Bkb3duPzogVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNkcik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgfHwgISF0aGlzLmhvc3RlZERyb3Bkb3duPy5mb2N1c2VkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNpemU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fbGFiZWwtb3V0c2lkZScpXG4gICAgZ2V0IGxhYmVsT3V0c2lkZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3NpemUsIGxhYmVsT3V0c2lkZX0gPSB0aGlzLmNvbnRyb2xsZXI7XG5cbiAgICAgICAgcmV0dXJuIHNpemUgPT09ICdzJyB8fCBsYWJlbE91dHNpZGU7XG4gICAgfVxuXG4gICAgZ2V0IGljb24oKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvbjtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkNsZWFuZXIoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIub3B0aW9ucy5pY29uQ2xlYW5lcjtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkxlZnQoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvbkxlZnQ7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0NsZWFuZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuY2xlYW5lciAmJiB0aGlzLmhhc1ZhbHVlICYmIHRoaXMuaW50ZXJhY3RpdmU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc05hdGl2ZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlYXJjaDtcbiAgICB9XG5cbiAgICBnZXQgaGFzVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudmFsdWUubGVuZ3RoIHx8IHRoaXMuaGFzTmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1BsYWNlaG9sZGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMubGFiZWxPdXRzaWRlIHx8XG4gICAgICAgICAgICAoIXRoaXMuaGFzVmFsdWUgJiYgKCF0aGlzLmhhc0V4YW1wbGVUZXh0IHx8IHRoaXMuaW5wdXRIaWRkZW4pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBwbGFjZWhvbGRlclJhaXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmxhYmVsT3V0c2lkZSAmJlxuICAgICAgICAgICAgKCh0aGlzLmNvbXB1dGVkRm9jdXNlZCAmJiAhdGhpcy5yZWFkT25seSkgfHwgdGhpcy5oYXNWYWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzRXhhbXBsZVRleHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudD8ucGxhY2Vob2xkZXIgJiZcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRGb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5oYXNWYWx1ZSAmJlxuICAgICAgICAgICAgIXRoaXMucmVhZE9ubHlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUmlnaHRJY29ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaGFzQ2xlYW5lciB8fFxuICAgICAgICAgICAgISF0aGlzLmljb24gfHxcbiAgICAgICAgICAgICghIXRoaXMuaGludE9wdGlvbnM/LmNvbnRlbnQgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0hpbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuaGludE9wdGlvbnM/LmNvbnRlbnQgJiZcbiAgICAgICAgICAgICh0aGlzLmNvbnRyb2xsZXIub3B0aW9ucy5oaW50T25EaXNhYmxlZCB8fCAhdGhpcy5jb21wdXRlZERpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzdGF0dXMoKTogVHVpU3RhdHVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZURpcmVjdGl2ZT8ubW9kZSA/ICdkZWZhdWx0JyA6IHRoaXMub3B0aW9ucy50YWdTdGF0dXM7XG4gICAgfVxuXG4gICAgZ2V0IGNhbk9wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICEhdGhpcy5kYXRhbGlzdDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZU1heEhlaWdodCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kYWJsZSA/IHRoaXMucm93cyAqIHRoaXMubGluZUhlaWdodCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0TGVmdENvbnRlbnQodGFnOiBzdHJpbmcpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRhZ1ZhbGlkYXRvcih0YWcpICYmIHRoaXMuZXJyb3JJY29uVGVtcGxhdGVcbiAgICAgICAgICAgID8gdGhpcy5lcnJvckljb25UZW1wbGF0ZVxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBvbkNsZWFuZXJDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2goJycpO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLnBhcmVudEhvc3RlZERyb3Bkb3duPy51cGRhdGVPcGVuKHRydWUpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkVGFnKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuXG4gICAgICAgIGlmICghYWN0aXZlICYmICF0aGlzLmNvbXB1dGVkRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbygwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdHVhbFRhcmdldCA9IHR1aUdldEFjdHVhbFRhcmdldChldmVudCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuZm9jdXNhYmxlRWxlbWVudCB8fFxuICAgICAgICAgICAgYWN0dWFsVGFyZ2V0ID09PSB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCB8fFxuICAgICAgICAgICAgIXR1aUlzRWxlbWVudChldmVudC50YXJnZXQpIHx8XG4gICAgICAgICAgICB0aGlzLmNsZWFuZXJTdmc/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgICAgICAgKHRoaXMudGFnc0NvbnRhaW5lciAmJlxuICAgICAgICAgICAgICAgIGFjdHVhbFRhcmdldCAhPT0gdGhpcy50YWdzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ3NDb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhhY3R1YWxUYXJnZXQpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH1cblxuICAgIG9uRmllbGRLZXlEb3duQmFja3NwYWNlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGFiZWxPdXRzaWRlICYmICF0aGlzLmhhc05hdGl2ZVZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUxhc3RFbmFibGVkSXRlbSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkZpZWxkS2V5RG93bkFycm93TGVmdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkFycm93TGVmdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsT3V0c2lkZSB8fCB0aGlzLmhhc05hdGl2ZVZhbHVlIHx8ICF0aGlzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50YWdzLmxhc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRmllbGRLZXlEb3duRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkVGFnKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG8oKTtcbiAgICB9XG5cbiAgICBvblRhZ0tleURvd25BcnJvd0xlZnQoY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub25TY3JvbGxLZXlEb3duKGN1cnJlbnRJbmRleCwgLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWdLZXlEb3duQXJyb3dSaWdodChjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vblNjcm9sbEtleURvd24oY3VycmVudEluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFnRWRpdGVkKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgIC5tYXAoKHRhZywgdGFnSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRhZ0luZGV4ICE9PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAodGFnID0+IHRhZy50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucmVkdWNlPHN0cmluZ1tdPihcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCwgaXRlbTogc3RyaW5nW10gfCBzdHJpbmcpID0+IHJlc3VsdC5jb25jYXQoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uKGl0ZW06IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2goJycpO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5maWx0ZXJWYWx1ZSh0aGlzLnZhbHVlLmNvbmNhdChpdGVtKSk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNjcm9sbFRvKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdmFsdWUuc3BsaXQodGhpcy5zZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCB0YWdzID0gYXJyYXlcbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiB0aGlzLmNsaXBwZWRWYWx1ZShpdGVtLnRyaW0oKSkpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtLCBpbmRleCwge2xlbmd0aH0pID0+IGl0ZW0ubGVuZ3RoID4gMCAmJiBpbmRleCAhPT0gbGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IHRhZ3MuZmlsdGVyKHRhZyA9PiAhdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyKHRhZykpO1xuXG4gICAgICAgIGlmIChhcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCh0aGlzLmNsaXBwZWRWYWx1ZShhcnJheVthcnJheS5sZW5ndGggLSAxXS50cmltKCkpKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlKFsuLi50aGlzLnZhbHVlLCAuLi52YWxpZGF0ZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKHRoaXMuY2xpcHBlZFZhbHVlKHZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW4gPSB0aGlzLmhhc05hdGl2ZVZhbHVlO1xuICAgIH1cblxuICAgIG9uUGFzdGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhc3RlZCA9IHR1aUdldENsaXBib2FyZERhdGFUZXh0KGV2ZW50IGFzIENsaXBib2FyZEV2ZW50KTtcblxuICAgICAgICB0aGlzLm9uSW5wdXQocGFzdGVkIHx8ICcnKTtcbiAgICB9XG5cbiAgICBvbkRyb3Aoe2RhdGFUcmFuc2Zlcn06IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICB0aGlzLm9uSW5wdXQoZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQnKSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihfOiBudW1iZXIsIHRhZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gQWN0dWFsbHkgdGFnIGhhcyBUdWlTdHJpbmdpZmlhYmxlSXRlbSB0eXBlIG5vdCBzdHJpbmdcbiAgICAgICAgcmV0dXJuIHRhZy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG8oc2Nyb2xsTGVmdCA9IHRoaXMuc2Nyb2xsQmFyPy5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoKTogdm9pZCB7XG4gICAgICAgIC8vIEFsbG93IGNoYW5nZSBkZXRlY3Rpb24gdG8gcnVuIGFuZCBhZGQgbmV3IHRhZyB0byBET01cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxCYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEJhci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0IHx8IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICBpdGVtID0+ICF0aGlzLnVuaXF1ZVRhZ3MgfHwgKGl0ZW0gJiYgIXNlZW4uaGFzKGl0ZW0pICYmIHNlZW4uYWRkKGl0ZW0pKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNjcm9sbEtleURvd24oY3VycmVudEluZGV4OiBudW1iZXIsIGZsYWc6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWcgPSB0aGlzLnRhZ3MuZmluZCgoX2l0ZW0sIGluZGV4KSA9PiBpbmRleCA9PT0gY3VycmVudEluZGV4ICsgZmxhZyk7XG5cbiAgICAgICAgaWYgKCF0YWcgfHwgIXRoaXMuc2Nyb2xsQmFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0YWcubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGZsYWcgKiB0aGlzLnNjcm9sbEJhci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC1cbiAgICAgICAgICAgICAgICBmbGFnICogdGFnLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtXG4gICAgICAgICAgICAgICAgdGFnLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPFxuICAgICAgICAgICAgMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPVxuICAgICAgICAgICAgICAgIGZsYWcgKiB0YWcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVGFnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5zZWFyY2gudHJpbSgpO1xuXG4gICAgICAgIGlmICghaW5wdXRWYWx1ZSB8fCB0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIoaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKCcnKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUodGhpcy52YWx1ZS5jb25jYXQoaW5wdXRWYWx1ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVsZXRlTGFzdEVuYWJsZWRJdGVtKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IHRoaXMudmFsdWUubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIodGhpcy52YWx1ZVtpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHR1aUFycmF5UmVtb3ZlKHRoaXMudmFsdWUsIGluZGV4KTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c0lucHV0KHByZXZlbnRTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGx9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xpcHBlZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgdGhpcy5tYXhMZW5ndGggfHwgdmFsdWUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBsaW5lSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsT3V0c2lkZVxuICAgICAgICAgICAgPyBUQUdfU0laRV9SRU1bdGhpcy5jb250cm9sbGVyLnNpemVdICsgMiAqIFRBR19WRVJUSUNBTF9TUEFDRV9SRU1cbiAgICAgICAgICAgIDogTElORV9IRUlHSFRfUkVNW3RoaXMuY29udHJvbGxlci5zaXplXTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaGludE9wdGlvbnM/LmNoYW5nZSQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxuPHR1aS1ob3N0ZWQtZHJvcGRvd25cbiAgICBjbGFzcz1cInQtaG9zdGVkXCJcbiAgICBbY2FuT3Blbl09XCJjYW5PcGVuXCJcbiAgICBbY29udGVudF09XCJkYXRhbGlzdCB8fCAnJ1wiXG4gICAgWyhvcGVuKV09XCJvcGVuXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPGRpdlxuICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICAgICAgW2hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInQtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaWNvbkxlZnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29ucyB0LWljb25zX2xlZnQgdC10ZXh0ZmllbGQtaWNvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImljb25MZWZ0IGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInNyY1wiXG4gICAgICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LWFic29sdXRlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXRhZ19fcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LXBsYWNlaG9sZGVyX3JhaXNlZF09XCJwbGFjZWhvbGRlclJhaXNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHR1aS1zY3JvbGxiYXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXNjcm9sbGJhclwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWV4cGFuZGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnJlbV09XCJjb21wdXRlTWF4SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC10YWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LXRhZ3NfZXhwYW5kYWJsZV09XCJleHBhbmRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsT3V0c2lkZTsgZWxzZSB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190YWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCIoc3RhdHVzJCB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVmdENvbnRlbnRdPVwiZ2V0TGVmdENvbnRlbnQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZSAmJiAhcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaG92ZXJhYmxlXT1cIiFyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiIXJlYWRPbmx5ICYmIHJlbW92YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXBhcmF0b3JdPVwic2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJjb250cm9sbGVyLnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRlZCk9XCJvblRhZ0VkaXRlZCgkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93TGVmdC5wcmV2ZW50KT1cIm9uVGFnS2V5RG93bkFycm93TGVmdChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1JpZ2h0LnByZXZlbnQpPVwib25UYWdLZXlEb3duQXJyb3dSaWdodChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3R1aS10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtdGV4dF9jb21tYV09XCJjb21wdXRlZEZvY3VzZWQgJiYgIWlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtdGV4dF9kaXNhYmxlZF09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtdGV4dF9lcnJvcl09XCIhdGFnVmFsaWRhdG9yKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pbnB1dC13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1pbnB1dC13cmFwcGVyX2NvbGxhcHNlZF09XCJjb21wdXRlZERpc2FibGVkIHx8IHJlYWRPbmx5IHx8IGlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1naG9zdFwiPnt7IHNlYXJjaCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX19uYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtbmF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtbmF0aXZlX2hpZGRlbl09XCJpbnB1dEhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLm1heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSB8fCBpbnB1dEhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiY29tcHV0ZWRGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFzdGUucHJldmVudCk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcC5wcmV2ZW50KT1cIm9uRHJvcCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dMZWZ0KT1cIm9uRmllbGRLZXlEb3duQXJyb3dMZWZ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwib25GaWVsZEtleURvd25CYWNrc3BhY2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyLnByZXZlbnQpPVwib25GaWVsZEtleURvd25FbnRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ0dWlDb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzZWxlY3RcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSaWdodEljb25zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaWNvbnMgdC1pY29uc19yaWdodFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NsZWFuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uQ2xlYW5lciBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjbGVhbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXRhZ19fY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJvbkNsZWFuZXJDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8dHVpLXRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SGludFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbZGVzY3JpYmVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImhpbnRPcHRpb25zPy5jb250ZW50XCJcbiAgICAgICAgICAgICAgICA+PC90dWktdG9vbHRpcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29uIHQtdGV4dGZpZWxkLWljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9ySWNvbj5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkFsZXJ0Q2lyY2xlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtZXJyb3ItaWNvblwiXG4gICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
|
|
446
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LXRhZy9pbnB1dC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGFnL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxjQUFjLEVBQ2QsWUFBWSxFQUNaLDBCQUEwQixFQUkxQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixvQkFBb0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFDYiw2QkFBNkIsRUFDN0IsUUFBUSxFQUNSLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFFakIsb0JBQW9CLEVBRXBCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixHQUl4QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTNFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMscUJBQXFCLEVBQXFCLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQUU5RSxNQUFNLFlBQVksR0FBRztJQUNqQixDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLENBQUM7Q0FDUCxDQUFDO0FBQ0YsTUFBTSxlQUFlLEdBQUc7SUFDcEIsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUNGLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBZ0JyQyxNQUFNLE9BQU8sb0JBQ1QsU0FBUSwwQkFBa0M7SUFvRjFDLFlBSUksT0FBeUIsRUFDRSxHQUFzQixFQUNaLEVBQTJCLEVBRy9DLGFBQXNDLEVBRXRDLEtBQXVDLEVBRy9DLFdBQTJDLEVBRTNDLFVBQWtDLEVBRTFCLE9BQTJCLEVBRzNCLG9CQUFpRDtRQUVsRSxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBakJpQixPQUFFLEdBQUYsRUFBRSxDQUF5QjtRQUcvQyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFFdEMsVUFBSyxHQUFMLEtBQUssQ0FBa0M7UUFHL0MsZ0JBQVcsR0FBWCxXQUFXLENBQWdDO1FBRTNDLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBRTFCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBRzNCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUE1RnJELFNBQUksR0FBdUMsV0FBVyxDQUFDO1FBU3hFLGNBQVMsR0FBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFHcEQsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUdaLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFHaEIsaUJBQVksR0FFc0QsbUJBQW1CLENBQUM7UUFFdEYsdURBQXVEO1FBR3ZELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUdoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFHckMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFHaEMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFHakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQix3QkFBbUIsR0FDZixvQkFBb0IsQ0FBQztRQVloQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFRbkQsWUFBTyxHQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFekUsU0FBSSxHQUFHLEtBQUssQ0FBQztJQTBCYixDQUFDO0lBOUNELElBQ0ksbUJBQW1CLENBQUMsS0FBcUI7UUFDekMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUF5Q0QsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksT0FBTzs7UUFDUCxPQUFPLENBQ0gsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLE9BQU8sQ0FBQSxDQUNoRixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQ0ksWUFBWTtRQUNaLE1BQU0sRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUU3QyxPQUFPLElBQUksS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNqRSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDOUQsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLGNBQWM7O1FBQ2QsT0FBTyxDQUNILENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLENBQUE7WUFDMUMsSUFBSSxDQUFDLGVBQWU7WUFDcEIsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNkLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLGFBQWE7O1FBQ2IsT0FBTyxDQUNILElBQUksQ0FBQyxVQUFVO1lBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQzFELENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxRQUFROztRQUNSLE9BQU8sQ0FDSCxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sQ0FBQTtZQUMzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNyRSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksTUFBTTs7UUFDTixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQVc7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQjtZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUN4QixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVELGNBQWM7O1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsTUFBQSxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWU7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjs7UUFDekIsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFDSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDdEIsWUFBWSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO1lBQ3BELENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDM0IsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNyRCxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUNmLFlBQVksS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWE7Z0JBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUM5RDtZQUNFLE9BQU87U0FDVjtRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hDO2FBQU07WUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakUsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxZQUFvQjtRQUN0QyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxZQUFvQjtRQUN2QyxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDekIsSUFBSSxDQUFDLEtBQUs7YUFDTCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDbkIsUUFBUSxLQUFLLEtBQUs7WUFDZCxDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxLQUFLO2lCQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUNyQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDN0I7YUFDQSxNQUFNLENBQ0gsQ0FBQyxNQUFNLEVBQUUsSUFBdUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDeEQsRUFBRSxDQUNMLENBQ1IsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLEtBQUs7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzNDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVyRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLEtBQXVCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUMsWUFBWSxFQUFZO1FBQzVCLElBQUksWUFBWSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVRLGdCQUFnQjtRQUNyQixLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVMsRUFBRSxHQUFXO1FBQzVCLHdEQUF3RDtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sUUFBUSxDQUFDLFVBQXNEOzttQ0FBdEQsRUFBQSxtQkFBYSxJQUFJLENBQUMsU0FBUywwQ0FBRSxhQUFhLENBQUMsV0FBVztRQUNuRSx1REFBdUQ7UUFDdkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUM7YUFDN0Q7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBZTtRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXZCLE9BQU8sS0FBSzthQUNQLE9BQU8sRUFBRTthQUNULE1BQU0sQ0FDSCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxRTthQUNBLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxlQUFlLENBQUMsWUFBb0IsRUFBRSxJQUFZO1FBQ3RELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN6QixPQUFPO1NBQ1Y7UUFFRCxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFCLElBQ0ksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDM0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVTtZQUNuQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDakMsQ0FBQyxFQUNIO1lBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsVUFBVTtnQkFDbkMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNyRDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxNQUFNO1FBQ1YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsS0FBSyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFL0MsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLGdCQUF5QixLQUFLO1FBQzdDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBQyxhQUFhLEVBQUMsQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQzlCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQVksVUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZO1lBQ3BCLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsc0JBQXNCO1lBQ2pFLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDOztrSEExYlEsb0JBQW9CLGtCQXdGakIsU0FBUyx5Q0FFVCxpQkFBaUIsYUFDakIsVUFBVSxhQUVWLGdCQUFnQiw2QkFFaEIsUUFBUSxhQUdSLHVCQUF1Qiw2QkFFdkIsZ0NBQWdDLGFBRWhDLHFCQUFxQixhQUdyQiwwQkFBMEI7c0dBekc3QixvQkFBb0IscW9CQVRsQjtRQUNQLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDO1FBQ2hELFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztRQUNsQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2Qyw2QkFBNkI7UUFDN0IsYUFBYTtLQUNoQixnRUE4RWEsb0JBQW9CLDJCQUFTLFdBQVcsNkVBdkUzQywwQkFBMEIsMlRBWVIsVUFBVSx5REFHNUIscUJBQXFCLDJCQUFTLFVBQVUsMEtBTnZCLFVBQVUsb0RDckcxQyx1bE9BMEpBLGlrZURwRW1CLENBQUMsa0NBQWtDLENBQUM7NEZBRTFDLG9CQUFvQjtrQkFkaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsMEJBQTBCLHNCQUFzQjt3QkFDaEQsWUFBWSxzQkFBc0I7d0JBQ2xDLGlCQUFpQixzQkFBc0I7d0JBQ3ZDLDZCQUE2Qjt3QkFDN0IsYUFBYTtxQkFDaEI7b0JBQ0QsYUFBYSxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQ3REOzswQkF1RlEsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixRQUFROzswQkFDUixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsUUFBUTs7MEJBRWYsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMscUJBQXFCOzswQkFFNUIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywwQkFBMEI7NENBcEdyQixjQUFjO3NCQUQ5QixTQUFTO3VCQUFDLDBCQUEwQjtnQkFJcEIsZ0JBQWdCO3NCQURoQyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFJWixhQUFhO3NCQUQ3QixTQUFTO3VCQUFDLGVBQWU7Z0JBSVQsSUFBSTtzQkFEcEIsWUFBWTt1QkFBQyxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUl0QixVQUFVO3NCQUQxQixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBSXZCLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUlwRCxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sVUFBVTtzQkFGVCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFJaEMsSUFBSTtzQkFESCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtGLG1CQUFtQjtzQkFEdEIsS0FBSzt1QkFBQyxlQUFlO2dCQVViLFlBQVk7c0JBRHBCLE1BQU07Z0JBSUUsUUFBUTtzQkFEaEIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7Z0JBSTlDLGlCQUFpQjtzQkFEekIsU0FBUzt1QkFBQyxXQUFXO2dCQWtEbEIsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFNekIsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHNCQUFzQjtnQkFRL0IsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlNdWx0aXBsZUNvbnRyb2wsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFycmF5UmVtb3ZlLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgdHVpR2V0Q2xpcGJvYXJkRGF0YVRleHQsXG4gICAgdHVpSXNFbGVtZW50LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgTU9ERV9QUk9WSURFUixcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfTU9ERSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICB0dWlBc0RhdGFMaXN0SG9zdCxcbiAgICBUdWlCcmlnaHRuZXNzLFxuICAgIFR1aURhdGFMaXN0RGlyZWN0aXZlLFxuICAgIFR1aURhdGFMaXN0SG9zdCxcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudCxcbiAgICBUdWlNb2RlRGlyZWN0aXZlLFxuICAgIFR1aVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aVN0cmluZ2lmaWFibGVJdGVtfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1R1aVN0YXR1c30gZnJvbSAnQHRhaWdhLXVpL2tpdC90eXBlcyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfVEFHX09QVElPTlMsIFR1aUlucHV0VGFnT3B0aW9uc30gZnJvbSAnLi9pbnB1dC10YWcub3B0aW9ucyc7XG5cbmNvbnN0IFRBR19TSVpFX1JFTSA9IHtcbiAgICBzOiAxLjI1LFxuICAgIG06IDEuNSxcbiAgICBsOiAyLFxufTtcbmNvbnN0IExJTkVfSEVJR0hUX1JFTSA9IHtcbiAgICBzOiAxLFxuICAgIG06IDEuMjUsXG4gICAgbDogMS4yNSxcbn07XG5jb25zdCBUQUdfVkVSVElDQUxfU1BBQ0VfUkVNID0gMC4xMjU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXRhZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC10YWcuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFRhZ0NvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFRhZ0NvbXBvbmVudCksXG4gICAgICAgIHR1aUFzRGF0YUxpc3RIb3N0KFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgICAgIE1PREVfUFJPVklERVIsXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0VGFnQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU11bHRpcGxlQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsIFR1aURhdGFMaXN0SG9zdDxzdHJpbmc+XG57XG4gICAgQFZpZXdDaGlsZChUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3RlZERyb3Bkb3duPzogVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdmb2N1c2FibGVFbGVtZW50JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzYWJsZUVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFnc0NvbnRhaW5lcicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWdzQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKCd0YWcnLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAVmlld0NoaWxkKCdjbGVhbmVyJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xlYW5lclN2Zz86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChUdWlTY3JvbGxiYXJDb21wb25lbnQsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbEJhcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBzZXBhcmF0b3I6IFJlZ0V4cCB8IHN0cmluZyA9IHRoaXMub3B0aW9ucy5zZXBhcmF0b3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHRhZ1ZhbGlkYXRvcjpcbiAgICAgICAgfCBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmc+XG4gICAgICAgIHwgVHVpQm9vbGVhbkhhbmRsZXI8VHVpU3RyaW5naWZpYWJsZUl0ZW08dW5rbm93bj4gfCBzdHJpbmc+ID0gQUxXQVlTX1RSVUVfSEFORExFUjtcblxuICAgIC8vIFRPRE86IDQuMCBDb25zaWRlciByZW1vdmluZyBhbmQgdXNlIHJvd3MgPSAxIGluc3RlYWRcbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2V4cGFuZGFibGUnKVxuICAgIGV4cGFuZGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICByb3dzID0gSW5maW5pdHk7XG5cbiAgICBASW5wdXQoKVxuICAgIGlucHV0SGlkZGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHVuaXF1ZVRhZ3MgPSB0aGlzLm9wdGlvbnMudW5pcXVlVGFncztcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgcmVtb3ZhYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpU3RyaW5naWZpYWJsZUl0ZW08YW55PiB8IHN0cmluZz4gPVxuICAgICAgICBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgncHNldWRvRm9jdXNlZCcpXG4gICAgc2V0IHBzZXVkb0ZvY3VzZWRTZXR0ZXIodmFsdWU6IGJvb2xlYW4gfCBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUgJiYgIXRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHNldWRvRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpRGF0YUxpc3REaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgZGF0YWxpc3Q/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Vycm9ySWNvbicpXG4gICAgcmVhZG9ubHkgZXJyb3JJY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgICBzdGF0dXMkOiBPYnNlcnZhYmxlPFR1aVN0YXR1cz4gPSB0aGlzLm1vZGUkLnBpcGUobWFwKCgpID0+IHRoaXMuc3RhdHVzKSk7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlNb2RlRGlyZWN0aXZlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9NT0RFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGUkOiBPYnNlcnZhYmxlPFR1aUJyaWdodG5lc3MgfCBudWxsPixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSlcbiAgICAgICAgcmVhZG9ubHkgaGludE9wdGlvbnM6IFR1aUhpbnRPcHRpb25zRGlyZWN0aXZlIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgY29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfVEFHX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRUYWdPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEhvc3RlZERyb3Bkb3duPzogVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNkcik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgfHwgISF0aGlzLmhvc3RlZERyb3Bkb3duPy5mb2N1c2VkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNpemU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fbGFiZWwtb3V0c2lkZScpXG4gICAgZ2V0IGxhYmVsT3V0c2lkZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3NpemUsIGxhYmVsT3V0c2lkZX0gPSB0aGlzLmNvbnRyb2xsZXI7XG5cbiAgICAgICAgcmV0dXJuIHNpemUgPT09ICdzJyB8fCBsYWJlbE91dHNpZGU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5faWNvbi1sZWZ0JylcbiAgICBnZXQgaWNvbkxlZnQoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvbkxlZnQ7XG4gICAgfVxuXG4gICAgZ2V0IGljb24oKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvbjtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkNsZWFuZXIoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIub3B0aW9ucy5pY29uQ2xlYW5lcjtcbiAgICB9XG5cbiAgICBnZXQgaGFzQ2xlYW5lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5jbGVhbmVyICYmIHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5pbnRlcmFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzTmF0aXZlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VhcmNoO1xuICAgIH1cblxuICAgIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy52YWx1ZS5sZW5ndGggfHwgdGhpcy5oYXNOYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5sYWJlbE91dHNpZGUgfHxcbiAgICAgICAgICAgICghdGhpcy5oYXNWYWx1ZSAmJiAoIXRoaXMuaGFzRXhhbXBsZVRleHQgfHwgdGhpcy5pbnB1dEhpZGRlbikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlaG9sZGVyUmFpc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMubGFiZWxPdXRzaWRlICYmXG4gICAgICAgICAgICAoKHRoaXMuY29tcHV0ZWRGb2N1c2VkICYmICF0aGlzLnJlYWRPbmx5KSB8fCB0aGlzLmhhc1ZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNFeGFtcGxlVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5wbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZEZvY3VzZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmhhc1ZhbHVlICYmXG4gICAgICAgICAgICAhdGhpcy5yZWFkT25seVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNSaWdodEljb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5oYXNDbGVhbmVyIHx8XG4gICAgICAgICAgICAhIXRoaXMuaWNvbiB8fFxuICAgICAgICAgICAgKCEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzaG93SGludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJlxuICAgICAgICAgICAgKHRoaXMuY29udHJvbGxlci5vcHRpb25zLmhpbnRPbkRpc2FibGVkIHx8ICF0aGlzLmNvbXB1dGVkRGlzYWJsZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXR1cygpOiBUdWlTdGF0dXMge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlRGlyZWN0aXZlPy5tb2RlID8gJ2RlZmF1bHQnIDogdGhpcy5vcHRpb25zLnRhZ1N0YXR1cztcbiAgICB9XG5cbiAgICBnZXQgY2FuT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJhY3RpdmUgJiYgISF0aGlzLmRhdGFsaXN0O1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlTWF4SGVpZ2h0KCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRhYmxlID8gdGhpcy5yb3dzICogdGhpcy5saW5lSGVpZ2h0IDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXRMZWZ0Q29udGVudCh0YWc6IHN0cmluZyk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFnVmFsaWRhdG9yKHRhZykgJiYgdGhpcy5lcnJvckljb25UZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLmVycm9ySWNvblRlbXBsYXRlXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIG9uQ2xlYW5lckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMucGFyZW50SG9zdGVkRHJvcGRvd24/LnVwZGF0ZU9wZW4odHJ1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRUYWcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKCFhY3RpdmUgJiYgIXRoaXMuY29tcHV0ZWRGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0dWFsVGFyZ2V0ID0gdHVpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5mb2N1c2FibGVFbGVtZW50IHx8XG4gICAgICAgICAgICBhY3R1YWxUYXJnZXQgPT09IHRoaXMuZm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50IHx8XG4gICAgICAgICAgICAhdHVpSXNFbGVtZW50KGV2ZW50LnRhcmdldCkgfHxcbiAgICAgICAgICAgIHRoaXMuY2xlYW5lclN2Zz8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpIHx8XG4gICAgICAgICAgICAodGhpcy50YWdzQ29udGFpbmVyICYmXG4gICAgICAgICAgICAgICAgYWN0dWFsVGFyZ2V0ICE9PSB0aGlzLnRhZ3NDb250YWluZXIubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIHRoaXMudGFnc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGFjdHVhbFRhcmdldCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfVxuXG4gICAgb25GaWVsZEtleURvd25CYWNrc3BhY2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbE91dHNpZGUgJiYgIXRoaXMuaGFzTmF0aXZlVmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlTGFzdEVuYWJsZWRJdGVtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uRmllbGRLZXlEb3duQXJyb3dMZWZ0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRmllbGRLZXlEb3duQXJyb3dMZWZ0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGFiZWxPdXRzaWRlIHx8IHRoaXMuaGFzTmF0aXZlVmFsdWUgfHwgIXRoaXMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRhZ3MubGFzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25GaWVsZEtleURvd25FbnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRUYWcoKTtcbiAgICAgICAgdGhpcy5zY3JvbGxUbygpO1xuICAgIH1cblxuICAgIG9uVGFnS2V5RG93bkFycm93TGVmdChjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vblNjcm9sbEtleURvd24oY3VycmVudEluZGV4LCAtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhZ0tleURvd25BcnJvd1JpZ2h0KGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IHRoaXMudmFsdWUubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWdFZGl0ZWQodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUoXG4gICAgICAgICAgICB0aGlzLnZhbHVlXG4gICAgICAgICAgICAgICAgLm1hcCgodGFnLCB0YWdJbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGFnSW5kZXggIT09IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KHRoaXMuc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh0YWcgPT4gdGFnLnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2U8c3RyaW5nW10+KFxuICAgICAgICAgICAgICAgICAgICAocmVzdWx0LCBpdGVtOiBzdHJpbmdbXSB8IHN0cmluZykgPT4gcmVzdWx0LmNvbmNhdChpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoYW5kbGVPcHRpb24oaXRlbTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCgnJyk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlKHRoaXMudmFsdWUuY29uY2F0KGl0ZW0pKTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG8oKTtcbiAgICB9XG5cbiAgICBvbklucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB2YWx1ZS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBhcnJheVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IHRoaXMuY2xpcHBlZFZhbHVlKGl0ZW0udHJpbSgpKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0sIGluZGV4LCB7bGVuZ3RofSkgPT4gaXRlbS5sZW5ndGggPiAwICYmIGluZGV4ICE9PSBsZW5ndGggLSAxKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdGFncy5maWx0ZXIodGFnID0+ICF0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIodGFnKSk7XG5cbiAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKHRoaXMuY2xpcHBlZFZhbHVlKGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdLnRyaW0oKSkpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUoWy4uLnRoaXMudmFsdWUsIC4uLnZhbGlkYXRlZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2godGhpcy5jbGlwcGVkVmFsdWUodmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbiA9IHRoaXMuaGFzTmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFzdGVkID0gdHVpR2V0Q2xpcGJvYXJkRGF0YVRleHQoZXZlbnQgYXMgQ2xpcGJvYXJkRXZlbnQpO1xuXG4gICAgICAgIHRoaXMub25JbnB1dChwYXN0ZWQgfHwgJycpO1xuICAgIH1cblxuICAgIG9uRHJvcCh7ZGF0YVRyYW5zZmVyfTogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dChkYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpIHx8ICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKF86IG51bWJlciwgdGFnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBBY3R1YWxseSB0YWcgaGFzIFR1aVN0cmluZ2lmaWFibGVJdGVtIHR5cGUgbm90IHN0cmluZ1xuICAgICAgICByZXR1cm4gdGFnLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUbyhzY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxCYXI/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgpOiB2b2lkIHtcbiAgICAgICAgLy8gQWxsb3cgY2hhbmdlIGRldGVjdGlvbiB0byBydW4gYW5kIGFkZCBuZXcgdGFnIHRvIERPTVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbEJhcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJWYWx1ZSh2YWx1ZTogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIGl0ZW0gPT4gIXRoaXMudW5pcXVlVGFncyB8fCAoaXRlbSAmJiAhc2Vlbi5oYXMoaXRlbSkgJiYgc2Vlbi5hZGQoaXRlbSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXg6IG51bWJlciwgZmxhZzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRoaXMudGFncy5maW5kKChfaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBjdXJyZW50SW5kZXggKyBmbGFnKTtcblxuICAgICAgICBpZiAoIXRhZyB8fCAhdGhpcy5zY3JvbGxCYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhZy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmxhZyAqIHRoaXMuc2Nyb2xsQmFyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLVxuICAgICAgICAgICAgICAgIGZsYWcgKiB0YWcubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICB0YWcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8XG4gICAgICAgICAgICAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxCYXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9XG4gICAgICAgICAgICAgICAgZmxhZyAqIHRhZy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2ggPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRUYWcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSB0aGlzLnNlYXJjaC50cmltKCk7XG5cbiAgICAgICAgaWYgKCFpbnB1dFZhbHVlIHx8IHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcihpbnB1dFZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2goJycpO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5maWx0ZXJWYWx1ZSh0aGlzLnZhbHVlLmNvbmNhdChpbnB1dFZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVMYXN0RW5hYmxlZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gdGhpcy52YWx1ZS5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcih0aGlzLnZhbHVlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdHVpQXJyYXlSZW1vdmUodGhpcy52YWx1ZSwgaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGlwcGVkVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCB0aGlzLm1heExlbmd0aCB8fCB2YWx1ZS5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGxpbmVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxPdXRzaWRlXG4gICAgICAgICAgICA/IFRBR19TSVpFX1JFTVt0aGlzLmNvbnRyb2xsZXIuc2l6ZV0gKyAyICogVEFHX1ZFUlRJQ0FMX1NQQUNFX1JFTVxuICAgICAgICAgICAgOiBMSU5FX0hFSUdIVF9SRU1bdGhpcy5jb250cm9sbGVyLnNpemVdO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoaW50T3B0aW9ucz8uY2hhbmdlJCB8IGFzeW5jXCI+PC9uZy1jb250YWluZXI+XG48dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRhdGFsaXN0IHx8ICcnXCJcbiAgICBbKG9wZW4pXT1cIm9wZW5cIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtmb2N1c109XCJjb21wdXRlZEZvY3VzZWRcIlxuICAgICAgICBbaG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTGVmdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb24gdC1pY29uX2xlZnQgdC10ZXh0ZmllbGQtaWNvbiB0LWljb24td3JhcHBlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImljb25MZWZ0IGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1hYnNvbHV0ZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1wbGFjZWhvbGRlcl9yYWlzZWRdPVwicGxhY2Vob2xkZXJSYWlzZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0dWktc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFleHBhbmRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5yZW1dPVwiY29tcHV0ZU1heEhlaWdodFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC10YWdzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxPdXRzaWRlOyBlbHNlIHRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgaW5kZXggYXMgaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX3RhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC10YWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIihzdGF0dXMkIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWZ0Q29udGVudF09XCJnZXRMZWZ0Q29udGVudChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZCB8fCBkaXNhYmxlZEl0ZW1IYW5kbGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXRhYmxlICYmICFyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtob3ZlcmFibGVdPVwiIXJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCIhcmVhZE9ubHkgJiYgcmVtb3ZhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlcGFyYXRvcl09XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImNvbnRyb2xsZXIuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdGVkKT1cIm9uVGFnRWRpdGVkKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dMZWZ0LnByZXZlbnQpPVwib25UYWdLZXlEb3duQXJyb3dMZWZ0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93UmlnaHQucHJldmVudCk9XCJvblRhZ0tleURvd25BcnJvd1JpZ2h0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdHVpLXRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2NvbW1hXT1cImNvbXB1dGVkRm9jdXNlZCAmJiAhaW5wdXRIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Vycm9yXT1cIiF0YWdWYWxpZGF0b3IoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWlucHV0LXdyYXBwZXJfY29sbGFwc2VkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgcmVhZE9ubHkgfHwgaW5wdXRIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LWdob3N0XCI+e3sgc2VhcmNoIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX25hdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1uYXRpdmVfaGlkZGVuXT1cImlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5IHx8IGlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUZvY3VzYWJsZV09XCJjb21wdXRlZEZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZS5wcmV2ZW50KT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wLnByZXZlbnQpPVwib25Ecm9wKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwib25GaWVsZEtleURvd25BcnJvd0xlZnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJvbkZpZWxkS2V5RG93bkJhY2tzcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIucHJldmVudCk9XCJvbkZpZWxkS2V5RG93bkVudGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90dWktc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInR1aUNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNlbGVjdFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc1JpZ2h0SWNvbnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29ucyB0LWljb24td3JhcHBlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NsZWFuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uQ2xlYW5lciBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjbGVhbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXRhZ19fY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJvbkNsZWFuZXJDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8dHVpLXRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SGludFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbZGVzY3JpYmVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImhpbnRPcHRpb25zPy5jb250ZW50XCJcbiAgICAgICAgICAgICAgICA+PC90dWktdG9vbHRpcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29uIHQtdGV4dGZpZWxkLWljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9ySWNvbj5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkFsZXJ0Q2lyY2xlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtZXJyb3ItaWNvblwiXG4gICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
4
|
import { maskitoTimeOptionsGenerator } from '@maskito/kit';
|
|
5
5
|
import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, TUI_IS_IOS, TUI_IS_MOBILE, TUI_STRICT_MATCHER, tuiAsControl, tuiAsFocusableItemAccessor, tuiIsElement, tuiIsInput, tuiIsNativeFocused, tuiPure, TuiTime, } from '@taiga-ui/cdk';
|
|
@@ -19,13 +19,13 @@ import * as i6 from "@tinkoff/ng-polymorpheus";
|
|
|
19
19
|
import * as i7 from "@angular/forms";
|
|
20
20
|
import * as i8 from "rxjs";
|
|
21
21
|
export class TuiInputTimeComponent extends AbstractTuiNullableControl {
|
|
22
|
-
constructor(control, cdr, timeTexts$, options, isMobile,
|
|
22
|
+
constructor(control, cdr, timeTexts$, options, isMobile, isIos, textfieldSize) {
|
|
23
23
|
super(control, cdr);
|
|
24
24
|
this.timeTexts$ = timeTexts$;
|
|
25
25
|
this.options = options;
|
|
26
26
|
this.isMobile = isMobile;
|
|
27
|
-
this.textfieldSize = textfieldSize;
|
|
28
27
|
this.isIos = isIos;
|
|
28
|
+
this.textfieldSize = textfieldSize;
|
|
29
29
|
this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
|
|
30
30
|
this.items = [];
|
|
31
31
|
this.itemSize = this.options.itemSize;
|
|
@@ -35,6 +35,9 @@ export class TuiInputTimeComponent extends AbstractTuiNullableControl {
|
|
|
35
35
|
this.postfix = this.options.postfix;
|
|
36
36
|
this.open = false;
|
|
37
37
|
}
|
|
38
|
+
get size() {
|
|
39
|
+
return this.textfieldSize.size;
|
|
40
|
+
}
|
|
38
41
|
get nativeFocusableElement() {
|
|
39
42
|
return this.textfield ? this.textfield.nativeFocusableElement : null;
|
|
40
43
|
}
|
|
@@ -54,9 +57,6 @@ export class TuiInputTimeComponent extends AbstractTuiNullableControl {
|
|
|
54
57
|
get nativeDatalist() {
|
|
55
58
|
return this.nativePicker && !this.isIos;
|
|
56
59
|
}
|
|
57
|
-
get size() {
|
|
58
|
-
return this.textfieldSize.size;
|
|
59
|
-
}
|
|
60
60
|
get maskOptions() {
|
|
61
61
|
return this.calculateMask(this.mode);
|
|
62
62
|
}
|
|
@@ -216,8 +216,8 @@ export class TuiInputTimeComponent extends AbstractTuiNullableControl {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
TuiInputTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputTimeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TIME_TEXTS }, { token: TUI_INPUT_TIME_OPTIONS }, { token: TUI_IS_MOBILE }, { token:
|
|
220
|
-
TuiInputTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputTimeComponent, selector: "tui-input-time", inputs: { disabledItemHandler: "disabledItemHandler", items: "items", itemSize: "itemSize", strict: "strict", mode: "mode", postfix: "postfix" }, host: { listeners: { "click": "onClick()" } }, providers: [
|
|
219
|
+
TuiInputTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputTimeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TIME_TEXTS }, { token: TUI_INPUT_TIME_OPTIONS }, { token: TUI_IS_MOBILE }, { token: TUI_IS_IOS }, { token: TUI_TEXTFIELD_SIZE }], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
+
TuiInputTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputTimeComponent, selector: "tui-input-time", inputs: { disabledItemHandler: "disabledItemHandler", items: "items", itemSize: "itemSize", strict: "strict", mode: "mode", postfix: "postfix" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.data-size": "this.size" } }, providers: [
|
|
221
221
|
tuiAsFocusableItemAccessor(TuiInputTimeComponent),
|
|
222
222
|
tuiAsControl(TuiInputTimeComponent),
|
|
223
223
|
tuiAsDataListHost(TuiInputTimeComponent),
|
|
@@ -266,12 +266,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
266
266
|
}] }, { type: undefined, decorators: [{
|
|
267
267
|
type: Inject,
|
|
268
268
|
args: [TUI_IS_MOBILE]
|
|
269
|
-
}] }, { type: i1.TuiTextfieldSizeDirective, decorators: [{
|
|
270
|
-
type: Inject,
|
|
271
|
-
args: [TUI_TEXTFIELD_SIZE]
|
|
272
269
|
}] }, { type: undefined, decorators: [{
|
|
273
270
|
type: Inject,
|
|
274
271
|
args: [TUI_IS_IOS]
|
|
272
|
+
}] }, { type: i1.TuiTextfieldSizeDirective, decorators: [{
|
|
273
|
+
type: Inject,
|
|
274
|
+
args: [TUI_TEXTFIELD_SIZE]
|
|
275
275
|
}] }]; }, propDecorators: { textfield: [{
|
|
276
276
|
type: ViewChild,
|
|
277
277
|
args: [TuiPrimitiveTextfieldComponent]
|
|
@@ -287,8 +287,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
287
287
|
type: Input
|
|
288
288
|
}], postfix: [{
|
|
289
289
|
type: Input
|
|
290
|
+
}], size: [{
|
|
291
|
+
type: HostBinding,
|
|
292
|
+
args: ['attr.data-size']
|
|
290
293
|
}], getFiller$: [], onClick: [{
|
|
291
294
|
type: HostListener,
|
|
292
295
|
args: ['click']
|
|
293
296
|
}], calculateMask: [], filter: [] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC10aW1lL2lucHV0LXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGltZS9pbnB1dC10aW1lLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFlBQVksRUFDWiwwQkFBMEIsRUFHMUIsWUFBWSxFQUNaLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsT0FBTyxFQUNQLE9BQU8sR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFFbEIsOEJBQThCLEdBSWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFP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ckIsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUU3QixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBRXpCLE1BQU07MkJBQUMsVUFBVTs0Q0FwQ0wsU0FBUztzQkFEekIsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBSXpDLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQStGTixVQUFVLE1BS1YsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU87Z0JBdUZiLGFBQWEsTUFlYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvcn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgVFVJX0lTX0lPUyxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIFRVSV9TVFJJQ1RfTUFUQ0hFUixcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzRWxlbWVudCxcbiAgICB0dWlJc0lucHV0LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICB0dWlQdXJlLFxuICAgIFR1aVRpbWUsXG4gICAgVHVpVGltZUxpa2UsXG4gICAgVHVpVGltZU1vZGUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgdHVpQXNEYXRhTGlzdEhvc3QsXG4gICAgdHVpQXNPcHRpb25Db250ZW50LFxuICAgIFR1aURhdGFMaXN0SG9zdCxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfU0VMRUNUX09QVElPTn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3NlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9USU1FX1RFWFRTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfVElNRV9PUFRJT05TLCBUdWlJbnB1dFRpbWVPcHRpb25zfSBmcm9tICcuL2lucHV0LXRpbWUub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXRpbWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10aW1lLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXRpbWUuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFRpbWVDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRUaW1lQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNEYXRhTGlzdEhvc3QoVHVpSW5wdXRUaW1lQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNPcHRpb25Db250ZW50KFRVSV9TRUxFQ1RfT1BUSU9OKSxcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRUaW1lQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxUdWlUaW1lPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLCBUdWlEYXRhTGlzdEhvc3Q8VHVpVGltZT5cbntcbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpVGltZT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aVRpbWVbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBpdGVtU2l6ZTogVHVpSW5wdXRUaW1lT3B0aW9uc1snaXRlbVNpemUnXSA9IHRoaXMub3B0aW9ucy5pdGVtU2l6ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RyaWN0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6IFR1aUlucHV0VGltZU9wdGlvbnNbJ21vZGUnXSA9IHRoaXMub3B0aW9ucy5tb2RlO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIHVzZSBgdHVpVGV4dGZpZWxkUG9zdGZpeGAgZnJvbSB7QGxpbmsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZX0gaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcG9zdGZpeDogVHVpSW5wdXRUaW1lT3B0aW9uc1sncG9zdGZpeCddID0gdGhpcy5vcHRpb25zLnBvc3RmaXg7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVElNRV9URVhUUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aW1lVGV4dHMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlUaW1lTW9kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1RJTUVfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dFRpbWVPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemU6IFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX0lPUykgcHJpdmF0ZSByZWFkb25seSBpc0lvczogYm9vbGVhbixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhbk9wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICEhdGhpcy5maWx0ZXJlZC5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlcmVkKCk6IHJlYWRvbmx5IFR1aVRpbWVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcih0aGlzLml0ZW1zLCB0aGlzLm1vZGUsIHRoaXMuY29tcHV0ZWRTZWFyY2gpO1xuICAgIH1cblxuICAgIGdldCBzaG93TmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVQaWNrZXIgJiZcbiAgICAgICAgICAgICghdGhpcy5pc0lvcyB8fCAodGhpcy5tb2RlID09PSAnSEg6TU0nICYmICF0aGlzLml0ZW1zLmxlbmd0aCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZURhdGFsaXN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVQaWNrZXIgJiYgIXRoaXMuaXNJb3M7XG4gICAgfVxuXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgbWFza09wdGlvbnMoKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrKHRoaXMubW9kZSk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlLnRvU3RyaW5nKHRoaXMubW9kZSkgOiB0aGlzLm5hdGl2ZVZhbHVlO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFNlYXJjaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlZFZhbHVlLmxlbmd0aCAhPT0gdGhpcy5tb2RlLmxlbmd0aCA/IHRoaXMuY29tcHV0ZWRWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBpbm5lclBzZXVkb0ZvY3VzZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wc2V1ZG9Gb2N1cyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5vcGVuICYmIHRoaXMuY2FuT3BlbikgfHwgdGhpcy5jb21wdXRlZEZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGljb24oKTogVHVpSW5wdXRUaW1lT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgc2V0IG5hdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgZ2V0RmlsbGVyJChtb2RlOiBUdWlUaW1lTW9kZSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVUZXh0cyQucGlwZShtYXAodGV4dHMgPT4gdGV4dHNbbW9kZV0pKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gISF0aGlzLml0ZW1zLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmdldE1hdGNoKHZhbHVlKTtcblxuICAgICAgICBpZiAobWF0Y2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGNoO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoICE9PSB0aGlzLm1vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZSA9IFR1aVRpbWUuZnJvbVN0cmluZyh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc3RyaWN0ID8gdGhpcy5maW5kTmVhcmVzdFRpbWVGcm9tSXRlbXModGltZSkgOiB0aW1lO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBmb2N1c2VkIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgdGhpcy5tb2RlID09PSAnSEg6TU0nXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFR1aVRpbWUuZnJvbVN0cmluZyh0aGlzLm5hdGl2ZVZhbHVlKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZVZhbHVlLmVuZHNXaXRoKCcuJykgfHwgdGhpcy5uYXRpdmVWYWx1ZS5lbmRzV2l0aCgnOicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMubmF0aXZlVmFsdWUuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFycm93VXAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzQXJyb3coZXZlbnQsIDEpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc0Fycm93KGV2ZW50LCAtMSk7XG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uKGl0ZW06IFR1aVRpbWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtO1xuICAgIH1cblxuICAgIG9uT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogVHVpVGltZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB2YWx1ZSA/IHRoaXMuY29tcHV0ZWRWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLm5hdGl2ZVBpY2tlciAmJiB0aGlzLmlzTW9iaWxlO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKG1vZGU6IFR1aVRpbWVNb2RlKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICBjb25zdCB7SEgsIE1NLCBTUywgTVN9ID0gdGhpcy5vcHRpb25zLm1heFZhbHVlcztcblxuICAgICAgICByZXR1cm4gbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgICB0aW1lU2VnbWVudE1heFZhbHVlczoge1xuICAgICAgICAgICAgICAgIGhvdXJzOiBISCxcbiAgICAgICAgICAgICAgICBtaW51dGVzOiBNTSxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiBTUyxcbiAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM6IE1TLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGZpbHRlcihcbiAgICAgICAgaXRlbXM6IHJlYWRvbmx5IFR1aVRpbWVbXSxcbiAgICAgICAgbW9kZTogVHVpVGltZU1vZGUsXG4gICAgICAgIHNlYXJjaDogc3RyaW5nLFxuICAgICk6IHJlYWRvbmx5IFR1aVRpbWVbXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnRvU3RyaW5nKG1vZGUpLmluY2x1ZGVzKHNlYXJjaCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZE5lYXJlc3RUaW1lRnJvbUl0ZW1zKHZhbHVlOiBUdWlUaW1lKTogVHVpVGltZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgTWF0aC5hYnMoY3VycmVudC50b0Fic29sdXRlTWlsbGlzZWNvbmRzKCkgLSB2YWx1ZS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKCkpIDxcbiAgICAgICAgICAgIE1hdGguYWJzKHByZXZpb3VzLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKSAtIHZhbHVlLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKSlcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnRcbiAgICAgICAgICAgICAgICA6IHByZXZpb3VzLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF0Y2godmFsdWU6IHN0cmluZyk6IFR1aVRpbWUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT4gVFVJX1NUUklDVF9NQVRDSEVSKGl0ZW0sIHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzQXJyb3coZXZlbnQ6IEV2ZW50LCBzaGlmdDogLTEgfCAxKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt0YXJnZXR9ID0gZXZlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkgfHwgIXR1aUlzRWxlbWVudCh0YXJnZXQpIHx8ICF0dWlJc0lucHV0KHRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gdGFyZ2V0LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG5cbiAgICAgICAgdGhpcy5zaGlmdFRpbWUodGhpcy5jYWxjdWxhdGVTaGlmdChzZWxlY3Rpb25TdGFydCwgc2hpZnQpKTtcblxuICAgICAgICB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVNoaWZ0KHNlbGVjdGlvblN0YXJ0OiBudW1iZXIsIHNoaWZ0OiBudW1iZXIpOiBUdWlUaW1lTGlrZSB7XG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA8PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4ge2hvdXJzOiBzaGlmdH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPD0gNSkge1xuICAgICAgICAgICAgcmV0dXJuIHttaW51dGVzOiBzaGlmdH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPD0gOCkge1xuICAgICAgICAgICAgcmV0dXJuIHtzZWNvbmRzOiBzaGlmdH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge21zOiBzaGlmdH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaGlmdFRpbWUoc2hpZnQ6IFR1aVRpbWVMaWtlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmNyZWFzZWRUaW1lID0gdGhpcy52YWx1ZS5zaGlmdChzaGlmdCk7XG5cbiAgICAgICAgLy8gTWFudWFsIHVwZGF0ZSBzbyB3ZSBjYW4gc2V0IGNhcmV0IHBvc2l0aW9uIHByb3Blcmx5XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBpbmNyZWFzZWRUaW1lLnRvU3RyaW5nKHRoaXMubW9kZSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBpbmNyZWFzZWRUaW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dChwcmV2ZW50U2Nyb2xsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsfSk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbY2FuT3Blbl09XCJjYW5PcGVuICYmICFuYXRpdmVEYXRhbGlzdFwiXG4gICAgW2NvbnRlbnRdPVwiZHJvcGRvd25Db250ZW50XCJcbiAgICBbb3Blbl09XCJjYW5PcGVuICYmIG9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbigkZXZlbnQpXCJcbiAgICAoZm9jdXNlZENoYW5nZSk9XCJvbkZvY3VzZWQoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiKGdldEZpbGxlciQobW9kZSkgfCBhc3luYykgfHwgJydcIlxuICAgICAgICBbbmF0aXZlSWRdPVwibmF0aXZlSWRcIlxuICAgICAgICBbcHNldWRvRm9jdXNdPVwiaW5uZXJQc2V1ZG9Gb2N1c2VkXCJcbiAgICAgICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbZm9jdXNhYmxlXT1cImZvY3VzYWJsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFttYXNraXRvXT1cIm1hc2tPcHRpb25zXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgIFtwb3N0Zml4XT1cInBvc3RmaXhcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJvbkFycm93VXAoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJvbkFycm93RG93bigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0dWlUZXh0ZmllbGRcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAvPlxuICAgIDwvdHVpLXByaW1pdGl2ZS10ZXh0ZmllbGQ+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgICA8dHVpLWRhdGEtbGlzdFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXRpbWVfX2Ryb3Bkb3duXCJcbiAgICAgICAgW3NpemVdPVwiaXRlbVNpemVcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRcIlxuICAgICAgICAgICAgdHVpT3B0aW9uXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXRpbWVfX2l0ZW1cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgPHR1aS1zdmdcbiAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImljb24gYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICBbc3JjXT1cInNyY1wiXG4gICAgPjwvdHVpLXN2Zz5cbiAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCJzaG93TmF0aXZlUGlja2VyXCJcbiAgICAgICAgdHVpVGltZVxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC10aW1lL2lucHV0LXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGltZS9pbnB1dC10aW1lLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osMEJBQTBCLEVBRzFCLFlBQVksRUFDWixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxPQUFPLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBRWxCLDhCQUE4QixHQUlqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7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Y0FBYzs7MEJBRXJCLE1BQU07MkJBQUMsc0JBQXNCOzswQkFFN0IsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxrQkFBa0I7NENBbkNiLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsOEJBQThCO2dCQUl6QyxtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkF3QkYsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkF5RTdCLFVBQVUsTUFLVixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTztnQkF1RmIsYUFBYSxNQWViLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBTFdBWVNfRkFMU0VfSEFORExFUixcbiAgICBUVUlfSVNfSU9TLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVFVJX1NUUklDVF9NQVRDSEVSLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNFbGVtZW50LFxuICAgIHR1aUlzSW5wdXQsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aVB1cmUsXG4gICAgVHVpVGltZSxcbiAgICBUdWlUaW1lTGlrZSxcbiAgICBUdWlUaW1lTW9kZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICB0dWlBc0RhdGFMaXN0SG9zdCxcbiAgICB0dWlBc09wdGlvbkNvbnRlbnQsXG4gICAgVHVpRGF0YUxpc3RIb3N0LFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1RVSV9TRUxFQ1RfT1BUSU9OfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvc2VsZWN0LW9wdGlvbic7XG5pbXBvcnQge0ZJWEVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvcHJvdmlkZXJzJztcbmltcG9ydCB7VFVJX1RJTUVfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9USU1FX09QVElPTlMsIFR1aUlucHV0VGltZU9wdGlvbnN9IGZyb20gJy4vaW5wdXQtdGltZS5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtdGltZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRpbWUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGltZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0VGltZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFRpbWVDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0RhdGFMaXN0SG9zdChUdWlJbnB1dFRpbWVDb21wb25lbnQpLFxuICAgICAgICB0dWlBc09wdGlvbkNvbnRlbnQoVFVJX1NFTEVDVF9PUFRJT04pLFxuICAgIF0sXG4gICAgdmlld1Byb3ZpZGVyczogW0ZJWEVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVJdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFRpbWVDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPFR1aVRpbWU+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsIFR1aURhdGFMaXN0SG9zdDxUdWlUaW1lPlxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlUaW1lPiA9IEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBpdGVtczogcmVhZG9ubHkgVHVpVGltZVtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1TaXplOiBUdWlJbnB1dFRpbWVPcHRpb25zWydpdGVtU2l6ZSddID0gdGhpcy5vcHRpb25zLml0ZW1TaXplO1xuXG4gICAgQElucHV0KClcbiAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogVHVpSW5wdXRUaW1lT3B0aW9uc1snbW9kZSddID0gdGhpcy5vcHRpb25zLm1vZGU7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQb3N0Zml4YCBmcm9tIHtAbGluayBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlfSBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwb3N0Zml4OiBUdWlJbnB1dFRpbWVPcHRpb25zWydwb3N0Zml4J10gPSB0aGlzLm9wdGlvbnMucG9zdGZpeDtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9USU1FX1RFWFRTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRpbWVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aVRpbWVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfVElNRV9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0VGltZU9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX01PQklMRSkgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfSVNfSU9TKSBwcml2YXRlIHJlYWRvbmx5IGlzSW9zOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGQgPyB0aGlzLnRleHRmaWVsZC5uYXRpdmVGb2N1c2FibGVFbGVtZW50IDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhIXRoaXMuZmlsdGVyZWQubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBmaWx0ZXJlZCgpOiByZWFkb25seSBUdWlUaW1lW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIodGhpcy5pdGVtcywgdGhpcy5tb2RlLCB0aGlzLmNvbXB1dGVkU2VhcmNoKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd05hdGl2ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubmF0aXZlUGlja2VyICYmXG4gICAgICAgICAgICAoIXRoaXMuaXNJb3MgfHwgKHRoaXMubW9kZSA9PT0gJ0hIOk1NJyAmJiAhdGhpcy5pdGVtcy5sZW5ndGgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVEYXRhbGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlUGlja2VyICYmICF0aGlzLmlzSW9zO1xuICAgIH1cblxuICAgIGdldCBtYXNrT3B0aW9ucygpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1hc2sodGhpcy5tb2RlKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUudG9TdHJpbmcodGhpcy5tb2RlKSA6IHRoaXMubmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkVmFsdWUubGVuZ3RoICE9PSB0aGlzLm1vZGUubGVuZ3RoID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgZ2V0IGlubmVyUHNldWRvRm9jdXNlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBzZXVkb0ZvY3VzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCh0aGlzLm9wZW4gJiYgdGhpcy5jYW5PcGVuKSB8fCB0aGlzLmNvbXB1dGVkRm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBUdWlJbnB1dFRpbWVPcHRpb25zWydpY29uJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRGaWxsZXIkKG1vZGU6IFR1aVRpbWVNb2RlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZVRleHRzJC5waXBlKG1hcCh0ZXh0cyA9PiB0ZXh0c1ttb2RlXSkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSAhIXRoaXMuaXRlbXMubGVuZ3RoO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuZ2V0TWF0Y2godmFsdWUpO1xuXG4gICAgICAgIGlmIChtYXRjaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbWF0Y2g7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IHRoaXMubW9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lID0gVHVpVGltZS5mcm9tU3RyaW5nKHZhbHVlKTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdHJpY3QgPyB0aGlzLmZpbmROZWFyZXN0VGltZUZyb21JdGVtcyh0aW1lKSA6IHRpbWU7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGZvY3VzZWQgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICB0aGlzLm1vZGUgPT09ICdISDpNTSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gVHVpVGltZS5mcm9tU3RyaW5nKHRoaXMubmF0aXZlVmFsdWUpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUuZW5kc1dpdGgoJy4nKSB8fCB0aGlzLm5hdGl2ZVZhbHVlLmVuZHNXaXRoKCc6JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5uYXRpdmVWYWx1ZS5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2Nlc3NBcnJvdyhldmVudCwgMSk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzQXJyb3coZXZlbnQsIC0xKTtcbiAgICB9XG5cbiAgICBoYW5kbGVPcHRpb24oaXRlbTogVHVpVGltZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW07XG4gICAgfVxuXG4gICAgb25PcGVuKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB9XG5cbiAgICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBUdWlUaW1lIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMubmF0aXZlUGlja2VyICYmIHRoaXMuaXNNb2JpbGU7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2sobW9kZTogVHVpVGltZU1vZGUpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHtISCwgTU0sIFNTLCBNU30gPSB0aGlzLm9wdGlvbnMubWF4VmFsdWVzO1xuXG4gICAgICAgIHJldHVybiBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgbW9kZSxcbiAgICAgICAgICAgIHRpbWVTZWdtZW50TWF4VmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgaG91cnM6IEhILFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IE1NLFxuICAgICAgICAgICAgICAgIHNlY29uZHM6IFNTLFxuICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kczogTVMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZmlsdGVyKFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVHVpVGltZVtdLFxuICAgICAgICBtb2RlOiBUdWlUaW1lTW9kZSxcbiAgICAgICAgc2VhcmNoOiBzdHJpbmcsXG4gICAgKTogcmVhZG9ubHkgVHVpVGltZVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0udG9TdHJpbmcobW9kZSkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kTmVhcmVzdFRpbWVGcm9tSXRlbXModmFsdWU6IFR1aVRpbWUpOiBUdWlUaW1lIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICBNYXRoLmFicyhjdXJyZW50LnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKSAtIHZhbHVlLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKSkgPFxuICAgICAgICAgICAgTWF0aC5hYnMocHJldmlvdXMudG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpIC0gdmFsdWUudG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpKVxuICAgICAgICAgICAgICAgID8gY3VycmVudFxuICAgICAgICAgICAgICAgIDogcHJldmlvdXMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXRjaCh2YWx1ZTogc3RyaW5nKTogVHVpVGltZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbmQoaXRlbSA9PiBUVUlfU1RSSUNUX01BVENIRVIoaXRlbSwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NBcnJvdyhldmVudDogRXZlbnQsIHNoaWZ0OiAtMSB8IDEpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3RhcmdldH0gPSBldmVudDtcblxuICAgICAgICBpZiAodGhpcy5yZWFkT25seSB8fCAhdHVpSXNFbGVtZW50KHRhcmdldCkgfHwgIXR1aUlzSW5wdXQodGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgfHwgMDtcblxuICAgICAgICB0aGlzLnNoaWZ0VGltZSh0aGlzLmNhbGN1bGF0ZVNoaWZ0KHNlbGVjdGlvblN0YXJ0LCBzaGlmdCkpO1xuXG4gICAgICAgIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlU2hpZnQoc2VsZWN0aW9uU3RhcnQ6IG51bWJlciwgc2hpZnQ6IG51bWJlcik6IFR1aVRpbWVMaWtlIHtcbiAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0IDw9IDIpIHtcbiAgICAgICAgICAgIHJldHVybiB7aG91cnM6IHNoaWZ0fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA8PSA1KSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbnV0ZXM6IHNoaWZ0fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA8PSA4KSB7XG4gICAgICAgICAgICByZXR1cm4ge3NlY29uZHM6IHNoaWZ0fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7bXM6IHNoaWZ0fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNoaWZ0VGltZShzaGlmdDogVHVpVGltZUxpa2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluY3JlYXNlZFRpbWUgPSB0aGlzLnZhbHVlLnNoaWZ0KHNoaWZ0KTtcblxuICAgICAgICAvLyBNYW51YWwgdXBkYXRlIHNvIHdlIGNhbiBzZXQgY2FyZXQgcG9zaXRpb24gcHJvcGVybHlcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IGluY3JlYXNlZFRpbWUudG9TdHJpbmcodGhpcy5tb2RlKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGluY3JlYXNlZFRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c0lucHV0KHByZXZlbnRTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGx9KTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0LXdyYXBwZXJcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW4gJiYgIW5hdGl2ZURhdGFsaXN0XCJcbiAgICBbY29udGVudF09XCJkcm9wZG93bkNvbnRlbnRcIlxuICAgIFtvcGVuXT1cImNhbk9wZW4gJiYgb3BlblwiXG4gICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuKCRldmVudClcIlxuICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEZpbGxlcl09XCIoZ2V0RmlsbGVyJChtb2RlKSB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW21hc2tpdG9dPVwibWFza09wdGlvbnNcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJpY29uQ29udGVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJjb21wdXRlZFZhbHVlXCJcbiAgICAgICAgW3Bvc3RmaXhdPVwicG9zdGZpeFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uQXJyb3dVcCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uQXJyb3dEb3duKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIC8+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cbjwvdHVpLWhvc3RlZC1kcm9wZG93bj5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Db250ZW50PlxuICAgIDx0dWktZGF0YS1saXN0XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGltZV9fZHJvcGRvd25cIlxuICAgICAgICBbc2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFwiXG4gICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC90dWktZGF0YS1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uQ29udGVudD5cbiAgICA8dHVpLXN2Z1xuICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiaWNvbiBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICA+PC90dWktc3ZnPlxuICAgIDxpbnB1dFxuICAgICAgICAqbmdJZj1cInNob3dOYXRpdmVQaWNrZXJcIlxuICAgICAgICB0dWlUaW1lXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|