@fundamental-ngx/core 0.46.0 → 0.46.1-rc.1

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.
@@ -490,7 +490,7 @@ export class WizardComponent {
490
490
  provide: WIZARD,
491
491
  useExisting: WizardComponent
492
492
  }
493
- ], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }, { propertyName: "scrollbar", first: true, predicate: ScrollbarDirective, descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-wizard:after,.fd-wizard:before{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__navigation:after,.fd-wizard__navigation:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_HeaderShadow);background:var(--sapObjectHeader_Background);border:0;box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);display:table;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:4rem;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:1rem 0 0;position:relative;table-layout:fixed;width:100%}.fd-wizard__progress-bar:after,.fd-wizard__progress-bar:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--lg,.fd-wizard__progress-bar--md{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-wrapper:after,.fd-wizard__step-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step{-webkit-box-sizing:border-box;-webkit-box-sizing:content-box;border:0;box-sizing:border-box;box-sizing:content-box;color:var(--sapTextColor);display:table-cell;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:10.5rem;padding:0;position:relative;vertical-align:top;width:100%}.fd-wizard__step:after,.fd-wizard__step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{background:var(--fdWizard_Current_Step_Background_Color);border:var(--fdWizard_Current_Step_Border);color:var(--fdWizard_Current_Step_Color);position:relative}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{-webkit-transition:all .125s ease-in;background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;bottom:-1rem;content:\"\";display:inline-block;height:var(--fdWizard_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{min-width:auto;width:.25rem}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}.fd-wizard__step--stacked:last-child[dir=rtl],[dir=rtl] .fd-wizard__step--stacked:last-child{padding-left:2.375rem;padding-right:0}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:first-child{z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-container:after,.fd-wizard__step-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container.is-focus,.fd-wizard__step-container:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-wizard__step-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 .1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right);min-height:2rem;min-width:2rem;padding:0;width:2rem}.fd-wizard__step-indicator:after,.fd-wizard__step-indicator:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-indicator[dir=rtl],[dir=rtl] .fd-wizard__step-indicator{margin-left:var(--fdWizard_Step_Indicator_Margin_Right);margin-right:.1875rem}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:inherit;border-radius:inherit;color:inherit;display:flex;font-size:inherit;font-size:var(--sapFontLargeSize);height:100%;justify-content:center;line-height:1}.fd-wizard__label-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:2rem;max-width:100%;overflow:hidden;padding:0}.fd-wizard__label-container:after,.fd-wizard__label-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{-webkit-line-clamp:1;max-height:1rem}.fd-wizard__label,.fd-wizard__label-container--optional .fd-wizard__label{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.fd-wizard__label{-webkit-box-sizing:border-box;-webkit-line-clamp:2;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-family:var(--fdWizard_Label_Font_Family);font-size:var(--sapFontSize);font-weight:400;font-weight:var(--fdWizard_Label_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;max-width:100%;padding:0}.fd-wizard__label:after,.fd-wizard__label:before{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{-webkit-box-sizing:border-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:-webkit-box;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:normal}.fd-wizard__optional-text:after,.fd-wizard__optional-text:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 1 auto;border:0;border-bottom:.0625rem solid var(--sapList_BorderColor);box-sizing:border-box;color:var(--sapTextColor);flex:1 1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:.5rem;max-width:100%;min-width:1rem;padding:0}.fd-wizard__connector:after,.fd-wizard__connector:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{-webkit-box-sizing:border-box;background:var(--sapBackgroundColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 0 0;width:100%}.fd-wizard__content:after,.fd-wizard__content:before{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--lg,.fd-wizard__content--md{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{-webkit-box-sizing:border-box;background-color:var(--fdWizard_Step_Content_Container_Background_Color);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding:var(--fdWizard_Step_Content_Container_Spacing)}.fd-wizard__step-content-container:after,.fd-wizard__step-content-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--lg,.fd-wizard__step-content-container--md{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0}.fd-wizard__next-step:after,.fd-wizard__next-step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--lg,.fd-wizard__next-step--md{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{bottom:3.5rem;position:absolute}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}:host .fd-scrollbar{max-height:100%;max-width:100%;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
493
+ ], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }, { propertyName: "scrollbar", first: true, predicate: ScrollbarDirective, descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-wizard:after,.fd-wizard:before{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__navigation:after,.fd-wizard__navigation:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_HeaderShadow);background:var(--sapObjectHeader_Background);border:0;box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);display:table;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:4rem;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:1rem 0 0;position:relative;table-layout:fixed;width:100%}.fd-wizard__progress-bar:after,.fd-wizard__progress-bar:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--lg,.fd-wizard__progress-bar--md{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-wrapper:after,.fd-wizard__step-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step{-webkit-box-sizing:border-box;-webkit-box-sizing:content-box;border:0;box-sizing:border-box;box-sizing:content-box;color:var(--sapTextColor);display:table-cell;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:10.5rem;padding:0;position:relative;vertical-align:top;width:100%}.fd-wizard__step:after,.fd-wizard__step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{background:var(--fdWizard_Current_Step_Background_Color);border:var(--fdWizard_Current_Step_Border);color:var(--fdWizard_Current_Step_Color);position:relative}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{-webkit-transition:all .125s ease-in;background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;bottom:-1rem;content:\"\";display:inline-block;height:var(--fdWizard_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{min-width:auto;width:.25rem}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}.fd-wizard__step--stacked:last-child[dir=rtl],[dir=rtl] .fd-wizard__step--stacked:last-child{padding-left:2.375rem;padding-right:0}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:first-child{z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-container:after,.fd-wizard__step-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container.is-focus,.fd-wizard__step-container:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-wizard__step-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 .1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right);min-height:2rem;min-width:2rem;padding:0;width:2rem}.fd-wizard__step-indicator:after,.fd-wizard__step-indicator:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-indicator[dir=rtl],[dir=rtl] .fd-wizard__step-indicator{margin-left:var(--fdWizard_Step_Indicator_Margin_Right);margin-right:.1875rem}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:inherit;border-radius:inherit;color:inherit;display:flex;font-size:inherit;font-size:var(--sapFontLargeSize);height:100%;justify-content:center;line-height:1}.fd-wizard__label-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:2rem;max-width:100%;overflow:hidden;padding:0}.fd-wizard__label-container:after,.fd-wizard__label-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{-webkit-line-clamp:1;max-height:1rem}.fd-wizard__label,.fd-wizard__label-container--optional .fd-wizard__label{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.fd-wizard__label{-webkit-box-sizing:border-box;-webkit-line-clamp:2;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-family:var(--fdWizard_Label_Font_Family);font-size:var(--sapFontSize);font-weight:400;font-weight:var(--fdWizard_Label_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;max-width:100%;padding:0}.fd-wizard__label:after,.fd-wizard__label:before{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{-webkit-box-sizing:border-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:-webkit-box;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:normal}.fd-wizard__optional-text:after,.fd-wizard__optional-text:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 1 auto;border:0;border-bottom:.0625rem solid var(--sapList_BorderColor);box-sizing:border-box;color:var(--sapTextColor);flex:1 1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:.5rem;max-width:100%;min-width:1rem;padding:0}.fd-wizard__connector:after,.fd-wizard__connector:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{-webkit-box-sizing:border-box;background:var(--sapBackgroundColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 0 0;width:100%}.fd-wizard__content:after,.fd-wizard__content:before{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--lg,.fd-wizard__content--md{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{-webkit-box-sizing:border-box;background-color:var(--fdWizard_Step_Content_Container_Background_Color);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding:var(--fdWizard_Step_Content_Container_Spacing)}.fd-wizard__step-content-container:after,.fd-wizard__step-content-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--lg,.fd-wizard__step-content-container--md{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0}.fd-wizard__next-step:after,.fd-wizard__next-step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--lg,.fd-wizard__next-step--md{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{bottom:3.5rem;position:absolute}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}:host .fd-scrollbar{max-height:100%;max-width:100%;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"], exportAs: ["fdScrollSpy"] }, { kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
494
494
  }
495
495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: WizardComponent, decorators: [{
496
496
  type: Component,
@@ -541,4 +541,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
541
541
  type: HostListener,
542
542
  args: ['window:resize']
543
543
  }] } });
544
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJD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L0I7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxtQkFBbUIsRUFBRSxrQ0FBa0M7cUJBQzFELGNBQ1csSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7OzBCQWdGMUYsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7NENBeEVoRCxjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQWlDN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC13aXphcmQtLXJlc3BvbnNpdmUtcGFkZGluZ3MnKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBhIHN1bW1hcnkgc3RlcC4gICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnRcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIGlzIGJlaW5nIHRyYW5zbGF0ZWQgYnkgaTE4biBwYWNrYWdlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgc2Nyb2xsYmFyOiBTY3JvbGxiYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRBcmlhTGFiZWwgPSByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwoJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxiYXIuc2Nyb2xsKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGVwQ2xhc3NlcygpO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2FueVN0ZXBJc1Rvb05hcnJvdygpICYmIGkgPCB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FueVN0ZXBJc1Rvb05hcnJvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBDbGlja2VkKGNsaWNrZWRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgIGNsaWNrZWRTdGVwID0gdGhpcy5zdGVwcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGlja2VkU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihjbGlja2VkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAgPT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ1VSUkVOVF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgIT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPCBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENPTVBMRVRFRF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApID4gY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KFVQQ09NSU5HX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7IC8vIHRoaXMgZnVuY3Rpb24gY2FuIGZvY3VzIHN0ZXAgaW5kaWNhdG9ycyB1bmRlc2lyYWJseVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5zdGVwcy5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuX3N0ZXBJZC50b1N0cmluZygpID09PSAkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5fc3RlcElkIDwgcGFyc2VJbnQoJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkLCAxMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmQtd2l6YXJkXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtd2l6YXJkLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAjd3JhcHBlckNvbnRhaW5lclxuICAgICAgICBmZFNjcm9sbFNweVxuICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgIFt0cmFja2VkVGFnc109XCJbJ2RpdiddXCJcbiAgICAgICAgKHNweUNoYW5nZSk9XCJzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhYXBwZW5kVG9XaXphcmRcIiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
544
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJD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L0I7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxtQkFBbUIsRUFBRSxrQ0FBa0M7cUJBQzFELGNBQ1csSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7OzBCQWdGMUYsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7NENBeEVoRCxjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQWlDN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC13aXphcmQtLXJlc3BvbnNpdmUtcGFkZGluZ3MnKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBhIHN1bW1hcnkgc3RlcC4gICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnRcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIGlzIGJlaW5nIHRyYW5zbGF0ZWQgYnkgaTE4biBwYWNrYWdlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgc2Nyb2xsYmFyOiBTY3JvbGxiYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRBcmlhTGFiZWwgPSByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwoJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxiYXIuc2Nyb2xsKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGVwQ2xhc3NlcygpO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2FueVN0ZXBJc1Rvb05hcnJvdygpICYmIGkgPCB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FueVN0ZXBJc1Rvb05hcnJvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBDbGlja2VkKGNsaWNrZWRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgIGNsaWNrZWRTdGVwID0gdGhpcy5zdGVwcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGlja2VkU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihjbGlja2VkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAgPT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ1VSUkVOVF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgIT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPCBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENPTVBMRVRFRF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApID4gY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KFVQQ09NSU5HX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7IC8vIHRoaXMgZnVuY3Rpb24gY2FuIGZvY3VzIHN0ZXAgaW5kaWNhdG9ycyB1bmRlc2lyYWJseVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5zdGVwcy5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuX3N0ZXBJZC50b1N0cmluZygpID09PSAkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5fc3RlcElkIDwgcGFyc2VJbnQoJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkLCAxMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmQtd2l6YXJkXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtd2l6YXJkLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAjd3JhcHBlckNvbnRhaW5lclxuICAgICAgICBmZFNjcm9sbFNweVxuICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgIFt0cmFja2VkVGFnc109XCJbJ2RpdiddXCJcbiAgICAgICAgKHNweUNoYW5nZSk9XCJzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhYXBwZW5kVG9XaXphcmRcIiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
@@ -471,14 +471,16 @@ class DatePickerComponent {
471
471
  const endChanged = !this._dateTimeAdapter.datesEqual(dates.end, this.selectedRangeDate.end);
472
472
  if (dates && (startChanged || endChanged)) {
473
473
  const shouldClose = this.closeOnDateChoose && dates.end !== null;
474
- this._inputFieldDate = this._formatDateRange(dates);
475
- this.selectedRangeDate = {
476
- start: dates.start,
477
- end: dates.end
478
- };
479
- this.selectedRangeDateChange.emit(this.selectedRangeDate);
480
- this.onChange(this.selectedRangeDate);
481
- this._isInvalidDateInput = !this.isModelValid();
474
+ if (dates.end !== null) {
475
+ this._inputFieldDate = this._formatDateRange(dates);
476
+ this.selectedRangeDate = {
477
+ start: dates.start,
478
+ end: dates.end
479
+ };
480
+ this.selectedRangeDateChange.emit(this.selectedRangeDate);
481
+ this.onChange(this.selectedRangeDate);
482
+ this._isInvalidDateInput = !this.isModelValid();
483
+ }
482
484
  if (shouldClose) {
483
485
  this.closeCalendar();
484
486
  }