@lowcodeunit/applications-flow-common 1.37.84-new-state-setup → 1.37.87-mobile-friendly

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.
@@ -58,10 +58,10 @@ export class ProcessorDetailsDialogComponent {
58
58
  }
59
59
  }
60
60
  ProcessorDetailsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsDialogComponent, deps: [{ token: i1.EaCService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
61
- ProcessorDetailsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsDialogComponent, selector: "lcu-processor-details-dialog", viewQueries: [{ propertyName: "ProcessorDetailsFormControls", first: true, predicate: ProcessorDetailsFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-processor-details-form\n more-details\n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\"\n [environment]=\"\n State?.EaC?.Environments[State?.EaC?.Enterprise?.PrimaryEnvironment]\n \"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n [loading]=\"State?.Loading\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n color=\"primary\"\n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"\n !ProcessorDetailsFormGroup?.valid ||\n !ProcessorDetailsFormGroup?.dirty\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: ["editing-application", "editing-application-lookup", "environment", "has-save-button", "source-control-lookups", "project-lookup", "loading"], outputs: ["save-form-event"] }], directives: [{ type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
61
+ ProcessorDetailsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsDialogComponent, selector: "lcu-processor-details-dialog", viewQueries: [{ propertyName: "ProcessorDetailsFormControls", first: true, predicate: ProcessorDetailsFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-processor-details-form\n more-details\n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\"\n [environment]=\"\n State?.EaC?.Environments[State?.EaC?.Enterprise?.PrimaryEnvironment]\n \"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n [loading]=\"State?.Loading\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n color=\"primary\"\n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"\n !ProcessorDetailsFormGroup?.valid ||\n !ProcessorDetailsFormGroup?.dirty\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: ["editing-application", "editing-application-lookup", "environment", "has-save-button", "source-control-lookups", "project-lookup", "loading"], outputs: ["save-form-event"] }], directives: [{ type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsDialogComponent, decorators: [{
63
63
  type: Component,
64
- args: [{ selector: 'lcu-processor-details-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-processor-details-form\n more-details\n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\"\n [environment]=\"\n State?.EaC?.Environments[State?.EaC?.Enterprise?.PrimaryEnvironment]\n \"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n [loading]=\"State?.Loading\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n color=\"primary\"\n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"\n !ProcessorDetailsFormGroup?.valid ||\n !ProcessorDetailsFormGroup?.dirty\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""] }]
64
+ args: [{ selector: 'lcu-processor-details-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-processor-details-form\n more-details\n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\"\n [environment]=\"\n State?.EaC?.Environments[State?.EaC?.Enterprise?.PrimaryEnvironment]\n \"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n [loading]=\"State?.Loading\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n color=\"primary\"\n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"\n !ProcessorDetailsFormGroup?.valid ||\n !ProcessorDetailsFormGroup?.dirty\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""] }]
65
65
  }], ctorParameters: function () { return [{ type: i1.EaCService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
66
66
  type: Inject,
67
67
  args: [MAT_DIALOG_DATA]
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
69
69
  type: ViewChild,
70
70
  args: [ProcessorDetailsFormComponent]
71
71
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2RpYWxvZ3MvcHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy9wcm9jZXNzb3ItZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7O0FBZXZILE1BQU0sT0FBTywrQkFBK0I7SUFvQnhDLFlBQ2MsTUFBa0IsRUFDckIsU0FBd0QsRUFDL0IsSUFBZ0MsRUFDdEQsUUFBcUI7UUFIckIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUErQztRQUMvQixTQUFJLEdBQUosSUFBSSxDQUE0QjtRQUN0RCxhQUFRLEdBQVIsUUFBUSxDQUFhO0lBQ2hDLENBQUM7SUFyQkosSUFBVyx5QkFBeUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUseUJBQXlCLENBQUM7SUFDeEUsQ0FBQztJQXFCTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXO29CQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbEU7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFdBQVc7b0JBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNsRTtZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQ2xDLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2Qsb0NBQW9DLEVBQ3BDLFNBQVMsRUFDVDtnQkFDSSxRQUFRLEVBQUUsSUFBSTthQUNqQixDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0QsQ0FBQzs7NEhBckVRLCtCQUErQix3RUF1QjVCLGVBQWU7Z0hBdkJsQiwrQkFBK0Isa0lBQzdCLDZCQUE2QixnREMxQjVDLGtvREEyREE7MkZEbENhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDSSw4QkFBOEI7OzBCQTJCbkMsTUFBTTsyQkFBQyxlQUFlO3NFQXJCcEIsNEJBQTRCO3NCQURsQyxTQUFTO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgICBFYUNTb3VyY2VDb250cm9sLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgUHJvY2Vzc29yRGV0YWlsc0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9wcm9jZXNzb3ItZGV0YWlscy1mb3JtL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc29yRGV0YWlsc0RpYWxvZ0RhdGEge1xuICAgIGFwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnRMb29rdXA6IHN0cmluZztcbiAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LXByb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NvckRldGFpbHNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoUHJvY2Vzc29yRGV0YWlsc0Zvcm1Db21wb25lbnQpXG4gICAgcHVibGljIFByb2Nlc3NvckRldGFpbHNGb3JtQ29udHJvbHM6IFByb2Nlc3NvckRldGFpbHNGb3JtQ29tcG9uZW50O1xuXG4gICAgcHVibGljIGdldCBQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtQ29udHJvbHM/LlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIEFwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIHB1YmxpYyBFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudDogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG5cbiAgICBwdWJsaWMgU3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZTtcblxuICAgIHB1YmxpYyBTb3VyY2VDb250cm9sczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH07XG5cbiAgICBwdWJsaWMgU291cmNlQ29udHJvbExvb2t1cHM6IEFycmF5PHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2Nlc3NvckRldGFpbHNEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFByb2Nlc3NvckRldGFpbHNEaWFsb2dEYXRhLFxuICAgICAgICBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVhY1N2Yy5TdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLlN0YXRlID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAodGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkFwcGxpY2F0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnNbdGhpcy5kYXRhLmFwcGxpY2F0aW9uTG9va3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50cykge1xuICAgICAgICAgICAgICAgIHRoaXMuRW52aXJvbm1lbnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50c1t0aGlzLmRhdGEuZW52aXJvbm1lbnRMb29rdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzID0gdGhpcy5FbnZpcm9ubWVudD8uU291cmNlcztcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xMb29rdXBzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMgfHwge31cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVNhdmVGb3JtRXZlbnQoZXZlbnQ6IFN0YXR1cykge1xuICAgICAgICBjb25zb2xlLmxvZygnZXZlbnQ6ICcsIGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgICAgICAnQnVpbGQgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNmdWxseScsXG4gICAgICAgICAgICAgICAgJ0Rpc21pc3MnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuQ2xvc2VEaWFsb2coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuRXJyb3JNZXNzYWdlID0gZXZlbnQuTWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBTYXZlUHJvY2Vzc29yRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUNvbnRyb2xzLlNhdmVQcm9jZXNzb3JEZXRhaWxzKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5Qcm9jZXNzb3IgRGV0YWlsczwvaDI+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxsY3UtcHJvY2Vzc29yLWRldGFpbHMtZm9ybVxuICAgICAgICBtb3JlLWRldGFpbHNcbiAgICAgICAgW2VkaXRpbmctYXBwbGljYXRpb25dPVwiQXBwbGljYXRpb25cIlxuICAgICAgICBbZWRpdGluZy1hcHBsaWNhdGlvbi1sb29rdXBdPVwiZGF0YS5hcHBsaWNhdGlvbkxvb2t1cFwiXG4gICAgICAgIFtlbnZpcm9ubWVudF09XCJcbiAgICAgICAgICAgIFN0YXRlPy5FYUM/LkVudmlyb25tZW50c1tTdGF0ZT8uRWFDPy5FbnRlcnByaXNlPy5QcmltYXJ5RW52aXJvbm1lbnRdXG4gICAgICAgIFwiXG4gICAgICAgIFtzb3VyY2UtY29udHJvbC1sb29rdXBzXT1cIlNvdXJjZUNvbnRyb2xMb29rdXBzXCJcbiAgICAgICAgW3Byb2plY3QtbG9va3VwXT1cImRhdGEucHJvamVjdExvb2t1cFwiXG4gICAgICAgIFtsb2FkaW5nXT1cIlN0YXRlPy5Mb2FkaW5nXCJcbiAgICAgICAgKHNhdmUtZm9ybS1ldmVudCk9XCJIYW5kbGVTYXZlRm9ybUV2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L2xjdS1wcm9jZXNzb3ItZGV0YWlscy1mb3JtPlxuXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIkVycm9yTWVzc2FnZVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgIHt7IEVycm9yTWVzc2FnZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnNcbiAgICBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCJcbiAgICBkaXZcbiAgICBmeExheW91dD1cInJvd1wiXG4gICAgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgZnhGbGV4PVwiMjUlXCJcbiAgICAgICAgKGNsaWNrKT1cIkNsb3NlRGlhbG9nKClcIlxuICAgID5cbiAgICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIVN0YXRlPy5Mb2FkaW5nXCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGZ4RmxleD1cIjI1JVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJTYXZlUHJvY2Vzc29yRGV0YWlscygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgIVByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LnZhbGlkIHx8XG4gICAgICAgICAgICAhUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uZGlydHlcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPiAtLT5cbiAgICAgICAgU2F2ZVxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2RpYWxvZ3MvcHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy9wcm9jZXNzb3ItZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7O0FBZXZILE1BQU0sT0FBTywrQkFBK0I7SUFvQnhDLFlBQ2MsTUFBa0IsRUFDckIsU0FBd0QsRUFDL0IsSUFBZ0MsRUFDdEQsUUFBcUI7UUFIckIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUErQztRQUMvQixTQUFJLEdBQUosSUFBSSxDQUE0QjtRQUN0RCxhQUFRLEdBQVIsUUFBUSxDQUFhO0lBQ2hDLENBQUM7SUFyQkosSUFBVyx5QkFBeUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUseUJBQXlCLENBQUM7SUFDeEUsQ0FBQztJQXFCTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXO29CQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbEU7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFdBQVc7b0JBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNsRTtZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQ2xDLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2Qsb0NBQW9DLEVBQ3BDLFNBQVMsRUFDVDtnQkFDSSxRQUFRLEVBQUUsSUFBSTthQUNqQixDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0QsQ0FBQzs7NEhBckVRLCtCQUErQix3RUF1QjVCLGVBQWU7Z0hBdkJsQiwrQkFBK0Isa0lBQzdCLDZCQUE2QixnREMxQjVDLDhyREE2REE7MkZEcENhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDSSw4QkFBOEI7OzBCQTJCbkMsTUFBTTsyQkFBQyxlQUFlO3NFQXJCcEIsNEJBQTRCO3NCQURsQyxTQUFTO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgICBFYUNTb3VyY2VDb250cm9sLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgUHJvY2Vzc29yRGV0YWlsc0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9wcm9jZXNzb3ItZGV0YWlscy1mb3JtL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc29yRGV0YWlsc0RpYWxvZ0RhdGEge1xuICAgIGFwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnRMb29rdXA6IHN0cmluZztcbiAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LXByb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3Nvci1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzc29yLWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NvckRldGFpbHNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoUHJvY2Vzc29yRGV0YWlsc0Zvcm1Db21wb25lbnQpXG4gICAgcHVibGljIFByb2Nlc3NvckRldGFpbHNGb3JtQ29udHJvbHM6IFByb2Nlc3NvckRldGFpbHNGb3JtQ29tcG9uZW50O1xuXG4gICAgcHVibGljIGdldCBQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtQ29udHJvbHM/LlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIEFwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIHB1YmxpYyBFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudDogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG5cbiAgICBwdWJsaWMgU3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZTtcblxuICAgIHB1YmxpYyBTb3VyY2VDb250cm9sczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH07XG5cbiAgICBwdWJsaWMgU291cmNlQ29udHJvbExvb2t1cHM6IEFycmF5PHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2Nlc3NvckRldGFpbHNEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFByb2Nlc3NvckRldGFpbHNEaWFsb2dEYXRhLFxuICAgICAgICBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVhY1N2Yy5TdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLlN0YXRlID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAodGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkFwcGxpY2F0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnNbdGhpcy5kYXRhLmFwcGxpY2F0aW9uTG9va3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50cykge1xuICAgICAgICAgICAgICAgIHRoaXMuRW52aXJvbm1lbnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50c1t0aGlzLmRhdGEuZW52aXJvbm1lbnRMb29rdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzID0gdGhpcy5FbnZpcm9ubWVudD8uU291cmNlcztcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xMb29rdXBzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMgfHwge31cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVNhdmVGb3JtRXZlbnQoZXZlbnQ6IFN0YXR1cykge1xuICAgICAgICBjb25zb2xlLmxvZygnZXZlbnQ6ICcsIGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgICAgICAnQnVpbGQgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNmdWxseScsXG4gICAgICAgICAgICAgICAgJ0Rpc21pc3MnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuQ2xvc2VEaWFsb2coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuRXJyb3JNZXNzYWdlID0gZXZlbnQuTWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBTYXZlUHJvY2Vzc29yRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUNvbnRyb2xzLlNhdmVQcm9jZXNzb3JEZXRhaWxzKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5Qcm9jZXNzb3IgRGV0YWlsczwvaDI+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxsY3UtcHJvY2Vzc29yLWRldGFpbHMtZm9ybVxuICAgICAgICBtb3JlLWRldGFpbHNcbiAgICAgICAgW2VkaXRpbmctYXBwbGljYXRpb25dPVwiQXBwbGljYXRpb25cIlxuICAgICAgICBbZWRpdGluZy1hcHBsaWNhdGlvbi1sb29rdXBdPVwiZGF0YS5hcHBsaWNhdGlvbkxvb2t1cFwiXG4gICAgICAgIFtlbnZpcm9ubWVudF09XCJcbiAgICAgICAgICAgIFN0YXRlPy5FYUM/LkVudmlyb25tZW50c1tTdGF0ZT8uRWFDPy5FbnRlcnByaXNlPy5QcmltYXJ5RW52aXJvbm1lbnRdXG4gICAgICAgIFwiXG4gICAgICAgIFtzb3VyY2UtY29udHJvbC1sb29rdXBzXT1cIlNvdXJjZUNvbnRyb2xMb29rdXBzXCJcbiAgICAgICAgW3Byb2plY3QtbG9va3VwXT1cImRhdGEucHJvamVjdExvb2t1cFwiXG4gICAgICAgIFtsb2FkaW5nXT1cIlN0YXRlPy5Mb2FkaW5nXCJcbiAgICAgICAgKHNhdmUtZm9ybS1ldmVudCk9XCJIYW5kbGVTYXZlRm9ybUV2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L2xjdS1wcm9jZXNzb3ItZGV0YWlscy1mb3JtPlxuXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIkVycm9yTWVzc2FnZVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgIHt7IEVycm9yTWVzc2FnZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnNcbiAgICBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCJcbiAgICBkaXZcbiAgICBmeExheW91dD1cInJvd1wiXG4gICAgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgZnhGbGV4PVwiMjUlXCJcbiAgICAgICAgZnhGbGV4Lmx0LW1kPVwiMzAlXCJcbiAgICAgICAgKGNsaWNrKT1cIkNsb3NlRGlhbG9nKClcIlxuICAgID5cbiAgICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIVN0YXRlPy5Mb2FkaW5nXCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGZ4RmxleD1cIjI1JVwiXG4gICAgICAgIGZ4RmxleC5sdC1tZD1cIjMwJVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJTYXZlUHJvY2Vzc29yRGV0YWlscygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgIVByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LnZhbGlkIHx8XG4gICAgICAgICAgICAhUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uZGlydHlcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPiAtLT5cbiAgICAgICAgU2F2ZVxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -55,10 +55,10 @@ export class StateConfigDialogComponent {
55
55
  }
56
56
  }
57
57
  StateConfigDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: StateConfigDialogComponent, deps: [{ token: i1.EaCService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
58
- StateConfigDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: StateConfigDialogComponent, selector: "lcu-state-config-dialog", viewQueries: [{ propertyName: "StateConfigForm", first: true, predicate: StateConfigFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>State Config</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-state-config-form\n [app-lookup]=\"data.appLookup\"\n [application]=\"Application\"\n [config]=\"data.config\"\n (status-event)=\"HandleStatusEvent($event)\"\n >\n </lcu-state-config-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n color=\"primary\"\n (click)=\"SaveStateConfig()\"\n [disabled]=\"\n !StateConfigFormControl?.dirty || !StateConfigFormControl?.valid\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.StateConfigFormComponent, selector: "lcu-state-config-form", inputs: ["app-lookup", "application", "config"], outputs: ["status-event"] }], directives: [{ type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
58
+ StateConfigDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: StateConfigDialogComponent, selector: "lcu-state-config-dialog", viewQueries: [{ propertyName: "StateConfigForm", first: true, predicate: StateConfigFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>State Config</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-state-config-form\n [app-lookup]=\"data.appLookup\"\n [application]=\"Application\"\n [config]=\"data.config\"\n (status-event)=\"HandleStatusEvent($event)\"\n >\n </lcu-state-config-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n color=\"primary\"\n (click)=\"SaveStateConfig()\"\n [disabled]=\"\n !StateConfigFormControl?.dirty || !StateConfigFormControl?.valid\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.StateConfigFormComponent, selector: "lcu-state-config-form", inputs: ["app-lookup", "application", "config"], outputs: ["status-event"] }], directives: [{ type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: StateConfigDialogComponent, decorators: [{
60
60
  type: Component,
61
- args: [{ selector: 'lcu-state-config-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>State Config</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-state-config-form\n [app-lookup]=\"data.appLookup\"\n [application]=\"Application\"\n [config]=\"data.config\"\n (status-event)=\"HandleStatusEvent($event)\"\n >\n </lcu-state-config-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n color=\"primary\"\n (click)=\"SaveStateConfig()\"\n [disabled]=\"\n !StateConfigFormControl?.dirty || !StateConfigFormControl?.valid\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""] }]
61
+ args: [{ selector: 'lcu-state-config-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>State Config</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <lcu-state-config-form\n [app-lookup]=\"data.appLookup\"\n [application]=\"Application\"\n [config]=\"data.config\"\n (status-event)=\"HandleStatusEvent($event)\"\n >\n </lcu-state-config-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n *ngIf=\"!State?.Loading\"\n mat-raised-button\n type=\"submit\"\n fxFlex=\"25%\"\n fxFlex.lt-md=\"30%\"\n color=\"primary\"\n (click)=\"SaveStateConfig()\"\n [disabled]=\"\n !StateConfigFormControl?.dirty || !StateConfigFormControl?.valid\n \"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n</mat-dialog-actions>\n", styles: [""] }]
62
62
  }], ctorParameters: function () { return [{ type: i1.EaCService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
63
63
  type: Inject,
64
64
  args: [MAT_DIALOG_DATA]
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
66
66
  type: ViewChild,
67
67
  args: [StateConfigFormComponent]
68
68
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3N0YXRlLWNvbmZpZy1kaWFsb2cvc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3N0YXRlLWNvbmZpZy1kaWFsb2cvc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLDBCQUEwQjtJQXFCbkMsWUFDYyxNQUFrQixFQUNyQixTQUFtRCxFQUMxQixJQUEyQixFQUNqRCxRQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQ2pELGFBQVEsR0FBUixRQUFRLENBQWE7SUFDaEMsQ0FBQztJQXRCSixtREFBbUQ7SUFDbkQsaUVBQWlFO0lBQ2pFLElBQUk7SUFFSiw4Q0FBOEM7SUFDOUMsZ0NBQWdDO0lBQ2hDLElBQUk7SUFFSixJQUFXLHNCQUFzQjtRQUM3QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDO0lBQ2pELENBQUM7SUFjTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXO29CQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVc7UUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLEVBQUU7Z0JBQzlELFFBQVEsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzt1SEF2RFEsMEJBQTBCLHdFQXdCdkIsZUFBZTsyR0F4QmxCLDBCQUEwQixnSEFDeEIsd0JBQXdCLGdEQ3JCdkMsdTBDQXFEQTsyRkRqQ2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHlCQUF5Qjs7MEJBNEI5QixNQUFNOzJCQUFDLGVBQWU7c0VBdEJwQixlQUFlO3NCQURyQixTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBTdGF0ZUNvbmZpZ0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9zdGF0ZS1jb25maWctZm9ybS9zdGF0ZS1jb25maWctZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWFDU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUNvbmZpZ0RpYWxvZ0RhdGEge1xuICAgIGFwcExvb2t1cDogc3RyaW5nO1xuICAgIGNvbmZpZzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1zdGF0ZS1jb25maWctZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0ZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChTdGF0ZUNvbmZpZ0Zvcm1Db21wb25lbnQpXG4gICAgcHVibGljIFN0YXRlQ29uZmlnRm9ybTogU3RhdGVDb25maWdGb3JtQ29tcG9uZW50O1xuXG4gICAgLy8gcHVibGljIGdldCBBcHBsaWNhdGlvbigpOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLlN0YXRlPy5FYUM/LkFwcGxpY2F0aW9uc1t0aGlzLmRhdGEuYXBwTG9va3VwXTtcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IFN0YXRlKCk6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLmVhY1N2Yy5TdGF0ZTtcbiAgICAvLyB9XG5cbiAgICBwdWJsaWMgZ2V0IFN0YXRlQ29uZmlnRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU3RhdGVDb25maWdGb3JtPy5TdGF0ZUNvbmZpZ0Zvcm07XG4gICAgfVxuXG4gICAgcHVibGljIEFwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICBwdWJsaWMgRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgU3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWFjU3ZjOiBFYUNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U3RhdGVDb25maWdEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFN0YXRlQ29uZmlnRGlhbG9nRGF0YSxcbiAgICAgICAgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0JhclxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lYWNTdmMuU3RhdGUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5TdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgaWYgKHRoaXMuU3RhdGU/LkVhQz8uQXBwbGljYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuU3RhdGU/LkVhQz8uQXBwbGljYXRpb25zW3RoaXMuZGF0YS5hcHBMb29rdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVN0YXR1c0V2ZW50KHJlczogU3RhdHVzKSB7XG4gICAgICAgIGlmIChyZXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTdGF0ZSBDb25maWcgU3VjY2VzZnVsbHkgVXBkYXRlZCcsICdEaXNtaXNzJywge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLkNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLkVycm9yTWVzc2FnZSA9IHJlcy5NZXNzYWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFNhdmVTdGF0ZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5TdGF0ZUNvbmZpZ0Zvcm0/LlNhdmVTdGF0ZUNvbmZpZygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+U3RhdGUgQ29uZmlnPC9oMj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJDbG9zZURpYWxvZygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGxjdS1zdGF0ZS1jb25maWctZm9ybVxuICAgICAgICBbYXBwLWxvb2t1cF09XCJkYXRhLmFwcExvb2t1cFwiXG4gICAgICAgIFthcHBsaWNhdGlvbl09XCJBcHBsaWNhdGlvblwiXG4gICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAoc3RhdHVzLWV2ZW50KT1cIkhhbmRsZVN0YXR1c0V2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L2xjdS1zdGF0ZS1jb25maWctZm9ybT5cblxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJFcnJvck1lc3NhZ2VcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICB7eyBFcnJvck1lc3NhZ2UgfX1cbiAgICA8L21hdC1lcnJvcj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zXG4gICAgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgZGl2XG4gICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIGZ4RmxleD1cIjI1JVwiXG4gICAgICAgIChjbGljayk9XCJDbG9zZURpYWxvZygpXCJcbiAgICA+XG4gICAgICAgIENhbmNlbFxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSAgLS0+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFTdGF0ZT8uTG9hZGluZ1wiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBmeEZsZXg9XCIyNSVcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwiU2F2ZVN0YXRlQ29uZmlnKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAhU3RhdGVDb25maWdGb3JtQ29udHJvbD8uZGlydHkgfHwgIVN0YXRlQ29uZmlnRm9ybUNvbnRyb2w/LnZhbGlkXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIFNhdmVcbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3N0YXRlLWNvbmZpZy1kaWFsb2cvc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL3N0YXRlLWNvbmZpZy1kaWFsb2cvc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLDBCQUEwQjtJQXFCbkMsWUFDYyxNQUFrQixFQUNyQixTQUFtRCxFQUMxQixJQUEyQixFQUNqRCxRQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQ2pELGFBQVEsR0FBUixRQUFRLENBQWE7SUFDaEMsQ0FBQztJQXRCSixtREFBbUQ7SUFDbkQsaUVBQWlFO0lBQ2pFLElBQUk7SUFFSiw4Q0FBOEM7SUFDOUMsZ0NBQWdDO0lBQ2hDLElBQUk7SUFFSixJQUFXLHNCQUFzQjtRQUM3QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDO0lBQ2pELENBQUM7SUFjTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXO29CQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVc7UUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLEVBQUU7Z0JBQzlELFFBQVEsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzt1SEF2RFEsMEJBQTBCLHdFQXdCdkIsZUFBZTsyR0F4QmxCLDBCQUEwQixnSEFDeEIsd0JBQXdCLGdEQ3JCdkMsbTRDQXVEQTsyRkRuQ2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHlCQUF5Qjs7MEJBNEI5QixNQUFNOzJCQUFDLGVBQWU7c0VBdEJwQixlQUFlO3NCQURyQixTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBTdGF0ZUNvbmZpZ0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9zdGF0ZS1jb25maWctZm9ybS9zdGF0ZS1jb25maWctZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWFDU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUNvbmZpZ0RpYWxvZ0RhdGEge1xuICAgIGFwcExvb2t1cDogc3RyaW5nO1xuICAgIGNvbmZpZzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1zdGF0ZS1jb25maWctZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RhdGUtY29uZmlnLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0ZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChTdGF0ZUNvbmZpZ0Zvcm1Db21wb25lbnQpXG4gICAgcHVibGljIFN0YXRlQ29uZmlnRm9ybTogU3RhdGVDb25maWdGb3JtQ29tcG9uZW50O1xuXG4gICAgLy8gcHVibGljIGdldCBBcHBsaWNhdGlvbigpOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLlN0YXRlPy5FYUM/LkFwcGxpY2F0aW9uc1t0aGlzLmRhdGEuYXBwTG9va3VwXTtcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IFN0YXRlKCk6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLmVhY1N2Yy5TdGF0ZTtcbiAgICAvLyB9XG5cbiAgICBwdWJsaWMgZ2V0IFN0YXRlQ29uZmlnRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU3RhdGVDb25maWdGb3JtPy5TdGF0ZUNvbmZpZ0Zvcm07XG4gICAgfVxuXG4gICAgcHVibGljIEFwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICBwdWJsaWMgRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgU3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWFjU3ZjOiBFYUNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U3RhdGVDb25maWdEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFN0YXRlQ29uZmlnRGlhbG9nRGF0YSxcbiAgICAgICAgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0JhclxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lYWNTdmMuU3RhdGUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5TdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgaWYgKHRoaXMuU3RhdGU/LkVhQz8uQXBwbGljYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuU3RhdGU/LkVhQz8uQXBwbGljYXRpb25zW3RoaXMuZGF0YS5hcHBMb29rdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVN0YXR1c0V2ZW50KHJlczogU3RhdHVzKSB7XG4gICAgICAgIGlmIChyZXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTdGF0ZSBDb25maWcgU3VjY2VzZnVsbHkgVXBkYXRlZCcsICdEaXNtaXNzJywge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLkNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLkVycm9yTWVzc2FnZSA9IHJlcy5NZXNzYWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFNhdmVTdGF0ZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5TdGF0ZUNvbmZpZ0Zvcm0/LlNhdmVTdGF0ZUNvbmZpZygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+U3RhdGUgQ29uZmlnPC9oMj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJDbG9zZURpYWxvZygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGxjdS1zdGF0ZS1jb25maWctZm9ybVxuICAgICAgICBbYXBwLWxvb2t1cF09XCJkYXRhLmFwcExvb2t1cFwiXG4gICAgICAgIFthcHBsaWNhdGlvbl09XCJBcHBsaWNhdGlvblwiXG4gICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAoc3RhdHVzLWV2ZW50KT1cIkhhbmRsZVN0YXR1c0V2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L2xjdS1zdGF0ZS1jb25maWctZm9ybT5cblxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJFcnJvck1lc3NhZ2VcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICB7eyBFcnJvck1lc3NhZ2UgfX1cbiAgICA8L21hdC1lcnJvcj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zXG4gICAgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgZGl2XG4gICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIGZ4RmxleD1cIjI1JVwiXG4gICAgICAgIGZ4RmxleC5sdC1tZD1cIjMwJVwiXG4gICAgICAgIChjbGljayk9XCJDbG9zZURpYWxvZygpXCJcbiAgICA+XG4gICAgICAgIENhbmNlbFxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSAgLS0+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFTdGF0ZT8uTG9hZGluZ1wiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBmeEZsZXg9XCIyNSVcIlxuICAgICAgICBmeEZsZXgubHQtbWQ9XCIzMCVcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwiU2F2ZVN0YXRlQ29uZmlnKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAhU3RhdGVDb25maWdGb3JtQ29udHJvbD8uZGlydHkgfHwgIVN0YXRlQ29uZmlnRm9ybUNvbnRyb2w/LnZhbGlkXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIFNhdmVcbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
@@ -1,19 +1,32 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../services/eac.service";
4
- import * as i2 from "@angular/material/icon";
5
- import * as i3 from "@angular/material/button";
6
- import * as i4 from "@angular/material/menu";
7
- import * as i5 from "@angular/flex-layout/flex";
4
+ import * as i2 from "@angular/cdk/layout";
5
+ import * as i3 from "@angular/material/icon";
6
+ import * as i4 from "@angular/material/button";
7
+ import * as i5 from "@angular/material/menu";
8
8
  import * as i6 from "@angular/common";
9
- import * as i7 from "skeleton-elements/angular";
10
- import * as i8 from "@angular/router";
9
+ import * as i7 from "@angular/flex-layout/flex";
10
+ import * as i8 from "skeleton-elements/angular";
11
+ import * as i9 from "@angular/router";
11
12
  export class BreadcrumbComponent {
12
- constructor(eacSvc) {
13
+ constructor(eacSvc, breakpointObserver) {
13
14
  this.eacSvc = eacSvc;
15
+ this.breakpointObserver = breakpointObserver;
14
16
  this.SkeletonEffect = 'wave';
15
17
  }
16
- ngOnInit() { }
18
+ ngOnInit() {
19
+ this.BPSub = this.breakpointObserver
20
+ .observe(['(max-width: 959px)'])
21
+ .subscribe((state) => {
22
+ if (state.matches) {
23
+ this.IsSmScreen = true;
24
+ }
25
+ else {
26
+ this.IsSmScreen = false;
27
+ }
28
+ });
29
+ }
17
30
  ngOnChanges() {
18
31
  if (this.ApplicationsBank && this.ApplicationLookup) {
19
32
  this.SelectedApplication =
@@ -43,16 +56,34 @@ export class BreadcrumbComponent {
43
56
  });
44
57
  }
45
58
  }
59
+ ngOnDestroy() {
60
+ this.BPSub.unsubscribe();
61
+ }
46
62
  SetActiveEnterprise(entLookup) {
47
63
  this.eacSvc.SetActiveEnterprise(entLookup).then(() => { });
48
64
  }
65
+ determineLastLevel() {
66
+ let lastLevel;
67
+ if (this.Enterprise) {
68
+ lastLevel = 'ent';
69
+ }
70
+ else if (this.ProjectLookup) {
71
+ lastLevel = 'project';
72
+ }
73
+ else if (this.SelectedRoute) {
74
+ lastLevel = 'route';
75
+ }
76
+ else if (this.SelectedApplication) {
77
+ lastLevel = 'app';
78
+ }
79
+ }
49
80
  }
50
- BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.EaCService }], target: i0.ɵɵFactoryTarget.Component });
51
- BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], Enterprise: ["enterprise", "Enterprise"], Enterprises: ["enterprises", "Enterprises"], Loading: ["loading", "Loading"], Projects: ["projects", "Projects"], ProjectLookup: ["project-lookup", "ProjectLookup"], RoutedApplications: ["routed-application", "RoutedApplications"], SelectedRoute: ["selected-route", "SelectedRoute"], ApplicationsBank: ["applications-bank", "ApplicationsBank"] }, usesOnChanges: true, ngImport: i0, template: "<div class=\"breadcrumb-container\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i8.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
81
+ BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.EaCService }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
82
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], Enterprise: ["enterprise", "Enterprise"], Enterprises: ["enterprises", "Enterprises"], Loading: ["loading", "Loading"], Projects: ["projects", "Projects"], ProjectLookup: ["project-lookup", "ProjectLookup"], RoutedApplications: ["routed-application", "RoutedApplications"], SelectedRoute: ["selected-route", "SelectedRoute"], ApplicationsBank: ["applications-bank", "ApplicationsBank"] }, usesOnChanges: true, ngImport: i0, template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<div class=\"breadcrumb-container\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i8.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i9.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
52
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, decorators: [{
53
84
  type: Component,
54
- args: [{ selector: 'lcu-breadcrumb', template: "<div class=\"breadcrumb-container\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"] }]
55
- }], ctorParameters: function () { return [{ type: i1.EaCService }]; }, propDecorators: { ApplicationLookup: [{
85
+ args: [{ selector: 'lcu-breadcrumb', template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<div class=\"breadcrumb-container\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"] }]
86
+ }], ctorParameters: function () { return [{ type: i1.EaCService }, { type: i2.BreakpointObserver }]; }, propDecorators: { ApplicationLookup: [{
56
87
  type: Input,
57
88
  args: ['application-lookup']
58
89
  }], Enterprise: [{
@@ -80,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
80
111
  type: Input,
81
112
  args: ['applications-bank']
82
113
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9lbGVtZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBU3pELE1BQU0sT0FBTyxtQkFBbUI7SUFzSzVCLFlBQXNCLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBRW5CLFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDakQsSUFBSSxDQUFDLG1CQUFtQjtnQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzVEO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXpELHlEQUF5RDtZQUV6RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BCLHNEQUFzRDtnQkFFdEQsSUFBSSxDQUFDLDhCQUE4QjtvQkFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN4RCxFQUFFLENBQUM7YUFDVjtTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUV2QixJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FDN0MsQ0FBQyxTQUFpQixFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUNKLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxTQUFpQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOztnSEF0TlEsbUJBQW1CO29HQUFuQixtQkFBbUIsMGhCQ1RoQyxrb0tBb0pBOzJGRDNJYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0ksZ0JBQWdCO2lHQU1uQixpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUlwQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBSVosV0FBVztzQkFEakIsS0FBSzt1QkFBQyxhQUFhO2dCQUliLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQUlULFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxVQUFVO2dCQUlWLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUloQixrQkFBa0I7c0JBRHhCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQU1wQixhQUFhO3NCQURuQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFJaEIsZ0JBQWdCO3NCQUR0QixLQUFLO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWFDQXBwbGljYXRpb25Bc0NvZGUsIEVhQ1Byb2plY3RBc0NvZGUgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgRWFDU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsY3UtYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdhcHBsaWNhdGlvbi1sb29rdXAnKVxuICAgIHB1YmxpYyBBcHBsaWNhdGlvbkxvb2t1cDogc3RyaW5nO1xuXG4gICAgQElucHV0KCdlbnRlcnByaXNlJylcbiAgICBwdWJsaWMgRW50ZXJwcmlzZTogYW55O1xuXG4gICAgQElucHV0KCdlbnRlcnByaXNlcycpXG4gICAgcHVibGljIEVudGVycHJpc2VzOiBBcnJheTxhbnk+O1xuXG4gICAgQElucHV0KCdsb2FkaW5nJylcbiAgICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgncHJvamVjdHMnKVxuICAgIHB1YmxpYyBQcm9qZWN0czogYW55O1xuXG4gICAgQElucHV0KCdwcm9qZWN0LWxvb2t1cCcpXG4gICAgcHVibGljIFByb2plY3RMb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgncm91dGVkLWFwcGxpY2F0aW9uJylcbiAgICBwdWJsaWMgUm91dGVkQXBwbGljYXRpb25zOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH07XG5cbiAgICBASW5wdXQoJ3NlbGVjdGVkLXJvdXRlJylcbiAgICBwdWJsaWMgU2VsZWN0ZWRSb3V0ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCdhcHBsaWNhdGlvbnMtYmFuaycpXG4gICAgcHVibGljIEFwcGxpY2F0aW9uc0Jhbms6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfTtcblxuICAgIC8vIHB1YmxpYyBnZXQgQXBwbGljYXRpb25zQmFuaygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0ge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnMgfHwge307XG4gICAgLy8gfVxuXG4gICAgLy8gcHVibGljIGdldCBBcHBsaWNhdGlvbnMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IHtcbiAgICAvLyAgICAgY29uc3QgYXBwczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9ID0ge307XG5cbiAgICAvLyAgICAgdGhpcy5TZWxlY3RlZFByb2plY3Q/LkFwcGxpY2F0aW9uTG9va3Vwcz8uZm9yRWFjaChcbiAgICAvLyAgICAgICAgIChhcHBMb29rdXA6IHN0cmluZykgPT4ge1xuICAgIC8vICAgICAgICAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHRoaXMuQXBwbGljYXRpb25zQmFua1thcHBMb29rdXBdO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICApO1xuICAgIC8vICAgICByZXR1cm4gYXBwcztcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IFNlbGVjdGVkQXBwbGljYXRpb24oKTogRWFDQXBwbGljYXRpb25Bc0NvZGUge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnNbdGhpcy5BcHBsaWNhdGlvbkxvb2t1cF0gfHwge307XG4gICAgLy8gfVxuXG4gICAgLy8gcHVibGljIGdldCBDdXJyZW50Um91dGVBcHBsaWNhdGlvbkxvb2t1cHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgLy8gICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlJvdXRlZEFwcGxpY2F0aW9uc1t0aGlzLlNlbGVjdGVkUm91dGVdIHx8IHt9KTtcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgLy8gICAgIHJldHVybiAoXG4gICAgLy8gICAgICAgICB0aGlzLlN0YXRlPy5Mb2FkaW5nQWN0aXZlRW50ZXJwcmlzZSB8fFxuICAgIC8vICAgICAgICAgdGhpcy5TdGF0ZT8uTG9hZGluZ0VudGVycHJpc2VzIHx8XG4gICAgLy8gdGhpcy5TdGF0ZT8uTG9hZGluZ1xuICAgIC8vICAgICApO1xuICAgIC8vIH1cblxuICAgIC8vIHB1YmxpYyBnZXQgUHJvamVjdHMoKTogYW55IHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuU3RhdGU/LkVhQz8uUHJvamVjdHMgfHwge307XG4gICAgLy8gfVxuXG4gICAgLy8gcHVibGljIGdldCBQcm9qZWN0TG9va3VwcygpOiBzdHJpbmdbXSB7XG4gICAgLy8gICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlN0YXRlPy5FYUM/LlByb2plY3RzIHx8IHt9KTtcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IFJvdXRlcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAvLyAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgICAvLyB9XG5cbiAgICAvLyBwdWJsaWMgZ2V0IFJvdXRlZEFwcGxpY2F0aW9ucygpOiB7XG4gICAgLy8gICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIC8vIH0ge1xuICAgIC8vICAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5BcHBsaWNhdGlvbnMpO1xuXG4gICAgLy8gICAgIGNvbnN0IGFwcHMgPSBhcHBMb29rdXBzLm1hcChcbiAgICAvLyAgICAgICAgIChhcHBMb29rdXApID0+IHRoaXMuQXBwbGljYXRpb25zW2FwcExvb2t1cF1cbiAgICAvLyAgICAgKTtcblxuICAgIC8vICAgICBsZXQgYXBwUm91dGVzID1cbiAgICAvLyAgICAgICAgIGFwcHMubWFwKChhcHApID0+IHtcbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5yZXBsYWNlKCcuKicsICcnKTtcbiAgICAvLyAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgLy8gICAgIGFwcFJvdXRlcyA9IGFwcFJvdXRlcy5maWx0ZXIoKGFyKSA9PiBhciAhPSBudWxsKTtcblxuICAgIC8vICAgICBsZXQgcm91dGVCYXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vICAgICBhcHBSb3V0ZXM/LmZvckVhY2goKGFwcFJvdXRlKSA9PiB7XG4gICAgLy8gICAgICAgICBjb25zdCBhcHBSb3V0ZVBhcnRzID0gYXBwUm91dGUuc3BsaXQoJy8nKTtcblxuICAgIC8vICAgICAgICAgY29uc3QgYXBwUm91dGVCYXNlID0gYC8ke2FwcFJvdXRlUGFydHNbMV19YDtcblxuICAgIC8vICAgICAgICAgaWYgKHJvdXRlQmFzZXMuaW5kZXhPZihhcHBSb3V0ZUJhc2UpIDwgMCkge1xuICAgIC8vICAgICAgICAgICAgIHJvdXRlQmFzZXMucHVzaChhcHBSb3V0ZUJhc2UpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICB9KTtcblxuICAgIC8vICAgICBsZXQgd29ya2luZ0FwcExvb2t1cHMgPSBbLi4uKGFwcExvb2t1cHMgfHwgW10pXTtcblxuICAgIC8vICAgICByb3V0ZUJhc2VzID0gcm91dGVCYXNlcy5zb3J0KChhLCBiKSA9PiBiLmxvY2FsZUNvbXBhcmUoYSkpO1xuXG4gICAgLy8gICAgIGNvbnN0IHJvdXRlU2V0ID1cbiAgICAvLyAgICAgICAgIHJvdXRlQmFzZXMucmVkdWNlKChwcmV2Um91dGVNYXAsIGN1cnJlbnRSb3V0ZUJhc2UpID0+IHtcbiAgICAvLyAgICAgICAgICAgICBjb25zdCByb3V0ZU1hcCA9IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgLi4ucHJldlJvdXRlTWFwLFxuICAgIC8vICAgICAgICAgICAgIH07XG5cbiAgICAvLyAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEFwcExvb2t1cHMgPSB3b3JraW5nQXBwTG9va3Vwcy5maWx0ZXIoKHdhbCkgPT4ge1xuICAgIC8vICAgICAgICAgICAgICAgICBjb25zdCB3YSA9IHRoaXMuQXBwbGljYXRpb25zW3dhbF07XG5cbiAgICAvLyAgICAgICAgICAgICAgICAgcmV0dXJuIHdhPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5zdGFydHNXaXRoKFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJvdXRlQmFzZVxuICAgIC8vICAgICAgICAgICAgICAgICApO1xuICAgIC8vICAgICAgICAgICAgIH0pO1xuXG4gICAgLy8gICAgICAgICAgICAgcm91dGVNYXBbY3VycmVudFJvdXRlQmFzZV0gPVxuICAgIC8vICAgICAgICAgICAgICAgICBmaWx0ZXJlZEFwcExvb2t1cHMucmVkdWNlKChwcmV2QXBwTWFwLCBhcHBMb29rdXApID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcE1hcCA9IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2QXBwTWFwLFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYXBwTWFwW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgIC8vICAgICAgICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAvLyAgICAgICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgLy8gICAgICAgICAgICAgfSk7XG5cbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gcm91dGVNYXA7XG4gICAgLy8gICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAvLyAgICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgIC8vICAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgIC8vICAgICBjb25zdCByb3V0ZVNldFJlc3VsdCA9IHt9O1xuXG4gICAgLy8gICAgIHJvdXRlU2V0S2V5cz8uZm9yRWFjaCgocnNrKSA9PiAocm91dGVTZXRSZXN1bHRbcnNrXSA9IHJvdXRlU2V0W3Jza10pKTtcblxuICAgIC8vICAgICByZXR1cm4gcm91dGVTZXRSZXN1bHQ7XG4gICAgLy8gfVxuXG4gICAgLy8gcHVibGljIGdldCBTZWxlY3RlZFByb2plY3QoKTogYW55IHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuU3RhdGU/LkVhQz8uUHJvamVjdHNbdGhpcy5Qcm9qZWN0TG9va3VwXSB8fCB7fTtcbiAgICAvLyB9XG5cbiAgICBwdWJsaWMgQXBwbGljYXRpb25zOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG5cbiAgICBwdWJsaWMgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgcHVibGljIFJvdXRlczogQXJyYXk8c3RyaW5nPjtcblxuICAgIHB1YmxpYyBTZWxlY3RlZFByb2plY3Q6IEVhQ1Byb2plY3RBc0NvZGU7XG5cbiAgICBwdWJsaWMgU2tlbGV0b25FZmZlY3Q6IHN0cmluZztcblxuICAgIHB1YmxpYyBTZWxlY3RlZEFwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwczogQXJyYXk8c3RyaW5nPjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5Ta2VsZXRvbkVmZmVjdCA9ICd3YXZlJztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuQXBwbGljYXRpb25zQmFuayAmJiB0aGlzLkFwcGxpY2F0aW9uTG9va3VwKSB7XG4gICAgICAgICAgICB0aGlzLlNlbGVjdGVkQXBwbGljYXRpb24gPVxuICAgICAgICAgICAgICAgIHRoaXMuQXBwbGljYXRpb25zQmFua1t0aGlzLkFwcGxpY2F0aW9uTG9va3VwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLlByb2plY3RzKSB7XG4gICAgICAgICAgICB0aGlzLlByb2plY3RMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5Qcm9qZWN0cyB8fCB7fSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLlByb2plY3RMb29rdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkUHJvamVjdCA9IHRoaXMuUHJvamVjdHNbdGhpcy5Qcm9qZWN0TG9va3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5Sb3V0ZXMgPSBPYmplY3Qua2V5cyh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucyB8fCB7fSk7XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyb3V0ZWQgYXBwczogJywgdGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5TZWxlY3RlZFJvdXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NlbGVjdGVkIHJvdXRlOiAnLCB0aGlzLlNlbGVjdGVkUm91dGUpXG5cbiAgICAgICAgICAgICAgICB0aGlzLkN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcyA9XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuU2VsZWN0ZWRSb3V0ZV0pIHx8XG4gICAgICAgICAgICAgICAgICAgIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRQcm9qZWN0ICYmIHRoaXMuQXBwbGljYXRpb25zQmFuaykge1xuICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbnMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFByb2plY3Q/LkFwcGxpY2F0aW9uTG9va3Vwcz8uZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcGxpY2F0aW9uc0JhbmtbYXBwTG9va3VwXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFNldEFjdGl2ZUVudGVycHJpc2UoZW50TG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lYWNTdmMuU2V0QWN0aXZlRW50ZXJwcmlzZShlbnRMb29rdXApLnRoZW4oKCkgPT4ge30pO1xuICAgIH1cblxuICAgIC8vIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTdGF0ZUNoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHt9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYnJlYWRjcnVtYi1jb250YWluZXJcIiBmeExheW91dD1cInJvdyB3cmFwXCI+XG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJMb2FkaW5nXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+aG9tZTwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxkaXYgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+RW50ZXJwcmlzZSBOYW1lPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJFbnRlcnByaXNlICYmICFMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3J1bWItbmFtZVwiIFtyb3V0ZXJMaW5rXT1cIlsnL2VudGVycHJpc2UnXVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ob21lPC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgICAgIHt7IEVudGVycHJpc2U/Lk5hbWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZW50ZXJwcmlzZU1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjZW50ZXJwcmlzZU1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2VudGVycHJpc2UnXVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJTZXRBY3RpdmVFbnRlcnByaXNlKGVudC5Mb29rdXApXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVudCBvZiBFbnRlcnByaXNlc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBlbnQuTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlByb2plY3RMb29rdXAgJiYgU2VsZWN0ZWRQcm9qZWN0XCJcbiAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlcGVyYXRvclwiPi88L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+UHJvamVjdCBOYW1lPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNydW1iLW5hbWVcIiBbcm91dGVyTGlua109XCJbJy9wcm9qZWN0JywgUHJvamVjdExvb2t1cF1cIj5cbiAgICAgICAgICAgICAgICB7eyBTZWxlY3RlZFByb2plY3Q/LlByb2plY3Q/Lk5hbWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwicHJvamVjdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjcHJvamVjdE1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9qZWN0TG9va3VwIG9mIFByb2plY3RMb29rdXBzXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcHJvamVjdCcsIHByb2plY3RMb29rdXBdXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiUHJvamVjdHNbcHJvamVjdExvb2t1cF07IGxldCBwcm9cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvLlByb2plY3Q/Lk5hbWVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJTZWxlY3RlZFJvdXRlXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlcGVyYXRvclwiPi88L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+Um91dGUgTmFtZTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNydW1iLW5hbWVcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL3JvdXRlJywgU2VsZWN0ZWRSb3V0ZSwgUHJvamVjdExvb2t1cF1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFNlbGVjdGVkUm91dGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwicm91dGVNZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LW1lbnUgI3JvdXRlTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFwcFJvdXRlIG9mIFJvdXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL3JvdXRlJywgYXBwUm91dGUsIFByb2plY3RMb29rdXBdXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXBwUm91dGVcIj57eyBhcHBSb3V0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlNlbGVjdGVkQXBwbGljYXRpb24gJiYgQXBwbGljYXRpb25Mb29rdXBcIlxuICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VwZXJhdG9yXCI+Lzwvc3Bhbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5BcHBsaWNhdGlvbiBOYW1lPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1bWItbmFtZVwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAnL2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25Mb29rdXAsXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIFByb2plY3RMb29rdXBcbiAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBTZWxlY3RlZEFwcGxpY2F0aW9uPy5BcHBsaWNhdGlvbj8uTmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJhcHBsaWNhdGlvbk1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjYXBwbGljYXRpb25NZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBwTG9va3VwIG9mIEN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3Vwc1wiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICcvYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3RMb29rdXBcbiAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZWRBcHBsaWNhdGlvbnNbU2VsZWN0ZWRSb3V0ZV1bYXBwTG9va3VwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGFwcC5BcHBsaWNhdGlvbj8uTmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9lbGVtZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLG1CQUFtQjtJQWdENUIsWUFDYyxNQUFrQixFQUNyQixrQkFBc0M7UUFEbkMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTdDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCO2FBQy9CLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDL0IsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUMxQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDakQsSUFBSSxDQUFDLG1CQUFtQjtnQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzVEO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXpELHlEQUF5RDtZQUV6RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BCLHNEQUFzRDtnQkFFdEQsSUFBSSxDQUFDLDhCQUE4QjtvQkFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN4RCxFQUFFLENBQUM7YUFDVjtTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUV2QixJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FDN0MsQ0FBQyxTQUFpQixFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUNKLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLFNBQWlCLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDM0IsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUN6QjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMzQixTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDakMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNMLENBQUM7O2dIQTlIUSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwwaEJDWGhDLDY3S0E4SkE7MkZEbkphLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDSSxnQkFBZ0I7a0lBTW5CLGlCQUFpQjtzQkFEdkIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBSXBCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsWUFBWTtnQkFJWixXQUFXO3NCQURqQixLQUFLO3VCQUFDLGFBQWE7Z0JBSWIsT0FBTztzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBSVQsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFVBQVU7Z0JBSVYsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBSWhCLGtCQUFrQjtzQkFEeEIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBTXBCLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUloQixnQkFBZ0I7c0JBRHRCLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50U3RhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFYUNBcHBsaWNhdGlvbkFzQ29kZSwgRWFDUHJvamVjdEFzQ29kZSB9IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBTdWJzY3JpYmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWFDU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsY3UtYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ2FwcGxpY2F0aW9uLWxvb2t1cCcpXG4gICAgcHVibGljIEFwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2VudGVycHJpc2UnKVxuICAgIHB1YmxpYyBFbnRlcnByaXNlOiBhbnk7XG5cbiAgICBASW5wdXQoJ2VudGVycHJpc2VzJylcbiAgICBwdWJsaWMgRW50ZXJwcmlzZXM6IEFycmF5PGFueT47XG5cbiAgICBASW5wdXQoJ2xvYWRpbmcnKVxuICAgIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgQElucHV0KCdwcm9qZWN0cycpXG4gICAgcHVibGljIFByb2plY3RzOiBhbnk7XG5cbiAgICBASW5wdXQoJ3Byb2plY3QtbG9va3VwJylcbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgQElucHV0KCdyb3V0ZWQtYXBwbGljYXRpb24nKVxuICAgIHB1YmxpYyBSb3V0ZWRBcHBsaWNhdGlvbnM6IHtcbiAgICAgICAgW3JvdXRlOiBzdHJpbmddOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG4gICAgfTtcblxuICAgIEBJbnB1dCgnc2VsZWN0ZWQtcm91dGUnKVxuICAgIHB1YmxpYyBTZWxlY3RlZFJvdXRlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2FwcGxpY2F0aW9ucy1iYW5rJylcbiAgICBwdWJsaWMgQXBwbGljYXRpb25zQmFuazogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuXG4gICAgcHVibGljIEFwcGxpY2F0aW9uczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuXG4gICAgcHVibGljIEJQU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgcHVibGljIElzU21TY3JlZW46IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgUm91dGVzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgcHVibGljIFNlbGVjdGVkUHJvamVjdDogRWFDUHJvamVjdEFzQ29kZTtcblxuICAgIHB1YmxpYyBTa2VsZXRvbkVmZmVjdDogc3RyaW5nO1xuXG4gICAgcHVibGljIFNlbGVjdGVkQXBwbGljYXRpb246IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuXG4gICAgcHVibGljIFByb2plY3RMb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxuICAgICkge1xuICAgICAgICB0aGlzLlNrZWxldG9uRWZmZWN0ID0gJ3dhdmUnO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLkJQU3ViID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFsnKG1heC13aWR0aDogOTU5cHgpJ10pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQnJlYWtwb2ludFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLm1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Jc1NtU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLklzU21TY3JlZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuQXBwbGljYXRpb25zQmFuayAmJiB0aGlzLkFwcGxpY2F0aW9uTG9va3VwKSB7XG4gICAgICAgICAgICB0aGlzLlNlbGVjdGVkQXBwbGljYXRpb24gPVxuICAgICAgICAgICAgICAgIHRoaXMuQXBwbGljYXRpb25zQmFua1t0aGlzLkFwcGxpY2F0aW9uTG9va3VwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLlByb2plY3RzKSB7XG4gICAgICAgICAgICB0aGlzLlByb2plY3RMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5Qcm9qZWN0cyB8fCB7fSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLlByb2plY3RMb29rdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkUHJvamVjdCA9IHRoaXMuUHJvamVjdHNbdGhpcy5Qcm9qZWN0TG9va3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5Sb3V0ZXMgPSBPYmplY3Qua2V5cyh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucyB8fCB7fSk7XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyb3V0ZWQgYXBwczogJywgdGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5TZWxlY3RlZFJvdXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NlbGVjdGVkIHJvdXRlOiAnLCB0aGlzLlNlbGVjdGVkUm91dGUpXG5cbiAgICAgICAgICAgICAgICB0aGlzLkN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcyA9XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuU2VsZWN0ZWRSb3V0ZV0pIHx8XG4gICAgICAgICAgICAgICAgICAgIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRQcm9qZWN0ICYmIHRoaXMuQXBwbGljYXRpb25zQmFuaykge1xuICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbnMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFByb2plY3Q/LkFwcGxpY2F0aW9uTG9va3Vwcz8uZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcGxpY2F0aW9uc0JhbmtbYXBwTG9va3VwXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLkJQU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIFNldEFjdGl2ZUVudGVycHJpc2UoZW50TG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lYWNTdmMuU2V0QWN0aXZlRW50ZXJwcmlzZShlbnRMb29rdXApLnRoZW4oKCkgPT4ge30pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXRlcm1pbmVMYXN0TGV2ZWwoKSB7XG4gICAgICAgIGxldCBsYXN0TGV2ZWw6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuRW50ZXJwcmlzZSkge1xuICAgICAgICAgICAgbGFzdExldmVsID0gJ2VudCc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5Qcm9qZWN0TG9va3VwKSB7XG4gICAgICAgICAgICBsYXN0TGV2ZWwgPSAncHJvamVjdCc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5TZWxlY3RlZFJvdXRlKSB7XG4gICAgICAgICAgICBsYXN0TGV2ZWwgPSAncm91dGUnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuU2VsZWN0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgbGFzdExldmVsID0gJ2FwcCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU3RhdGVDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7fVxufVxuIiwiPGRpdiBjbGFzcz1cImJyZWFkY3J1bWItY29udGFpbmVyXCIgKm5nSWY9XCIhSXNTbVNjcmVlblwiIGZ4TGF5b3V0PVwicm93IHdyYXBcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5ob21lPC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPGRpdiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5FbnRlcnByaXNlIE5hbWU8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkVudGVycHJpc2UgJiYgIUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcnVtYi1uYW1lXCIgW3JvdXRlckxpbmtdPVwiWycvZW50ZXJwcmlzZSddXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAge3sgRW50ZXJwcmlzZT8uTmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJlbnRlcnByaXNlTWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51ICNlbnRlcnByaXNlTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvZW50ZXJwcmlzZSddXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlNldEFjdGl2ZUVudGVycHJpc2UoZW50Lkxvb2t1cClcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZW50IG9mIEVudGVycHJpc2VzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGVudC5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiUHJvamVjdExvb2t1cCAmJiBTZWxlY3RlZFByb2plY3RcIlxuICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VwZXJhdG9yXCI+Lzwvc3Bhbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5Qcm9qZWN0IE5hbWU8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3J1bWItbmFtZVwiIFtyb3V0ZXJMaW5rXT1cIlsnL3Byb2plY3QnLCBQcm9qZWN0TG9va3VwXVwiPlxuICAgICAgICAgICAgICAgIHt7IFNlbGVjdGVkUHJvamVjdD8uUHJvamVjdD8uTmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJwcm9qZWN0TWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51ICNwcm9qZWN0TWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2plY3RMb29rdXAgb2YgUHJvamVjdExvb2t1cHNcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9wcm9qZWN0JywgcHJvamVjdExvb2t1cF1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJQcm9qZWN0c1twcm9qZWN0TG9va3VwXTsgbGV0IHByb1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm8uUHJvamVjdD8uTmFtZVxuICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIlNlbGVjdGVkUm91dGVcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VwZXJhdG9yXCI+Lzwvc3Bhbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5Sb3V0ZSBOYW1lPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1bWItbmFtZVwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm91dGUnLCBTZWxlY3RlZFJvdXRlLCBQcm9qZWN0TG9va3VwXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgU2VsZWN0ZWRSb3V0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3V0ZU1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjcm91dGVNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBwUm91dGUgb2YgUm91dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm91dGUnLCBhcHBSb3V0ZSwgUHJvamVjdExvb2t1cF1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhcHBSb3V0ZVwiPnt7IGFwcFJvdXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiU2VsZWN0ZWRBcHBsaWNhdGlvbiAmJiBBcHBsaWNhdGlvbkxvb2t1cFwiXG4gICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxuICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXBlcmF0b3JcIj4vPC9zcGFuPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IHNrZWxldG9uLXRleHQgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiPkFwcGxpY2F0aW9uIE5hbWU8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcnVtYi1uYW1lXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbXG4gICAgICAgICAgICAgICAgICAgICcvYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkxvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgUHJvamVjdExvb2t1cFxuICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFNlbGVjdGVkQXBwbGljYXRpb24/LkFwcGxpY2F0aW9uPy5OYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51ICNhcHBsaWNhdGlvbk1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHBMb29rdXAgb2YgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgJy9hcHBsaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdExvb2t1cFxuICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlZEFwcGxpY2F0aW9uc1tTZWxlY3RlZFJvdXRlXVthcHBMb29rdXBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHBcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYXBwLkFwcGxpY2F0aW9uPy5OYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJicmVhZGNydW1iLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJMb2FkaW5nXCI+XG4gICAgICAgIDxtYXQtaWNvbiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIlxuICAgICAgICAgICAgPmNoZXZyb25fbGVmdDwvbWF0LWljb25cbiAgICAgICAgPlxuXG4gICAgICAgIDxkaXYgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+Q3VycmVudCBQYXRoPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==