ets-fe-ng-sdk 17.0.396 → 17.0.397

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.
@@ -75,7 +75,7 @@ export class FieldsToDisplayComponent {
75
75
  e ? (item.type = 'number') : null;
76
76
  }
77
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FieldsToDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: FieldsToDisplayComponent, isStandalone: true, selector: "fields-to-display", inputs: { query1: { classPropertyName: "query1", publicName: "query1", isSignal: true, isRequired: false, transformFunction: null }, query2: { classPropertyName: "query2", publicName: "query2", isSignal: true, isRequired: false, transformFunction: null }, _fields: { classPropertyName: "_fields", publicName: "fields", isSignal: false, isRequired: false, transformFunction: null }, _currentColumns: { classPropertyName: "_currentColumns", publicName: "currentColumns", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { query1: "query1Change", query2: "query2Change", fieldsChanged: "fieldsChanged" }, providers: [FilterArrayByStringPipe], ngImport: i0, template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [noFormat]=\"true\" [(model)]=\"query1\" placeholder=\"Filter\" />\n </div>\n <div class=\"border rounded-10\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Column' | appTranslate | async }}</th>\n <th>{{ 'Visible' | appTranslate | async }}</th>\n <th>{{ 'Sticky' | appTranslate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredAllFields(); track item) {\n <tr>\n <td scope=\"row\">\n {{ item.t | titlecase | appTranslate | async }}\n </td>\n <td>\n <mat-slide-toggle [(ngModel)]=\"item.active\"></mat-slide-toggle>\n </td>\n <td>\n @if (item.active) {\n <mat-slide-toggle [(ngModel)]=\"item.sticky\"></mat-slide-toggle>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <!-- <div>query2 {{ query2() }}</div>\n <div class=\"\">\n searchRef.valueSignal {{ searchRef.valueSignal() }}\n </div> -->\n <div class=\"row row-cols-2\">\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Non-Selected Columns' | appTranslate | async }}\n </div>\n <!-- <div class=\"mb-2\">\n <app-input-td-rf [(model)]=\"query\" placeholder=\"Filter\" />\n </div> -->\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div class=\"row my-2 mx-0 justify-content-center\">\n <div class=\"col-sm-10\">\n <app-input-td-rf\n #searchRef\n [noFormat]=\"true\"\n [(model)]=\"query2\"\n placeholder=\"Search by name\"/>\n </div>\n </div>\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #sourceList=\"cdkDropList\"\n [cdkDropListData]=\"nonActiveFields()\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[destinationList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of nonActiveFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the selected columns group\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div class=\"col-md-auto\">\n <div class=\"row\">\n <div class=\"col-md-auto\" *ngIf=\"!uS.environment.production\">\n {{ item.type }}\n </div>\n <!-- <div class=\"col-md-auto\">\n <app-input-td-rf [xsmall]=\"true\" [label]=\"'Is Number?'\"\n [stacked]=\"false\" type=\"checkbox\"\n (modelChange)=\"isNumType($event, item)\" />\n </div> -->\n <div class=\"col-md-auto\">\n <app-btn text=\"Select\" (mclick)=\"changeToActive(item)\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Selected Columns' | appTranslate | async }}\n </div>\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #destinationList=\"cdkDropList\"\n [cdkDropListData]=\"activeFields()\"\n [cdkDropListConnectedTo]=\"[sourceList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of activeFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the non-selected columns group or re-order\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div>\n <mat-slide-toggle *ngIf=\"item.active\" [(ngModel)]=\"item.sticky\">\n {{ 'Sticky' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"w-100 pt-2 d-flex justify-content-end\" *modalFooter>\n <app-btn text=\"Update Columns\" (mclick)=\"emitFieldsChanged(); acModal.close()\" />\n </div>\n</modal-comp>\n", styles: [".example-custom-placeholder{background:#ccc;border:dotted 3px #999;border-radius:var(--border-radius);min-height:42px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cage{height:calc(80vh - 215px)}\n"], dependencies: [{ kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: i4.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["showHeaderChange", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i5.ModalBodyDirective, selector: "[modalBody]" }, { kind: "directive", type: i6.ModalFooterDirective, selector: "[modalFooter]" }, { kind: "pipe", type: ResponsiveValPipe, name: "responsiveVal" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: FieldsToDisplayComponent, isStandalone: true, selector: "fields-to-display", inputs: { query1: { classPropertyName: "query1", publicName: "query1", isSignal: true, isRequired: false, transformFunction: null }, query2: { classPropertyName: "query2", publicName: "query2", isSignal: true, isRequired: false, transformFunction: null }, _fields: { classPropertyName: "_fields", publicName: "fields", isSignal: false, isRequired: false, transformFunction: null }, _currentColumns: { classPropertyName: "_currentColumns", publicName: "currentColumns", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { query1: "query1Change", query2: "query2Change", fieldsChanged: "fieldsChanged" }, providers: [FilterArrayByStringPipe], ngImport: i0, template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [noFormat]=\"true\" [(model)]=\"query1\" placeholder=\"Filter\" />\n </div>\n <div class=\"border rounded-10\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Column' | appTranslate | async }}</th>\n <th>{{ 'Visible' | appTranslate | async }}</th>\n <th>{{ 'Sticky' | appTranslate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredAllFields(); track item) {\n <tr>\n <td scope=\"row\">\n {{ item.t | titlecase | appTranslate | async }}\n </td>\n <td>\n <mat-slide-toggle [(ngModel)]=\"item.active\"></mat-slide-toggle>\n </td>\n <td>\n @if (item.active) {\n <mat-slide-toggle [(ngModel)]=\"item.sticky\"></mat-slide-toggle>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <!-- <div>query2 {{ query2() }}</div>\n <div class=\"\">\n searchRef.valueSignal {{ searchRef.valueSignal() }}\n </div> -->\n <div class=\"row row-cols-2\">\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Non-Selected Columns' | appTranslate | async }}\n </div>\n <!-- <div class=\"mb-2\">\n <app-input-td-rf [(model)]=\"query\" placeholder=\"Filter\" />\n </div> -->\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div class=\"row my-2 mx-0 justify-content-center\">\n <div class=\"col-sm-10\">\n <app-input-td-rf\n #searchRef\n [noFormat]=\"true\"\n [(model)]=\"query2\"\n placeholder=\"Search by name\"/>\n </div>\n </div>\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #sourceList=\"cdkDropList\"\n [cdkDropListData]=\"nonActiveFields()\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[destinationList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of nonActiveFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the selected columns group\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div class=\"col-md-auto\">\n <div class=\"row\">\n <div class=\"col-md-auto\" *ngIf=\"!uS.environment.production\">\n {{ item.type }}\n </div>\n <!-- <div class=\"col-md-auto\">\n <app-input-td-rf [xsmall]=\"true\" [label]=\"'Is Number?'\"\n [stacked]=\"false\" type=\"checkbox\"\n (modelChange)=\"isNumType($event, item)\" />\n </div> -->\n <div class=\"col-md-auto\">\n <app-btn text=\"Select\" (mclick)=\"changeToActive(item)\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Selected Columns' | appTranslate | async }}\n </div>\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #destinationList=\"cdkDropList\"\n [cdkDropListData]=\"activeFields()\"\n [cdkDropListConnectedTo]=\"[sourceList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of activeFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the non-selected columns group or re-order\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div>\n <mat-slide-toggle *ngIf=\"item.active\" [(ngModel)]=\"item.sticky\">\n {{ 'Sticky' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"w-100 pt-2 d-flex justify-content-end\" *modalFooter>\n <app-btn text=\"Update Columns\" (mclick)=\"emitFieldsChanged(); acModal.close()\" />\n </div>\n</modal-comp>\n", styles: [".example-custom-placeholder{background:#ccc;border:dotted 3px #999;border-radius:var(--border-radius);min-height:42px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cage{height:calc(80vh - 215px)}\n"], dependencies: [{ kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: i4.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["headerChange", "showHeaderChange", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i5.ModalBodyDirective, selector: "[modalBody]" }, { kind: "directive", type: i6.ModalFooterDirective, selector: "[modalFooter]" }, { kind: "pipe", type: ResponsiveValPipe, name: "responsiveVal" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FieldsToDisplayComponent, decorators: [{
81
81
  type: Component,
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
107
107
  }], fieldsChanged: [{
108
108
  type: Output
109
109
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpZWxkcy10by1kaXNwbGF5L2ZpZWxkcy10by1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWVsZHMtdG8tZGlzcGxheS9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGtCQUFrQixFQUNsQixhQUFhLEdBQ2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFB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O1FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQzs4R0ExRlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbXJCQUZ4QixDQUFDLHVCQUF1QixDQUFDLDBCQzFEdEMsOCtNQTRKQSxtUURwSEksWUFBWSx3ZkFDWixJQUFJLDZGQUNKLG1CQUFtQix5SUFFbkIsb0JBQW9CLGtXQUNwQixXQUFXLCtWQUNYLFdBQVcsK2RBQ1gsT0FBTyx3YkFDUCxrQkFBa0IsOEZBQ2xCLGFBQWEsOEZBQ2IsZ0JBQWdCLHdUQUNoQixTQUFTLHlDQUNULGFBQWEsZ2tCQUdiLGlCQUFpQixpREFDakIsYUFBYTs7MkZBSUosd0JBQXdCO2tCQTNCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUVQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0wsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTtxQkFDZCxhQUNVLENBQUMsdUJBQXVCLENBQUM7d0RBTWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRO2dCQVNjLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQWlDYixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2RrRHJhZ0Ryb3AsXG4gIG1vdmVJdGVtSW5BcnJheSxcbiAgdHJhbnNmZXJBcnJheUl0ZW0sXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcmFnLFxuICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gIENka0RyYWdIYW5kbGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEZpbHRlckFycmF5QnlTdHJpbmdQaXBlLCBSZXNwb25zaXZlVmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFREX1JGQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtdGQtcmYuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnRzIH0gZnJvbSAnLi4vbW9kYWwtY29tcG9uZW50cy9tb2RhbC5jb21wb25lbnRzJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmllbGRzLXRvLWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBCdG5Db21wb25lbnQsXG4gICAgTmdJZixcbiAgICBJbnB1dFREX1JGQ29tcG9uZW50LFxuICAgIE5nRm9yLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0RyYWcsXG4gICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgIENka0RyYWdIYW5kbGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgVGl0bGVDYXNlUGlwZSxcbiAgICBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSxcbiAgICBNb2RhbENvbXBvbmVudHMsXG4gICAgUmVzcG9uc2l2ZVZhbFBpcGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQge1xuICByZWFkb25seSBxdWVyeTEgPSBtb2RlbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHF1ZXJ5MiA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoJ2ZpZWxkcycpIHNldCBfZmllbGRzKHY6IFRhYmxlQ29sW10pIHtcbiAgICB0aGlzLmFsbEZpZWxkcy5zZXQoXG4gICAgICBjbG9uZURlZXAodikubWFwKCh4KSA9PiB7XG4gICAgICAgIHhbJ2lkJ10gPSB4LmY/LnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSkgfHwgW10sXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgnY3VycmVudENvbHVtbnMnKSBzZXQgX2N1cnJlbnRDb2x1bW5zKHY6IFRhYmxlQ29sW10pIHtcbiAgICB0aGlzLmFsbEZpZWxkcy51cGRhdGUoKGFsbEZpZWxkcykgPT5cbiAgICAgIHVuaXFCeShcbiAgICAgICAgKFxuICAgICAgICAgIHYubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICB9KSB8fCBbXVxuICAgICAgICApLmNvbmNhdChhbGxGaWVsZHMpLFxuICAgICAgICAnZicsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBhbGxGaWVsZHMgPSBzaWduYWw8VGFibGVDb2xbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkQWxsRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT5cbiAgICB0aGlzLmZpbHRlckFycmF5QnlTdHJpbmdQaXBlLnRyYW5zZm9ybSh0aGlzLmFsbEZpZWxkcygpLCB0aGlzLnF1ZXJ5MSgpISwgWydmJywgJ3QnXSksXG4gICk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT4gdGhpcy5hbGxGaWVsZHMoKS5maWx0ZXIoKHgpID0+IHguYWN0aXZlKSk7XG4gIC8vIGFjdGl2ZUZpZWxkcyA9IHNpZ25hbDxUYWJsZUNvbFtdPihbXSk7XG5cbiAgcmVhZG9ubHkgbm9uQWN0aXZlRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT5cbiAgICB0aGlzLmZpbHRlckFycmF5QnlTdHJpbmdQaXBlXG4gICAgICAudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4gIXguYWN0aXZlKSxcbiAgICAgICAgdGhpcy5xdWVyeTIoKSEsXG4gICAgICAgIFsnZicsICd0J10sXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKSxcbiAgKTtcblxuICBAT3V0cHV0KCkgZmllbGRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIG5GaWVsZHM6IFRhYmxlQ29sW107XG4gICAgYWxsRmllbGRzOiBUYWJsZUNvbFtdO1xuICB9PigpO1xuXG4gIHB1YmxpYyBmaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSA9IGluamVjdChGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSk7XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxUYWJsZUNvbFtdPikge1xuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgaXRlbSA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG4gICAgICBpdGVtLmFjdGl2ZSA9ICFpdGVtLmFjdGl2ZTtcbiAgICAgIGlmICghaXRlbS5hY3RpdmUpIGl0ZW0uc3RpY2t5ID0gZmFsc2U7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9BY3RpdmUobm9uQWN0aXZlT2JqOiBUYWJsZUNvbCkge1xuICAgIHRoaXMuYWxsRmllbGRzLnVwZGF0ZSgoYWxsRmllbGRzKSA9PlxuICAgICAgYWxsRmllbGRzLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAobm9uQWN0aXZlT2JqLmYgPT0geC5mKSB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGVtaXRGaWVsZHNDaGFuZ2VkKCkge1xuICAgIHRoaXMuZmllbGRzQ2hhbmdlZC5lbWl0KHtcbiAgICAgIG5GaWVsZHM6IHRoaXMudVMuaXNNb2JpbGUgPyB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4geC5hY3RpdmUpIDogdGhpcy5hY3RpdmVGaWVsZHMoKSxcbiAgICAgIGFsbEZpZWxkczogdGhpcy5hbGxGaWVsZHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlzTnVtVHlwZShlOiBhbnksIGl0ZW06IFRhYmxlQ29sKSB7XG4gICAgZSA/IChpdGVtLnR5cGUgPSAnbnVtYmVyJykgOiBudWxsO1xuICB9XG59XG4iLCI8YXBwLWJ0blxuICB0eXBlPVwib3V0bGluZVwiXG4gIGN1c3RvbUljb249XCJmYSBmYS1iYXJzXCJcbiAgaWNvblBvc2l0aW9uPVwicmlnaHRcIlxuICB0ZXh0PVwiRGVmaW5lIE91dHB1dHNcIlxuICAobWNsaWNrKT1cImFjTW9kYWwub3BlbigpXCIgLz5cbjxtb2RhbC1jb21wXG4gIGhlYWRlcj1cIkFycmFuZ2UgQ29sdW1uc1wiXG4gIFt3aWR0aF09XCJ7IFhMYXJnZTogJzcwJScsIExhcmdlOiAnODAlJyB9IHwgcmVzcG9uc2l2ZVZhbFwiXG4gIGhlaWdodD1cIjgwdmhcIlxuICAjYWNNb2RhbD5cbiAgPGRpdiAqbW9kYWxCb2R5PlxuICAgIEBpZiAodVMuaXNNb2JpbGVTaWduYWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPGFwcC1pbnB1dC10ZC1yZiBbbm9Gb3JtYXRdPVwidHJ1ZVwiIFsobW9kZWwpXT1cInF1ZXJ5MVwiIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgJ0NvbHVtbicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnVmlzaWJsZScgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkQWxsRmllbGRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50IHwgdGl0bGVjYXNlIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5hY3RpdmVcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5zdGlja3lcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIDxkaXY+cXVlcnkyIHt7IHF1ZXJ5MigpIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIHNlYXJjaFJlZi52YWx1ZVNpZ25hbCAgICB7eyBzZWFyY2hSZWYudmFsdWVTaWduYWwoKSB9fVxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy0yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnTm9uLVNlbGVjdGVkIENvbHVtbnMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LXRkLXJmIFsobW9kZWwpXT1cInF1ZXJ5XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIHAtMiBiZy1saWdodCBjYWdlIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXktMiBteC0wIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMFwiPlxuICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmZcbiAgICAgICAgICAgICAgICAgICNzZWFyY2hSZWZcbiAgICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1ZXJ5MlwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy0xIGctMlwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICNzb3VyY2VMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm5vbkFjdGl2ZUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Rlc3RpbmF0aW9uTGlzdF1cIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5vbkFjdGl2ZUZpZWxkcygpOyB0cmFjayBpdGVtLmY7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jdXN0b20tcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBwLTIgcm91bmRlZC0xMCBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRHJhZyB0aGUgaWNvbiB0byBtb3ZlIHRoZSBjb2x1bW4gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMgZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG9cIiAqbmdJZj1cIiF1Uy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50eXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmYgW3hzbWFsbF09XCJ0cnVlXCIgW2xhYmVsXT1cIidJcyBOdW1iZXI/J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cImZhbHNlXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImlzTnVtVHlwZSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG4gdGV4dD1cIlNlbGVjdFwiIChtY2xpY2spPVwiY2hhbmdlVG9BY3RpdmUoaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnU2VsZWN0ZWQgQ29sdW1ucycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBwLTIgYmctbGlnaHQgY2FnZSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLTEgZy0yXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgI2Rlc3RpbmF0aW9uTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJhY3RpdmVGaWVsZHMoKVwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltzb3VyY2VMaXN0XVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgYWN0aXZlRmllbGRzKCk7IHRyYWNrIGl0ZW0uZjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkLTEwIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEcmFnIHRoZSBpY29uIHRvIG1vdmUgdGhlIGNvbHVtbiB0byB0aGUgbm9uLXNlbGVjdGVkIGNvbHVtbnMgZ3JvdXAgb3IgcmUtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIml0ZW0uYWN0aXZlXCIgWyhuZ01vZGVsKV09XCJpdGVtLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCBwdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm1vZGFsRm9vdGVyPlxuICAgIDxhcHAtYnRuIHRleHQ9XCJVcGRhdGUgQ29sdW1uc1wiIChtY2xpY2spPVwiZW1pdEZpZWxkc0NoYW5nZWQoKTsgYWNNb2RhbC5jbG9zZSgpXCIgLz5cbiAgPC9kaXY+XG48L21vZGFsLWNvbXA+XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpZWxkcy10by1kaXNwbGF5L2ZpZWxkcy10by1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWVsZHMtdG8tZGlzcGxheS9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGtCQUFrQixFQUNsQixhQUFhLEdBQ2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFB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O1FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQzs4R0ExRlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbXJCQUZ4QixDQUFDLHVCQUF1QixDQUFDLDBCQzFEdEMsOCtNQTRKQSxtUURwSEksWUFBWSx3ZkFDWixJQUFJLDZGQUNKLG1CQUFtQix5SUFFbkIsb0JBQW9CLGtXQUNwQixXQUFXLCtWQUNYLFdBQVcsK2RBQ1gsT0FBTyx3YkFDUCxrQkFBa0IsOEZBQ2xCLGFBQWEsOEZBQ2IsZ0JBQWdCLHdUQUNoQixTQUFTLHlDQUNULGFBQWEsZ2xCQUdiLGlCQUFpQixpREFDakIsYUFBYTs7MkZBSUosd0JBQXdCO2tCQTNCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUVQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0wsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTtxQkFDZCxhQUNVLENBQUMsdUJBQXVCLENBQUM7d0RBTWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRO2dCQVNjLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQWlDYixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2RrRHJhZ0Ryb3AsXG4gIG1vdmVJdGVtSW5BcnJheSxcbiAgdHJhbnNmZXJBcnJheUl0ZW0sXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcmFnLFxuICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gIENka0RyYWdIYW5kbGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEZpbHRlckFycmF5QnlTdHJpbmdQaXBlLCBSZXNwb25zaXZlVmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFREX1JGQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtdGQtcmYuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnRzIH0gZnJvbSAnLi4vbW9kYWwtY29tcG9uZW50cy9tb2RhbC5jb21wb25lbnRzJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmllbGRzLXRvLWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBCdG5Db21wb25lbnQsXG4gICAgTmdJZixcbiAgICBJbnB1dFREX1JGQ29tcG9uZW50LFxuICAgIE5nRm9yLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0RyYWcsXG4gICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgIENka0RyYWdIYW5kbGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgVGl0bGVDYXNlUGlwZSxcbiAgICBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSxcbiAgICBNb2RhbENvbXBvbmVudHMsXG4gICAgUmVzcG9uc2l2ZVZhbFBpcGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQge1xuICByZWFkb25seSBxdWVyeTEgPSBtb2RlbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHF1ZXJ5MiA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoJ2ZpZWxkcycpIHNldCBfZmllbGRzKHY6IFRhYmxlQ29sW10pIHtcbiAgICB0aGlzLmFsbEZpZWxkcy5zZXQoXG4gICAgICBjbG9uZURlZXAodikubWFwKCh4KSA9PiB7XG4gICAgICAgIHhbJ2lkJ10gPSB4LmY/LnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSkgfHwgW10sXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgnY3VycmVudENvbHVtbnMnKSBzZXQgX2N1cnJlbnRDb2x1bW5zKHY6IFRhYmxlQ29sW10pIHtcbiAgICB0aGlzLmFsbEZpZWxkcy51cGRhdGUoKGFsbEZpZWxkcykgPT5cbiAgICAgIHVuaXFCeShcbiAgICAgICAgKFxuICAgICAgICAgIHYubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICB9KSB8fCBbXVxuICAgICAgICApLmNvbmNhdChhbGxGaWVsZHMpLFxuICAgICAgICAnZicsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBhbGxGaWVsZHMgPSBzaWduYWw8VGFibGVDb2xbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkQWxsRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT5cbiAgICB0aGlzLmZpbHRlckFycmF5QnlTdHJpbmdQaXBlLnRyYW5zZm9ybSh0aGlzLmFsbEZpZWxkcygpLCB0aGlzLnF1ZXJ5MSgpISwgWydmJywgJ3QnXSksXG4gICk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT4gdGhpcy5hbGxGaWVsZHMoKS5maWx0ZXIoKHgpID0+IHguYWN0aXZlKSk7XG4gIC8vIGFjdGl2ZUZpZWxkcyA9IHNpZ25hbDxUYWJsZUNvbFtdPihbXSk7XG5cbiAgcmVhZG9ubHkgbm9uQWN0aXZlRmllbGRzID0gY29tcHV0ZWQ8VGFibGVDb2xbXT4oKCkgPT5cbiAgICB0aGlzLmZpbHRlckFycmF5QnlTdHJpbmdQaXBlXG4gICAgICAudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4gIXguYWN0aXZlKSxcbiAgICAgICAgdGhpcy5xdWVyeTIoKSEsXG4gICAgICAgIFsnZicsICd0J10sXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKSxcbiAgKTtcblxuICBAT3V0cHV0KCkgZmllbGRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIG5GaWVsZHM6IFRhYmxlQ29sW107XG4gICAgYWxsRmllbGRzOiBUYWJsZUNvbFtdO1xuICB9PigpO1xuXG4gIHB1YmxpYyBmaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSA9IGluamVjdChGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSk7XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxUYWJsZUNvbFtdPikge1xuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgaXRlbSA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG4gICAgICBpdGVtLmFjdGl2ZSA9ICFpdGVtLmFjdGl2ZTtcbiAgICAgIGlmICghaXRlbS5hY3RpdmUpIGl0ZW0uc3RpY2t5ID0gZmFsc2U7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9BY3RpdmUobm9uQWN0aXZlT2JqOiBUYWJsZUNvbCkge1xuICAgIHRoaXMuYWxsRmllbGRzLnVwZGF0ZSgoYWxsRmllbGRzKSA9PlxuICAgICAgYWxsRmllbGRzLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAobm9uQWN0aXZlT2JqLmYgPT0geC5mKSB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGVtaXRGaWVsZHNDaGFuZ2VkKCkge1xuICAgIHRoaXMuZmllbGRzQ2hhbmdlZC5lbWl0KHtcbiAgICAgIG5GaWVsZHM6IHRoaXMudVMuaXNNb2JpbGUgPyB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4geC5hY3RpdmUpIDogdGhpcy5hY3RpdmVGaWVsZHMoKSxcbiAgICAgIGFsbEZpZWxkczogdGhpcy5hbGxGaWVsZHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlzTnVtVHlwZShlOiBhbnksIGl0ZW06IFRhYmxlQ29sKSB7XG4gICAgZSA/IChpdGVtLnR5cGUgPSAnbnVtYmVyJykgOiBudWxsO1xuICB9XG59XG4iLCI8YXBwLWJ0blxuICB0eXBlPVwib3V0bGluZVwiXG4gIGN1c3RvbUljb249XCJmYSBmYS1iYXJzXCJcbiAgaWNvblBvc2l0aW9uPVwicmlnaHRcIlxuICB0ZXh0PVwiRGVmaW5lIE91dHB1dHNcIlxuICAobWNsaWNrKT1cImFjTW9kYWwub3BlbigpXCIgLz5cbjxtb2RhbC1jb21wXG4gIGhlYWRlcj1cIkFycmFuZ2UgQ29sdW1uc1wiXG4gIFt3aWR0aF09XCJ7IFhMYXJnZTogJzcwJScsIExhcmdlOiAnODAlJyB9IHwgcmVzcG9uc2l2ZVZhbFwiXG4gIGhlaWdodD1cIjgwdmhcIlxuICAjYWNNb2RhbD5cbiAgPGRpdiAqbW9kYWxCb2R5PlxuICAgIEBpZiAodVMuaXNNb2JpbGVTaWduYWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPGFwcC1pbnB1dC10ZC1yZiBbbm9Gb3JtYXRdPVwidHJ1ZVwiIFsobW9kZWwpXT1cInF1ZXJ5MVwiIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgJ0NvbHVtbicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnVmlzaWJsZScgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkQWxsRmllbGRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50IHwgdGl0bGVjYXNlIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5hY3RpdmVcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5zdGlja3lcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIDxkaXY+cXVlcnkyIHt7IHF1ZXJ5MigpIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIHNlYXJjaFJlZi52YWx1ZVNpZ25hbCAgICB7eyBzZWFyY2hSZWYudmFsdWVTaWduYWwoKSB9fVxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy0yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnTm9uLVNlbGVjdGVkIENvbHVtbnMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LXRkLXJmIFsobW9kZWwpXT1cInF1ZXJ5XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIHAtMiBiZy1saWdodCBjYWdlIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXktMiBteC0wIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMFwiPlxuICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmZcbiAgICAgICAgICAgICAgICAgICNzZWFyY2hSZWZcbiAgICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1ZXJ5MlwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy0xIGctMlwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICNzb3VyY2VMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm5vbkFjdGl2ZUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Rlc3RpbmF0aW9uTGlzdF1cIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5vbkFjdGl2ZUZpZWxkcygpOyB0cmFjayBpdGVtLmY7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jdXN0b20tcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBwLTIgcm91bmRlZC0xMCBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRHJhZyB0aGUgaWNvbiB0byBtb3ZlIHRoZSBjb2x1bW4gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMgZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG9cIiAqbmdJZj1cIiF1Uy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50eXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmYgW3hzbWFsbF09XCJ0cnVlXCIgW2xhYmVsXT1cIidJcyBOdW1iZXI/J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cImZhbHNlXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImlzTnVtVHlwZSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG4gdGV4dD1cIlNlbGVjdFwiIChtY2xpY2spPVwiY2hhbmdlVG9BY3RpdmUoaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnU2VsZWN0ZWQgQ29sdW1ucycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBwLTIgYmctbGlnaHQgY2FnZSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLTEgZy0yXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgI2Rlc3RpbmF0aW9uTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJhY3RpdmVGaWVsZHMoKVwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltzb3VyY2VMaXN0XVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgYWN0aXZlRmllbGRzKCk7IHRyYWNrIGl0ZW0uZjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkLTEwIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEcmFnIHRoZSBpY29uIHRvIG1vdmUgdGhlIGNvbHVtbiB0byB0aGUgbm9uLXNlbGVjdGVkIGNvbHVtbnMgZ3JvdXAgb3IgcmUtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIml0ZW0uYWN0aXZlXCIgWyhuZ01vZGVsKV09XCJpdGVtLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCBwdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm1vZGFsRm9vdGVyPlxuICAgIDxhcHAtYnRuIHRleHQ9XCJVcGRhdGUgQ29sdW1uc1wiIChtY2xpY2spPVwiZW1pdEZpZWxkc0NoYW5nZWQoKTsgYWNNb2RhbC5jbG9zZSgpXCIgLz5cbiAgPC9kaXY+XG48L21vZGFsLWNvbXA+XG4iXX0=
@@ -78,7 +78,7 @@ export class FileUploadComponent {
78
78
  inp.click();
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: FileUploadComponent, isStandalone: true, selector: "app-file-upload", inputs: { help: { classPropertyName: "help", publicName: "help", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, mediaWidth: { classPropertyName: "mediaWidth", publicName: "mediaWidth", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, useWebcam: { classPropertyName: "useWebcam", publicName: "useWebcam", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, mini: { classPropertyName: "mini", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, useDocumentModal: { classPropertyName: "useDocumentModal", publicName: "useDocumentModal", isSignal: false, isRequired: false, transformFunction: null }, listFiles: { classPropertyName: "listFiles", publicName: "listFiles", isSignal: true, isRequired: false, transformFunction: null }, _accept: { classPropertyName: "_accept", publicName: "accept", isSignal: false, isRequired: false, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaWidth: "mediaWidthChange", file: "fileChange", fileChange: "fileChange", files: "filesChange", filesChange: "filesChange" }, ngImport: i0, template: "@if (listFiles()) {\n <div [ngClass]=\"{ meta: mini() }\" class=\"{{ class() }} form-label mb-2 hide-scroll\">\n @for (item of files(); track item) {\n <div class=\"row align-items-start mb-1\">\n <div class=\"col\">\n <div class=\"hide-scroll file-name\">\n {{ item?.name }}\n </div>\n </div>\n <div class=\"col-auto text-end\">\n <span class=\"text-danger pointer p-1 fa fa-close\" (click)=\"removeFile($index)\"></span>\n </div>\n </div>\n }\n </div>\n}\n<!-- <input type=\"file\" style=\"display: none;\" accept=\"{{accept}}\" (change)=\"onUpload($event)\" #uploadInput [multiple]=\"multiple\"> -->\n<app-btn\n icon=\"upload\"\n (mclick)=\"useWebcam() ? null : openDialog()\"\n [type]=\"file() ? 'primary' : 'secondary'\"\n [disabled]=\"disabled\"\n [help]=\"help\"\n [text]=\"label\"\n [matMenuTriggerFor]=\"useWebcam() ? menu : null\" />\n\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openDialog()\">Upload</button>\n <button mat-menu-item (click)=\"webcamModal.open()\">Use Camera</button>\n</mat-menu>\n\n<modal-comp #webcamModal width=\"1080px\" [showFooter]=\"false\" header=\"Webcam\">\n <ng-template modalBody>\n <lib-webcam-media [fileName]=\"fileName()\" [width]=\"mediaWidth()\" (closed)=\"webcamModal.close(); $event ? acceptFiles($event?.latestFile) : null\" />\n </ng-template>\n</modal-comp>\n", styles: [".meta,.file-name{height:23px}.meta{overflow-y:auto}.file-name{overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: i1.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["showHeaderChange", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i2.ModalBodyDirective, selector: "[modalBody]" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: WebcamMediaComponent, selector: "lib-webcam-media", inputs: ["controlTemplate", "isVideo", "useAudio", "fileName", "fileNameFactory", "fileType", "extraClass", "recordingNotificationInterval", "imageSnapshotInterval", "isBackground", "width"], outputs: ["closed", "recorderStopped", "recorderErrored", "recorderStarted", "recordingState", "recordingChanged", "newImageSnapshot", "webcamError", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: FileUploadComponent, isStandalone: true, selector: "app-file-upload", inputs: { help: { classPropertyName: "help", publicName: "help", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, mediaWidth: { classPropertyName: "mediaWidth", publicName: "mediaWidth", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, useWebcam: { classPropertyName: "useWebcam", publicName: "useWebcam", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, mini: { classPropertyName: "mini", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, useDocumentModal: { classPropertyName: "useDocumentModal", publicName: "useDocumentModal", isSignal: false, isRequired: false, transformFunction: null }, listFiles: { classPropertyName: "listFiles", publicName: "listFiles", isSignal: true, isRequired: false, transformFunction: null }, _accept: { classPropertyName: "_accept", publicName: "accept", isSignal: false, isRequired: false, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaWidth: "mediaWidthChange", file: "fileChange", fileChange: "fileChange", files: "filesChange", filesChange: "filesChange" }, ngImport: i0, template: "@if (listFiles()) {\n <div [ngClass]=\"{ meta: mini() }\" class=\"{{ class() }} form-label mb-2 hide-scroll\">\n @for (item of files(); track item) {\n <div class=\"row align-items-start mb-1\">\n <div class=\"col\">\n <div class=\"hide-scroll file-name\">\n {{ item?.name }}\n </div>\n </div>\n <div class=\"col-auto text-end\">\n <span class=\"text-danger pointer p-1 fa fa-close\" (click)=\"removeFile($index)\"></span>\n </div>\n </div>\n }\n </div>\n}\n<!-- <input type=\"file\" style=\"display: none;\" accept=\"{{accept}}\" (change)=\"onUpload($event)\" #uploadInput [multiple]=\"multiple\"> -->\n<app-btn\n icon=\"upload\"\n (mclick)=\"useWebcam() ? null : openDialog()\"\n [type]=\"file() ? 'primary' : 'secondary'\"\n [disabled]=\"disabled\"\n [help]=\"help\"\n [text]=\"label\"\n [matMenuTriggerFor]=\"useWebcam() ? menu : null\" />\n\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openDialog()\">Upload</button>\n <button mat-menu-item (click)=\"webcamModal.open()\">Use Camera</button>\n</mat-menu>\n\n<modal-comp #webcamModal width=\"1080px\" [showFooter]=\"false\" header=\"Webcam\">\n <ng-template modalBody>\n <lib-webcam-media [fileName]=\"fileName()\" [width]=\"mediaWidth()\" (closed)=\"webcamModal.close(); $event ? acceptFiles($event?.latestFile) : null\" />\n </ng-template>\n</modal-comp>\n", styles: [".meta,.file-name{height:23px}.meta{overflow-y:auto}.file-name{overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: i1.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["headerChange", "showHeaderChange", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i2.ModalBodyDirective, selector: "[modalBody]" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: WebcamMediaComponent, selector: "lib-webcam-media", inputs: ["controlTemplate", "isVideo", "useAudio", "fileName", "fileNameFactory", "fileType", "extraClass", "recordingNotificationInterval", "imageSnapshotInterval", "isBackground", "width"], outputs: ["closed", "recorderStopped", "recorderErrored", "recorderStarted", "recordingState", "recordingChanged", "newImageSnapshot", "webcamError", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FileUploadComponent, decorators: [{
84
84
  type: Component,
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
105
105
  type: Input,
106
106
  args: ['accept']
107
107
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxlQUFlLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7OztBQWtCOUUsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsSUFBcUIsT0FBTyxDQUFDLENBQVM7UUFDcEMsUUFBUSxDQUFDLEVBQUU7WUFDVCxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQztnQkFDckMsTUFBTTtZQUVSO2dCQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixNQUFNO1NBQ1Q7SUFDSCxDQUFD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QUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQztRQUNGLGtDQUFrQztRQUNsQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZCxDQUFDOzhHQTlFVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix5OURDbkNoQyx3NUNBb0NBLHdJRFRJLE9BQU8sb0ZBRVAsWUFBWSx5N0JBRVosYUFBYSw4dkJBQ2Isb0JBQW9COzsyRkFHWCxtQkFBbUI7a0JBaEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsT0FBTyxXQUN2Qzt3QkFDUCxJQUFJO3dCQUNKLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO3dEQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHZSxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgTW9kYWxDb21wb25lbnRzIGZyb20gJy4uL21vZGFsLWNvbXBvbmVudHMvbW9kYWwuY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBXZWJjYW1NZWRpYUNvbXBvbmVudCB9IGZyb20gJy4uL3dlYmNhbS1tZWRpYS93ZWJjYW0tbWVkaWEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yLFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBNb2RhbENvbXBvbmVudHMsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBXZWJjYW1NZWRpYUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGhlbHA6IHN0cmluZztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgbWVkaWFXaWR0aCA9IG1vZGVsPG51bWJlcj4oMTA4MCk7XG4gIGNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICB1c2VXZWJjYW0gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKlxuICAgKiBPbmx5IHVzZWZ1bCBpZiB1c2luZyB0aGUgd2ViY2FtIG9wdGlvblxuICAgKi9cbiAgZmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgbWluaSA9IGlucHV0KHRydWUpO1xuICBASW5wdXQoKSB1c2VEb2N1bWVudE1vZGFsOiBib29sZWFuO1xuICBsaXN0RmlsZXMgPSBpbnB1dCh0cnVlKTtcbiAgYWNjZXB0OiBzdHJpbmc7XG4gIEBJbnB1dCgnYWNjZXB0Jykgc2V0IF9hY2NlcHQodjogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgIHRoaXMuYWNjZXB0ID0gJy5wbmcsLmpwZywuanBlZywuYm1wJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYWNjZXB0ID0gdjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIEBWaWV3Q2hpbGQoJ3VwbG9hZElucHV0JykgdXBsb2FkSW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIHJlYWRvbmx5IGZpbGUgPSBtb2RlbDxGaWxlPigpO1xuICByZWFkb25seSBmaWxlQ2hhbmdlID0gb3V0cHV0PEZpbGU+KCk7XG4gIHJlYWRvbmx5IGZpbGVzID0gbW9kZWw8RmlsZVtdPigpO1xuICByZWFkb25seSBmaWxlc0NoYW5nZSA9IG91dHB1dDxGaWxlW10+KCk7XG5cbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGdldCBpc1NpbmdsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGU7XG4gIH1cbiAgcHJvdGVjdGVkIGFjY2VwdEZpbGVzKC4uLmZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmZpbGVzLnNldChmaWxlcyk7XG4gICAgdGhpcy5maWxlLnNldChmaWxlcyA/IGZpbGVzWzBdIDogbnVsbCk7XG4gICAgdGhpcy5lbWl0RmlsZXMoKTtcbiAgfVxuICBwcm90ZWN0ZWQgZW1pdEZpbGVzKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcygpKTtcbiAgICBlbHNlIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMuZmlsZSgpKTtcbiAgfVxuXG4gIG9uVXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb208RmlsZT4oZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgICB0aGlzLmFjY2VwdEZpbGVzKC4uLmZpbGVzKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZmlsZXMudXBkYXRlKChmaWxlcykgPT4ge1xuICAgICAgZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiBbLi4uZmlsZXNdO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsZS5zZXQodGhpcy5maWxlcygpID8gdGhpcy5maWxlcygpPy5bMF0gOiBudWxsKTtcblxuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMuZmlsZSgpKTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcygpKTtcbiAgfVxuICBvcGVuRGlhbG9nKCkge1xuICAgIGNvbnN0IGlucCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wLnR5cGUgPSAnZmlsZSc7XG4gICAgaW5wLmFjY2VwdCA9IHRoaXMuYWNjZXB0O1xuICAgIGlucC5tdWx0aXBsZSA9IHRoaXMubXVsdGlwbGU7XG4gICAgaW5wLm9uY2hhbmdlID0gKGUpID0+IHtcbiAgICAgIHRoaXMub25VcGxvYWQoZSk7XG4gICAgICBpbnAucmVtb3ZlKCk7XG4gICAgfTtcbiAgICAvLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucCk7XG4gICAgaW5wLmNsaWNrKCk7XG4gIH1cbn1cbiIsIkBpZiAobGlzdEZpbGVzKCkpIHtcbiAgPGRpdiBbbmdDbGFzc109XCJ7IG1ldGE6IG1pbmkoKSB9XCIgY2xhc3M9XCJ7eyBjbGFzcygpIH19IGZvcm0tbGFiZWwgbWItMiBoaWRlLXNjcm9sbFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgZmlsZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydCBtYi0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1zY3JvbGwgZmlsZS1uYW1lXCI+XG4gICAgICAgICAgICB7eyBpdGVtPy5uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHBvaW50ZXIgcC0xIGZhIGZhLWNsb3NlXCIgKGNsaWNrKT1cInJlbW92ZUZpbGUoJGluZGV4KVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPCEtLSA8aW5wdXQgdHlwZT1cImZpbGVcIiAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGFjY2VwdD1cInt7YWNjZXB0fX1cIiAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIiAjdXBsb2FkSW5wdXQgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+IC0tPlxuPGFwcC1idG5cbiAgaWNvbj1cInVwbG9hZFwiXG4gIChtY2xpY2spPVwidXNlV2ViY2FtKCkgPyBudWxsIDogb3BlbkRpYWxvZygpXCJcbiAgW3R5cGVdPVwiZmlsZSgpID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3RleHRdPVwibGFiZWxcIlxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwidXNlV2ViY2FtKCkgPyBtZW51IDogbnVsbFwiIC8+XG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5VcGxvYWQ8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ3ZWJjYW1Nb2RhbC5vcGVuKClcIj5Vc2UgQ2FtZXJhPC9idXR0b24+XG48L21hdC1tZW51PlxuXG48bW9kYWwtY29tcCAjd2ViY2FtTW9kYWwgd2lkdGg9XCIxMDgwcHhcIiBbc2hvd0Zvb3Rlcl09XCJmYWxzZVwiIGhlYWRlcj1cIldlYmNhbVwiPlxuICA8bmctdGVtcGxhdGUgbW9kYWxCb2R5PlxuICAgIDxsaWItd2ViY2FtLW1lZGlhIFtmaWxlTmFtZV09XCJmaWxlTmFtZSgpXCIgW3dpZHRoXT1cIm1lZGlhV2lkdGgoKVwiIChjbG9zZWQpPVwid2ViY2FtTW9kYWwuY2xvc2UoKTsgJGV2ZW50ID8gYWNjZXB0RmlsZXMoJGV2ZW50Py5sYXRlc3RGaWxlKSA6IG51bGxcIiAvPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tb2RhbC1jb21wPlxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxlQUFlLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7OztBQWtCOUUsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsSUFBcUIsT0FBTyxDQUFDLENBQVM7UUFDcEMsUUFBUSxDQUFDLEVBQUU7WUFDVCxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQztnQkFDckMsTUFBTTtZQUVSO2dCQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBU0Q7UUFoQ0EsZUFBVSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDeEIsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQzs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUczQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5CLGNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFheEIsMEVBQTBFO1FBQ2pFLFNBQUksR0FBRyxLQUFLLEVBQVEsQ0FBQztRQUNyQixlQUFVLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDNUIsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFakMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwQixDQUFDO0lBRWhCLFFBQVEsS0FBVSxDQUFDO0lBRW5CLElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFDUyxXQUFXLENBQUMsR0FBRyxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNTLFNBQVM7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDOztZQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxVQUFVO1FBQ1IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNsQixHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQztRQUNGLGtDQUFrQztRQUNsQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZCxDQUFDOzhHQTlFVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix5OURDbkNoQyx3NUNBb0NBLHdJRFRJLE9BQU8sb0ZBRVAsWUFBWSx5OEJBRVosYUFBYSw4dkJBQ2Isb0JBQW9COzsyRkFHWCxtQkFBbUI7a0JBaEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsT0FBTyxXQUN2Qzt3QkFDUCxJQUFJO3dCQUNKLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO3dEQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHZSxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgTW9kYWxDb21wb25lbnRzIGZyb20gJy4uL21vZGFsLWNvbXBvbmVudHMvbW9kYWwuY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBXZWJjYW1NZWRpYUNvbXBvbmVudCB9IGZyb20gJy4uL3dlYmNhbS1tZWRpYS93ZWJjYW0tbWVkaWEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yLFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBNb2RhbENvbXBvbmVudHMsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBXZWJjYW1NZWRpYUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGhlbHA6IHN0cmluZztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgbWVkaWFXaWR0aCA9IG1vZGVsPG51bWJlcj4oMTA4MCk7XG4gIGNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICB1c2VXZWJjYW0gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKlxuICAgKiBPbmx5IHVzZWZ1bCBpZiB1c2luZyB0aGUgd2ViY2FtIG9wdGlvblxuICAgKi9cbiAgZmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgbWluaSA9IGlucHV0KHRydWUpO1xuICBASW5wdXQoKSB1c2VEb2N1bWVudE1vZGFsOiBib29sZWFuO1xuICBsaXN0RmlsZXMgPSBpbnB1dCh0cnVlKTtcbiAgYWNjZXB0OiBzdHJpbmc7XG4gIEBJbnB1dCgnYWNjZXB0Jykgc2V0IF9hY2NlcHQodjogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgIHRoaXMuYWNjZXB0ID0gJy5wbmcsLmpwZywuanBlZywuYm1wJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYWNjZXB0ID0gdjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIEBWaWV3Q2hpbGQoJ3VwbG9hZElucHV0JykgdXBsb2FkSW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIHJlYWRvbmx5IGZpbGUgPSBtb2RlbDxGaWxlPigpO1xuICByZWFkb25seSBmaWxlQ2hhbmdlID0gb3V0cHV0PEZpbGU+KCk7XG4gIHJlYWRvbmx5IGZpbGVzID0gbW9kZWw8RmlsZVtdPigpO1xuICByZWFkb25seSBmaWxlc0NoYW5nZSA9IG91dHB1dDxGaWxlW10+KCk7XG5cbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGdldCBpc1NpbmdsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGU7XG4gIH1cbiAgcHJvdGVjdGVkIGFjY2VwdEZpbGVzKC4uLmZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmZpbGVzLnNldChmaWxlcyk7XG4gICAgdGhpcy5maWxlLnNldChmaWxlcyA/IGZpbGVzWzBdIDogbnVsbCk7XG4gICAgdGhpcy5lbWl0RmlsZXMoKTtcbiAgfVxuICBwcm90ZWN0ZWQgZW1pdEZpbGVzKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcygpKTtcbiAgICBlbHNlIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMuZmlsZSgpKTtcbiAgfVxuXG4gIG9uVXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb208RmlsZT4oZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgICB0aGlzLmFjY2VwdEZpbGVzKC4uLmZpbGVzKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZmlsZXMudXBkYXRlKChmaWxlcykgPT4ge1xuICAgICAgZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiBbLi4uZmlsZXNdO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsZS5zZXQodGhpcy5maWxlcygpID8gdGhpcy5maWxlcygpPy5bMF0gOiBudWxsKTtcblxuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMuZmlsZSgpKTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcygpKTtcbiAgfVxuICBvcGVuRGlhbG9nKCkge1xuICAgIGNvbnN0IGlucCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wLnR5cGUgPSAnZmlsZSc7XG4gICAgaW5wLmFjY2VwdCA9IHRoaXMuYWNjZXB0O1xuICAgIGlucC5tdWx0aXBsZSA9IHRoaXMubXVsdGlwbGU7XG4gICAgaW5wLm9uY2hhbmdlID0gKGUpID0+IHtcbiAgICAgIHRoaXMub25VcGxvYWQoZSk7XG4gICAgICBpbnAucmVtb3ZlKCk7XG4gICAgfTtcbiAgICAvLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucCk7XG4gICAgaW5wLmNsaWNrKCk7XG4gIH1cbn1cbiIsIkBpZiAobGlzdEZpbGVzKCkpIHtcbiAgPGRpdiBbbmdDbGFzc109XCJ7IG1ldGE6IG1pbmkoKSB9XCIgY2xhc3M9XCJ7eyBjbGFzcygpIH19IGZvcm0tbGFiZWwgbWItMiBoaWRlLXNjcm9sbFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgZmlsZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydCBtYi0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1zY3JvbGwgZmlsZS1uYW1lXCI+XG4gICAgICAgICAgICB7eyBpdGVtPy5uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHBvaW50ZXIgcC0xIGZhIGZhLWNsb3NlXCIgKGNsaWNrKT1cInJlbW92ZUZpbGUoJGluZGV4KVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPCEtLSA8aW5wdXQgdHlwZT1cImZpbGVcIiAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGFjY2VwdD1cInt7YWNjZXB0fX1cIiAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIiAjdXBsb2FkSW5wdXQgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+IC0tPlxuPGFwcC1idG5cbiAgaWNvbj1cInVwbG9hZFwiXG4gIChtY2xpY2spPVwidXNlV2ViY2FtKCkgPyBudWxsIDogb3BlbkRpYWxvZygpXCJcbiAgW3R5cGVdPVwiZmlsZSgpID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3RleHRdPVwibGFiZWxcIlxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwidXNlV2ViY2FtKCkgPyBtZW51IDogbnVsbFwiIC8+XG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5VcGxvYWQ8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ3ZWJjYW1Nb2RhbC5vcGVuKClcIj5Vc2UgQ2FtZXJhPC9idXR0b24+XG48L21hdC1tZW51PlxuXG48bW9kYWwtY29tcCAjd2ViY2FtTW9kYWwgd2lkdGg9XCIxMDgwcHhcIiBbc2hvd0Zvb3Rlcl09XCJmYWxzZVwiIGhlYWRlcj1cIldlYmNhbVwiPlxuICA8bmctdGVtcGxhdGUgbW9kYWxCb2R5PlxuICAgIDxsaWItd2ViY2FtLW1lZGlhIFtmaWxlTmFtZV09XCJmaWxlTmFtZSgpXCIgW3dpZHRoXT1cIm1lZGlhV2lkdGgoKVwiIChjbG9zZWQpPVwid2ViY2FtTW9kYWwuY2xvc2UoKTsgJGV2ZW50ID8gYWNjZXB0RmlsZXMoJGV2ZW50Py5sYXRlc3RGaWxlKSA6IG51bGxcIiAvPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tb2RhbC1jb21wPlxuIl19
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output, contentChild, input, model, signal, viewChild, } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, contentChild, model, signal, viewChild, } from '@angular/core';
2
2
  import { MatDialogModule } from '@angular/material/dialog';
3
3
  import { LoaderComponent } from '../loader/loader.component';
4
4
  import { ModalHeaderComponent } from '../modal-header/modal-header.component';
@@ -20,7 +20,7 @@ export class ModalComponent {
20
20
  this.uS = uS;
21
21
  this.cdr = cdr;
22
22
  this.tempRef = viewChild('temp');
23
- this.header = input();
23
+ this.header = model();
24
24
  /**
25
25
  * Specify if to show the modal header
26
26
  */
@@ -91,7 +91,7 @@ export class ModalComponent {
91
91
  this.cdr.detectChanges();
92
92
  }
93
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ModalComponent, deps: [{ token: i1.UtilityService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: ModalComponent, isStandalone: true, selector: "modal-comp", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplateRef: { classPropertyName: "bodyTemplateRef", publicName: "bodyTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, footerTemplateRef: { classPropertyName: "footerTemplateRef", publicName: "footerTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, _isFullscreen: { classPropertyName: "_isFullscreen", publicName: "isFullscreen", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: false, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: false, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: false, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { showHeader: "showHeaderChange", loading: "loadingChange", showFooter: "showFooterChange", modalOpen: "modalOpen", modalClose: "modalClose" }, queries: [{ propertyName: "bodyTemplate", first: true, predicate: ModalBodyDirective, descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: ModalFooterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "tempRef", first: true, predicate: ["temp"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #temp>\n <loader [loading]=\"loading()\" [height]=\"cont.offsetHeight\" #loader>\n <div #cont class=\"h-100 modal-comp\"> \n @if (showHeader()) {\n <modal-header [header]=\"header() | trim\" [dialogRef]=\"dialogRef()\" />\n }\n <div\n mat-dialog-content\n class=\"{{ isFullscreen() ? 'p-0' : 'mt-2 px-0 pb-2 pt-0' }} overflow-x-hidden {{\n showFooter() ? '' : 'noFooter h-100'\n }} \">\n <ng-content select=\"[body]\"></ng-content>\n @if (isLoaded()) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplate()?.templateRef\" />\n }\n </div>\n @if (showFooter()) {\n <div mat-dialog-actions class=\"justify-content-end\">\n <ng-content select=\"[footer]\"></ng-content>\n @if (isOpened()) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate()?.templateRef\" />\n }\n </div>\n }\n </div>\n </loader>\n\n <!-- wdwwd -->\n</ng-template>\n", styles: ["::ng-deep .noFooter{max-height:calc(100% - 60px)!important}::ng-deep .loading-content-container{height:100%}\n"], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height", "width", "ratioHW"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalHeaderComponent, selector: "modal-header", inputs: ["dialogRef", "header", "onCloseValue"], outputs: ["close"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "pipe", type: TrimPipe, name: "trim" }] }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: ModalComponent, isStandalone: true, selector: "modal-comp", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplateRef: { classPropertyName: "bodyTemplateRef", publicName: "bodyTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, footerTemplateRef: { classPropertyName: "footerTemplateRef", publicName: "footerTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, _isFullscreen: { classPropertyName: "_isFullscreen", publicName: "isFullscreen", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: false, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: false, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: false, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { header: "headerChange", showHeader: "showHeaderChange", loading: "loadingChange", showFooter: "showFooterChange", modalOpen: "modalOpen", modalClose: "modalClose" }, queries: [{ propertyName: "bodyTemplate", first: true, predicate: ModalBodyDirective, descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: ModalFooterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "tempRef", first: true, predicate: ["temp"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #temp>\n <loader [loading]=\"loading()\" [height]=\"cont.offsetHeight\" #loader>\n <div #cont class=\"h-100 modal-comp\"> \n @if (showHeader()) {\n <modal-header [header]=\"header() | trim\" [dialogRef]=\"dialogRef()\" />\n }\n <div\n mat-dialog-content\n class=\"{{ isFullscreen() ? 'p-0' : 'mt-2 px-0 pb-2 pt-0' }} overflow-x-hidden {{\n showFooter() ? '' : 'noFooter h-100'\n }} \">\n <ng-content select=\"[body]\"></ng-content>\n @if (isLoaded()) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplate()?.templateRef\" />\n }\n </div>\n @if (showFooter()) {\n <div mat-dialog-actions class=\"justify-content-end\">\n <ng-content select=\"[footer]\"></ng-content>\n @if (isOpened()) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate()?.templateRef\" />\n }\n </div>\n }\n </div>\n </loader>\n\n <!-- wdwwd -->\n</ng-template>\n", styles: ["::ng-deep .noFooter{max-height:calc(100% - 60px)!important}::ng-deep .loading-content-container{height:100%}\n"], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height", "width", "ratioHW"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalHeaderComponent, selector: "modal-header", inputs: ["dialogRef", "header", "onCloseValue"], outputs: ["close"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "pipe", type: TrimPipe, name: "trim" }] }); }
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ModalComponent, decorators: [{
97
97
  type: Component,
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
124
124
  }], modalClose: [{
125
125
  type: Output
126
126
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQyxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFTaEUsTUFBTSxPQUFPLGNBQWM7SUFpQnpCLElBQTJCLGFBQWEsQ0FBQyxDQUFVO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FB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QUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBjb250ZW50Q2hpbGQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtaGVhZGVyL21vZGFsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyaW1QaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcblxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcbmltcG9ydCB7IE1vZGFsQm9keURpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtYm9keS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTW9kYWxGb290ZXJEaXJlY3RpdmUgfSBmcm9tICcuL21vZGFsLWZvb3Rlci5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2RhbC1jb21wJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0xvYWRlckNvbXBvbmVudCwgQ29tbW9uTW9kdWxlLCBNb2RhbEhlYWRlckNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlLCBUcmltUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbXBSZWYgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8YW55Pj4oJ3RlbXAnKTtcbiAgcmVhZG9ubHkgaGVhZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogV2hlbiB1c2luZyBsYXp5bG9hZGVyXG4gICAqL1xuICBASW5wdXQoKSBib2R5VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIGxhenlsb2FkZXJcbiAgICovXG4gIEBJbnB1dCgpIGZvb3RlclRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU3BlY2lmeSBpZiB0byBzaG93IHRoZSBtb2RhbCBoZWFkZXJcbiAgICovXG4gIHJlYWRvbmx5IHNob3dIZWFkZXIgPSBtb2RlbDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IG1vZGVsPGJvb2xlYW4+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0Z1bGxzY3JlZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBASW5wdXQoJ2lzRnVsbHNjcmVlbicpIHNldCBfaXNGdWxsc2NyZWVuKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRnVsbHNjcmVlbi5zZXQodik7XG4gICAgdGhpcy5zaG93SGVhZGVyLnNldChmYWxzZSk7XG4gICAgdGhpcy5zaG93Rm9vdGVyLnNldChmYWxzZSk7XG4gIH1cbiAgLyoqXG4gICAqIFNwZWNpZnkgaWYgdG8gc2hvdyB0aGUgZm9vdGVyIHNlY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IHNob3dGb290ZXIgPSBtb2RlbDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgbWluV2lkdGg6IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzkwdmgnO1xuICBASW5wdXQoKSBpY29uOiBJY29uVHlwZTtcbiAgQElucHV0KCkgZGF0YTogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgQElucHV0KCkgZGlzYWJsZUNsb3NlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc0JhY2tkcm9wOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpYWxvZ1JlZiA9IHNpZ25hbDxNYXREaWFsb2dSZWY8YW55Pj4odW5kZWZpbmVkKTtcbiAgQE91dHB1dCgpIG1vZGFsT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG1vZGFsQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjx0eXBlb2YgdGhpcy50ZW1wUmVmPjtcbiAgLy8gcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1vZGFsQ29tcG9uZW50PjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbmVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgLy8gbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgYm9keVRlbXBsYXRlID0gY29udGVudENoaWxkKE1vZGFsQm9keURpcmVjdGl2ZSk7XG4gIGZvb3RlclRlbXBsYXRlID0gY29udGVudENoaWxkKE1vZGFsRm9vdGVyRGlyZWN0aXZlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdVM6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG9wZW4oLi4uYXJncykge1xuICAgIGlmICh0aGlzLmlzT3BlbmVkKCkpIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbmVkLnNldCh0cnVlKTtcbiAgICB0aGlzLmlzTG9hZGVkLnNldCh0cnVlKTtcbiAgICAvLyB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5kaWFsb2dSZWYuc2V0KFxuICAgICAgdGhpcy51Uy5kaWFsb2dPcGVuZXJSZWYodGhpcy50ZW1wUmVmKCksIHtcbiAgICAgICAgd2lkdGg6IHRoaXMudVMuaXNNb2JpbGUgPyAnOTAlJyA6IHRoaXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgIG1pbldpZHRoOiB0aGlzLnVTLmlzTW9iaWxlID8gJzkwJScgOiB0aGlzLm1pbldpZHRoLFxuICAgICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0LFxuICAgICAgICBtYXhXaWR0aDogJzEwMHZ3JyxcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0aGlzLmRpc2FibGVDbG9zZSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuaGFzQmFja2Ryb3AsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMuZGlhbG9nUmVmKClcbiAgICAgIC5hZnRlck9wZW5lZCgpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5tb2RhbE9wZW4uZW1pdCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZGlhbG9nUmVmKClcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5pc09wZW5lZC5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLm1vZGFsQ2xvc2UuZW1pdCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghdGhpcy5pc09wZW5lZCgpKSByZXR1cm47XG4gICAgdGhpcy5kaWFsb2dSZWYoKT8uY2xvc2UoKTtcbiAgICB0aGlzLmlzT3BlbmVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXA+XG4gIDxsb2FkZXIgW2xvYWRpbmddPVwibG9hZGluZygpXCIgW2hlaWdodF09XCJjb250Lm9mZnNldEhlaWdodFwiICNsb2FkZXI+XG4gICAgPGRpdiAjY29udCBjbGFzcz1cImgtMTAwIG1vZGFsLWNvbXBcIj4gXG4gICAgICBAaWYgKHNob3dIZWFkZXIoKSkge1xuICAgICAgICA8bW9kYWwtaGVhZGVyIFtoZWFkZXJdPVwiaGVhZGVyKCkgfCB0cmltXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dSZWYoKVwiIC8+XG4gICAgICB9XG4gICAgICA8ZGl2XG4gICAgICAgIG1hdC1kaWFsb2ctY29udGVudFxuICAgICAgICBjbGFzcz1cInt7IGlzRnVsbHNjcmVlbigpID8gJ3AtMCcgOiAnbXQtMiBweC0wIHBiLTIgcHQtMCcgfX0gb3ZlcmZsb3cteC1oaWRkZW4ge3tcbiAgICAgICAgICBzaG93Rm9vdGVyKCkgPyAnJyA6ICdub0Zvb3RlciBoLTEwMCdcbiAgICAgICAgfX0gXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltib2R5XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgQGlmIChpc0xvYWRlZCgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJib2R5VGVtcGxhdGUoKT8udGVtcGxhdGVSZWZcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd0Zvb3RlcigpKSB7XG4gICAgICAgIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIEBpZiAoaXNPcGVuZWQoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9sb2FkZXI+XG5cbiAgPCEtLSB3ZHd3ZCAtLT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFlBQVksRUFFWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQVNoRSxNQUFNLE9BQU8sY0FBYztJQWlCekIsSUFBMkIsYUFBYSxDQUFDLENBQVU7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQXlCRCxZQUNTLEVBQWtCLEVBQ2xCLEdBQXNCO1FBRHRCLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBQ2xCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBL0NaLFlBQU8sR0FBRyxTQUFTLENBQW1CLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELFdBQU0sR0FBRyxLQUFLLEVBQVUsQ0FBQztRQVNsQzs7V0FFRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDbEMsWUFBTyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBTXpEOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNsQyxVQUFLLEdBQVcsTUFBTSxDQUFDO1FBQ3ZCLGFBQVEsR0FBVyxNQUFNLENBQUM7UUFDMUIsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixjQUFTLEdBQVcsTUFBTSxDQUFDO1FBRTNCLFNBQUksR0FBeUIsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxNQUFNLENBQW9CLFNBQVMsQ0FBQyxDQUFDO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ25ELHVEQUF1RDtRQUN2RCxrREFBa0Q7UUFDL0IsYUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyxhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JELDJCQUEyQjtRQUUzQixpQkFBWSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELG1CQUFjLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFLakQsQ0FBQztJQUVKLFFBQVEsS0FBVSxDQUFDO0lBRW5CLElBQUksQ0FBQyxHQUFHLElBQUk7UUFDVixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLHNCQUFzQjtRQUN0QixZQUFZO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQ2hCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDNUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLE9BQU87WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEVBQUU7YUFDYixXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFO2FBQ2IsV0FBVyxFQUFFO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUNILFlBQVk7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0E3RlUsY0FBYztrR0FBZCxjQUFjLHl2RUEyQ0csa0JBQWtCLGlHQUNoQixvQkFBb0IsaUxDOUVwRCw0K0JBNkJBLHdLREdZLGVBQWUsc0hBQUUsWUFBWSxzTUFBRSxvQkFBb0IsNkhBQUUsZUFBZSxxU0FBRSxRQUFROzsyRkFFN0UsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxZQUFZLGNBR1YsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDO21IQVFoRixlQUFlO3NCQUF2QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPcUIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxjQUFjO2dCQVNaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1oZWFkZXIvbW9kYWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJpbVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgTW9kYWxCb2R5RGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC1ib2R5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNb2RhbEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtZm9vdGVyLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZGFsLWNvbXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTG9hZGVyQ29tcG9uZW50LCBDb21tb25Nb2R1bGUsIE1vZGFsSGVhZGVyQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGUsIFRyaW1QaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGVtcFJlZiA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjxhbnk+PigndGVtcCcpO1xuICByZWFkb25seSBoZWFkZXIgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIGxhenlsb2FkZXJcbiAgICovXG4gIEBJbnB1dCgpIGJvZHlUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgbGF6eWxvYWRlclxuICAgKi9cbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGlmIHRvIHNob3cgdGhlIG1vZGFsIGhlYWRlclxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd0hlYWRlciA9IG1vZGVsPGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2FkaW5nID0gbW9kZWw8Ym9vbGVhbj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRnVsbHNjcmVlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgnaXNGdWxsc2NyZWVuJykgc2V0IF9pc0Z1bGxzY3JlZW4odjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNGdWxsc2NyZWVuLnNldCh2KTtcbiAgICB0aGlzLnNob3dIZWFkZXIuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNob3dGb290ZXIuc2V0KGZhbHNlKTtcbiAgfVxuICAvKipcbiAgICogU3BlY2lmeSBpZiB0byBzaG93IHRoZSBmb290ZXIgc2VjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd0Zvb3RlciA9IG1vZGVsPGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBtaW5XaWR0aDogc3RyaW5nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgbWF4SGVpZ2h0OiBzdHJpbmcgPSAnOTB2aCc7XG4gIEBJbnB1dCgpIGljb246IEljb25UeXBlO1xuICBASW5wdXQoKSBkYXRhOiB7IFt4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICBASW5wdXQoKSBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQmFja2Ryb3A6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlhbG9nUmVmID0gc2lnbmFsPE1hdERpYWxvZ1JlZjxhbnk+Pih1bmRlZmluZWQpO1xuICBAT3V0cHV0KCkgbW9kYWxPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgbW9kYWxDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLy8gcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHR5cGVvZiB0aGlzLnRlbXBSZWY+O1xuICAvLyBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TW9kYWxDb21wb25lbnQ+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcGVuZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAvLyBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBib2R5VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoTW9kYWxCb2R5RGlyZWN0aXZlKTtcbiAgZm9vdGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoTW9kYWxGb290ZXJEaXJlY3RpdmUpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgb3BlbiguLi5hcmdzKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuZWQoKSkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuZWQuc2V0KHRydWUpO1xuICAgIHRoaXMuaXNMb2FkZWQuc2V0KHRydWUpO1xuICAgIC8vIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmRpYWxvZ1JlZi5zZXQoXG4gICAgICB0aGlzLnVTLmRpYWxvZ09wZW5lclJlZih0aGlzLnRlbXBSZWYoKSwge1xuICAgICAgICB3aWR0aDogdGhpcy51Uy5pc01vYmlsZSA/ICc5MCUnIDogdGhpcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgbWluV2lkdGg6IHRoaXMudVMuaXNNb2JpbGUgPyAnOTAlJyA6IHRoaXMubWluV2lkdGgsXG4gICAgICAgIG1heEhlaWdodDogdGhpcy5tYXhIZWlnaHQsXG4gICAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRoaXMuZGlzYWJsZUNsb3NlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5oYXNCYWNrZHJvcCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kaWFsb2dSZWYoKVxuICAgICAgLmFmdGVyT3BlbmVkKClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm1vZGFsT3Blbi5lbWl0KHRydWUpO1xuICAgICAgfSk7XG4gICAgdGhpcy5kaWFsb2dSZWYoKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlzT3BlbmVkLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMubW9kYWxDbG9zZS5lbWl0KHRydWUpO1xuICAgICAgfSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKCkpIHJldHVybjtcbiAgICB0aGlzLmRpYWxvZ1JlZigpPy5jbG9zZSgpO1xuICAgIHRoaXMuaXNPcGVuZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcD5cbiAgPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nKClcIiBbaGVpZ2h0XT1cImNvbnQub2Zmc2V0SGVpZ2h0XCIgI2xvYWRlcj5cbiAgICA8ZGl2ICNjb250IGNsYXNzPVwiaC0xMDAgbW9kYWwtY29tcFwiPiBcbiAgICAgIEBpZiAoc2hvd0hlYWRlcigpKSB7XG4gICAgICAgIDxtb2RhbC1oZWFkZXIgW2hlYWRlcl09XCJoZWFkZXIoKSB8IHRyaW1cIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1JlZigpXCIgLz5cbiAgICAgIH1cbiAgICAgIDxkaXZcbiAgICAgICAgbWF0LWRpYWxvZy1jb250ZW50XG4gICAgICAgIGNsYXNzPVwie3sgaXNGdWxsc2NyZWVuKCkgPyAncC0wJyA6ICdtdC0yIHB4LTAgcGItMiBwdC0wJyB9fSBvdmVyZmxvdy14LWhpZGRlbiB7e1xuICAgICAgICAgIHNob3dGb290ZXIoKSA/ICcnIDogJ25vRm9vdGVyIGgtMTAwJ1xuICAgICAgICB9fSBcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvZHldXCI+PC9uZy1jb250ZW50PlxuICAgICAgICBAaWYgKGlzTG9hZGVkKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHlUZW1wbGF0ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChzaG93Rm9vdGVyKCkpIHtcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgQGlmIChpc09wZW5lZCgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlKCk/LnRlbXBsYXRlUmVmXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2xvYWRlcj5cblxuICA8IS0tIHdkd3dkIC0tPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==