@taiga-ui/kit 3.34.0 → 3.35.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-checkbox-block.umd.js +24 -20
- package/bundles/taiga-ui-kit-components-checkbox-block.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js +18 -27
- package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.js +6 -24
- package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-number.umd.js +64 -107
- package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-tag.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-multi-select.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-radio-block.umd.js +18 -17
- package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +17 -29
- package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js +2 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-toggle.umd.js +6 -2
- package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tree.umd.js +5 -2
- package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-constants.umd.js +4 -0
- package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
- package/components/checkbox-block/checkbox-block.component.d.ts +1 -1
- package/components/checkbox-block/checkbox-block.module.d.ts +6 -5
- package/components/checkbox-labeled/checkbox-labeled.component.d.ts +5 -5
- package/components/input-count/input-count.component.d.ts +0 -3
- package/components/input-number/input-number.component.d.ts +7 -8
- package/components/input-number/input-number.module.d.ts +4 -4
- package/components/input-tag/input-tag.component.d.ts +1 -1
- package/components/radio-block/radio-block.component.d.ts +1 -1
- package/components/radio-block/radio-block.module.d.ts +5 -4
- package/components/radio-labeled/radio-labeled.component.d.ts +5 -5
- package/components/toggle/toggle-options.d.ts +4 -0
- package/components/toggle/toggle.component.d.ts +2 -2
- package/components/tree/components/tree/tree.component.d.ts +3 -2
- package/constants/group-class-names.d.ts +4 -0
- package/esm2015/components/checkbox-block/checkbox-block.component.js +7 -6
- package/esm2015/components/checkbox-block/checkbox-block.module.js +6 -2
- package/esm2015/components/checkbox-labeled/checkbox-labeled.component.js +16 -21
- package/esm2015/components/input-count/input-count.component.js +5 -18
- package/esm2015/components/input-number/input-number.component.js +43 -85
- package/esm2015/components/input-number/input-number.module.js +6 -9
- package/esm2015/components/input-tag/input-tag.component.js +2 -2
- package/esm2015/components/multi-select/multi-select.component.js +2 -2
- package/esm2015/components/radio-block/radio-block.component.js +7 -6
- package/esm2015/components/radio-block/radio-block.module.js +5 -4
- package/esm2015/components/radio-labeled/radio-labeled.component.js +16 -24
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -1
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.providers.js +3 -1
- package/esm2015/components/toggle/toggle-options.js +6 -1
- package/esm2015/components/toggle/toggle.component.js +4 -4
- package/esm2015/components/tree/components/tree/tree.component.js +6 -3
- package/esm2015/constants/group-class-names.js +5 -1
- package/fesm2015/taiga-ui-kit-components-checkbox-block.js +11 -6
- package/fesm2015/taiga-ui-kit-components-checkbox-block.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js +15 -20
- package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-count.js +4 -17
- package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-number.js +47 -91
- package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-tag.js +1 -1
- package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-multi-select.js +1 -1
- package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-radio-block.js +10 -8
- package/fesm2015/taiga-ui-kit-components-radio-block.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-radio-labeled.js +15 -23
- package/fesm2015/taiga-ui-kit-components-radio-labeled.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js +3 -2
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-toggle.js +6 -2
- package/fesm2015/taiga-ui-kit-components-toggle.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tree.js +5 -2
- package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
- package/fesm2015/taiga-ui-kit-constants.js +4 -0
- package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
- package/package.json +11 -11
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component,
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
2
2
|
import { NgControl } from '@angular/forms';
|
|
3
3
|
import { AbstractTuiNullableControl, tuiAsControl, tuiAsFocusableItemAccessor, tuiIsNativeFocused, } from '@taiga-ui/cdk';
|
|
4
|
-
import { TUI_CHECKBOX_OPTIONS,
|
|
4
|
+
import { MODE_PROVIDER, TUI_CHECKBOX_OPTIONS, TUI_MODE, } from '@taiga-ui/core';
|
|
5
5
|
import { TuiCheckboxComponent } from '@taiga-ui/kit/components/checkbox';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@taiga-ui/kit/components/checkbox";
|
|
8
8
|
import * as i2 from "@angular/forms";
|
|
9
|
-
import * as i3 from "
|
|
9
|
+
import * as i3 from "rxjs";
|
|
10
10
|
export class TuiCheckboxLabeledComponent extends AbstractTuiNullableControl {
|
|
11
|
-
constructor(control, cdr,
|
|
11
|
+
constructor(control, cdr, mode$, options) {
|
|
12
12
|
super(control, cdr);
|
|
13
|
-
this.
|
|
13
|
+
this.mode$ = mode$;
|
|
14
14
|
this.options = options;
|
|
15
15
|
this.size = this.options.size;
|
|
16
16
|
}
|
|
@@ -20,9 +20,6 @@ export class TuiCheckboxLabeledComponent extends AbstractTuiNullableControl {
|
|
|
20
20
|
get nativeFocusableElement() {
|
|
21
21
|
return this.checkbox ? this.checkbox.nativeFocusableElement : null;
|
|
22
22
|
}
|
|
23
|
-
get hostMode() {
|
|
24
|
-
return this.modeDirective ? this.modeDirective.mode : null;
|
|
25
|
-
}
|
|
26
23
|
onFocused(focused) {
|
|
27
24
|
this.updateFocused(focused);
|
|
28
25
|
}
|
|
@@ -31,10 +28,11 @@ export class TuiCheckboxLabeledComponent extends AbstractTuiNullableControl {
|
|
|
31
28
|
this.value = value;
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
|
-
TuiCheckboxLabeledComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiCheckboxLabeledComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token:
|
|
35
|
-
TuiCheckboxLabeledComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: { size: "size" }, host: {
|
|
31
|
+
TuiCheckboxLabeledComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiCheckboxLabeledComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_MODE }, { token: TUI_CHECKBOX_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
TuiCheckboxLabeledComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: { size: "size" }, host: { listeners: { "$.data-mode.attr": "mode$" }, properties: { "attr.data-size": "size" } }, providers: [
|
|
36
33
|
tuiAsFocusableItemAccessor(TuiCheckboxLabeledComponent),
|
|
37
34
|
tuiAsControl(TuiCheckboxLabeledComponent),
|
|
35
|
+
MODE_PROVIDER,
|
|
38
36
|
], viewQueries: [{ propertyName: "checkbox", first: true, predicate: TuiCheckboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<label class=\"t-wrapper\">\n <tui-checkbox\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [size]=\"size\"\n [(ngModel)]=\"value\"\n (focusedChange)=\"onFocused($event)\"\n ></tui-checkbox>\n <div\n class=\"t-content\"\n [class.t-content_disabled]=\"computedDisabled\"\n >\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [":host{position:relative;display:block;line-height:0}:host._disabled,:host._readonly{pointer-events:none}.t-wrapper{display:inline-flex;max-width:100%;cursor:pointer}:host._disabled .t-wrapper{cursor:default}:host[data-mode=onDark] .t-wrapper{color:var(--tui-text-01-night)}.t-content{font:var(--tui-font-text-s);line-height:1rem;word-wrap:break-word;min-width:0}.t-content_disabled{opacity:var(--tui-disabled-opacity)}:host[data-size=m] .t-content{margin-left:.5rem}:host[data-size=l] .t-content{font:var(--tui-font-text-m);margin-left:.75rem}\n"], components: [{ type: i1.TuiCheckboxComponent, selector: "tui-checkbox", inputs: ["size"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
39
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiCheckboxLabeledComponent, decorators: [{
|
|
40
38
|
type: Component,
|
|
@@ -46,7 +44,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
46
44
|
providers: [
|
|
47
45
|
tuiAsFocusableItemAccessor(TuiCheckboxLabeledComponent),
|
|
48
46
|
tuiAsControl(TuiCheckboxLabeledComponent),
|
|
47
|
+
MODE_PROVIDER,
|
|
49
48
|
],
|
|
49
|
+
host: {
|
|
50
|
+
'($.data-mode.attr)': 'mode$',
|
|
51
|
+
'[attr.data-size]': 'size',
|
|
52
|
+
},
|
|
50
53
|
}]
|
|
51
54
|
}], ctorParameters: function () { return [{ type: i2.NgControl, decorators: [{
|
|
52
55
|
type: Optional
|
|
@@ -58,11 +61,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
58
61
|
}] }, { type: i0.ChangeDetectorRef, decorators: [{
|
|
59
62
|
type: Inject,
|
|
60
63
|
args: [ChangeDetectorRef]
|
|
61
|
-
}] }, { type: i3.
|
|
62
|
-
type: Optional
|
|
63
|
-
}, {
|
|
64
|
+
}] }, { type: i3.Observable, decorators: [{
|
|
64
65
|
type: Inject,
|
|
65
|
-
args: [
|
|
66
|
+
args: [TUI_MODE]
|
|
66
67
|
}] }, { type: undefined, decorators: [{
|
|
67
68
|
type: Inject,
|
|
68
69
|
args: [TUI_CHECKBOX_OPTIONS]
|
|
@@ -71,11 +72,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
71
72
|
args: [TuiCheckboxComponent]
|
|
72
73
|
}], size: [{
|
|
73
74
|
type: Input
|
|
74
|
-
}, {
|
|
75
|
-
type: HostBinding,
|
|
76
|
-
args: ['attr.data-size']
|
|
77
|
-
}], hostMode: [{
|
|
78
|
-
type: HostBinding,
|
|
79
|
-
args: ['attr.data-mode']
|
|
80
75
|
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWxlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9jaGVja2JveC1sYWJlbGVkL2NoZWNrYm94LWxhYmVsZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2hlY2tib3gtbGFiZWxlZC9jaGVja2JveC1sYWJlbGVkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLDBCQUEwQixFQUUxQixrQkFBa0IsR0FFckIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsUUFBUSxHQUlYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBa0J2RSxNQUFNLE9BQU8sMkJBQ1QsU0FBUSwwQkFBbUM7SUFTM0MsWUFJSSxPQUF5QixFQUNFLEdBQXNCLEVBQ3RCLEtBQXVDLEVBRWpELE9BQTJCO1FBRTVDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFKTyxVQUFLLEdBQUwsS0FBSyxDQUFrQztRQUVqRCxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQVZoRCxTQUFJLEdBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFhbkMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGFBQWEsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7O3lIQXRDUSwyQkFBMkIsa0JBYXhCLFNBQVMseUNBRVQsaUJBQWlCLGFBQ2pCLFFBQVEsYUFDUixvQkFBb0I7NkdBakJ2QiwyQkFBMkIseUtBVnpCO1FBQ1AsMEJBQTBCLENBQUMsMkJBQTJCLENBQUM7UUFDdkQsWUFBWSxDQUFDLDJCQUEyQixDQUFDO1FBQ3pDLGFBQWE7S0FDaEIsb0VBVVUsb0JBQW9CLHVFQ2pEbkMsaW9CQXFCQTs0RkR3QmEsMkJBQTJCO2tCQWZ2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQiw2QkFBNkI7d0JBQ3ZELFlBQVksNkJBQTZCO3dCQUN6QyxhQUFhO3FCQUNoQjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0Ysb0JBQW9CLEVBQUUsT0FBTzt3QkFDN0Isa0JBQWtCLEVBQUUsTUFBTTtxQkFDN0I7aUJBQ0o7OzBCQVlRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLG9CQUFvQjs0Q0FaZixRQUFRO3NCQUR4QixTQUFTO3VCQUFDLG9CQUFvQjtnQkFJL0IsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBNT0RFX1BST1ZJREVSLFxuICAgIFRVSV9DSEVDS0JPWF9PUFRJT05TLFxuICAgIFRVSV9NT0RFLFxuICAgIFR1aUJyaWdodG5lc3MsXG4gICAgVHVpQ2hlY2tib3hPcHRpb25zLFxuICAgIFR1aVNpemVMLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUNoZWNrYm94Q29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvY2hlY2tib3gnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktY2hlY2tib3gtbGFiZWxlZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWxhYmVsZWQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3gtbGFiZWxlZC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUNoZWNrYm94TGFiZWxlZENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlDaGVja2JveExhYmVsZWRDb21wb25lbnQpLFxuICAgICAgICBNT0RFX1BST1ZJREVSLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKCQuZGF0YS1tb2RlLmF0dHIpJzogJ21vZGUkJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2hlY2tib3hMYWJlbGVkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxib29sZWFuPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlDaGVja2JveENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrYm94PzogVHVpQ2hlY2tib3hDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFR1aVNpemVMID0gdGhpcy5vcHRpb25zLnNpemU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfTU9ERSkgcmVhZG9ubHkgbW9kZSQ6IE9ic2VydmFibGU8VHVpQnJpZ2h0bmVzcyB8IG51bGw+LFxuICAgICAgICBASW5qZWN0KFRVSV9DSEVDS0JPWF9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUNoZWNrYm94T3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tib3ggPyB0aGlzLmNoZWNrYm94Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlICd2YWx1ZScgc2V0dGVyICovXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwidC13cmFwcGVyXCI+XG4gICAgPHR1aS1jaGVja2JveFxuICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgW3BzZXVkb0ZvY3VzXT1cInBzZXVkb0ZvY3VzXCJcbiAgICAgICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICA+PC90dWktY2hlY2tib3g+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInQtY29udGVudFwiXG4gICAgICAgIFtjbGFzcy50LWNvbnRlbnRfZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2xhYmVsPlxuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
2
2
|
import { NgControl } from '@angular/forms';
|
|
3
|
+
import { maskitoParseNumber } from '@maskito/kit';
|
|
3
4
|
import { AbstractTuiNullableControl, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiIsNativeFocused, tuiIsPresent, } from '@taiga-ui/cdk';
|
|
4
|
-
import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_WATCHED_CONTROLLER,
|
|
5
|
+
import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_WATCHED_CONTROLLER, } from '@taiga-ui/core';
|
|
5
6
|
import { TuiInputNumberComponent } from '@taiga-ui/kit/components/input-number';
|
|
6
7
|
import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
|
|
7
8
|
import { TUI_INPUT_COUNT_OPTIONS } from './input-count-options';
|
|
@@ -76,7 +77,7 @@ export class TuiInputCountComponent extends AbstractTuiNullableControl {
|
|
|
76
77
|
}
|
|
77
78
|
/** @deprecated */
|
|
78
79
|
onValueChange(value) {
|
|
79
|
-
this.value =
|
|
80
|
+
this.value = maskitoParseNumber(value, this.numberFormat.decimalSeparator);
|
|
80
81
|
}
|
|
81
82
|
decreaseValue() {
|
|
82
83
|
if (this.readOnly) {
|
|
@@ -108,22 +109,8 @@ export class TuiInputCountComponent extends AbstractTuiNullableControl {
|
|
|
108
109
|
break;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
set nativeValue(value) {
|
|
112
|
-
if (!this.nativeFocusableElement) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
this.nativeFocusableElement.value = value;
|
|
116
|
-
}
|
|
117
112
|
safeUpdateValue(newValue) {
|
|
118
|
-
|
|
119
|
-
this.value = value;
|
|
120
|
-
this.nativeValue = this.formatNumber(value);
|
|
121
|
-
}
|
|
122
|
-
formatNumber(value) {
|
|
123
|
-
return this.isNotNumber(value) ? '' : tuiFormatNumber(value, this.numberFormat);
|
|
124
|
-
}
|
|
125
|
-
isNotNumber(value) {
|
|
126
|
-
return Number.isNaN(value) || !tuiIsPresent(value);
|
|
113
|
+
this.value = tuiClamp(newValue, this.min, this.max);
|
|
127
114
|
}
|
|
128
115
|
}
|
|
129
116
|
TuiInputCountComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCountComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }, { token: TUI_PLUS_MINUS_TEXTS }, { token: TUI_IS_MOBILE }, { token: TUI_INPUT_COUNT_OPTIONS }, { token: TUI_NUMBER_FORMAT }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -192,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
192
179
|
type: HostBinding,
|
|
193
180
|
args: ['attr.data-size']
|
|
194
181
|
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsYUFBYSxFQUNiLFlBQVksRUFDWiwwQkFBMEIsRUFDMUIsUUFBUSxFQUVSLGtCQUFrQixFQUNsQixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZiw2QkFBNkIsR0FNaEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUkxRCxPQUFPLEVBQUMsdUJBQXVCLEVBQXVCLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFcEY7O0dBRUc7QUFZSCxNQUFNLE9BQU8sc0JBQ1QsU0FBUSwwQkFBa0M7SUEwQjFDLFlBSUksT0FBeUIsRUFDRSxHQUFzQixFQUVoQyxtQkFBMkMsRUFFbkQsV0FBeUMsRUFDVixRQUFpQixFQUVoRCxPQUE2QixFQUVyQixZ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QlEsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsb0JBQW9COzswQkFFM0IsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLGlCQUFpQjs0Q0FuQ1osV0FBVztzQkFEM0IsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBSWxDLElBQUk7c0JBREgsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQXVCRixhQUFhO3NCQURoQixXQUFXO3VCQUFDLHFCQUFxQjtnQkFvQjlCLElBQUk7c0JBRFAsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICB0dWlJc1ByZXNlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICB0dWlGb3JtYXROdW1iZXIsXG4gICAgdHVpTWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIsXG4gICAgVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpSW5wdXROdW1iZXJDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXInO1xuaW1wb3J0IHtUVUlfUExVU19NSU5VU19URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfQ09VTlRfT1BUSU9OUywgVHVpSW5wdXRDb3VudE9wdGlvbnN9IGZyb20gJy4vaW5wdXQtY291bnQtb3B0aW9ucyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBUdWlJbnB1dE51bWJlckNvbXBvbmVudH0gd2l0aCBbc3RlcF0gaW5zdGVhZFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1jb3VudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWNvdW50LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNvdW50LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDb3VudENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpV2l0aE9wdGlvbmFsTWluTWF4PG51bWJlcj4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpSW5wdXROdW1iZXJDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dE51bWJlcj86IFR1aUlucHV0TnVtYmVyQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBzdGVwID0gdGhpcy5vcHRpb25zLnN0ZXA7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbiA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVCdXR0b25zID0gdGhpcy5vcHRpb25zLmhpZGVCdXR0b25zO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIHVzZSBgdHVpVGV4dGZpZWxkUHJlZml4YCBmcm9tIHtAbGluayBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlfSBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwcmVmaXggPSAnJztcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHR1aVRleHRmaWVsZFBvc3RmaXhgIGZyb20ge0BsaW5rIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGV9IGluc3RlYWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHBvc3RmaXggPSB0aGlzLm9wdGlvbnMucG9zdGZpeDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZENvbnRyb2xsZXI6IFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgICAgIEBJbmplY3QoVFVJX1BMVVNfTUlOVVNfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IG1pbnVzVGV4dHMkOiBPYnNlcnZhYmxlPFtzdHJpbmcsIHN0cmluZ10+LFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0NPVU5UX09QVElPTlMpXG4gICAgICAgIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0Q291bnRPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdDogVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNkcik7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5faGlkZS1idXR0b25zJylcbiAgICBnZXQgYnV0dG9uc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlkZUJ1dHRvbnMgfHwgdGhpcy50ZXh0ZmllbGRDb250cm9sbGVyLmFwcGVhcmFuY2UgPT09ICd0YWJsZSc7XG4gICAgfVxuXG4gICAgZ2V0IGljb25VcCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnMudXA7XG4gICAgfVxuXG4gICAgZ2V0IGljb25Eb3duKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy5kb3duO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlucHV0TnVtYmVyIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMuaW5wdXROdW1iZXIubmF0aXZlRm9jdXNhYmxlRWxlbWVudDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgICBnZXQgc2l6ZSgpOiBUdWlTaXplTCB8IFR1aVNpemVTIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkQ29udHJvbGxlci5zaXplO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pbnVzQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pbnRlcmFjdGl2ZSB8fCAodHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUgPD0gdGhpcy5taW4pO1xuICAgIH1cblxuICAgIGdldCBwbHVzQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pbnRlcmFjdGl2ZSB8fCAodHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUgPj0gdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCAhdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIFRPRE86IGRyb3AgaW4gdjQuMCBhcyB1bnVzZWQgbWV0aG9kXG4gICAgICovXG4gICAgb25JbnB1dE51bWJlckNoYW5nZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0dWlNYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcihcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApIC0gdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmNyZWFzZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAodGhpcy52YWx1ZSB8fCAwKSArIHRoaXMuc3RlcDtcblxuICAgICAgICB0aGlzLnNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYWZlVXBkYXRlVmFsdWUobmV3VmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHR1aUNsYW1wKG5ld1ZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTm90TnVtYmVyKHZhbHVlKSA/ICcnIDogdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB0aGlzLm51bWJlckZvcm1hdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05vdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZhbHVlIGlzIG51bGwge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHZhbHVlKSB8fCAhdHVpSXNQcmVzZW50KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8dHVpLWlucHV0LW51bWJlclxuICAgIGRlY2ltYWw9XCJuZXZlclwiXG4gICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgW3BzZXVkb0ZvY3VzXT1cInBzZXVkb0ZvY3VzXCJcbiAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtwc2V1ZG9JbnZhbGlkXT1cInBzZXVkb0ludmFsaWRcIlxuICAgIFtwc2V1ZG9BY3RpdmVdPVwicHNldWRvQWN0aXZlXCJcbiAgICBbZm9jdXNhYmxlXT1cImZvY3VzYWJsZVwiXG4gICAgW21pbl09XCJtaW5cIlxuICAgIFttYXhdPVwibWF4XCJcbiAgICBbcHJlZml4XT1cInByZWZpeFwiXG4gICAgW3Bvc3RmaXhdPVwicG9zdGZpeFwiXG4gICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgKGZvY3VzZWRDaGFuZ2UpPVwib25Gb2N1c2VkKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgID48L25nLWNvbnRlbnQ+XG48L3R1aS1pbnB1dC1udW1iZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1dHRvbnNIaWRkZW5cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWludXNUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInQtYnV0dG9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNvdW50X19wbHVzLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1idXR0b24gdC1idXR0b25fcGx1c1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvblVwXCJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJvcHRpb25zLmFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0ZXh0c1swXVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBsdXNCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkJ1dHRvbk1vdXNlRG93bigkZXZlbnQsIHBsdXNCdXR0b25EaXNhYmxlZClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbmNyZWFzZVZhbHVlKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNvdW50X19taW51cy1idXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uIHQtYnV0dG9uX21pbnVzXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJpY29uRG93blwiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwib3B0aW9ucy5hcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWludXNCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInRleHRzWzFdXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VEb3duKCRldmVudCwgbWludXNCdXR0b25EaXNhYmxlZClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWNyZWFzZVZhbHVlKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsRUFFUixrQkFBa0IsRUFDbEIsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsaUJBQWlCLEVBQ2pCLGdDQUFnQyxHQU1uQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBSTFELE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUVwRjs7R0FFRztBQVlILE1BQU0sT0FBTyxzQkFDVCxTQUFRLDBCQUFrQztJQTBCMUMsWUFJSSxPQUF5QixFQUNFLEdBQXNCLEVBRWhDLG1CQUEyQyxFQUVuRCxXQUF5QyxFQUNWLFFBQWlC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IENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7bWFza2l0b1BhcnNlTnVtYmVyfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICB0dWlDbGFtcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aUlzUHJlc2VudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9OVU1CRVJfRk9STUFULFxuICAgIFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUlucHV0TnVtYmVyQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7VFVJX1BMVVNfTUlOVVNfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgVHVpSW5wdXROdW1iZXJDb21wb25lbnR9IHdpdGggW3N0ZXBdIGluc3RlYWRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY291bnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jb3VudC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jb3VudC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0Q291bnRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPG51bWJlcj5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxudW1iZXI+LCBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXROdW1iZXI/OiBUdWlJbnB1dE51bWJlckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwO1xuXG4gICAgQElucHV0KClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBtYXggPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBoaWRlQnV0dG9ucyA9IHRoaXMub3B0aW9ucy5oaWRlQnV0dG9ucztcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHR1aVRleHRmaWVsZFByZWZpeGAgZnJvbSB7QGxpbmsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZX0gaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQb3N0Zml4YCBmcm9tIHtAbGluayBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlfSBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLnBvc3RmaXg7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRDb250cm9sbGVyOiBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgICAgICBASW5qZWN0KFRVSV9QTFVTX01JTlVTX1RFWFRTKVxuICAgICAgICByZWFkb25seSBtaW51c1RleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DT1VOVF9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dENvdW50T3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQ6IFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGUtYnV0dG9ucycpXG4gICAgZ2V0IGJ1dHRvbnNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVCdXR0b25zIHx8IHRoaXMudGV4dGZpZWxkQ29udHJvbGxlci5hcHBlYXJhbmNlID09PSAndGFibGUnO1xuICAgIH1cblxuICAgIGdldCBpY29uVXAoKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLnVwO1xuICAgIH1cblxuICAgIGdldCBpY29uRG93bigpOiBQb2x5bW9ycGhldXNDb250ZW50PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnMuZG93bjtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pbnB1dE51bWJlciB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmlucHV0TnVtYmVyLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZENvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBUT0RPOiBkcm9wIGluIHY0LjAgYXMgdW51c2VkIG1ldGhvZFxuICAgICAqL1xuICAgIG9uSW5wdXROdW1iZXJDaGFuZ2UodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gbWFza2l0b1BhcnNlTnVtYmVyKHZhbHVlLCB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICBkZWNyZWFzZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAodGhpcy52YWx1ZSB8fCAwKSAtIHRoaXMuc3RlcDtcblxuICAgICAgICB0aGlzLnNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgaW5jcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgKyB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBjYXNlICdVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBjYXNlICdEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRlY3JlYXNlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHR1aUNsYW1wKG5ld1ZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cbn1cbiIsIjx0dWktaW5wdXQtbnVtYmVyXG4gICAgZGVjaW1hbD1cIm5ldmVyXCJcbiAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICBbcHNldWRvRm9jdXNdPVwicHNldWRvRm9jdXNcIlxuICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgW3BzZXVkb0ludmFsaWRdPVwicHNldWRvSW52YWxpZFwiXG4gICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICBbbWluXT1cIm1pblwiXG4gICAgW21heF09XCJtYXhcIlxuICAgIFtwcmVmaXhdPVwicHJlZml4XCJcbiAgICBbcG9zdGZpeF09XCJwb3N0Zml4XCJcbiAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbbmF0aXZlSWRdPVwibmF0aXZlSWRcIlxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoZm9jdXNlZENoYW5nZSk9XCJvbkZvY3VzZWQoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50XG4gICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJpbnB1dFwiXG4gICAgPjwvbmctY29udGVudD5cbjwvdHVpLWlucHV0LW51bWJlcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhYnV0dG9uc0hpZGRlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtaW51c1RleHRzJCB8IGFzeW5jIGFzIHRleHRzXCI+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidC1idXR0b25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY291bnRfX3BsdXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvbiB0LWJ1dHRvbl9wbHVzXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJpY29uVXBcIlxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIm9wdGlvbnMuYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInRleHRzWzBdXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGx1c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VEb3duKCRldmVudCwgcGx1c0J1dHRvbkRpc2FibGVkKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlYXNlVmFsdWUoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY291bnRfX21pbnVzLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1idXR0b24gdC1idXR0b25fbWludXNcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25Eb3duXCJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJvcHRpb25zLmFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtaW51c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGV4dHNbMV1cIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25CdXR0b25Nb3VzZURvd24oJGV2ZW50LCBtaW51c0J1dHRvbkRpc2FibGVkKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlY3JlYXNlVmFsdWUoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
1
2
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
2
3
|
import { NgControl } from '@angular/forms';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
4
|
+
import { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';
|
|
5
|
+
import { AbstractTuiNullableControl, CHAR_HYPHEN, CHAR_MINUS, EMPTY_QUERY, TUI_IS_IOS, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiPure, } from '@taiga-ui/cdk';
|
|
6
|
+
import { TUI_NUMBER_FORMAT, tuiFormatNumber, tuiGetFractionPartPadded, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
|
|
5
7
|
import { PolymorpheusOutletDirective } from '@tinkoff/ng-polymorpheus';
|
|
6
8
|
import { TUI_INPUT_NUMBER_OPTIONS } from './input-number-options';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "@taiga-ui/core";
|
|
9
11
|
import * as i2 from "@taiga-ui/kit/directives";
|
|
10
|
-
import * as i3 from "@angular
|
|
11
|
-
import * as i4 from "@
|
|
12
|
-
import * as i5 from "@
|
|
12
|
+
import * as i3 from "@maskito/angular";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
import * as i5 from "@tinkoff/ng-polymorpheus";
|
|
13
15
|
import * as i6 from "@angular/forms";
|
|
14
16
|
const DEFAULT_MAX_LENGTH = 18;
|
|
15
17
|
export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
@@ -29,19 +31,6 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
29
31
|
/** @deprecated use `tuiTextfieldPostfix` from {@link TuiTextfieldControllerModule} instead */
|
|
30
32
|
this.postfix = '';
|
|
31
33
|
this.polymorpheusValueContent = EMPTY_QUERY;
|
|
32
|
-
this.mask = (allowNegative, decimal, decimalLimit, nativeFocusableElement) => ({
|
|
33
|
-
mask: tuiCreateNumberMask({
|
|
34
|
-
allowNegative,
|
|
35
|
-
decimalLimit,
|
|
36
|
-
allowDecimal: decimal !== 'never',
|
|
37
|
-
requireDecimal: decimal === 'always',
|
|
38
|
-
decimalSymbol: this.numberFormat.decimalSeparator,
|
|
39
|
-
thousandSymbol: this.numberFormat.thousandSeparator,
|
|
40
|
-
autoCorrectDecimalSymbol: tuiEnableAutoCorrectDecimalSymbol(this.numberFormat),
|
|
41
|
-
}),
|
|
42
|
-
pipe: tuiCreateAutoCorrectedNumberPipe(decimal === 'always' ? decimalLimit : 0, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator, nativeFocusableElement, allowNegative, this.isIOS),
|
|
43
|
-
guide: false,
|
|
44
|
-
});
|
|
45
34
|
}
|
|
46
35
|
get nativeFocusableElement() {
|
|
47
36
|
return !this.primitiveTextfield || this.computedDisabled
|
|
@@ -69,13 +58,10 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
69
58
|
return DEFAULT_MAX_LENGTH + precision + takeThousand;
|
|
70
59
|
}
|
|
71
60
|
get formattedValue() {
|
|
72
|
-
return this.getFormattedValue(this.value || 0);
|
|
61
|
+
return this.value !== null ? this.getFormattedValue(this.value || 0) : '';
|
|
73
62
|
}
|
|
74
63
|
get computedValue() {
|
|
75
|
-
|
|
76
|
-
return this.nativeValue;
|
|
77
|
-
}
|
|
78
|
-
return this.value === null ? '' : this.formattedValue;
|
|
64
|
+
return this.focused ? this.nativeValue : this.formattedValue;
|
|
79
65
|
}
|
|
80
66
|
get canDecrement() {
|
|
81
67
|
return this.interactive && (this.value || 0) > this.min;
|
|
@@ -83,6 +69,9 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
83
69
|
get canIncrement() {
|
|
84
70
|
return this.interactive && (this.value || 0) < this.max;
|
|
85
71
|
}
|
|
72
|
+
get mask() {
|
|
73
|
+
return this.calculateMask(this.precision, this.decimal, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator, this.min, this.max);
|
|
74
|
+
}
|
|
86
75
|
onArrow(step) {
|
|
87
76
|
if (!step) {
|
|
88
77
|
return;
|
|
@@ -90,51 +79,21 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
90
79
|
this.value = tuiClamp((this.value || 0) + step, this.min, this.max);
|
|
91
80
|
this.nativeValue = this.formattedValue;
|
|
92
81
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const decimal = this.nativeValue.split(this.numberFormat.decimalSeparator)[1] || '';
|
|
96
|
-
const { nativeFocusableElement } = this;
|
|
97
|
-
if (decimal.length < this.precision ||
|
|
98
|
-
!nativeFocusableElement ||
|
|
99
|
-
!nativeFocusableElement.selectionStart ||
|
|
100
|
-
this.nativeValue[nativeFocusableElement.selectionStart] !== '0') {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
event.preventDefault();
|
|
104
|
-
nativeFocusableElement.selectionStart++;
|
|
105
|
-
}
|
|
106
|
-
onValueChange(value) {
|
|
82
|
+
onValueChange(nativeValue) {
|
|
83
|
+
const parsedValue = maskitoParseNumber(nativeValue, this.numberFormat.decimalSeparator);
|
|
107
84
|
this.unfinishedValue = null;
|
|
108
|
-
if (
|
|
85
|
+
if (Number.isNaN(parsedValue)) {
|
|
109
86
|
this.value = null;
|
|
110
87
|
return;
|
|
111
88
|
}
|
|
112
89
|
if (this.isNativeValueNotFinished) {
|
|
113
|
-
this.unfinishedValue =
|
|
90
|
+
this.unfinishedValue = nativeValue;
|
|
114
91
|
return;
|
|
115
92
|
}
|
|
116
|
-
|
|
117
|
-
if (capped === null || Number.isNaN(capped)) {
|
|
93
|
+
if (parsedValue < this.min || parsedValue > this.max) {
|
|
118
94
|
return;
|
|
119
95
|
}
|
|
120
|
-
this.value =
|
|
121
|
-
if (capped !==
|
|
122
|
-
tuiMaskedNumberStringToNumber(value, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)) {
|
|
123
|
-
this.nativeValue = this.formattedValue;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
onKeyDown(event) {
|
|
127
|
-
if (!TUI_DECIMAL_SYMBOLS.includes(event.key)) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (this.decimal === 'never') {
|
|
131
|
-
event.preventDefault();
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
if (this.nativeValue.includes(this.numberFormat.decimalSeparator)) {
|
|
135
|
-
event.preventDefault();
|
|
136
|
-
this.setCaretAfterComma();
|
|
137
|
-
}
|
|
96
|
+
this.value = parsedValue;
|
|
138
97
|
}
|
|
139
98
|
onFocused(focused) {
|
|
140
99
|
this.updateFocused(focused);
|
|
@@ -142,14 +101,14 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
142
101
|
return;
|
|
143
102
|
}
|
|
144
103
|
const nativeNumberValue = this.unfinishedValue
|
|
145
|
-
?
|
|
104
|
+
? maskitoParseNumber(this.unfinishedValue, this.numberFormat.decimalSeparator)
|
|
146
105
|
: this.nativeNumberValue;
|
|
147
106
|
this.unfinishedValue = null;
|
|
148
107
|
if (Number.isNaN(nativeNumberValue)) {
|
|
149
108
|
this.clear();
|
|
150
109
|
return;
|
|
151
110
|
}
|
|
152
|
-
this.value =
|
|
111
|
+
this.value = nativeNumberValue;
|
|
153
112
|
this.nativeValue = this.formattedValue;
|
|
154
113
|
}
|
|
155
114
|
getFormattedValue(value) {
|
|
@@ -164,7 +123,7 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
164
123
|
if (this.focused && this.decimal !== 'always') {
|
|
165
124
|
decimalLimit = fraction.length;
|
|
166
125
|
}
|
|
167
|
-
return tuiFormatNumber(value, Object.assign(Object.assign({}, this.numberFormat), { decimalLimit }));
|
|
126
|
+
return tuiFormatNumber(value, Object.assign(Object.assign({}, this.numberFormat), { decimalLimit })).replace(CHAR_HYPHEN, CHAR_MINUS);
|
|
168
127
|
}
|
|
169
128
|
get isNativeValueNotFinished() {
|
|
170
129
|
const nativeNumberValue = this.nativeNumberValue;
|
|
@@ -182,34 +141,36 @@ export class TuiInputNumberComponent extends AbstractTuiNullableControl {
|
|
|
182
141
|
this.primitiveTextfield.value = value;
|
|
183
142
|
this.nativeFocusableElement.value = value;
|
|
184
143
|
}
|
|
144
|
+
writeValue(value) {
|
|
145
|
+
super.writeValue(value);
|
|
146
|
+
this.nativeValue = this.formattedValue;
|
|
147
|
+
}
|
|
185
148
|
get nativeNumberValue() {
|
|
186
|
-
return
|
|
149
|
+
return maskitoParseNumber(this.nativeValue, this.numberFormat.decimalSeparator);
|
|
150
|
+
}
|
|
151
|
+
calculateMask(precision, decimalMode, decimalSeparator, thousandSeparator, min, max) {
|
|
152
|
+
return maskitoNumberOptionsGenerator({
|
|
153
|
+
decimalSeparator,
|
|
154
|
+
thousandSeparator,
|
|
155
|
+
min,
|
|
156
|
+
max,
|
|
157
|
+
precision: decimalMode === 'never' ? 0 : precision,
|
|
158
|
+
decimalZeroPadding: decimalMode === 'always',
|
|
159
|
+
});
|
|
187
160
|
}
|
|
188
161
|
clear() {
|
|
189
162
|
this.nativeValue = '';
|
|
190
163
|
this.value = null;
|
|
191
164
|
}
|
|
192
|
-
absoluteCapInputValue(inputValue) {
|
|
193
|
-
const value = tuiMaskedNumberStringToNumber(inputValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator);
|
|
194
|
-
const capped = value < 0
|
|
195
|
-
? Math.max(Math.max(this.min, Number.MIN_SAFE_INTEGER), value)
|
|
196
|
-
: Math.min(value, Math.min(this.max, Number.MAX_SAFE_INTEGER));
|
|
197
|
-
const ineligibleValue = Number.isNaN(capped) || capped < this.min || capped > this.max;
|
|
198
|
-
return ineligibleValue ? null : capped;
|
|
199
|
-
}
|
|
200
|
-
setCaretAfterComma() {
|
|
201
|
-
if (!this.nativeFocusableElement) {
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
const afterCommaPosition = this.nativeValue.length - this.precision;
|
|
205
|
-
this.nativeFocusableElement.setSelectionRange(afterCommaPosition, afterCommaPosition);
|
|
206
|
-
}
|
|
207
165
|
}
|
|
208
166
|
TuiInputNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputNumberComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_INPUT_NUMBER_OPTIONS }, { token: TUI_NUMBER_FORMAT }, { token: TUI_IS_IOS }], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
-
TuiInputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputNumberComponent, selector: "tui-input-number", inputs: { min: "min", max: "max", decimal: "decimal", precision: "precision", step: "step", prefix: "prefix", postfix: "postfix" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)"
|
|
167
|
+
TuiInputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputNumberComponent, selector: "tui-input-number", inputs: { min: "min", max: "max", decimal: "decimal", precision: "precision", step: "step", prefix: "prefix", postfix: "postfix" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" } }, providers: [
|
|
210
168
|
tuiAsFocusableItemAccessor(TuiInputNumberComponent),
|
|
211
169
|
tuiAsControl(TuiInputNumberComponent),
|
|
212
|
-
], queries: [{ propertyName: "polymorpheusValueContent", predicate: PolymorpheusOutletDirective, descendants: true }], viewQueries: [{ propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n #textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [
|
|
170
|
+
], queries: [{ propertyName: "polymorpheusValueContent", predicate: PolymorpheusOutletDirective, descendants: true }], viewQueries: [{ propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n #textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"mask\"\n [value]=\"computedValue\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [focusable]=\"focusable\"\n (valueChange)=\"onValueChange($event)\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n <div\n *ngIf=\"polymorpheusValueContent.length\"\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n</tui-primitive-textfield>\n\n<section\n *ngIf=\"step\"\n class=\"t-buttons\"\n>\n <button\n tuiIconButton\n type=\"button\"\n size=\"s\"\n class=\"t-button\"\n [icon]=\"options.icons.up\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [focusable]=\"false\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n (click.prevent)=\"onArrow(step)\"\n >\n +\n </button>\n <button\n tuiIconButton\n type=\"button\"\n size=\"s\"\n class=\"t-button\"\n [icon]=\"options.icons.down\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [focusable]=\"false\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n (click.prevent)=\"onArrow(-step)\"\n >\n -\n </button>\n</section>\n\n<ng-container *ngIf=\"polymorpheusValueContent.changes | async\"></ng-container>\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\"></ng-content>\n</ng-template>\n", styles: [":host{display:flex;border-radius:var(--tui-radius-m);text-align:left}.t-textfield{flex:1;max-width:100%;border-radius:inherit;text-align:inherit}.t-textfield:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.t-value-content{width:100%}.t-buttons{display:flex;flex-direction:column;align-items:stretch;margin-left:.125rem}[data-size=s]+.t-buttons{flex-direction:row-reverse}[data-size=s]+.t-buttons .t-button:first-child{margin:0 0 0 .125rem;border-radius:0 var(--tui-radius-m) var(--tui-radius-m) 0}[data-size=s]+.t-buttons .t-button:last-child{border-radius:0}[data-size=m]+.t-buttons .t-button{width:calc(var(--tui-height-m) * .75)}[data-size=l]+.t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}.t-button{display:flex;flex:1;height:auto}.t-button:first-child{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-button:last-child{border-radius:0 0 var(--tui-radius-m)}\n"], components: [{ type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], directives: [{ type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i2.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
171
|
+
__decorate([
|
|
172
|
+
tuiPure
|
|
173
|
+
], TuiInputNumberComponent.prototype, "calculateMask", null);
|
|
213
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputNumberComponent, decorators: [{
|
|
214
175
|
type: Component,
|
|
215
176
|
args: [{
|
|
@@ -267,8 +228,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
267
228
|
}, {
|
|
268
229
|
type: HostListener,
|
|
269
230
|
args: ['keydown.arrowUp', ['step']]
|
|
270
|
-
}],
|
|
271
|
-
type: HostListener,
|
|
272
|
-
args: ['keydown.0', ['$event']]
|
|
273
|
-
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUVSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLFVBQVUsRUFDVixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsR0FJWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixnQ0FBZ0MsRUFDaEMsbUJBQW1CLEVBRW5CLGlDQUFpQyxFQUNqQyxlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFFN0IsOEJBQThCLEdBRWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFckUsT0FBTyxFQUFDLHdCQUF3QixFQUF3QixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUV2RixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQVk5QixNQUFNLE9BQU8sdUJBQ1QsU0FBUSwwQkFBa0M7SUFrQzFDLFlBSUksT0FBeUIsRUFFekIsR0FBc0IsRUFFYixPQUE4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QkFBMkIsQ0FBQztvQkFDeEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUCwwQkFBMEIseUJBQXlCO3dCQUNuRCxZQUFZLHlCQUF5QjtxQkFDeEM7aUJBQ0o7OzBCQXFDUSxRQUFROzswQkFDUixJQUFJOzswQkFDSixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsd0JBQXdCOzswQkFFL0IsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLFVBQVU7NENBekNMLGtCQUFrQjtzQkFEbEMsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBTXpDLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFJRyx3QkFBd0I7c0JBRGhDLGVBQWU7dUJBQUMsMkJBQTJCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQTBFakUsT0FBTztzQkFGTixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFZekMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUVUlfSVNfSU9TLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICB0dWlDbGFtcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpSW5wdXRNb2RlLFxuICAgIFR1aU1hcHBlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9ERUNJTUFMX1NZTUJPTFMsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgdHVpQ3JlYXRlQXV0b0NvcnJlY3RlZE51bWJlclBpcGUsXG4gICAgdHVpQ3JlYXRlTnVtYmVyTWFzayxcbiAgICBUdWlEZWNpbWFsLFxuICAgIHR1aUVuYWJsZUF1dG9Db3JyZWN0RGVjaW1hbFN5bWJvbCxcbiAgICB0dWlGb3JtYXROdW1iZXIsXG4gICAgdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkLFxuICAgIHR1aU1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5LFxuICAgIHR1aU1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlUZXh0TWFza09wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0RGlyZWN0aXZlfSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUywgVHVpSW5wdXROdW1iZXJPcHRpb25zfSBmcm9tICcuL2lucHV0LW51bWJlci1vcHRpb25zJztcblxuY29uc3QgREVGQVVMVF9NQVhfTEVOR1RIID0gMTg7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXROdW1iZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPG51bWJlcj5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSB1bmZpbmlzaGVkVmFsdWU6IHN0cmluZyB8IG51bGwgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluID0gdGhpcy5vcHRpb25zLm1pbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4ID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgZGVjaW1hbCA9IHRoaXMub3B0aW9ucy5kZWNpbWFsO1xuXG4gICAgQElucHV0KClcbiAgICBwcmVjaXNpb24gPSB0aGlzLm9wdGlvbnMucHJlY2lzaW9uO1xuXG4gICAgQElucHV0KClcbiAgICBzdGVwID0gdGhpcy5vcHRpb25zLnN0ZXA7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQcmVmaXhgIGZyb20ge0BsaW5rIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGV9IGluc3RlYWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHByZWZpeCA9ICcnO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIHVzZSBgdHVpVGV4dGZpZWxkUG9zdGZpeGAgZnJvbSB7QGxpbmsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZX0gaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcG9zdGZpeCA9ICcnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQb2x5bW9ycGhldXNPdXRsZXREaXJlY3RpdmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gICAgcmVhZG9ubHkgcG9seW1vcnBoZXVzVmFsdWVDb250ZW50OiBRdWVyeUxpc3Q8dW5rbm93bj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUylcbiAgICAgICAgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXROdW1iZXJPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdDogVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX0lPUykgcHJpdmF0ZSByZWFkb25seSBpc0lPUzogYm9vbGVhbixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgfHwgdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgJiYgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBnZXQgaXNOZWdhdGl2ZUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA8IDA7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0TW9kZSgpOiBUdWlJbnB1dE1vZGUge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLmlzTmVnYXRpdmVBbGxvd2VkKSB7XG4gICAgICAgICAgICAvLyBpUGhvbmUgZG9lcyBub3QgaGF2ZSBtaW51cyBzaWduIGlmIGlucHV0TW9kZSBpcyBlcXVhbCB0byAnbnVtZXJpYycgLyAnZGVjaW1hbCdcbiAgICAgICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsID09PSAnbmV2ZXInID8gJ251bWVyaWMnIDogJ2RlY2ltYWwnO1xuICAgIH1cblxuICAgIGdldCBjYWxjdWxhdGVkTWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbCAhPT0gJ25ldmVyJyAmJlxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5pbmNsdWRlcyh0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gZGVjaW1hbFBhcnQgPyBNYXRoLm1pbih0aGlzLnByZWNpc2lvbiArIDEsIDIwKSA6IDA7XG4gICAgICAgIGNvbnN0IHRha2VUaG91c2FuZCA9IHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLnJlcGVhdCg1KS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTUFYX0xFTkdUSCArIHByZWNpc2lvbiArIHRha2VUaG91c2FuZDtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkVmFsdWUodGhpcy52YWx1ZSB8fCAwKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBudWxsID8gJycgOiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIGdldCBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICh0aGlzLnZhbHVlIHx8IDApID4gdGhpcy5taW47XG4gICAgfVxuXG4gICAgZ2V0IGNhbkluY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJhY3RpdmUgJiYgKHRoaXMudmFsdWUgfHwgMCkgPCB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93RG93bicsIFsnLXN0ZXAnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93VXAnLCBbJ3N0ZXAnXSlcbiAgICBvbkFycm93KHN0ZXA6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzdGVwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdHVpQ2xhbXAoKHRoaXMudmFsdWUgfHwgMCkgKyBzdGVwLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBSZXZpZXcgaWYgaXQncyBzdGlsbCBuZWNlc3Nhcnkgd2l0aCBtYXNraXRvXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi4wJywgWyckZXZlbnQnXSlcbiAgICBvblplcm8oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVjaW1hbCA9XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IpWzFdIHx8ICcnO1xuICAgICAgICBjb25zdCB7bmF0aXZlRm9jdXNhYmxlRWxlbWVudH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRlY2ltYWwubGVuZ3RoIDwgdGhpcy5wcmVjaXNpb24gfHxcbiAgICAgICAgICAgICFuYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8XG4gICAgICAgICAgICAhbmF0aXZlRm9jdXNhYmxlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZVtuYXRpdmVGb2N1c2FibGVFbGVtZW50LnNlbGVjdGlvblN0YXJ0XSAhPT0gJzAnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmF0aXZlRm9jdXNhYmxlRWxlbWVudC5zZWxlY3Rpb25TdGFydCsrO1xuICAgIH1cblxuICAgIG1hc2s6IFR1aU1hcHBlcjxib29sZWFuLCBUdWlUZXh0TWFza09wdGlvbnM+ID0gKFxuICAgICAgICBhbGxvd05lZ2F0aXZlOiBib29sZWFuLFxuICAgICAgICBkZWNpbWFsOiBUdWlEZWNpbWFsLFxuICAgICAgICBkZWNpbWFsTGltaXQ6IG51bWJlcixcbiAgICAgICAgbmF0aXZlRm9jdXNhYmxlRWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IG51bGwsXG4gICAgKSA9PiAoe1xuICAgICAgICBtYXNrOiB0dWlDcmVhdGVOdW1iZXJNYXNrKHtcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmUsXG4gICAgICAgICAgICBkZWNpbWFsTGltaXQsXG4gICAgICAgICAgICBhbGxvd0RlY2ltYWw6IGRlY2ltYWwgIT09ICduZXZlcicsXG4gICAgICAgICAgICByZXF1aXJlRGVjaW1hbDogZGVjaW1hbCA9PT0gJ2Fsd2F5cycsXG4gICAgICAgICAgICBkZWNpbWFsU3ltYm9sOiB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhvdXNhbmRTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sOiB0dWlFbmFibGVBdXRvQ29ycmVjdERlY2ltYWxTeW1ib2woXG4gICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQsXG4gICAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgcGlwZTogdHVpQ3JlYXRlQXV0b0NvcnJlY3RlZE51bWJlclBpcGUoXG4gICAgICAgICAgICBkZWNpbWFsID09PSAnYWx3YXlzJyA/IGRlY2ltYWxMaW1pdCA6IDAsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICBuYXRpdmVGb2N1c2FibGVFbGVtZW50LFxuICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZSxcbiAgICAgICAgICAgIHRoaXMuaXNJT1MsXG4gICAgICAgICksXG4gICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKHR1aU1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTmF0aXZlVmFsdWVOb3RGaW5pc2hlZCkge1xuICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5hYnNvbHV0ZUNhcElucHV0VmFsdWUodmFsdWUpO1xuXG4gICAgICAgIGlmIChjYXBwZWQgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKGNhcHBlZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBjYXBwZWQ7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY2FwcGVkICE9PVxuICAgICAgICAgICAgdHVpTWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIVRVSV9ERUNJTUFMX1NZTUJPTFMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbCA9PT0gJ25ldmVyJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUuaW5jbHVkZXModGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcikpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNldENhcmV0QWZ0ZXJDb21tYSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IHRoaXMudW5maW5pc2hlZFZhbHVlXG4gICAgICAgICAgICA/IHR1aU1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5uYXRpdmVOdW1iZXJWYWx1ZTtcblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihuYXRpdmVOdW1iZXJWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGgubWluKHRoaXMubWF4LCBNYXRoLm1heCh0aGlzLm1pbiwgbmF0aXZlTnVtYmVyVmFsdWUpKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybWF0dGVkVmFsdWUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGFic1ZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuICAgICAgICBjb25zdCBoYXNGcmFjdGlvbiA9IGFic1ZhbHVlICUgMSA+IDA7XG4gICAgICAgIGxldCBkZWNpbWFsTGltaXQgPVxuICAgICAgICAgICAgdGhpcy5kZWNpbWFsID09PSAnYWx3YXlzJyB8fCAoaGFzRnJhY3Rpb24gJiYgdGhpcy5kZWNpbWFsICE9PSAnbmV2ZXInKVxuICAgICAgICAgICAgICAgID8gdGhpcy5wcmVjaXNpb25cbiAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgY29uc3QgZnJhY3Rpb24gPSBoYXNGcmFjdGlvblxuICAgICAgICAgICAgPyB0dWlHZXRGcmFjdGlvblBhcnRQYWRkZWQodmFsdWUsIHRoaXMucHJlY2lzaW9uKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmIHRoaXMuZGVjaW1hbCAhPT0gJ2Fsd2F5cycpIHtcbiAgICAgICAgICAgIGRlY2ltYWxMaW1pdCA9IGZyYWN0aW9uLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0dWlGb3JtYXROdW1iZXIodmFsdWUsIHtcbiAgICAgICAgICAgIC4uLnRoaXMubnVtYmVyRm9ybWF0LFxuICAgICAgICAgICAgZGVjaW1hbExpbWl0LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc05hdGl2ZVZhbHVlTm90RmluaXNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZU51bWJlclZhbHVlID0gdGhpcy5uYXRpdmVOdW1iZXJWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmF0aXZlTnVtYmVyVmFsdWUgPCAwXG4gICAgICAgICAgICA/IG5hdGl2ZU51bWJlclZhbHVlID4gdGhpcy5tYXhcbiAgICAgICAgICAgIDogbmF0aXZlTnVtYmVyVmFsdWUgPCB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA/IHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlTnVtYmVyVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR1aU1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWJzb2x1dGVDYXBJbnB1dFZhbHVlKGlucHV0VmFsdWU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHR1aU1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2FwcGVkID1cbiAgICAgICAgICAgIHZhbHVlIDwgMFxuICAgICAgICAgICAgICAgID8gTWF0aC5tYXgoTWF0aC5tYXgodGhpcy5taW4sIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBNYXRoLm1pbih2YWx1ZSwgTWF0aC5taW4odGhpcy5tYXgsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSk7XG4gICAgICAgIGNvbnN0IGluZWxpZ2libGVWYWx1ZSA9XG4gICAgICAgICAgICBOdW1iZXIuaXNOYU4oY2FwcGVkKSB8fCBjYXBwZWQgPCB0aGlzLm1pbiB8fCBjYXBwZWQgPiB0aGlzLm1heDtcblxuICAgICAgICByZXR1cm4gaW5lbGlnaWJsZVZhbHVlID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENhcmV0QWZ0ZXJDb21tYSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFmdGVyQ29tbWFQb3NpdGlvbiA9IHRoaXMubmF0aXZlVmFsdWUubGVuZ3RoIC0gdGhpcy5wcmVjaXNpb247XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgICAgYWZ0ZXJDb21tYVBvc2l0aW9uLFxuICAgICAgICAgICAgYWZ0ZXJDb21tYVBvc2l0aW9uLFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICN0ZXh0ZmllbGRcbiAgICB0dWlWYWx1ZUFjY2Vzc29yXG4gICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICBbcHNldWRvRm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbdGV4dE1hc2tdPVwiaXNOZWdhdGl2ZUFsbG93ZWQgfCB0dWlNYXBwZXIgOiBtYXNrIDogZGVjaW1hbCA6IHByZWNpc2lvbiA6IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnRcIlxuICAgIFt2YWx1ZV09XCJjb21wdXRlZFZhbHVlXCJcbiAgICBbcHJlZml4XT1cInByZWZpeFwiXG4gICAgW3Bvc3RmaXhdPVwicG9zdGZpeFwiXG4gICAgW2ZvY3VzYWJsZV09XCJmb2N1c2FibGVcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50XG4gICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJpbnB1dFwiXG4gICAgPjwvbmctY29udGVudD5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwicG9seW1vcnBoZXVzVmFsdWVDb250ZW50Lmxlbmd0aFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgIGNsYXNzPVwidC12YWx1ZS1jb250ZW50XCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cInZhbHVlQ29udGVudCBhcyB0ZXh0XCI+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuPHNlY3Rpb25cbiAgICAqbmdJZj1cInN0ZXBcIlxuICAgIGNsYXNzPVwidC1idXR0b25zXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgIFtpY29uXT1cIm9wdGlvbnMuaWNvbnMudXBcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGQuYXBwZWFyYW5jZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50XCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJuYXRpdmVGb2N1c2FibGVFbGVtZW50Py5mb2N1cygpXCJcbiAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25BcnJvdyhzdGVwKVwiXG4gICAgPlxuICAgICAgICArXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGNsYXNzPVwidC1idXR0b25cIlxuICAgICAgICBbaWNvbl09XCJvcHRpb25zLmljb25zLmRvd25cIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGQuYXBwZWFyYW5jZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50XCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJuYXRpdmVGb2N1c2FibGVFbGVtZW50Py5mb2N1cygpXCJcbiAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25BcnJvdygtc3RlcClcIlxuICAgID5cbiAgICAgICAgLVxuICAgIDwvYnV0dG9uPlxuPC9zZWN0aW9uPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwicG9seW1vcnBoZXVzVmFsdWVDb250ZW50LmNoYW5nZXMgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3ZhbHVlQ29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ0dWlDb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
231
|
+
}], calculateMask: [] } });
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUMsNkJBQTZCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUNILDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxFQUNaLDBCQUEwQixFQUMxQixRQUFRLEVBR1IsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsZUFBZSxFQUNmLHdCQUF3QixFQUV4Qiw4QkFBOEIsR0FDakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRSxPQUFPLEVBQUMsd0JBQXdCLEVBQXdCLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBRXZGLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBWTlCLE1BQU0sT0FBTyx1QkFDVCxTQUFRLDBCQUFrQztJQWtDMUMsWUFJSSxPQUF5QixFQUV6QixHQUFzQixF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LDJCQUEyQixDQUFDO29CQUN4QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQix5QkFBeUI7d0JBQ25ELFlBQVkseUJBQXlCO3FCQUN4QztpQkFDSjs7MEJBcUNRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUUvQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsVUFBVTs0Q0F6Q0wsa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLDhCQUE4QjtnQkFNekMsR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUlHLHdCQUF3QjtzQkFEaEMsZUFBZTt1QkFBQywyQkFBMkIsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBaUZqRSxPQUFPO3NCQUZOLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDO2dCQWlIakMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLCBtYXNraXRvUGFyc2VOdW1iZXJ9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIENIQVJfSFlQSEVOLFxuICAgIENIQVJfTUlOVVMsXG4gICAgRU1QVFlfUVVFUlksXG4gICAgVFVJX0lTX0lPUyxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIFR1aUlucHV0TW9kZSxcbiAgICB0dWlQdXJlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVHVpRGVjaW1hbCxcbiAgICB0dWlGb3JtYXROdW1iZXIsXG4gICAgdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXREaXJlY3RpdmV9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TLCBUdWlJbnB1dE51bWJlck9wdGlvbnN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLW9wdGlvbnMnO1xuXG5jb25zdCBERUZBVUxUX01BWF9MRU5HVEggPSAxODtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHVuZmluaXNoZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBtYXggPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBkZWNpbWFsID0gdGhpcy5vcHRpb25zLmRlY2ltYWw7XG5cbiAgICBASW5wdXQoKVxuICAgIHByZWNpc2lvbiA9IHRoaXMub3B0aW9ucy5wcmVjaXNpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHR1aVRleHRmaWVsZFByZWZpeGAgZnJvbSB7QGxpbmsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZX0gaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQb3N0Zml4YCBmcm9tIHtAbGluayBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlfSBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwb3N0Zml4ID0gJyc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFBvbHltb3JwaGV1c091dGxldERpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICByZWFkb25seSBwb2x5bW9ycGhldXNWYWx1ZUNvbnRlbnQ6IFF1ZXJ5TGlzdDx1bmtub3duPiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dE51bWJlck9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbnVtYmVyRm9ybWF0OiBUdWlOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICAgICAgQEluamVjdChUVUlfSVNfSU9TKSBwcml2YXRlIHJlYWRvbmx5IGlzSU9TOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCAmJiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBpc05lZ2F0aXZlQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluIDwgMDtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRNb2RlKCk6IFR1aUlucHV0TW9kZSB7XG4gICAgICAgIGlmICh0aGlzLmlzSU9TICYmIHRoaXMuaXNOZWdhdGl2ZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIC8vIGlQaG9uZSBkb2VzIG5vdCBoYXZlIG1pbnVzIHNpZ24gaWYgaW5wdXRNb2RlIGlzIGVxdWFsIHRvICdudW1lcmljJyAvICdkZWNpbWFsJ1xuICAgICAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWwgPT09ICduZXZlcicgPyAnbnVtZXJpYycgOiAnZGVjaW1hbCc7XG4gICAgfVxuXG4gICAgZ2V0IGNhbGN1bGF0ZWRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBhcnQgPVxuICAgICAgICAgICAgdGhpcy5kZWNpbWFsICE9PSAnbmV2ZXInICYmXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLmluY2x1ZGVzKHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBkZWNpbWFsUGFydCA/IE1hdGgubWluKHRoaXMucHJlY2lzaW9uICsgMSwgMjApIDogMDtcbiAgICAgICAgY29uc3QgdGFrZVRob3VzYW5kID0gdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IucmVwZWF0KDUpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gREVGQVVMVF9NQVhfTEVOR1RIICsgcHJlY2lzaW9uICsgdGFrZVRob3VzYW5kO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSAhPT0gbnVsbCA/IHRoaXMuZ2V0Rm9ybWF0dGVkVmFsdWUodGhpcy52YWx1ZSB8fCAwKSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWQgPyB0aGlzLm5hdGl2ZVZhbHVlIDogdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgY2FuRGVjcmVtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAodGhpcy52YWx1ZSB8fCAwKSA+IHRoaXMubWluO1xuICAgIH1cblxuICAgIGdldCBjYW5JbmNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICh0aGlzLnZhbHVlIHx8IDApIDwgdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgZ2V0IG1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgdGhpcy5wcmVjaXNpb24sXG4gICAgICAgICAgICB0aGlzLmRlY2ltYWwsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dEb3duJywgWyctc3RlcCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dVcCcsIFsnc3RlcCddKVxuICAgIG9uQXJyb3coc3RlcDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSB0dWlDbGFtcCgodGhpcy52YWx1ZSB8fCAwKSArIHN0ZXAsIHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UobmF0aXZlVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihwYXJzZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc05hdGl2ZVZhbHVlTm90RmluaXNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbmF0aXZlVmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZWRWYWx1ZSA8IHRoaXMubWluIHx8IHBhcnNlZFZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hdGl2ZU51bWJlclZhbHVlID0gdGhpcy51bmZpbmlzaGVkVmFsdWVcbiAgICAgICAgICAgID8gbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMudW5maW5pc2hlZFZhbHVlLCB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yKVxuICAgICAgICAgICAgOiB0aGlzLm5hdGl2ZU51bWJlclZhbHVlO1xuXG4gICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbnVsbDtcblxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG5hdGl2ZU51bWJlclZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gbmF0aXZlTnVtYmVyVmFsdWU7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIGdldEZvcm1hdHRlZFZhbHVlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhYnNWYWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcbiAgICAgICAgY29uc3QgaGFzRnJhY3Rpb24gPSBhYnNWYWx1ZSAlIDEgPiAwO1xuICAgICAgICBsZXQgZGVjaW1hbExpbWl0ID1cbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbCA9PT0gJ2Fsd2F5cycgfHwgKGhhc0ZyYWN0aW9uICYmIHRoaXMuZGVjaW1hbCAhPT0gJ25ldmVyJylcbiAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgIGNvbnN0IGZyYWN0aW9uID0gaGFzRnJhY3Rpb25cbiAgICAgICAgICAgID8gdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkKHZhbHVlLCB0aGlzLnByZWNpc2lvbilcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiB0aGlzLmRlY2ltYWwgIT09ICdhbHdheXMnKSB7XG4gICAgICAgICAgICBkZWNpbWFsTGltaXQgPSBmcmFjdGlvbi5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAuLi50aGlzLm51bWJlckZvcm1hdCxcbiAgICAgICAgICAgIGRlY2ltYWxMaW1pdCxcbiAgICAgICAgfSkucmVwbGFjZShDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNOYXRpdmVWYWx1ZU5vdEZpbmlzaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IHRoaXMubmF0aXZlTnVtYmVyVmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5hdGl2ZU51bWJlclZhbHVlIDwgMFxuICAgICAgICAgICAgPyBuYXRpdmVOdW1iZXJWYWx1ZSA+IHRoaXMubWF4XG4gICAgICAgICAgICA6IG5hdGl2ZU51bWJlclZhbHVlIDwgdGhpcy5taW47XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8ICF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZU51bWJlclZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBtYXNraXRvUGFyc2VOdW1iZXIodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2soXG4gICAgICAgIHByZWNpc2lvbjogbnVtYmVyLFxuICAgICAgICBkZWNpbWFsTW9kZTogVHVpRGVjaW1hbCxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICBtaW46IG51bWJlcixcbiAgICAgICAgbWF4OiBudW1iZXIsXG4gICAgKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgcHJlY2lzaW9uOiBkZWNpbWFsTW9kZSA9PT0gJ25ldmVyJyA/IDAgOiBwcmVjaXNpb24sXG4gICAgICAgICAgICBkZWNpbWFsWmVyb1BhZGRpbmc6IGRlY2ltYWxNb2RlID09PSAnYWx3YXlzJyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB9XG59XG4iLCI8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAjdGV4dGZpZWxkXG4gICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgIGNsYXNzPVwidC10ZXh0ZmllbGRcIlxuICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgW3BzZXVkb0ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgW21hc2tpdG9dPVwibWFza1wiXG4gICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgIFtwcmVmaXhdPVwicHJlZml4XCJcbiAgICBbcG9zdGZpeF09XCJwb3N0Zml4XCJcbiAgICBbZm9jdXNhYmxlXT1cImZvY3VzYWJsZVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGZvY3VzZWRDaGFuZ2UpPVwib25Gb2N1c2VkKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgID48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cInBvbHltb3JwaGV1c1ZhbHVlQ29udGVudC5sZW5ndGhcIlxuICAgICAgICBuZ1Byb2plY3RBcz1cInR1aUNvbnRlbnRcIlxuICAgICAgICBjbGFzcz1cInQtdmFsdWUtY29udGVudFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJ2YWx1ZUNvbnRlbnQgYXMgdGV4dFwiPlxuICAgICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvdHVpLXByaW1pdGl2ZS10ZXh0ZmllbGQ+XG5cbjxzZWN0aW9uXG4gICAgKm5nSWY9XCJzdGVwXCJcbiAgICBjbGFzcz1cInQtYnV0dG9uc1wiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGNsYXNzPVwidC1idXR0b25cIlxuICAgICAgICBbaWNvbl09XCJvcHRpb25zLmljb25zLnVwXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwidGV4dGZpZWxkLmFwcGVhcmFuY2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudFwiXG4gICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwibmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uZm9jdXMoKVwiXG4gICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uQXJyb3coc3RlcClcIlxuICAgID5cbiAgICAgICAgK1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgW2ljb25dPVwib3B0aW9ucy5pY29ucy5kb3duXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwidGV4dGZpZWxkLmFwcGVhcmFuY2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudFwiXG4gICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwibmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uZm9jdXMoKVwiXG4gICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uQXJyb3coLXN0ZXApXCJcbiAgICA+XG4gICAgICAgIC1cbiAgICA8L2J1dHRvbj5cbjwvc2VjdGlvbj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbHltb3JwaGV1c1ZhbHVlQ29udGVudC5jaGFuZ2VzIHwgYXN5bmNcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN2YWx1ZUNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidHVpQ29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|