@sapphire-ion/framework 1.0.38 → 1.0.40
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/components/default/default-view/default-view.component.mjs +3 -3
- package/esm2022/lib/components/inputs/custom-input.mjs +1 -1
- package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +3 -3
- package/fesm2022/sapphire-ion-framework.mjs +20 -20
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/custom-input.d.ts +1 -1
- package/package.json +1 -1
|
@@ -372,14 +372,14 @@ export class InputColorComponent extends CustomInput {
|
|
|
372
372
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InputColorComponent, selector: "input-color", providers: [
|
|
373
373
|
...InputProviderFactory.GetProviders(InputColorComponent),
|
|
374
374
|
{ provide: CustomInput, useExisting: forwardRef(() => InputColorComponent) },
|
|
375
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "gradient", first: true, predicate: ["gradient"], descendants: true }, { propertyName: "hueSlider", first: true, predicate: ["hueSlider"], descendants: true }, { propertyName: "alphaSlider", first: true, predicate: ["alphaSlider"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event); Present($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [maskito]=\"HEXMask\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"SetColorFromHex($event, true, true)\" \r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <div class=\" absolute bottom-2 right-8 size-5 rounded-sm overflow-hidden\" [style]=\"{ 'background': value() }\"> </div>\r\n\r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"CopyToClipboard(); $event.stopPropagation();\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"clipboard\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <!-- [maxlength]=\"configuration().maxlength\" -->\r\n <!-- [type]=\"configuration().type\" -->\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n #popover \r\n width=\"fit-content\" \r\n [anchor]=\"inputContainer\" \r\n>\r\n <div class=\"size-full p-2 flex gap-1\"> \r\n <div class=\"flex flex-col w-44 shrink-0 gap-1\">\r\n <div id=\"gradientWrapper\" class=\"w-44 h-32 relative\">\r\n <canvas #gradient width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n </div>\r\n\r\n <div id=\"hueWrapper\" class=\"w-full relative\">\r\n <canvas #hueSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n </div>\r\n\r\n <div id=\"alphaWrapper\" class=\"w-full relative\">\r\n <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n </div>\r\n\r\n <div class=\"w-full flex shrink-0\">\r\n <div class=\"w-full grid grid-cols-5 gap-1\">\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880FFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2DD36FFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFC409FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#EB445AFF' }\"></ng-container>\r\n \r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#C6005CFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FB2C36FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </div>\r\n</sion-popover>\r\n\r\n<ng-template #templateColor let-color>\r\n <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"SetColorFromHex(color, true, true)\" [style.background]=\"color\"></div>\r\n</ng-template>", styles: ["input:focus{outline:solid 1px color-mix(in srgb,var(--ion-color-primary) 30%,transparent)}input{height:1.25rem;border-radius:.25rem;outline:1px solid transparent;transition-property:outline;transition-duration:.2s}.color-indicator{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid white;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.indicator{position:absolute;top:50%;width:6px;height:24px;background-color:#fff;border-radius:3px;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.quick-transition{transition:all 75ms}ion-popover{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i6.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
375
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "gradient", first: true, predicate: ["gradient"], descendants: true }, { propertyName: "hueSlider", first: true, predicate: ["hueSlider"], descendants: true }, { propertyName: "alphaSlider", first: true, predicate: ["alphaSlider"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event); Present($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [maskito]=\"HEXMask\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"SetColorFromHex($event, true, true)\" \r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n />\r\n <div class=\" absolute bottom-2 right-8 size-5 rounded-sm overflow-hidden\" [style]=\"{ 'background': value() }\"> </div>\r\n\r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"CopyToClipboard(); $event.stopPropagation();\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"clipboard\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <!-- [maxlength]=\"configuration().maxlength\" -->\r\n <!-- [type]=\"configuration().type\" -->\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n #popover \r\n width=\"fit-content\" \r\n [anchor]=\"inputContainer\" \r\n>\r\n <div class=\"size-full p-2 flex gap-1\"> \r\n <div class=\"flex flex-col w-44 shrink-0 gap-1\">\r\n <div id=\"gradientWrapper\" class=\"w-44 h-32 relative\">\r\n <canvas #gradient width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n </div>\r\n\r\n <div id=\"hueWrapper\" class=\"w-full relative\">\r\n <canvas #hueSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n </div>\r\n\r\n <div id=\"alphaWrapper\" class=\"w-full relative\">\r\n <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n </div>\r\n\r\n <div class=\"w-full flex shrink-0\">\r\n <div class=\"w-full grid grid-cols-5 gap-1\">\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880FFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2DD36FFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFC409FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#EB445AFF' }\"></ng-container>\r\n \r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#C6005CFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FB2C36FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </div>\r\n</sion-popover>\r\n\r\n<ng-template #templateColor let-color>\r\n <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"SetColorFromHex(color, true, true)\" [style.background]=\"color\"></div>\r\n</ng-template>", styles: ["input:focus{outline:solid 1px color-mix(in srgb,var(--ion-color-primary) 30%,transparent)}input{height:1.25rem;border-radius:.25rem;outline:1px solid transparent;transition-property:outline;transition-duration:.2s}.color-indicator{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid white;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.indicator{position:absolute;top:50%;width:6px;height:24px;background-color:#fff;border-radius:3px;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.quick-transition{transition:all 75ms}ion-popover{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i6.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
376
376
|
}
|
|
377
377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputColorComponent, decorators: [{
|
|
378
378
|
type: Component,
|
|
379
379
|
args: [{ selector: 'input-color', providers: [
|
|
380
380
|
...InputProviderFactory.GetProviders(InputColorComponent),
|
|
381
381
|
{ provide: CustomInput, useExisting: forwardRef(() => InputColorComponent) },
|
|
382
|
-
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event); Present($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [maskito]=\"HEXMask\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"SetColorFromHex($event, true, true)\" \r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <div class=\" absolute bottom-2 right-8 size-5 rounded-sm overflow-hidden\" [style]=\"{ 'background': value() }\"> </div>\r\n\r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"CopyToClipboard(); $event.stopPropagation();\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"clipboard\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <!-- [maxlength]=\"configuration().maxlength\" -->\r\n <!-- [type]=\"configuration().type\" -->\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n #popover \r\n width=\"fit-content\" \r\n [anchor]=\"inputContainer\" \r\n>\r\n <div class=\"size-full p-2 flex gap-1\"> \r\n <div class=\"flex flex-col w-44 shrink-0 gap-1\">\r\n <div id=\"gradientWrapper\" class=\"w-44 h-32 relative\">\r\n <canvas #gradient width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n </div>\r\n\r\n <div id=\"hueWrapper\" class=\"w-full relative\">\r\n <canvas #hueSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n </div>\r\n\r\n <div id=\"alphaWrapper\" class=\"w-full relative\">\r\n <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n </div>\r\n\r\n <div class=\"w-full flex shrink-0\">\r\n <div class=\"w-full grid grid-cols-5 gap-1\">\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880FFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2DD36FFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFC409FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#EB445AFF' }\"></ng-container>\r\n \r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#C6005CFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FB2C36FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </div>\r\n</sion-popover>\r\n\r\n<ng-template #templateColor let-color>\r\n <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"SetColorFromHex(color, true, true)\" [style.background]=\"color\"></div>\r\n</ng-template>", styles: ["input:focus{outline:solid 1px color-mix(in srgb,var(--ion-color-primary) 30%,transparent)}input{height:1.25rem;border-radius:.25rem;outline:1px solid transparent;transition-property:outline;transition-duration:.2s}.color-indicator{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid white;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.indicator{position:absolute;top:50%;width:6px;height:24px;background-color:#fff;border-radius:3px;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.quick-transition{transition:all 75ms}ion-popover{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
382
|
+
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event); Present($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [maskito]=\"HEXMask\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"SetColorFromHex($event, true, true)\" \r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n />\r\n <div class=\" absolute bottom-2 right-8 size-5 rounded-sm overflow-hidden\" [style]=\"{ 'background': value() }\"> </div>\r\n\r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"CopyToClipboard(); $event.stopPropagation();\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"clipboard\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <!-- [maxlength]=\"configuration().maxlength\" -->\r\n <!-- [type]=\"configuration().type\" -->\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n #popover \r\n width=\"fit-content\" \r\n [anchor]=\"inputContainer\" \r\n>\r\n <div class=\"size-full p-2 flex gap-1\"> \r\n <div class=\"flex flex-col w-44 shrink-0 gap-1\">\r\n <div id=\"gradientWrapper\" class=\"w-44 h-32 relative\">\r\n <canvas #gradient width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n </div>\r\n\r\n <div id=\"hueWrapper\" class=\"w-full relative\">\r\n <canvas #hueSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n </div>\r\n\r\n <div id=\"alphaWrapper\" class=\"w-full relative\">\r\n <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n </div>\r\n\r\n <div class=\"w-full flex shrink-0\">\r\n <div class=\"w-full grid grid-cols-5 gap-1\">\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880FFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2DD36FFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFC409FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#EB445AFF' }\"></ng-container>\r\n \r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#C6005CFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FB2C36FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </div>\r\n</sion-popover>\r\n\r\n<ng-template #templateColor let-color>\r\n <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"SetColorFromHex(color, true, true)\" [style.background]=\"color\"></div>\r\n</ng-template>", styles: ["input:focus{outline:solid 1px color-mix(in srgb,var(--ion-color-primary) 30%,transparent)}input{height:1.25rem;border-radius:.25rem;outline:1px solid transparent;transition-property:outline;transition-duration:.2s}.color-indicator{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid white;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.indicator{position:absolute;top:50%;width:6px;height:24px;background-color:#fff;border-radius:3px;box-shadow:0 0 2px #00000080;transform:translate(-50%,-50%);pointer-events:none}.quick-transition{transition:all 75ms}ion-popover{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
383
383
|
}], ctorParameters: () => [{ type: i1.GenericService }], propDecorators: { input: [{
|
|
384
384
|
type: ViewChild,
|
|
385
385
|
args: ['input']
|
|
@@ -478,4 +478,4 @@ function RGBToHex(rgb, alpha = 1) {
|
|
|
478
478
|
}
|
|
479
479
|
const HEXDigitRegex = /[0-9a-f]+/i;
|
|
480
480
|
const HEXMask = ['#', HEXDigitRegex, HEXDigitRegex, HEXDigitRegex, HEXDigitRegex, HEXDigitRegex, HEXDigitRegex, HEXDigitRegex];
|
|
481
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY29sb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1jb2xvci9pbnB1dC1jb2xvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWNvbG9yL2lucHV0LWNvbG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBY2pFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFtQjtJQU1qRCxRQUFRLENBQUMsS0FBd0I7UUFDeEMsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQUMsQ0FBQztJQUM5SCxDQUFDO0lBRUQsWUFDVSxjQUE4QjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQURGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU14QyxhQUFRLEdBQVMsRUFBRSxDQUFDLEVBQUUs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S0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixtQkFBbUI7WUFDbkIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ2hFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNoRSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbEUsQ0FBQzthQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQix5QkFBeUI7WUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDakQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDakQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzthQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQiw2QkFBNkI7WUFDN0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVB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LEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDM0MsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNYLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDNUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQVcsWUFBWSxDQUFDO0FBQzNDLE1BQU0sT0FBTyxHQUEwQixDQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNJb25Qb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9zaW9uLXBvcG92ZXIvc2lvbi1wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hc2tpdG9NYXNrRXhwcmVzc2lvbiwgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuXHJcbnR5cGUgUkdCID0geyByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyIH07XHJcbnR5cGUgSFNMID0geyBoOiBudW1iZXIsIGw6IG51bWJlciwgczogbnVtYmVyIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWNvbG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY29sb3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWNvbG9yLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRDb2xvckNvbXBvbmVudCksXHJcbiAgICB7IHByb3ZpZGU6IEN1c3RvbUlucHV0LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbG9yQ29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENvbG9yQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcbiAgXHJcbiAgLy8gY29uZmlndXJhdGlvbjogSW5wdXRTaWduYWw8SW5wdXRTdHJpbmdDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0U3RyaW5nQ29uZmlndXJhdGlvbj4obmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuaW5wdXQgJiYgKGV2ZW50ID09IG51bGwgfHwgZXZlbnQudGFyZ2V0ID09IHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudCkpIHsgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7IH0gICAgICBcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2VcclxuICApIHsgc3VwZXIoKTsgdGhpcy52YWx1ZS5zZXQoXCJcIik7IH1cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoU0lvblBvcG92ZXJDb21wb25lbnQpIHBvcG92ZXI6IFNJb25Qb3BvdmVyQ29tcG9uZW50O1xyXG5cclxuICByZ2JDb2xvciA6IFJHQiA9IHsgcjogMjU1LCBnOiAwLCBiOiAwIH07XHJcbiAgaHNsQ29sb3IgOiBIU0wgPSB7IGg6IDAsIHM6IDEwMCwgbDogNTAgfTtcclxuICBhbHBoYSAgICA6IG51bWJlciA9IDEwMFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFzeW5jIFByZXNlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucmVuZGVyaW5nID0gdHJ1ZTtcclxuICAgIGF3YWl0IHRoaXMucG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIHRoaXMuSW5pdGlhbGl6ZUdyYWRpZW50KClcclxuICAgIHRoaXMuSW5pdGlhbGl6ZUh1ZVNsaWRlcigpXHJcbiAgICB0aGlzLkluaXRpYWxpemVBbHBoYVNsaWRlcigpXHJcbiAgICB0aGlzLkRyYXdDb2xvckdyYWRpZW50KClcclxuICAgIHRoaXMuRHJhd0h1ZVNsaWRlcigpXHJcbiAgICB0aGlzLkRyYXdBbHBoYVNsaWRlcigpXHJcbiAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFsgR3JhZGllbnQgXVxyXG4gIGluZGljYXRvclg6IG51bWJlciA9IDEwMFxyXG4gIGluZGljYXRvclk6IG51bWJlciA9IDBcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JhZGllbnQnICAgICApIGdyYWRpZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuICBwcml2YXRlIGlzR3JhZGllbnREcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZ3JhZGllbnRDdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcclxuICBwcml2YXRlIGdyYWRpZW50V2lkdGg6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBncmFkaWVudEhlaWdodDogbnVtYmVyID0gMDtcclxuICBJbml0aWFsaXplR3JhZGllbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBncmFkaWVudCAgICAgID0gdGhpcy5ncmFkaWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5ncmFkaWVudFdpZHRoICA9IGdyYWRpZW50LndpZHRoOyBcclxuICAgIHRoaXMuZ3JhZGllbnRIZWlnaHQgPSBncmFkaWVudC5oZWlnaHQ7IFxyXG4gICAgdGhpcy5ncmFkaWVudEN0eCAgICA9IGdyYWRpZW50LmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgZ3JhZGllbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJyAsIHRoaXMuU3RhcnRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnICwgdGhpcy5HcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJyAgICwgdGhpcy5FbmRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5FbmRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgLy8gVG91Y2ggZXZlbnRzXHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5IYW5kbGVHcmFkaWVudFRvdWNoLmJpbmQodGhpcykpO1xyXG4gICAgZ3JhZGllbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJyAsIHRoaXMuSGFuZGxlR3JhZGllbnRUb3VjaC5iaW5kKHRoaXMpKTtcclxuICAgIGdyYWRpZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJyAgLCB0aGlzLkVuZEdyYWRpZW50RHJhZy5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgU3RhcnRHcmFkaWVudERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyYWRpZW50RHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB0aGlzLkhhbmRsZUNvbG9yU2VsZWN0aW9uKGUub2Zmc2V0WCwgZS5vZmZzZXRZKVxyXG4gIH1cclxuICBHcmFkaWVudERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNHcmFkaWVudERyYWdnaW5nKSB7XHJcbiAgICAgIHRoaXMuSGFuZGxlQ29sb3JTZWxlY3Rpb24oZS5vZmZzZXRYLCBlLm9mZnNldFkpXHJcbiAgICB9XHJcbiAgfVxyXG4gIEVuZEdyYWRpZW50RHJhZygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcmFkaWVudERyYWdnaW5nID0gZmFsc2VcclxuICB9XHJcbiAgSGFuZGxlR3JhZGllbnRUb3VjaChlOiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KClcclxuICAgIGlmIChlLnR5cGUgPT09IFwidG91Y2hzdGFydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNHcmFkaWVudERyYWdnaW5nID0gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzR3JhZGllbnREcmFnZ2luZykge1xyXG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5ncmFkaWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdXHJcbiAgICAgIGNvbnN0IHggPSB0b3VjaC5jbGllbnRYIC0gcmVjdC5sZWZ0XHJcbiAgICAgIGNvbnN0IHkgPSB0b3VjaC5jbGllbnRZIC0gcmVjdC50b3BcclxuICAgICAgdGhpcy5IYW5kbGVDb2xvclNlbGVjdGlvbih4LCB5KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSGFuZGxlQ29sb3JTZWxlY3Rpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIENvbnN0cmFpbiBjb29yZGluYXRlcyB0byBjYW52YXMgYm91bmRzXHJcbiAgICB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeCwgdGhpcy5ncmFkaWVudFdpZHRoKSlcclxuICAgIHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih5LCB0aGlzLmdyYWRpZW50SGVpZ2h0KSlcclxuXHJcbiAgICAvLyBTdG9yZSB0aGUgcmF3IHBvc2l0aW9uIHBlcmNlbnRhZ2UgZm9yIHRoZSBpbmRpY2F0b3JcclxuICAgIHRoaXMuaW5kaWNhdG9yWCA9ICh4IC8gdGhpcy5ncmFkaWVudFdpZHRoKSAqIDEwMFxyXG4gICAgdGhpcy5pbmRpY2F0b3JZID0gKHkgLyB0aGlzLmdyYWRpZW50SGVpZ2h0KSAqIDEwMFxyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBzYXR1cmF0aW9uIGFuZCBsaWdodG5lc3MgYmFzZWQgb24gcG9zaXRpb25cclxuICAgIHRoaXMuaHNsQ29sb3IucyA9IE1hdGgucm91bmQodGhpcy5pbmRpY2F0b3JYKVxyXG4gICAgLy8gQWRqdXN0IGxpZ2h0bmVzcyBjYWxjdWxhdGlvbjpcclxuICAgIC8vIC0gVG9wIG9mIGNhbnZhcyAoeT0wKSBzaG91bGQgYmUgd2hpdGUgKGxpZ2h0bmVzcz0xMDApIG9uIHRoZSBsZWZ0IGFuZCBwdXJlIGNvbG9yIChsaWdodG5lc3M9NTApIG9uIHRoZSByaWdodFxyXG4gICAgLy8gLSBCb3R0b20gb2YgY2FudmFzICh5PWhlaWdodCkgc2hvdWxkIGJlIGJsYWNrIChsaWdodG5lc3M9MClcclxuICAgIGlmICh0aGlzLmhzbENvbG9yLnMgPT09IDApIHtcclxuICAgICAgLy8gTGVmdCBlZGdlIGlzIGFsd2F5cyB3aGl0ZSB0byBibGFjaywgcmVnYXJkbGVzcyBvZiB5IHBvc2l0aW9uXHJcbiAgICAgIHRoaXMuaHNsQ29sb3IubCA9IE1hdGgucm91bmQoMTAwIC0gdGhpcy5pbmRpY2F0b3JZKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIG90aGVyIHNhdHVyYXRpb24gdmFsdWVzLCB0b3AgaXMgNTAtMTAwJSBsaWdodG5lc3MgKGJhc2VkIG9uIHNhdHVyYXRpb24pLCBib3R0b20gaXMgMCVcclxuICAgICAgY29uc3QgbWF4TGlnaHRuZXNzID0gMTAwIC0gdGhpcy5oc2xDb2xvci5zIC8gMlxyXG4gICAgICB0aGlzLmhzbENvbG9yLmwgPSBNYXRoLnJvdW5kKG1heExpZ2h0bmVzcyAtICh0aGlzLmluZGljYXRvclkgLyAxMDApICogbWF4TGlnaHRuZXNzKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBjb2xvclxyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZENvbG9yKHRoaXMuaHNsQ29sb3IucywgdGhpcy5oc2xDb2xvci5sLCB0cnVlKVxyXG5cclxuICAgIC8vIFJlZHJhdyBhbHBoYSBzbGlkZXIgd2l0aCBuZXcgY29sb3JcclxuICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgR3JhZGllbnQgXVxyXG4gIFxyXG4gIFVwZGF0ZVNlbGVjdGVkQ29sb3Ioc2F0dXJhdGlvbjogbnVtYmVyIHwgbnVsbCA9IG51bGwsIGxpZ2h0bmVzczogbnVtYmVyIHwgbnVsbCA9IG51bGwsIGVtaXRDaGFuZ2VzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIC8vIFVwZGF0ZSBIU0wgdmFsdWVzXHJcbiAgICBpZihzYXR1cmF0aW9uICE9IG51bGwpe1xyXG4gICAgICB0aGlzLmhzbENvbG9yLnMgPSBzYXR1cmF0aW9uXHJcbiAgICB9XHJcbiAgICBpZihsaWdodG5lc3MgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuaHNsQ29sb3IubCA9IGxpZ2h0bmVzc1xyXG4gICAgfVxyXG4gICAgLy8gQ29udmVydCBIU0wgdG8gUkdCXHJcbiAgICBjb25zdCByZ2IgPSBIU0xUb1JHQih0aGlzLmhzbENvbG9yKTtcclxuXHJcbiAgICB0aGlzLnJnYkNvbG9yID0gcmdiXHJcblxyXG4gICAgLy8gQ29udmVydCBSR0IgdG8gSEVYXHJcbiAgICBjb25zdCBoZXggPSBSR0JUb0hleChyZ2IsIHRoaXMuYWxwaGEgLyAxMDApO1xyXG4gICAgaWYoZW1pdENoYW5nZXMpeyBcclxuICAgICAgdGhpcy5TZXRWYWx1ZShoZXgpO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KGhleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gWyBIdWUgU2xpZGVyIF1cclxuICBAVmlld0NoaWxkKFwiaHVlU2xpZGVyXCIgICkgaHVlU2xpZGVyOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PlxyXG4gIHByaXZhdGUgaXNIdWVEcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaHVlQ3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcbiAgcHJpdmF0ZSBodWVTbGlkZXJXaWR0aDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGh1ZVNsaWRlckhlaWdodDogbnVtYmVyID0gMDtcclxuICBJbml0aWFsaXplSHVlU2xpZGVyKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaHVlU2xpZGVyICAgICAgPSB0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50XHJcbiAgICB0aGlzLmh1ZVNsaWRlcldpZHRoICA9IGh1ZVNsaWRlci53aWR0aDtcclxuICAgIHRoaXMuaHVlU2xpZGVySGVpZ2h0ID0gaHVlU2xpZGVyLmhlaWdodDtcclxuICAgIHRoaXMuaHVlQ3R4ID0gaHVlU2xpZGVyLmdldENvbnRleHQoXCIyZFwiKVxyXG5cclxuICAgIGh1ZVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIgLCB0aGlzLlN0YXJ0SHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiAsIHRoaXMuSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIgICAsIHRoaXMuRW5kSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIHRoaXMuRW5kSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG5cclxuICAgIC8vIFRvdWNoIGV2ZW50c1xyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIHRoaXMuSGFuZGxlSHVlVG91Y2guYmluZCh0aGlzKSlcclxuICAgIGh1ZVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIgLCB0aGlzLkhhbmRsZUh1ZVRvdWNoLmJpbmQodGhpcykpXHJcbiAgICBodWVTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIgICwgdGhpcy5FbmRIdWVEcmFnLmJpbmQodGhpcykpXHJcbiAgfVxyXG5cclxuICBTdGFydEh1ZURyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0h1ZURyYWdnaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5IYW5kbGVIdWVTZWxlY3Rpb24oZS5vZmZzZXRYKVxyXG4gIH1cclxuXHJcbiAgSHVlRHJhZyhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0h1ZURyYWdnaW5nKSB7XHJcbiAgICAgIHRoaXMuSGFuZGxlSHVlU2VsZWN0aW9uKGUub2Zmc2V0WClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEVuZEh1ZURyYWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSHVlRHJhZ2dpbmcgPSBmYWxzZVxyXG4gIH1cclxuICBIYW5kbGVIdWVUb3VjaChlOiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KClcclxuICAgIGlmIChlLnR5cGUgPT09IFwidG91Y2hzdGFydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNIdWVEcmFnZ2luZyA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0h1ZURyYWdnaW5nKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdXHJcbiAgICAgIGNvbnN0IHggPSB0b3VjaC5jbGllbnRYIC0gcmVjdC5sZWZ0XHJcbiAgICAgIHRoaXMuSGFuZGxlSHVlU2VsZWN0aW9uKHgpXHJcbiAgICB9XHJcbiAgfVxyXG4gIEhhbmRsZUh1ZVNlbGVjdGlvbih4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIENvbnN0cmFpbiB4IHRvIGNhbnZhcyBib3VuZHNcclxuICAgIHggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih4LCB0aGlzLmh1ZVNsaWRlcldpZHRoKSlcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgaHVlIGJhc2VkIG9uIHggcG9zaXRpb24gKDAtMzYwKVxyXG4gICAgdGhpcy5oc2xDb2xvci5oID0gTWF0aC5yb3VuZCgoeCAvIHRoaXMuaHVlU2xpZGVyV2lkdGgpICogMzYwKVxyXG5cclxuICAgIC8vIFJlZHJhdyBjb2xvciBncmFkaWVudCB3aXRoIG5ldyBodWVcclxuICAgIHRoaXMuRHJhd0NvbG9yR3JhZGllbnQoKVxyXG5cclxuICAgIC8vIFJlZHJhdyBhbHBoYSBzbGlkZXIgd2l0aCBuZXcgY29sb3JcclxuICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgY29sb3JcclxuICAgIHRoaXMuVXBkYXRlU2VsZWN0ZWRDb2xvcih0aGlzLmhzbENvbG9yLnMsIHRoaXMuaHNsQ29sb3IubCwgdHJ1ZSlcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgSHVlIFNsaWRlciBdXHJcblxyXG4gIC8vI3JlZ2lvbiBbIEFscGhhIFNsaWRlciBdXHJcbiAgQFZpZXdDaGlsZChcImFscGhhU2xpZGVyXCIpIGFscGhhU2xpZGVyOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PlxyXG4gIHByaXZhdGUgaXNBbHBoYURyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhbHBoYUN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG4gIHByaXZhdGUgYWxwaGFTbGlkZXJXaWR0aDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGFscGhhU2xpZGVySGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIEluaXRpYWxpemVBbHBoYVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFscGhhU2xpZGVyICAgICAgPSB0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmFscGhhU2xpZGVySGVpZ2h0ID0gYWxwaGFTbGlkZXIuaGVpZ2h0O1xyXG4gICAgdGhpcy5hbHBoYVNsaWRlcldpZHRoICA9IGFscGhhU2xpZGVyLndpZHRoO1xyXG5cclxuICAgIHRoaXMuYWxwaGFDdHggPSBhbHBoYVNsaWRlci5nZXRDb250ZXh0KFwiMmRcIilcclxuXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIgLCB0aGlzLlN0YXJ0QWxwaGFEcmFnLmJpbmQodGhpcykpXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIgLCB0aGlzLkFscGhhRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgYWxwaGFTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiAgICwgdGhpcy5FbmRBbHBoYURyYWcuYmluZCh0aGlzKSlcclxuICAgIGFscGhhU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIHRoaXMuRW5kQWxwaGFEcmFnLmJpbmQodGhpcykpXHJcblxyXG4gICAgLy8gVG91Y2ggZXZlbnRzXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCB0aGlzLkhhbmRsZUFscGhhVG91Y2guYmluZCh0aGlzKSlcclxuICAgIGFscGhhU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiAsIHRoaXMuSGFuZGxlQWxwaGFUb3VjaC5iaW5kKHRoaXMpKVxyXG4gICAgYWxwaGFTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIgICwgdGhpcy5FbmRBbHBoYURyYWcuYmluZCh0aGlzKSlcclxuICB9XHJcbiAgU3RhcnRBbHBoYURyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0FscGhhRHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB0aGlzLkhhbmRsZUFscGhhU2VsZWN0aW9uKGUub2Zmc2V0WClcclxuICB9XHJcblxyXG4gIEFscGhhRHJhZyhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0FscGhhRHJhZ2dpbmcpIHtcclxuICAgICAgdGhpcy5IYW5kbGVBbHBoYVNlbGVjdGlvbihlLm9mZnNldFgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBFbmRBbHBoYURyYWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWxwaGFEcmFnZ2luZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBIYW5kbGVBbHBoYVRvdWNoKGU6IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgaWYgKGUudHlwZSA9PT0gXCJ0b3VjaHN0YXJ0XCIpIHtcclxuICAgICAgdGhpcy5pc0FscGhhRHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNBbHBoYURyYWdnaW5nKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF1cclxuICAgICAgY29uc3QgeCA9IHRvdWNoLmNsaWVudFggLSByZWN0LmxlZnRcclxuICAgICAgdGhpcy5IYW5kbGVBbHBoYVNlbGVjdGlvbih4KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSGFuZGxlQWxwaGFTZWxlY3Rpb24oeDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvLyBDb25zdHJhaW4geCB0byBjYW52YXMgYm91bmRzXHJcbiAgICB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeCwgdGhpcy5hbHBoYVNsaWRlcldpZHRoKSlcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgYWxwaGEgYmFzZWQgb24geCBwb3NpdGlvbiAoMC0xMDApXHJcbiAgICB0aGlzLmFscGhhID0gTWF0aC5yb3VuZCgoeCAvIHRoaXMuYWxwaGFTbGlkZXJXaWR0aCkgKiAxMDApXHJcblxyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkQ29sb3IodGhpcy5oc2xDb2xvci5zLCB0aGlzLmhzbENvbG9yLmwsIHRydWUpXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBbIEFscGhhIFNsaWRlciBdXHJcblxyXG4gIFNldENvbG9yRnJvbUhleChoZXhDb2xvcjogc3RyaW5nLCB1cGRhdGVDYW52YXM6IGJvb2xlYW4gPSB0cnVlLCBlbWl0Q2hhbmdlczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAvLyBSZW1vdmUgIyBpZiBwcmVzZW50XHJcbiAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgXCJcIilcclxuXHJcbiAgICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYSA9IDFcclxuXHJcbiAgICAvLyBQYXJzZSBoZXggdmFsdWVzIGJhc2VkIG9uIHN0cmluZyBsZW5ndGhcclxuICAgIGlmIChoZXhDb2xvci5sZW5ndGggPT09IDMpIHtcclxuICAgICAgLy8gU2hvcnQgaGV4ICgjUkdCKVxyXG4gICAgICByID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLmNoYXJBdCgwKSArIGhleENvbG9yLmNoYXJBdCgwKSwgMTYpXHJcbiAgICAgIGcgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3IuY2hhckF0KDEpICsgaGV4Q29sb3IuY2hhckF0KDEpLCAxNilcclxuICAgICAgYiA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5jaGFyQXQoMikgKyBoZXhDb2xvci5jaGFyQXQoMiksIDE2KVxyXG4gICAgfSBlbHNlIFxyXG4gICAgaWYgKGhleENvbG9yLmxlbmd0aCA9PT0gNikge1xyXG4gICAgICAvLyBTdGFuZGFyZCBoZXggKCNSUkdHQkIpXHJcbiAgICAgIHIgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDAsIDIpLCAxNilcclxuICAgICAgZyA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KVxyXG4gICAgICBiID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZyg0LCA2KSwgMTYpXHJcbiAgICB9IGVsc2UgXHJcbiAgICBpZiAoaGV4Q29sb3IubGVuZ3RoID09PSA4KSB7XHJcbiAgICAgIC8vIEhleCB3aXRoIGFscGhhICgjUlJHR0JCQUEpXHJcbiAgICAgIHIgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDAsIDIpLCAxNilcclxuICAgICAgZyA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KVxyXG4gICAgICBiID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZyg0LCA2KSwgMTYpXHJcbiAgICAgIGEgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDYsIDgpLCAxNikgLyAyNTVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEludmFsaWQgaGV4LCB1c2UgZGVmYXVsdFxyXG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBoZXggY29sb3IgZm9ybWF0XCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgUkdCIGNvbG9yXHJcbiAgICB0aGlzLnJnYkNvbG9yID0geyByLCBnLCBiIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IFJHQiB0byBIU0xcclxuICAgIHRoaXMuaHNsQ29sb3IgPSBSR0JUb0hTTCh0aGlzLnJnYkNvbG9yKVxyXG5cclxuICAgIC8vIFVwZGF0ZSBhbHBoYVxyXG4gICAgdGhpcy5hbHBoYSA9IE1hdGgucm91bmQoYSAqIDEwMClcclxuXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgY29sb3JcclxuICAgIGNvbnN0IGhleCA9IFJHQlRvSGV4KHRoaXMucmdiQ29sb3IsIGEpXHJcbiAgICBpZihlbWl0Q2hhbmdlcyl7IFxyXG4gICAgICB0aGlzLlNldFZhbHVlKGhleCk7XHJcbiAgICB9IGVsc2UgeyBcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoaGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBpZih1cGRhdGVDYW52YXMpe1xyXG4gICAgICAvLyBDYWxjdWxhdGUgaW5kaWNhdG9yIHBvc2l0aW9uXHJcbiAgICAgIHRoaXMuVXBkYXRlSW5kaWNhdG9yUG9zaXRpb25zKClcclxuICBcclxuICAgICAgLy8gUmVkcmF3IGNvbXBvbmVudHNcclxuICAgICAgdGhpcy5EcmF3Q29sb3JHcmFkaWVudCgpXHJcbiAgICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgRHJhd0NvbG9yR3JhZGllbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdHggPSB0aGlzLmdyYWRpZW50Q3R4O1xyXG5cclxuICAgIC8vIENsZWFyIGNhbnZhc1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcblxyXG4gICAgLy8gRHJhdyB0aGUgcHVyZSBodWUgY29sb3IgYXQgdGhlIHRvcC1yaWdodCBjb3JuZXJcclxuICAgIGN0eC5maWxsU3R5bGUgPSBgaHNsKCR7dGhpcy5oc2xDb2xvci5ofSwgMTAwJSwgNTAlKWBcclxuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcblxyXG4gICAgLy8gV2hpdGUgZ3JhZGllbnQgKGhvcml6b250YWwgLSBzYXR1cmF0aW9uKVxyXG4gICAgY29uc3Qgd2hpdGVHcmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIDApXHJcbiAgICB3aGl0ZUdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBcIndoaXRlXCIpXHJcbiAgICB3aGl0ZUdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMClcIilcclxuICAgIGN0eC5maWxsU3R5bGUgPSB3aGl0ZUdyYWRpZW50XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5ncmFkaWVudFdpZHRoLCB0aGlzLmdyYWRpZW50SGVpZ2h0KVxyXG5cclxuICAgIC8vIEJsYWNrIGdyYWRpZW50ICh2ZXJ0aWNhbCAtIGJyaWdodG5lc3MpXHJcbiAgICBjb25zdCBibGFja0dyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDAsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcbiAgICBibGFja0dyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBcInJnYmEoMCwgMCwgMCwgMClcIilcclxuICAgIGJsYWNrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIFwiYmxhY2tcIilcclxuICAgIGN0eC5maWxsU3R5bGUgPSBibGFja0dyYWRpZW50XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5ncmFkaWVudFdpZHRoLCB0aGlzLmdyYWRpZW50SGVpZ2h0KVxyXG4gIH1cclxuXHJcbiAgRHJhd0h1ZVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuaHVlQ3R4XHJcblxyXG4gICAgLy8gQ3JlYXRlIGh1ZSBncmFkaWVudFxyXG4gICAgY29uc3QgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgdGhpcy5odWVTbGlkZXJXaWR0aCwgMClcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDM2MDsgaSArPSA2MCkge1xyXG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaSAvIDM2MCwgYGhzbCgke2l9LCAxMDAlLCA1MCUpYClcclxuICAgIH1cclxuXHJcbiAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnRcclxuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmh1ZVNsaWRlcldpZHRoLCB0aGlzLmh1ZVNsaWRlckhlaWdodClcclxuICB9XHJcblxyXG4gIERyYXdBbHBoYVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuYWxwaGFDdHhcclxuICAgIGNvbnN0IHdpZHRoICA9IHRoaXMuYWxwaGFTbGlkZXJXaWR0aFxyXG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5hbHBoYVNsaWRlckhlaWdodFxyXG5cclxuICAgIC8vIENsZWFyIGNhbnZhc1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG5cclxuICAgIC8vIENyZWF0ZSBjaGVja2VyYm9hcmQgcGF0dGVybiBmb3IgdHJhbnNwYXJlbmN5XHJcbiAgICBjb25zdCBzcXVhcmVTaXplID0gOFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSArPSBzcXVhcmVTaXplKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqICs9IHNxdWFyZVNpemUpIHtcclxuICAgICAgICBjb25zdCBpc0V2ZW4gPSAoaSAvIHNxdWFyZVNpemUgKyBqIC8gc3F1YXJlU2l6ZSkgJSAyID09PSAwXHJcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGlzRXZlbiA/IFwiI2ZmZmZmZlwiIDogXCIjY2NjY2NjXCJcclxuICAgICAgICBjdHguZmlsbFJlY3QoaSwgaiwgc3F1YXJlU2l6ZSwgc3F1YXJlU2l6ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgLy8gQ3JlYXRlIGFscGhhIGdyYWRpZW50XHJcbiAgICBjb25zdCBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgMClcclxuICAgIGNvbnN0IHJnYiA9IEhTTFRvUkdCKHRoaXMuaHNsQ29sb3IpO1xyXG5cclxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgcmdiYSgke3JnYi5yfSwgJHtyZ2IuZ30sICR7cmdiLmJ9LCAwKWApXHJcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYHJnYmEoJHtyZ2Iucn0sICR7cmdiLmd9LCAke3JnYi5ifSwgMSlgKVxyXG5cclxuICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudFxyXG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpXHJcbiAgfVxyXG5cclxuICBhc3luYyBDb3B5VG9DbGlwYm9hcmQoKSB7XHJcbiAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUoe1xyXG4gICAgICBzdHJpbmc6IHRoaXMudmFsdWUoKVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdFN1Y2Nlc3MoYCR7dGhpcy52YWx1ZSgpfSBjb3BpYWRhIHBhcmEgYSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYSFgKTtcclxuICB9XHJcblxyXG4gIFVwZGF0ZUluZGljYXRvclBvc2l0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIFNldCBYIHBvc2l0aW9uIGRpcmVjdGx5IGZyb20gc2F0dXJhdGlvbiAoMC0xMDApXHJcbiAgICB0aGlzLmluZGljYXRvclggPSB0aGlzLmhzbENvbG9yLnM7XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIFkgcG9zaXRpb24gdXNpbmcgdGhlIGludmVyc2Ugb2YgdGhlIEhhbmRsZUNvbG9yU2VsZWN0aW9uIGxvZ2ljXHJcbiAgICBpZiAodGhpcy5oc2xDb2xvci5zID09PSAwKSB7XHJcbiAgICAgIC8vIExlZnQgZWRnZTogc2ltcGxlIHdoaXRlIHRvIGJsYWNrIG1hcHBpbmdcclxuICAgICAgdGhpcy5pbmRpY2F0b3JZID0gMTAwIC0gdGhpcy5oc2xDb2xvci5sO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIG90aGVyIHNhdHVyYXRpb24gdmFsdWVzLCB3ZSBuZWVkIHRvIHJldmVyc2UgdGhlIG1heExpZ2h0bmVzcyBjYWxjdWxhdGlvblxyXG4gICAgICBjb25zdCBtYXhMaWdodG5lc3MgPSAxMDAgLSB0aGlzLmhzbENvbG9yLnMgLyAyO1xyXG4gICAgICB0aGlzLmluZGljYXRvclkgPSAoKG1heExpZ2h0bmVzcyAtIHRoaXMuaHNsQ29sb3IubCkgLyBtYXhMaWdodG5lc3MpICogMTAwO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBFbnN1cmUgdGhlIHBvc2l0aW9uIHN0YXlzIHdpdGhpbiBib3VuZHNcclxuICAgIHRoaXMuaW5kaWNhdG9yWSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgdGhpcy5pbmRpY2F0b3JZKSk7XHJcbiAgfVxyXG5cclxuICBIRVhNYXNrOiBNYXNraXRvT3B0aW9ucyA9IHsgbWFzazogSEVYTWFzayB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBIU0xUb1JHQihoc2w6IEhTTCk6IFJHQiB7XHJcbiAgdmFyIGggPSBoc2wuaCAvIDM2MDtcclxuICB2YXIgcyA9IGhzbC5zIC8gMTAwO1xyXG4gIHZhciBsID0gaHNsLmwgLyAxMDA7XHJcblxyXG4gIGxldCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyXHJcblxyXG4gIGlmIChzID09PSAwKSB7XHJcbiAgICByID0gZyA9IGIgPSBsIC8vIGFjaHJvbWF0aWNcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHNcclxuICAgIGNvbnN0IHAgPSAyICogbCAtIHFcclxuXHJcbiAgICByID0gSFVFdG9SR0IocCwgcSwgaCArIDEgLyAzKVxyXG4gICAgZyA9IEhVRXRvUkdCKHAsIHEsIGgpXHJcbiAgICBiID0gSFVFdG9SR0IocCwgcSwgaCAtIDEgLyAzKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHI6IE1hdGgucm91bmQociAqIDI1NSksXHJcbiAgICBnOiBNYXRoLnJvdW5kKGcgKiAyNTUpLFxyXG4gICAgYjogTWF0aC5yb3VuZChiICogMjU1KSxcclxuICB9XHJcbn1cclxuZnVuY3Rpb24gSFVFdG9SR0IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgaWYgKHQgPCAwKSB0ICs9IDFcclxuICBpZiAodCA+IDEpIHQgLT0gMVxyXG4gIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0XHJcbiAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHFcclxuICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDZcclxuICByZXR1cm4gcFxyXG59XHJcblxyXG5mdW5jdGlvbiBSR0JUb0hTTChyZ2I6IFJHQik6IEhTTCB7XHJcbiAgdmFyIHIgPSByZ2IuciAvIDI1NVxyXG4gIHZhciBnID0gcmdiLmcgLyAyNTVcclxuICB2YXIgYiA9IHJnYi5iIC8gMjU1XHJcblxyXG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpXHJcbiAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYilcclxuICBsZXQgaCA9IDAsXHJcbiAgICBzID0gMFxyXG4gIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDJcclxuXHJcbiAgaWYgKG1heCAhPT0gbWluKSB7XHJcbiAgICBjb25zdCBkID0gbWF4IC0gbWluXHJcbiAgICBzID0gbCA+IDAuNSA/IGQgLyAoMiAtIG1heCAtIG1pbikgOiBkIC8gKG1heCArIG1pbilcclxuXHJcbiAgICBzd2l0Y2ggKG1heCkge1xyXG4gICAgICBjYXNlIHI6XHJcbiAgICAgICAgaCA9ICgoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKSkgLyA2XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSBnOlxyXG4gICAgICAgIGggPSAoKGIgLSByKSAvIGQgKyAyKSAvIDZcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIGI6XHJcbiAgICAgICAgaCA9ICgociAtIGcpIC8gZCArIDQpIC8gNlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgaDogTWF0aC5yb3VuZChoICogMzYwKSxcclxuICAgIHM6IE1hdGgucm91bmQocyAqIDEwMCksXHJcbiAgICBsOiBNYXRoLnJvdW5kKGwgKiAxMDApLFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gUkdCVG9IZXgocmdiOiBSR0IsIGFscGhhID0gMSk6IHN0cmluZyB7XHJcbiAgbGV0IHsgciwgZywgYiB9ID0gcmdiXHJcblxyXG4gIGNvbnN0IGFscGhhSGV4ID0gTWF0aC5yb3VuZChhbHBoYSAqIDI1NSlcclxuICAgIC50b1N0cmluZygxNilcclxuICAgIC5wYWRTdGFydCgyLCBcIjBcIilcclxuICByZXR1cm4gKFxyXG4gICAgXCIjXCIgK1xyXG4gICAgW3IsIGcsIGJdXHJcbiAgICAgIC5tYXAoKHgpID0+IHtcclxuICAgICAgICBjb25zdCBoZXggPSB4LnRvU3RyaW5nKDE2KVxyXG4gICAgICAgIHJldHVybiBoZXgubGVuZ3RoID09PSAxID8gXCIwXCIgKyBoZXggOiBoZXhcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oXCJcIikgK1xyXG4gICAgKGFscGhhIDwgMSA/IGFscGhhSGV4IDogXCJcIilcclxuICApLnRvVXBwZXJDYXNlKCk7XHJcbn1cclxuXHJcbmNvbnN0IEhFWERpZ2l0UmVnZXg6IFJlZ0V4cCA9IC9bMC05YS1mXSsvaTtcclxuY29uc3QgSEVYTWFzazogTWFza2l0b01hc2tFeHByZXNzaW9uID0gWyAnIycsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXggXTsiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cInNldEZvY3VzKCRldmVudCk7IFByZXNlbnQoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW21hc2tpdG9dPVwiSEVYTWFza1wiXHJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZSgpXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIlNldENvbG9yRnJvbUhleCgkZXZlbnQsIHRydWUsIHRydWUpXCIgXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gIC8+XHJcbiAgPGRpdiBjbGFzcz1cIiBhYnNvbHV0ZSBib3R0b20tMiByaWdodC04IHNpemUtNSByb3VuZGVkLXNtIG92ZXJmbG93LWhpZGRlblwiIFtzdHlsZV09XCJ7ICdiYWNrZ3JvdW5kJzogdmFsdWUoKSB9XCI+IDwvZGl2PlxyXG5cclxuICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0xIGJvdHRvbS0xXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBib2FyZCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIj5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xpcGJvYXJkXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gW21heGxlbmd0aF09XCJjb25maWd1cmF0aW9uKCkubWF4bGVuZ3RoXCIgLS0+XHJcbiAgICA8IS0tIFt0eXBlXT1cImNvbmZpZ3VyYXRpb24oKS50eXBlXCIgIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHNpb24tcG9wb3ZlclxyXG4gICNwb3BvdmVyIFxyXG4gIHdpZHRoPVwiZml0LWNvbnRlbnRcIiBcclxuICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCIgXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHAtMiBmbGV4IGdhcC0xXCI+ICBcclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctNDQgc2hyaW5rLTAgZ2FwLTFcIj5cclxuICAgICAgPGRpdiBpZD1cImdyYWRpZW50V3JhcHBlclwiIGNsYXNzPVwidy00NCBoLTMyIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGNhbnZhcyAjZ3JhZGllbnQgd2lkdGg9XCIxNzZcIiBoZWlnaHQ9XCIxMjhcIiBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLXNtIHRyYW5zbHVjaWQtYm9yZGVyXCI+PC9jYW52YXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLWluZGljYXRvciBxdWljay10cmFuc2l0aW9uXCIgW3N0eWxlLmxlZnQuJV09XCJpbmRpY2F0b3JYXCIgW3N0eWxlLnRvcC4lXT1cImluZGljYXRvcllcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGlkPVwiaHVlV3JhcHBlclwiIGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGNhbnZhcyAjaHVlU2xpZGVyICAgY2xhc3M9XCJ3LWZ1bGwgcm91bmRlZCBoLVsyMnB4XVwiIHdpZHRoPVwiMTc2XCIgaGVpZ2h0PVwiMjJcIj48L2NhbnZhcz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yIHF1aWNrLXRyYW5zaXRpb25cIiBbc3R5bGUubGVmdC4lXT1cImhzbENvbG9yLmggLyAzLjZcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGlkPVwiYWxwaGFXcmFwcGVyXCIgY2xhc3M9XCJ3LWZ1bGwgcmVsYXRpdmVcIj5cclxuICAgICAgICA8Y2FudmFzICNhbHBoYVNsaWRlciBjbGFzcz1cInctZnVsbCByb3VuZGVkIGgtWzIycHhdXCIgd2lkdGg9XCIxNzZcIiBoZWlnaHQ9XCIyMlwiPjwvY2FudmFzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3IgcXVpY2stdHJhbnNpdGlvblwiIFtzdHlsZS5sZWZ0LiVdPVwiYWxwaGFcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggc2hyaW5rLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGdyaWQgZ3JpZC1jb2xzLTUgZ2FwLTFcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyMwMDAwMDBGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzM4ODBGRkZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb2xvcjsgY29udGV4dDogeyAkaW1wbGljaXQ6ICcjMkREMzZGRkYnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGRkM0MDlGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnI0VCNDQ1QUZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGRkZGRkZGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzU5MTY4YkZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb2xvcjsgY29udGV4dDogeyAkaW1wbGljaXQ6ICcjQzYwMDVDRkYnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGQjJDMzZGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzMxNDE1OEZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zaW9uLXBvcG92ZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlQ29sb3IgbGV0LWNvbG9yPlxyXG4gIDxkaXYgY2xhc3M9XCJzaXplLTggcm91bmRlZCB0cmFuc2x1Y2lkLWJvcmRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZXRDb2xvckZyb21IZXgoY29sb3IsIHRydWUsIHRydWUpXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY29sb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1jb2xvci9pbnB1dC1jb2xvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWNvbG9yL2lucHV0LWNvbG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBY2pFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFtQjtJQU1qRCxRQUFRLENBQUMsS0FBd0I7UUFDeEMsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQUMsQ0FBQztJQUM5SCxDQUFDO0lBRUQsWUFDVSxjQUE4QjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQURGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU14QyxhQUFRLEdBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLGFBQVEsR0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDekMsVUFBSyxHQUFlLEdBQUcsQ0FBQTtRQVl2QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBYTNCLHNCQUFzQjtRQUN0QixlQUFVLEdBQVcsR0FBRyxDQUFBO1FBQ3hCLGVBQVUsR0FBVyxDQUFDLENBQUE7UUFHZCx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFcEMsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFtRzNCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBaUU1QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBbU50QyxZQUFPLEdBQW1CLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBcmEvQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUFDLENBQUM7SUFRekIsVUFBVSxDQUFDLEdBQVc7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxRQUFRLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQVdELGtCQUFrQjtRQUNoQixNQUFNLFFBQVEsR0FBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQU0sUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBSyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RSxlQUFlO1FBQ2YsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0UsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0UsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUFhO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFDRCxZQUFZLENBQUMsQ0FBYTtRQUN4QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFBO0lBQ2pDLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxDQUFhO1FBQy9CLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQTtRQUNoQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDMUIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQ25DLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtZQUNsQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDdkMseUNBQXlDO1FBQ3pDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUNoRCxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFFakQsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUE7UUFFakQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLGdDQUFnQztRQUNoQywrR0FBK0c7UUFDL0csOERBQThEO1FBQzlELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLDRGQUE0RjtZQUM1RixNQUFNLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUNyRixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUVoRSxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFDRCx5QkFBeUI7SUFFekIsbUJBQW1CLENBQUMsYUFBNEIsSUFBSSxFQUFFLFlBQTJCLElBQUksRUFBRSxjQUF1QixLQUFLO1FBQ2pILG9CQUFvQjtRQUNwQixJQUFHLFVBQVUsSUFBSSxJQUFJLEVBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUcsU0FBUyxJQUFJLElBQUksRUFBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUM3QixDQUFDO1FBQ0QscUJBQXFCO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUE7UUFFbkIscUJBQXFCO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFHLFdBQVcsRUFBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBUUQsbUJBQW1CO1FBQ2pCLE1BQU0sU0FBUyxHQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFBO1FBQ25ELElBQUksQ0FBQyxjQUFjLEdBQUksU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXhDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN0RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDakUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBSyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3BFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUVwRSxlQUFlO1FBQ2YsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN4RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFhO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7SUFDNUIsQ0FBQztJQUNELGNBQWMsQ0FBQyxDQUFhO1FBQzFCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7UUFDM0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUE7WUFDakUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMxQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsQ0FBUztRQUMxQiwrQkFBK0I7UUFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBRWpELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUU3RCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFFeEIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUV0Qix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFTRCxxQkFBcUI7UUFDbkIsTUFBTSxXQUFXLEdBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFFM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTVDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMxRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDckUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV4RSxlQUFlO1FBQ2YsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDNUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDNUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFDRCxjQUFjLENBQUMsQ0FBYTtRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFhO1FBQzVCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7UUFDN0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUE7WUFDbkUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMxQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7WUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBUztRQUM1QiwrQkFBK0I7UUFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7UUFFbkQsOENBQThDO1FBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUUxRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCw2QkFBNkI7SUFFN0IsZUFBZSxDQUFDLFFBQWdCLEVBQUUsZUFBd0IsSUFBSSxFQUFFLGNBQXVCLEtBQUs7UUFDMUYsc0JBQXNCO1FBQ3RCLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVyQyxJQUFJLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFMUMsMENBQTBDO1FBQzFDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixtQkFBbUI7WUFDbkIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ2hFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNoRSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbEUsQ0FBQzthQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQix5QkFBeUI7WUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDakQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDakQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzthQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQiw2QkFBNkI7WUFDN0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVB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LEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDM0MsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNYLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDNUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQVcsWUFBWSxDQUFDO0FBQzNDLE1BQU0sT0FBTyxHQUEwQixDQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNJb25Qb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9zaW9uLXBvcG92ZXIvc2lvbi1wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hc2tpdG9NYXNrRXhwcmVzc2lvbiwgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuXHJcbnR5cGUgUkdCID0geyByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyIH07XHJcbnR5cGUgSFNMID0geyBoOiBudW1iZXIsIGw6IG51bWJlciwgczogbnVtYmVyIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWNvbG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY29sb3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWNvbG9yLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRDb2xvckNvbXBvbmVudCksXHJcbiAgICB7IHByb3ZpZGU6IEN1c3RvbUlucHV0LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbG9yQ29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENvbG9yQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcbiAgXHJcbiAgLy8gY29uZmlndXJhdGlvbjogSW5wdXRTaWduYWw8SW5wdXRTdHJpbmdDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0U3RyaW5nQ29uZmlndXJhdGlvbj4obmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuaW5wdXQgJiYgKGV2ZW50ID09IG51bGwgfHwgZXZlbnQudGFyZ2V0ID09IHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudCkpIHsgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7IH0gICAgICBcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2VcclxuICApIHsgc3VwZXIoKTsgdGhpcy52YWx1ZS5zZXQoXCJcIik7IH1cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoU0lvblBvcG92ZXJDb21wb25lbnQpIHBvcG92ZXI6IFNJb25Qb3BvdmVyQ29tcG9uZW50O1xyXG5cclxuICByZ2JDb2xvciA6IFJHQiA9IHsgcjogMjU1LCBnOiAwLCBiOiAwIH07XHJcbiAgaHNsQ29sb3IgOiBIU0wgPSB7IGg6IDAsIHM6IDEwMCwgbDogNTAgfTtcclxuICBhbHBoYSAgICA6IG51bWJlciA9IDEwMFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFzeW5jIFByZXNlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucmVuZGVyaW5nID0gdHJ1ZTtcclxuICAgIGF3YWl0IHRoaXMucG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIHRoaXMuSW5pdGlhbGl6ZUdyYWRpZW50KClcclxuICAgIHRoaXMuSW5pdGlhbGl6ZUh1ZVNsaWRlcigpXHJcbiAgICB0aGlzLkluaXRpYWxpemVBbHBoYVNsaWRlcigpXHJcbiAgICB0aGlzLkRyYXdDb2xvckdyYWRpZW50KClcclxuICAgIHRoaXMuRHJhd0h1ZVNsaWRlcigpXHJcbiAgICB0aGlzLkRyYXdBbHBoYVNsaWRlcigpXHJcbiAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFsgR3JhZGllbnQgXVxyXG4gIGluZGljYXRvclg6IG51bWJlciA9IDEwMFxyXG4gIGluZGljYXRvclk6IG51bWJlciA9IDBcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JhZGllbnQnICAgICApIGdyYWRpZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuICBwcml2YXRlIGlzR3JhZGllbnREcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZ3JhZGllbnRDdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcclxuICBwcml2YXRlIGdyYWRpZW50V2lkdGg6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBncmFkaWVudEhlaWdodDogbnVtYmVyID0gMDtcclxuICBJbml0aWFsaXplR3JhZGllbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBncmFkaWVudCAgICAgID0gdGhpcy5ncmFkaWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5ncmFkaWVudFdpZHRoICA9IGdyYWRpZW50LndpZHRoOyBcclxuICAgIHRoaXMuZ3JhZGllbnRIZWlnaHQgPSBncmFkaWVudC5oZWlnaHQ7IFxyXG4gICAgdGhpcy5ncmFkaWVudEN0eCAgICA9IGdyYWRpZW50LmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgZ3JhZGllbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJyAsIHRoaXMuU3RhcnRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnICwgdGhpcy5HcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJyAgICwgdGhpcy5FbmRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5FbmRHcmFkaWVudERyYWcuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgLy8gVG91Y2ggZXZlbnRzXHJcbiAgICBncmFkaWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5IYW5kbGVHcmFkaWVudFRvdWNoLmJpbmQodGhpcykpO1xyXG4gICAgZ3JhZGllbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJyAsIHRoaXMuSGFuZGxlR3JhZGllbnRUb3VjaC5iaW5kKHRoaXMpKTtcclxuICAgIGdyYWRpZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJyAgLCB0aGlzLkVuZEdyYWRpZW50RHJhZy5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgU3RhcnRHcmFkaWVudERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyYWRpZW50RHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB0aGlzLkhhbmRsZUNvbG9yU2VsZWN0aW9uKGUub2Zmc2V0WCwgZS5vZmZzZXRZKVxyXG4gIH1cclxuICBHcmFkaWVudERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNHcmFkaWVudERyYWdnaW5nKSB7XHJcbiAgICAgIHRoaXMuSGFuZGxlQ29sb3JTZWxlY3Rpb24oZS5vZmZzZXRYLCBlLm9mZnNldFkpXHJcbiAgICB9XHJcbiAgfVxyXG4gIEVuZEdyYWRpZW50RHJhZygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcmFkaWVudERyYWdnaW5nID0gZmFsc2VcclxuICB9XHJcbiAgSGFuZGxlR3JhZGllbnRUb3VjaChlOiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KClcclxuICAgIGlmIChlLnR5cGUgPT09IFwidG91Y2hzdGFydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNHcmFkaWVudERyYWdnaW5nID0gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzR3JhZGllbnREcmFnZ2luZykge1xyXG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5ncmFkaWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdXHJcbiAgICAgIGNvbnN0IHggPSB0b3VjaC5jbGllbnRYIC0gcmVjdC5sZWZ0XHJcbiAgICAgIGNvbnN0IHkgPSB0b3VjaC5jbGllbnRZIC0gcmVjdC50b3BcclxuICAgICAgdGhpcy5IYW5kbGVDb2xvclNlbGVjdGlvbih4LCB5KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSGFuZGxlQ29sb3JTZWxlY3Rpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIENvbnN0cmFpbiBjb29yZGluYXRlcyB0byBjYW52YXMgYm91bmRzXHJcbiAgICB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeCwgdGhpcy5ncmFkaWVudFdpZHRoKSlcclxuICAgIHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih5LCB0aGlzLmdyYWRpZW50SGVpZ2h0KSlcclxuXHJcbiAgICAvLyBTdG9yZSB0aGUgcmF3IHBvc2l0aW9uIHBlcmNlbnRhZ2UgZm9yIHRoZSBpbmRpY2F0b3JcclxuICAgIHRoaXMuaW5kaWNhdG9yWCA9ICh4IC8gdGhpcy5ncmFkaWVudFdpZHRoKSAqIDEwMFxyXG4gICAgdGhpcy5pbmRpY2F0b3JZID0gKHkgLyB0aGlzLmdyYWRpZW50SGVpZ2h0KSAqIDEwMFxyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBzYXR1cmF0aW9uIGFuZCBsaWdodG5lc3MgYmFzZWQgb24gcG9zaXRpb25cclxuICAgIHRoaXMuaHNsQ29sb3IucyA9IE1hdGgucm91bmQodGhpcy5pbmRpY2F0b3JYKVxyXG4gICAgLy8gQWRqdXN0IGxpZ2h0bmVzcyBjYWxjdWxhdGlvbjpcclxuICAgIC8vIC0gVG9wIG9mIGNhbnZhcyAoeT0wKSBzaG91bGQgYmUgd2hpdGUgKGxpZ2h0bmVzcz0xMDApIG9uIHRoZSBsZWZ0IGFuZCBwdXJlIGNvbG9yIChsaWdodG5lc3M9NTApIG9uIHRoZSByaWdodFxyXG4gICAgLy8gLSBCb3R0b20gb2YgY2FudmFzICh5PWhlaWdodCkgc2hvdWxkIGJlIGJsYWNrIChsaWdodG5lc3M9MClcclxuICAgIGlmICh0aGlzLmhzbENvbG9yLnMgPT09IDApIHtcclxuICAgICAgLy8gTGVmdCBlZGdlIGlzIGFsd2F5cyB3aGl0ZSB0byBibGFjaywgcmVnYXJkbGVzcyBvZiB5IHBvc2l0aW9uXHJcbiAgICAgIHRoaXMuaHNsQ29sb3IubCA9IE1hdGgucm91bmQoMTAwIC0gdGhpcy5pbmRpY2F0b3JZKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIG90aGVyIHNhdHVyYXRpb24gdmFsdWVzLCB0b3AgaXMgNTAtMTAwJSBsaWdodG5lc3MgKGJhc2VkIG9uIHNhdHVyYXRpb24pLCBib3R0b20gaXMgMCVcclxuICAgICAgY29uc3QgbWF4TGlnaHRuZXNzID0gMTAwIC0gdGhpcy5oc2xDb2xvci5zIC8gMlxyXG4gICAgICB0aGlzLmhzbENvbG9yLmwgPSBNYXRoLnJvdW5kKG1heExpZ2h0bmVzcyAtICh0aGlzLmluZGljYXRvclkgLyAxMDApICogbWF4TGlnaHRuZXNzKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBjb2xvclxyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZENvbG9yKHRoaXMuaHNsQ29sb3IucywgdGhpcy5oc2xDb2xvci5sLCB0cnVlKVxyXG5cclxuICAgIC8vIFJlZHJhdyBhbHBoYSBzbGlkZXIgd2l0aCBuZXcgY29sb3JcclxuICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgR3JhZGllbnQgXVxyXG4gIFxyXG4gIFVwZGF0ZVNlbGVjdGVkQ29sb3Ioc2F0dXJhdGlvbjogbnVtYmVyIHwgbnVsbCA9IG51bGwsIGxpZ2h0bmVzczogbnVtYmVyIHwgbnVsbCA9IG51bGwsIGVtaXRDaGFuZ2VzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIC8vIFVwZGF0ZSBIU0wgdmFsdWVzXHJcbiAgICBpZihzYXR1cmF0aW9uICE9IG51bGwpe1xyXG4gICAgICB0aGlzLmhzbENvbG9yLnMgPSBzYXR1cmF0aW9uXHJcbiAgICB9XHJcbiAgICBpZihsaWdodG5lc3MgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuaHNsQ29sb3IubCA9IGxpZ2h0bmVzc1xyXG4gICAgfVxyXG4gICAgLy8gQ29udmVydCBIU0wgdG8gUkdCXHJcbiAgICBjb25zdCByZ2IgPSBIU0xUb1JHQih0aGlzLmhzbENvbG9yKTtcclxuXHJcbiAgICB0aGlzLnJnYkNvbG9yID0gcmdiXHJcblxyXG4gICAgLy8gQ29udmVydCBSR0IgdG8gSEVYXHJcbiAgICBjb25zdCBoZXggPSBSR0JUb0hleChyZ2IsIHRoaXMuYWxwaGEgLyAxMDApO1xyXG4gICAgaWYoZW1pdENoYW5nZXMpeyBcclxuICAgICAgdGhpcy5TZXRWYWx1ZShoZXgpO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KGhleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gWyBIdWUgU2xpZGVyIF1cclxuICBAVmlld0NoaWxkKFwiaHVlU2xpZGVyXCIgICkgaHVlU2xpZGVyOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PlxyXG4gIHByaXZhdGUgaXNIdWVEcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaHVlQ3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcbiAgcHJpdmF0ZSBodWVTbGlkZXJXaWR0aDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGh1ZVNsaWRlckhlaWdodDogbnVtYmVyID0gMDtcclxuICBJbml0aWFsaXplSHVlU2xpZGVyKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaHVlU2xpZGVyICAgICAgPSB0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50XHJcbiAgICB0aGlzLmh1ZVNsaWRlcldpZHRoICA9IGh1ZVNsaWRlci53aWR0aDtcclxuICAgIHRoaXMuaHVlU2xpZGVySGVpZ2h0ID0gaHVlU2xpZGVyLmhlaWdodDtcclxuICAgIHRoaXMuaHVlQ3R4ID0gaHVlU2xpZGVyLmdldENvbnRleHQoXCIyZFwiKVxyXG5cclxuICAgIGh1ZVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIgLCB0aGlzLlN0YXJ0SHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiAsIHRoaXMuSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIgICAsIHRoaXMuRW5kSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIHRoaXMuRW5kSHVlRHJhZy5iaW5kKHRoaXMpKVxyXG5cclxuICAgIC8vIFRvdWNoIGV2ZW50c1xyXG4gICAgaHVlU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIHRoaXMuSGFuZGxlSHVlVG91Y2guYmluZCh0aGlzKSlcclxuICAgIGh1ZVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIgLCB0aGlzLkhhbmRsZUh1ZVRvdWNoLmJpbmQodGhpcykpXHJcbiAgICBodWVTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIgICwgdGhpcy5FbmRIdWVEcmFnLmJpbmQodGhpcykpXHJcbiAgfVxyXG5cclxuICBTdGFydEh1ZURyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0h1ZURyYWdnaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5IYW5kbGVIdWVTZWxlY3Rpb24oZS5vZmZzZXRYKVxyXG4gIH1cclxuXHJcbiAgSHVlRHJhZyhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0h1ZURyYWdnaW5nKSB7XHJcbiAgICAgIHRoaXMuSGFuZGxlSHVlU2VsZWN0aW9uKGUub2Zmc2V0WClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEVuZEh1ZURyYWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSHVlRHJhZ2dpbmcgPSBmYWxzZVxyXG4gIH1cclxuICBIYW5kbGVIdWVUb3VjaChlOiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KClcclxuICAgIGlmIChlLnR5cGUgPT09IFwidG91Y2hzdGFydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNIdWVEcmFnZ2luZyA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0h1ZURyYWdnaW5nKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdXHJcbiAgICAgIGNvbnN0IHggPSB0b3VjaC5jbGllbnRYIC0gcmVjdC5sZWZ0XHJcbiAgICAgIHRoaXMuSGFuZGxlSHVlU2VsZWN0aW9uKHgpXHJcbiAgICB9XHJcbiAgfVxyXG4gIEhhbmRsZUh1ZVNlbGVjdGlvbih4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIENvbnN0cmFpbiB4IHRvIGNhbnZhcyBib3VuZHNcclxuICAgIHggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih4LCB0aGlzLmh1ZVNsaWRlcldpZHRoKSlcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgaHVlIGJhc2VkIG9uIHggcG9zaXRpb24gKDAtMzYwKVxyXG4gICAgdGhpcy5oc2xDb2xvci5oID0gTWF0aC5yb3VuZCgoeCAvIHRoaXMuaHVlU2xpZGVyV2lkdGgpICogMzYwKVxyXG5cclxuICAgIC8vIFJlZHJhdyBjb2xvciBncmFkaWVudCB3aXRoIG5ldyBodWVcclxuICAgIHRoaXMuRHJhd0NvbG9yR3JhZGllbnQoKVxyXG5cclxuICAgIC8vIFJlZHJhdyBhbHBoYSBzbGlkZXIgd2l0aCBuZXcgY29sb3JcclxuICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgY29sb3JcclxuICAgIHRoaXMuVXBkYXRlU2VsZWN0ZWRDb2xvcih0aGlzLmhzbENvbG9yLnMsIHRoaXMuaHNsQ29sb3IubCwgdHJ1ZSlcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgSHVlIFNsaWRlciBdXHJcblxyXG4gIC8vI3JlZ2lvbiBbIEFscGhhIFNsaWRlciBdXHJcbiAgQFZpZXdDaGlsZChcImFscGhhU2xpZGVyXCIpIGFscGhhU2xpZGVyOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PlxyXG4gIHByaXZhdGUgaXNBbHBoYURyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhbHBoYUN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG4gIHByaXZhdGUgYWxwaGFTbGlkZXJXaWR0aDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGFscGhhU2xpZGVySGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIEluaXRpYWxpemVBbHBoYVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFscGhhU2xpZGVyICAgICAgPSB0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmFscGhhU2xpZGVySGVpZ2h0ID0gYWxwaGFTbGlkZXIuaGVpZ2h0O1xyXG4gICAgdGhpcy5hbHBoYVNsaWRlcldpZHRoICA9IGFscGhhU2xpZGVyLndpZHRoO1xyXG5cclxuICAgIHRoaXMuYWxwaGFDdHggPSBhbHBoYVNsaWRlci5nZXRDb250ZXh0KFwiMmRcIilcclxuXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIgLCB0aGlzLlN0YXJ0QWxwaGFEcmFnLmJpbmQodGhpcykpXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIgLCB0aGlzLkFscGhhRHJhZy5iaW5kKHRoaXMpKVxyXG4gICAgYWxwaGFTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiAgICwgdGhpcy5FbmRBbHBoYURyYWcuYmluZCh0aGlzKSlcclxuICAgIGFscGhhU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIHRoaXMuRW5kQWxwaGFEcmFnLmJpbmQodGhpcykpXHJcblxyXG4gICAgLy8gVG91Y2ggZXZlbnRzXHJcbiAgICBhbHBoYVNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCB0aGlzLkhhbmRsZUFscGhhVG91Y2guYmluZCh0aGlzKSlcclxuICAgIGFscGhhU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiAsIHRoaXMuSGFuZGxlQWxwaGFUb3VjaC5iaW5kKHRoaXMpKVxyXG4gICAgYWxwaGFTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIgICwgdGhpcy5FbmRBbHBoYURyYWcuYmluZCh0aGlzKSlcclxuICB9XHJcbiAgU3RhcnRBbHBoYURyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0FscGhhRHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB0aGlzLkhhbmRsZUFscGhhU2VsZWN0aW9uKGUub2Zmc2V0WClcclxuICB9XHJcblxyXG4gIEFscGhhRHJhZyhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0FscGhhRHJhZ2dpbmcpIHtcclxuICAgICAgdGhpcy5IYW5kbGVBbHBoYVNlbGVjdGlvbihlLm9mZnNldFgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBFbmRBbHBoYURyYWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWxwaGFEcmFnZ2luZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBIYW5kbGVBbHBoYVRvdWNoKGU6IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgaWYgKGUudHlwZSA9PT0gXCJ0b3VjaHN0YXJ0XCIpIHtcclxuICAgICAgdGhpcy5pc0FscGhhRHJhZ2dpbmcgPSB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNBbHBoYURyYWdnaW5nKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF1cclxuICAgICAgY29uc3QgeCA9IHRvdWNoLmNsaWVudFggLSByZWN0LmxlZnRcclxuICAgICAgdGhpcy5IYW5kbGVBbHBoYVNlbGVjdGlvbih4KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSGFuZGxlQWxwaGFTZWxlY3Rpb24oeDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvLyBDb25zdHJhaW4geCB0byBjYW52YXMgYm91bmRzXHJcbiAgICB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeCwgdGhpcy5hbHBoYVNsaWRlcldpZHRoKSlcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgYWxwaGEgYmFzZWQgb24geCBwb3NpdGlvbiAoMC0xMDApXHJcbiAgICB0aGlzLmFscGhhID0gTWF0aC5yb3VuZCgoeCAvIHRoaXMuYWxwaGFTbGlkZXJXaWR0aCkgKiAxMDApXHJcblxyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkQ29sb3IodGhpcy5oc2xDb2xvci5zLCB0aGlzLmhzbENvbG9yLmwsIHRydWUpXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBbIEFscGhhIFNsaWRlciBdXHJcblxyXG4gIFNldENvbG9yRnJvbUhleChoZXhDb2xvcjogc3RyaW5nLCB1cGRhdGVDYW52YXM6IGJvb2xlYW4gPSB0cnVlLCBlbWl0Q2hhbmdlczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAvLyBSZW1vdmUgIyBpZiBwcmVzZW50XHJcbiAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgXCJcIilcclxuXHJcbiAgICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYSA9IDFcclxuXHJcbiAgICAvLyBQYXJzZSBoZXggdmFsdWVzIGJhc2VkIG9uIHN0cmluZyBsZW5ndGhcclxuICAgIGlmIChoZXhDb2xvci5sZW5ndGggPT09IDMpIHtcclxuICAgICAgLy8gU2hvcnQgaGV4ICgjUkdCKVxyXG4gICAgICByID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLmNoYXJBdCgwKSArIGhleENvbG9yLmNoYXJBdCgwKSwgMTYpXHJcbiAgICAgIGcgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3IuY2hhckF0KDEpICsgaGV4Q29sb3IuY2hhckF0KDEpLCAxNilcclxuICAgICAgYiA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5jaGFyQXQoMikgKyBoZXhDb2xvci5jaGFyQXQoMiksIDE2KVxyXG4gICAgfSBlbHNlIFxyXG4gICAgaWYgKGhleENvbG9yLmxlbmd0aCA9PT0gNikge1xyXG4gICAgICAvLyBTdGFuZGFyZCBoZXggKCNSUkdHQkIpXHJcbiAgICAgIHIgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDAsIDIpLCAxNilcclxuICAgICAgZyA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KVxyXG4gICAgICBiID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZyg0LCA2KSwgMTYpXHJcbiAgICB9IGVsc2UgXHJcbiAgICBpZiAoaGV4Q29sb3IubGVuZ3RoID09PSA4KSB7XHJcbiAgICAgIC8vIEhleCB3aXRoIGFscGhhICgjUlJHR0JCQUEpXHJcbiAgICAgIHIgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDAsIDIpLCAxNilcclxuICAgICAgZyA9IE51bWJlci5wYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KVxyXG4gICAgICBiID0gTnVtYmVyLnBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZyg0LCA2KSwgMTYpXHJcbiAgICAgIGEgPSBOdW1iZXIucGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDYsIDgpLCAxNikgLyAyNTVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEludmFsaWQgaGV4LCB1c2UgZGVmYXVsdFxyXG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBoZXggY29sb3IgZm9ybWF0XCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgUkdCIGNvbG9yXHJcbiAgICB0aGlzLnJnYkNvbG9yID0geyByLCBnLCBiIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IFJHQiB0byBIU0xcclxuICAgIHRoaXMuaHNsQ29sb3IgPSBSR0JUb0hTTCh0aGlzLnJnYkNvbG9yKVxyXG5cclxuICAgIC8vIFVwZGF0ZSBhbHBoYVxyXG4gICAgdGhpcy5hbHBoYSA9IE1hdGgucm91bmQoYSAqIDEwMClcclxuXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgY29sb3JcclxuICAgIGNvbnN0IGhleCA9IFJHQlRvSGV4KHRoaXMucmdiQ29sb3IsIGEpXHJcbiAgICBpZihlbWl0Q2hhbmdlcyl7IFxyXG4gICAgICB0aGlzLlNldFZhbHVlKGhleCk7XHJcbiAgICB9IGVsc2UgeyBcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoaGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBpZih1cGRhdGVDYW52YXMpe1xyXG4gICAgICAvLyBDYWxjdWxhdGUgaW5kaWNhdG9yIHBvc2l0aW9uXHJcbiAgICAgIHRoaXMuVXBkYXRlSW5kaWNhdG9yUG9zaXRpb25zKClcclxuICBcclxuICAgICAgLy8gUmVkcmF3IGNvbXBvbmVudHNcclxuICAgICAgdGhpcy5EcmF3Q29sb3JHcmFkaWVudCgpXHJcbiAgICAgIHRoaXMuRHJhd0FscGhhU2xpZGVyKClcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgRHJhd0NvbG9yR3JhZGllbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdHggPSB0aGlzLmdyYWRpZW50Q3R4O1xyXG5cclxuICAgIC8vIENsZWFyIGNhbnZhc1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcblxyXG4gICAgLy8gRHJhdyB0aGUgcHVyZSBodWUgY29sb3IgYXQgdGhlIHRvcC1yaWdodCBjb3JuZXJcclxuICAgIGN0eC5maWxsU3R5bGUgPSBgaHNsKCR7dGhpcy5oc2xDb2xvci5ofSwgMTAwJSwgNTAlKWBcclxuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcblxyXG4gICAgLy8gV2hpdGUgZ3JhZGllbnQgKGhvcml6b250YWwgLSBzYXR1cmF0aW9uKVxyXG4gICAgY29uc3Qgd2hpdGVHcmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0aGlzLmdyYWRpZW50V2lkdGgsIDApXHJcbiAgICB3aGl0ZUdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBcIndoaXRlXCIpXHJcbiAgICB3aGl0ZUdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMClcIilcclxuICAgIGN0eC5maWxsU3R5bGUgPSB3aGl0ZUdyYWRpZW50XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5ncmFkaWVudFdpZHRoLCB0aGlzLmdyYWRpZW50SGVpZ2h0KVxyXG5cclxuICAgIC8vIEJsYWNrIGdyYWRpZW50ICh2ZXJ0aWNhbCAtIGJyaWdodG5lc3MpXHJcbiAgICBjb25zdCBibGFja0dyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDAsIHRoaXMuZ3JhZGllbnRIZWlnaHQpXHJcbiAgICBibGFja0dyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBcInJnYmEoMCwgMCwgMCwgMClcIilcclxuICAgIGJsYWNrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIFwiYmxhY2tcIilcclxuICAgIGN0eC5maWxsU3R5bGUgPSBibGFja0dyYWRpZW50XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5ncmFkaWVudFdpZHRoLCB0aGlzLmdyYWRpZW50SGVpZ2h0KVxyXG4gIH1cclxuXHJcbiAgRHJhd0h1ZVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuaHVlQ3R4XHJcblxyXG4gICAgLy8gQ3JlYXRlIGh1ZSBncmFkaWVudFxyXG4gICAgY29uc3QgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgdGhpcy5odWVTbGlkZXJXaWR0aCwgMClcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDM2MDsgaSArPSA2MCkge1xyXG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaSAvIDM2MCwgYGhzbCgke2l9LCAxMDAlLCA1MCUpYClcclxuICAgIH1cclxuXHJcbiAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnRcclxuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmh1ZVNsaWRlcldpZHRoLCB0aGlzLmh1ZVNsaWRlckhlaWdodClcclxuICB9XHJcblxyXG4gIERyYXdBbHBoYVNsaWRlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuYWxwaGFDdHhcclxuICAgIGNvbnN0IHdpZHRoICA9IHRoaXMuYWxwaGFTbGlkZXJXaWR0aFxyXG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5hbHBoYVNsaWRlckhlaWdodFxyXG5cclxuICAgIC8vIENsZWFyIGNhbnZhc1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG5cclxuICAgIC8vIENyZWF0ZSBjaGVja2VyYm9hcmQgcGF0dGVybiBmb3IgdHJhbnNwYXJlbmN5XHJcbiAgICBjb25zdCBzcXVhcmVTaXplID0gOFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSArPSBzcXVhcmVTaXplKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqICs9IHNxdWFyZVNpemUpIHtcclxuICAgICAgICBjb25zdCBpc0V2ZW4gPSAoaSAvIHNxdWFyZVNpemUgKyBqIC8gc3F1YXJlU2l6ZSkgJSAyID09PSAwXHJcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGlzRXZlbiA/IFwiI2ZmZmZmZlwiIDogXCIjY2NjY2NjXCJcclxuICAgICAgICBjdHguZmlsbFJlY3QoaSwgaiwgc3F1YXJlU2l6ZSwgc3F1YXJlU2l6ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgLy8gQ3JlYXRlIGFscGhhIGdyYWRpZW50XHJcbiAgICBjb25zdCBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgMClcclxuICAgIGNvbnN0IHJnYiA9IEhTTFRvUkdCKHRoaXMuaHNsQ29sb3IpO1xyXG5cclxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgcmdiYSgke3JnYi5yfSwgJHtyZ2IuZ30sICR7cmdiLmJ9LCAwKWApXHJcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYHJnYmEoJHtyZ2Iucn0sICR7cmdiLmd9LCAke3JnYi5ifSwgMSlgKVxyXG5cclxuICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudFxyXG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpXHJcbiAgfVxyXG5cclxuICBhc3luYyBDb3B5VG9DbGlwYm9hcmQoKSB7XHJcbiAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUoe1xyXG4gICAgICBzdHJpbmc6IHRoaXMudmFsdWUoKVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdFN1Y2Nlc3MoYCR7dGhpcy52YWx1ZSgpfSBjb3BpYWRhIHBhcmEgYSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYSFgKTtcclxuICB9XHJcblxyXG4gIFVwZGF0ZUluZGljYXRvclBvc2l0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIFNldCBYIHBvc2l0aW9uIGRpcmVjdGx5IGZyb20gc2F0dXJhdGlvbiAoMC0xMDApXHJcbiAgICB0aGlzLmluZGljYXRvclggPSB0aGlzLmhzbENvbG9yLnM7XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIFkgcG9zaXRpb24gdXNpbmcgdGhlIGludmVyc2Ugb2YgdGhlIEhhbmRsZUNvbG9yU2VsZWN0aW9uIGxvZ2ljXHJcbiAgICBpZiAodGhpcy5oc2xDb2xvci5zID09PSAwKSB7XHJcbiAgICAgIC8vIExlZnQgZWRnZTogc2ltcGxlIHdoaXRlIHRvIGJsYWNrIG1hcHBpbmdcclxuICAgICAgdGhpcy5pbmRpY2F0b3JZID0gMTAwIC0gdGhpcy5oc2xDb2xvci5sO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIG90aGVyIHNhdHVyYXRpb24gdmFsdWVzLCB3ZSBuZWVkIHRvIHJldmVyc2UgdGhlIG1heExpZ2h0bmVzcyBjYWxjdWxhdGlvblxyXG4gICAgICBjb25zdCBtYXhMaWdodG5lc3MgPSAxMDAgLSB0aGlzLmhzbENvbG9yLnMgLyAyO1xyXG4gICAgICB0aGlzLmluZGljYXRvclkgPSAoKG1heExpZ2h0bmVzcyAtIHRoaXMuaHNsQ29sb3IubCkgLyBtYXhMaWdodG5lc3MpICogMTAwO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBFbnN1cmUgdGhlIHBvc2l0aW9uIHN0YXlzIHdpdGhpbiBib3VuZHNcclxuICAgIHRoaXMuaW5kaWNhdG9yWSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgdGhpcy5pbmRpY2F0b3JZKSk7XHJcbiAgfVxyXG5cclxuICBIRVhNYXNrOiBNYXNraXRvT3B0aW9ucyA9IHsgbWFzazogSEVYTWFzayB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBIU0xUb1JHQihoc2w6IEhTTCk6IFJHQiB7XHJcbiAgdmFyIGggPSBoc2wuaCAvIDM2MDtcclxuICB2YXIgcyA9IGhzbC5zIC8gMTAwO1xyXG4gIHZhciBsID0gaHNsLmwgLyAxMDA7XHJcblxyXG4gIGxldCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyXHJcblxyXG4gIGlmIChzID09PSAwKSB7XHJcbiAgICByID0gZyA9IGIgPSBsIC8vIGFjaHJvbWF0aWNcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHNcclxuICAgIGNvbnN0IHAgPSAyICogbCAtIHFcclxuXHJcbiAgICByID0gSFVFdG9SR0IocCwgcSwgaCArIDEgLyAzKVxyXG4gICAgZyA9IEhVRXRvUkdCKHAsIHEsIGgpXHJcbiAgICBiID0gSFVFdG9SR0IocCwgcSwgaCAtIDEgLyAzKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHI6IE1hdGgucm91bmQociAqIDI1NSksXHJcbiAgICBnOiBNYXRoLnJvdW5kKGcgKiAyNTUpLFxyXG4gICAgYjogTWF0aC5yb3VuZChiICogMjU1KSxcclxuICB9XHJcbn1cclxuZnVuY3Rpb24gSFVFdG9SR0IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgaWYgKHQgPCAwKSB0ICs9IDFcclxuICBpZiAodCA+IDEpIHQgLT0gMVxyXG4gIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0XHJcbiAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHFcclxuICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDZcclxuICByZXR1cm4gcFxyXG59XHJcblxyXG5mdW5jdGlvbiBSR0JUb0hTTChyZ2I6IFJHQik6IEhTTCB7XHJcbiAgdmFyIHIgPSByZ2IuciAvIDI1NVxyXG4gIHZhciBnID0gcmdiLmcgLyAyNTVcclxuICB2YXIgYiA9IHJnYi5iIC8gMjU1XHJcblxyXG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpXHJcbiAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYilcclxuICBsZXQgaCA9IDAsXHJcbiAgICBzID0gMFxyXG4gIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDJcclxuXHJcbiAgaWYgKG1heCAhPT0gbWluKSB7XHJcbiAgICBjb25zdCBkID0gbWF4IC0gbWluXHJcbiAgICBzID0gbCA+IDAuNSA/IGQgLyAoMiAtIG1heCAtIG1pbikgOiBkIC8gKG1heCArIG1pbilcclxuXHJcbiAgICBzd2l0Y2ggKG1heCkge1xyXG4gICAgICBjYXNlIHI6XHJcbiAgICAgICAgaCA9ICgoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKSkgLyA2XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSBnOlxyXG4gICAgICAgIGggPSAoKGIgLSByKSAvIGQgKyAyKSAvIDZcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIGI6XHJcbiAgICAgICAgaCA9ICgociAtIGcpIC8gZCArIDQpIC8gNlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgaDogTWF0aC5yb3VuZChoICogMzYwKSxcclxuICAgIHM6IE1hdGgucm91bmQocyAqIDEwMCksXHJcbiAgICBsOiBNYXRoLnJvdW5kKGwgKiAxMDApLFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gUkdCVG9IZXgocmdiOiBSR0IsIGFscGhhID0gMSk6IHN0cmluZyB7XHJcbiAgbGV0IHsgciwgZywgYiB9ID0gcmdiXHJcblxyXG4gIGNvbnN0IGFscGhhSGV4ID0gTWF0aC5yb3VuZChhbHBoYSAqIDI1NSlcclxuICAgIC50b1N0cmluZygxNilcclxuICAgIC5wYWRTdGFydCgyLCBcIjBcIilcclxuICByZXR1cm4gKFxyXG4gICAgXCIjXCIgK1xyXG4gICAgW3IsIGcsIGJdXHJcbiAgICAgIC5tYXAoKHgpID0+IHtcclxuICAgICAgICBjb25zdCBoZXggPSB4LnRvU3RyaW5nKDE2KVxyXG4gICAgICAgIHJldHVybiBoZXgubGVuZ3RoID09PSAxID8gXCIwXCIgKyBoZXggOiBoZXhcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oXCJcIikgK1xyXG4gICAgKGFscGhhIDwgMSA/IGFscGhhSGV4IDogXCJcIilcclxuICApLnRvVXBwZXJDYXNlKCk7XHJcbn1cclxuXHJcbmNvbnN0IEhFWERpZ2l0UmVnZXg6IFJlZ0V4cCA9IC9bMC05YS1mXSsvaTtcclxuY29uc3QgSEVYTWFzazogTWFza2l0b01hc2tFeHByZXNzaW9uID0gWyAnIycsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXgsIEhFWERpZ2l0UmVnZXggXTsiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cInNldEZvY3VzKCRldmVudCk7IFByZXNlbnQoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW21hc2tpdG9dPVwiSEVYTWFza1wiXHJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZSgpXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIlNldENvbG9yRnJvbUhleCgkZXZlbnQsIHRydWUsIHRydWUpXCIgXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gICAgKGJsdXIpPVwiYmx1ci5lbWl0KCRldmVudClcIlxyXG4gIC8+XHJcbiAgPGRpdiBjbGFzcz1cIiBhYnNvbHV0ZSBib3R0b20tMiByaWdodC04IHNpemUtNSByb3VuZGVkLXNtIG92ZXJmbG93LWhpZGRlblwiIFtzdHlsZV09XCJ7ICdiYWNrZ3JvdW5kJzogdmFsdWUoKSB9XCI+IDwvZGl2PlxyXG5cclxuICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0xIGJvdHRvbS0xXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBib2FyZCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIj5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xpcGJvYXJkXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gW21heGxlbmd0aF09XCJjb25maWd1cmF0aW9uKCkubWF4bGVuZ3RoXCIgLS0+XHJcbiAgICA8IS0tIFt0eXBlXT1cImNvbmZpZ3VyYXRpb24oKS50eXBlXCIgIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHNpb24tcG9wb3ZlclxyXG4gICNwb3BvdmVyIFxyXG4gIHdpZHRoPVwiZml0LWNvbnRlbnRcIiBcclxuICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCIgXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHAtMiBmbGV4IGdhcC0xXCI+ICBcclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctNDQgc2hyaW5rLTAgZ2FwLTFcIj5cclxuICAgICAgPGRpdiBpZD1cImdyYWRpZW50V3JhcHBlclwiIGNsYXNzPVwidy00NCBoLTMyIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGNhbnZhcyAjZ3JhZGllbnQgd2lkdGg9XCIxNzZcIiBoZWlnaHQ9XCIxMjhcIiBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLXNtIHRyYW5zbHVjaWQtYm9yZGVyXCI+PC9jYW52YXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLWluZGljYXRvciBxdWljay10cmFuc2l0aW9uXCIgW3N0eWxlLmxlZnQuJV09XCJpbmRpY2F0b3JYXCIgW3N0eWxlLnRvcC4lXT1cImluZGljYXRvcllcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGlkPVwiaHVlV3JhcHBlclwiIGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGNhbnZhcyAjaHVlU2xpZGVyICAgY2xhc3M9XCJ3LWZ1bGwgcm91bmRlZCBoLVsyMnB4XVwiIHdpZHRoPVwiMTc2XCIgaGVpZ2h0PVwiMjJcIj48L2NhbnZhcz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yIHF1aWNrLXRyYW5zaXRpb25cIiBbc3R5bGUubGVmdC4lXT1cImhzbENvbG9yLmggLyAzLjZcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGlkPVwiYWxwaGFXcmFwcGVyXCIgY2xhc3M9XCJ3LWZ1bGwgcmVsYXRpdmVcIj5cclxuICAgICAgICA8Y2FudmFzICNhbHBoYVNsaWRlciBjbGFzcz1cInctZnVsbCByb3VuZGVkIGgtWzIycHhdXCIgd2lkdGg9XCIxNzZcIiBoZWlnaHQ9XCIyMlwiPjwvY2FudmFzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3IgcXVpY2stdHJhbnNpdGlvblwiIFtzdHlsZS5sZWZ0LiVdPVwiYWxwaGFcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggc2hyaW5rLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGdyaWQgZ3JpZC1jb2xzLTUgZ2FwLTFcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyMwMDAwMDBGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzM4ODBGRkZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb2xvcjsgY29udGV4dDogeyAkaW1wbGljaXQ6ICcjMkREMzZGRkYnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGRkM0MDlGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnI0VCNDQ1QUZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGRkZGRkZGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzU5MTY4YkZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb2xvcjsgY29udGV4dDogeyAkaW1wbGljaXQ6ICcjQzYwMDVDRkYnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbG9yOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogJyNGQjJDMzZGRicgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29sb3I7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAnIzMxNDE1OEZGJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zaW9uLXBvcG92ZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlQ29sb3IgbGV0LWNvbG9yPlxyXG4gIDxkaXYgY2xhc3M9XCJzaXplLTggcm91bmRlZCB0cmFuc2x1Y2lkLWJvcmRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZXRDb2xvckZyb21IZXgoY29sb3IsIHRydWUsIHRydWUpXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -72,14 +72,14 @@ export class InputCpfCnpjComponent extends CustomInput {
|
|
|
72
72
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { configuration: "configurationChange" }, providers: [
|
|
73
73
|
...InputProviderFactory.GetProviders(InputCpfCnpjComponent),
|
|
74
74
|
{ provide: CustomInput, useExisting: forwardRef(() => InputCpfCnpjComponent) },
|
|
75
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [ngModel]=\"value()\" \r\n [maskito]=\"mask\"\r\n inputmode=\"numeric\"\r\n [type]=\"'text'\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }] }); }
|
|
75
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [ngModel]=\"value()\" \r\n [maskito]=\"mask\"\r\n inputmode=\"numeric\"\r\n [type]=\"'text'\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n />\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }] }); }
|
|
76
76
|
}
|
|
77
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputCpfCnpjComponent, decorators: [{
|
|
78
78
|
type: Component,
|
|
79
79
|
args: [{ selector: 'input-cpf-cnpj, input-cpf, input-cnpj', providers: [
|
|
80
80
|
...InputProviderFactory.GetProviders(InputCpfCnpjComponent),
|
|
81
81
|
{ provide: CustomInput, useExisting: forwardRef(() => InputCpfCnpjComponent) },
|
|
82
|
-
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [ngModel]=\"value()\" \r\n [maskito]=\"mask\"\r\n inputmode=\"numeric\"\r\n [type]=\"'text'\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
82
|
+
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <input #input\r\n [ngModel]=\"value()\" \r\n [maskito]=\"mask\"\r\n inputmode=\"numeric\"\r\n [type]=\"'text'\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n />\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
83
83
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { input: [{
|
|
84
84
|
type: ViewChild,
|
|
85
85
|
args: ['input']
|
|
@@ -113,4 +113,4 @@ const cpfCnpjMask = {
|
|
|
113
113
|
export function FormatCpfCnpj(value) {
|
|
114
114
|
return maskitoTransform(value, cpfCnpjMask);
|
|
115
115
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3BmLWNucGouY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWNwZi1jbnBqL2lucHV0LWNwZi1jbnBqLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQVdqRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBbUI7SUFNbkQsUUFBUSxDQUFDLEtBQXdCO1FBQ3hDLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELFlBQ3FCLFVBQXdDO1FBRTNELEtBQUssRUFBRSxDQUFDO1FBRlcsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFUN0Qsa0JBQWEsR0FBMkMsS0FBSyxDQUE0QixJQUFJLHlCQUF5QixFQUFFLENBQUMs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QUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNuQyxPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQztnQkFDRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osSUFBRyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbkMsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLENBQUM7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUNELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYTtJQUN6QyxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBtb2RlbCwgTW9kZWxTaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXNraXRvTWFza0V4cHJlc3Npb24sIE1hc2tpdG9PcHRpb25zLCBtYXNraXRvVHJhbnNmb3JtIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtY3BmLWNucGouY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0UHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaW5wdXQtcHJvdmlkZXItZmFjdG9yeSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWNwZi1jbnBqLCBpbnB1dC1jcGYsIGlucHV0LWNucGonLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jcGYtY25wai5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtY3BmLWNucGouY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIC4uLklucHV0UHJvdmlkZXJGYWN0b3J5LkdldFByb3ZpZGVycyhJbnB1dENwZkNucGpDb21wb25lbnQpLFxyXG4gICAgeyBwcm92aWRlOiBDdXN0b21JbnB1dCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDcGZDbnBqQ29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENwZkNucGpDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxzdHJpbmc+IHtcclxuXHJcbiAgY29uZmlndXJhdGlvbjogTW9kZWxTaWduYWw8SW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbj4gPSBtb2RlbDxJbnB1dENwZkNucGpDb25maWd1cmF0aW9uPihuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbigpKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuaW5wdXQgJiYgKGV2ZW50ID09IG51bGwgfHwgZXZlbnQudGFyZ2V0ID09IHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudCkpIHsgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7IH0gICAgICBcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuICApIHsgXHJcbiAgICBzdXBlcigpOyBcclxuICAgIGlmKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PSAnaW5wdXQtY3BmLWNucGonKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNldChuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbigpKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCBzZWxlY3Rvcjogc3RyaW5nID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCctJylbMV07XHJcbiAgICAgIGlmKHNlbGVjdG9yID09ICdjcGYnICl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oJ0NQRicpKSAgfSBlbHNlXHJcbiAgICAgIGlmKHNlbGVjdG9yID09ICdjbnBqJyl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oJ0NOUEonKSkgfSBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShvYmoucmVwbGFjZUFsbCgnLicsICcnKS5yZXBsYWNlQWxsKCctJywgJycpLnJlcGxhY2VBbGwoJy8nLCAnJykpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlYWRvbmx5IG1hc2s6IE1hc2tpdG9PcHRpb25zID0ge1xyXG4gICAgbWFzazogKGVsZW1lbnRTdGF0ZSkgPT4ge1xyXG4gICAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS50eXBlID09ICdDUEZDTlBKJyl7XHJcbiAgICAgICAgaWYoIWVsZW1lbnRTdGF0ZS52YWx1ZSl7IFxyXG4gICAgICAgICAgcmV0dXJuIGNwZk1hc2s7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUuaW5jbHVkZXMoJy4nKSl7XHJcbiAgICAgICAgICAgIGlmKGVsZW1lbnRTdGF0ZS52YWx1ZS5sZW5ndGggPD0gMTQpIHsgXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNwZk1hc2s7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjbnBqTWFzaztcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUubGVuZ3RoIDw9IDExKSB7IFxyXG4gICAgICAgICAgICAgIHJldHVybiBjcGZNYXNrOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY25wak1hc2s7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnR5cGUgPT0gJ0NOUEonKXsgcmV0dXJuIGNucGpNYXNrOyB9XHJcbiAgICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnR5cGUgPT0gJ0NQRicgKXsgcmV0dXJuIGNwZk1hc2s7ICB9XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuXHJcbmNvbnN0IGNwZk1hc2sgOiBNYXNraXRvTWFza0V4cHJlc3Npb24gPSBbIC9cXGQvLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAnLScsIC9cXGQvLCAvXFxkLyAgXTtcclxuY29uc3QgY25wak1hc2s6IE1hc2tpdG9NYXNrRXhwcmVzc2lvbiA9IFsgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy8nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy0nLCAvXFxkLywgL1xcZC9dO1xyXG5jb25zdCBjcGZDbnBqTWFzazogTWFza2l0b09wdGlvbnMgPSB7XHJcbiAgbWFzazogKGVsZW1lbnRTdGF0ZSkgPT4ge1xyXG4gICAgaWYoIWVsZW1lbnRTdGF0ZS52YWx1ZSl7IFxyXG4gICAgICByZXR1cm4gY3BmTWFzaztcclxuICAgIH1lbHNle1xyXG4gICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUuaW5jbHVkZXMoJy4nKSl7XHJcbiAgICAgICAgaWYoZWxlbWVudFN0YXRlLnZhbHVlLmxlbmd0aCA8PSAxNCkgeyBcclxuICAgICAgICAgIHJldHVybiBjcGZNYXNrOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNucGpNYXNrO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUubGVuZ3RoIDw9IDExKSB7IFxyXG4gICAgICAgICAgcmV0dXJuIGNwZk1hc2s7IFxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY25wak1hc2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdENwZkNucGoodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIG1hc2tpdG9UcmFuc2Zvcm0odmFsdWUsIGNwZkNucGpNYXNrKTtcclxufSIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwic2V0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW25nTW9kZWxdPVwidmFsdWUoKVwiIFxyXG4gICAgW21hc2tpdG9dPVwibWFza1wiXHJcbiAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgIFt0eXBlXT1cIid0ZXh0J1wiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiU2V0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gIC8+XHJcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCI+XHJcbiAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3BmLWNucGouY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWNwZi1jbnBqL2lucHV0LWNwZi1jbnBqLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQVdqRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBbUI7SUFNbkQsUUFBUSxDQUFDLEtBQXdCO1FBQ3hDLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELFlBQ3FCLFVBQXdDO1FBRTNELEtBQUssRUFBRSxDQUFDO1FBRlcsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFUN0Qsa0JBQWEsR0FBMkMsS0FBSyxDQUE0QixJQUFJLHlCQUF5QixFQUFFLENBQUMs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QUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNuQyxPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQztnQkFDRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osSUFBRyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbkMsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLENBQUM7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUNELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYTtJQUN6QyxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBtb2RlbCwgTW9kZWxTaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXNraXRvTWFza0V4cHJlc3Npb24sIE1hc2tpdG9PcHRpb25zLCBtYXNraXRvVHJhbnNmb3JtIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtY3BmLWNucGouY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0UHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaW5wdXQtcHJvdmlkZXItZmFjdG9yeSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWNwZi1jbnBqLCBpbnB1dC1jcGYsIGlucHV0LWNucGonLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jcGYtY25wai5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtY3BmLWNucGouY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIC4uLklucHV0UHJvdmlkZXJGYWN0b3J5LkdldFByb3ZpZGVycyhJbnB1dENwZkNucGpDb21wb25lbnQpLFxyXG4gICAgeyBwcm92aWRlOiBDdXN0b21JbnB1dCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDcGZDbnBqQ29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENwZkNucGpDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxzdHJpbmc+IHtcclxuXHJcbiAgY29uZmlndXJhdGlvbjogTW9kZWxTaWduYWw8SW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbj4gPSBtb2RlbDxJbnB1dENwZkNucGpDb25maWd1cmF0aW9uPihuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbigpKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuaW5wdXQgJiYgKGV2ZW50ID09IG51bGwgfHwgZXZlbnQudGFyZ2V0ID09IHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudCkpIHsgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7IH0gICAgICBcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuICApIHsgXHJcbiAgICBzdXBlcigpOyBcclxuICAgIGlmKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PSAnaW5wdXQtY3BmLWNucGonKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNldChuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbigpKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCBzZWxlY3Rvcjogc3RyaW5nID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCctJylbMV07XHJcbiAgICAgIGlmKHNlbGVjdG9yID09ICdjcGYnICl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oJ0NQRicpKSAgfSBlbHNlXHJcbiAgICAgIGlmKHNlbGVjdG9yID09ICdjbnBqJyl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oJ0NOUEonKSkgfSBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShvYmoucmVwbGFjZUFsbCgnLicsICcnKS5yZXBsYWNlQWxsKCctJywgJycpLnJlcGxhY2VBbGwoJy8nLCAnJykpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlYWRvbmx5IG1hc2s6IE1hc2tpdG9PcHRpb25zID0ge1xyXG4gICAgbWFzazogKGVsZW1lbnRTdGF0ZSkgPT4ge1xyXG4gICAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS50eXBlID09ICdDUEZDTlBKJyl7XHJcbiAgICAgICAgaWYoIWVsZW1lbnRTdGF0ZS52YWx1ZSl7IFxyXG4gICAgICAgICAgcmV0dXJuIGNwZk1hc2s7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUuaW5jbHVkZXMoJy4nKSl7XHJcbiAgICAgICAgICAgIGlmKGVsZW1lbnRTdGF0ZS52YWx1ZS5sZW5ndGggPD0gMTQpIHsgXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNwZk1hc2s7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjbnBqTWFzaztcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUubGVuZ3RoIDw9IDExKSB7IFxyXG4gICAgICAgICAgICAgIHJldHVybiBjcGZNYXNrOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY25wak1hc2s7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnR5cGUgPT0gJ0NOUEonKXsgcmV0dXJuIGNucGpNYXNrOyB9XHJcbiAgICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnR5cGUgPT0gJ0NQRicgKXsgcmV0dXJuIGNwZk1hc2s7ICB9XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuXHJcbmNvbnN0IGNwZk1hc2sgOiBNYXNraXRvTWFza0V4cHJlc3Npb24gPSBbIC9cXGQvLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAnLScsIC9cXGQvLCAvXFxkLyAgXTtcclxuY29uc3QgY25wak1hc2s6IE1hc2tpdG9NYXNrRXhwcmVzc2lvbiA9IFsgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy8nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy0nLCAvXFxkLywgL1xcZC9dO1xyXG5jb25zdCBjcGZDbnBqTWFzazogTWFza2l0b09wdGlvbnMgPSB7XHJcbiAgbWFzazogKGVsZW1lbnRTdGF0ZSkgPT4ge1xyXG4gICAgaWYoIWVsZW1lbnRTdGF0ZS52YWx1ZSl7IFxyXG4gICAgICByZXR1cm4gY3BmTWFzaztcclxuICAgIH1lbHNle1xyXG4gICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUuaW5jbHVkZXMoJy4nKSl7XHJcbiAgICAgICAgaWYoZWxlbWVudFN0YXRlLnZhbHVlLmxlbmd0aCA8PSAxNCkgeyBcclxuICAgICAgICAgIHJldHVybiBjcGZNYXNrOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNucGpNYXNrO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZihlbGVtZW50U3RhdGUudmFsdWUubGVuZ3RoIDw9IDExKSB7IFxyXG4gICAgICAgICAgcmV0dXJuIGNwZk1hc2s7IFxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY25wak1hc2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdENwZkNucGoodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIG1hc2tpdG9UcmFuc2Zvcm0odmFsdWUsIGNwZkNucGpNYXNrKTtcclxufSIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwic2V0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW25nTW9kZWxdPVwidmFsdWUoKVwiIFxyXG4gICAgW21hc2tpdG9dPVwibWFza1wiXHJcbiAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgIFt0eXBlXT1cIid0ZXh0J1wiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiU2V0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gICAgKGJsdXIpPVwiYmx1ci5lbWl0KCRldmVudClcIlxyXG4gIC8+XHJcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCI+XHJcbiAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|