bpm-core 0.0.84 → 0.0.86

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.
@@ -302,13 +302,26 @@ export class PreviousRequestsComponent {
302
302
  window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);
303
303
  }
304
304
  }
305
+ /**
306
+ * Closes the side navigation panel.
307
+ *
308
+ * @return {void}
309
+ */
310
+ closeSidenav() {
311
+ this.sidenavService.publish('close', null);
312
+ }
313
+ /**
314
+ * Emit the value to complete all active subscriptions
315
+ *
316
+ * @return {void}
317
+ */
305
318
  ngOnDestroy() {
306
319
  // emit the value to complete all active subscriptions
307
320
  this.ngUnsubscribe.next();
308
321
  this.ngUnsubscribe.complete();
309
322
  }
310
323
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, deps: [{ token: i1.MatDialog }, { token: i2.SidenavService }, { token: i2.CoreService }, { token: i3.ToastrService }, { token: i2.CoreI18nService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
311
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: PreviousRequestsComponent, isStandalone: true, selector: "app-history", ngImport: i0, template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: StatusStylePipe, name: "statusClass" }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CustomSearchableComponent, selector: "app-custom-searchable", inputs: ["options", "disabled", "displayedLabel", "key", "floatLabel", "className"], outputs: ["selectedValue", "isLengthGreaterThan4"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }] });
324
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: PreviousRequestsComponent, isStandalone: true, selector: "app-history", ngImport: i0, template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: StatusStylePipe, name: "statusClass" }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CustomSearchableComponent, selector: "app-custom-searchable", inputs: ["options", "disabled", "displayedLabel", "key", "floatLabel", "className"], outputs: ["selectedValue", "isLengthGreaterThan4"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }] });
312
325
  }
313
326
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, decorators: [{
314
327
  type: Component,
@@ -324,6 +337,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
324
337
  CdkOverlayOrigin,
325
338
  CustomSearchableComponent,
326
339
  CdkConnectedOverlay
327
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"] }]
340
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"] }]
328
341
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.SidenavService }, { type: i2.CoreService }, { type: i3.ToastrService }, { type: i2.CoreI18nService }, { type: i4.FormBuilder }] });
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBWSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQWMsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFN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Q2YsbUJBQW1CLDRyQkFDbkIscUJBQXFCLGtvQkFDckIsZUFBZSxvREFDZixnQkFBZ0IsdUlBQ2hCLHlCQUF5QiwyTUFDekIsbUJBQW1COzsyRkFPVix5QkFBeUI7a0JBdEJyQyxTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBRVA7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6QixtQkFBbUI7cUJBRXBCLFdBR1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEZXN0cm95UmVmLCBpbmplY3QsIE9uSW5pdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRNZW51TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZU1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGVcIjtcclxuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlLCBDb3JlU2VydmljZSwgU2lkZW5hdlNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge1N0YXR1c1N0eWxlUGlwZX0gZnJvbSBcIi4uLy4uLy4uL3BpcGVzL3N0YXR1cy1zdHlsZS5waXBlXCI7XHJcbmltcG9ydCB7VG9hc3RyU2VydmljZX0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHtDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2lufSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcclxuaW1wb3J0IHtDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vc2hhcmVkLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWhpc3RvcnknLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcblxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxyXG4gICAgU3RhdHVzU3R5bGVQaXBlLFxyXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcclxuICAgIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnQsXHJcbiAgICBDZGtDb25uZWN0ZWRPdmVybGF5XHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpb3VzLXJlcXVlc3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcmV2aW91cy1yZXF1ZXN0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByZXZpb3VzUmVxdWVzdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByZXZpb3VzUmVxdWVzdHM6IGFueVtdID0gW11cclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICBsb2FkaW5nOiBib29sZWFuXHJcbiAgZmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmdcclxuICBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtb250aHNPcHRpb25zID0gW1xyXG4gICAge2tleTogJzEnLCB2YWx1ZTogJzEnfSxcclxuICAgIHtrZXk6ICcyJywgdmFsdWU6ICcyJ30sXHJcbiAgICB7a2V5OiAnMycsIHZhbHVlOiAnMyd9LFxyXG4gICAge2tleTogJzQnLCB2YWx1ZTogJzQnfSxcclxuICAgIHtrZXk6ICc1JywgdmFsdWU6ICc1J30sXHJcbiAgICB7a2V5OiAnNicsIHZhbHVlOiAnNid9LFxyXG4gICAge2tleTogJzcnLCB2YWx1ZTogJzcnfSxcclxuICAgIHtrZXk6ICc4JywgdmFsdWU6ICc4J30sXHJcbiAgICB7a2V5OiAnOScsIHZhbHVlOiAnOSd9LFxyXG4gICAge2tleTogJzEwJywgdmFsdWU6ICcxMCd9LFxyXG4gICAge2tleTogJzExJywgdmFsdWU6ICcxMSd9LFxyXG4gICAge2tleTogJzEyJywgdmFsdWU6ICcxMid9XHJcbiAgXTtcclxuICB5ZWFyc09wdGlvbnMgPSBbXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDF9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMiwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDJ9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMywgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDN9XTtcclxuXHJcbiAgc3RhdHVzZXMgPSBbXVxyXG4gIHNlYXJjaERhdGEgPSB7XHJcbiAgICB5ZWFyOiBudWxsLFxyXG4gICAgbW9udGg6IG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IG9uIGluaXRpYWxpemF0aW9uLlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBmb3JtIGFuZCBzZXRzIHRoZSBhdmFpbGFibGUgc3RhdHVzZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgICB0aGlzLnN0YXR1c2VzID0gW1xyXG4gICAgICB7a2V5OiBcIkFQUFJPVkVEXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiQXBwcm92ZVwiIDogXCLZhdmI2KfZgdmC2KlcIn0sXHJcbiAgICAgIHtrZXk6IFwiUkVKRUNURURcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJSZWplY3RcIiA6IFwi2YXYsdmB2YjYtlwifSxcclxuICAgICAge2tleTogXCJQRU5ESU5HXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiUGVuZGluZ1wiIDogXCLZhdi52YTZglwifVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgLy8gdmFyaWFibGVzIHRvIG1hbmFnZSBzdWJzY3JpcHRpb25cclxuICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuLy8gbmV3IGhlbHBlciBtZXRob2RzIGZvciBmb3JtIGNvbnRyb2xzXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyBmb3JtIGNvbnRyb2xzIGZvciB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhci5cclxuICAgKiAgICAgICAgICAgICAgICAgIC0gbW9udGg6IEZvcm1Db250cm9sIGZvciB0aGUgY3VycmVudCBtb250aCB3aXRoIFZhbGlkYXRvcnMgcmVxdWlyZWRcclxuICAgKiAgICAgICAgICAgICAgICAgIC0geWVhcjogRm9ybUNvbnRyb2wgZm9yIHRoZSBjdXJyZW50IHllYXIgd2l0aCBWYWxpZGF0b3JzIHJlcXVpcmVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZUNvbnRyb2woKTogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9IHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCkgKyAxO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtb250aDogbmV3IEZvcm1Db250cm9sKHtrZXk6IG1vbnRoLCB2YWx1ZTogbW9udGh9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKHtrZXk6IHllYXIsIHZhbHVlOiB5ZWFyfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgYSBmb3JtIGdyb3VwIGZvciBmaWx0ZXJpbmcgZGF0YS5cclxuICAgKiBJdCBjcmVhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IGRhdGUgYW5kIHN0YXR1cy5cclxuICAgKiBBbHNvIHNldHMgdXAgYSBzdWJzY3JpcHRpb24gdG8gbGlzdGVuIGZvciBjaGFuZ2VzIGluIHRoZSBzdGF0dXMgY29udHJvbC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIC4uLnRoaXMuY3VycmVudERhdGVDb250cm9sKCksXHJcbiAgICAgIHN0YXR1czogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gaW5pdGlhbGl6YXRpb24gYWZ0ZXIgQW5ndWxhciBoYXMgZnVsbHkgaW5pdGlhbGl6ZWQgYSBjb21wb25lbnQncyB2aWV3LlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFJlcXVlc3RzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBmaWx0ZXJzIGFuZCByZXNldCB0aGUgZm9ybSBncm91cCB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cclxuICAgKiBTZXRzIHRoZSBtb250aCBhbmQgeWVhciBmaWx0ZXJzIHRvIHRoZSBjdXJyZW50IGRhdGUncyBtb250aCBhbmQgeWVhciByZXNwZWN0aXZlbHkuXHJcbiAgICogU2V0cyB0aGUgc3RhdHVzIGZpbHRlciB0byBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICogVG9nZ2xlcyB0aGUgaXNPcGVuIHByb3BlcnR5IGFuZCB0cmlnZ2VycyB0aGUgZmlsdGVyU3RhdHVzIG1ldGhvZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldFVUQ01vbnRoKCkgKyAxfSlcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArIDF9KVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS5zZXRWYWx1ZSgnJylcclxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuXHJcbiAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSBpc09wZW4gcHJvcGVydHkgYW5kIHRyaWdnZXJzIHRoZSBnZXRSZXF1ZXN0cygpIG1ldGhvZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW5cclxuICAgIHRoaXMuZ2V0UmVxdWVzdHMoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHJlcXVlc3QgZGF0YSBiYXNlZCBvbiBmb3JtIHZhbHVlcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgZ2V0UmVxdWVzdHMoKSB7XHJcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKClcclxuICAgIGlmICh0aGlzLmFyZUZvcm1WYWx1ZXNFcXVhbCh0aGlzLnNlYXJjaERhdGEsIGZvcm1WYWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhdHVzKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VhcmNoRGF0YShmb3JtVmFsdWVzKVxyXG4gICAgICB0aGlzLnJlcXVlc3RDb3JlRGF0YSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGZvcm0gdmFsdWVzIGluY2x1ZGluZyB0aGUgeWVhciBhbmQgbW9udGguXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHllYXIgYW5kIG1vbnRoIHZhbHVlcy5cclxuICAgKi9cclxuICBnZXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogdGhpcy5nZXRZZWFyVmFsdWUoKSxcclxuICAgICAgbW9udGg6IHRoaXMuZ2V0TW9udGhWYWx1ZSgpLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCB5ZWFyIHZhbHVlIGZyb20gdGhlIGZpbHRlciBmb3JtIGdyb3VwLlxyXG4gICAqXHJcbiAgICogQHJldHVybiBUaGUgc2VsZWN0ZWQgeWVhciB2YWx1ZSBhcyBhIG51bWJlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFllYXJWYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnZhbHVlPy5rZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vbnRoIHZhbHVlIGZyb20gdGhlIGZpbHRlciBmb3JtIGdyb3VwLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbW9udGggdmFsdWUgcmV0cmlldmVkIGZyb20gdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRNb250aFZhbHVlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnZhbHVlPy5rZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgdGhlIHllYXIgYW5kIG1vbnRoIHZhbHVlcyBvZiB0d28gZm9ybSBvYmplY3RzIGFyZSBlcXVhbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBmaXJzdCAtIFRoZSBmaXJzdCBmb3JtIG9iamVjdCB0byBjb21wYXJlLlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZWNvbmQgLSBUaGUgc2Vjb25kIGZvcm0gb2JqZWN0IHRvIGNvbXBhcmUuXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiB0aGUgeWVhciBhbmQgbW9udGggdmFsdWVzIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIGFyZUZvcm1WYWx1ZXNFcXVhbChmaXJzdCwgc2Vjb25kKSB7XHJcbiAgICByZXR1cm4gZmlyc3QueWVhciA9PSBzZWNvbmQueWVhciAmJiBmaXJzdC5tb250aCA9PSBzZWNvbmQubW9udGhcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgc2VhcmNoIGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gVGhlIG5ldyBzZWFyY2ggZGF0YSB0byB1cGRhdGUuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHVwZGF0ZVNlYXJjaERhdGEoZGF0YSkge1xyXG4gICAgdGhpcy5zZWFyY2hEYXRhID0gZGF0YVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSByZXF1ZXN0IHRvIHJldHJpZXZlIGNvcmUgZGF0YSB1c2luZyB0aGUgQ29yZSBTZXJ2aWNlIEFQSS5cclxuICAgKiBJbml0aWFsaXplcyBsb2FkaW5nIGFuZCByZXF1ZXN0cyBiZWZvcmUgbWFraW5nIHRoZSBjYWxsLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICByZXF1ZXN0Q29yZURhdGEoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVMb2FkaW5nQW5kUmVxdWVzdHMoKVxyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGEgPSBbXVxyXG4gICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSBbXVxyXG4gICAgICB0aGlzLmNvcmVTZXJ2aWNlLm15UmVxdWVzdHModGhpcy5zZWFyY2hEYXRhKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IHJlc3BvbnNlLmhpc3Rvcnk7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiBcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgbG9hZGluZyBhbmQgcmVxdWVzdHMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVMb2FkaW5nQW5kUmVxdWVzdHMoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhID0gW11cclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IFtdXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBhIHJlcXVlc3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0IGNvbnRhaW5pbmcgaGlzdG9yeSBkYXRhLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgaGFuZGxlUmVxdWVzdFN1Y2Nlc3MocmVzcG9uc2UpIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGEgPSByZXNwb25zZS5oaXN0b3J5XHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgZXJyb3IgcmVjZWl2ZWQgZnJvbSBhIHJlcXVlc3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlcnIgLSBUaGUgZXJyb3Igb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBoYW5kbGVSZXF1ZXN0RXJyb3IoZXJyKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2VcclxuICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IodGhpcy5lcnJvck1lc3NhZ2UpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXJzIHRoZSBwcmV2aW91cyByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgc3RhdHVzIHNlbGVjdGVkIGluIHRoZSBmaWx0ZXIgZm9ybS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgZmlsdGVyU3RhdHVzKCkge1xyXG4gICAgY29uc3Qgc3RhdHVzS2V5ID0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS52YWx1ZT8ua2V5O1xyXG4gICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YVxyXG4gICAgbGV0IGZpbHRlckRhdGE6IGFueVtdO1xyXG5cclxuICAgIGlmIChzdGF0dXNLZXkpIHtcclxuICAgICAgZmlsdGVyRGF0YSA9IHRoaXMucHJldmlvdXNSZXF1ZXN0cy5maWx0ZXIoKHJlcXVlc3QpID0+IHJlcXVlc3QuZm9ybT8uWydmb3JtU3RhdHVzJ10/LmtleSA9PT0gc3RhdHVzS2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlckRhdGEgPSB0aGlzLnByZXZpb3VzUmVxdWVzdHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gZmlsdGVyRGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgZm9ybSBpbiBhIG5ldyB3aW5kb3cgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm0gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUlkIC0gVGhlIElEIG9mIHRoZSBmb3JtIHRvIGJlIG9wZW5lZC5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHZpZXdGb3JtKGZvcm1JZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZm9ybUlkKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKCcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcz9mb3JtSWQ9JyArIGZvcm1JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIGVtaXQgdGhlIHZhbHVlIHRvIGNvbXBsZXRlIGFsbCBhY3RpdmUgc3Vic2NyaXB0aW9uc1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNpZGVuYXYgaGlzdG9yeS1zaWRlbmF2XCI+XHJcbiAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdGl0bGVcIj5cclxuICAgIDxoMz57eyBpMThuLnRyYW5zbGF0ZSgnUHJldmlvdXNSZXF1ZXN0cycpIH19PC9oMz5cclxuICAgIDxkcy1idXR0b24gY2xhc3M9XCJjbG9zZS1zaWRlbmF2XCIgKGNsaWNrKT1cInNpZGVuYXZTZXJ2aWNlLmNsb3NlU2lkZW5hdigpXCIgaWNvbj5cclxuICAgICAgPGRzLWljb24gaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmcy0yMCBmYy1ibGFja1wiPjwvZHMtaWNvbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic2lkZW5hdi1ib2R5IGJjLWxpZ2h0LWdyYXlcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwicC0zXCI+XHJcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJmcy0yMCBmdy1tZWRpdW0gZmMtYmxhY2sgbWItMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xIGdhcC0zXCI+XHJcbiAgICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgnQWxsUmVxdWVzdHMnKSB9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1jb3VudCBmcy0xNCBmdy1ub3JtYWxcIj57eyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggPyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggOiAnMCcgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8ZHMtYnV0dG9uIGljb24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImlzT3BlbiA9ICFpc09wZW5cIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZpbHRlclwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIiBzbG90PVwicHJlZml4XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLXRvZ2dsZSBmbGV4LW5vd3JhcFwiXHJcbiAgICAgICAgICAjcGFnZVZpZXc9XCJtYXRCdXR0b25Ub2dnbGVHcm91cFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIHZhbHVlPVwibGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2FyZCBmcy0yMFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1saXN0LWRvdHMgZnMtMjBcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgICAgIDwvaGVhZGVyPlxyXG5cclxuICAgICAgQGlmIChwYWdlVmlldy52YWx1ZSA9PT0gJ2NhcmQnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhpc3RvcnktY2FyZHMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICBAaWYgKGxvYWRpbmcpIHtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IGxpbmUtaGVpZ2h0LTEgYmMtd2hpdGUgcmFkaXVzLTYgYm94LXNoYWRvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgWzAsMSwyLDNdXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImxvYWRpbmctYmcgZnMtMTYgZnctbWVkaXVtIGZsZXgtZ3Jvdy0xIG1iLTAgY3Vyc29yLXBvaW50ZXIgdW5kZXJsaW5lIGZ3LWJvbGRcIj48L2gzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXkgbWItMiBsb2FkaW5nLWJnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZnctbWVkaXVtIGZjLWJsYWNrIGxvYWRpbmctYmdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgbGluZS1oZWlnaHQtMSBiYy13aGl0ZSByYWRpdXMtNiBib3gtc2hhZG93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBwcmV2aW91c1JlcXVlc3RzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtIGZsZXgtZ3Jvdy0xIG1iLTAgY3Vyc29yLXBvaW50ZXIgdW5kZXJsaW5lIGZ3LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0Zvcm0ocm93Py5mb3JtPy5bJ2Zvcm1JZCddKVwiPnt7IHJvdz8uZm9ybT8uWydmb3JtSWQnXSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXkgbWItMlwiPnt7IGkxOG4udHJhbnNsYXRlKCdmb3JtVGFibGVDcmVhdGlvbkRhdGUnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmdy1tZWRpdW0gZmMtYmxhY2tcIj57eyByb3c/LmZvcm0/LlsnY3JlYXRpb25EYXRlJ10gfCBkYXRlOiAnZGQvTU0veXl5eSBoaDptbSBhJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2wtNiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRzLXN0YXR1cyBbYXR0ci5zdGF0dXNdPVwicm93Py5mb3JtPy5mb3JtU3RhdHVzPy5rZXkgfCBzdGF0dXNDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJvdz8uZm9ybT8uZm9ybVN0YXR1cz8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAocGFnZVZpZXcudmFsdWUgPT09ICdsaXN0Jykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8dGFibGUgKm5nSWY9XCJwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggJiYgIWxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IGkxOG4udHJhbnNsYXRlKCdmb3JtVGFibGVGb3JtSWQnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IGkxOG4udHJhbnNsYXRlKCdmb3JtVGFibGVDcmVhdGlvbkRhdGUnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IGkxOG4udHJhbnNsYXRlKCdTdGF0dXMnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgICAgICA8dGJvZHkgKm5nRm9yPVwibGV0IHJvdyBvZiBwcmV2aW91c1JlcXVlc3RzXCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LW1lZGl1bSBjdXJzb3ItcG9pbnRlciB1bmRlcmxpbmUgZnctYm9sZCBcIiAoY2xpY2spPVwidmlld0Zvcm0ocm93Py5mb3JtPy5bJ2Zvcm1JZCddKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb3c/LmZvcm0/LlsnZm9ybUlkJ10gfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyByb3c/LmZvcm0/LlsnY3JlYXRpb25EYXRlJ10gIHwgZGF0ZTogJ2RkL01NL3l5eXkgaGg6bW0gYScgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkcy1zdGF0dXMgW2F0dHIuc3RhdHVzXT1cInJvdz8uZm9ybT8uZm9ybVN0YXR1cz8ua2V5IHwgc3RhdHVzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcm93Py5mb3JtPy5mb3JtU3RhdHVzPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8ZHMtbG9hZGluZy10YWJsZSAqbmdJZj1cImxvYWRpbmdcIiBbY29sc109XCI0XCIgW3Jvd3NdPVwiNFwiPjwvZHMtbG9hZGluZy10YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKCFwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggJiYgIWxvYWRpbmcpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlNZXNzYWdlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXHJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiaXNPcGVuID0gZmFsc2VcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3Blbl09XCJ0cnVlXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcclxuPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybUdyb3VwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaGVhZGVyIGJvcmRlci1ib3R0b20gcGItMlwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZzLTE2IGZjLWJsYWNrIGZ3LW1lZGl1bVwiPnt7IGkxOG4udHJhbnNsYXRlKCdmaWx0ZXJzJykgfX08L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtNCBnYXAtbWQtMyBmaWx0ZXItc2VjdGlvbiBiYy13aGl0ZSBtdC0wIHB0LTNcIj5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCJcclxuICAgICAgICAgIGxhYmVsPVwie3sgaTE4bi50cmFuc2xhdGUoJ3N0YXR1cycpIH19XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cInN0YXR1c2VzXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieWVhclwiXHJcbiAgICAgICAgICBsYWJlbD1cInt7IGkxOG4udHJhbnNsYXRlKCd5ZWFyJykgfX1cIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwieWVhcnNPcHRpb25zXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIlxyXG4gICAgICAgICAgbGFiZWw9XCJ7eyBpMThuLnRyYW5zbGF0ZSgnbW9udGgnKSB9fVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJtb250aHNPcHRpb25zXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgbXQtNFwiPlxyXG4gICAgICAgICAgPGRzLWJ1dHRvbiBzaGFwZT1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMlwiPiB7eyBpMThuLnRyYW5zbGF0ZSgnY2xlYXInKSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICAgIDxkcy1idXR0b24gY2xhc3M9XCJ3LTEwMFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2FwcGx5RmlsdGVycycpIH19ICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8bmctdGVtcGxhdGUgI2VtcHR5TWVzc2FnZT5cclxuICAgIDxkcy1tZXNzYWdlIGxhYmVsPVwie3tpMThuLnRyYW5zbGF0ZSgnTm9EYXRhJyl9fVwiPjwvZHMtbWVzc2FnZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4iXX0=
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBWSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQWMsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFN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QUM7dUdBblVVLHlCQUF5QjsyRkFBekIseUJBQXlCLHVFQ3RDdEMsd3pPQTJLQSw0NElEdEpJLFlBQVkseWRBQ1osYUFBYSw4QkFDYixZQUFZLDhCQUNaLGVBQWUsOEJBQ2YsZUFBZSw4QkFDZixtQkFBbUIsNHJCQUNuQixxQkFBcUIsa29CQUNyQixlQUFlLG9EQUNmLGdCQUFnQix1SUFDaEIseUJBQXlCLDJNQUN6QixtQkFBbUI7OzJGQU9WLHlCQUF5QjtrQkF0QnJDLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FFUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLG1CQUFtQjtxQkFFcEIsV0FHUSxDQUFDLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIERlc3Ryb3lSZWYsIGluamVjdCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7TWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uVG9nZ2xlTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZVwiO1xyXG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7U3RhdHVzU3R5bGVQaXBlfSBmcm9tIFwiLi4vLi4vLi4vcGlwZXMvc3RhdHVzLXN0eWxlLnBpcGVcIjtcclxuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQge0Nka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQge0N1c3RvbVNlYXJjaGFibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi9zaGFyZWQtY29tcG9uZW50c1wiO1xyXG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWhpc3RvcnknLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcblxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxyXG4gICAgU3RhdHVzU3R5bGVQaXBlLFxyXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcclxuICAgIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnQsXHJcbiAgICBDZGtDb25uZWN0ZWRPdmVybGF5XHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpb3VzLXJlcXVlc3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcmV2aW91cy1yZXF1ZXN0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByZXZpb3VzUmVxdWVzdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByZXZpb3VzUmVxdWVzdHM6IGFueVtdID0gW11cclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICBsb2FkaW5nOiBib29sZWFuXHJcbiAgZmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmdcclxuICBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtb250aHNPcHRpb25zID0gW1xyXG4gICAge2tleTogJzEnLCB2YWx1ZTogJzEnfSxcclxuICAgIHtrZXk6ICcyJywgdmFsdWU6ICcyJ30sXHJcbiAgICB7a2V5OiAnMycsIHZhbHVlOiAnMyd9LFxyXG4gICAge2tleTogJzQnLCB2YWx1ZTogJzQnfSxcclxuICAgIHtrZXk6ICc1JywgdmFsdWU6ICc1J30sXHJcbiAgICB7a2V5OiAnNicsIHZhbHVlOiAnNid9LFxyXG4gICAge2tleTogJzcnLCB2YWx1ZTogJzcnfSxcclxuICAgIHtrZXk6ICc4JywgdmFsdWU6ICc4J30sXHJcbiAgICB7a2V5OiAnOScsIHZhbHVlOiAnOSd9LFxyXG4gICAge2tleTogJzEwJywgdmFsdWU6ICcxMCd9LFxyXG4gICAge2tleTogJzExJywgdmFsdWU6ICcxMSd9LFxyXG4gICAge2tleTogJzEyJywgdmFsdWU6ICcxMid9XHJcbiAgXTtcclxuICB5ZWFyc09wdGlvbnMgPSBbXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDF9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMiwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDJ9LFxyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMywgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDN9XTtcclxuXHJcbiAgc3RhdHVzZXMgPSBbXVxyXG4gIHNlYXJjaERhdGEgPSB7XHJcbiAgICB5ZWFyOiBudWxsLFxyXG4gICAgbW9udGg6IG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IG9uIGluaXRpYWxpemF0aW9uLlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBmb3JtIGFuZCBzZXRzIHRoZSBhdmFpbGFibGUgc3RhdHVzZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgICB0aGlzLnN0YXR1c2VzID0gW1xyXG4gICAgICB7a2V5OiBcIkFQUFJPVkVEXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiQXBwcm92ZVwiIDogXCLZhdmI2KfZgdmC2KlcIn0sXHJcbiAgICAgIHtrZXk6IFwiUkVKRUNURURcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJSZWplY3RcIiA6IFwi2YXYsdmB2YjYtlwifSxcclxuICAgICAge2tleTogXCJQRU5ESU5HXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiUGVuZGluZ1wiIDogXCLZhdi52YTZglwifVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgLy8gdmFyaWFibGVzIHRvIG1hbmFnZSBzdWJzY3JpcHRpb25cclxuICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuLy8gbmV3IGhlbHBlciBtZXRob2RzIGZvciBmb3JtIGNvbnRyb2xzXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyBmb3JtIGNvbnRyb2xzIGZvciB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhci5cclxuICAgKiAgICAgICAgICAgICAgICAgIC0gbW9udGg6IEZvcm1Db250cm9sIGZvciB0aGUgY3VycmVudCBtb250aCB3aXRoIFZhbGlkYXRvcnMgcmVxdWlyZWRcclxuICAgKiAgICAgICAgICAgICAgICAgIC0geWVhcjogRm9ybUNvbnRyb2wgZm9yIHRoZSBjdXJyZW50IHllYXIgd2l0aCBWYWxpZGF0b3JzIHJlcXVpcmVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZUNvbnRyb2woKTogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9IHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCkgKyAxO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtb250aDogbmV3IEZvcm1Db250cm9sKHtrZXk6IG1vbnRoLCB2YWx1ZTogbW9udGh9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKHtrZXk6IHllYXIsIHZhbHVlOiB5ZWFyfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgYSBmb3JtIGdyb3VwIGZvciBmaWx0ZXJpbmcgZGF0YS5cclxuICAgKiBJdCBjcmVhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IGRhdGUgYW5kIHN0YXR1cy5cclxuICAgKiBBbHNvIHNldHMgdXAgYSBzdWJzY3JpcHRpb24gdG8gbGlzdGVuIGZvciBjaGFuZ2VzIGluIHRoZSBzdGF0dXMgY29udHJvbC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIC4uLnRoaXMuY3VycmVudERhdGVDb250cm9sKCksXHJcbiAgICAgIHN0YXR1czogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gaW5pdGlhbGl6YXRpb24gYWZ0ZXIgQW5ndWxhciBoYXMgZnVsbHkgaW5pdGlhbGl6ZWQgYSBjb21wb25lbnQncyB2aWV3LlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFJlcXVlc3RzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBmaWx0ZXJzIGFuZCByZXNldCB0aGUgZm9ybSBncm91cCB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cclxuICAgKiBTZXRzIHRoZSBtb250aCBhbmQgeWVhciBmaWx0ZXJzIHRvIHRoZSBjdXJyZW50IGRhdGUncyBtb250aCBhbmQgeWVhciByZXNwZWN0aXZlbHkuXHJcbiAgICogU2V0cyB0aGUgc3RhdHVzIGZpbHRlciB0byBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICogVG9nZ2xlcyB0aGUgaXNPcGVuIHByb3BlcnR5IGFuZCB0cmlnZ2VycyB0aGUgZmlsdGVyU3RhdHVzIG1ldGhvZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldFVUQ01vbnRoKCkgKyAxfSlcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArIDF9KVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS5zZXRWYWx1ZSgnJylcclxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuXHJcbiAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSBpc09wZW4gcHJvcGVydHkgYW5kIHRyaWdnZXJzIHRoZSBnZXRSZXF1ZXN0cygpIG1ldGhvZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW5cclxuICAgIHRoaXMuZ2V0UmVxdWVzdHMoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHJlcXVlc3QgZGF0YSBiYXNlZCBvbiBmb3JtIHZhbHVlcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgZ2V0UmVxdWVzdHMoKSB7XHJcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKClcclxuICAgIGlmICh0aGlzLmFyZUZvcm1WYWx1ZXNFcXVhbCh0aGlzLnNlYXJjaERhdGEsIGZvcm1WYWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhdHVzKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VhcmNoRGF0YShmb3JtVmFsdWVzKVxyXG4gICAgICB0aGlzLnJlcXVlc3RDb3JlRGF0YSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGZvcm0gdmFsdWVzIGluY2x1ZGluZyB0aGUgeWVhciBhbmQgbW9udGguXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHllYXIgYW5kIG1vbnRoIHZhbHVlcy5cclxuICAgKi9cclxuICBnZXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogdGhpcy5nZXRZZWFyVmFsdWUoKSxcclxuICAgICAgbW9udGg6IHRoaXMuZ2V0TW9udGhWYWx1ZSgpLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCB5ZWFyIHZhbHVlIGZyb20gdGhlIGZpbHRlciBmb3JtIGdyb3VwLlxyXG4gICAqXHJcbiAgICogQHJldHVybiBUaGUgc2VsZWN0ZWQgeWVhciB2YWx1ZSBhcyBhIG51bWJlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFllYXJWYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnZhbHVlPy5rZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vbnRoIHZhbHVlIGZyb20gdGhlIGZpbHRlciBmb3JtIGdyb3VwLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbW9udGggdmFsdWUgcmV0cmlldmVkIGZyb20gdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRNb250aFZhbHVlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnZhbHVlPy5rZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgdGhlIHllYXIgYW5kIG1vbnRoIHZhbHVlcyBvZiB0d28gZm9ybSBvYmplY3RzIGFyZSBlcXVhbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBmaXJzdCAtIFRoZSBmaXJzdCBmb3JtIG9iamVjdCB0byBjb21wYXJlLlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZWNvbmQgLSBUaGUgc2Vjb25kIGZvcm0gb2JqZWN0IHRvIGNvbXBhcmUuXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiB0aGUgeWVhciBhbmQgbW9udGggdmFsdWVzIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIGFyZUZvcm1WYWx1ZXNFcXVhbChmaXJzdCwgc2Vjb25kKSB7XHJcbiAgICByZXR1cm4gZmlyc3QueWVhciA9PSBzZWNvbmQueWVhciAmJiBmaXJzdC5tb250aCA9PSBzZWNvbmQubW9udGhcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgc2VhcmNoIGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gVGhlIG5ldyBzZWFyY2ggZGF0YSB0byB1cGRhdGUuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHVwZGF0ZVNlYXJjaERhdGEoZGF0YSkge1xyXG4gICAgdGhpcy5zZWFyY2hEYXRhID0gZGF0YVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSByZXF1ZXN0IHRvIHJldHJpZXZlIGNvcmUgZGF0YSB1c2luZyB0aGUgQ29yZSBTZXJ2aWNlIEFQSS5cclxuICAgKiBJbml0aWFsaXplcyBsb2FkaW5nIGFuZCByZXF1ZXN0cyBiZWZvcmUgbWFraW5nIHRoZSBjYWxsLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICByZXF1ZXN0Q29yZURhdGEoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVMb2FkaW5nQW5kUmVxdWVzdHMoKVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSBbXVxyXG4gICAgdGhpcy5jb3JlU2VydmljZS5teVJlcXVlc3RzKHRoaXMuc2VhcmNoRGF0YSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhID0gcmVzcG9uc2UuaGlzdG9yeTtcclxuICAgICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICAgICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YUxvYWRlZCA9IHRydWVcclxuICAgICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZSlcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgbG9hZGluZyBhbmQgcmVxdWVzdHMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVMb2FkaW5nQW5kUmVxdWVzdHMoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhID0gW11cclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IFtdXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBhIHJlcXVlc3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0IGNvbnRhaW5pbmcgaGlzdG9yeSBkYXRhLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgaGFuZGxlUmVxdWVzdFN1Y2Nlc3MocmVzcG9uc2UpIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGEgPSByZXNwb25zZS5oaXN0b3J5XHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgZXJyb3IgcmVjZWl2ZWQgZnJvbSBhIHJlcXVlc3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlcnIgLSBUaGUgZXJyb3Igb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBoYW5kbGVSZXF1ZXN0RXJyb3IoZXJyKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2VcclxuICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IodGhpcy5lcnJvck1lc3NhZ2UpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXJzIHRoZSBwcmV2aW91cyByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgc3RhdHVzIHNlbGVjdGVkIGluIHRoZSBmaWx0ZXIgZm9ybS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgZmlsdGVyU3RhdHVzKCkge1xyXG4gICAgY29uc3Qgc3RhdHVzS2V5ID0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS52YWx1ZT8ua2V5O1xyXG4gICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YVxyXG4gICAgbGV0IGZpbHRlckRhdGE6IGFueVtdO1xyXG5cclxuICAgIGlmIChzdGF0dXNLZXkpIHtcclxuICAgICAgZmlsdGVyRGF0YSA9IHRoaXMucHJldmlvdXNSZXF1ZXN0cy5maWx0ZXIoKHJlcXVlc3QpID0+IHJlcXVlc3QuZm9ybT8uWydmb3JtU3RhdHVzJ10/LmtleSA9PT0gc3RhdHVzS2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlckRhdGEgPSB0aGlzLnByZXZpb3VzUmVxdWVzdHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gZmlsdGVyRGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgZm9ybSBpbiBhIG5ldyB3aW5kb3cgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm0gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUlkIC0gVGhlIElEIG9mIHRoZSBmb3JtIHRvIGJlIG9wZW5lZC5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHZpZXdGb3JtKGZvcm1JZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZm9ybUlkKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKCcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcz9mb3JtSWQ9JyArIGZvcm1JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZXMgdGhlIHNpZGUgbmF2aWdhdGlvbiBwYW5lbC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY2xvc2VTaWRlbmF2KCkge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdjbG9zZScsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdCB0aGUgdmFsdWUgdG8gY29tcGxldGUgYWxsIGFjdGl2ZSBzdWJzY3JpcHRpb25zXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gZW1pdCB0aGUgdmFsdWUgdG8gY29tcGxldGUgYWxsIGFjdGl2ZSBzdWJzY3JpcHRpb25zXHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2lkZW5hdiBoaXN0b3J5LXNpZGVuYXZcIj5cclxuICA8ZGl2IGNsYXNzPVwic2lkZW5hdi10aXRsZVwiPlxyXG4gICAgPGgzPnt7IGkxOG4udHJhbnNsYXRlKCdQcmV2aW91c1JlcXVlc3RzJykgfX08L2gzPlxyXG4gICAgPGRzLWJ1dHRvbiBjbGFzcz1cImNsb3NlLXNpZGVuYXZcIiAoY2xpY2spPVwiY2xvc2VTaWRlbmF2KClcIiBpY29uPlxyXG4gICAgICA8ZHMtaWNvbiBpY29uPVwiY2xvc2VcIiBjbGFzcz1cImZzLTIwIGZjLWJsYWNrXCI+PC9kcy1pY29uPlxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LWJvZHkgYmMtbGlnaHQtZ3JheVwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJwLTNcIj5cclxuICAgICAgPGhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgbWItM1wiPlxyXG4gICAgICAgIDxoMiBjbGFzcz1cImZzLTIwIGZ3LW1lZGl1bSBmYy1ibGFjayBtYi0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ncm93LTEgZ2FwLTNcIj5cclxuICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdBbGxSZXF1ZXN0cycpIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLWNvdW50IGZzLTE0IGZ3LW5vcm1hbFwiPnt7IHByZXZpb3VzUmVxdWVzdHM/Lmxlbmd0aCA/IHByZXZpb3VzUmVxdWVzdHM/Lmxlbmd0aCA6ICcwJyB9fTwvc3Bhbj5cclxuICAgICAgICA8L2gyPlxyXG4gICAgICAgIDxkcy1idXR0b24gaWNvbiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiaXNPcGVuID0gIWlzT3BlblwiIGNka092ZXJsYXlPcmlnaW4gI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiZmlsdGVyXCIgY2xhc3M9XCJmYy1jb3JhbCBmcy0yMFwiIHNsb3Q9XCJwcmVmaXhcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXHJcbiAgICAgICAgICBjbGFzcz1cImljb24tdG9nZ2xlIGZsZXgtbm93cmFwXCJcclxuICAgICAgICAgICNwYWdlVmlldz1cIm1hdEJ1dHRvblRvZ2dsZUdyb3VwXCJcclxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgdmFsdWU9XCJsaXN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jYXJkIGZzLTIwXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImxpc3RcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWxpc3QtZG90cyBmcy0yMFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgPC9oZWFkZXI+XHJcblxyXG4gICAgICBAaWYgKHBhZ2VWaWV3LnZhbHVlID09PSAnY2FyZCcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlzdG9yeS1jYXJkcy1jb250YWluZXJcIj5cclxuICAgICAgICAgIEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgbGluZS1oZWlnaHQtMSBiYy13aGl0ZSByYWRpdXMtNiBib3gtc2hhZG93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBbMCwxLDIsM11cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibG9hZGluZy1iZyBmcy0xNiBmdy1tZWRpdW0gZmxleC1ncm93LTEgbWItMCBjdXJzb3ItcG9pbnRlciB1bmRlcmxpbmUgZnctYm9sZFwiPjwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheSBtYi0yIGxvYWRpbmctYmdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmdy1tZWRpdW0gZmMtYmxhY2sgbG9hZGluZy1iZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTYganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBsaW5lLWhlaWdodC0xIGJjLXdoaXRlIHJhZGl1cy02IGJveC1zaGFkb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpb3VzUmVxdWVzdHNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDNcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gZmxleC1ncm93LTEgbWItMCBjdXJzb3ItcG9pbnRlciB1bmRlcmxpbmUgZnctYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3Rm9ybShyb3c/LmZvcm0/LlsnZm9ybUlkJ10pXCI+e3sgcm93Py5mb3JtPy5bJ2Zvcm1JZCddIH19PC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheSBtYi0yXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUNyZWF0aW9uRGF0ZScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZ3LW1lZGl1bSBmYy1ibGFja1wiPnt7IHJvdz8uZm9ybT8uWydjcmVhdGlvbkRhdGUnXSB8IGRhdGU6ICdkZC9NTS95eXl5IGhoOm1tIGEnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZHMtc3RhdHVzIFthdHRyLnN0YXR1c109XCJyb3c/LmZvcm0/LmZvcm1TdGF0dXM/LmtleSB8IHN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcm93Py5mb3JtPy5mb3JtU3RhdHVzPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChwYWdlVmlldy52YWx1ZSA9PT0gJ2xpc3QnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInByZXZpb3VzUmVxdWVzdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUZvcm1JZCcpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUNyZWF0aW9uRGF0ZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ1N0YXR1cycpIH19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgICAgIDx0Ym9keSAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpb3VzUmVxdWVzdHNcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbWVkaXVtIGN1cnNvci1wb2ludGVyIHVuZGVybGluZSBmdy1ib2xkIFwiIChjbGljayk9XCJ2aWV3Rm9ybShyb3c/LmZvcm0/LlsnZm9ybUlkJ10pXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvdz8uZm9ybT8uWydmb3JtSWQnXSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IHJvdz8uZm9ybT8uWydjcmVhdGlvbkRhdGUnXSAgfCBkYXRlOiAnZGQvTU0veXl5eSBoaDptbSBhJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRzLXN0YXR1cyBbYXR0ci5zdGF0dXNdPVwicm93Py5mb3JtPy5mb3JtU3RhdHVzPy5rZXkgfCBzdGF0dXNDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb3c/LmZvcm0/LmZvcm1TdGF0dXM/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDxkcy1sb2FkaW5nLXRhYmxlICpuZ0lmPVwibG9hZGluZ1wiIFtjb2xzXT1cIjRcIiBbcm93c109XCI0XCI+PC9kcy1sb2FkaW5nLXRhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoIXByZXZpb3VzUmVxdWVzdHM/Lmxlbmd0aCAmJiAhbG9hZGluZykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcclxuICAoYmFja2Ryb3BDbGljayk9XCJpc09wZW4gPSBmYWxzZVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuXT1cInRydWVcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW5cIlxyXG4+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtR3JvdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1oZWFkZXIgYm9yZGVyLWJvdHRvbSBwYi0yXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiZnMtMTYgZmMtYmxhY2sgZnctbWVkaXVtXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2ZpbHRlcnMnKSB9fTwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC00IGdhcC1tZC0zIGZpbHRlci1zZWN0aW9uIGJjLXdoaXRlIG10LTAgcHQtM1wiPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIlxyXG4gICAgICAgICAgbGFiZWw9XCJ7eyBpMThuLnRyYW5zbGF0ZSgnc3RhdHVzJykgfX1cIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwic3RhdHVzZXNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5ZWFyXCJcclxuICAgICAgICAgIGxhYmVsPVwie3sgaTE4bi50cmFuc2xhdGUoJ3llYXInKSB9fVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJ5ZWFyc09wdGlvbnNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtb250aFwiXHJcbiAgICAgICAgICBsYWJlbD1cInt7IGkxOG4udHJhbnNsYXRlKCdtb250aCcpIH19XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc09wdGlvbnNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBtdC00XCI+XHJcbiAgICAgICAgICA8ZHMtYnV0dG9uIHNoYXBlPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCI+IHt7IGkxOG4udHJhbnNsYXRlKCdjbGVhcicpIH19IDwvc3Bhbj5cclxuICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgPGRzLWJ1dHRvbiBjbGFzcz1cInctMTAwXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIj57eyBpMThuLnRyYW5zbGF0ZSgnYXBwbHlGaWx0ZXJzJykgfX0gIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlNZXNzYWdlPlxyXG4gICAgPGRzLW1lc3NhZ2UgbGFiZWw9XCJ7e2kxOG4udHJhbnNsYXRlKCdOb0RhdGEnKX19XCI+PC9kcy1tZXNzYWdlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -84,7 +84,7 @@ export class ControlValueAccessorDirective {
84
84
  this.setFormValidators();
85
85
  }
86
86
  setFormValidators() {
87
- this.required = this.control?.hasValidator(Validators.required) ?? false;
87
+ // this.required = this.control?.hasValidator(Validators.required) ?? false;
88
88
  if (this.required) {
89
89
  this.searchControl.setValidators(Validators.required);
90
90
  this.employeeSearchControl.setValidators(Validators.required);
@@ -127,7 +127,7 @@ export class ControlValueAccessorDirective {
127
127
  this.isDisabled = isDisabled;
128
128
  }
129
129
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }, { token: i2.ToastrService }, { token: i1.CoreService }, { token: i3.DomSanitizer }, { token: i4.FormBuilder }, { token: i1.ActionStateService }], target: i0.ɵɵFactoryTarget.Directive });
130
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { tooltip: "tooltip", isReadOnly: "isReadOnly", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", hasTooltip: "hasTooltip", name: "name", randomID: "randomID", multiple: "multiple", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate" }, ngImport: i0 });
130
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { tooltip: "tooltip", isReadOnly: "isReadOnly", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", hasTooltip: "hasTooltip", name: "name", randomID: "randomID", multiple: "multiple", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate", required: "required" }, ngImport: i0 });
131
131
  }
132
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, decorators: [{
133
133
  type: Directive,
@@ -176,5 +176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
176
176
  type: Input
177
177
  }], customMinDate: [{
178
178
  type: Input
179
+ }], required: [{
180
+ type: Input
179
181
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLFdBQVcsRUFBd0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pLLE1BQU0sT0FBTyw2QkFBNkI7SUFrRHJCO0lBQTJCO0lBQzNCO0lBQ0E7SUFBaUM7SUFDakM7SUFDQTtJQW5EVixPQUFPLENBQUM7SUFDUixVQUFVLENBQVU7SUFDcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsSUFBSSxDQUFTO0lBQ2IsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQU07SUFDakIsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFVO0lBQ2YsU0FBUyxDQUFVO0lBQ25CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxDQUFVO0lBQ2QsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbkMsYUFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxxQkFBcUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsV0FBVyxH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MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzt1UEFJVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQWlCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIEZvcm1Db250cm9sTmFtZSwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QWN0aW9uU3RhdGVTZXJ2aWNlLCBDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge1RvYXN0clNlcnZpY2V9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDb250cm9sVmFsdWVBY2Nlc3Nvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIHRvb2x0aXA7XHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoaW50ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Vycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dIaW50OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0lmRW1wdHk6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnNpZGVUYWJsZTogYW55O1xyXG4gIEBJbnB1dCgpIG1hc2s6IGFueTtcclxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXRTdWZmaXg6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGFzVG9vbHRpcCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmFuZG9tSUQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgdG9nZ2xlQnV0dG9uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGVtcGxveWVlU2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHRlbGVwaG9uZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBhdHRhY2htZW50cyA9IFtdO1xyXG5cclxuXHJcbiAgc3RhcnREYXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGVuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgVmFsaWRhdG9ycyA9IFZhbGlkYXRvcnM7XHJcblxyXG5cclxuXHJcblxyXG4gIG1pbkRhdGVWYWx1ZTogYW55XHJcbiAgbWF4RGF0ZVZhbHVlOiBhbnlcclxuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmc7XHJcbiAgLy8gQFZpZXdDaGlsZCgnZGVmYXVsdCcpXHJcbiAgcHVibGljIGRhdGVwaWNrZXJPYmohOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbU1heERhdGU6IGFueVxyXG4gIEBJbnB1dCgpIGN1c3RvbU1pbkRhdGU6IGFueVxyXG5cclxuICB2YWx1ZTogYW55O1xyXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xyXG4gIHJlcXVpcmVkOmJvb2xlYW47XHJcbiAgbWF4TGVuZ3RoOiBhbnk7XHJcblxyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLCBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgICAgICAgcHVibGljIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICAgICAgICBwdWJsaWMgYWN0aW9uU3RhdGVTZXJ2aWNlOiBBY3Rpb25TdGF0ZVNlcnZpY2VcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIHNldEZvcm1Db250cm9sKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpO1xyXG4gICAgICBzd2l0Y2ggKGZvcm1Db250cm9sLmNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgY2FzZSBGb3JtQ29udHJvbE5hbWU6XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yXHJcbiAgICAgICAgICAgIC5nZXQoRm9ybUdyb3VwRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZ2V0Q29udHJvbChmb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IChmb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbERpcmVjdGl2ZSlcclxuICAgICAgICAgICAgLmZvcm0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGb3JtVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbGlkYXRvcnMoKXtcclxuXHJcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIH1cclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5lbXBsb3llZVNlYXJjaENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmKCF0aGlzLnZhbHVlKXtcclxuICAgICAgdGhpcy5zdGFydERhdGVDb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy50ZWxlcGhvbmVDb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMudG9nZ2xlQnV0dG9uQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzID0gW107XHJcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5yZXNldCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydERhdGVDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWU/LnN0YXJ0RGF0ZSk7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZT8uZW5kRGF0ZSk7XHJcbiAgICAgIHRoaXMudG9nZ2xlQnV0dG9uQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVsndmFsdWUnXSk7XHJcbiAgICAgIHRoaXMudGVsZXBob25lQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSlcclxuICAgICAgaWYodGhpcy52YWx1ZVsndmFsdWUnXSA9PT0gJycpe1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5yZXNldCgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbXBsb3llZVNlYXJjaENvbnRyb2wuc2V0VmFsdWUodmFsdWVbJ3BlcnNvbk5hbWUnXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWw6IFR5cGUgfCBudWxsKSA9PiBUeXBlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IFR5cGUpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLFdBQVcsRUFBd0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pLLE1BQU0sT0FBTyw2QkFBNkI7SUFrRHJCO0lBQTJCO0lBQzNCO0lBQ0E7SUFBaUM7SUFDakM7SUFDQTtJQW5EVixPQUFPLENBQUM7SUFDUixVQUFVLENBQVU7SUFDcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsSUFBSSxDQUFTO0lBQ2IsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQU07SUFDakIsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFVO0lBQ2YsU0FBUyxDQUFVO0lBQ25CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxDQUFVO0lBQ2QsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbkMsYUFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxxQkFBcUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsV0FBVyxH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LEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQWlCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtBY3Rpb25TdGF0ZVNlcnZpY2UsIENvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7VG9hc3RyU2VydmljZX0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcENvbnRyb2xWYWx1ZUFjY2Vzc29yXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPlxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KCkgdG9vbHRpcDtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0hpbnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SWZFbXB0eTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluc2lkZVRhYmxlOiBhbnk7XHJcbiAgQElucHV0KCkgbWFzazogYW55O1xyXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1hdFN1ZmZpeDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoYXNUb29sdGlwID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSByYW5kb21JRCE6IHN0cmluZztcclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICB0b2dnbGVCdXR0b25Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW1wbG95ZWVTZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgdGVsZXBob25lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGF0dGFjaG1lbnRzID0gW107XHJcblxyXG5cclxuICBzdGFydERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kRGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBWYWxpZGF0b3JzID0gVmFsaWRhdG9ycztcclxuXHJcblxyXG5cclxuXHJcbiAgbWluRGF0ZVZhbHVlOiBhbnlcclxuICBtYXhEYXRlVmFsdWU6IGFueVxyXG4gIEBJbnB1dCgpIG1heERhdGU6IHN0cmluZztcclxuICAvLyBAVmlld0NoaWxkKCdkZWZhdWx0JylcclxuICBwdWJsaWMgZGF0ZXBpY2tlck9iaiE6IGFueTtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VzdG9tTWF4RGF0ZTogYW55XHJcbiAgQElucHV0KCkgY3VzdG9tTWluRGF0ZTogYW55XHJcblxyXG4gIHZhbHVlOiBhbnk7XHJcbiAgY29udHJvbDogRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6Ym9vbGVhbjtcclxuICBtYXhMZW5ndGg6IGFueTtcclxuXHJcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBhY3Rpb25TdGF0ZVNlcnZpY2U6IEFjdGlvblN0YXRlU2VydmljZVxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcbiAgICAgIHN3aXRjaCAoZm9ybUNvbnRyb2wuY29uc3RydWN0b3IpIHtcclxuICAgICAgICBjYXNlIEZvcm1Db250cm9sTmFtZTpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3JcclxuICAgICAgICAgICAgLmdldChGb3JtR3JvdXBEaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIC5nZXRDb250cm9sKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb250cm9sID0gKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZm9ybSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1WYWxpZGF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtVmFsaWRhdG9ycygpe1xyXG5cclxuICAgIC8vIHRoaXMucmVxdWlyZWQgPSB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKXtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYoIXRoaXMudmFsdWUpe1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy5lbmREYXRlQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICB0aGlzLnRlbGVwaG9uZUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy50b2dnbGVCdXR0b25Db250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnJlc2V0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZT8uc3RhcnREYXRlKTtcclxuICAgICAgdGhpcy5lbmREYXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlPy5lbmREYXRlKTtcclxuICAgICAgdGhpcy50b2dnbGVCdXR0b25Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlWyd2YWx1ZSddKTtcclxuICAgICAgdGhpcy50ZWxlcGhvbmVDb250cm9sLnNldFZhbHVlKHZhbHVlKVxyXG4gICAgICBpZih0aGlzLnZhbHVlWyd2YWx1ZSddID09PSAnJyl7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnJlc2V0KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVsncGVyc29uTmFtZSddKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbDogVHlwZSB8IG51bGwpID0+IFR5cGUpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gVHlwZSk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIl19