ets-fe-ng-sdk 17.0.102 → 17.0.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Shared/components/form-generator/form-generator.component.mjs +5 -3
- package/esm2022/lib/Shared/components/input/input-base.component.mjs +13 -1
- package/fesm2022/ets-fe-ng-sdk.mjs +103 -90
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +3 -3
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/input/input-base.component.d.ts +1 -0
- package/lib/Shared/components/text-case-2/text-case-2.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@ import { PhoneNumberComponent } from '../phone-number/phone-number.component';
|
|
|
11
11
|
import { CommonModule, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';
|
|
12
12
|
import { LoaderComponent } from '../loader/loader.component';
|
|
13
13
|
import { UtilityService } from '../../../Services/utility.service';
|
|
14
|
+
import { RichTextEditorRFComponent } from '../rich-text-editor-rf/rich-text-editor-rf.component';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@angular/forms";
|
|
16
17
|
import * as i2 from "@angular/common";
|
|
@@ -186,7 +187,7 @@ export class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
186
187
|
this.onSubmit.emit(this.formVal());
|
|
187
188
|
}
|
|
188
189
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FormGeneratorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: FormGeneratorComponent, isStandalone: true, selector: "form-generator", inputs: { keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: false, isRequired: false, transformFunction: null }, submitFunc: { classPropertyName: "submitFunc", publicName: "submitFunc", isSignal: false, isRequired: false, transformFunction: null }, submitBtnText: { classPropertyName: "submitBtnText", publicName: "submitBtnText", isSignal: true, isRequired: false, transformFunction: null }, submitBtnTemplate: { classPropertyName: "submitBtnTemplate", publicName: "submitBtnTemplate", isSignal: true, isRequired: false, transformFunction: null }, submitSuccessText: { classPropertyName: "submitSuccessText", publicName: "submitSuccessText", isSignal: true, isRequired: false, transformFunction: null }, showSubmitBtn: { classPropertyName: "showSubmitBtn", publicName: "showSubmitBtn", isSignal: true, isRequired: false, transformFunction: null }, gridStyle: { classPropertyName: "gridStyle", publicName: "gridStyle", isSignal: true, isRequired: false, transformFunction: null }, gridMDStyle: { classPropertyName: "gridMDStyle", publicName: "gridMDStyle", isSignal: true, isRequired: false, transformFunction: null }, gridLGStyle: { classPropertyName: "gridLGStyle", publicName: "gridLGStyle", isSignal: true, isRequired: false, transformFunction: null }, gridXXLStyle: { classPropertyName: "gridXXLStyle", publicName: "gridXXLStyle", isSignal: true, isRequired: false, transformFunction: null }, formGridClass: { classPropertyName: "formGridClass", publicName: "formGridClass", isSignal: true, isRequired: false, transformFunction: null }, useLoader: { classPropertyName: "useLoader", publicName: "useLoader", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, _isShow: { classPropertyName: "_isShow", publicName: "isShow", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onSubmit: "onSubmit", mchange: "mchange", _submissionResponse: "submissionResponse" }, usesInheritance: true, ngImport: i0, template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{ gridLGStyle() }} row-cols-xxl-{{\n gridXXLStyle()\n }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedFormSchema(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @default {\n <app-input-basic\n [noFormat]=\"scheme.noFormat\"\n [name]=\"scheme.field\"\n [form]=\"scheme.form || form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [stacked]=\"scheme.stacked\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n }\n </div>\n }\n </div>\n <div class=\"row row-cols-auto justify-content-end\">\n <div class=\"\">\n @if (showSubmitBtn()) {\n <app-btn [text]=\"submitBtnText()\" actionType=\"submit\" group=\"submit\" [form]=\"form()\" (mclick)=\"submit(submitBtn)\" #submitBtn />\n }\n @if (submitBtnTemplate()) {\n <ng-container *ngTemplateOutlet=\"submitBtnTemplate()\"></ng-container>\n }\n </div>\n </div>\n </form>\n</loader>\n", styles: [""], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "autoPickValueField", "clearOnDisable", "cls", "input", "colored", "checked", "contextData", "debug", "decimalPoints", "files", "noFormat", "hide", "hint", "labelLink", "labelField", "labelType", "lblCl", "light", "loading", "minLength", "maxLength", "multiple", "optionFormatter", "optionsFunc", "placeholder", "suffix", "theme", "translateOptions", "valueField", "vms", "xsmall", "setCurrentDate", "disabled", "options", "mvalue"], outputs: ["mchange", "mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
190
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: FormGeneratorComponent, isStandalone: true, selector: "form-generator", inputs: { keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: false, isRequired: false, transformFunction: null }, submitFunc: { classPropertyName: "submitFunc", publicName: "submitFunc", isSignal: false, isRequired: false, transformFunction: null }, submitBtnText: { classPropertyName: "submitBtnText", publicName: "submitBtnText", isSignal: true, isRequired: false, transformFunction: null }, submitBtnTemplate: { classPropertyName: "submitBtnTemplate", publicName: "submitBtnTemplate", isSignal: true, isRequired: false, transformFunction: null }, submitSuccessText: { classPropertyName: "submitSuccessText", publicName: "submitSuccessText", isSignal: true, isRequired: false, transformFunction: null }, showSubmitBtn: { classPropertyName: "showSubmitBtn", publicName: "showSubmitBtn", isSignal: true, isRequired: false, transformFunction: null }, gridStyle: { classPropertyName: "gridStyle", publicName: "gridStyle", isSignal: true, isRequired: false, transformFunction: null }, gridMDStyle: { classPropertyName: "gridMDStyle", publicName: "gridMDStyle", isSignal: true, isRequired: false, transformFunction: null }, gridLGStyle: { classPropertyName: "gridLGStyle", publicName: "gridLGStyle", isSignal: true, isRequired: false, transformFunction: null }, gridXXLStyle: { classPropertyName: "gridXXLStyle", publicName: "gridXXLStyle", isSignal: true, isRequired: false, transformFunction: null }, formGridClass: { classPropertyName: "formGridClass", publicName: "formGridClass", isSignal: true, isRequired: false, transformFunction: null }, useLoader: { classPropertyName: "useLoader", publicName: "useLoader", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, _isShow: { classPropertyName: "_isShow", publicName: "isShow", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onSubmit: "onSubmit", mchange: "mchange", _submissionResponse: "submissionResponse" }, usesInheritance: true, ngImport: i0, template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{ gridLGStyle() }} row-cols-xxl-{{\n gridXXLStyle()\n }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedFormSchema(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'richtext') {\n <rich-text-editor-rf\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label!\"\n [clearOnDisable]=\"scheme.clearOnDisable!\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField!\"\n [noFormat]=\"scheme.noFormat!\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug!\"\n [showRequiredTag]=\"scheme.showRequiredTag!\"\n [optionFormatter]=\"scheme.optionFormatter!\"\n [valueField]=\"scheme.valueField!\"\n [optionsFunc]=\"scheme.optionsFunc!\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField!\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint!\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf! | functionCaller2: form().value : (scheme.field | toAny))\n \" />\n }\n @default {\n <app-input-basic\n [noFormat]=\"scheme.noFormat\"\n [name]=\"scheme.field\"\n [form]=\"scheme.form || form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [stacked]=\"scheme.stacked\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n }\n </div>\n }\n </div>\n <div class=\"row row-cols-auto justify-content-end\">\n <div class=\"\">\n @if (showSubmitBtn()) {\n <app-btn [text]=\"submitBtnText()\" actionType=\"submit\" group=\"submit\" [form]=\"form()\" (mclick)=\"submit(submitBtn)\" #submitBtn />\n }\n @if (submitBtnTemplate()) {\n <ng-container *ngTemplateOutlet=\"submitBtnTemplate()\"></ng-container>\n }\n </div>\n </div>\n </form>\n</loader>\n", styles: [""], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "autoPickValueField", "clearOnDisable", "cls", "input", "colored", "checked", "contextData", "debug", "decimalPoints", "files", "noFormat", "hide", "hint", "labelLink", "labelField", "labelType", "lblCl", "light", "loading", "minLength", "maxLength", "multiple", "optionFormatter", "optionsFunc", "placeholder", "suffix", "theme", "translateOptions", "valueField", "vms", "xsmall", "setCurrentDate", "disabled", "options", "mvalue"], outputs: ["mchange", "mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "component", type: RichTextEditorRFComponent, selector: "rich-text-editor-rf" }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
190
191
|
}
|
|
191
192
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FormGeneratorComponent, decorators: [{
|
|
192
193
|
type: Component,
|
|
@@ -200,10 +201,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
200
201
|
NgSwitchDefault,
|
|
201
202
|
NgTemplateOutlet,
|
|
202
203
|
InputBasicComponent,
|
|
204
|
+
RichTextEditorRFComponent,
|
|
203
205
|
BtnComponent,
|
|
204
206
|
FunctionCaller2,
|
|
205
207
|
ToAnyPipe,
|
|
206
|
-
], template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{ gridLGStyle() }} row-cols-xxl-{{\n gridXXLStyle()\n }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedFormSchema(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @default {\n <app-input-basic\n [noFormat]=\"scheme.noFormat\"\n [name]=\"scheme.field\"\n [form]=\"scheme.form || form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [stacked]=\"scheme.stacked\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n }\n </div>\n }\n </div>\n <div class=\"row row-cols-auto justify-content-end\">\n <div class=\"\">\n @if (showSubmitBtn()) {\n <app-btn [text]=\"submitBtnText()\" actionType=\"submit\" group=\"submit\" [form]=\"form()\" (mclick)=\"submit(submitBtn)\" #submitBtn />\n }\n @if (submitBtnTemplate()) {\n <ng-container *ngTemplateOutlet=\"submitBtnTemplate()\"></ng-container>\n }\n </div>\n </div>\n </form>\n</loader>\n" }]
|
|
208
|
+
], template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{ gridLGStyle() }} row-cols-xxl-{{\n gridXXLStyle()\n }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedFormSchema(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n @case (scheme.type == 'richtext') {\n <rich-text-editor-rf\n [form]=\"scheme.form || form()\"\n [label]=\"scheme.label!\"\n [clearOnDisable]=\"scheme.clearOnDisable!\"\n [stacked]=\"scheme.stacked\"\n [labelField]=\"scheme.labelField!\"\n [noFormat]=\"scheme.noFormat!\"\n [labelType]=\"scheme.labelType | toAny\"\n (mchange)=\"mchangeEmitter()\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field\"\n [debug]=\"scheme.debug!\"\n [showRequiredTag]=\"scheme.showRequiredTag!\"\n [optionFormatter]=\"scheme.optionFormatter!\"\n [valueField]=\"scheme.valueField!\"\n [optionsFunc]=\"scheme.optionsFunc!\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [autoPickValueField]=\"scheme.autoPickValueField!\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint!\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf! | functionCaller2: form().value : (scheme.field | toAny))\n \" />\n }\n @default {\n <app-input-basic\n [noFormat]=\"scheme.noFormat\"\n [name]=\"scheme.field\"\n [form]=\"scheme.form || form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [stacked]=\"scheme.stacked\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n (mchange)=\"mchangeEmitter()\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [showValidationMsg]=\"scheme.showValidationMsg\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form().value : (scheme.field | toAny))\" />\n }\n }\n </div>\n }\n </div>\n <div class=\"row row-cols-auto justify-content-end\">\n <div class=\"\">\n @if (showSubmitBtn()) {\n <app-btn [text]=\"submitBtnText()\" actionType=\"submit\" group=\"submit\" [form]=\"form()\" (mclick)=\"submit(submitBtn)\" #submitBtn />\n }\n @if (submitBtnTemplate()) {\n <ng-container *ngTemplateOutlet=\"submitBtnTemplate()\"></ng-container>\n }\n </div>\n </div>\n </form>\n</loader>\n" }]
|
|
207
209
|
}], propDecorators: { keyField: [{
|
|
208
210
|
type: Input
|
|
209
211
|
}], onSubmit: [{
|
|
@@ -222,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
222
224
|
type: Input,
|
|
223
225
|
args: ['isShow']
|
|
224
226
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFnRCxXQUFXLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFB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QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ3VCLG1CQUFtQjtzQkFBaEQsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBQ25CLFVBQVU7c0JBQWxCLEtBQUs7Z0JBcUI4QyxXQUFXO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUd6QixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVHlwZSwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1HZW5lcmF0b3I8VEZvcm1Hcm91cCBleHRlbmRzIElPYmplY3RMaXRlcmFsPiB7XG4gIGZvcm1TY2hlbWEgPSBzaWduYWw8SUJhc2VGb3JtU2NoZW1hPFRGb3JtR3JvdXAsIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXA+PltdPihbXSk7XG59XG5cbi8qKlxuICogRm9ybSBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgdGhlIGZvcm1TY2hlbWFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9PiBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXA+IHtcbiAgQElucHV0KCkga2V5RmllbGQ6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcblxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgnc3VibWlzc2lvblJlc3BvbnNlJykgX3N1Ym1pc3Npb25SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmUnKTtcbiAgc2hvd1N1Ym1pdEJ0biA9IGlucHV0KHRydWUpO1xuXG4gIGdyaWRTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgZ3JpZE1EU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIGdyaWRMR1N0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICBncmlkWFhMU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG5cbiAgZm9ybUdyaWRDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgdXNlTG9hZGVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgX2xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbXB1dGVkTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnVzZUxvYWRlcigpID8gdGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5fbG9hZGluZygpIDogZmFsc2UpKTtcblxuICBmb3JtID0gaW5wdXQ8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+Pih1bmRlZmluZWQsIHt9KTtcbiAgc3VibWlzc2lvblJlc3BvbnNlOiBhbnk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYSh2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2LmZpbHRlcigoeCkgPT4geCkpKTtcbiAgfVxuICBASW5wdXQoJ2lzU2hvdycpIHNldCBfaXNTaG93KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICBjZWxsQ291bnRyeUNvZGUzcyA9IHNpZ25hbDxJRm9ybU9wdGlvbnM+KHt9KTtcbiAgc3ViczogeyBmaWVsZE5hbWU6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIG92ZXJyaWRlIGZvcm1TY2hlbWEgPSBzaWduYWw8SUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXT4oW10pO1xuICBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkpO1xuXG4gIGNvbXB1dGVkRm9ybVNjaGVtYSA9IGNvbXB1dGVkKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWwoKSxcbiAgICAgICAgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdO1xuICAgICAgcmV0dXJuIGZvcm1TY2hlbWEuZmlsdGVyKChzY2hlbWUpID0+ICFzY2hlbWUuaGlkZGVuICYmICghc2NoZW1lLmhpZGVJZkZ1bmMgfHwgIXNjaGVtZS5oaWRlSWZGdW5jKGZvcm1WYWwpKSk7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG4gIC8vIG1pc2NJbmRleDogVE1pc2NJbmRleDtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8uc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3VicyA9IFtdO1xuICB9XG5cbiAgaW5pdChzY2hlbWE6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHNjaGVtYSkgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICB0aGlzLmZvcm1TY2hlbWEuc2V0KHNjaGVtYSk7XG4gICAgaWYgKHNjaGVtYSlcbiAgICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSlcbiAgICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSwgdGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5zdGFja2VkID09IG51bGwpIHNjaGVtZS5zdGFja2VkID0gdHJ1ZTtcbiAgICBpZiAoc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwpIHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmZvcm0oKVxuICAgICAgICA/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSwgciwgdGhpcyk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzLnB1c2goeyBzdWI6IHN1YiwgZmllbGROYW1lOiBzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCkgfSk7XG4gICAgfVxuICB9XG4gIGRldGFjaEZvcm1TY2hlbWUoc2NoZW1lSW5kZXg/OiBudW1iZXIsIGZpZWxkTmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuc3Vicy5maW5kKCh4KSA9PiB4LmZpZWxkTmFtZSA9PSB0aGlzLmZvcm1TY2hlbWFbc2NoZW1lSW5kZXhdPy5maWVsZCB8fCB4LmZpZWxkTmFtZSA9PSBmaWVsZE5hbWUpPy5zdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgYW1lbmRGb3JtU2NoZW1lKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCwgZm9ybVNjaGVtZTogUGFydGlhbDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPj4pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmZvcm1TY2hlbWEudXBkYXRlKChmb3JtU2NoZW1hKSA9PiB7XG4gICAgICBjb25zdCBpbmQgPSB0aGlzLmZvcm1TY2hlbWEoKS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICAgIGlmIChpbmQgPiAtMSkge1xuICAgICAgICB0aGlzLmZvcm1TY2hlbWFbaW5kXSA9IHtcbiAgICAgICAgICAuLi50aGlzLmZvcm1TY2hlbWFbaW5kXSxcbiAgICAgICAgICAuLi4oZm9ybVNjaGVtZSBhcyBhbnkpLFxuICAgICAgICB9O1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgLy8gdGhpcy5mb3JtU2NoZW1hW2luZF0ub3B0aW9ucyA9IGZvcm1TY2hlbWUub3B0aW9ucztcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtU2NoZW1hO1xuICAgIH0pO1xuICB9XG5cbiAgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKTtcbiAgICBjb25zdCBpbmQgPSBmb3JtU2NoZW1hLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHJldHVybiBpbmQgPiAtMSA/IGZvcm1TY2hlbWFbaW5kXSA6IG51bGw7XG4gIH07XG5cbiAgYWRkVG9Gb3JtU2NoZW1hKGZvcm1TY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tRm9ybVNjaGVtYShmb3JtU2NoZW1lLmZpZWxkPy50b1N0cmluZygpKTtcbiAgICBjb25zdCBfZnM6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+ID0gY2xvbmVEZWVwKGZvcm1TY2hlbWUpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShfZnMpO1xuICAgIHRoaXMuZm9ybVNjaGVtYS51cGRhdGUoKGZvcm1TY2hlbWEpID0+IGZvcm1TY2hlbWEuY29uY2F0KFtfZnNdKSk7XG4gIH1cblxuICByZW1vdmVGcm9tRm9ybVNjaGVtYShmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGluZCA9IHRoaXMuZm9ybVNjaGVtYSgpLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShpbmQsIGZpZWxkTmFtZSk7XG4gICAgaWYgKGluZCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5mb3JtU2NoZW1hKClbaW5kXT8ub25SZW1vdmVGdW5jKVxuICAgICAgICB0aGlzLmZvcm1TY2hlbWEoKVtpbmRdPy5vblJlbW92ZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSBhcyBhbnksIHRoaXMuZm9ybSgpLmNvbnRyb2xzW2ZpZWxkTmFtZV0sIHRoaXMpO1xuICAgICAgdGhpcy5mb3JtU2NoZW1hLnVwZGF0ZSgoZm9ybVNjaGVtYSkgPT4ge1xuICAgICAgICBmb3JtU2NoZW1hLnNwbGljZShpbmQsIDEpO1xuICAgICAgICByZXR1cm4gZm9ybVNjaGVtYTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wdGlvbkxhYmVsKCRldmVudDogYW55LCBzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSAkZXZlbnQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoYnRuPzogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgYnRuPy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWwoKTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdChmb3JtVmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRGdW5jKGZvcm1WYWwpO1xuICAgICAgICB0aGlzLnVTLmluZm8odGhpcy5zdWJtaXRTdWNjZXNzVGV4dCgpLCAxKTtcbiAgICAgICAgdGhpcy5fc3VibWlzc2lvblJlc3BvbnNlLmVtaXQodGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51Uy5pbmZvKGVycm9yLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKGZhbHNlKTtcbiAgICB9IGVsc2UgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybVZhbCgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRm9ybVNjaGVtYTxcbiAgVCxcbiAgQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VD4sXG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IHtcbiAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbltdO1xuICBhdXRvUGlja1ZhbHVlRmllbGQ/OiBib29sZWFuO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgY2xlYXJPbkRpc2FibGU/OiBib29sZWFuO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlMz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJQmFzZUZvcm1TY2hlbWE8VCwgQ29tcG9uZW50LCBURm9ybUdyb3VwPltdO1xuICBkZWNpbWFsUG9pbnRzPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkSWY/OiAocm93OiBhbnksIGNlbGxGaWVsZD86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgaGlkZUlmRnVuYz86IChyb3cpID0+IGJvb2xlYW47XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBmb3JtPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBnZXRDb3VudHJ5Q29kZTNLZXk/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNTZWFyY2hGaWVsZD86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xuICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gIG9wdGlvbkxhYmVsRm9ybWF0dGVyPzogKHJvdykgPT4gc3RyaW5nO1xuICBtYXg/OiBudW1iZXI7XG4gIG1pbj86IG51bWJlcjtcbiAgbm9Gb3JtYXQ/OiBib29sZWFuO1xuICBvcHRpb25Gb3JtYXR0ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBhbnlbXTtcbiAgb3B0aW9uc0FzeW5jPzogT2JzZXJ2YWJsZTxhbnlbXT4gfCBQcm9taXNlPGFueVtdPjtcbiAgb3B0aW9uc0luaXRGdW5jPzogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIG9wdGlvbnNJbml0RnVuYzI/OiAoKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgb3B0aW9uc0tleT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHNlYXJjaEZ1bmM/OiAoLi4uYXJncykgPT4gYW55O1xuICBzZXRBc0NvdW50cnlDb2RlMz86IGJvb2xlYW47XG4gIHNob3dWYWxpZGF0aW9uPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb25JY29uPzogYm9vbGVhbjtcbiAgdGVtcGxhdGVWYWx1ZT86IGFueTtcbiAgdHlwZT86IElucHV0VHlwZTtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG4gIHZhbHVlPzogYW55O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICBvcHRpb25zRnVuYz86ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIHRyaWdnZXJPbkNoYW5nZU9uSW5pdD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcj86IChyb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IGFueSB9LCBmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHN0cmluZztcbiAgZXh0cmE/OiBhbnk7XG4gIG9uQ2hhbmdlRnVuYz86IChyb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF0/OiBURm9ybUdyb3VwW0tdWyd2YWx1ZSddIH0sIGNlbGxWYWx1ZT86IGFueSwgY29tcG9uZW50PzogQ29tcG9uZW50KSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IGFueTtcbiAgb25SZW1vdmVGdW5jPzogKHJvdzogeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LCBjZWxsPzogYW55LCBjb21wb25lbnQ/OiBDb21wb25lbnQpID0+IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25MYWJlbD86IHN0cmluZztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb25Nc2c/OiBib29sZWFuO1xuICBkb250Rm9ybWF0QXNJbnB1dD86IGJvb2xlYW47XG4gIHNob3dSZXF1aXJlZFRhZz86IGJvb2xlYW47XG4gIGljb24/OiBJY29uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8VEZvcm1Hcm91cCwgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPj4ge1xuICBjaGlsZHJlbj86IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W107XG4gIGxhYmVsVHlwZT86IE9wdGlvbkxhYmVsVHlwZTtcbiAgZmllbGQ6IGtleW9mIFRGb3JtR3JvdXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImNvbXB1dGVkTG9hZGluZygpXCI+XG4gIDxmb3JtPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7IGdyaWRTdHlsZSgpIH19IHJvdy1jb2xzLW1kLXt7IGdyaWRNRFN0eWxlKCkgfX0gcm93LWNvbHMtbGcte3sgZ3JpZExHU3R5bGUoKSB9fSByb3ctY29scy14eGwte3tcbiAgICAgICAgZ3JpZFhYTFN0eWxlKClcbiAgICAgIH19IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBmb3JtR3JpZENsYXNzKCkgfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwiY2VsbENvdW50cnlDb2RlM3Nbc2NoZW1lLmdldENvdW50cnlDb2RlM0tleV0gfHwgc2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0oKS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybSgpLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0oKS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0bigpKSB7XG4gICAgICAgICAgPGFwcC1idG4gW3RleHRdPVwic3VibWl0QnRuVGV4dCgpXCIgYWN0aW9uVHlwZT1cInN1Ym1pdFwiIGdyb3VwPVwic3VibWl0XCIgW2Zvcm1dPVwiZm9ybSgpXCIgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiICNzdWJtaXRCdG4gLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHN1Ym1pdEJ0blRlbXBsYXRlKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWl0QnRuVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9sb2FkZXI+XG4iXX0=
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFnRCxXQUFXLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFB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LFlBQVk7d0JBQ1osZUFBZTt3QkFDZixTQUFTO3FCQUNWOzhCQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUN1QixtQkFBbUI7c0JBQWhELE1BQU07dUJBQUMsb0JBQW9CO2dCQUNuQixVQUFVO3NCQUFsQixLQUFLO2dCQXFCOEMsV0FBVztzQkFBOUQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFHekIsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFR5cGUsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCwgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yUkZDb21wb25lbnQgfSBmcm9tICcuLi9yaWNoLXRleHQtZWRpdG9yLXJmL3JpY2gtdGV4dC1lZGl0b3ItcmYuY29tcG9uZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXAgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbD4ge1xuICBmb3JtU2NoZW1hID0gc2lnbmFsPElCYXNlRm9ybVNjaGVtYTxURm9ybUdyb3VwLCBCYXNlRm9ybUdlbmVyYXRvcjxURm9ybUdyb3VwPj5bXT4oW10pO1xufVxuXG4vKipcbiAqIEZvcm0gc2hvdWxkIGJlIHNldCBiZWZvcmUgdGhlIHRoZSBmb3JtU2NoZW1hXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZ2VuZXJhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9PiBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXA+IHtcbiAgQElucHV0KCkga2V5RmllbGQ6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcblxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgnc3VibWlzc2lvblJlc3BvbnNlJykgX3N1Ym1pc3Npb25SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmUnKTtcbiAgc2hvd1N1Ym1pdEJ0biA9IGlucHV0KHRydWUpO1xuXG4gIGdyaWRTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgZ3JpZE1EU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIGdyaWRMR1N0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICBncmlkWFhMU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG5cbiAgZm9ybUdyaWRDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgdXNlTG9hZGVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgX2xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbXB1dGVkTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnVzZUxvYWRlcigpID8gdGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5fbG9hZGluZygpIDogZmFsc2UpKTtcblxuICBmb3JtID0gaW5wdXQ8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+Pih1bmRlZmluZWQsIHt9KTtcbiAgc3VibWlzc2lvblJlc3BvbnNlOiBhbnk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYSh2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2LmZpbHRlcigoeCkgPT4geCkpKTtcbiAgfVxuICBASW5wdXQoJ2lzU2hvdycpIHNldCBfaXNTaG93KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICBjZWxsQ291bnRyeUNvZGUzcyA9IHNpZ25hbDxJRm9ybU9wdGlvbnM+KHt9KTtcbiAgc3ViczogeyBmaWVsZE5hbWU6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIG92ZXJyaWRlIGZvcm1TY2hlbWEgPSBzaWduYWw8SUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXT4oW10pO1xuICBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkpO1xuXG4gIGNvbXB1dGVkRm9ybVNjaGVtYSA9IGNvbXB1dGVkKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWwoKSxcbiAgICAgICAgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdO1xuICAgICAgcmV0dXJuIGZvcm1TY2hlbWEuZmlsdGVyKChzY2hlbWUpID0+ICFzY2hlbWUuaGlkZGVuICYmICghc2NoZW1lLmhpZGVJZkZ1bmMgfHwgIXNjaGVtZS5oaWRlSWZGdW5jKGZvcm1WYWwpKSk7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG4gIC8vIG1pc2NJbmRleDogVE1pc2NJbmRleDtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8uc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3VicyA9IFtdO1xuICB9XG5cbiAgaW5pdChzY2hlbWE6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHNjaGVtYSkgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICB0aGlzLmZvcm1TY2hlbWEuc2V0KHNjaGVtYSk7XG4gICAgaWYgKHNjaGVtYSlcbiAgICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSlcbiAgICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSwgdGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5zdGFja2VkID09IG51bGwpIHNjaGVtZS5zdGFja2VkID0gdHJ1ZTtcbiAgICBpZiAoc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwpIHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmZvcm0oKVxuICAgICAgICA/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSwgciwgdGhpcyk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzLnB1c2goeyBzdWI6IHN1YiwgZmllbGROYW1lOiBzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCkgfSk7XG4gICAgfVxuICB9XG4gIGRldGFjaEZvcm1TY2hlbWUoc2NoZW1lSW5kZXg/OiBudW1iZXIsIGZpZWxkTmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuc3Vicy5maW5kKCh4KSA9PiB4LmZpZWxkTmFtZSA9PSB0aGlzLmZvcm1TY2hlbWFbc2NoZW1lSW5kZXhdPy5maWVsZCB8fCB4LmZpZWxkTmFtZSA9PSBmaWVsZE5hbWUpPy5zdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgYW1lbmRGb3JtU2NoZW1lKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCwgZm9ybVNjaGVtZTogUGFydGlhbDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPj4pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmZvcm1TY2hlbWEudXBkYXRlKChmb3JtU2NoZW1hKSA9PiB7XG4gICAgICBjb25zdCBpbmQgPSB0aGlzLmZvcm1TY2hlbWEoKS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICAgIGlmIChpbmQgPiAtMSkge1xuICAgICAgICB0aGlzLmZvcm1TY2hlbWFbaW5kXSA9IHtcbiAgICAgICAgICAuLi50aGlzLmZvcm1TY2hlbWFbaW5kXSxcbiAgICAgICAgICAuLi4oZm9ybVNjaGVtZSBhcyBhbnkpLFxuICAgICAgICB9O1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgLy8gdGhpcy5mb3JtU2NoZW1hW2luZF0ub3B0aW9ucyA9IGZvcm1TY2hlbWUub3B0aW9ucztcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtU2NoZW1hO1xuICAgIH0pO1xuICB9XG5cbiAgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKTtcbiAgICBjb25zdCBpbmQgPSBmb3JtU2NoZW1hLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHJldHVybiBpbmQgPiAtMSA/IGZvcm1TY2hlbWFbaW5kXSA6IG51bGw7XG4gIH07XG5cbiAgYWRkVG9Gb3JtU2NoZW1hKGZvcm1TY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tRm9ybVNjaGVtYShmb3JtU2NoZW1lLmZpZWxkPy50b1N0cmluZygpKTtcbiAgICBjb25zdCBfZnM6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+ID0gY2xvbmVEZWVwKGZvcm1TY2hlbWUpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShfZnMpO1xuICAgIHRoaXMuZm9ybVNjaGVtYS51cGRhdGUoKGZvcm1TY2hlbWEpID0+IGZvcm1TY2hlbWEuY29uY2F0KFtfZnNdKSk7XG4gIH1cblxuICByZW1vdmVGcm9tRm9ybVNjaGVtYShmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGluZCA9IHRoaXMuZm9ybVNjaGVtYSgpLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShpbmQsIGZpZWxkTmFtZSk7XG4gICAgaWYgKGluZCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5mb3JtU2NoZW1hKClbaW5kXT8ub25SZW1vdmVGdW5jKVxuICAgICAgICB0aGlzLmZvcm1TY2hlbWEoKVtpbmRdPy5vblJlbW92ZUZ1bmModGhpcy5mb3JtKCkuZ2V0UmF3VmFsdWUoKSBhcyBhbnksIHRoaXMuZm9ybSgpLmNvbnRyb2xzW2ZpZWxkTmFtZV0sIHRoaXMpO1xuICAgICAgdGhpcy5mb3JtU2NoZW1hLnVwZGF0ZSgoZm9ybVNjaGVtYSkgPT4ge1xuICAgICAgICBmb3JtU2NoZW1hLnNwbGljZShpbmQsIDEpO1xuICAgICAgICByZXR1cm4gZm9ybVNjaGVtYTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wdGlvbkxhYmVsKCRldmVudDogYW55LCBzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSAkZXZlbnQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoYnRuPzogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgYnRuPy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWwoKTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdChmb3JtVmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRGdW5jKGZvcm1WYWwpO1xuICAgICAgICB0aGlzLnVTLmluZm8odGhpcy5zdWJtaXRTdWNjZXNzVGV4dCgpLCAxKTtcbiAgICAgICAgdGhpcy5fc3VibWlzc2lvblJlc3BvbnNlLmVtaXQodGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51Uy5pbmZvKGVycm9yLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKGZhbHNlKTtcbiAgICB9IGVsc2UgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybVZhbCgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRm9ybVNjaGVtYTxcbiAgVCxcbiAgQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VD4sXG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IHtcbiAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbltdO1xuICBhdXRvUGlja1ZhbHVlRmllbGQ/OiBib29sZWFuO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgY2xlYXJPbkRpc2FibGU/OiBib29sZWFuO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlMz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJQmFzZUZvcm1TY2hlbWE8VCwgQ29tcG9uZW50LCBURm9ybUdyb3VwPltdO1xuICBkZWNpbWFsUG9pbnRzPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkSWY/OiAocm93OiBhbnksIGNlbGxGaWVsZD86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgaGlkZUlmRnVuYz86IChyb3cpID0+IGJvb2xlYW47XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBmb3JtPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBnZXRDb3VudHJ5Q29kZTNLZXk/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNTZWFyY2hGaWVsZD86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xuICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gIG9wdGlvbkxhYmVsRm9ybWF0dGVyPzogKHJvdykgPT4gc3RyaW5nO1xuICBtYXg/OiBudW1iZXI7XG4gIG1pbj86IG51bWJlcjtcbiAgbm9Gb3JtYXQ/OiBib29sZWFuO1xuICBvcHRpb25Gb3JtYXR0ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBhbnlbXTtcbiAgb3B0aW9uc0FzeW5jPzogT2JzZXJ2YWJsZTxhbnlbXT4gfCBQcm9taXNlPGFueVtdPjtcbiAgb3B0aW9uc0luaXRGdW5jPzogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIG9wdGlvbnNJbml0RnVuYzI/OiAoKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgb3B0aW9uc0tleT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHNlYXJjaEZ1bmM/OiAoLi4uYXJncykgPT4gYW55O1xuICBzZXRBc0NvdW50cnlDb2RlMz86IGJvb2xlYW47XG4gIHNob3dWYWxpZGF0aW9uPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb25JY29uPzogYm9vbGVhbjtcbiAgdGVtcGxhdGVWYWx1ZT86IGFueTtcbiAgdHlwZT86IElucHV0VHlwZTtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG4gIHZhbHVlPzogYW55O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICBvcHRpb25zRnVuYz86ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIHRyaWdnZXJPbkNoYW5nZU9uSW5pdD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcj86IChyb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IGFueSB9LCBmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHN0cmluZztcbiAgZXh0cmE/OiBhbnk7XG4gIG9uQ2hhbmdlRnVuYz86IChyb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF0/OiBURm9ybUdyb3VwW0tdWyd2YWx1ZSddIH0sIGNlbGxWYWx1ZT86IGFueSwgY29tcG9uZW50PzogQ29tcG9uZW50KSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IGFueTtcbiAgb25SZW1vdmVGdW5jPzogKHJvdzogeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LCBjZWxsPzogYW55LCBjb21wb25lbnQ/OiBDb21wb25lbnQpID0+IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25MYWJlbD86IHN0cmluZztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb25Nc2c/OiBib29sZWFuO1xuICBkb250Rm9ybWF0QXNJbnB1dD86IGJvb2xlYW47XG4gIHNob3dSZXF1aXJlZFRhZz86IGJvb2xlYW47XG4gIGljb24/OiBJY29uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8VEZvcm1Hcm91cCwgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPj4ge1xuICBjaGlsZHJlbj86IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W107XG4gIGxhYmVsVHlwZT86IE9wdGlvbkxhYmVsVHlwZTtcbiAgZmllbGQ6IGtleW9mIFRGb3JtR3JvdXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImNvbXB1dGVkTG9hZGluZygpXCI+XG4gIDxmb3JtPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7IGdyaWRTdHlsZSgpIH19IHJvdy1jb2xzLW1kLXt7IGdyaWRNRFN0eWxlKCkgfX0gcm93LWNvbHMtbGcte3sgZ3JpZExHU3R5bGUoKSB9fSByb3ctY29scy14eGwte3tcbiAgICAgICAgZ3JpZFhYTFN0eWxlKClcbiAgICAgIH19IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBmb3JtR3JpZENsYXNzKCkgfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwiY2VsbENvdW50cnlDb2RlM3Nbc2NoZW1lLmdldENvdW50cnlDb2RlM0tleV0gfHwgc2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0oKS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybSgpLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdyaWNodGV4dCcpIHtcbiAgICAgICAgICAgICAgPHJpY2gtdGV4dC1lZGl0b3ItcmZcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWwhXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlIVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWchXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWchXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXIhXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmMhXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnQhXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiEgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0oKS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWQgfHwgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtKCkudmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICBAaWYgKHNob3dTdWJtaXRCdG4oKSkge1xuICAgICAgICAgIDxhcHAtYnRuIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiIGFjdGlvblR5cGU9XCJzdWJtaXRcIiBncm91cD1cInN1Ym1pdFwiIFtmb3JtXT1cImZvcm0oKVwiIChtY2xpY2spPVwic3VibWl0KHN1Ym1pdEJ0bilcIiAjc3VibWl0QnRuIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbG9hZGVyPlxuIl19
|
|
@@ -46,6 +46,18 @@ export class InputBase {
|
|
|
46
46
|
});
|
|
47
47
|
this.readonlySignal = signal(null);
|
|
48
48
|
this.dirtySignal = signal(false);
|
|
49
|
+
this.controlSignal = computed(() => {
|
|
50
|
+
this.validSignal();
|
|
51
|
+
this.invalidSignal();
|
|
52
|
+
this.dirtySignal();
|
|
53
|
+
this.touchedSignal();
|
|
54
|
+
this.errorsSignal();
|
|
55
|
+
this.pendingSignal();
|
|
56
|
+
this.pristineSignal();
|
|
57
|
+
this.valueSignal();
|
|
58
|
+
this.controlRequiredSignal();
|
|
59
|
+
return this.control;
|
|
60
|
+
});
|
|
49
61
|
this.touchedSignal = signal(false);
|
|
50
62
|
this.errorsSignal = signal(null);
|
|
51
63
|
this.pendingSignal = signal(false);
|
|
@@ -164,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
164
176
|
type: Input,
|
|
165
177
|
args: ['type']
|
|
166
178
|
}] } });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQWdCLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUs3RCxNQUFNLE9BQU8sU0FBUztJQUp0QjtRQVdFLDRCQUF1QixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLGFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUseUJBQW9CLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDeEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFB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QUVELFNBQVM7a0JBSnJCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO2lCQUNiOzhCQWtCNkMsU0FBUztzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJTSxTQUFTO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUtTLEtBQUs7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBTWhDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR3lDLEtBQUs7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBT2IsY0FBYztzQkFBekMsS0FBSzt1QkFBQyxlQUFlO2dCQUlKLElBQUk7c0JBQXJCLEtBQUs7dUJBQUMsS0FBSztnQkFHTSxJQUFJO3NCQUFyQixLQUFLO3VCQUFDLEtBQUs7Z0JBR0MsUUFBUTtzQkFBcEIsS0FBSztnQkFHTyxRQUFRO3NCQUFwQixLQUFLO2dCQWNhLEtBQUs7c0JBQXZCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBtZXJnZSwgb2YgfSBmcm9tICdyeGpzJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgZG9udEZvcm1hdEFzSW5wdXRTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnZG9udEZvcm1hdEFzSW5wdXQnIH0pO1xuICBkdXBsaWNhdGVDaGVja1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkdXBsaWNhdGVDaGVjaycgfSk7XG4gIGlkU2lnbmFsID0gaW5wdXQoJ2lkJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApLCB7IGFsaWFzOiAnaWQnIH0pO1xuICBpbnB1dENvbnRDbGFzc1NpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2lucHV0Q29udENsYXNzJyB9KTtcbiAgc2hvd1JlcXVpcmVkVGFnU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyBhbGlhczogJ3Nob3dSZXF1aXJlZFRhZycgfSk7XG4gIHRleHRhcmVhUm93c1NpZ25hbCA9IGlucHV0PG51bWJlcj4obnVsbCwgeyBhbGlhczogJ3RleHRhcmVhUm93cycgfSk7XG4gIGVuZExhYmVsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnZW5kTGFiZWwnIH0pO1xuICBlbmRMYWJlbFRvb2x0aXBTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdlbmRMYWJlbFRvb2x0aXAnIH0pO1xuICBsYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2xhYmVsJyB9KTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IF9yZWFkb25seSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5yZWFkb25seVNpZ25hbC5zZXQodik7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IF9yZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXF1aXJlZFNpZ25hbC5zZXQodik7XG4gIH1cblxuICAvKiogRm9ybUdyb3VwICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmb3JtJyB9KSBzZXQgX2Zvcm0odjogRm9ybUdyb3VwPFRGb3JtR3JvdXA+IHwgRm9ybUNvbnRyb2w8VENvbnRyb2w+IHwgQWJzdHJhY3RDb250cm9sPFRDb250cm9sPikge1xuICAgIHRoaXMuZm9ybSA9IHYgYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICAgIHRoaXMubGlzdGVuVG9Db250cm9sKCk7XG4gIH1cblxuICAvKiogU2hvdyB0aGUgaGludCB3aXRob3V0IHRoZSB0b29sdGlwICovXG4gIEBJbnB1dCgpIGlubGluZUhpbnQ6IGJvb2xlYW47XG5cbiAgLyoqIEZvcm1Db250cm9sTmFtZSAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UsIGFsaWFzOiAnbmFtZScgfSkgc2V0IF9uYW1lKHY6IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLm5hbWVTaWduYWwuc2V0KHYpO1xuICAgIHRoaXMubGlzdGVuVG9Db250cm9sKCk7XG4gIH1cblxuICBpbmRldGVybWluYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnaW5kZXRlcm1pbmF0ZScpIHNldCBfaW5kZXRlcm1pbmF0ZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbmRldGVybWluYXRlID0gdjtcbiAgICBpZiAodikgdGhpcy5jb250cm9sPy5wYXRjaFZhbHVlKGZhbHNlKTtcbiAgfVxuICBASW5wdXQoJ21heCcpIHNldCBfbWF4KHY6IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMubWF4U2lnbmFsLnNldCh2KTtcbiAgfVxuICBASW5wdXQoJ21pbicpIHNldCBfbWluKHY6IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMubWluU2lnbmFsLnNldCh2KTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4VG9kYXkodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLm1heFNpZ25hbC5zZXQobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWluVG9kYXkodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLm1pblNpZ25hbC5zZXQobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgfVxuICBwcmVmaXhTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwse2FsaWFzOidwcmVmaXgnfSk7XG4gIG1pbmlTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnbWluaScgfSk7XG4gIGlucENsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPignY29udHJvbC1iZy1ncmF5JywgeyBhbGlhczogJ2lucENsJyB9KTtcbiAgc2hvd0VtcHR5T3B0aW9uU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3Nob3dFbXB0eU9wdGlvbicgfSk7XG4gIHNob3dMYWJlbFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCwgYWxpYXM6ICdzaG93TGFiZWwnIH0pO1xuICBzaG93VmFsaWRhdGlvblNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IGFsaWFzOiAnc2hvd1ZhbGlkYXRpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkIH0pO1xuICBzaG93VmFsaWRhdGlvbkljb25TaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25JY29uJyB9KTtcbiAgc21hbGxTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc21hbGwnIH0pO1xuICBzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25Nc2cnIH0pO1xuICBzdGFja2VkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3N0YWNrZWQnIH0pO1xuXG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLm9UeXBlU2lnbmFsLnNldCh2KTtcbiAgICBpZiAodiA9PSAncGVyY2VudGFnZScpIHtcbiAgICAgIHRoaXMudHlwZVNpZ25hbC5zZXQoJ251bWJlcicpO1xuICAgICAgdGhpcy5tYXhTaWduYWwuc2V0KDEwMCk7XG4gICAgICB0aGlzLm1pblNpZ25hbC5zZXQoMCk7XG4gICAgfSBlbHNlIHRoaXMudHlwZVNpZ25hbC5zZXQodik7XG4gIH1cblxuICBzaG93UGFzc3dvcmRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgZGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgb1R5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHR5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlPigndGV4dCcpO1xuICBtYXhTaWduYWwgPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIG1pblNpZ25hbCA9IHNpZ25hbDxudW1iZXIgfCBzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gIG5hbWVTaWduYWwgPSBzaWduYWw8a2V5b2YgVEZvcm1Hcm91cD4obnVsbCk7XG5cbiAgcHVibGljIGlTID0gaW5qZWN0KElucHV0U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGdldCBjb250cm9sKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik/LmNvbnRyb2xzW3RoaXMubmFtZVNpZ25hbCgpIGFzIGFueV0gYXMgQWJzdHJhY3RDb250cm9sPGFueT47XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdHJveWVyID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcm90ZWN0ZWQgY29udHJvbFZhbHVlQ2hhbmdlc1N1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGxpc3RlblRvQ29udHJvbCgpIHtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy51cGRhdGVDb250cm9sU2lnbmFscygpO1xuICAgIHRoaXMuY29udHJvbFZhbHVlQ2hhbmdlc1N1YiA9IG1lcmdlKHRoaXMuY29udHJvbD8udmFsdWVDaGFuZ2VzIHx8IG9mKG51bGwpLCB0aGlzLmNvbnRyb2w/LnN0YXR1c0NoYW5nZXMgfHwgb2YobnVsbCkpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250cm9sU2lnbmFscygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQ29udHJvbFNpZ25hbHMoKSB7XG4gICAgdGhpcy52YWxpZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy52YWxpZCk7XG4gICAgdGhpcy5pbnZhbGlkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmludmFsaWQpO1xuICAgIHRoaXMuZGlydHlTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uZGlydHkpO1xuICAgIHRoaXMudG91Y2hlZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy50b3VjaGVkKTtcbiAgICB0aGlzLmVycm9yc1NpZ25hbC5zZXQodGhpcy5jb250cm9sPy5lcnJvcnMpO1xuICAgIHRoaXMucGVuZGluZ1NpZ25hbC5zZXQodGhpcy5jb250cm9sPy5wZW5kaW5nKTtcbiAgICB0aGlzLnByaXN0aW5lU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LnByaXN0aW5lKTtcbiAgICB0aGlzLnZhbHVlU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmdldFJhd1ZhbHVlKCkpO1xuICAgIHRoaXMuY29udHJvbFJlcXVpcmVkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSk7XG4gIH1cblxuICBkZXN0cm95ZXJGdW5jID0gdGhpcy5kZXN0cm95ZXIub25EZXN0cm95KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZHJvcHBlZCBpbnB1dCBsaXN0ZW5lcicpO1xuICAgIHRoaXMuY29udHJvbFZhbHVlQ2hhbmdlc1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfSk7XG5cbiAgdmFsaWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnZhbGlkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWVTaWduYWwgPSBzaWduYWw8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5jb250cm9sLmdldFJhd1ZhbHVlPj4obnVsbCk7XG4gIGhhc1ZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZVNpZ25hbCgpPy50b1N0cmluZygpPy50cmltKCk/Lmxlbmd0aCA+IDApO1xuICBpbnZhbGlkQ2hlY2tib3hTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFNpZ25hbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCc7XG4gIH0pO1xuICByZWFkb25seVNpZ25hbCA9IHNpZ25hbDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIGRpcnR5U2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdG91Y2hlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGVycm9yc1NpZ25hbCA9IHNpZ25hbDxJT2JqZWN0TGl0ZXJhbD4obnVsbCk7XG4gIHBlbmRpbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcmlzdGluZVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlcXVpcmVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgY29udHJvbFJlcXVpcmVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgaXNSZXF1aXJlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVxdWlyZWRTaWduYWwoKSB8fCB0aGlzLmNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpKTtcbiAgbmFtZVN0clNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubmFtZVNpZ25hbCgpPy50b1N0cmluZygpKTtcbiAgaW5wdXRDbGFzc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaVMuaW5wdXRDbGFzcyh0aGlzLmlucENsU2lnbmFsKCksIHRoaXMudmFsaWRTaWduYWwoKSwgdGhpcy5pbnZhbGlkU2lnbmFsKCksIHRoaXMuc2hvd1ZhbGlkYXRpb25TaWduYWwoKSkpO1xufVxuIl19
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQWdCLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUs3RCxNQUFNLE9BQU8sU0FBUztJQUp0QjtRQVdFLDRCQUF1QixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLGFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUseUJBQW9CLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDeEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFB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QUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBtZXJnZSwgb2YgfSBmcm9tICdyeGpzJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgZG9udEZvcm1hdEFzSW5wdXRTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnZG9udEZvcm1hdEFzSW5wdXQnIH0pO1xuICBkdXBsaWNhdGVDaGVja1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkdXBsaWNhdGVDaGVjaycgfSk7XG4gIGlkU2lnbmFsID0gaW5wdXQoJ2lkJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApLCB7IGFsaWFzOiAnaWQnIH0pO1xuICBpbnB1dENvbnRDbGFzc1NpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2lucHV0Q29udENsYXNzJyB9KTtcbiAgc2hvd1JlcXVpcmVkVGFnU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyBhbGlhczogJ3Nob3dSZXF1aXJlZFRhZycgfSk7XG4gIHRleHRhcmVhUm93c1NpZ25hbCA9IGlucHV0PG51bWJlcj4obnVsbCwgeyBhbGlhczogJ3RleHRhcmVhUm93cycgfSk7XG4gIGVuZExhYmVsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnZW5kTGFiZWwnIH0pO1xuICBlbmRMYWJlbFRvb2x0aXBTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdlbmRMYWJlbFRvb2x0aXAnIH0pO1xuICBsYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2xhYmVsJyB9KTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IF9yZWFkb25seSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5yZWFkb25seVNpZ25hbC5zZXQodik7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IF9yZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXF1aXJlZFNpZ25hbC5zZXQodik7XG4gIH1cblxuICAvKiogRm9ybUdyb3VwICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmb3JtJyB9KSBzZXQgX2Zvcm0odjogRm9ybUdyb3VwPFRGb3JtR3JvdXA+IHwgRm9ybUNvbnRyb2w8VENvbnRyb2w+IHwgQWJzdHJhY3RDb250cm9sPFRDb250cm9sPikge1xuICAgIHRoaXMuZm9ybSA9IHYgYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICAgIHRoaXMubGlzdGVuVG9Db250cm9sKCk7XG4gIH1cblxuICAvKiogU2hvdyB0aGUgaGludCB3aXRob3V0IHRoZSB0b29sdGlwICovXG4gIEBJbnB1dCgpIGlubGluZUhpbnQ6IGJvb2xlYW47XG5cbiAgLyoqIEZvcm1Db250cm9sTmFtZSAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UsIGFsaWFzOiAnbmFtZScgfSkgc2V0IF9uYW1lKHY6IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLm5hbWVTaWduYWwuc2V0KHYpO1xuICAgIHRoaXMubGlzdGVuVG9Db250cm9sKCk7XG4gIH1cblxuICBpbmRldGVybWluYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnaW5kZXRlcm1pbmF0ZScpIHNldCBfaW5kZXRlcm1pbmF0ZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbmRldGVybWluYXRlID0gdjtcbiAgICBpZiAodikgdGhpcy5jb250cm9sPy5wYXRjaFZhbHVlKGZhbHNlKTtcbiAgfVxuICBASW5wdXQoJ21heCcpIHNldCBfbWF4KHY6IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMubWF4U2lnbmFsLnNldCh2KTtcbiAgfVxuICBASW5wdXQoJ21pbicpIHNldCBfbWluKHY6IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMubWluU2lnbmFsLnNldCh2KTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4VG9kYXkodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLm1heFNpZ25hbC5zZXQobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWluVG9kYXkodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLm1pblNpZ25hbC5zZXQobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgfVxuICBwcmVmaXhTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdwcmVmaXgnIH0pO1xuICBtaW5pU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyBhbGlhczogJ21pbmknIH0pO1xuICBpbnBDbFNpZ25hbCA9IGlucHV0PHN0cmluZz4oJ2NvbnRyb2wtYmctZ3JheScsIHsgYWxpYXM6ICdpbnBDbCcgfSk7XG4gIHNob3dFbXB0eU9wdGlvblNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCwgYWxpYXM6ICdzaG93RW1wdHlPcHRpb24nIH0pO1xuICBzaG93TGFiZWxTaWduYWwgPSBpbnB1dDxib29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd0xhYmVsJyB9KTtcbiAgc2hvd1ZhbGlkYXRpb25TaWduYWwgPSBpbnB1dDxib29sZWFuPihmYWxzZSwgeyBhbGlhczogJ3Nob3dWYWxpZGF0aW9uJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCB9KTtcbiAgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3Nob3dWYWxpZGF0aW9uSWNvbicgfSk7XG4gIHNtYWxsU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3NtYWxsJyB9KTtcbiAgc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwgPSBpbnB1dDxib29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3Nob3dWYWxpZGF0aW9uTXNnJyB9KTtcbiAgc3RhY2tlZFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCwgYWxpYXM6ICdzdGFja2VkJyB9KTtcblxuICBASW5wdXQoJ3R5cGUnKSBzZXQgX3R5cGUodjogSW5wdXRUeXBlKSB7XG4gICAgdGhpcy5vVHlwZVNpZ25hbC5zZXQodik7XG4gICAgaWYgKHYgPT0gJ3BlcmNlbnRhZ2UnKSB7XG4gICAgICB0aGlzLnR5cGVTaWduYWwuc2V0KCdudW1iZXInKTtcbiAgICAgIHRoaXMubWF4U2lnbmFsLnNldCgxMDApO1xuICAgICAgdGhpcy5taW5TaWduYWwuc2V0KDApO1xuICAgIH0gZWxzZSB0aGlzLnR5cGVTaWduYWwuc2V0KHYpO1xuICB9XG5cbiAgc2hvd1Bhc3N3b3JkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KG51bGwpO1xuXG4gIGRpc2FibGVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KG51bGwpO1xuXG4gIG9UeXBlU2lnbmFsID0gc2lnbmFsPElucHV0VHlwZSB8IG51bGw+KG51bGwpO1xuICB0eXBlU2lnbmFsID0gc2lnbmFsPElucHV0VHlwZT4oJ3RleHQnKTtcbiAgbWF4U2lnbmFsID0gc2lnbmFsPG51bWJlciB8IHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBtaW5TaWduYWwgPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBuYW1lU2lnbmFsID0gc2lnbmFsPGtleW9mIFRGb3JtR3JvdXA+KG51bGwpO1xuXG4gIHB1YmxpYyBpUyA9IGluamVjdChJbnB1dFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXA8VEZvcm1Hcm91cD4pPy5jb250cm9sc1t0aGlzLm5hbWVTaWduYWwoKSBhcyBhbnldIGFzIEFic3RyYWN0Q29udHJvbDxhbnk+O1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3llciA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xWYWx1ZUNoYW5nZXNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBsaXN0ZW5Ub0NvbnRyb2woKSB7XG4gICAgdGhpcy5jb250cm9sVmFsdWVDaGFuZ2VzU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudXBkYXRlQ29udHJvbFNpZ25hbHMoKTtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUNoYW5nZXNTdWIgPSBtZXJnZSh0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcyB8fCBvZihudWxsKSwgdGhpcy5jb250cm9sPy5zdGF0dXNDaGFuZ2VzIHx8IG9mKG51bGwpKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29udHJvbFNpZ25hbHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUNvbnRyb2xTaWduYWxzKCkge1xuICAgIHRoaXMudmFsaWRTaWduYWwuc2V0KHRoaXMuY29udHJvbD8udmFsaWQpO1xuICAgIHRoaXMuaW52YWxpZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgICB0aGlzLmRpcnR5U2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmRpcnR5KTtcbiAgICB0aGlzLnRvdWNoZWRTaWduYWwuc2V0KHRoaXMuY29udHJvbD8udG91Y2hlZCk7XG4gICAgdGhpcy5lcnJvcnNTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uZXJyb3JzKTtcbiAgICB0aGlzLnBlbmRpbmdTaWduYWwuc2V0KHRoaXMuY29udHJvbD8ucGVuZGluZyk7XG4gICAgdGhpcy5wcmlzdGluZVNpZ25hbC5zZXQodGhpcy5jb250cm9sPy5wcmlzdGluZSk7XG4gICAgdGhpcy52YWx1ZVNpZ25hbC5zZXQodGhpcy5jb250cm9sPy5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLmNvbnRyb2xSZXF1aXJlZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpO1xuICB9XG5cbiAgZGVzdHJveWVyRnVuYyA9IHRoaXMuZGVzdHJveWVyLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2Ryb3BwZWQgaW5wdXQgbGlzdGVuZXInKTtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH0pO1xuXG4gIHZhbGlkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgaW52YWxpZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHZhbHVlU2lnbmFsID0gc2lnbmFsPFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY29udHJvbC5nZXRSYXdWYWx1ZT4+KG51bGwpO1xuICBoYXNWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmFsdWVTaWduYWwoKT8udG9TdHJpbmcoKT8udHJpbSgpPy5sZW5ndGggPiAwKTtcbiAgaW52YWxpZENoZWNrYm94U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmludmFsaWRTaWduYWwoKSAmJiB0aGlzLnR5cGVTaWduYWwoKSA9PSAnY2hlY2tib3gnO1xuICB9KTtcbiAgcmVhZG9ubHlTaWduYWwgPSBzaWduYWw8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICBkaXJ0eVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGNvbnRyb2xTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy52YWxpZFNpZ25hbCgpO1xuICAgIHRoaXMuaW52YWxpZFNpZ25hbCgpO1xuICAgIHRoaXMuZGlydHlTaWduYWwoKTtcbiAgICB0aGlzLnRvdWNoZWRTaWduYWwoKTtcbiAgICB0aGlzLmVycm9yc1NpZ25hbCgpO1xuICAgIHRoaXMucGVuZGluZ1NpZ25hbCgpO1xuICAgIHRoaXMucHJpc3RpbmVTaWduYWwoKTtcbiAgICB0aGlzLnZhbHVlU2lnbmFsKCk7XG4gICAgdGhpcy5jb250cm9sUmVxdWlyZWRTaWduYWwoKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sO1xuICB9KTtcbiAgdG91Y2hlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGVycm9yc1NpZ25hbCA9IHNpZ25hbDxJT2JqZWN0TGl0ZXJhbD4obnVsbCk7XG4gIHBlbmRpbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcmlzdGluZVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlcXVpcmVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgY29udHJvbFJlcXVpcmVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgaXNSZXF1aXJlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVxdWlyZWRTaWduYWwoKSB8fCB0aGlzLmNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpKTtcbiAgbmFtZVN0clNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubmFtZVNpZ25hbCgpPy50b1N0cmluZygpKTtcbiAgaW5wdXRDbGFzc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaVMuaW5wdXRDbGFzcyh0aGlzLmlucENsU2lnbmFsKCksIHRoaXMudmFsaWRTaWduYWwoKSwgdGhpcy5pbnZhbGlkU2lnbmFsKCksIHRoaXMuc2hvd1ZhbGlkYXRpb25TaWduYWwoKSkpO1xufVxuIl19
|