@ardium-ui/ui 3.3.0 → 3.4.2

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.
Files changed (32) hide show
  1. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +1 -1
  2. package/esm2022/lib/_internal/selectable-list-component.mjs +1 -1
  3. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +1 -1
  4. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +3 -3
  5. package/esm2022/lib/file-inputs/file-input-base.mjs +1 -1
  6. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +84 -18
  7. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +4 -1
  8. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +31 -7
  9. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +5 -4
  10. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  11. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  12. package/esm2022/lib/radio/radio/radio.component.mjs +1 -1
  13. package/esm2022/lib/radio/radio/radio.defaults.mjs +1 -1
  14. package/esm2022/lib/radio/radio-group.component.mjs +1 -1
  15. package/esm2022/lib/segment/segment.component.mjs +3 -3
  16. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +1 -1
  17. package/fesm2022/ardium-ui-ui.mjs +121 -28
  18. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  19. package/lib/inputs/digit-input/digit-input.component.d.ts +16 -4
  20. package/lib/inputs/digit-input/digit-input.defaults.d.ts +4 -1
  21. package/lib/inputs/digit-input/digit-input.model.d.ts +2 -0
  22. package/lib/inputs/digit-input/digit-input.module.d.ts +2 -1
  23. package/lib/inputs/digit-input/digit-input.types.d.ts +3 -1
  24. package/lib/inputs/digit-input/digit-input.utils.d.ts +2 -0
  25. package/lib/slider/range-slider/range-slider.component.d.ts +1 -1
  26. package/package.json +1 -1
  27. package/prebuilt-themes/default/inputs/digit-input.css +1 -0
  28. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
  29. package/themes/default/inputs/digit-input.scss +1 -0
  30. package/themes/default/inputs/file-input.scss +79 -79
  31. package/themes/default/inputs/input.scss +45 -45
  32. package/themes/default/inputs/simple-input.scss +11 -11
@@ -1,4 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, Inject, Input, ViewEncapsulation, computed, effect, forwardRef, input, output, viewChildren, } from '@angular/core';
1
+ import { AutofillMonitor } from '@angular/cdk/text-field';
2
+ import { ChangeDetectionStrategy, Component, Inject, Input, ViewEncapsulation, computed, effect, forwardRef, inject, input, output, signal, viewChildren, } from '@angular/core';
2
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
4
  import { coerceBooleanProperty } from '@ardium-ui/devkit';
4
5
  import { _FormFieldComponentBase } from '../../_internal/form-field-component';
@@ -9,8 +10,15 @@ import * as i1 from "@angular/common";
9
10
  export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
10
11
  constructor(defaults) {
11
12
  super(defaults);
13
+ this._autoFillMonitor = inject(AutofillMonitor);
12
14
  //! inputs ref
13
15
  this.inputs = viewChildren('input');
16
+ this.inputAttrs = input(this._DEFAULTS.inputAttrs);
17
+ //! auto-fill
18
+ this.autoFillParseFn = input(this._DEFAULTS.autoFillParseFn);
19
+ this.isAutofilled = signal(false);
20
+ this._wasAutofillValueRead = signal(false);
21
+ this._autoFillSubs = [];
14
22
  //! data model
15
23
  this.model = new DigitInputModel(this);
16
24
  //! appearance
@@ -23,12 +31,14 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
23
31
  `ard-variant-${this.variant()}`,
24
32
  `ard-shape-${this.shape()}`,
25
33
  this.compact() ? 'ard-compact' : '',
34
+ this.isAutofilled() ? 'ard-autofilled' : '',
26
35
  ].join(' '));
27
36
  //! model access points
28
37
  this.config = input.required({
29
38
  transform: v => this.model.setConfig(v),
30
39
  });
31
40
  this.configArrayData = this.model.configArrayData;
41
+ this.transform = input(this._DEFAULTS.transform);
32
42
  this._oldConfigArrayDataLength = -1;
33
43
  this.configArrayDataEffect = effect(() => {
34
44
  if (this.configArrayData().length === this._oldConfigArrayDataLength)
@@ -52,6 +62,43 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
52
62
  this.focusIndexEvent = output({ alias: 'focusIndex' });
53
63
  this.blurIndexEvent = output({ alias: 'blurIndex' });
54
64
  }
65
+ _setInputAttributes() {
66
+ const inputs = this.inputs();
67
+ for (const input of inputs) {
68
+ const inputEl = input.nativeElement;
69
+ const attributes = {
70
+ autocorrect: 'off',
71
+ autocapitalize: 'off',
72
+ autocomplete: 'off',
73
+ ...this.inputAttrs(),
74
+ };
75
+ for (const key of Object.keys(attributes)) {
76
+ inputEl.setAttribute(key, attributes[key]);
77
+ }
78
+ }
79
+ }
80
+ _subscribeToAutoFillOnInputs() {
81
+ const inputs = this.inputs();
82
+ for (const input of inputs) {
83
+ const sub = this._autoFillMonitor.monitor(input).subscribe(event => {
84
+ this.isAutofilled.set(event.isAutofilled);
85
+ });
86
+ this._autoFillSubs.push(sub);
87
+ }
88
+ }
89
+ _unsubscribeFromAutoFill() {
90
+ const inputs = this.inputs();
91
+ for (const input of inputs) {
92
+ this._autoFillMonitor.stopMonitoring(input);
93
+ }
94
+ for (const sub of this._autoFillSubs) {
95
+ sub.unsubscribe();
96
+ }
97
+ }
98
+ ngOnDestroy() {
99
+ super.ngOnDestroy();
100
+ this._unsubscribeFromAutoFill();
101
+ }
55
102
  ngOnInit() {
56
103
  super.ngOnInit();
57
104
  this._oldConfigArrayDataLength = this.configArrayData().length;
@@ -74,6 +121,8 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
74
121
  if (this._valueBeforeViewInit) {
75
122
  this._writeValue(this._valueBeforeViewInit);
76
123
  }
124
+ this._setInputAttributes();
125
+ this._subscribeToAutoFillOnInputs();
77
126
  }
78
127
  set value(v) {
79
128
  this.writeValue(v);
@@ -85,28 +134,44 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
85
134
  event.preventDefault();
86
135
  if (!value)
87
136
  return;
88
- const maxLength = this.inputs().length - index;
137
+ this._handleMultiDigitChange(value, index);
138
+ }
139
+ onInput(event, index) {
140
+ const value = event.target.value;
141
+ if (this.isAutofilled()) {
142
+ if (!this._wasAutofillValueRead()) {
143
+ this._wasAutofillValueRead.set(true);
144
+ setTimeout(() => {
145
+ this._wasAutofillValueRead.set(false);
146
+ const parsedValue = this.autoFillParseFn()(value);
147
+ this._handleMultiDigitChange(parsedValue, 0);
148
+ }, 0);
149
+ }
150
+ return;
151
+ }
152
+ const wasValidCharacter = this._updateSingleInputValue(value, index);
153
+ if (!wasValidCharacter)
154
+ return;
155
+ this.focusByIndex(index + 1);
156
+ }
157
+ _handleMultiDigitChange(value, startIndex) {
158
+ const maxLength = this.inputs().length - startIndex;
89
159
  value
90
160
  .slice(0, maxLength)
91
161
  .split('')
92
162
  .forEach((char, i) => {
93
- this.model.validateInputAndSetValue(char, index + i);
163
+ this.model.resetInputValue(startIndex + i);
164
+ this.model.validateInputAndSetValue(char, startIndex + i);
94
165
  });
95
- this.focusByIndex(index - 1 + Math.min(value.length, maxLength));
166
+ this.focusByIndex(startIndex - 1 + Math.min(value.length, maxLength));
96
167
  this._emitChange();
97
168
  }
98
- onInput(event, index) {
99
- const changeSuccessful = this._updateSingleInputValue(event.target.value, index);
100
- if (!changeSuccessful)
101
- return;
102
- this.focusByIndex(index + 1);
103
- }
104
169
  _updateSingleInputValue(value, index) {
105
170
  const changeResult = this.model.validateInputAndSetValue(value, index);
106
- if (!changeResult?.wasChanged)
107
- return false;
108
- this._emitChange();
109
- return true;
171
+ if (changeResult?.wasChanged) {
172
+ this._emitChange();
173
+ }
174
+ return changeResult?.wasValidChar ?? false;
110
175
  }
111
176
  focusByIndex(index, tryFocusingNext, direction) {
112
177
  if (index < 0 || index >= this.inputs().length)
@@ -126,6 +191,7 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
126
191
  //focus, blur, change
127
192
  onFocusMaster(event, index) {
128
193
  this.focusIndexEvent.emit(index);
194
+ event.target.setSelectionRange(0, 1);
129
195
  this.onFocus(event);
130
196
  }
131
197
  onBlurMaster(event, index) {
@@ -164,7 +230,7 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
164
230
  }
165
231
  }
166
232
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputComponent, deps: [{ token: ARD_DIGIT_INPUT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, outputControlValueAccessorOnFinish: { classPropertyName: "outputControlValueAccessorOnFinish", publicName: "outputControlValueAccessorOnFinish", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, autoFillParseFn: { classPropertyName: "autoFillParseFn", publicName: "autoFillParseFn", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, transform: { classPropertyName: "transform", publicName: "transform", isSignal: true, isRequired: false, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, outputControlValueAccessorOnFinish: { classPropertyName: "outputControlValueAccessorOnFinish", publicName: "outputControlValueAccessorOnFinish", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
168
234
  {
169
235
  provide: NG_VALUE_ACCESSOR,
170
236
  useExisting: forwardRef(() => ArdiumDigitInputComponent),
@@ -174,7 +240,7 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
174
240
  provide: _FormFieldComponentBase,
175
241
  useExisting: ArdiumDigitInputComponent,
176
242
  },
177
- ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n <input\r\n #input\r\n type=\"text\"\r\n class=\"ard-digit-input__static-input\"\r\n data-ard-static\r\n autocomplete=\"off\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n [value]=\"data.char\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-digit-input__static-input{position:absolute;opacity:0;appearance:none;pointer-events:none;width:0;height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
243
+ ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n <input\r\n #input\r\n type=\"text\"\r\n class=\"ard-digit-input__static-input\"\r\n data-ard-static\r\n autocomplete=\"off\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n [value]=\"data.char\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-digit-input__static-input{position:absolute;opacity:0;appearance:none;pointer-events:none;width:0;height:0}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
178
244
  }
179
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputComponent, decorators: [{
180
246
  type: Component,
@@ -188,11 +254,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
188
254
  provide: _FormFieldComponentBase,
189
255
  useExisting: ArdiumDigitInputComponent,
190
256
  },
191
- ], template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n <input\r\n #input\r\n type=\"text\"\r\n class=\"ard-digit-input__static-input\"\r\n data-ard-static\r\n autocomplete=\"off\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n [value]=\"data.char\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-digit-input__static-input{position:absolute;opacity:0;appearance:none;pointer-events:none;width:0;height:0}\n"] }]
257
+ ], template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n <input\r\n #input\r\n type=\"text\"\r\n class=\"ard-digit-input__static-input\"\r\n data-ard-static\r\n autocomplete=\"off\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n [value]=\"data.char\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-digit-input__static-input{position:absolute;opacity:0;appearance:none;pointer-events:none;width:0;height:0}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"] }]
192
258
  }], ctorParameters: () => [{ type: undefined, decorators: [{
193
259
  type: Inject,
194
260
  args: [ARD_DIGIT_INPUT_DEFAULTS]
195
261
  }] }], propDecorators: { value: [{
196
262
  type: Input
197
263
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCdEQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsdUJBQXVCO0lBSS9CLFlBQThDLFFBQStCO1FBQzNFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdsQixjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFdEUsY0FBYztRQUNHLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUFHLEtBQUssQ0FBd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMs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QUFDOytHQXpMVSx5QkFBeUIsa0JBS2hCLHdCQUF3QjttR0FMakMseUJBQXlCLDJ3Q0FaekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsV0FBVyxFQUFFLHlCQUF5QjthQUN2QztTQUNGLHFKQ3pDSCw2N0NBK0NBOzs0RkRKYSx5QkFBeUI7a0JBbEJyQyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxXQUFXLDJCQUEyQjt5QkFDdkM7cUJBQ0Y7OzBCQU9ZLE1BQU07MkJBQUMsd0JBQXdCO3lDQTZFeEMsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIHZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCBBcmREaWdpdElucHV0RGVmYXVsdHMgfSBmcm9tICcuL2RpZ2l0LWlucHV0LmRlZmF1bHRzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5tb2RlbCc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRDb25maWcsIERpZ2l0SW5wdXRTaGFwZSB9IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1kaWdpdC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZVxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxyXG57XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERpZ2l0SW5wdXREZWZhdWx0cztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZERpZ2l0SW5wdXREZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGlucHV0cyByZWZcclxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XHJcblxyXG4gIC8vISBkYXRhIG1vZGVsXHJcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGlucHV0PEZvcm1FbGVtZW50QXBwZWFyYW5jZT4odGhpcy5fREVGQVVMVFMuYXBwZWFyYW5jZSk7XHJcbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4odGhpcy5fREVGQVVMVFMudmFyaWFudCk7XHJcbiAgcmVhZG9ubHkgc2hhcGUgPSBpbnB1dDxEaWdpdElucHV0U2hhcGU+KHRoaXMuX0RFRkFVTFRTLnNoYXBlKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+XHJcbiAgICBbXHJcbiAgICAgIGBhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZSgpfWAsXHJcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXHJcbiAgICAgIGBhcmQtc2hhcGUtJHt0aGlzLnNoYXBlKCl9YCxcclxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXHJcbiAgICBdLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIC8vISBtb2RlbCBhY2Nlc3MgcG9pbnRzXHJcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8dm9pZCwgRGlnaXRJbnB1dENvbmZpZz4oe1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IHRoaXMubW9kZWwuc2V0Q29uZmlnKHYpLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGNvbmZpZ0FycmF5RGF0YSA9IHRoaXMubW9kZWwuY29uZmlnQXJyYXlEYXRhO1xyXG5cclxuICBwcml2YXRlIF9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSAtMTtcclxuICByZWFkb25seSBjb25maWdBcnJheURhdGFFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoID09PSB0aGlzLl9vbGRDb25maWdBcnJheURhdGFMZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSB0aGlzLmNvbmZpZ0FycmF5RGF0YSgpLmxlbmd0aDtcclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICB9KTtcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLm1vZGVsLmlzRGVmaW5lZEF0SW5kZXgoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxyXG4gIHByaXZhdGUgX3ZhbHVlQmVmb3JlVmlld0luaXQ/OiBhbnk7XHJcbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fd2FzVmlld0luaXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVCZWZvcmVWaWV3SW5pdCA9IHY7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2FzVmlld0luaXQgPSBmYWxzZTtcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl93YXNWaWV3SW5pdCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuX3ZhbHVlQmVmb3JlVmlld0luaXQpIHtcclxuICAgICAgdGhpcy5fd3JpdGVWYWx1ZSh0aGlzLl92YWx1ZUJlZm9yZVZpZXdJbml0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcclxuICByZWFkb25seSBvdXRwdXRBc1N0cmluZyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMub3V0cHV0QXNTdHJpbmcsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgb3V0cHV0Q29udHJvbFZhbHVlQWNjZXNzb3JPbkZpbmlzaCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xyXG5cclxuICByZWFkb25seSBlbWl0dGFibGVWYWx1ZSA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlKCk7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBldmVudCBlbWl0dGVyc1xyXG4gIHJlYWRvbmx5IGZpbmlzaGVkVmFsdWUgPSBvdXRwdXQ8c3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsPigpO1xyXG5cclxuICByZWFkb25seSBmb2N1c0luZGV4RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPih7IGFsaWFzOiAnZm9jdXNJbmRleCcgfSk7XHJcbiAgcmVhZG9ubHkgYmx1ckluZGV4RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPih7IGFsaWFzOiAnYmx1ckluZGV4JyB9KTtcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuaW5wdXRzKCkubGVuZ3RoIC0gaW5kZXg7XHJcbiAgICB2YWx1ZVxyXG4gICAgICAuc2xpY2UoMCwgbWF4TGVuZ3RoKVxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoY2hhciwgaW5kZXggKyBpKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xyXG5cclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICB9XHJcbiAgb25JbnB1dChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNoYW5nZVN1Y2Nlc3NmdWwgPSB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsIGluZGV4KTtcclxuICAgIGlmICghY2hhbmdlU3VjY2Vzc2Z1bCkgcmV0dXJuO1xyXG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGFuZ2VSZXN1bHQgPSB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xyXG5cclxuICAgIGlmICghY2hhbmdlUmVzdWx0Py53YXNDaGFuZ2VkKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbjtcclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlciwgdHJ5Rm9jdXNpbmdOZXh0OiBib29sZWFuLCBkaXJlY3Rpb246IDEgfCAtMSk6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmlucHV0cygpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChuZXh0RWwuZ2V0QXR0cmlidXRlKCdkYXRhLWFyZC1zdGF0aWMnKSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAoZGlyZWN0aW9uID8/IDEpKTtcclxuICAgIH1cclxuICAgIG5leHRFbC5mb2N1cygpO1xyXG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIGRpcmVjdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xyXG4gIH1cclxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcclxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzSW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XHJcbiAgfVxyXG4gIG9uQmx1ck1hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5ibHVySW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcclxuICAgIGlmICghdGhpcy5vdXRwdXRDb250cm9sVmFsdWVBY2Nlc3Nvck9uRmluaXNoKCkgfHwgdGhpcy5tb2RlbC5pc1ZhbHVlRnVsbCgpKSB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcclxuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSwgdHJ1ZSwgKzEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnSG9tZSc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoMCwgdHJ1ZSwgMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdFbmQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XHJcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgnJywgaW5kZXgpO1xyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuICBbY2xhc3MuYXJkLWhhcy1lcnJvcl09XCJoYXNFcnJvcigpXCJcclxuICBbY2xhc3MuYXJkLWlzLXN1Y2Nlc3NdPVwiaXNTdWNjZXNzKClcIlxyXG4+XHJcbiAgQGZvciAoZGF0YSBvZiBjb25maWdBcnJheURhdGEoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIlxyXG4gICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faXRlbS13aXRoLWlucHV0XT1cImRhdGEudHlwZSA9PT0gJ2lucHV0J1wiXHJcbiAgPlxyXG4gICAgQGlmIChkYXRhLnR5cGUgPT09ICdpbnB1dCcpIHtcclxuICAgIDxpbnB1dFxyXG4gICAgICAjaW5wdXRcclxuICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLnBsYWNlaG9sZGVyXCJcclxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LXJlYWRvbmx5XT1cImRhdGEucmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pbnB1dC1lbXB0eV09XCJpc0lucHV0RW1wdHkoZGF0YS5pbmRleCEpXCJcclxuICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgIC8+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpY1wiPlxyXG4gICAgICB7eyBkYXRhLmNoYXIgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNpbnB1dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19zdGF0aWMtaW5wdXRcIlxyXG4gICAgICBkYXRhLWFyZC1zdGF0aWNcclxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgIFt2YWx1ZV09XCJkYXRhLmNoYXJcIlxyXG4gICAgLz5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCdEQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsdUJBQXVCO0lBSS9CLFlBQThDLFFBQStCO1FBQzNFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU1RCxjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFN0QsZUFBVSxHQUFHLEtB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LEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsV0FBVywyQkFBMkI7eUJBQ3ZDO3FCQUNGOzswQkFPWSxNQUFNOzJCQUFDLHdCQUF3Qjt5Q0F3SXhDLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dG9maWxsTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIHZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUywgQXJkRGlnaXRJbnB1dERlZmF1bHRzIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0QXV0b0ZpbGxQYXJzZUZuLCBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0U2hhcGUsIERpZ2l0SW5wdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGlnaXQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudFxyXG4gIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2VcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEaWdpdElucHV0TW9kZWxIb3N0LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERpZ2l0SW5wdXREZWZhdWx0cztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZERpZ2l0SW5wdXREZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b0ZpbGxNb25pdG9yID0gaW5qZWN0KEF1dG9maWxsTW9uaXRvcik7XHJcblxyXG4gIC8vISBpbnB1dHMgcmVmXHJcbiAgcmVhZG9ubHkgaW5wdXRzID0gdmlld0NoaWxkcmVuPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdpbnB1dCcpO1xyXG5cclxuICByZWFkb25seSBpbnB1dEF0dHJzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4odGhpcy5fREVGQVVMVFMuaW5wdXRBdHRycyk7XHJcblxyXG4gIHByaXZhdGUgX3NldElucHV0QXR0cmlidXRlcygpIHtcclxuICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuaW5wdXRzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGlucHV0cykge1xyXG4gICAgICBjb25zdCBpbnB1dEVsID0gaW5wdXQubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgICBhdXRvY29ycmVjdDogJ29mZicsXHJcbiAgICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxyXG4gICAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXHJcbiAgICAgICAgLi4udGhpcy5pbnB1dEF0dHJzKCksXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKSkge1xyXG4gICAgICAgIGlucHV0RWwuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8hIGF1dG8tZmlsbFxyXG4gIHJlYWRvbmx5IGF1dG9GaWxsUGFyc2VGbiA9IGlucHV0PERpZ2l0SW5wdXRBdXRvRmlsbFBhcnNlRm4+KHRoaXMuX0RFRkFVTFRTLmF1dG9GaWxsUGFyc2VGbik7XHJcblxyXG4gIHJlYWRvbmx5IGlzQXV0b2ZpbGxlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfd2FzQXV0b2ZpbGxWYWx1ZVJlYWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIF9hdXRvRmlsbFN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9BdXRvRmlsbE9uSW5wdXRzKCkge1xyXG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMoKTtcclxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgaW5wdXRzKSB7XHJcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuX2F1dG9GaWxsTW9uaXRvci5tb25pdG9yKGlucHV0KS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNBdXRvZmlsbGVkLnNldChldmVudC5pc0F1dG9maWxsZWQpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fYXV0b0ZpbGxTdWJzLnB1c2goc3ViKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlRnJvbUF1dG9GaWxsKCkge1xyXG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMoKTtcclxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgaW5wdXRzKSB7XHJcbiAgICAgIHRoaXMuX2F1dG9GaWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyhpbnB1dCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9hdXRvRmlsbFN1YnMpIHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUZyb21BdXRvRmlsbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGRhdGEgbW9kZWxcclxuICBwcml2YXRlIHJlYWRvbmx5IG1vZGVsID0gbmV3IERpZ2l0SW5wdXRNb2RlbCh0aGlzKTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPih0aGlzLl9ERUZBVUxUUy5hcHBlYXJhbmNlKTtcclxuICByZWFkb25seSB2YXJpYW50ID0gaW5wdXQ8Rm9ybUVsZW1lbnRWYXJpYW50Pih0aGlzLl9ERUZBVUxUUy52YXJpYW50KTtcclxuICByZWFkb25seSBzaGFwZSA9IGlucHV0PERpZ2l0SW5wdXRTaGFwZT4odGhpcy5fREVGQVVMVFMuc2hhcGUpO1xyXG5cclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jb21wYWN0LCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT5cclxuICAgIFtcclxuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcclxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcclxuICAgICAgYGFyZC1zaGFwZS0ke3RoaXMuc2hhcGUoKX1gLFxyXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcclxuICAgICAgdGhpcy5pc0F1dG9maWxsZWQoKSA/ICdhcmQtYXV0b2ZpbGxlZCcgOiAnJyxcclxuICAgIF0uam9pbignICcpXHJcbiAgKTtcclxuXHJcbiAgLy8hIG1vZGVsIGFjY2VzcyBwb2ludHNcclxuICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDx2b2lkLCBEaWdpdElucHV0Q29uZmlnPih7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gdGhpcy5tb2RlbC5zZXRDb25maWcodiksXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhID0gdGhpcy5tb2RlbC5jb25maWdBcnJheURhdGE7XHJcblxyXG4gIHJlYWRvbmx5IHRyYW5zZm9ybSA9IGlucHV0PERpZ2l0SW5wdXRUcmFuc2Zvcm0+KHRoaXMuX0RFRkFVTFRTLnRyYW5zZm9ybSk7XHJcblxyXG4gIHByaXZhdGUgX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IC0xO1xyXG4gIHJlYWRvbmx5IGNvbmZpZ0FycmF5RGF0YUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGggPT09IHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH0pO1xyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLl9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSB0aGlzLmNvbmZpZ0FycmF5RGF0YSgpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGlzSW5wdXRFbXB0eShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMubW9kZWwuaXNEZWZpbmVkQXRJbmRleChpbmRleCk7XHJcbiAgfVxyXG5cclxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvcidzIHdyaXRlIHZhbHVlIGltcGxlbWVudGF0aW9uXHJcbiAgcHJpdmF0ZSBfdmFsdWVCZWZvcmVWaWV3SW5pdD86IGFueTtcclxuICB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl93YXNWaWV3SW5pdCkge1xyXG4gICAgICB0aGlzLl92YWx1ZUJlZm9yZVZpZXdJbml0ID0gdjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZSh2OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVWaWV3SW5pdCkge1xyXG4gICAgICB0aGlzLl93cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlVmlld0luaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlVG9BdXRvRmlsbE9uSW5wdXRzKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWUgdHdvLXdheSBiaW5kaW5nXHJcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm91dHB1dEFzU3RyaW5nLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG91dHB1dENvbnRyb2xWYWx1ZUFjY2Vzc29yT25GaW5pc2ggPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHN0cmluZ1ZhbHVlID0gdGhpcy5tb2RlbC5zdHJpbmdWYWx1ZTtcclxuXHJcbiAgcmVhZG9ubHkgZW1pdHRhYmxlVmFsdWUgPSBjb21wdXRlZCgoKTogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsID0+IHtcclxuICAgIGlmICh0aGlzLm91dHB1dEFzU3RyaW5nKCkpIHJldHVybiB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgZXZlbnQgZW1pdHRlcnNcclxuICByZWFkb25seSBmaW5pc2hlZFZhbHVlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xyXG4gIHJlYWRvbmx5IGJsdXJJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2JsdXJJbmRleCcgfSk7XHJcblxyXG4gIC8vISBldmVudCBoYW5kbGVyc1xyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9oYW5kbGVNdWx0aURpZ2l0Q2hhbmdlKHZhbHVlLCBpbmRleCk7XHJcbiAgfVxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBpZiAodGhpcy5pc0F1dG9maWxsZWQoKSkge1xyXG4gICAgICBpZiAoIXRoaXMuX3dhc0F1dG9maWxsVmFsdWVSZWFkKCkpIHtcclxuICAgICAgICB0aGlzLl93YXNBdXRvZmlsbFZhbHVlUmVhZC5zZXQodHJ1ZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl93YXNBdXRvZmlsbFZhbHVlUmVhZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gdGhpcy5hdXRvRmlsbFBhcnNlRm4oKSh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5faGFuZGxlTXVsdGlEaWdpdENoYW5nZShwYXJzZWRWYWx1ZSwgMCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FzVmFsaWRDaGFyYWN0ZXIgPSB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlLCBpbmRleCk7XHJcbiAgICBpZiAoIXdhc1ZhbGlkQ2hhcmFjdGVyKSByZXR1cm47XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIDEpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oYW5kbGVNdWx0aURpZ2l0Q2hhbmdlKHZhbHVlOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMoKS5sZW5ndGggLSBzdGFydEluZGV4O1xyXG4gICAgdmFsdWVcclxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcclxuICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAuZm9yRWFjaCgoY2hhciwgaSkgPT4ge1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVzZXRJbnB1dFZhbHVlKHN0YXJ0SW5kZXggKyBpKTtcclxuICAgICAgICB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZShjaGFyLCBzdGFydEluZGV4ICsgaSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9jdXNCeUluZGV4KHN0YXJ0SW5kZXggLSAxICsgTWF0aC5taW4odmFsdWUubGVuZ3RoLCBtYXhMZW5ndGgpKTtcclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hhbmdlUmVzdWx0ID0gdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUodmFsdWUsIGluZGV4KTtcclxuXHJcbiAgICBpZiAoY2hhbmdlUmVzdWx0Py53YXNDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2hhbmdlUmVzdWx0Py53YXNWYWxpZENoYXIgPz8gZmFsc2U7XHJcbiAgfVxyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbjtcclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlciwgdHJ5Rm9jdXNpbmdOZXh0OiBib29sZWFuLCBkaXJlY3Rpb246IDEgfCAtMSk6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmlucHV0cygpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChuZXh0RWwuZ2V0QXR0cmlidXRlKCdkYXRhLWFyZC1zdGF0aWMnKSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAoZGlyZWN0aW9uID8/IDEpKTtcclxuICAgIH1cclxuICAgIG5leHRFbC5mb2N1cygpO1xyXG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIGRpcmVjdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xyXG4gIH1cclxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcclxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzSW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMSk7XHJcblxyXG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcclxuICB9XHJcbiAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy5lbWl0dGFibGVWYWx1ZSgpO1xyXG4gICAgaWYgKCF0aGlzLm91dHB1dENvbnRyb2xWYWx1ZUFjY2Vzc29yT25GaW5pc2goKSB8fCB0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHYpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xyXG4gICAgICB0aGlzLmZpbmlzaGVkVmFsdWUuZW1pdCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxLCB0cnVlLCArMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdIb21lJzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleCgwLCB0cnVlLCAxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0VuZCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgodGhpcy5pbnB1dHMubGVuZ3RoIC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgY2FzZSAnRGVsZXRlJzpcclxuICAgICAgICB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKCcnLCBpbmRleCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dFwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4gIFtjbGFzcy5hcmQtaGFzLWVycm9yXT1cImhhc0Vycm9yKClcIlxyXG4gIFtjbGFzcy5hcmQtaXMtc3VjY2Vzc109XCJpc1N1Y2Nlc3MoKVwiXHJcbj5cclxuICBAZm9yIChkYXRhIG9mIGNvbmZpZ0FycmF5RGF0YSgpOyB0cmFjayAkaW5kZXgpIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faXRlbVwiXHJcbiAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pdGVtLXdpdGgtaW5wdXRdPVwiZGF0YS50eXBlID09PSAnaW5wdXQnXCJcclxuICA+XHJcbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2lucHV0Jykge1xyXG4gICAgPGlucHV0XHJcbiAgICAgICNpbnB1dFxyXG4gICAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faW5wdXRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtyZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXJcIlxyXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LWVtcHR5XT1cImlzSW5wdXRFbXB0eShkYXRhLmluZGV4ISlcIlxyXG4gICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXNNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgLz5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9fc3RhdGljXCI+XHJcbiAgICAgIHt7IGRhdGEuY2hhciB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2lucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpYy1pbnB1dFwiXHJcbiAgICAgIGRhdGEtYXJkLXN0YXRpY1xyXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgW3ZhbHVlXT1cImRhdGEuY2hhclwiXHJcbiAgICAvPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -9,6 +9,9 @@ const _digitInputDefaults = {
9
9
  shape: DigitInputShape.Square,
10
10
  compact: false,
11
11
  outputAsString: false,
12
+ transform: null,
13
+ inputAttrs: {},
14
+ autoFillParseFn: v => v,
12
15
  };
13
16
  export const ARD_DIGIT_INPUT_DEFAULTS = new InjectionToken('ard-digit-input-defaults', {
14
17
  factory: () => ({
@@ -18,4 +21,4 @@ export const ARD_DIGIT_INPUT_DEFAULTS = new InjectionToken('ard-digit-input-defa
18
21
  export function provideDigitInputDefaults(config) {
19
22
  return { provide: ARD_DIGIT_INPUT_DEFAULTS, useValue: { ..._digitInputDefaults, ...config } };
20
23
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBK0IsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFVdEQsTUFBTSxtQkFBbUIsR0FBMEI7SUFDakQsR0FBRywyQkFBMkI7SUFDOUIsVUFBVSxFQUFFLHFCQUFxQixDQUFDLFFBQVE7SUFDMUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLE9BQU87SUFDbkMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNO0lBQzdCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsY0FBYyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUF3QiwwQkFBMEIsRUFBRTtJQUM1RyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNkLEdBQUcsbUJBQW1CO0tBQ3ZCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBc0M7SUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLG1CQUFtQixFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUNoRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLy4uLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0U2hhcGUgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJkRGlnaXRJbnB1dERlZmF1bHRzIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIHtcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2U7XHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50O1xyXG4gIHNoYXBlOiBEaWdpdElucHV0U2hhcGU7XHJcbiAgY29tcGFjdDogYm9vbGVhbjtcclxuICBvdXRwdXRBc1N0cmluZzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgX2RpZ2l0SW5wdXREZWZhdWx0czogQXJkRGlnaXRJbnB1dERlZmF1bHRzID0ge1xyXG4gIC4uLl9mb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyxcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQsXHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQsXHJcbiAgc2hhcGU6IERpZ2l0SW5wdXRTaGFwZS5TcXVhcmUsXHJcbiAgY29tcGFjdDogZmFsc2UsXHJcbiAgb3V0cHV0QXNTdHJpbmc6IGZhbHNlLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcmREaWdpdElucHV0RGVmYXVsdHM+KCdhcmQtZGlnaXQtaW5wdXQtZGVmYXVsdHMnLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4gKHtcclxuICAgIC4uLl9kaWdpdElucHV0RGVmYXVsdHMsXHJcbiAgfSksXHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEaWdpdElucHV0RGVmYXVsdHMoY29uZmlnOiBQYXJ0aWFsPEFyZERpZ2l0SW5wdXREZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCB1c2VWYWx1ZTogeyAuLi5fZGlnaXRJbnB1dERlZmF1bHRzLCAuLi5jb25maWcgfSB9O1xyXG59XHJcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBK0IsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQTZCLGVBQWUsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQWF0RyxNQUFNLG1CQUFtQixHQUEwQjtJQUNqRCxHQUFHLDJCQUEyQjtJQUM5QixVQUFVLEVBQUUscUJBQXFCLENBQUMsUUFBUTtJQUMxQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNuQyxLQUFLLEVBQUUsZUFBZSxDQUFDLE1BQU07SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxjQUFjLEVBQUUsS0FBSztJQUNyQixTQUFTLEVBQUUsSUFBSTtJQUNmLFVBQVUsRUFBRSxFQUFFO0lBQ2QsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXdCLDBCQUEwQixFQUFFO0lBQzVHLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsR0FBRyxtQkFBbUI7S0FDdkIsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxNQUFzQztJQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0FBQ2hHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLCBfZm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuLi8uLi9faW50ZXJuYWwvZm9ybS1maWVsZC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4vLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRBdXRvRmlsbFBhcnNlRm4sIERpZ2l0SW5wdXRTaGFwZSwgRGlnaXRJbnB1dFRyYW5zZm9ybSB9IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcmREaWdpdElucHV0RGVmYXVsdHMgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZTtcclxuICB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQ7XHJcbiAgc2hhcGU6IERpZ2l0SW5wdXRTaGFwZTtcclxuICBjb21wYWN0OiBib29sZWFuO1xyXG4gIG91dHB1dEFzU3RyaW5nOiBib29sZWFuO1xyXG4gIHRyYW5zZm9ybTogRGlnaXRJbnB1dFRyYW5zZm9ybTtcclxuICBpbnB1dEF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIGF1dG9GaWxsUGFyc2VGbjogRGlnaXRJbnB1dEF1dG9GaWxsUGFyc2VGbjtcclxufVxyXG5cclxuY29uc3QgX2RpZ2l0SW5wdXREZWZhdWx0czogQXJkRGlnaXRJbnB1dERlZmF1bHRzID0ge1xyXG4gIC4uLl9mb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyxcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQsXHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQsXHJcbiAgc2hhcGU6IERpZ2l0SW5wdXRTaGFwZS5TcXVhcmUsXHJcbiAgY29tcGFjdDogZmFsc2UsXHJcbiAgb3V0cHV0QXNTdHJpbmc6IGZhbHNlLFxyXG4gIHRyYW5zZm9ybTogbnVsbCxcclxuICBpbnB1dEF0dHJzOiB7fSxcclxuICBhdXRvRmlsbFBhcnNlRm46IHYgPT4gdixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBBUkRfRElHSVRfSU5QVVRfREVGQVVMVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXJkRGlnaXRJbnB1dERlZmF1bHRzPignYXJkLWRpZ2l0LWlucHV0LWRlZmF1bHRzJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+ICh7XHJcbiAgICAuLi5fZGlnaXRJbnB1dERlZmF1bHRzLFxyXG4gIH0pLFxyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGlnaXRJbnB1dERlZmF1bHRzKGNvbmZpZzogUGFydGlhbDxBcmREaWdpdElucHV0RGVmYXVsdHM+KTogUHJvdmlkZXIge1xyXG4gIHJldHVybiB7IHByb3ZpZGU6IEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUywgdXNlVmFsdWU6IHsgLi4uX2RpZ2l0SW5wdXREZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=
@@ -137,6 +137,29 @@ export class DigitInputModel {
137
137
  }
138
138
  }));
139
139
  }
140
+ resetInputValue(index) {
141
+ if (index < 0 || index > this._configArray().length)
142
+ return;
143
+ const config = this._configArray()[index];
144
+ let newValue = '';
145
+ if ('static' in config) {
146
+ newValue = config.static;
147
+ }
148
+ //get the corresponding HTML input element
149
+ const inputEl = this._ardHost.inputs()[index];
150
+ if (!inputEl) {
151
+ throw new Error("ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. If you are reading this, you probably experienced a problem with Ardium UI. Please report this issue to the creators.");
152
+ }
153
+ //update the input element and value array
154
+ inputEl.nativeElement.value = newValue;
155
+ this.value.update(arr => {
156
+ if (!arr)
157
+ arr = [];
158
+ const newArr = [...arr];
159
+ newArr[index] = newValue || null;
160
+ return newArr;
161
+ });
162
+ }
140
163
  //! validate against the config
141
164
  validateInputAndSetValue(input, index) {
142
165
  if (index < 0 || index > this._configArray().length)
@@ -175,7 +198,7 @@ export class DigitInputModel {
175
198
  return newArr;
176
199
  });
177
200
  //return changes marker and validated value
178
- return { wasChanged: newVal !== before, resultChar: inputChar };
201
+ return { wasChanged: newVal !== before, wasValidChar: !isNull(inputChar), resultChar: inputChar };
179
202
  }
180
203
  validateValueAndUpdate() {
181
204
  const v = this.value();
@@ -215,19 +238,20 @@ export class DigitInputModel {
215
238
  if (!canAccept)
216
239
  return null;
217
240
  // transform if needed
218
- if (config.transform) {
219
- if (config.transform === TransformType.Lowercase) {
241
+ const transform = config.transform ?? this._ardHost.transform();
242
+ if (transform) {
243
+ if (transform === TransformType.Lowercase) {
220
244
  return char.toLowerCase();
221
245
  }
222
- if (config.transform === TransformType.Uppercase) {
246
+ if (transform === TransformType.Uppercase) {
223
247
  return char.toUpperCase();
224
248
  }
225
- if (isFunction(config.transform)) {
226
- return config.transform(char).charAt(0);
249
+ if (isFunction(transform)) {
250
+ return transform(char).charAt(0);
227
251
  }
228
252
  console.warn(`ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's "transform" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
229
253
  }
230
254
  return char;
231
255
  }
232
256
  }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUF3Qix3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUE2QjtRQUE3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQXNCaEMsaUJBQVksR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG9CQUFlLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTzt3QkFDTCxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTTt3QkFDckMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNnQixDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU87b0JBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLEtBQUs7b0JBQ3BDLEtB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QUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixtQ0FBbUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QixzQkFBc0I7UUFDdEIsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVix1TUFBdU0sQ0FDeE0sQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBpc0FueVN0cmluZywgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdWxsLCBpc051bWJlciwgaXNSZWdFeHAgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcbmltcG9ydCB7XHJcbiAgRGlnaXRJbnB1dEFjY2VwdE9iamVjdCxcclxuICBEaWdpdElucHV0Q29uZmlnLFxyXG4gIERpZ2l0SW5wdXRPcHRpb24sXHJcbiAgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbixcclxuICBUcmFuc2Zvcm1UeXBlLFxyXG59IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnRGF0YSwgRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLCBEaWdpdElucHV0TW9kZWxIb3N0LCBfc2FuaXRpemVSZWdFeHBTdHJpbmcgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnV0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEaWdpdElucHV0TW9kZWwge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FyZEhvc3Q6IERpZ2l0SW5wdXRNb2RlbEhvc3QpIHtcclxuICAgIC8vc2V0IHRoZSB2YWx1ZSBhcnJheSB0byBiZSB0aGUgc2FtZSBsZW5ndGhcclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ0FyciA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCk7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gY29uZmlnQXJyLmxlbmd0aDtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcclxuICAgICAgICAgIGlmICghYXJyKSBhcnIgPSBbXTtcclxuICAgICAgICAgIGNvbnN0IG5ld0FycjogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY3VyciA9IGFycltpXTtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gY29uZmlnQXJyW2ldO1xyXG4gICAgICAgICAgICBuZXdBcnIucHVzaChjb25maWcudHlwZSA9PT0gRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLlN0YXRpYyA/IGNvbmZpZy5jaGFyISA6IGN1cnIgPz8gbnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbmV3QXJyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWdBcnJheSA9IHNpZ25hbDxEaWdpdElucHV0T3B0aW9uW10+KFtdKTtcclxuXHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhID0gY29tcHV0ZWQ8RGlnaXRJbnB1dENvbmZpZ0RhdGFbXT4oKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0FycmF5KCkubWFwKCh2LCBpKSA9PiB7XHJcbiAgICAgIGlmICgnc3RhdGljJyBpbiB2KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHR5cGU6IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZS5TdGF0aWMsXHJcbiAgICAgICAgICBjaGFyOiB2LnN0YXRpYyxcclxuICAgICAgICB9IHNhdGlzZmllcyBEaWdpdElucHV0Q29uZmlnRGF0YTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZS5JbnB1dCxcclxuICAgICAgICBpbmRleDogaSxcclxuICAgICAgICByZWFkb25seTogdi5yZWFkb25seSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogdi5wbGFjZWhvbGRlciA/PyAnJyxcclxuICAgICAgfSBzYXRpc2ZpZXMgRGlnaXRJbnB1dENvbmZpZ0RhdGE7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgaXNDb25maWdEZWZpbmVkID0gY29tcHV0ZWQoKCk6IGJvb2xlYW4gPT4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGggPiAwKTtcclxuXHJcbiAgcmVhZG9ubHkgdmFsdWUgPSBzaWduYWw8KHN0cmluZyB8IG51bGwpW10gfCBudWxsPihudWxsKTtcclxuXHJcbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSBjb21wdXRlZChcclxuICAgICgpOiBzdHJpbmcgPT5cclxuICAgICAgdGhpcy52YWx1ZSgpXHJcbiAgICAgICAgPy5tYXAodiA9PiB2ID8/ICcgJylcclxuICAgICAgICAuam9pbignJykgPz8gJydcclxuICApO1xyXG5cclxuICByZWFkb25seSBpc1ZhbHVlRnVsbCA9IGNvbXB1dGVkKCgpOiBib29sZWFuID0+IHRoaXMudmFsdWUoKT8uZmlsdGVyKHYgPT4gdikubGVuZ3RoID09PSB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCk7XHJcblxyXG4gIGlzRGVmaW5lZEF0SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy52YWx1ZSgpPy5baW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9hcmRIb3N0Lm91dHB1dEFzU3RyaW5nKCkpIHtcclxuICAgICAgaWYgKCFpc0FueVN0cmluZyh2KSAmJiAhaXNOdWxsKHYpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYEFSRC1GVDAwNDBiOiBUcnlpbmcgdG8gc2V0IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdG8gXCIke3Z9XCIgKG9mIHR5cGUgJHt0eXBlb2Ygdn0pLCBidXQgdGhlIGlucHV0IHVzZXMgW291dHB1dEFzU3RyaW5nXT1cInRydWVcIiwgYW5kIHRodXMgZXhwZWN0cyBzdHJpbmcgb3IgbnVsbC5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2QXJyYXkgPSB2Py5zcGxpdCgnJykgPz8gW107XHJcblxyXG4gICAgICBpZiAodkFycmF5Lmxlbmd0aCA+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgYEFSRC1XQTAwNDE6IFZhbHVlIHByb3ZpZGVkIHRvIDxhcmQtZGlnaXQtaW5wdXQ+IGlzIHRvbyBsb25nLiBHb3QgJHtcclxuICAgICAgICAgICAgdkFycmF5Lmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGFyYWN0ZXJzLCBidXQgZXhwZWN0ZWQgYSBtYXhpbXVtIG9mICR7dGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGh9IGNoYXJhY3RlcnMuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRlVmFsdWUodkFycmF5KTtcclxuICAgIH1cclxuICAgIGlmICghaXNBbnlTdHJpbmcodikgJiYgIWlzTnVsbCh2KSAmJiAhaXNBcnJheSh2KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYEFSRC1GVDAwNDE6IFRyeWluZyB0byBzZXQgPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSB0byBcIiR7dn1cIiAob2YgdHlwZSAke3R5cGVvZiB2fSksIGV4cGVjdGVkIHN0cmluZyBvciBhcnJheSBvZiBjaGFyYWN0ZXJzLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZBcnJheSA9IGNvZXJjZUFycmF5UHJvcGVydHkodik7XHJcblxyXG4gICAgaWYgKHZBcnJheS5sZW5ndGggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYEFSRC1XQTAwNDE6IFZhbHVlIHByb3ZpZGVkIHRvIDxhcmQtZGlnaXQtaW5wdXQ+IGlzIHRvbyBsb25nLiBHb3QgJHtcclxuICAgICAgICAgIHZBcnJheS5sZW5ndGhcclxuICAgICAgICB9IGNoYXJhY3RlcnMsIGJ1dCBleHBlY3RlZCBhIG1heGltdW0gb2YgJHt0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aH0gY2hhcmFjdGVycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm9ibGVtSW5kZXggPSB2QXJyYXkuZmluZEluZGV4KGVsID0+ICFpc0FueVN0cmluZyhlbCkgfHwgZWwubGVuZ3RoID4gMSk7XHJcbiAgICBpZiAocHJvYmxlbUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYEFSRC1GVDAwNDI6IEFycmF5IHBhc3NlZCB0byA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIG11c3Qgb25seSBjb250YWluIHN0cmluZ3Mgb2YgbGVuZ3RoIDEgb3IgMC4gRWxlbWVudCBcIiR7dkFycmF5W3Byb2JsZW1JbmRleF19XCIgYXQgaW5kZXggJHtwcm9ibGVtSW5kZXh9IGRvZXMgbm90IG1hdGNoIHRob3NlIHJlcXVpcmVtZW50cy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fd3JpdGVWYWx1ZSh2QXJyYXkpO1xyXG4gIH1cclxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IHN0cmluZ1tdIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXNPbGRWYWx1ZVRoZVNhbWUgPSB0aGlzLnZhbHVlKCkgPyB0aGlzLnZhbHVlKCkhLmV2ZXJ5KChjaCwgaSkgPT4gY2ggPT09IHY/LltpXSkgOiAhdjtcclxuICAgIGlmIChpc09sZFZhbHVlVGhlU2FtZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodiAmJiB2Lm1hcChlbCA9PiBlbCB8fCBudWxsKSk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTtcclxuICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudHMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXRFbGVtZW50cygpIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlKCkgPz8gW107XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGlucHV0RWwgb2YgdGhpcy5fYXJkSG9zdC5pbnB1dHMoKSkge1xyXG4gICAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2W2ldID8/ICcnO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgc2V0dGluZyBjb25maWdcclxuICBzZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRDb25maWcoY29uZmlnKTtcclxuICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XHJcbiAgICAvL21hcCBhIG51bWJlciB0byByZWFkeSBvYmplY3RzXHJcbiAgICBsZXQgY29uZmlnQXNOdW1iZXIgPSBpc0FueVN0cmluZyhjb25maWcpID8gTnVtYmVyKGNvbmZpZykgOiBudWxsO1xyXG4gICAgaWYgKGlzTnVtYmVyKGNvbmZpZykgfHwgaXNOdW1iZXIoY29uZmlnQXNOdW1iZXIpKSB7XHJcbiAgICAgIGNvbmZpZ0FzTnVtYmVyID0gaXNOdW1iZXIoY29uZmlnKSA/IGNvbmZpZyA6IGNvbmZpZ0FzTnVtYmVyITtcclxuICAgICAgdGhpcy5fY29uZmlnQXJyYXkuc2V0KG5ldyBBcnJheShjb25maWdBc051bWJlcikuZmlsbCh7IGFjY2VwdDogKHN0cjogc3RyaW5nKSA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9KSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vbWFwIGEgc3RyaW5nIHRvIGFuIGFycmF5XHJcbiAgICBsZXQgY29uZmlnQXJyOiBzdHJpbmdbXSB8IEV4Y2x1ZGU8RGlnaXRJbnB1dENvbmZpZywgbnVtYmVyIHwgc3RyaW5nPjtcclxuICAgIGlmIChpc0FueVN0cmluZyhjb25maWcpKSB7XHJcbiAgICAgIGNvbmZpZ0FyciA9IGNvZXJjZUFycmF5UHJvcGVydHkoY29uZmlnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmZpZ0FyciA9IGNvbmZpZztcclxuICAgIH1cclxuICAgIC8vbWFwIGFycmF5IHRvIHJlYWR5IG9iamVjdHNcclxuICAgIHRoaXMuX2NvbmZpZ0FycmF5LnNldChcclxuICAgICAgY29uZmlnQXJyLm1hcCgodiwgaSkgPT4ge1xyXG4gICAgICAgIGlmICghaXNBbnlTdHJpbmcodikpIHtcclxuICAgICAgICAgIGlmICgnYWNjZXB0JyBpbiB2ICYmICFpc0Z1bmN0aW9uKHYuYWNjZXB0KSkge1xyXG4gICAgICAgICAgICBjb25zdCByZWdFeHAgPSBpc1JlZ0V4cCh2LmFjY2VwdCkgPyB2LmFjY2VwdCA6IG5ldyBSZWdFeHAoYFske19zYW5pdGl6ZVJlZ0V4cFN0cmluZyh2LmFjY2VwdCl9XWApO1xyXG4gICAgICAgICAgICB2LmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2ggKHYpIHtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5OdW1iZXI6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bMC05XS8udGVzdChzdHIpIH07XHJcbiAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uTGV0dGVyOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvW2EtekEtWl0vLnRlc3Qoc3RyKSB9O1xyXG4gICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLkFscGhhbnVtZXJpYzpcclxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1swLTlhLXpBLVpdLy50ZXN0KHN0cikgfTtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5TcGVjaWFsOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWyFAIyQlXiYqLV89Ky9cXFxcLixdLy50ZXN0KHN0cikgfTtcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoY29uZmlnQXJyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDA0M1M6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgY29uZmlnIGlzIGludmFsaWQuIEV4cGVjdGVkIG51bWJlciBvciBhcnJheSwgZ290IFwiJHt2fVwiYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUkQtTkYwMDQzQjogRm91bmQgaW52YWxpZCBzdHJpbmcgXCIke3Z9XCIgaW4gPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWcgYXQgaW5kZXggJHtpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsaWRhdGUgYWdhaW5zdCB0aGUgY29uZmlnXHJcbiAgdmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGlucHV0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudWxsIHwgeyB3YXNDaGFuZ2VkOiBib29sZWFuOyByZXN1bHRDaGFyOiBzdHJpbmcgfCBudWxsIH0ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgdiA9IHRoaXMudmFsdWUoKTtcclxuICAgIC8vcHJlcGFyZSB0aGUgdmFsdWUgYXJyYXkgaWYgZG9lcyBub3QgZXhpc3RcclxuICAgIGlmICghdikge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldChbXSk7XHJcbiAgICB9XHJcbiAgICB2ID0gW107XHJcbiAgICAvL3ByZXBhcmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSAodG8gYmUgdXNlZCBpbiB2YWxpZGF0aW9uKVxyXG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5zdHJpbmdWYWx1ZSgpLmNoYXJBdChpbmRleCk7XHJcblxyXG4gICAgLy9yZW1vdmUgdGhlIG9sZCBjaGFyYWN0ZXIgZnJvbSB0aGUgaW5wdXQgZWxlbWVudFxyXG4gICAgaWYgKGJlZm9yZSAmJiBpbnB1dC5sZW5ndGggPiAxICYmIGlucHV0Lm1hdGNoKGJlZm9yZSkpIHtcclxuICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKGJlZm9yZSwgJycpO1xyXG4gICAgfVxyXG4gICAgLy91c2Ugb25seSB0aGUgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgKGVycm9yIHNhZmV0eSlcclxuICAgIGNvbnN0IGZpcnN0Q2hhciA9IGlucHV0LmNoYXJBdCgwKTtcclxuICAgIGNvbnN0IGxhc3RDaGFyID0gaW5wdXQuY2hhckF0KGlucHV0Lmxlbmd0aCAtIDEpO1xyXG4gICAgaW5wdXQgPSBmaXJzdENoYXIgPT09IGJlZm9yZSA/IGxhc3RDaGFyIDogZmlyc3RDaGFyO1xyXG5cclxuICAgIC8vdmFsaWRhdGUgYW5kIHRyYW5zZm9ybSwgaWYgbmVjZXNzYXJ5XHJcbiAgICBjb25zdCBpbnB1dENoYXIgPSB0aGlzLl92YWxpZGF0ZVNpbmdsZUNoYXIoaW5wdXQsIGJlZm9yZSwgdGhpcy5fY29uZmlnQXJyYXkoKVtpbmRleF0gYXMgRGlnaXRJbnB1dEFjY2VwdE9iamVjdCk7XHJcblxyXG4gICAgLy9nZXQgdGhlIGNvcnJlc3BvbmRpbmcgSFRNTCBpbnB1dCBlbGVtZW50XHJcbiAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5fYXJkSG9zdC5pbnB1dHMoKVtpbmRleF07XHJcbiAgICBpZiAoIWlucHV0RWwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIFwiQVJELUlTMDA0ODogPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBjaGFuZ2VkLCBidXQgaXRzIGNvcnJlc3BvbmRpbmcgaW5wdXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuIElmIHlvdSBhcmUgcmVhZGluZyB0aGlzLCB5b3UgcHJvYmFibHkgZXhwZXJpZW5jZWQgYSBwcm9ibGVtIHdpdGggQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLlwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvL3VwZGF0ZSB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdmFsdWUgYXJyYXlcclxuICAgIGNvbnN0IG5ld1ZhbCA9IGlucHV0Q2hhciA/PyBiZWZvcmU7XHJcbiAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWwgPz8gJyc7XHJcblxyXG4gICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcclxuICAgICAgaWYgKCFhcnIpIGFyciA9IFtdO1xyXG4gICAgICBjb25zdCBuZXdBcnIgPSBbLi4uYXJyXTtcclxuICAgICAgbmV3QXJyW2luZGV4XSA9IG5ld1ZhbCB8fCBudWxsO1xyXG4gICAgICByZXR1cm4gbmV3QXJyO1xyXG4gICAgfSk7XHJcbiAgICAvL3JldHVybiBjaGFuZ2VzIG1hcmtlciBhbmQgdmFsaWRhdGVkIHZhbHVlXHJcbiAgICByZXR1cm4geyB3YXNDaGFuZ2VkOiBuZXdWYWwgIT09IGJlZm9yZSwgcmVzdWx0Q2hhcjogaW5wdXRDaGFyIH07XHJcbiAgfVxyXG4gIHZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZSgpO1xyXG4gICAgaWYgKCF2KSByZXR1cm47XHJcblxyXG4gICAgbGV0IGJlZm9yZSA9ICcnO1xyXG4gICAgY29uc3QgbmV3VmFsdWU6IChzdHJpbmcgfCBudWxsKVtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoLCB2Lmxlbmd0aCk7IGkrKykge1xyXG4gICAgICBjb25zdCBjaGFyID0gdltpXTtcclxuICAgICAgYmVmb3JlICs9IGNoYXIgPz8gJyAnO1xyXG5cclxuICAgICAgaWYgKCFjaGFyKSB7XHJcbiAgICAgICAgbmV3VmFsdWUucHVzaChjaGFyKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBuZXdDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXIsIGJlZm9yZSwgdGhpcy5fY29uZmlnQXJyYXkoKVtpXSBhcyBEaWdpdElucHV0QWNjZXB0T2JqZWN0KTtcclxuICAgICAgbmV3VmFsdWUucHVzaChuZXdDaGFyKTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuc2V0KG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXI6IHN0cmluZyB8IG51bGwsIGJlZm9yZTogc3RyaW5nLCBjb25maWc6IERpZ2l0SW5wdXRPcHRpb24pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIC8vIHJldHVybiB0aGUgY2hhcmFjdGVyIGlmIGl0IGlzIHN0YXRpY1xyXG4gICAgaWYgKCdzdGF0aWMnIGluIGNvbmZpZykgcmV0dXJuIGNvbmZpZy5zdGF0aWM7XHJcbiAgICAvLyBmb3IgcGVhY2Ugb2YgbWluZCBwcm90ZWN0IGFnYWluc3QgbW9kaWZ5aW5nIHJlYWQtb25seSBmaWVsZHNcclxuICAgIGlmIChjb25maWcucmVhZG9ubHkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtSVMwMDQ5UjogdHJ5aW5nIHRvIHNldCB2YWx1ZSBvZiBhIDxhcmQtZGlnaXQtaW5wdXQ+J3MgcmVhZG9ubHkgZmllbGQuIFRoaXMgaXMgZXJyb3IgaXMgZmF0YWwgdG8gdGhlIGZ1bmN0aW9uaW5nIG9mIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBwcm9jZXNzIHJlZ2V4IG9yIGNvbnZlcnQgc3RyaW5nIGludG8gcmVnZXhcclxuICAgIGlmICghaXNGdW5jdGlvbihjb25maWcuYWNjZXB0KSkge1xyXG4gICAgICBjb25zdCByZWdFeHAgPSBpc1JlZ0V4cChjb25maWcuYWNjZXB0KSA/IGNvbmZpZy5hY2NlcHQgOiBuZXcgUmVnRXhwKGBbJHtfc2FuaXRpemVSZWdFeHBTdHJpbmcoY29uZmlnLmFjY2VwdCl9XWApO1xyXG4gICAgICBjb25maWcuYWNjZXB0ID0gc3RyID0+IHJlZ0V4cC50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoYXIpIHJldHVybiBjaGFyO1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIGlucHV0IGZpdHMgdGhlIGNyaXRlcmlhXHJcbiAgICBjb25zdCBjYW5BY2NlcHQgPSBjb25maWcuYWNjZXB0KGNoYXIsIGJlZm9yZSk7XHJcbiAgICBpZiAoIWNhbkFjY2VwdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gdHJhbnNmb3JtIGlmIG5lZWRlZFxyXG4gICAgaWYgKGNvbmZpZy50cmFuc2Zvcm0pIHtcclxuICAgICAgaWYgKGNvbmZpZy50cmFuc2Zvcm0gPT09IFRyYW5zZm9ybVR5cGUuTG93ZXJjYXNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNoYXIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSA9PT0gVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2UpIHtcclxuICAgICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGNvbmZpZy50cmFuc2Zvcm0pKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbmZpZy50cmFuc2Zvcm0oY2hhcikuY2hhckF0KDApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQVJELUlTMDA0OVQ6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdmFsaWRhdG9yIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGNvbmZpZydzIFwidHJhbnNmb3JtXCIgcHJvcGVydHkuIEFyZGl1bSBVSSB3YXMgYWJsZSB0byBoYW5kbGUgdGhpcyBpc3N1ZSwgYnV0IHBsZWFzZSByZXBvcnQgaXQgdG8gdGhlIGNyZWF0b3JzLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjaGFyO1xyXG4gIH1cclxufVxyXG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUF3Qix3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUE2QjtRQUE3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQXNCaEMsaUJBQVksR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG9CQUFlLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTzt3QkFDTCxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTTt3QkFDckMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNnQixDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU87b0JBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLEtBQUs7b0JBQ3BDLEtB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TSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QixzQkFBc0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLFNBQVMsS0FBSyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFNBQVMsS0FBSyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsdU1BQXVNLENBQ3hNLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgZWZmZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQXJyYXlQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNBbnlTdHJpbmcsIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzTnVsbCwgaXNOdW1iZXIsIGlzUmVnRXhwIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQge1xyXG4gIERpZ2l0SW5wdXRBY2NlcHRPYmplY3QsXHJcbiAgRGlnaXRJbnB1dENvbmZpZyxcclxuICBEaWdpdElucHV0T3B0aW9uLFxyXG4gIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24sXHJcbiAgVHJhbnNmb3JtVHlwZSxcclxufSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dENvbmZpZ0RhdGEsIERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZSwgRGlnaXRJbnB1dE1vZGVsSG9zdCwgX3Nhbml0aXplUmVnRXhwU3RyaW5nIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgRGlnaXRJbnB1dE1vZGVsIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcmRIb3N0OiBEaWdpdElucHV0TW9kZWxIb3N0KSB7XHJcbiAgICAvL3NldCB0aGUgdmFsdWUgYXJyYXkgdG8gYmUgdGhlIHNhbWUgbGVuZ3RoXHJcbiAgICBlZmZlY3QoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb25maWdBcnIgPSB0aGlzLmNvbmZpZ0FycmF5RGF0YSgpO1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGNvbmZpZ0Fyci5sZW5ndGg7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUudXBkYXRlKGFyciA9PiB7XHJcbiAgICAgICAgICBpZiAoIWFycikgYXJyID0gW107XHJcbiAgICAgICAgICBjb25zdCBuZXdBcnI6IChzdHJpbmcgfCBudWxsKVtdID0gW107XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnIgPSBhcnJbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbmZpZ0FycltpXTtcclxuICAgICAgICAgICAgbmV3QXJyLnB1c2goY29uZmlnLnR5cGUgPT09IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZS5TdGF0aWMgPyBjb25maWcuY2hhciEgOiBjdXJyID8/IG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG5ld0FycjtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnQXJyYXkgPSBzaWduYWw8RGlnaXRJbnB1dE9wdGlvbltdPihbXSk7XHJcblxyXG4gIHJlYWRvbmx5IGNvbmZpZ0FycmF5RGF0YSA9IGNvbXB1dGVkPERpZ2l0SW5wdXRDb25maWdEYXRhW10+KCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdBcnJheSgpLm1hcCgodiwgaSkgPT4ge1xyXG4gICAgICBpZiAoJ3N0YXRpYycgaW4gdikge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuU3RhdGljLFxyXG4gICAgICAgICAgY2hhcjogdi5zdGF0aWMsXHJcbiAgICAgICAgfSBzYXRpc2ZpZXMgRGlnaXRJbnB1dENvbmZpZ0RhdGE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuSW5wdXQsXHJcbiAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgcmVhZG9ubHk6IHYucmVhZG9ubHksXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6IHYucGxhY2Vob2xkZXIgPz8gJycsXHJcbiAgICAgIH0gc2F0aXNmaWVzIERpZ2l0SW5wdXRDb25maWdEYXRhO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGlzQ29uZmlnRGVmaW5lZCA9IGNvbXB1dGVkKCgpOiBib29sZWFuID0+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoID4gMCk7XHJcblxyXG4gIHJlYWRvbmx5IHZhbHVlID0gc2lnbmFsPChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIHJlYWRvbmx5IHN0cmluZ1ZhbHVlID0gY29tcHV0ZWQoXHJcbiAgICAoKTogc3RyaW5nID0+XHJcbiAgICAgIHRoaXMudmFsdWUoKVxyXG4gICAgICAgID8ubWFwKHYgPT4gdiA/PyAnICcpXHJcbiAgICAgICAgLmpvaW4oJycpID8/ICcnXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNWYWx1ZUZ1bGwgPSBjb21wdXRlZCgoKTogYm9vbGVhbiA9PiB0aGlzLnZhbHVlKCk/LmZpbHRlcih2ID0+IHYpLmxlbmd0aCA9PT0gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpO1xyXG5cclxuICBpc0RlZmluZWRBdEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudmFsdWUoKT8uW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fYXJkSG9zdC5vdXRwdXRBc1N0cmluZygpKSB7XHJcbiAgICAgIGlmICghaXNBbnlTdHJpbmcodikgJiYgIWlzTnVsbCh2KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBBUkQtRlQwMDQwYjogVHJ5aW5nIHRvIHNldCA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIHRvIFwiJHt2fVwiIChvZiB0eXBlICR7dHlwZW9mIHZ9KSwgYnV0IHRoZSBpbnB1dCB1c2VzIFtvdXRwdXRBc1N0cmluZ109XCJ0cnVlXCIsIGFuZCB0aHVzIGV4cGVjdHMgc3RyaW5nIG9yIG51bGwuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdkFycmF5ID0gdj8uc3BsaXQoJycpID8/IFtdO1xyXG5cclxuICAgICAgaWYgKHZBcnJheS5sZW5ndGggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBBUkQtV0EwMDQxOiBWYWx1ZSBwcm92aWRlZCB0byA8YXJkLWRpZ2l0LWlucHV0PiBpcyB0b28gbG9uZy4gR290ICR7XHJcbiAgICAgICAgICAgIHZBcnJheS5sZW5ndGhcclxuICAgICAgICAgIH0gY2hhcmFjdGVycywgYnV0IGV4cGVjdGVkIGEgbWF4aW11bSBvZiAke3RoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RofSBjaGFyYWN0ZXJzLmBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl93cml0ZVZhbHVlKHZBcnJheSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQW55U3RyaW5nKHYpICYmICFpc051bGwodikgJiYgIWlzQXJyYXkodikpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtRlQwMDQxOiBUcnlpbmcgdG8gc2V0IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdG8gXCIke3Z9XCIgKG9mIHR5cGUgJHt0eXBlb2Ygdn0pLCBleHBlY3RlZCBzdHJpbmcgb3IgYXJyYXkgb2YgY2hhcmFjdGVycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2QXJyYXkgPSBjb2VyY2VBcnJheVByb3BlcnR5KHYpO1xyXG5cclxuICAgIGlmICh2QXJyYXkubGVuZ3RoID4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0EwMDQxOiBWYWx1ZSBwcm92aWRlZCB0byA8YXJkLWRpZ2l0LWlucHV0PiBpcyB0b28gbG9uZy4gR290ICR7XHJcbiAgICAgICAgICB2QXJyYXkubGVuZ3RoXHJcbiAgICAgICAgfSBjaGFyYWN0ZXJzLCBidXQgZXhwZWN0ZWQgYSBtYXhpbXVtIG9mICR7dGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGh9IGNoYXJhY3RlcnMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvYmxlbUluZGV4ID0gdkFycmF5LmZpbmRJbmRleChlbCA9PiAhaXNBbnlTdHJpbmcoZWwpIHx8IGVsLmxlbmd0aCA+IDEpO1xyXG4gICAgaWYgKHByb2JsZW1JbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtRlQwMDQyOiBBcnJheSBwYXNzZWQgdG8gPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBzdHJpbmdzIG9mIGxlbmd0aCAxIG9yIDAuIEVsZW1lbnQgXCIke3ZBcnJheVtwcm9ibGVtSW5kZXhdfVwiIGF0IGluZGV4ICR7cHJvYmxlbUluZGV4fSBkb2VzIG5vdCBtYXRjaCB0aG9zZSByZXF1aXJlbWVudHMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3dyaXRlVmFsdWUodkFycmF5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZSh2OiBzdHJpbmdbXSB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlzT2xkVmFsdWVUaGVTYW1lID0gdGhpcy52YWx1ZSgpID8gdGhpcy52YWx1ZSgpIS5ldmVyeSgoY2gsIGkpID0+IGNoID09PSB2Py5baV0pIDogIXY7XHJcbiAgICBpZiAoaXNPbGRWYWx1ZVRoZVNhbWUpIHJldHVybiBmYWxzZTtcclxuICAgIHRoaXMudmFsdWUuc2V0KHYgJiYgdi5tYXAoZWwgPT4gZWwgfHwgbnVsbCkpO1xyXG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlQW5kVXBkYXRlKCk7XHJcbiAgICB0aGlzLl91cGRhdGVJbnB1dEVsZW1lbnRzKCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RWxlbWVudHMoKSB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZSgpID8/IFtdO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgZm9yIChjb25zdCBpbnB1dEVsIG9mIHRoaXMuX2FyZEhvc3QuaW5wdXRzKCkpIHtcclxuICAgICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdltpXSA/PyAnJztcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8hIHNldHRpbmcgY29uZmlnXHJcbiAgc2V0Q29uZmlnKGNvbmZpZzogRGlnaXRJbnB1dENvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0Q29uZmlnKGNvbmZpZyk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0Q29uZmlnKGNvbmZpZzogRGlnaXRJbnB1dENvbmZpZyk6IHZvaWQge1xyXG4gICAgLy9tYXAgYSBudW1iZXIgdG8gcmVhZHkgb2JqZWN0c1xyXG4gICAgbGV0IGNvbmZpZ0FzTnVtYmVyID0gaXNBbnlTdHJpbmcoY29uZmlnKSA/IE51bWJlcihjb25maWcpIDogbnVsbDtcclxuICAgIGlmIChpc051bWJlcihjb25maWcpIHx8IGlzTnVtYmVyKGNvbmZpZ0FzTnVtYmVyKSkge1xyXG4gICAgICBjb25maWdBc051bWJlciA9IGlzTnVtYmVyKGNvbmZpZykgPyBjb25maWcgOiBjb25maWdBc051bWJlciE7XHJcbiAgICAgIHRoaXMuX2NvbmZpZ0FycmF5LnNldChuZXcgQXJyYXkoY29uZmlnQXNOdW1iZXIpLmZpbGwoeyBhY2NlcHQ6IChzdHI6IHN0cmluZykgPT4gL1swLTldLy50ZXN0KHN0cikgfSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL21hcCBhIHN0cmluZyB0byBhbiBhcnJheVxyXG4gICAgbGV0IGNvbmZpZ0Fycjogc3RyaW5nW10gfCBFeGNsdWRlPERpZ2l0SW5wdXRDb25maWcsIG51bWJlciB8IHN0cmluZz47XHJcbiAgICBpZiAoaXNBbnlTdHJpbmcoY29uZmlnKSkge1xyXG4gICAgICBjb25maWdBcnIgPSBjb2VyY2VBcnJheVByb3BlcnR5KGNvbmZpZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25maWdBcnIgPSBjb25maWc7XHJcbiAgICB9XHJcbiAgICAvL21hcCBhcnJheSB0byByZWFkeSBvYmplY3RzXHJcbiAgICB0aGlzLl9jb25maWdBcnJheS5zZXQoXHJcbiAgICAgIGNvbmZpZ0Fyci5tYXAoKHYsIGkpID0+IHtcclxuICAgICAgICBpZiAoIWlzQW55U3RyaW5nKHYpKSB7XHJcbiAgICAgICAgICBpZiAoJ2FjY2VwdCcgaW4gdiAmJiAhaXNGdW5jdGlvbih2LmFjY2VwdCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAodi5hY2NlcHQpID8gdi5hY2NlcHQgOiBuZXcgUmVnRXhwKGBbJHtfc2FuaXRpemVSZWdFeHBTdHJpbmcodi5hY2NlcHQpfV1gKTtcclxuICAgICAgICAgICAgdi5hY2NlcHQgPSBzdHIgPT4gcmVnRXhwLnRlc3Qoc3RyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uTnVtYmVyOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9O1xyXG4gICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLkxldHRlcjpcclxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1thLXpBLVpdLy50ZXN0KHN0cikgfTtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5BbHBoYW51bWVyaWM6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bMC05YS16QS1aXS8udGVzdChzdHIpIH07XHJcbiAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uU3BlY2lhbDpcclxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1shQCMkJV4mKi1fPSsvXFxcXC4sXS8udGVzdChzdHIpIH07XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKGNvbmZpZ0Fyci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1ORjAwNDNTOiA8YXJkLWRpZ2l0LWlucHV0PidzIGNvbmZpZyBpcyBpbnZhbGlkLiBFeHBlY3RlZCBudW1iZXIgb3IgYXJyYXksIGdvdCBcIiR7dn1cImApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDA0M0I6IEZvdW5kIGludmFsaWQgc3RyaW5nIFwiJHt2fVwiIGluIDxhcmQtZGlnaXQtaW5wdXQ+J3MgY29uZmlnIGF0IGluZGV4ICR7aX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRJbnB1dFZhbHVlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FycmF5KClbaW5kZXhdIGFzIERpZ2l0SW5wdXRPcHRpb247XHJcbiAgICBsZXQgbmV3VmFsdWUgPSAnJztcclxuICAgIGlmICgnc3RhdGljJyBpbiBjb25maWcpIHtcclxuICAgICAgbmV3VmFsdWUgPSBjb25maWcuc3RhdGljO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0IHRoZSBjb3JyZXNwb25kaW5nIEhUTUwgaW5wdXQgZWxlbWVudFxyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2FyZEhvc3QuaW5wdXRzKClbaW5kZXhdO1xyXG4gICAgaWYgKCFpbnB1dEVsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBcIkFSRC1JUzAwNDg6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgY2hhbmdlZCwgYnV0IGl0cyBjb3JyZXNwb25kaW5nIGlucHV0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLiBJZiB5b3UgYXJlIHJlYWRpbmcgdGhpcywgeW91IHByb2JhYmx5IGV4cGVyaWVuY2VkIGEgcHJvYmxlbSB3aXRoIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5cIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy91cGRhdGUgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHZhbHVlIGFycmF5XHJcbiAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICB0aGlzLnZhbHVlLnVwZGF0ZShhcnIgPT4ge1xyXG4gICAgICBpZiAoIWFycikgYXJyID0gW107XHJcbiAgICAgIGNvbnN0IG5ld0FyciA9IFsuLi5hcnJdO1xyXG4gICAgICBuZXdBcnJbaW5kZXhdID0gbmV3VmFsdWUgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIG5ld0FycjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8hIHZhbGlkYXRlIGFnYWluc3QgdGhlIGNvbmZpZ1xyXG4gIHZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZShcclxuICAgIGlucHV0OiBzdHJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKTogbnVsbCB8IHsgd2FzQ2hhbmdlZDogYm9vbGVhbjsgd2FzVmFsaWRDaGFyOiBib29sZWFuOyByZXN1bHRDaGFyOiBzdHJpbmcgfCBudWxsIH0ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgdiA9IHRoaXMudmFsdWUoKTtcclxuICAgIC8vcHJlcGFyZSB0aGUgdmFsdWUgYXJyYXkgaWYgZG9lcyBub3QgZXhpc3RcclxuICAgIGlmICghdikge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldChbXSk7XHJcbiAgICB9XHJcbiAgICB2ID0gW107XHJcbiAgICAvL3ByZXBhcmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSAodG8gYmUgdXNlZCBpbiB2YWxpZGF0aW9uKVxyXG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5zdHJpbmdWYWx1ZSgpLmNoYXJBdChpbmRleCk7XHJcblxyXG4gICAgLy9yZW1vdmUgdGhlIG9sZCBjaGFyYWN0ZXIgZnJvbSB0aGUgaW5wdXQgZWxlbWVudFxyXG4gICAgaWYgKGJlZm9yZSAmJiBpbnB1dC5sZW5ndGggPiAxICYmIGlucHV0Lm1hdGNoKGJlZm9yZSkpIHtcclxuICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKGJlZm9yZSwgJycpO1xyXG4gICAgfVxyXG4gICAgLy91c2Ugb25seSB0aGUgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgKGVycm9yIHNhZmV0eSlcclxuICAgIGNvbnN0IGZpcnN0Q2hhciA9IGlucHV0LmNoYXJBdCgwKTtcclxuICAgIGNvbnN0IGxhc3RDaGFyID0gaW5wdXQuY2hhckF0KGlucHV0Lmxlbmd0aCAtIDEpO1xyXG4gICAgaW5wdXQgPSBmaXJzdENoYXIgPT09IGJlZm9yZSA/IGxhc3RDaGFyIDogZmlyc3RDaGFyO1xyXG5cclxuICAgIC8vdmFsaWRhdGUgYW5kIHRyYW5zZm9ybSwgaWYgbmVjZXNzYXJ5XHJcbiAgICBjb25zdCBpbnB1dENoYXIgPSB0aGlzLl92YWxpZGF0ZVNpbmdsZUNoYXIoaW5wdXQsIGJlZm9yZSwgdGhpcy5fY29uZmlnQXJyYXkoKVtpbmRleF0gYXMgRGlnaXRJbnB1dEFjY2VwdE9iamVjdCk7XHJcblxyXG4gICAgLy9nZXQgdGhlIGNvcnJlc3BvbmRpbmcgSFRNTCBpbnB1dCBlbGVtZW50XHJcbiAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5fYXJkSG9zdC5pbnB1dHMoKVtpbmRleF07XHJcbiAgICBpZiAoIWlucHV0RWwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIFwiQVJELUlTMDA0ODogPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBjaGFuZ2VkLCBidXQgaXRzIGNvcnJlc3BvbmRpbmcgaW5wdXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuIElmIHlvdSBhcmUgcmVhZGluZyB0aGlzLCB5b3UgcHJvYmFibHkgZXhwZXJpZW5jZWQgYSBwcm9ibGVtIHdpdGggQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLlwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvL3VwZGF0ZSB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdmFsdWUgYXJyYXlcclxuICAgIGNvbnN0IG5ld1ZhbCA9IGlucHV0Q2hhciA/PyBiZWZvcmU7XHJcbiAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWwgPz8gJyc7XHJcblxyXG4gICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcclxuICAgICAgaWYgKCFhcnIpIGFyciA9IFtdO1xyXG4gICAgICBjb25zdCBuZXdBcnIgPSBbLi4uYXJyXTtcclxuICAgICAgbmV3QXJyW2luZGV4XSA9IG5ld1ZhbCB8fCBudWxsO1xyXG4gICAgICByZXR1cm4gbmV3QXJyO1xyXG4gICAgfSk7XHJcbiAgICAvL3JldHVybiBjaGFuZ2VzIG1hcmtlciBhbmQgdmFsaWRhdGVkIHZhbHVlXHJcbiAgICByZXR1cm4geyB3YXNDaGFuZ2VkOiBuZXdWYWwgIT09IGJlZm9yZSwgd2FzVmFsaWRDaGFyOiAhaXNOdWxsKGlucHV0Q2hhciksIHJlc3VsdENoYXI6IGlucHV0Q2hhciB9O1xyXG4gIH1cclxuICB2YWxpZGF0ZVZhbHVlQW5kVXBkYXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWUoKTtcclxuICAgIGlmICghdikgcmV0dXJuO1xyXG5cclxuICAgIGxldCBiZWZvcmUgPSAnJztcclxuICAgIGNvbnN0IG5ld1ZhbHVlOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbih0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCwgdi5sZW5ndGgpOyBpKyspIHtcclxuICAgICAgY29uc3QgY2hhciA9IHZbaV07XHJcbiAgICAgIGJlZm9yZSArPSBjaGFyID8/ICcgJztcclxuXHJcbiAgICAgIGlmICghY2hhcikge1xyXG4gICAgICAgIG5ld1ZhbHVlLnB1c2goY2hhcik7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmV3Q2hhciA9IHRoaXMuX3ZhbGlkYXRlU2luZ2xlQ2hhcihjaGFyLCBiZWZvcmUsIHRoaXMuX2NvbmZpZ0FycmF5KClbaV0gYXMgRGlnaXRJbnB1dEFjY2VwdE9iamVjdCk7XHJcbiAgICAgIG5ld1ZhbHVlLnB1c2gobmV3Q2hhcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlLnNldChuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZhbGlkYXRlU2luZ2xlQ2hhcihjaGFyOiBzdHJpbmcgfCBudWxsLCBiZWZvcmU6IHN0cmluZywgY29uZmlnOiBEaWdpdElucHV0T3B0aW9uKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAvLyByZXR1cm4gdGhlIGNoYXJhY3RlciBpZiBpdCBpcyBzdGF0aWNcclxuICAgIGlmICgnc3RhdGljJyBpbiBjb25maWcpIHJldHVybiBjb25maWcuc3RhdGljO1xyXG4gICAgLy8gZm9yIHBlYWNlIG9mIG1pbmQgcHJvdGVjdCBhZ2FpbnN0IG1vZGlmeWluZyByZWFkLW9ubHkgZmllbGRzXHJcbiAgICBpZiAoY29uZmlnLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgQVJELUlTMDA0OVI6IHRyeWluZyB0byBzZXQgdmFsdWUgb2YgYSA8YXJkLWRpZ2l0LWlucHV0PidzIHJlYWRvbmx5IGZpZWxkLiBUaGlzIGlzIGVycm9yIGlzIGZhdGFsIHRvIHRoZSBmdW5jdGlvbmluZyBvZiBBcmRpdW0gVUkuIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZSB0byB0aGUgY3JlYXRvcnMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy8gcHJvY2VzcyByZWdleCBvciBjb252ZXJ0IHN0cmluZyBpbnRvIHJlZ2V4XHJcbiAgICBpZiAoIWlzRnVuY3Rpb24oY29uZmlnLmFjY2VwdCkpIHtcclxuICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAoY29uZmlnLmFjY2VwdCkgPyBjb25maWcuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKGNvbmZpZy5hY2NlcHQpfV1gKTtcclxuICAgICAgY29uZmlnLmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjaGFyKSByZXR1cm4gY2hhcjtcclxuXHJcbiAgICAvLyBjaGVjayBpZiBpbnB1dCBmaXRzIHRoZSBjcml0ZXJpYVxyXG4gICAgY29uc3QgY2FuQWNjZXB0ID0gY29uZmlnLmFjY2VwdChjaGFyLCBiZWZvcmUpO1xyXG4gICAgaWYgKCFjYW5BY2NlcHQpIHJldHVybiBudWxsO1xyXG5cclxuICAgIC8vIHRyYW5zZm9ybSBpZiBuZWVkZWRcclxuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNvbmZpZy50cmFuc2Zvcm0gPz8gdGhpcy5fYXJkSG9zdC50cmFuc2Zvcm0oKTtcclxuICAgIGlmICh0cmFuc2Zvcm0pIHtcclxuICAgICAgaWYgKHRyYW5zZm9ybSA9PT0gVHJhbnNmb3JtVHlwZS5Mb3dlcmNhc2UpIHtcclxuICAgICAgICByZXR1cm4gY2hhci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0cmFuc2Zvcm0gPT09IFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybShjaGFyKS5jaGFyQXQoMCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtSVMwMDQ5VDogPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSB2YWxpZGF0b3IgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCB2YWx1ZSBvZiB0aGUgY29uZmlnJ3MgXCJ0cmFuc2Zvcm1cIiBwcm9wZXJ0eS4gQXJkaXVtIFVJIHdhcyBhYmxlIHRvIGhhbmRsZSB0aGlzIGlzc3VlLCBidXQgcGxlYXNlIHJlcG9ydCBpdCB0byB0aGUgY3JlYXRvcnMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNoYXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,18 +1,19 @@
1
- import { NgModule } from '@angular/core';
1
+ import { CdkAutofill } from '@angular/cdk/text-field';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
3
4
  import { ArdiumDigitInputComponent } from './digit-input.component';
4
5
  import * as i0 from "@angular/core";
5
6
  export class ArdiumDigitInputModule {
6
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputModule, declarations: [ArdiumDigitInputComponent], imports: [CommonModule], exports: [ArdiumDigitInputComponent] }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputModule, declarations: [ArdiumDigitInputComponent], imports: [CommonModule, CdkAutofill], exports: [ArdiumDigitInputComponent] }); }
8
9
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputModule, imports: [CommonModule] }); }
9
10
  }
10
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputModule, decorators: [{
11
12
  type: NgModule,
12
13
  args: [{
13
14
  declarations: [ArdiumDigitInputComponent],
14
- imports: [CommonModule],
15
+ imports: [CommonModule, CdkAutofill],
15
16
  exports: [ArdiumDigitInputComponent],
16
17
  }]
17
18
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU9wRSxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQixpQkFKbEIseUJBQXlCLGFBQzlCLFlBQVksYUFDWix5QkFBeUI7Z0hBRXhCLHNCQUFzQixZQUh2QixZQUFZOzs0RkFHWCxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dE1vZHVsZSB7fVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFPcEUsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsaUJBSmxCLHlCQUF5QixhQUM5QixZQUFZLEVBQUUsV0FBVyxhQUN6Qix5QkFBeUI7Z0hBRXhCLHNCQUFzQixZQUh2QixZQUFZOzs0RkFHWCxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0F1dG9maWxsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2RrQXV0b2ZpbGxdLFxuICBleHBvcnRzOiBbQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bURpZ2l0SW5wdXRNb2R1bGUge31cbiJdfQ==
@@ -12,4 +12,4 @@ export const DigitInputPrimitiveOption = {
12
12
  Alphanumeric: 'alphanumeric',
13
13
  Special: 'special',
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7Q0FDZCxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQztBQUdYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEaWdpdElucHV0U2hhcGUgPSB7XHJcbiAgU3F1YXJlOiAnc3F1YXJlJyxcclxuICBSZWN0YW5nbGU6ICdyZWN0YW5nbGUnLFxyXG59IGFzIGNvbnN0O1xyXG5leHBvcnQgdHlwZSBEaWdpdElucHV0U2hhcGUgPSAodHlwZW9mIERpZ2l0SW5wdXRTaGFwZSlba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRTaGFwZV07XHJcblxyXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtVHlwZSA9IHtcclxuICBVcHBlcmNhc2U6ICd1cHBlcmNhc2UnLFxyXG4gIExvd2VyY2FzZTogJ2xvd2VyY2FzZScsXHJcbn0gYXMgY29uc3Q7XHJcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVR5cGUgPSAodHlwZW9mIFRyYW5zZm9ybVR5cGUpW2tleW9mIHR5cGVvZiBUcmFuc2Zvcm1UeXBlXTtcclxuXHJcbmV4cG9ydCBjb25zdCBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uID0ge1xyXG4gIE51bWJlcjogJ251bWJlcicsXHJcbiAgTGV0dGVyOiAnbGV0dGVyJyxcclxuICBBbHBoYW51bWVyaWM6ICdhbHBoYW51bWVyaWMnLFxyXG4gIFNwZWNpYWw6ICdzcGVjaWFsJyxcclxufSBhcyBjb25zdDtcclxuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiA9ICh0eXBlb2YgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbilba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb25dO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWdpdElucHV0QWNjZXB0T2JqZWN0IHtcclxuICBhY2NlcHQ6IHN0cmluZyB8IFJlZ0V4cCB8ICgoY2hhcjogc3RyaW5nLCBjaGFyc0JlZm9yZTogc3RyaW5nKSA9PiBib29sZWFuKTtcclxuICB0cmFuc2Zvcm0/OiBUcmFuc2Zvcm1UeXBlIHwgKChjaGFyOiBzdHJpbmcpID0+IHN0cmluZykgfCBudWxsO1xyXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRTdGF0aWNPYmplY3Qge1xyXG4gIHN0YXRpYzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaWdpdElucHV0T3B0aW9uID0gRGlnaXRJbnB1dEFjY2VwdE9iamVjdCB8IERpZ2l0SW5wdXRTdGF0aWNPYmplY3Q7XHJcblxyXG5leHBvcnQgdHlwZSBEaWdpdElucHV0Q29uZmlnID1cclxuICAvKiAoRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiB8IERpZ2l0SW5wdXRPcHRpb24pW11bXSAqL1xyXG4gIChEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uIHwgRGlnaXRJbnB1dE9wdGlvbilbXSB8IHN0cmluZyB8IG51bWJlcjtcclxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7Q0FDZCxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQztBQUdYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEaWdpdElucHV0U2hhcGUgPSB7XHJcbiAgU3F1YXJlOiAnc3F1YXJlJyxcclxuICBSZWN0YW5nbGU6ICdyZWN0YW5nbGUnLFxyXG59IGFzIGNvbnN0O1xyXG5leHBvcnQgdHlwZSBEaWdpdElucHV0U2hhcGUgPSAodHlwZW9mIERpZ2l0SW5wdXRTaGFwZSlba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRTaGFwZV07XHJcblxyXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtVHlwZSA9IHtcclxuICBVcHBlcmNhc2U6ICd1cHBlcmNhc2UnLFxyXG4gIExvd2VyY2FzZTogJ2xvd2VyY2FzZScsXHJcbn0gYXMgY29uc3Q7XHJcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVR5cGUgPSAodHlwZW9mIFRyYW5zZm9ybVR5cGUpW2tleW9mIHR5cGVvZiBUcmFuc2Zvcm1UeXBlXTtcclxuXHJcbmV4cG9ydCBjb25zdCBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uID0ge1xyXG4gIE51bWJlcjogJ251bWJlcicsXHJcbiAgTGV0dGVyOiAnbGV0dGVyJyxcclxuICBBbHBoYW51bWVyaWM6ICdhbHBoYW51bWVyaWMnLFxyXG4gIFNwZWNpYWw6ICdzcGVjaWFsJyxcclxufSBhcyBjb25zdDtcclxuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiA9ICh0eXBlb2YgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbilba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb25dO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFRyYW5zZm9ybSA9IFRyYW5zZm9ybVR5cGUgfCAoKGNoYXI6IHN0cmluZykgPT4gc3RyaW5nKSB8IG51bGw7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRBY2NlcHRPYmplY3Qge1xyXG4gIGFjY2VwdDogc3RyaW5nIHwgUmVnRXhwIHwgKChjaGFyOiBzdHJpbmcsIGNoYXJzQmVmb3JlOiBzdHJpbmcpID0+IGJvb2xlYW4pO1xyXG4gIHRyYW5zZm9ybT86IERpZ2l0SW5wdXRUcmFuc2Zvcm07XHJcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlnaXRJbnB1dFN0YXRpY09iamVjdCB7XHJcbiAgc3RhdGljOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRPcHRpb24gPSBEaWdpdElucHV0QWNjZXB0T2JqZWN0IHwgRGlnaXRJbnB1dFN0YXRpY09iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRDb25maWcgPVxyXG4gIC8qIChEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uIHwgRGlnaXRJbnB1dE9wdGlvbilbXVtdICovXHJcbiAgKERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24gfCBEaWdpdElucHV0T3B0aW9uKVtdIHwgc3RyaW5nIHwgbnVtYmVyO1xyXG5cclxuXHJcbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRBdXRvRmlsbFBhcnNlRm4gPSAoYXV0b0ZpbGw6IHN0cmluZykgPT4gc3RyaW5nO1xyXG4iXX0=
@@ -5,4 +5,4 @@ export const DigitInputConfigDataType = {
5
5
  export function _sanitizeRegExpString(str) {
6
6
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0NBQ1IsQ0FBQztBQUdYLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFXO0lBQy9DLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRDb25maWdEYXRhIHtcclxuICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGU7XHJcbiAgY2hhcj86IHN0cmluZztcclxuICBpbmRleD86IG51bWJlcjtcclxuICByZWFkb25seT86IGJvb2xlYW47XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEaWdpdElucHV0TW9kZWxIb3N0IHtcclxuICByZWFkb25seSBpbnB1dHM6IFNpZ25hbDxyZWFkb25seSBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+W10+O1xyXG4gIHJlYWRvbmx5IG91dHB1dEFzU3RyaW5nOiBTaWduYWw8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUgPSB7XHJcbiAgSW5wdXQ6ICdpbnB1dCcsXHJcbiAgU3RhdGljOiAnc3RhdGljJyxcclxufSBhcyBjb25zdDtcclxuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlID0gKHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUpW2tleW9mIHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGVdO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9zYW5pdGl6ZVJlZ0V4cFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xyXG59XHJcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtDQUNSLENBQUM7QUFHWCxNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBVztJQUMvQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0VHJhbnNmb3JtIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRDb25maWdEYXRhIHtcclxuICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGU7XHJcbiAgY2hhcj86IHN0cmluZztcclxuICBpbmRleD86IG51bWJlcjtcclxuICByZWFkb25seT86IGJvb2xlYW47XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEaWdpdElucHV0TW9kZWxIb3N0IHtcclxuICByZWFkb25seSBpbnB1dHM6IFNpZ25hbDxyZWFkb25seSBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+W10+O1xyXG4gIHJlYWRvbmx5IG91dHB1dEFzU3RyaW5nOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgcmVhZG9ubHkgdHJhbnNmb3JtOiBTaWduYWw8RGlnaXRJbnB1dFRyYW5zZm9ybT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUgPSB7XHJcbiAgSW5wdXQ6ICdpbnB1dCcsXHJcbiAgU3RhdGljOiAnc3RhdGljJyxcclxufSBhcyBjb25zdDtcclxuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlID0gKHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUpW2tleW9mIHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGVdO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9zYW5pdGl6ZVJlZ0V4cFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xyXG59XHJcbiJdfQ==