@eqproject/eqp-dynamic-module 2.11.1 → 2.11.4

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.
@@ -2449,10 +2449,10 @@ EqpDynamicModuleConfiguratorComponent.HINT_ADJECTIVES = [
2449
2449
  'rustico', 'moderno', 'vintage', 'armonioso', 'sorprendente',
2450
2450
  ];
2451
2451
  EqpDynamicModuleConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatDialog }, { token: i3.UtilityHelperService }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2452
- EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA/MAAAPzCAYAAAD7/FyjAABXfklEQVR42uzdd7hddZno8XWSkARCCCSU0AQCAygooJRBEFBEFKQoygPYKBYQNFZEURABhZHRINWhDaAIUgZFECIiDE2qVJGqIB0SOiSk3Psu9hkPkOTk7LPW2nuVz+d5vv/cZ+78cS/v+/vtnL3XShIAAAAAABqtJxoWjYxGRQtFI3r/z3r8Pw8AAAC0J/1gvUy0RrRRtHX0yWif6HvR4dHR0cnRr6LfRH+Iro5ujv4WPRQ9GU2NnoteiqZFM6LZ0f+bT7N7/2dfiV7s/d8xtfd/54PRXdFN0VXR5Oj86IzopOio6LBo/+iL0S7RVtGG0Vuj8b3/cAAAAACltWC0YrRBtG30uei7vR96z4ou7/1w/EQ0fQAftOtS+o8Lj0V3RJf1/sPEpOjb0e69/4ixbrS8D/8AAADkKf2a+qrR5tGu0QHRCdHF0V+T1l+0/59y6Zno9ujC6PjoO9Gnos2iCdFw/zkCAACQSn8/vlzvB8bPJq2vj5+TtL5i/pQP2KUq/WnA49F10ZnRIb3/wLJx0vpqPwAAADWzRO8H9s9HP05avwFPv/79sg/JtemF6C/R2dGPktZX+dNnEizqP38AAIByWzzaNGk9mO2Y6E9J66FuPuw2u0eS1oP80t/sp880eHc0xrgAAAB0VvqKtbWS1tesj/ShXRk/5B+RtJ7Knz6Nf4jxAgAAyC59Wvy/R3tF/xXdmLSelO7DqIoofVXfNUnrmx17RO9MPHwPAACgX0OjdXo/uP93dGc00wdMdblXk9bv8U/o/YC/RtJ6eCIAAEAjpU8h/0h0eHRF0vqrqA+PqkLPJq2v6P8g2ioaa5wBAIA6Sv+S+Y7oS0nr1WIP+kComnVPdGrSesjeqkYeAACoovRBYunvjb+atF4FN8WHPTWsx6KzktbbFXw1HwAAKKX09+7rR/tGFyatryH7QCf19VR0bjQxab2NwYd7AACgKyZEe0bnRc/4sCa11RPRGUnrFYvLWCcAAEBRxkQfjY6L7vdhTMq19O0NP01aD9RbyLoBAAAGK/0a8LrRgUnr3dteEyd1punRZdG3ktbv7QEAAPqV/kVw26T1Tu1HfKiSSlH6TZifRVtEw60pAAAgtVzS+u17+uC6V3xwkkrd89E50WeiJawvAABoljWT1tfn/+LDkVTZZkVXJ623SEyw1gAAoJ7S974fGv3NhyCplqX/OLd/tJp1BwAA1ZU+wG6D6MfRAz7oSI3qjuig6O1WIQAAVMP6SesVVw/5QCMpuidpfSvHk/EBAKBkVk1af4W71wcXSf10a9L6jf3y1iYAAHTH0tFXoxt9QJHUZrOjK6LPR4tZpwAAUKzR0a7RH5LWk6x9KJGUtenRb6Ido5HWLAAA5GfT6NToJR88JBXY1OiYaF1rFwAABme56LvRfT5gSOpC6e/rvxItbh0DAED/RiStr7penPgavaTyfA3/3GjraKg1DQAAfVaPJkVTfHCQVOIeSVqvuVvB2gYAoKkWSFp/hf+TDwiSKlb6zaELoq2iIdY5AABNkL7f+eDoMR8IJNWgB6JvRUtY7wAA1E1P9MGk9fqnmS7/kmpY+tv6X0YbW/kAAFRd+l74iYkn0ktq3pPw90i8tx4AgIpZMfpJ9JxLvaQG92T0g2i8YwEAgDLbJDov8VV6SXrzV/BPjdZxTAAAUBbDo09HN7mwS9J8uyLaPvEUfAAAumSRaN/oUZdzSWq79Fkie0YjHCcAAHTCUtGPomddxiUpc+lrOvfr/QdSAADI3YTouOgVl29Jyr30H0gPSzwsDwCAnKwV/SrxUDtJ6kTpP5geH63s+AEAYDD+PbrIxVqSutLM3n9IfZvjCACAgX6Iv8RFWpJK0azorGgNxxMAAHOzoQ/xklTaZke/9qEeAID/8+5osouyJFXmQ/3Z0ZqOLwCAZkr/Ev8HF2NJ8qEeAIDye3t0gYuwJNXmN/WnRys53gAA6im96P2i9+LnAixJ9Wp6dFS0lOMOAKAexkdHR6+67EpS7XsxOiQa4/gDAKim9CJ3aO/FzgVXkprVlOib0YKOQwCAahgefb33IudCK0nN7uFo92iI4xEAoLw+Ft3v8ipJelO3RJs7JgEAymX96CqXVUnSfErfZrK6YxMAoLtWiM5IWu8bdkmVJA2kGdEx0eKOUQCAzlok+lH0ikupJGmQPZu0HpI3wrEKAFCsnqT1IKMnXEIlSTmVPmtlO0csAEAx1o3+7NIpSSqo30erOm4BAPKR/qbxhGiWi6YkqeCmR4dHCzt+AQAGZ2i0TzTV5VKS1OHS99Pv7CgGAGjPxknrncAulJKkbnZ59HbHMgBA/9Kv1J/q8ihJKlEzo58kvnoPADBX6VPqn3ZplCSVtIeibR3XAAAtqyetrzG6KEqSqtB50bKObwCgqUZEP0haTw52OZQkVannoy9HQxznAECTvC+622VQklTxbojWcawDAHW3WHSKy58kqUalD8g7IlrQMQ8A1NF20aMufZKkmnZP9B7HPQBQF+OiM1zyJEkNaHb0s2iU4x8AqLKPRU+43EmSGtb90XtdAwCAqlkyOttlTpKUNPuv9MdFo10LAIAq2Cl6yiVOkqTXejD6gOsBAFBWY6OzXNokSZprx0QLuS4AAGWyZfSIi5okSf12d7S+awMA0G3pXxiOcTmTJGnAzYgOioa5RgAA3ZD+ZeFulzJJkgbV9dFqrhMAQKekf0n4ftL6y4LLmCRJg+/laB9XCwCgaKtE17l8SZKUaxdHS7lmAABF+ET0vAuXJEmF9ETSeqAsAEAuFo5OdcmSJKnwZkf/ES3g+gEAZLFO4iF3kiR1uvQnbRNcQwCAwfhKNN2FSpKkrvRctLPrCAAwUItHv3OJkiSpFJ0cjXI9AQD6s3H0sIuTJEml6q5oDdcUAGBuvp54d7wkSWXtxaT1ZhkAgNeMic5zSZIkqRIdF41wfQGAZlsrutfFSJKkSnVDtKJrDAA0027Ryy5EkiRVsinRVq4zANAcI6OTXIIkSap8s6NDo6GuNwBQbytEN7v8SJJUqy6NxrnmAEA9bRY95cIjSVIteyB6h+sOANTLlxKvnZMkqQmvr/u4aw8AVF/66pqTXW4kSWpUP4yGuAYBQDUtE/3ZhUaSpEZ2YTTGdQgAqmXD6FEXGUmSGt3d0equRQBQDen746e7wEiSpOi5aGvXIwAor57oMJcWSZL0pmZGE12VAKB8ForOc1mRJEn9dGw0zLUJAMohfdDdTS4okiRpAF2SeDAeAHTdOtHDLiaSJKmN7oxWco0CgO7YLnrRhUSSJA2iJ6ONXKcAoLO+Ec1yEZEkSRmaFn3CtQoAijckOtrlQ5Ik5dTs6NuuWABQnJGJJ9ZLkqRiOqb3jwYAQI7GRle5aEiSpAL7n2hB1y4AyMcK0V0uGJIkqQNdE41z/QKAbNaOHnWxkCRJHexv0YquYQAwOFtEz7tQSJKkLvRY9E7XMQBoz87Rqy4SkiSpi70Qbe5aBgADs1fiHfKSJKkcpe+i/4jrGQD0b3+XBkmSVLJmRru6pgHA3B3hsiBJkkra7OgrrmsA0GdodKJLgiRJqkAHu7oBQJIMj85xMZAkSRXqqKjHNQ6AphoVTXYhkCRJFewX0TDXOQCaZnR0pYuAJEmqcOdFC7jWAdAUY6JrXQAkSVINuiAa4XoHQN0tFt3g4JckSTXq4mikax4AdTUu+osDX5Ik1bBLo4Vc9wComyWj2xz0kiSpxl0RLezaB0BdjI/+6oCXJEkN6OpoEdc/AKpumehuB7skSWpQ10WLugYCUFXjfZCXJEkN/kDvL/QAVE76G3lfrZckSU3uqsRv6AGokPSp9R52J0mSlCSXJ55yD0AFpO+R9/o5SZKkN762znvoASitMdENDmxJkqQ5+n00wnURgLIZHV3roJYkSZpnv40WcG0EoCxGRVc6oCVJkubbudEw10cAum14NNnBLEmSNOBOi3pcIwHolqHROQ5kSZKktvuZqyQA3XKSg1iSJGnQHeQ6CUCnHeEAliRJytxE10oAOuU7Dl5JkqRcmh19xvUSgKLt5dCVJEnKtZnRdq6ZABRl52iWA1eSJCn3pkXvc90EIG9bRK86aCVJkgrr+Wht104A8rJO7+HikJUkSSq2R6MVXD8ByGqF3kPF4SpJktSZ7orGuoYCMFhjew8Th6okSVJnuyoa6ToKQLvSw+NqB6kkSVLXOi8a4loKwEAN6T08HKKSJEnd7ShXUwAG6mgHpyRJUmn6luspAPPzDQemJElSqZod7eyaCsC8bBfNcmBKkiSVrleiDV1XAXiz9F3yLzooJdXgr1czei+96U57KZrW+3822//7SKp4T0QrurYC8H+WiR52QErqQtOjf0Y3Rr+PzoiOjX4Y7Rt9Ptox+mC0SbRutEa0UjQ+WiQaEQ2Legaw73p6/2fT/ztjev93TIjWjNaLNo0+FO0U7RntFx0WHR+dGV0S/SV6tPcfCPz/oaROd0fv7gOg4RaKbnIwSsq52b0feK+Lzo0mRV/v/WCefihfLVq04vsz/YeBcdFbo82S1u9Z03+ASJ88fX7vbn3CfwuSCij9x8+hrrEAzZVeRL2CTlKW32/eGf02+mm0d9L6C/oq0QJW7L+MjFaPPhxNjH4WXRTdHb3qvyNJg8wr6wAa7DAHoaQBlP72/Ibo1KT1eqRtopWjIdZoZsN6P+h/NPpu0vqZwS29/1Divz1J82tvaxSgeXZzAEqaS49Ev4sOjnZIWr8n77EyOy79h5L0pwjpb/cPT1q/1X/Sf5+S3tTMaEsrE6A50teaTHcASo3vqd4P7t/rvQwuaT2W3rJJ6+v66T+2TI6e9d+x1Pieif7NegSov/TJ9Y86+KRG/vUm/ap8+iC69EFtE6zDWki/NZF+Tf8zSestALclXsEnNbG/RqOtRID6Sl/F9GcHntSI0nerXxkdmrT+6u6S1xyLRdtGR0TXJ16hJzWl8xM/iwKorZMddFJtm5W0XgN3SNJ6TdpIK49eCyettwykH+5vTfzlXqpz37fyAOrnSw44qXbdHx2XtB5Ut5g1xwAtFe0SnRI9bI6kWpX+Y9321hxAfWyW+JqlVIfSd5JfFn09aT3pHPKwVrR/dG3S+oaHWZOq3fPR26w2gOpbIWk9sdrhJlWzKUnr/e47RmOsNAq2RPSp6KzeDwRmUKpm90SLWmkA1ZX+ZvZmB5pUudI3TqRPJt88GmaV0SXpQ1PT1+Cd3PuPSmZTqlYXJR6IB1BZJzrIpMr0YPSf0btdviihYb3/uJT+I9Pj5lWqTN+zvgCqZzcHmFT6nur9cLSxD/BUyNDoA0nrAXrPmWOp9G862cLaAqiO9GFGLzvApFL2QnR69KHEV+ipvvTnXOnbFM6JpplvqbT/cLycdQVQfukDsu51cEmle1XQ5dFnolHWFDWVvh7xi9H1Zl4qXddEC1hTAOV2ngNLKk3/iA6KJlhNNMwa0RGJ39dLZWqS1QRQXl93UEldb0Z0btL6jaLfwdN06U9Jto8uTlrfULEjpO72cWsJoHw27v0Q4aCSutNDSeupwUtbRzBX6TdUDouetC+krvV8tJp1BFAei0cPO6CkrvwWPv2L47ZJ6wnfwPwNj3aKrrRDpK50W9J6eCUAJXCBg0nqaC8mrVfKrW79QCbvjE6NptsrUkc71voB6L6JDiSpow+0+0a0qNUDuVoq+n7igXlSJ/uo1QPQPesk/pohdaKboh0TX6WHoqVfwd89usvekQpvavQWaweg8xaO7nYQSYU2OdrcuoGOS98EkT4F/1p7SCq0K/1DNUDn/bcDSCqkWdGZSeu3vED3bRJdaDdJhfUDawagcz7h4JFyb2Z0WrSqFQOllP4D2/l2lVTIP2JvZsUAFG+VpPWOUIePlE8zolN6Zwsov7Wjc5PWqyHtMCmf0lccj7NeAIozLLrOgSPl9iH+xGiC1QKV9PbobB/qpdw631oBKM73HTRS5tKLf/qbeF+nh3pIv37/e7tNyqXdrRSA/K2XtP6S6KCRBl/6EK21rROopfRBeVfZc1Km0p9yrmSdAORnocRr6KQspRf8ja0SaISto1vtPSnT6+qGWCUA+TjGwSINqnujHawQaJz0g0j6deFH7UFpUO1njQBkt6UDRWq7KdHEaAErBBptVHRg9KK9KLXV9MTP0gAyGRs94kCR2rp8HBEtan0Ar7N00np7xSx7Uhpwd0QjrA+AwTnLQSINuIsST6gH+rdudK19KQ24/7Q2ANq3kwNEGlD3RdtYGcAA9USfiR6zP6UBvc51E2sDYOCWjJ5ygEj99lK0f+IrgMDgLJK0fpbzqn0qzfdhsgtaGQADc7aDQ+q330ZvsSqAHKyRtF7FZbdK8+4nVgXA/H3MgSHNs39GH7EmgJylX73/bNJ6E4ZdK81Z+vDIDa0KgHlbPHrCgSHN0cxoUjTamgAKtER0mp0rzbW7opHWBMDcneGgkOboluhd1gPQQZtH99u/0hwdZj0AzGk7B4Q0xzvjD4gWsB6ALhgVHZl4N7305m/KrWc9APRZLPGKHOn1XR+taTUAJbBR9Dd7WfpXt0fDrQaAllMcDNJrvRLtGw21FoASSX8nnH69eKY9Lb3WQdYCQJK814EgvdZN0dusBKDE0qd532tfS6/9FG51KwFoshHR3Q4ENbz0L10HJ34bD1RD+lv64+xuKbkiab3WEaCRDnIQqOHdE21gFQAV9KHoUXtcDW93qwBoovSrSdMdAmpwx0cLWQVAhY2LzrXP1eCmREtYBUCTpF9JusIBoIY2NdrBGgBqZM/oZftdDe10KwBokt0tfjW0/42WtwKAGlojab2yy65XE9vcCgCaIP0q0hRLXw0rfcjd9xOvnAPqLX2F3bF2vhrYPb3//QPU2qkWvhrWY9FmRh9okPSnRM/Z/2pYBxt9oM7eY9GrYf0pGm/0gQb6t+gW54Aa1LRoFaMP1NFQh7oa1OzoR4mv1QPNtmB0sjNBDepCYw/U0d4WvBpS+rT6Dxt5gH/ZLfG0ezUndwCgVhbv/YBjwavu3RZNMPIAc1gn+odzQg3ovmiEkQfq4gSLXQ3o7GiUcQeYp/Qf9y9zXqgBfde4A3WwXjTLUleNS//7/o5RBxiQYdEkZ4dq3kvRW4w7UGU90XUWumrcs9FWRh2gbZ+OXnGOKKn3N/YAKmt3i1w1Lv1N3GrGHGDQNoged56oxm1uzIEqGh09YYmrpl0RjTPmAJmlX0W+zbmimnZH4jW1QAX9yAJXTTslGm7EAXKT/gHgQueLatqeRhyokhUSv4NT/Zodfct4AxQi/eulB+OpjqXfVF3EiANVcYbFrZo1Lfq40QYo3JcSb8FR/fqR0QaqYP2k9RdMi1t1aWq0idEG6JiPJr7hp3qV/ve8gtEGyu4qC1s16qHobcYaoOM2iqY4h1SjzjDWQJl9zKJWjbo1WsZYA3TN6tHfnUeqSek3Vzcw1kAZpU/3vt+iVk1KXz3nYTUA3bd04tV1qk9XG2mgjL5mQasmXRCNNNIApbFYdI3zSTXJA3WBUhmT+F2b6tEvomFGGqB0RkWXOKdUg+511wDK5FCLWTXo6KjHOAOUVvqTvrOdV6pBXzDOQBmMj160lFXxDjXKAJUwJDrJuaWK90i0oHEGuu1oC1kV73vGGKBS0m9RHev8UsXb1ygD3bRS9KplrAq3nzEGqKxJzjFVuPR5U2OMMdAtp1vEqnBfM8IAlfdj55kqnJ/5AV3x9miWJayK9iUjDFAbhzjXVNHS504tZYSBTrvAApYP8gCUhDfrqMpv0wHomA0tXlU0X60HqC9fuVcVS58/tZLxBTplssWrCvYtowtQe0c671TBTjS6QCe828JVBTvA6AI0xnHOPSXV++v8ikYXKJq/ysuTYgEos/Q99Cc7/1SxTjC6QJH8Vl4eKgNAFQyNznUOKvHXeYDXXGLRqkL9Mmn9dQaAZhoR/cF5qAr1X8YWKMK/W7CqUOmrE4cZW4DGGxVd61xUUp2/zq9gbIG8XWzBqiJdHo00sgD0Ghvd7nxU4q/zQAP5q7yq0q3RIkYWgDdZJnrQOanEX+eBhrnIYlUFerD3sgYAc/O2aKrzUhXoeOMK5GEtC1UVaGrvJQ0A+rNJNM25qZKX/jc63rgCWf3KQlUFDrxNjCoAA/TxaLbzUyXvcKMKZDEhmmmZqsTN7r2UAUA7vuIMVcl7LhpjVIHBOs4iVcnbz5gCMEhHO0dV8r5tTIHBWCp6xRJViTvFmAKQwdDEq3dV7h5PvG4XGIQfWqAqcVdEw40pABmlX2O+07mqErenMQXakb6n+1nLUyXtvmicMQUgJytFTzpfVeJ7z1BjCgzUvhanSlr6j0yrG1EAcrZRNN05q5K2kxEFBiL96vKjlqZK2KxoKyMKQEE+66xVSbvZeAID8WkLUyXtO8YTgIJ5k4/K2mbGE5ifmyxLlbBfG00AOmCB6ErnrkrY+cYT6M8mFqVK2G3RKOMJQIekr+f9p/NXJSv9ueHKxhOYl/MsSpWsqdEEowlAh60XTXMOq2QdaTSBuVmp91/8LEqVpdnRh40mAF2yl7NYJeuFaIzRBN7sJxakStaPjCUAXfYL57FK1teMJfB6o6PnLEeVqMujoUYTgC5Ln9lyp3NZJerv7kjA6020GFWiHovGG0sASmL1pPX1Zme0ytIOxhJI9UT3WYoqSTMT71EFoHx2dkarRF1pJIHUBy1ElaiDjCQAJXWyc1olak0jCfzGMlRSnn9l9hswAMoq/f38Xc5rlaRjjCQ02/JJ62vNFqLK8D75txhJAEpu7cT751WOno8WNpLQXAdbhCpJHzWOAFSEBwerLH3BOEIzLZC0nhpuEarbHW8cAaiYC5zfKkG3GEVopo9bgCpB90QLGUcAKmbJ6EnnuErQhsYRmudPlp+6XPq8hg2MIgAVtb2zXCXoNKMIzfJWi08l6GCjCEDFneI8V5dLH8g4zihCc0yy+NTlbkpaz20AgCpbJPqHc11d7htGEZphRDTF0lMXeyV6m1EEoCY2jWY539XF7jKG0Aw7WnjqcvsaQwBq5kjnu7qcB+FBA1xs2amLXR8NNYYA1Ez6Zpb7nfPqYicYQ6i35RJfA1P3mh6taQwBqKn3RbOd9+pSzyde9wu1tr9Fpy52gBEEoOZ+7rxXF/u0EYR66onus+TUpW5JPL0egPpLn27/kHNfXepyIwj1tKkFpy41M3qXEQSgIbZ29qtLpT/zWNkIQv2casGpS00yfgA0zDnOf3WpQ4wf1Mvo6CXLTV3on73//QFAkyybtB5I5i6gbty9hhhBqI9dLTZ1qY8YPwAa6svuAepS7zd+UB9/sNTUhX5r9ABosPSvoze6D6gLnWz8oB6WTrxbXp0v/VnHW4wfAA33LvcwdaHnopHGD6rvqxaautD+Rg8AXnO8e4G60A5GD6rvBstMHe6+aITRA4DXjIumuB+ow51n9KDaVrXI1IW2MXoA8AZfdD9Qh5sWLWr0oLoOssjU4S4ydgAwh6HRLe4J6nB7GD2ornstMXWw6Unr2yAAwJze466gDneZsYNqWt8CU4c7wtgBQL/Ocl9QB0vfpLCMsYPq+akFpg6WPtjH77IAoH8rJa3fMrs7qFN9zdhBtfRED1le6mATjR0ADMgR7g3qYNcYOaiWDSwudbD02QwLGDsAGJD0m2xeVadONTta1thBdfzY4lIH28HIAUBbJro/qIN9ychBdTxgaalDXWXcAKBt6TfavHVIneoKIwfVsI6FpQ62sZEDgEHZ2T1CHSp9qv1SRg7K71ALSx3qQuMGAIOWPrD4FvcJdag9jRyU398sK3Wg9GEqaxs3AMjkw+4U6lCXGjcotzUtKnWoM40bAOTiavcKdaAZ0TjjBuV1oEWlDh0G/2bcACAXm7pbqEPtYdygvP5iSakDnWTUACBXk90v1IEuMGpQTstZUEo681f5CcYNAHK1kTuGOtDL0YLGDcpnTwtKHegUowYAhfije4Y60NZGDcrnd5aTCm5mtIpRA4BCbOKuoQ50vFGDclkoesVyUsGdZtQAoFB/ct9Qwf3TmEG5bGsxqeBmRasaNQAo1HvdOdSB1jFqUB7/ZSmp4LxXHgA6w3vnVXTfM2ZQDj3Ro5aSEv+CCwB14BuXKrrrjRmUw7oWkgpusjEDgI5J/1Bzp/uHCmx2tJRRg+470EJSwb3fmAFAR+3q/qGC292YQfddYxmpwG4yYgDQcQskraeOu4uoqM4yZtBdY5LWu78tJBXVjsYMALria+4hKrCnoyHGDLrnoxaRCuwf0VBjBgBdsUj0vPuICmxdYwbdc5wlpAL7hhEDgK6a5D6iAvuOEYPuud8SUkG9GC1qxACgq1aOZrmXqKD+ZMSgOyZYQCqwY40YAJTCb9xLVFDTo1FGDDpvTwtIBZW+e3R1IwYApfA+dxMV2NZGDDrvPMtHBXWx8QKAUrnV/UQFdaTxgs5KnzD+rOWjgtrWiAFAqfhGporqr8YLOmt9i0cF9VDidXQAUDajoxfcU1RQyxgx6Jx9LR0V1AHGCwBK6efuKSqonY0XdM6Flo4KaEbiX2YBoKzWdldRQR1vvKAzhkTPWToqoHONFwCU2nXuKyqgu4wWdMY7LRwV1BbGCwBKbTf3FRXUksYLivdVy0YF9I+ox3gBQKmNSjwIT8X0MeMFxTvfslEBHWS0AKASTnZvUQEdZbSgWOlfTqdYNsq52dEE4wUAlfAedxcV0G1GC4r1DotGBXS50QKASrnP/UVJ/n/cGWe0oDhfsmhUQJ8xWgBQKd91f1EBbW+0oDhnWjLKufQhOqOMFgBUyvLRLPcY5dwRRguK86Alo5w73VgBQCVd7h6jnLvKWEExlrZgVEAfMloAUEmfd49Rzr0cLWC0IH8fsWCUc09Fw4wWAFTS2OhV9xnl3LpGC/J3uOWinDvWWAFApV3gPqOc28dYQf6usFyUcxsbKwCotF3cZ5RzvzRWkK+h0UuWi3IsfZhij9ECgEpL30jzonuNcux+YwX5WsdiUc79p7ECgFo4271GObeEsYL87GmpKOfebawAoBZ2cq9Rzm1jrCA/p1gqyrFHE1+xB4C6GB1Nc79Rjh1qrCA/d1oqyjFPsQeAevFUe+XZZCMF+VgwmmmpKMc2N1YAUCu7ud8ox54yUpCPDSwU5djT0TBjBQC1Mjaa4Z6jHFvOWEF2e1kmyrFTjRQA1NJl7jnKMQ/Bgxz8l2WiHNvRSAFALX3dPUc5dqCRguxutEyUU69GY4wUANTSau46yrHzjRRkk/622atGlFeXGSkAqLV73XeUUw8aJ8hmLYtEOfZ1IwUAtTbJfUc5Ns5IweDtaokox1YzUgBQa1u47yjH3m+kYPCOtESUU/cbJwCoveHRi+49yqlvGikYvD9ZIsqp440TADTCRe49yqnTjRMM3pOWiHJqB+MEAI3wVfce5dTNxgkGZ3ELRDk1K1rMSAFAI6zp7qOcejkaYqSgfZtaIMqp64wTADTKo+4/yqmVjRO074uWh3LqEOMEAI1ymvuPcmpb4wTtO8byUE5tZpwAoFE+7f6jnNrPOEH7PMleeTQtGmmcAKBRVnAHUk55oj0MgifZK4+uNEoA0EgPugcph24yStCeJSwO5dShxgkAGul09yDlkCfaQ5s2sziUU1saJwBopM+5BymnPNEe2vB5S0M5NDNa2DgBQCOt5i6knNrKOMHA/djSUA7dYJQAoNEedx9SDn3ZKMHAnW9pKIcmGSUAaLRz3YeUQ0cZJRi4OywN5dDORgkAGm1f9yHl0O+NEgxMT9J6aqTFoaxNME4A0Gibug8ph+41SjAwy1kYyqGnjBIANN6opPVAXHcjZenVaJhxgvnbzMJQDv3OKAEA4Rb3IuWQ19PBAHzWslAOfc8oAQDh5+5FyqEtjRLM32GWhSxcACAnu7sXKYf2Nkowf+dYFsqhJYwSABDWcS9SDv3UKMH83WRZKGOPGCMAoNfwpPUAM3ckZek3Rgnm7ynLQhnz8DsA4PU8BE9Zu9kYQf8WtCiUQwcbJQDgdf7b/UgZe9oYQf9WtSiUQzsYJQDgdSa6HymHFjRKMG+bWxLKoQlGCQB4nU3cj5RDqxklmLddLQll7IWoxygBAK8z1h1JOfR+owTzdoAloYzdYIwAgLl43D1JGdvdGMG8nWBJKGOnGiMAYC4uc09Sxg40RjBvF1sSyti3jBEAMBdHuycpYycZI5i3v1oSytg2xggAmIsvuicpY38wRjBvz1kSytjKxggAmIvN3JOUsbuMEczdghaEMvZKNMQoAQBzsaS7kjI21RjB3K1oQShjdxojAKAfz7svKWPDjRHMaQPLQRn7rTECAPrxF/clZWw5YwRz2tZyUMZ+aowAgH6c476kjL3LGMGcPmc5KGN7GyMAoB+HuS8pY1sZI5jTdy0HZeyDxggA6Ic/HilruxkjmNPPLAdlbBVjBAD0473uS8rYt4wRzOksy0EZmhUtYIwAgH6s6M6kjP3EGMGcLrcclKFHjRAAMB/pP/zPcm9Shn5pjGBOd1kOytB1RggAGIBH3ZuUoUuNEMzpCctBGTrXCAEAA3Cde5MydLMRgjlNtxyUoUlGCAAYgLPdm5ShB4wQvNFCFoMy9nVjBAAMwE/cm5ShZ4wQvNEyFoMytqMxAgAG4KvuTcpQ+gDFHmMEfdawGJSxTYwRADAAO7s3KWOLGiPos5GloIytZowAgAF4n3uTMraiMYI+W1sKSvwLKQBQvDXdm5SxtY0R9PmkpaAMTTdCAMAALeHupIy91xhBn30sBWXon0YIABigIdFM9ydl6CPGCPp8z1JQhm40QgBAGx53f1KGdjdC0OdwS0EZ+r0RAgDacJv7kzI00QhBn6MtBWXoDCMEALThf92flKFvGyHoc7KloAwda4QAgDb81v1JGTrYCEGfX1kKytAPjRAA0IbT3J+UoSOMEPT5jaWgDO1rhACANhzp/qTEt0IhF3+wFJShzxshAKANB7k/KUP/bYSgz9WWgjK0oxECANrwVfcnZejXRgj63GwpKEMfNEIAQBt2d39Shi4wQtDnb5aCMrSJEQIA2rCz+5My9EcjBH0eshSUoXWNEADQhu3cn5Sha40Q9HnSUlCG1jBCAEAbPuD+pAzdYoSgz1RLQRlayQgBAG3Y2P1JGbrDCEGf5ywFZWi8EQIA2vAu9ydl6C4jBH1eshSUoUWMEADQhre6PylD9xgh6DPNUlCGRhghAKANK7k/KUMPGCHoM8NSUIaGGSEAoA1vcX9Shh40QtBntqWgDPUYIQCgDcu6PylDDxshaOmxEJSh2UYIAGjTeHcoZehxIwQtwywEZWiGEQIA2rS4O5Qy9JQRgpaRFoIy9IoRAgDatJg7lDI01QhByygLQRl60QgBAG0a7Q6lDD1vhKBlIQtBGXrJCAEAbVrEHUo+zEN2IywEZWiaEQIA2uRr9srSM0YIWjwATx6ABwB00hLuUMrQFCMELV5NJ6+mAwA6yavplKUnjRD0mW0pKEM9RggAaMOy7k/K0GNGCPrMsBSUoWFGCABowwruT8rQI0YI+rxiKShDI4wQANCGCe5PytBDRgj6vGgpKENjjBAA0Ia3uT8pQ/8wQtDnOUtBGRpvhACANrzL/UkZutcIQZ+ploIyNMEIAQBteI/7kzJ0uxGCPk9aCsrQmkYIAGjDlu5PytCNRgj6PGgpKEPrGSEAoA3buz8pQ1cZIehzl6WgDG1qhACANuzi/qQMXWqEoM9NloIy9CEjBAC0YQ/3J2XoQiMEfa6yFJShnYwQANCGr7s/KUPnGiHoM9lSUIb2NEIAQBsOdn9Shs4wQtDnfEtBGdrPCAEAbTjK/UkZOtEIQZ8zLAVl6DAjBAC04XT3J2Xop0YI+pxkKShDxxshAKANF7g/KUMHGyHo46tOytKZRggAaMOV7k/K0L5GCPocZikoQ5cYIQCgDXe4PylDexkh6LO/paAM/cUIAQBteMr9SRn6lBGCPl+0FJShR4wQADBAQ6NZ7k/K0PbGCPrsYikoQzOiHmMEAAzAeHcnZez9xgj6bGUpKGPjjBEAMADvcG9SxtYzRtBnQ0tBGXurMQIABmAL9yZlbBVjBH3eaikoY5sZIwBgAD7h3qSMjTVG0Mdvl5S1nY0RADAA33BvUoZmR0OMEfQZaTEoY/saIwBgAI50b1KGnjFCMKdploMydJQRAgAG4H/cm5Sh+40QzOkxy0EZOt8IAQADcKN7kzJ0oxGCOd1hOShDNxkhAGAAnnBvUoYmGyGY02WWgzL0hBECAOZjRNJ6gJm7kwbbGcYI5vQry0EZSg/mkcYIAOjHyu5MythPjRHMaZLloIytbowAgH5s4b6kjH3bGMGcvm05KGMfNkYAQD/2cl9SxnY3RjCn3S0HZWyiMQIA+nGE+5IytrUxgjltbTkoYz8zRgBAP7xjXllbzxjBnNa1HJSxi4wRANCP292XlLG3GCOY0/KWgzJ2tzECAPrxkvuSMubtSTAXIywHZezVaJhRAgDmYll3JWVsqjGCeXvGklDGvJ4OAJgbr6VT1m4zRjBvfsekrH3UGAEAczHRPUkZ+70xgnm70JJQxr5rjACAufi5e5IydoIxgnk73pJQxs4wRgDAXFzpnqSMHWiMYN6+Y0koY7cYIwBgLqa4JyljexgjmLdPWRLK2CvREKMEALzOku5IyqEtjRLM22aWhHJoNaMEALzO+92PlENrGiWYtwmWhHJoJ6MEALzON92PlEMLGyWYt+HRbItCGTvcKAEAr/NL9yNl7CljBPP3uGWhjF1ijACA17nT/UgZu8EYwfxdZ1koY08aIwCg14LRTPcjZezXRgnm70zLQjm0rFECAML67kVK/IwTOuIQy0I59GGjBACEL7gXKYf2NEowf7taFsqhg40SABBOdi9SDnnHPAzAxpaFcmiyUQIAwl/di5RDqxolmL/xloVy6NmoxzgBQKONSbz2WNlLH6C4gHGCgXnB0lAOrW6UAKDRtnAfUg7dZ5Rg4G6xNJRDnzFKANBo33UfUg5dZJRg4M62NJRDxxolAGi0C9yHlEOTjBIM3I8sDeXQbUYJABorfXbOVPch5dDexgkGbndLQzmUPvBmMeMEAI30Dnch5dQWxgkGbiNLQzm1rXECgEbaxz1IObWCcYKBW9TSUE4dYZwAoJF+7R6kHHolGmKcoD2PWB7KoeuNEgA00mPuQcqhm40StO8PlodyaEa0sHECgEZZ1R1IOXW6cYL2TbI8lFMfNE4A0Cifc/9RTu1nnMASlt/NAwCd4ffyyqttjBO0792Wh3LqVuMEAI2RPqxsivuPcmolIwXt80R75fm++aWMFAA0wrruPsqpF6MeIwWD44n2yqtdjBMANMJ+7j3KqRuMEwzeZEtEOXWKcQKARvije4/cH6H7jrBElFMPGycAqL2FomnuPcqpiUYKBm8XS0Q5tpaRAoBa28Z9Rzm2qZGCwXurJaIc299IAUCtHe++o5xKH6A8xkjB4KWvFnnJMlFOXWOkAKDW/um+o5x6wDhBdtdYJsqpWdHiRgoAamktdx3l2HlGCrI7xjJRjn3KSAFALe3vnqMcO8BIQXaftUyUY2cZKQCoJd/mVJ5tY6Qgu3daJsqx56MRxgoAamXppPXAMncd5dUyxgqyGx69aqEoxz5srACgVvZyv1GOPWKkID9/sVSUYycbKQColUvdb5Rj/2OkID8nWCrKsaejYcYKAGphbDTD/UY59h1jBfnZw1JRzm1urACgFnZzr1HObWGsID9rWCrKuWONFQDUwgXuNcqx9EGKixoryE9P9Kzlohx7PBpqtACg0tIPXdPda5Rj9xgryN9ky0U59wFjBQCV5qeYyrtfGCvI3w8sF+XcKcYKACrtj+4zyrm9jRXkbyvLRTn3XDTSaAFAJS0dzXKfUc6tbbQgf2MtFxXQDkYLACrpK+4xyrnnE89UgsLcY8ko584xVgBQSde5xyjnLjVWUJxTLRnl3LRoMaMFAJWyqjuMCuggowXF+ZwlowLay2gBQKX80P1FBbSl0YLirGbJqICuN1oAUBlDoofdX5Rz6cMUxxgvKNZjlo0KaA2jBQCVsKV7iwroVqMFxTvLslEB/dhoAUAlnOneogI60mhB8b5o2aiAHo+GGS8AKLVFo1fcW1RAHzFeULw1LBsV1PbGCwBKbW/3FRXQ7Gis8YLi9URPWToqoIuNFwCU2u3uKyogv5eHDjrP0lFSzL/KrmS8AKCUNnJXUUH9zHhB50y0dFRQhxkvACil091TVFAfNV7QOWtZOiqoJ6LhRgwASmVc4sF3Ku6bmeOMGHROT++HLgtIRbSTEQOAUvma+4kK6mbjBZ13huWjgrrSeAFAaQyJ7nU/UUEdbsSg83a1fFRg7zRiAFAK27iXqMDeb8Sg85a1fFRgpxoxACiFS91LVFDpcxhGGjHojjstIRXU9GgpIwYAXbWmO4kKbLIRg+75qSWkAvu+EQOArjrBfUQF9k0jBt2zlSWkAns88Zo6AOiW9HVhL7uPqMDWNmbQPQslra9DW0Yqqt2NGQB0xQHuIUqK/aNNjzGD7rrMMlKB3WXRA0DHpX+weco9RAV2ijGD7vuWZaSC296YAUBH7eP+oYL7uDGD7lvDMlLBXWvMAKBjhkV/d/9Qgc2Ixhg1KIcHLCUV3CbGDAA6Yhf3DhXcFcYMyuNnlpIK7kJjBgAdcYt7hwpuX2MG5bGFpaQO9E6jBgCF2tZ9Qx1oTaMG5ZG+C/x5i0kFd75RA4BC3eS+oYJ70JhB+ZxjOangZkdrGTUAKMSH3TXUgY4yalA+n7Gc1IHONWoAUIjr3TPUgTY3alA+S0SzLCglxf91/u3GDQBy9SF3DHWgZ5LWqw+BErrGklIHOtuoAUCu/ux+oQ70S6MG5bWvJaWkM3+dX8e4AUAuPMFenerjxg3Ka4IlpQ71e+MGAJn1RLe5V6gDTY9GGzkot79YVupQ7zFuAJDJLu4TSvwhBui1v2WlDnWlcQOAQUsfRHaf+4Q61GeNHJTfapaVOthWRg4ABuUL7hHqUDOicUYOquEOS0sd6tZoiJEDgLYsFD3iHqEONdnIQXUcZGmpg+1u5ACgLQe4P6iDfc7IQXW83dJSB0v/sjDK2AHAgCwdvej+oKRzX7Ff3NhBtdxjeamDHWjkAGBATnRvUOIr9kA/DrW81MHSvzAsbewAoF/ptydnuTco8RV7oB9rWF7qcCcaOwDo1yXuC0p8xR4YgFstMXWw9C8N7zJ2ADBX27orqMNdaOyguva1xNThrol6jB4AvMGI6D73BHW4XYweVNfy0WyLTB3u00YPAN5gf/cDdbj0eUbeNgQVd4Vlpg73WDTa6AHAa5aLXnI/UIf7pdGD6vu8ZaYu9GOjBwCvOdO9QF1oa6MH1Tc2mm6hqcO9mrTeqAAATfY+dwJ1oaeiYcYP6uE3lpq60JWJh+EB0FzpQ+/udh9QFzrG+EF97GipqUvtYfwAaKjvuweoS61v/KA+RkbPWGzqQlOiJYwgAA2zajTNPUBd6E7jB/VzrOWmLnWa8QOgYS5z/qtL7Wv8oH7WtdzUxTY3ggA0xKec++pSM6OljSDU062WnLrU/dFCRhCAmlsqaf3EzNmvbnSREYT6+oolpy42yQgCUHPnOO/VxXY0glBfiyet939bdupGs6J3G0MAaupjznp1salJ63WIQI2da9mpi/0tab1dAQDqZGz0uHNeXexIYwj1t7Vlpy53mDEEoGZOc76ry61pDKH+hkaPWHjqYumTVjc0igDUxPbOdnW5a4whNMehlp663L3RKKMIQMWlT69/0rmuLrebUYTmWCFpPYzM8lM3O84oAlBxv3Weq8s9m3j9LzTOBZafStCHjCIAFbWHc1wl6FijCM2zleWnEvRoNM44AlAxE6IXnOMqQWsbR2ieIdHfLUCVoHONIwAVMiy62vmtEnStcYTm2s8SVEn6gnEEoCIOcW6rJH3SOEJzLRFNtwhVgl6O1jCSAJTcZomHCKscPRENN5LQbGdYhipJt0cjjSQAJZU+4+Vh57VK0qFGEtjYMlSJ8kRWAMrKa+hUlmZGyxtJIHWrpagStYORBKBkJjqfVaLOM5LA//GeVJWp56JVjCUAJfHv0avOZ5Wo9xlL4P+kv1N+0mJUibolWtBoAtBli0cPOZdVom43lsCb/cByVMk6yVgC0EVDooudxypZexhN4M3GJ15Tp/K1m9EEoEsOdA6rZKXfpPXmH2CuTrUkVbLS98+vYzQB6LAtE++TV/k6yGgC87KOJakS9o+k9ZtFAOiElaOpzl+VrGnRUsYT6M8VlqVK2GXRMOMJQMEWTloPGHP2qmydYjyB+dneslRJm2Q8ASjYOc5blbS1jCcwP+mTW++zMFXSPm1EASjId5yzKmmTjScwUHtamippr0QbGFEAcrZN4oF3Km+bG1FgoEZEj1mcKmmPR28xpgDkJP368gvOV5W0G40o0K79LE+VuNui0cYUgIzGRw85V1XidjSmQLvGRM9ZoCpxv4uGGlUABmnB6HrnqUrcfe46wGAdbomq5HnCPQCD0ROd7RxVydvTqAKDlX71bJpFqpK3j1EFoE3+YKGy90Q00qgCWfzcMlXJS58+/FGjCsAA7ePsVAX6llEFslo5mmmhquSlr6zbyLgCMB8fSbyCTuVvSuJBv0BOfmWpqiIH3+rGFYB5eHfS+sdfZ6bK3gHGFcjLGol/xVY1+nu0tJEF4E1Wi552TqoCpW+TWtTIAnk6y3JVRUrfQb+YkQWg1/LRg85HVaRDjSyQt/Sv87MtWFWka6KFjC1A4y0R/c25qIr0YrS4sQWK8GtLVhXqkmi4sQVorEWim5yHqlBHGFugKGsm/jqvanV2NMToAjRO+n7uy52DSqr1V/kljS5QpLMtW1Wsk6IeowvQGAtEFzj/VLEOM7pA0fx1XlXsWKML0AjDonOde6pYz0fjjC/QCf46ryo2yegC1NrQ6FfOO1Wwg40v0CnpX+e9d15V7D+ML0Atpc9HOdU5pwr2TOK98kCHnW75qqIdYnwBaiV9LsqJzjdVtO8ZYaDTVopetYDlAz0AXTTEB3lVuKej0cYY6IajLWFVuB8bYYBKS38jf5rzTBXua8YY6JalktY7MS1jVbUjjTFAJaVPrfewO1W5B6MRRhnopkMtY1W89LV13kMPUB3pe+S9fk5Vb1ejDHTbmGiKhayKd3LS+romAOU2MrrAuaWKd0fSet4DQNd901JWDTonGm6cAUprkehy55Vq0HbGGSiLBaOHLWbVoD9Eo4w0QOksHt3onFINuto4A2Wzu+WsmnRttJiRBiiN5aO7nE+qSRsbaaBs0t/93GJBqybdHi1jrAG6brWk9dRvZ5Pq0LlGGiirzS1p1aj08vhWYw3QNe+OnnYeqSa9Gq1irIEy+51lrRo1NXqPsQbouI9ErziHVKN+aqyBsls9mmFhq0ZNiz5mtAE6Zp9olvNHSb3+ODDWaANVcIylrZqVXiq/YrQBCtUTHe7MUQ37qvEGqiJ9fcyzFrdq2NHRUCMOkLv0NbdnO2dUw+6LhhtxoEr2tbxV0y6OFjHiALkZH13vfFFN286IA1UzInrAAldNuyNayZgDZLZW9JBzRTVtshEHqmp7S1w17sloI2MOMGjbRC84T1TT0gdCv82YA1X2e8tcNW56tIcxB2jbdxJPrFe9m2TMgapbtfcDj6WuOndstIBxB5ivhaNznBuqeU9Fixp3oA68ZkZN6MpoKeMOME8rJ61njjgzVPc+b9yBukj/Ff5hi10N6J/RekYeYA5bRlOdE2pAN0VDjDxQJztb7mpI06I9jTzAa9IPNQcmfh+vZpT+d76+sQfq6ApLXg3q9GiUsQcabPHoYueBGtTPjT1QV2+PZlr0alB3RqsbfaCBNkxaPz1yFqhJr6wda/SBOvuJZa+Glb5DeWejDzTIxOhV+18NazejD9Rd+jC8hyx8NbCTooWsAKDGxkW/te/VwK6KeqwAoAm2tfTV0O6K1rICgBraLPHmGjWzGdE7rACgSf7H8ldDS592/2UrAKiJYdEhiafVq7n9hzUANM1y0fMOADW4C6IlrQKgwlaKrrbP1eDuT/yEDmioiQ4BNbz0ybfbWQVABX02aT3g0y5Xk/uAVQA01ZDoBgeBlJwSjbYSgApIv1HkIXdSkvzCOgCabp3Eu+eltL9Hm1oJQIltn7S+UWRnq+k9HS1hJQAkyREOBem10gdIHZn4/R1QLmOj0+1oyTvlAd5swegeB4P0hgfqvNdqAEpgh+hxe1n6V5daCwBv9J5otgNC+lfpPPw8WsR6ALpgqegcu1h6Q+lDH1e0HgDmdJRDQpqjh6KtrQeggz6VtH4TbAdLb2xv6wFg7kZFDzgopLmW/oVsGWsCKNCq0R/tW2muXR71WBMA8/a+xNftpXn1fPTlpPVaR4C8jIi+H02zZ6W59lK0slUBMH/HOzSkfrsxepdVAeQg/Uf0u+1Vqd++alUADMzo6EEHhzTf19gdF42zMoBBWC460y6V5tvViW/EAbTlAw4PaUBNib4YDbU2gAFIv1K/f9L62rAdKvXfi9Eq1gZA+451iEgD7pak9YpHgHnZNrrfvpQG3BetDYDBWSjxOz6p3dKvza5kfQCv8/boEvtRaqt0Zjy9HiCD9aMZDhSprdInUh8RLWqFQKMtHZ2YtJ6xYTdKA++ZaFkrBCC7gxwq0qB6OpoYLWCNQKOk32w7MGn93tculNrvk9YIQD6GRdc7WKRBd2+0U+LrgtCE8/IL0SP2njToLrBKAPK1WvSyA0bK/JC8D1snUDvpa7M+Ed1nz0mZmxq901oByNc+Dhgpt3fmbmqlQC2kT6i/zV6TfKAHKLP0K8IXO2Ck3JocbWS1QCV9KPqzPSb5QA9QFeOjJxwwUq79MdrEeoFKSH8q4zkykg/0AJW0ZTTbASPl3p+izawYKKX06/Q32lNSVz7Qv8sKAsjPjx0uUqG/qU8/OHj6PXRX+nT69MF2t9pLkg/0AHWRvjfb1wylYrsz2jXxnnrotPQ98V+K/m4PST7QA9TRytFzDhep8P4ZfS0abe1AocZFB0RP2TuSD/QAdbezg0XqWOk/nk2KJlg9kKs1oxOjV+wZqfQ94wM9QH5OdrBIHW1W9JvofdYPDFr6TIptokvtFKmSH+jXtcYAshsV3eVgkbpS+mCuPaOFrSIYkLFJ62cr99ofkg/0ACTJGtFLDhapaz0fHR+tbR3BXG0UnZ74Kr3kAz0Ac/ikQ0UqRddFuyWtb81Aky0a7R3dbi9Itf5Av551B5Dd8Q4VqTS9kLSeafEeq4kGGRJtGZ2Z+Cu85AM9AAM2IrrRoSKVrvT3wd+NlremqKlVox9GD5t3yQd6AAZnxWiKQ0Uq7ZPwL48+n7QeBAZVtnT0laT10xLzLelZH+gBsts6mu1QkUrdq9EF0c6J39dTHenv4D8b/bH3H6fMsiQf6AFydqgDRapML0a/jnaKRltflEz6LZLdev/xabp5lTSAD/TrW50Agzc0utSBIlWuab0fmnZLfBWf7hkf7dV7jswwl5J8oAforHHRAw4UqbL9//buBOiusjDj+ElYEqJAAAEFCqQwIg5WBDcUkS2ALLIKsigQjBBW2UHZUrTVyqAsKlYrFMROW0EtA4hGB2VzpZRFRhEGSqMgSFglgSTT53iutiDL/dZ73nt/v5n/jDPtdGpyz3nvk+9+59Yj6vvp2LSeWxpj7I3pY+nGykfoJRn0AD33N+kpB4rUN0/F/2yanpZ2e2OEpqSd0hfT/a4vSWM06N/mdgswfHs6TKS+/D37K9PRaQO3ObpQfwf8m9NJVfMAu/muI0kGPUD7/Z3DROrrfpMuTh9Ma7rl0VF///vMqnnA4sOuE0k96jGDHmBkP5G50mEiDUz3pUs6Q87v2w+GCVXzq1WHd8b7b10Hkgx6gP6wfPqlw0QayB5Il6UT0rsr323fL/f0+vkJp1TNNyA84nUuyaAH6F+v69xIHSjSYLcw3VI1Dz+bkd5Ueahemy1TNU+FPjh9Jf0iLfY6llTooH+72zrA8OzQeSPvQJH0/3umM/AvSkelzdIKbpnjbpW0dTo+XZrucM+WZNAD8CcfcZBI6rL6I/r1992fnw5Nm3cGJyOzetV8TL7+h5P6ExLXVR5SJ2mwBv0mjgKA4fmCg0TSCHo8/Wf6evpk1Txsb4u0dlrKLbaalNbpDPZZ6az0jXRbesrrR5IMeoDhWjJd4yCRNAYtqpqvy/tx+vd0djo67Z22TBuklavmmzZKs0R6ddU8Ob4e6vum49I5nbH+s/Rg5XfaJcmgBxhD9dOQ73CQSOpR9e+C1x/jvzX9MP1HurgzjGd3/gFgRucfAXZO26RN08Zp/TQtrVk1H1mvB/arqub3/JdNy3X+88qd/1n9v7NW+uv0+s7/jXelbdMuaZ90UDo2nZnOq5qv96ufFF9/BP729FDnHyr83UnS6H7Sy6AHGIZpnTeoDhNJkiQZ9AAFeWea7yCRJElSDwf9O7wtBxi6fR0ikiRJMugBynOyQ0SSJEkGPUB5Pu8QkSRJUo8H/Tu9LQcYmvqror7hEJEkSZJBD1CWZdKNDhFJkiT1sCcMeoChWyn90iEiSZIkgx6gLPV30D/gEJEkSZJBD1CWjTo3UAeJJEmSejnoN/XWHGBotkrzHSKSJEky6AHKsmta6BCRJEmSQQ9QlgPTYoeIJEmSejzo3+WtOcDQHO0AkSRJkkEPUJ4zHSCSJEky6AHKc74DRJIkST3uSYMeYGgmpEsdIJIkSTLoAcqyZLrcASJJkqQWDPrNvD0H6N7S6QoHiCRJkgx6gLJMSt92gEiSJKkFg/7d3p4DdG9ymuMAkSRJkkEPUJYp6QcOEEmSJBn0AGV5ZbrBASJJkiSDHqAsy6WfOEAkSZLU454y6AGGZmr6sQNEkiRJLRj0m3t7DjC0n9D7yL0kSZIMeoDC1L9Df60DRJIkSQY9QFnqp9z72jpJkiS1YdBv4e05QPfq76H/tgNEkiRJBj1AWSalKxwgkiRJasGg39Lbc4DuLZUud4BIkiTJoAcoy5LpYgeIJEmSDHqAskxI5zpAJEmS1OP+YNADDN1sB4gkSZIMeoDyHJUWO0QkSZLU40G/lbfmAENzQFroEJEkSZJBD1CWXdJ8h4gkSZIMeoCy1L+r9LhDRJIkST0e9Ft7aw4wNBum3zhEJEmSZNADlGWtdKdDRJIkSQY9QFlWTDc4RCRJktTjQT/dW3OAoZmcLneISJIkyaAHKMvEdL5DRJIkST3saYMeYHhOTIsdJJIkSTLoAcqyd+W76CVJkmTQAxRnk/Sgg0SSJEk9HPTbeFsOMHRrp9sdJJIkSTLoAcqyXLraQSJJkqQeDvptvS0HGLol0nkOEkmSJBn0AOU5PC10mEiSJMmgByjLdmmew0SSJEk9GvTbeUsOMDyvTb9wmEiSJKkHzTfoAYZv2fQth4kkSZIMeoCyTEiz02IHiiRJkgx6gLLskh53oEiSJMmgByjL69NdDhRJkiT1YNC/x9txgOGbmq5yoEiSJMmgByjLxHRaWuRQkSRJ0jgP+u29HQcYmenpIYeKJEmSDHqAsqyRbnSoSJIkyaAHKMtS6bMOFUmSJI3zoN/BW3GAkduz8vV1kiRJMugBirNeutXBIkmSpHFqgUEPMDompy84WCRJkmTQA5Rnt/SIw0WSJEkGPUBZ1kzXO1wkSZI0ToN+R2/BAUbHEunMtMgBI0mSJIMeoCxbpLkOGEmSJBn0AGVZKX3TASNJkqRxGPQ7efsNMLoOqnwnvSRJkgx6gOJMS9c5ZCRJGlZXVL41Rup20L/XW2+A0TUxndS5yTpsJEl6+eal/Trn6EYGvWTQA/TShul2B40kSS/ZNWmN552hBr1k0AP01KR0dlrssJEk6Tk9lQ59iTPUoJcMeoCe2yzd5bCRJOmP3ZDW7eL83Nigl7rqGYMeYOxMqZqf0i9y4EiSBrT6p/FHV83zZbpl0EvdD/qdveUGGDubpDsdOJKkAevaqrufxr/YoJ/nz1Ay6AF6bXL6ZFro0JEk9XlPpMPShBGenQa9ZNADtMZb0m0OHUlSnzYnrT2K56ZBL3U/6HfxVhtgbC2dZle+l16S1D89nA4Yo3PzzQa9ZNADtMn66YcOHklS4X01rTzGZ6ZBL3U/6Hf1Nhtg7NW/T3hQ+r3DR5JUWPekbcbxzHyLQS8Z9ABtU/9E4xKHjySpgJ5N/1A1X8E63gx6yaAHaKWt0l0OIElSS7s+vaHHZ2U96B/1dyF1Neh38/YaYPzUX2N3ZprvEJIktaSH0oHVyL9uzqCXDHqAvrduutIhJEnqYYvSF9OKLTwnDXqp+1+NMegBemDH9GsHkSRpnPt5emvLz8i3GvSSQQ/QZpPSKekph5EkaYz7XZqZJhZyRhr0kkEP0Hprpq87jCRJY/RG/zNpaoHno0EvdX+d7+4tNUDv1E+9v8OBJEkapb6T1i/8bHybQS8Z9AAlWCIdkh50KEmShln9TJad++hsrAf9Y/5epa4G/R7eTgP01nLp79PTDiZJUpc9ko5OS/fhuWjQSwY9QFHWSv/iYJIkvUQL0tlphT4/Ew16yaAHKPINzA0OJ0nS86ofoLrOgJ2HBr3U3aB/n7fQAO1R35TvckBJ0sB3Y9p0QM/Ctxv0kkEPUKIl08FprkNKkgau+ltPdnYUGvTSEAb9nm4ZAO2yTDqhah545LCSpP7uvnRAmuj4+7NNDHrJoAco2dT0ifSkw0qS+q6Hq+YJ9ZMcdwa9ZNAD9KdV0/npGQeWJBXfvHRqWtbx1tWgf9xrRjLoAUo3LX25c8N2cElSWdWj9G+r5lNXGPTSaLfQoAcoY9R/qfKTekkqofpXpT6ZVnJ8GfSSQQ9AbW2jXpJaPeLPSqs4rgx6aZwH/V5uGQBlWCv9o1EvSa2ofmhb/fDSVzmeRt07DHrJoAfo11F/QZrvEJOkce/36bTK78Qb9FJ7Bv373TIAyvLq9KnKV/pI0nj0YDqx8nT68fROg14y6AH62fLp5PSAw0ySRr1fp0PSZMeNQS8Z9ACMhfqN5qx0twNNkkbcz6vmadFLOF5aMeif8JqUuhr0e7tlAJRric6/zN7sUJOkIfedtJWjxKCXDHoAemnz9M20yOEmSS9a/UDRC9MbHRsGvdQng34ftwyA/rBuOtebIEn6i4fazU6rOiaKsamzTDLoAQZR/bC8Y9K9DjlJA9xtaUaa5Fgw6CWDHoCS1L9Xv0e6zkEnaYDe1F6WtnQEGPTSgN379nXLAOhPb0ifr3z1j6T+/Sj9x9Nfud33nXcZ9JJBD0BVvbJqvkv5FoeepD7ops6b16Xd3g16SQY9wKDYJF1cNU94dgBKKqVH0+fShm7jAzfon/T6l162RQY9wOBYKR2X7nQASmpxN6YD0xS3bYNekkEPwHPVP63/UuV36yW1o0fSOWkDt2cMemnIg34/twyAwVP/5Gv/dG1a7ECUNI7Vv/N5VXpf5WvleGGbGfSSQQ/Ay1unap4Sfb9DUdIYdkc6Ib3GbReDXhrVQf8BtwyAwTYxbZ2+kh5zOEoahR6qmofZvdUtlmF4t0EvGfQADM3ktHu6vPI0fElDqx5fl6bt05Jupxj0kkEPQG9MTQel73cOCgempOf3bLoy7ZNe4baJQS/1bNB/0C0DgBeyejqmar5CyoPzJAP+O2lmepXbI+Mw6J9y3UkGPQCjM+yPTD+o/MReGrQB/yEDHoNeavWg398tA4BurJoOSXOq5munHKRS/1Q/N+OqzoBfye2OHtvcoJcMegDGRv3Tuvp37K9If3CYSkU2L321ar4Lflm3NQx6yaAHYLAsk3ZMF1S+x15qe/el89JWlafQY9BL/TToD3DLAGCk3pROTT+pPEBPasPvv1+bTkgbuD1RoC0MesmgB2D8vTrNSP+aHnbQSuPSA+nCqvn4/PJuQxj0kkEPACMxMb05fbRqflK4wKErjUpPV83T549PG6YJbjcY9NJAD/oD3TIAGEuvSDukc9KdDl+p6+pfX7k5fSptnSa7nTAgtjToJYMegPZZLe1dNQ/SM+6l5473/+r8w9dula+Ow6D3LSpSd4N+hlsGAL2wStqjap68fWvlYXoarDdgfxrvuxrvYNBLI/jHYIMegJ6rB80u6ax0fdX8nrCDWv3QE2lOmp22rTy0Dgx6yaAHoI8tVTUP1DsiXZrudmCrkDdVv0pfTYdVzQPrlnA5g0EvGfQADLKV007pE1XzdO+HHODqcXPTN6rmWxymp6kuUxhVWxn0kkEPQH9aI703nZ6+me5zoGuMuiddnk7r/KPSai4/MOillg36g9wyAChZ/fv39Vd61d/LfUnVfM2XN4LqtvqrsX6aLkxHpc0qv+cOvba1+7hk0AMwmCamdarmp/gnGfmqmocs3tx5LdSvifqn7dPSBJcLGPSSQQ8AZYz87dORVfNVeVenu9Kz3hAU38L063RV+mzVPJSu/t32tTp/94BBL/XroP+QWwYAg2rJztDftjMCP5O+VTU/zX3YG4XWVD8I8Sfp39Kn0iGdv7PXVs23IgD9ZbpBLxn0ADASU9J6VfOTovoJsvVD+P4pfTfdmR7xRmLE1X+Gt1bNpyW+1PkzPqgz1jdIy3oZwsAO+qfdI6WuBv1MtwwAGLqlq+aJ+xtXzUf5D0wnprPTpWlO1fykv35S+ry0qM/fUNT/He9OP6uarxf8WtV84uHkzj+I7JDektZMk718AINeMugBoAT1w9fq7ypfO22Ytki7dobuUZ3Re2Y6K30+XVQ1Hy+/In0v3ZRuSbdXzacDftX5h4L6K/v+Jz1QNR9Lr3/i/XinemD/Pv0u/bZqvjv9v9O9VfPsgNs64/v6zj8+XJku6wzxL3fGeP3/0wlpVvpA2qVqPrFQD/N104qV31EHDHrJoAcAADDopSEN+g+7ZQAAAG2xjUEvGfQAAIBBL/XzoD/YLQMAAGiLbQ16yaAHAAAMesmgBwAAMOilVg36Q9wyAACAttguzTfWJIMeAAAw6KV+HfSz3DIAAACDXjLoAQAADHrJoAcAAAx6SS806A91ywAAANriPQa9ZNADAAAGvWTQAwAAGPRSqzLoAQCA1tjeoJcMegAAwKCX+rnD3DIAAIC22MGglwx6AADAoJcMegAAgHEa9AsMNamrDnfLAAAADHrJoAcAADDopXHoCLcMAACgLXY06CWDHgAAMOglgx4AAMCgl1rVkW4ZAABAW+xk0EsGPQAAYNBL/dxRbhkAAEBbvNeglwx6AADAoJcMegAAAINealUfccsAAADaNOifMdQkgx4AADDopX7taLcMAACgLXY26CWDHgAAMOglgx4AAMCgl1rVMW4ZAABAW+xi0EsGPQAAYNBL/dyxbhkAAEBb7GrQSwY9AABg0EsGPQAAgEEvtarj3DIAAIC22M2glwx6AADAoJf6uePdMgAAgDYN+mcNNcmgBwAADHrJoAcAADDopdZ0glsGAADQFrsb9JJBDwAAGPSSQQ8AAGDQS63qRLcMAACgLfYw6CWDHgAAMOilfu4ktwwAAKAt3mfQSwY9AABg0EsGPQAAgEEvtaqT3TIAAIC22NOglwx6AADAoJf6uY+6ZQAAAG0a9AsNNcmgBwAADHrJoAcAADDopdb0MbcMAACgLfYy6CWDHgAAMOilfu4UtwwAAKAt3m/QSwY9AABg0EsGPQAAgEEvtapT3TIAAIC22Nuglwx6AADAoJf6udPcMgAAgLbYx6CXDHoAAMCglwx6AAAAg15qVae7ZQAAAG2xr0EvGfQAAIBBLxn0AAAABr3Uqk5yywAAANo06BcZalJXHe6WAQAAGPRSWS1O+7tlAAAAbbGfQS911TNpS7cMAADAoJfKal5a3y0DAAAw6KWyuiet6JYBAAC0xQcMeqmrrk4T3TIAAACDXvId9AAAAMP2QYNeetnqa8QD8QAAAINeKqz701S3CwAAwKCXyuprbhUAAEDb7G/QSy/b7m4VAACAQS+V1dy0nFsFAADQNgcY9NJLdp7bBAAAYNBL5T3dfkO3CQAAwKCXyup7bhEAAEBbHWjQSy/aDm4RAACAQS+V1R1polsEAADQVjPSYuNN+ov2cnsAAAAMeqmsbksT3B4AAACDXiqr3dwaAAAAg14qq+vcFgAAAINeKq+N3BYAAACDXiqrf3ZLAAAASnGQQS/9sT+k5d0SAAAAg14qq4PdDgAAgJJ8yKCXqpvcCgAAAINeKq9pbgUAAIBBL5XVsW4DAABAiWYa9BrgbnQLAAAADHqprOrX/apuAQAAQKk+bNBrQNvX5Q8AABj0Ulld5NIHAAAMeqms5rrsAQCAfnCwQa8By1fUAQAABr1UWHu75AEAgH5xiEGvAekclzsAAGDQS2V1g0sdAAAw6KWyetRlDgAA9KNZBr36vNVd5gAAgEEvldXWLnEAAKBfHWrQq0+b6fIGAAAMeqmsPu7SBgAABmHQG4Dqpy52WQMAAAa9VFbfdUkDAAAGvVRWN7ucAQCAQXKYIag+6F6XMgAAYNBLZfWYyxgAADDopbJa4BIGAAAG1eFGoQptscsXAAAw6KXyWsrlCwAAGPSSMQ8AAFCUI4xDVT5mDwAAYNBLY9R8lysAAMD/OdJQVAHNc6kCAAAY9Cqre1ymAAAABr3K6qcuUQAAgBd2lNGolnaNyxMAAMCgV1ld6NIEAAB4aR8xHtWyznBZAgAAGPQqqxkuSQAAAINeZbW5yxEAAKB7RxuSakGruBQBAAAMepXTQy5BAACA4TnGqFSPutblBwAAYNCrrD7t0gMAADDoVVa7u+wAAABG7lgDU+PYai45AAAAg17ldLdLDQAAYHQdZ2xqjLvAZQYAAGDQy+/LAwAAYNBrjHo2reDyAgAAGDvHG58a5ea4rAAAAAx6ldUslxQAAMD4OMEI1Si0KL3G5QQAAGDQy0fsAQAAMOg1Ru3nEgIAAOiNE41SDaPH0hSXDwAAgEGvcvqcywYAAMCgVzktTuu5ZAAAANrhJENVXXS1SwUAAMCgV1lNd5kAAAC0z8kGq16km1weAAAABr3K6j0uDQAAAINe5fQjlwQAAEAZPmrEqtOmLgcAAACDXuV0mcsAAACgPB8zaAe2BWldlwAAAIBBr3Ka7aUPAABg0KucfpkmedkDAACU7xQjdyBanLb0cgcAADDoVU7nepkDAAD0n1MN3r7tF2kZL3EAAACDXuU8vX4jL20AAACDXuV0qJc0AADAYDjNCO6LLvFSBgAAMOhVTrekKV7GAAAAg+d0o7jI5qY1vHwBAAAMepXRk5UH3gEAAGDQF9MzaXsvVwAAAP7kDGO51S1Me3qZAgAAYNCX0eI0w8sTAACAF3Oy8dyqFhnyAAAAdOOIqvlpsDHd+9+R99F6AAAAurZ/Z0wa1b17ar2H3QEAADBkW6V5hnVPvkfe188BAAAwbOunewzsceuWtIaXHQAAACO1Yrra0B7zLklTvNwAAAAYLRPT6VXzdHXDe3RbkGZ5iQEAADBWtkz3G+Cj1p2V348HAABgHExNXzPER1T91X/npmW8nAAAABhPu1fNk9eN86H1q6r5hAMAAAD0xHLpvMrv0nfT/HRGmuRlAwAAQBtsmL5nsL9ol6V1vUwAAABoox3THcb7n/tR2tTLAgAAgLarv8Zur3TbAI/4m9J2XgoAAACUZkLaLV1fDc4T6q9O0/3VAwAA0A82Thenp/twxD+WPpde568ZAACAfrR8OrhqPoZe8oCvn94/J+2XpvhrBQAAYFBMS8emG6vmI+ptH/DPpu+mWek1/voAAAAYdKumfdNFaW6LBvzd6YK0e1rBXxMAAAC8uPqn9nunc9IN6dFxGO4PpWvTp6vmwX2r+WsAAACAkVk9bZ1mpo9XzQP16o+935zurZoH0S2onvuR/fo/z0/z0j3pp+madGE6I81Im6dV/PECAABAby2dlvLH8NL+FxIFhKMMk5f+AAAAAElFTkSuQmCC) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i13.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i13.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i13.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i13.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i15.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i15.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i15.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i15.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i16.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i18.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i20.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i21.TmwAttachmentsComponent, selector: "tmw-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "tablePaginatorSize", "allowVideo", "allowVideoCompression", "videoFormatsNotAllowed", "allowedMBForFile", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "fileSizeLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "eqpTableSearchText", "deletedMessageLabel", "undoDeleteLabel", "undoDeleteTimeoutMs", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "audioPreviewErrorMessage", "uploadMode", "quickMode", "allowClipboardPaste", "allowCameraCapture", "pdfWorkerSrc", "dragDropTooManyFilesErrorMessage", "cropDialogClass"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment", "onComponentLoaded"] }, { kind: "component", type: i22.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i23.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: i25.AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: i26.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: i27.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: i28.DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: i29.TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: i30.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }, { kind: "component", type: i31.ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
2452
+ EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}::ng-deep .mdc-button__label{display:inline-flex;align-items:center}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table{margin-top:16px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i13.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i13.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i13.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i13.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i15.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i15.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i15.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i15.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i16.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i18.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i20.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i21.TmwAttachmentsComponent, selector: "tmw-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "tablePaginatorSize", "allowVideo", "allowVideoCompression", "videoFormatsNotAllowed", "allowedMBForFile", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "fileSizeLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "eqpTableSearchText", "deletedMessageLabel", "undoDeleteLabel", "undoDeleteTimeoutMs", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "audioPreviewErrorMessage", "uploadMode", "quickMode", "allowClipboardPaste", "allowCameraCapture", "pdfWorkerSrc", "dragDropTooManyFilesErrorMessage", "cropDialogClass"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment", "onComponentLoaded"] }, { kind: "component", type: i22.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i23.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: i25.AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: i26.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: i27.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: i28.DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: i29.TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: i30.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }, { kind: "component", type: i31.ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
2453
2453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, decorators: [{
2454
2454
  type: Component,
2455
- args: [{ selector: "eqp-dynamic-module-configurator", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA/MAAAPzCAYAAAD7/FyjAABXfklEQVR42uzdd7hddZno8XWSkARCCCSU0AQCAygooJRBEFBEFKQoygPYKBYQNFZEURABhZHRINWhDaAIUgZFECIiDE2qVJGqIB0SOiSk3Psu9hkPkOTk7LPW2nuVz+d5vv/cZ+78cS/v+/vtnL3XShIAAAAAABqtJxoWjYxGRQtFI3r/z3r8Pw8AAAC0J/1gvUy0RrRRtHX0yWif6HvR4dHR0cnRr6LfRH+Iro5ujv4WPRQ9GU2NnoteiqZFM6LZ0f+bT7N7/2dfiV7s/d8xtfd/54PRXdFN0VXR5Oj86IzopOio6LBo/+iL0S7RVtGG0Vuj8b3/cAAAAACltWC0YrRBtG30uei7vR96z4ou7/1w/EQ0fQAftOtS+o8Lj0V3RJf1/sPEpOjb0e69/4ixbrS8D/8AAADkKf2a+qrR5tGu0QHRCdHF0V+T1l+0/59y6Zno9ujC6PjoO9Gnos2iCdFw/zkCAACQSn8/vlzvB8bPJq2vj5+TtL5i/pQP2KUq/WnA49F10ZnRIb3/wLJx0vpqPwAAADWzRO8H9s9HP05avwFPv/79sg/JtemF6C/R2dGPktZX+dNnEizqP38AAIByWzzaNGk9mO2Y6E9J66FuPuw2u0eS1oP80t/sp880eHc0xrgAAAB0VvqKtbWS1tesj/ShXRk/5B+RtJ7Knz6Nf4jxAgAAyC59Wvy/R3tF/xXdmLSelO7DqIoofVXfNUnrmx17RO9MPHwPAACgX0OjdXo/uP93dGc00wdMdblXk9bv8U/o/YC/RtJ6eCIAAEAjpU8h/0h0eHRF0vqrqA+PqkLPJq2v6P8g2ioaa5wBAIA6Sv+S+Y7oS0nr1WIP+kComnVPdGrSesjeqkYeAACoovRBYunvjb+atF4FN8WHPTWsx6KzktbbFXw1HwAAKKX09+7rR/tGFyatryH7QCf19VR0bjQxab2NwYd7AACgKyZEe0bnRc/4sCa11RPRGUnrFYvLWCcAAEBRxkQfjY6L7vdhTMq19O0NP01aD9RbyLoBAAAGK/0a8LrRgUnr3dteEyd1punRZdG3ktbv7QEAAPqV/kVw26T1Tu1HfKiSSlH6TZifRVtEw60pAAAgtVzS+u17+uC6V3xwkkrd89E50WeiJawvAABoljWT1tfn/+LDkVTZZkVXJ623SEyw1gAAoJ7S974fGv3NhyCplqX/OLd/tJp1BwAA1ZU+wG6D6MfRAz7oSI3qjuig6O1WIQAAVMP6SesVVw/5QCMpuidpfSvHk/EBAKBkVk1af4W71wcXSf10a9L6jf3y1iYAAHTH0tFXoxt9QJHUZrOjK6LPR4tZpwAAUKzR0a7RH5LWk6x9KJGUtenRb6Ido5HWLAAA5GfT6NToJR88JBXY1OiYaF1rFwAABme56LvRfT5gSOpC6e/rvxItbh0DAED/RiStr7penPgavaTyfA3/3GjraKg1DQAAfVaPJkVTfHCQVOIeSVqvuVvB2gYAoKkWSFp/hf+TDwiSKlb6zaELoq2iIdY5AABNkL7f+eDoMR8IJNWgB6JvRUtY7wAA1E1P9MGk9fqnmS7/kmpY+tv6X0YbW/kAAFRd+l74iYkn0ktq3pPw90i8tx4AgIpZMfpJ9JxLvaQG92T0g2i8YwEAgDLbJDov8VV6SXrzV/BPjdZxTAAAUBbDo09HN7mwS9J8uyLaPvEUfAAAumSRaN/oUZdzSWq79Fkie0YjHCcAAHTCUtGPomddxiUpc+lrOvfr/QdSAADI3YTouOgVl29Jyr30H0gPSzwsDwCAnKwV/SrxUDtJ6kTpP5geH63s+AEAYDD+PbrIxVqSutLM3n9IfZvjCACAgX6Iv8RFWpJK0azorGgNxxMAAHOzoQ/xklTaZke/9qEeAID/8+5osouyJFXmQ/3Z0ZqOLwCAZkr/Ev8HF2NJ8qEeAIDye3t0gYuwJNXmN/WnRys53gAA6im96P2i9+LnAixJ9Wp6dFS0lOMOAKAexkdHR6+67EpS7XsxOiQa4/gDAKim9CJ3aO/FzgVXkprVlOib0YKOQwCAahgefb33IudCK0nN7uFo92iI4xEAoLw+Ft3v8ipJelO3RJs7JgEAymX96CqXVUnSfErfZrK6YxMAoLtWiM5IWu8bdkmVJA2kGdEx0eKOUQCAzlok+lH0ikupJGmQPZu0HpI3wrEKAFCsnqT1IKMnXEIlSTmVPmtlO0csAEAx1o3+7NIpSSqo30erOm4BAPKR/qbxhGiWi6YkqeCmR4dHCzt+AQAGZ2i0TzTV5VKS1OHS99Pv7CgGAGjPxknrncAulJKkbnZ59HbHMgBA/9Kv1J/q8ihJKlEzo58kvnoPADBX6VPqn3ZplCSVtIeibR3XAAAtqyetrzG6KEqSqtB50bKObwCgqUZEP0haTw52OZQkVannoy9HQxznAECTvC+622VQklTxbojWcawDAHW3WHSKy58kqUalD8g7IlrQMQ8A1NF20aMufZKkmnZP9B7HPQBQF+OiM1zyJEkNaHb0s2iU4x8AqLKPRU+43EmSGtb90XtdAwCAqlkyOttlTpKUNPuv9MdFo10LAIAq2Cl6yiVOkqTXejD6gOsBAFBWY6OzXNokSZprx0QLuS4AAGWyZfSIi5okSf12d7S+awMA0G3pXxiOcTmTJGnAzYgOioa5RgAA3ZD+ZeFulzJJkgbV9dFqrhMAQKekf0n4ftL6y4LLmCRJg+/laB9XCwCgaKtE17l8SZKUaxdHS7lmAABF+ET0vAuXJEmF9ETSeqAsAEAuFo5OdcmSJKnwZkf/ES3g+gEAZLFO4iF3kiR1uvQnbRNcQwCAwfhKNN2FSpKkrvRctLPrCAAwUItHv3OJkiSpFJ0cjXI9AQD6s3H0sIuTJEml6q5oDdcUAGBuvp54d7wkSWXtxaT1ZhkAgNeMic5zSZIkqRIdF41wfQGAZlsrutfFSJKkSnVDtKJrDAA0027Ryy5EkiRVsinRVq4zANAcI6OTXIIkSap8s6NDo6GuNwBQbytEN7v8SJJUqy6NxrnmAEA9bRY95cIjSVIteyB6h+sOANTLlxKvnZMkqQmvr/u4aw8AVF/66pqTXW4kSWpUP4yGuAYBQDUtE/3ZhUaSpEZ2YTTGdQgAqmXD6FEXGUmSGt3d0equRQBQDen746e7wEiSpOi5aGvXIwAor57oMJcWSZL0pmZGE12VAKB8ForOc1mRJEn9dGw0zLUJAMohfdDdTS4okiRpAF2SeDAeAHTdOtHDLiaSJKmN7oxWco0CgO7YLnrRhUSSJA2iJ6ONXKcAoLO+Ec1yEZEkSRmaFn3CtQoAijckOtrlQ5Ik5dTs6NuuWABQnJGJJ9ZLkqRiOqb3jwYAQI7GRle5aEiSpAL7n2hB1y4AyMcK0V0uGJIkqQNdE41z/QKAbNaOHnWxkCRJHexv0YquYQAwOFtEz7tQSJKkLvRY9E7XMQBoz87Rqy4SkiSpi70Qbe5aBgADs1fiHfKSJKkcpe+i/4jrGQD0b3+XBkmSVLJmRru6pgHA3B3hsiBJkkra7OgrrmsA0GdodKJLgiRJqkAHu7oBQJIMj85xMZAkSRXqqKjHNQ6AphoVTXYhkCRJFewX0TDXOQCaZnR0pYuAJEmqcOdFC7jWAdAUY6JrXQAkSVINuiAa4XoHQN0tFt3g4JckSTXq4mikax4AdTUu+osDX5Ik1bBLo4Vc9wComyWj2xz0kiSpxl0RLezaB0BdjI/+6oCXJEkN6OpoEdc/AKpumehuB7skSWpQ10WLugYCUFXjfZCXJEkN/kDvL/QAVE76G3lfrZckSU3uqsRv6AGokPSp9R52J0mSlCSXJ55yD0AFpO+R9/o5SZKkN762znvoASitMdENDmxJkqQ5+n00wnURgLIZHV3roJYkSZpnv40WcG0EoCxGRVc6oCVJkubbudEw10cAum14NNnBLEmSNOBOi3pcIwHolqHROQ5kSZKktvuZqyQA3XKSg1iSJGnQHeQ6CUCnHeEAliRJytxE10oAOuU7Dl5JkqRcmh19xvUSgKLt5dCVJEnKtZnRdq6ZABRl52iWA1eSJCn3pkXvc90EIG9bRK86aCVJkgrr+Wht104A8rJO7+HikJUkSSq2R6MVXD8ByGqF3kPF4SpJktSZ7orGuoYCMFhjew8Th6okSVJnuyoa6ToKQLvSw+NqB6kkSVLXOi8a4loKwEAN6T08HKKSJEnd7ShXUwAG6mgHpyRJUmn6luspAPPzDQemJElSqZod7eyaCsC8bBfNcmBKkiSVrleiDV1XAXiz9F3yLzooJdXgr1czei+96U57KZrW+3822//7SKp4T0QrurYC8H+WiR52QErqQtOjf0Y3Rr+PzoiOjX4Y7Rt9Ptox+mC0SbRutEa0UjQ+WiQaEQ2Legaw73p6/2fT/ztjev93TIjWjNaLNo0+FO0U7RntFx0WHR+dGV0S/SV6tPcfCPz/oaROd0fv7gOg4RaKbnIwSsq52b0feK+Lzo0mRV/v/WCefihfLVq04vsz/YeBcdFbo82S1u9Z03+ASJ88fX7vbn3CfwuSCij9x8+hrrEAzZVeRL2CTlKW32/eGf02+mm0d9L6C/oq0QJW7L+MjFaPPhxNjH4WXRTdHb3qvyNJg8wr6wAa7DAHoaQBlP72/Ibo1KT1eqRtopWjIdZoZsN6P+h/NPpu0vqZwS29/1Divz1J82tvaxSgeXZzAEqaS49Ev4sOjnZIWr8n77EyOy79h5L0pwjpb/cPT1q/1X/Sf5+S3tTMaEsrE6A50teaTHcASo3vqd4P7t/rvQwuaT2W3rJJ6+v66T+2TI6e9d+x1Pieif7NegSov/TJ9Y86+KRG/vUm/ap8+iC69EFtE6zDWki/NZF+Tf8zSestALclXsEnNbG/RqOtRID6Sl/F9GcHntSI0nerXxkdmrT+6u6S1xyLRdtGR0TXJ16hJzWl8xM/iwKorZMddFJtm5W0XgN3SNJ6TdpIK49eCyettwykH+5vTfzlXqpz37fyAOrnSw44qXbdHx2XtB5Ut5g1xwAtFe0SnRI9bI6kWpX+Y9321hxAfWyW+JqlVIfSd5JfFn09aT3pHPKwVrR/dG3S+oaHWZOq3fPR26w2gOpbIWk9sdrhJlWzKUnr/e47RmOsNAq2RPSp6KzeDwRmUKpm90SLWmkA1ZX+ZvZmB5pUudI3TqRPJt88GmaV0SXpQ1PT1+Cd3PuPSmZTqlYXJR6IB1BZJzrIpMr0YPSf0btdviihYb3/uJT+I9Pj5lWqTN+zvgCqZzcHmFT6nur9cLSxD/BUyNDoA0nrAXrPmWOp9G862cLaAqiO9GFGLzvApFL2QnR69KHEV+ipvvTnXOnbFM6JpplvqbT/cLycdQVQfukDsu51cEmle1XQ5dFnolHWFDWVvh7xi9H1Zl4qXddEC1hTAOV2ngNLKk3/iA6KJlhNNMwa0RGJ39dLZWqS1QRQXl93UEldb0Z0btL6jaLfwdN06U9Jto8uTlrfULEjpO72cWsJoHw27v0Q4aCSutNDSeupwUtbRzBX6TdUDouetC+krvV8tJp1BFAei0cPO6CkrvwWPv2L47ZJ6wnfwPwNj3aKrrRDpK50W9J6eCUAJXCBg0nqaC8mrVfKrW79QCbvjE6NptsrUkc71voB6L6JDiSpow+0+0a0qNUDuVoq+n7igXlSJ/uo1QPQPesk/pohdaKboh0TX6WHoqVfwd89usvekQpvavQWaweg8xaO7nYQSYU2OdrcuoGOS98EkT4F/1p7SCq0K/1DNUDn/bcDSCqkWdGZSeu3vED3bRJdaDdJhfUDawagcz7h4JFyb2Z0WrSqFQOllP4D2/l2lVTIP2JvZsUAFG+VpPWOUIePlE8zolN6Zwsov7Wjc5PWqyHtMCmf0lccj7NeAIozLLrOgSPl9iH+xGiC1QKV9PbobB/qpdw631oBKM73HTRS5tKLf/qbeF+nh3pIv37/e7tNyqXdrRSA/K2XtP6S6KCRBl/6EK21rROopfRBeVfZc1Km0p9yrmSdAORnocRr6KQspRf8ja0SaISto1vtPSnT6+qGWCUA+TjGwSINqnujHawQaJz0g0j6deFH7UFpUO1njQBkt6UDRWq7KdHEaAErBBptVHRg9KK9KLXV9MTP0gAyGRs94kCR2rp8HBEtan0Ar7N00np7xSx7Uhpwd0QjrA+AwTnLQSINuIsST6gH+rdudK19KQ24/7Q2ANq3kwNEGlD3RdtYGcAA9USfiR6zP6UBvc51E2sDYOCWjJ5ygEj99lK0f+IrgMDgLJK0fpbzqn0qzfdhsgtaGQADc7aDQ+q330ZvsSqAHKyRtF7FZbdK8+4nVgXA/H3MgSHNs39GH7EmgJylX73/bNJ6E4ZdK81Z+vDIDa0KgHlbPHrCgSHN0cxoUjTamgAKtER0mp0rzbW7opHWBMDcneGgkOboluhd1gPQQZtH99u/0hwdZj0AzGk7B4Q0xzvjD4gWsB6ALhgVHZl4N7305m/KrWc9APRZLPGKHOn1XR+taTUAJbBR9Dd7WfpXt0fDrQaAllMcDNJrvRLtGw21FoASSX8nnH69eKY9Lb3WQdYCQJK814EgvdZN0dusBKDE0qd532tfS6/9FG51KwFoshHR3Q4ENbz0L10HJ34bD1RD+lv64+xuKbkiab3WEaCRDnIQqOHdE21gFQAV9KHoUXtcDW93qwBoovSrSdMdAmpwx0cLWQVAhY2LzrXP1eCmREtYBUCTpF9JusIBoIY2NdrBGgBqZM/oZftdDe10KwBokt0tfjW0/42WtwKAGlojab2yy65XE9vcCgCaIP0q0hRLXw0rfcjd9xOvnAPqLX2F3bF2vhrYPb3//QPU2qkWvhrWY9FmRh9okPSnRM/Z/2pYBxt9oM7eY9GrYf0pGm/0gQb6t+gW54Aa1LRoFaMP1NFQh7oa1OzoR4mv1QPNtmB0sjNBDepCYw/U0d4WvBpS+rT6Dxt5gH/ZLfG0ezUndwCgVhbv/YBjwavu3RZNMPIAc1gn+odzQg3ovmiEkQfq4gSLXQ3o7GiUcQeYp/Qf9y9zXqgBfde4A3WwXjTLUleNS//7/o5RBxiQYdEkZ4dq3kvRW4w7UGU90XUWumrcs9FWRh2gbZ+OXnGOKKn3N/YAKmt3i1w1Lv1N3GrGHGDQNoged56oxm1uzIEqGh09YYmrpl0RjTPmAJmlX0W+zbmimnZH4jW1QAX9yAJXTTslGm7EAXKT/gHgQueLatqeRhyokhUSv4NT/Zodfct4AxQi/eulB+OpjqXfVF3EiANVcYbFrZo1Lfq40QYo3JcSb8FR/fqR0QaqYP2k9RdMi1t1aWq0idEG6JiPJr7hp3qV/ve8gtEGyu4qC1s16qHobcYaoOM2iqY4h1SjzjDWQJl9zKJWjbo1WsZYA3TN6tHfnUeqSek3Vzcw1kAZpU/3vt+iVk1KXz3nYTUA3bd04tV1qk9XG2mgjL5mQasmXRCNNNIApbFYdI3zSTXJA3WBUhmT+F2b6tEvomFGGqB0RkWXOKdUg+511wDK5FCLWTXo6KjHOAOUVvqTvrOdV6pBXzDOQBmMj160lFXxDjXKAJUwJDrJuaWK90i0oHEGuu1oC1kV73vGGKBS0m9RHev8UsXb1ygD3bRS9KplrAq3nzEGqKxJzjFVuPR5U2OMMdAtp1vEqnBfM8IAlfdj55kqnJ/5AV3x9miWJayK9iUjDFAbhzjXVNHS504tZYSBTrvAApYP8gCUhDfrqMpv0wHomA0tXlU0X60HqC9fuVcVS58/tZLxBTplssWrCvYtowtQe0c671TBTjS6QCe828JVBTvA6AI0xnHOPSXV++v8ikYXKJq/ysuTYgEos/Q99Cc7/1SxTjC6QJH8Vl4eKgNAFQyNznUOKvHXeYDXXGLRqkL9Mmn9dQaAZhoR/cF5qAr1X8YWKMK/W7CqUOmrE4cZW4DGGxVd61xUUp2/zq9gbIG8XWzBqiJdHo00sgD0Ghvd7nxU4q/zQAP5q7yq0q3RIkYWgDdZJnrQOanEX+eBhrnIYlUFerD3sgYAc/O2aKrzUhXoeOMK5GEtC1UVaGrvJQ0A+rNJNM25qZKX/jc63rgCWf3KQlUFDrxNjCoAA/TxaLbzUyXvcKMKZDEhmmmZqsTN7r2UAUA7vuIMVcl7LhpjVIHBOs4iVcnbz5gCMEhHO0dV8r5tTIHBWCp6xRJViTvFmAKQwdDEq3dV7h5PvG4XGIQfWqAqcVdEw40pABmlX2O+07mqErenMQXakb6n+1nLUyXtvmicMQUgJytFTzpfVeJ7z1BjCgzUvhanSlr6j0yrG1EAcrZRNN05q5K2kxEFBiL96vKjlqZK2KxoKyMKQEE+66xVSbvZeAID8WkLUyXtO8YTgIJ5k4/K2mbGE5ifmyxLlbBfG00AOmCB6ErnrkrY+cYT6M8mFqVK2G3RKOMJQIekr+f9p/NXJSv9ueHKxhOYl/MsSpWsqdEEowlAh60XTXMOq2QdaTSBuVmp91/8LEqVpdnRh40mAF2yl7NYJeuFaIzRBN7sJxakStaPjCUAXfYL57FK1teMJfB6o6PnLEeVqMujoUYTgC5Ln9lyp3NZJerv7kjA6020GFWiHovGG0sASmL1pPX1Zme0ytIOxhJI9UT3WYoqSTMT71EFoHx2dkarRF1pJIHUBy1ElaiDjCQAJXWyc1olak0jCfzGMlRSnn9l9hswAMoq/f38Xc5rlaRjjCQ02/JJ62vNFqLK8D75txhJAEpu7cT751WOno8WNpLQXAdbhCpJHzWOAFSEBwerLH3BOEIzLZC0nhpuEarbHW8cAaiYC5zfKkG3GEVopo9bgCpB90QLGUcAKmbJ6EnnuErQhsYRmudPlp+6XPq8hg2MIgAVtb2zXCXoNKMIzfJWi08l6GCjCEDFneI8V5dLH8g4zihCc0yy+NTlbkpaz20AgCpbJPqHc11d7htGEZphRDTF0lMXeyV6m1EEoCY2jWY539XF7jKG0Aw7WnjqcvsaQwBq5kjnu7qcB+FBA1xs2amLXR8NNYYA1Ez6Zpb7nfPqYicYQ6i35RJfA1P3mh6taQwBqKn3RbOd9+pSzyde9wu1tr9Fpy52gBEEoOZ+7rxXF/u0EYR66onus+TUpW5JPL0egPpLn27/kHNfXepyIwj1tKkFpy41M3qXEQSgIbZ29qtLpT/zWNkIQv2casGpS00yfgA0zDnOf3WpQ4wf1Mvo6CXLTV3on73//QFAkyybtB5I5i6gbty9hhhBqI9dLTZ1qY8YPwAa6svuAepS7zd+UB9/sNTUhX5r9ABosPSvoze6D6gLnWz8oB6WTrxbXp0v/VnHW4wfAA33LvcwdaHnopHGD6rvqxaautD+Rg8AXnO8e4G60A5GD6rvBstMHe6+aITRA4DXjIumuB+ow51n9KDaVrXI1IW2MXoA8AZfdD9Qh5sWLWr0oLoOssjU4S4ydgAwh6HRLe4J6nB7GD2ornstMXWw6Unr2yAAwJze466gDneZsYNqWt8CU4c7wtgBQL/Ocl9QB0vfpLCMsYPq+akFpg6WPtjH77IAoH8rJa3fMrs7qFN9zdhBtfRED1le6mATjR0ADMgR7g3qYNcYOaiWDSwudbD02QwLGDsAGJD0m2xeVadONTta1thBdfzY4lIH28HIAUBbJro/qIN9ychBdTxgaalDXWXcAKBt6TfavHVIneoKIwfVsI6FpQ62sZEDgEHZ2T1CHSp9qv1SRg7K71ALSx3qQuMGAIOWPrD4FvcJdag9jRyU398sK3Wg9GEqaxs3AMjkw+4U6lCXGjcotzUtKnWoM40bAOTiavcKdaAZ0TjjBuV1oEWlDh0G/2bcACAXm7pbqEPtYdygvP5iSakDnWTUACBXk90v1IEuMGpQTstZUEo681f5CcYNAHK1kTuGOtDL0YLGDcpnTwtKHegUowYAhfije4Y60NZGDcrnd5aTCm5mtIpRA4BCbOKuoQ50vFGDclkoesVyUsGdZtQAoFB/ct9Qwf3TmEG5bGsxqeBmRasaNQAo1HvdOdSB1jFqUB7/ZSmp4LxXHgA6w3vnVXTfM2ZQDj3Ro5aSEv+CCwB14BuXKrrrjRmUw7oWkgpusjEDgI5J/1Bzp/uHCmx2tJRRg+470EJSwb3fmAFAR+3q/qGC292YQfddYxmpwG4yYgDQcQskraeOu4uoqM4yZtBdY5LWu78tJBXVjsYMALria+4hKrCnoyHGDLrnoxaRCuwf0VBjBgBdsUj0vPuICmxdYwbdc5wlpAL7hhEDgK6a5D6iAvuOEYPuud8SUkG9GC1qxACgq1aOZrmXqKD+ZMSgOyZYQCqwY40YAJTCb9xLVFDTo1FGDDpvTwtIBZW+e3R1IwYApfA+dxMV2NZGDDrvPMtHBXWx8QKAUrnV/UQFdaTxgs5KnzD+rOWjgtrWiAFAqfhGporqr8YLOmt9i0cF9VDidXQAUDajoxfcU1RQyxgx6Jx9LR0V1AHGCwBK6efuKSqonY0XdM6Flo4KaEbiX2YBoKzWdldRQR1vvKAzhkTPWToqoHONFwCU2nXuKyqgu4wWdMY7LRwV1BbGCwBKbTf3FRXUksYLivdVy0YF9I+ox3gBQKmNSjwIT8X0MeMFxTvfslEBHWS0AKASTnZvUQEdZbSgWOlfTqdYNsq52dEE4wUAlfAedxcV0G1GC4r1DotGBXS50QKASrnP/UVJ/n/cGWe0oDhfsmhUQJ8xWgBQKd91f1EBbW+0oDhnWjLKufQhOqOMFgBUyvLRLPcY5dwRRguK86Alo5w73VgBQCVd7h6jnLvKWEExlrZgVEAfMloAUEmfd49Rzr0cLWC0IH8fsWCUc09Fw4wWAFTS2OhV9xnl3LpGC/J3uOWinDvWWAFApV3gPqOc28dYQf6usFyUcxsbKwCotF3cZ5RzvzRWkK+h0UuWi3IsfZhij9ECgEpL30jzonuNcux+YwX5WsdiUc79p7ECgFo4271GObeEsYL87GmpKOfebawAoBZ2cq9Rzm1jrCA/p1gqyrFHE1+xB4C6GB1Nc79Rjh1qrCA/d1oqyjFPsQeAevFUe+XZZCMF+VgwmmmpKMc2N1YAUCu7ud8ox54yUpCPDSwU5djT0TBjBQC1Mjaa4Z6jHFvOWEF2e1kmyrFTjRQA1NJl7jnKMQ/Bgxz8l2WiHNvRSAFALX3dPUc5dqCRguxutEyUU69GY4wUANTSau46yrHzjRRkk/622atGlFeXGSkAqLV73XeUUw8aJ8hmLYtEOfZ1IwUAtTbJfUc5Ns5IweDtaokox1YzUgBQa1u47yjH3m+kYPCOtESUU/cbJwCoveHRi+49yqlvGikYvD9ZIsqp440TADTCRe49yqnTjRMM3pOWiHJqB+MEAI3wVfce5dTNxgkGZ3ELRDk1K1rMSAFAI6zp7qOcejkaYqSgfZtaIMqp64wTADTKo+4/yqmVjRO074uWh3LqEOMEAI1ymvuPcmpb4wTtO8byUE5tZpwAoFE+7f6jnNrPOEH7PMleeTQtGmmcAKBRVnAHUk55oj0MgifZK4+uNEoA0EgPugcph24yStCeJSwO5dShxgkAGul09yDlkCfaQ5s2sziUU1saJwBopM+5BymnPNEe2vB5S0M5NDNa2DgBQCOt5i6knNrKOMHA/djSUA7dYJQAoNEedx9SDn3ZKMHAnW9pKIcmGSUAaLRz3YeUQ0cZJRi4OywN5dDORgkAGm1f9yHl0O+NEgxMT9J6aqTFoaxNME4A0Gibug8ph+41SjAwy1kYyqGnjBIANN6opPVAXHcjZenVaJhxgvnbzMJQDv3OKAEA4Rb3IuWQ19PBAHzWslAOfc8oAQDh5+5FyqEtjRLM32GWhSxcACAnu7sXKYf2Nkowf+dYFsqhJYwSABDWcS9SDv3UKMH83WRZKGOPGCMAoNfwpPUAM3ckZek3Rgnm7ynLQhnz8DsA4PU8BE9Zu9kYQf8WtCiUQwcbJQDgdf7b/UgZe9oYQf9WtSiUQzsYJQDgdSa6HymHFjRKMG+bWxLKoQlGCQB4nU3cj5RDqxklmLddLQll7IWoxygBAK8z1h1JOfR+owTzdoAloYzdYIwAgLl43D1JGdvdGMG8nWBJKGOnGiMAYC4uc09Sxg40RjBvF1sSyti3jBEAMBdHuycpYycZI5i3v1oSytg2xggAmIsvuicpY38wRjBvz1kSytjKxggAmIvN3JOUsbuMEczdghaEMvZKNMQoAQBzsaS7kjI21RjB3K1oQShjdxojAKAfz7svKWPDjRHMaQPLQRn7rTECAPrxF/clZWw5YwRz2tZyUMZ+aowAgH6c476kjL3LGMGcPmc5KGN7GyMAoB+HuS8pY1sZI5jTdy0HZeyDxggA6Ic/HilruxkjmNPPLAdlbBVjBAD0473uS8rYt4wRzOksy0EZmhUtYIwAgH6s6M6kjP3EGMGcLrcclKFHjRAAMB/pP/zPcm9Shn5pjGBOd1kOytB1RggAGIBH3ZuUoUuNEMzpCctBGTrXCAEAA3Cde5MydLMRgjlNtxyUoUlGCAAYgLPdm5ShB4wQvNFCFoMy9nVjBAAMwE/cm5ShZ4wQvNEyFoMytqMxAgAG4KvuTcpQ+gDFHmMEfdawGJSxTYwRADAAO7s3KWOLGiPos5GloIytZowAgAF4n3uTMraiMYI+W1sKSvwLKQBQvDXdm5SxtY0R9PmkpaAMTTdCAMAALeHupIy91xhBn30sBWXon0YIABigIdFM9ydl6CPGCPp8z1JQhm40QgBAGx53f1KGdjdC0OdwS0EZ+r0RAgDacJv7kzI00QhBn6MtBWXoDCMEALThf92flKFvGyHoc7KloAwda4QAgDb81v1JGTrYCEGfX1kKytAPjRAA0IbT3J+UoSOMEPT5jaWgDO1rhACANhzp/qTEt0IhF3+wFJShzxshAKANB7k/KUP/bYSgz9WWgjK0oxECANrwVfcnZejXRgj63GwpKEMfNEIAQBt2d39Shi4wQtDnb5aCMrSJEQIA2rCz+5My9EcjBH0eshSUoXWNEADQhu3cn5Sha40Q9HnSUlCG1jBCAEAbPuD+pAzdYoSgz1RLQRlayQgBAG3Y2P1JGbrDCEGf5ywFZWi8EQIA2vAu9ydl6C4jBH1eshSUoUWMEADQhre6PylD9xgh6DPNUlCGRhghAKANK7k/KUMPGCHoM8NSUIaGGSEAoA1vcX9Shh40QtBntqWgDPUYIQCgDcu6PylDDxshaOmxEJSh2UYIAGjTeHcoZehxIwQtwywEZWiGEQIA2rS4O5Qy9JQRgpaRFoIy9IoRAgDatJg7lDI01QhByygLQRl60QgBAG0a7Q6lDD1vhKBlIQtBGXrJCAEAbVrEHUo+zEN2IywEZWiaEQIA2uRr9srSM0YIWjwATx6ABwB00hLuUMrQFCMELV5NJ6+mAwA6yavplKUnjRD0mW0pKEM9RggAaMOy7k/K0GNGCPrMsBSUoWFGCABowwruT8rQI0YI+rxiKShDI4wQANCGCe5PytBDRgj6vGgpKENjjBAA0Ia3uT8pQ/8wQtDnOUtBGRpvhACANrzL/UkZutcIQZ+ploIyNMEIAQBteI/7kzJ0uxGCPk9aCsrQmkYIAGjDlu5PytCNRgj6PGgpKEPrGSEAoA3buz8pQ1cZIehzl6WgDG1qhACANuzi/qQMXWqEoM9NloIy9CEjBAC0YQ/3J2XoQiMEfa6yFJShnYwQANCGr7s/KUPnGiHoM9lSUIb2NEIAQBsOdn9Shs4wQtDnfEtBGdrPCAEAbTjK/UkZOtEIQZ8zLAVl6DAjBAC04XT3J2Xop0YI+pxkKShDxxshAKANF7g/KUMHGyHo46tOytKZRggAaMOV7k/K0L5GCPocZikoQ5cYIQCgDXe4PylDexkh6LO/paAM/cUIAQBteMr9SRn6lBGCPl+0FJShR4wQADBAQ6NZ7k/K0PbGCPrsYikoQzOiHmMEAAzAeHcnZez9xgj6bGUpKGPjjBEAMADvcG9SxtYzRtBnQ0tBGXurMQIABmAL9yZlbBVjBH3eaikoY5sZIwBgAD7h3qSMjTVG0Mdvl5S1nY0RADAA33BvUoZmR0OMEfQZaTEoY/saIwBgAI50b1KGnjFCMKdploMydJQRAgAG4H/cm5Sh+40QzOkxy0EZOt8IAQADcKN7kzJ0oxGCOd1hOShDNxkhAGAAnnBvUoYmGyGY02WWgzL0hBECAOZjRNJ6gJm7kwbbGcYI5vQry0EZSg/mkcYIAOjHyu5MythPjRHMaZLloIytbowAgH5s4b6kjH3bGMGcvm05KGMfNkYAQD/2cl9SxnY3RjCn3S0HZWyiMQIA+nGE+5IytrUxgjltbTkoYz8zRgBAP7xjXllbzxjBnNa1HJSxi4wRANCP292XlLG3GCOY0/KWgzJ2tzECAPrxkvuSMubtSTAXIywHZezVaJhRAgDmYll3JWVsqjGCeXvGklDGvJ4OAJgbr6VT1m4zRjBvfsekrH3UGAEAczHRPUkZ+70xgnm70JJQxr5rjACAufi5e5IydoIxgnk73pJQxs4wRgDAXFzpnqSMHWiMYN6+Y0koY7cYIwBgLqa4JyljexgjmLdPWRLK2CvREKMEALzOku5IyqEtjRLM22aWhHJoNaMEALzO+92PlENrGiWYtwmWhHJoJ6MEALzON92PlEMLGyWYt+HRbItCGTvcKAEAr/NL9yNl7CljBPP3uGWhjF1ijACA17nT/UgZu8EYwfxdZ1koY08aIwCg14LRTPcjZezXRgnm70zLQjm0rFECAML67kVK/IwTOuIQy0I59GGjBACEL7gXKYf2NEowf7taFsqhg40SABBOdi9SDnnHPAzAxpaFcmiyUQIAwl/di5RDqxolmL/xloVy6NmoxzgBQKONSbz2WNlLH6C4gHGCgXnB0lAOrW6UAKDRtnAfUg7dZ5Rg4G6xNJRDnzFKANBo33UfUg5dZJRg4M62NJRDxxolAGi0C9yHlEOTjBIM3I8sDeXQbUYJABorfXbOVPch5dDexgkGbndLQzmUPvBmMeMEAI30Dnch5dQWxgkGbiNLQzm1rXECgEbaxz1IObWCcYKBW9TSUE4dYZwAoJF+7R6kHHolGmKcoD2PWB7KoeuNEgA00mPuQcqhm40StO8PlodyaEa0sHECgEZZ1R1IOXW6cYL2TbI8lFMfNE4A0Cifc/9RTu1nnMASlt/NAwCd4ffyyqttjBO0792Wh3LqVuMEAI2RPqxsivuPcmolIwXt80R75fm++aWMFAA0wrruPsqpF6MeIwWD44n2yqtdjBMANMJ+7j3KqRuMEwzeZEtEOXWKcQKARvije4/cH6H7jrBElFMPGycAqL2FomnuPcqpiUYKBm8XS0Q5tpaRAoBa28Z9Rzm2qZGCwXurJaIc299IAUCtHe++o5xKH6A8xkjB4KWvFnnJMlFOXWOkAKDW/um+o5x6wDhBdtdYJsqpWdHiRgoAamktdx3l2HlGCrI7xjJRjn3KSAFALe3vnqMcO8BIQXaftUyUY2cZKQCoJd/mVJ5tY6Qgu3daJsqx56MRxgoAamXppPXAMncd5dUyxgqyGx69aqEoxz5srACgVvZyv1GOPWKkID9/sVSUYycbKQColUvdb5Rj/2OkID8nWCrKsaejYcYKAGphbDTD/UY59h1jBfnZw1JRzm1urACgFnZzr1HObWGsID9rWCrKuWONFQDUwgXuNcqx9EGKixoryE9P9Kzlohx7PBpqtACg0tIPXdPda5Rj9xgryN9ky0U59wFjBQCV5qeYyrtfGCvI3w8sF+XcKcYKACrtj+4zyrm9jRXkbyvLRTn3XDTSaAFAJS0dzXKfUc6tbbQgf2MtFxXQDkYLACrpK+4xyrnnE89UgsLcY8ko584xVgBQSde5xyjnLjVWUJxTLRnl3LRoMaMFAJWyqjuMCuggowXF+ZwlowLay2gBQKX80P1FBbSl0YLirGbJqICuN1oAUBlDoofdX5Rz6cMUxxgvKNZjlo0KaA2jBQCVsKV7iwroVqMFxTvLslEB/dhoAUAlnOneogI60mhB8b5o2aiAHo+GGS8AKLVFo1fcW1RAHzFeULw1LBsV1PbGCwBKbW/3FRXQ7Gis8YLi9URPWToqoIuNFwCU2u3uKyogv5eHDjrP0lFSzL/KrmS8AKCUNnJXUUH9zHhB50y0dFRQhxkvACil091TVFAfNV7QOWtZOiqoJ6LhRgwASmVc4sF3Ku6bmeOMGHROT++HLgtIRbSTEQOAUvma+4kK6mbjBZ13huWjgrrSeAFAaQyJ7nU/UUEdbsSg83a1fFRg7zRiAFAK27iXqMDeb8Sg85a1fFRgpxoxACiFS91LVFDpcxhGGjHojjstIRXU9GgpIwYAXbWmO4kKbLIRg+75qSWkAvu+EQOArjrBfUQF9k0jBt2zlSWkAns88Zo6AOiW9HVhL7uPqMDWNmbQPQslra9DW0Yqqt2NGQB0xQHuIUqK/aNNjzGD7rrMMlKB3WXRA0DHpX+weco9RAV2ijGD7vuWZaSC296YAUBH7eP+oYL7uDGD7lvDMlLBXWvMAKBjhkV/d/9Qgc2Ixhg1KIcHLCUV3CbGDAA6Yhf3DhXcFcYMyuNnlpIK7kJjBgAdcYt7hwpuX2MG5bGFpaQO9E6jBgCF2tZ9Qx1oTaMG5ZG+C/x5i0kFd75RA4BC3eS+oYJ70JhB+ZxjOangZkdrGTUAKMSH3TXUgY4yalA+n7Gc1IHONWoAUIjr3TPUgTY3alA+S0SzLCglxf91/u3GDQBy9SF3DHWgZ5LWqw+BErrGklIHOtuoAUCu/ux+oQ70S6MG5bWvJaWkM3+dX8e4AUAuPMFenerjxg3Ka4IlpQ71e+MGAJn1RLe5V6gDTY9GGzkot79YVupQ7zFuAJDJLu4TSvwhBui1v2WlDnWlcQOAQUsfRHaf+4Q61GeNHJTfapaVOthWRg4ABuUL7hHqUDOicUYOquEOS0sd6tZoiJEDgLYsFD3iHqEONdnIQXUcZGmpg+1u5ACgLQe4P6iDfc7IQXW83dJSB0v/sjDK2AHAgCwdvej+oKRzX7Ff3NhBtdxjeamDHWjkAGBATnRvUOIr9kA/DrW81MHSvzAsbewAoF/ptydnuTco8RV7oB9rWF7qcCcaOwDo1yXuC0p8xR4YgFstMXWw9C8N7zJ2ADBX27orqMNdaOyguva1xNThrol6jB4AvMGI6D73BHW4XYweVNfy0WyLTB3u00YPAN5gf/cDdbj0eUbeNgQVd4Vlpg73WDTa6AHAa5aLXnI/UIf7pdGD6vu8ZaYu9GOjBwCvOdO9QF1oa6MH1Tc2mm6hqcO9mrTeqAAATfY+dwJ1oaeiYcYP6uE3lpq60JWJh+EB0FzpQ+/udh9QFzrG+EF97GipqUvtYfwAaKjvuweoS61v/KA+RkbPWGzqQlOiJYwgAA2zajTNPUBd6E7jB/VzrOWmLnWa8QOgYS5z/qtL7Wv8oH7WtdzUxTY3ggA0xKec++pSM6OljSDU062WnLrU/dFCRhCAmlsqaf3EzNmvbnSREYT6+oolpy42yQgCUHPnOO/VxXY0glBfiyet939bdupGs6J3G0MAaupjznp1salJ63WIQI2da9mpi/0tab1dAQDqZGz0uHNeXexIYwj1t7Vlpy53mDEEoGZOc76ry61pDKH+hkaPWHjqYumTVjc0igDUxPbOdnW5a4whNMehlp663L3RKKMIQMWlT69/0rmuLrebUYTmWCFpPYzM8lM3O84oAlBxv3Weq8s9m3j9LzTOBZafStCHjCIAFbWHc1wl6FijCM2zleWnEvRoNM44AlAxE6IXnOMqQWsbR2ieIdHfLUCVoHONIwAVMiy62vmtEnStcYTm2s8SVEn6gnEEoCIOcW6rJH3SOEJzLRFNtwhVgl6O1jCSAJTcZomHCKscPRENN5LQbGdYhipJt0cjjSQAJZU+4+Vh57VK0qFGEtjYMlSJ8kRWAMrKa+hUlmZGyxtJIHWrpagStYORBKBkJjqfVaLOM5LA//GeVJWp56JVjCUAJfHv0avOZ5Wo9xlL4P+kv1N+0mJUibolWtBoAtBli0cPOZdVom43lsCb/cByVMk6yVgC0EVDooudxypZexhN4M3GJ15Tp/K1m9EEoEsOdA6rZKXfpPXmH2CuTrUkVbLS98+vYzQB6LAtE++TV/k6yGgC87KOJakS9o+k9ZtFAOiElaOpzl+VrGnRUsYT6M8VlqVK2GXRMOMJQMEWTloPGHP2qmydYjyB+dneslRJm2Q8ASjYOc5blbS1jCcwP+mTW++zMFXSPm1EASjId5yzKmmTjScwUHtamippr0QbGFEAcrZN4oF3Km+bG1FgoEZEj1mcKmmPR28xpgDkJP368gvOV5W0G40o0K79LE+VuNui0cYUgIzGRw85V1XidjSmQLvGRM9ZoCpxv4uGGlUABmnB6HrnqUrcfe46wGAdbomq5HnCPQCD0ROd7RxVydvTqAKDlX71bJpFqpK3j1EFoE3+YKGy90Q00qgCWfzcMlXJS58+/FGjCsAA7ePsVAX6llEFslo5mmmhquSlr6zbyLgCMB8fSbyCTuVvSuJBv0BOfmWpqiIH3+rGFYB5eHfS+sdfZ6bK3gHGFcjLGol/xVY1+nu0tJEF4E1Wi552TqoCpW+TWtTIAnk6y3JVRUrfQb+YkQWg1/LRg85HVaRDjSyQt/Sv87MtWFWka6KFjC1A4y0R/c25qIr0YrS4sQWK8GtLVhXqkmi4sQVorEWim5yHqlBHGFugKGsm/jqvanV2NMToAjRO+n7uy52DSqr1V/kljS5QpLMtW1Wsk6IeowvQGAtEFzj/VLEOM7pA0fx1XlXsWKML0AjDonOde6pYz0fjjC/QCf46ryo2yegC1NrQ6FfOO1Wwg40v0CnpX+e9d15V7D+ML0Atpc9HOdU5pwr2TOK98kCHnW75qqIdYnwBaiV9LsqJzjdVtO8ZYaDTVopetYDlAz0AXTTEB3lVuKej0cYY6IajLWFVuB8bYYBKS38jf5rzTBXua8YY6JalktY7MS1jVbUjjTFAJaVPrfewO1W5B6MRRhnopkMtY1W89LV13kMPUB3pe+S9fk5Vb1ejDHTbmGiKhayKd3LS+romAOU2MrrAuaWKd0fSet4DQNd901JWDTonGm6cAUprkehy55Vq0HbGGSiLBaOHLWbVoD9Eo4w0QOksHt3onFINuto4A2Wzu+WsmnRttJiRBiiN5aO7nE+qSRsbaaBs0t/93GJBqybdHi1jrAG6brWk9dRvZ5Pq0LlGGiirzS1p1aj08vhWYw3QNe+OnnYeqSa9Gq1irIEy+51lrRo1NXqPsQbouI9ErziHVKN+aqyBsls9mmFhq0ZNiz5mtAE6Zp9olvNHSb3+ODDWaANVcIylrZqVXiq/YrQBCtUTHe7MUQ37qvEGqiJ9fcyzFrdq2NHRUCMOkLv0NbdnO2dUw+6LhhtxoEr2tbxV0y6OFjHiALkZH13vfFFN286IA1UzInrAAldNuyNayZgDZLZW9JBzRTVtshEHqmp7S1w17sloI2MOMGjbRC84T1TT0gdCv82YA1X2e8tcNW56tIcxB2jbdxJPrFe9m2TMgapbtfcDj6WuOndstIBxB5ivhaNznBuqeU9Fixp3oA68ZkZN6MpoKeMOME8rJ61njjgzVPc+b9yBukj/Ff5hi10N6J/RekYeYA5bRlOdE2pAN0VDjDxQJztb7mpI06I9jTzAa9IPNQcmfh+vZpT+d76+sQfq6ApLXg3q9GiUsQcabPHoYueBGtTPjT1QV2+PZlr0alB3RqsbfaCBNkxaPz1yFqhJr6wda/SBOvuJZa+Glb5DeWejDzTIxOhV+18NazejD9Rd+jC8hyx8NbCTooWsAKDGxkW/te/VwK6KeqwAoAm2tfTV0O6K1rICgBraLPHmGjWzGdE7rACgSf7H8ldDS592/2UrAKiJYdEhiafVq7n9hzUANM1y0fMOADW4C6IlrQKgwlaKrrbP1eDuT/yEDmioiQ4BNbz0ybfbWQVABX02aT3g0y5Xk/uAVQA01ZDoBgeBlJwSjbYSgApIv1HkIXdSkvzCOgCabp3Eu+eltL9Hm1oJQIltn7S+UWRnq+k9HS1hJQAkyREOBem10gdIHZn4/R1QLmOj0+1oyTvlAd5swegeB4P0hgfqvNdqAEpgh+hxe1n6V5daCwBv9J5otgNC+lfpPPw8WsR6ALpgqegcu1h6Q+lDH1e0HgDmdJRDQpqjh6KtrQeggz6VtH4TbAdLb2xv6wFg7kZFDzgopLmW/oVsGWsCKNCq0R/tW2muXR71WBMA8/a+xNftpXn1fPTlpPVaR4C8jIi+H02zZ6W59lK0slUBMH/HOzSkfrsxepdVAeQg/Uf0u+1Vqd++alUADMzo6EEHhzTf19gdF42zMoBBWC460y6V5tvViW/EAbTlAw4PaUBNib4YDbU2gAFIv1K/f9L62rAdKvXfi9Eq1gZA+451iEgD7pak9YpHgHnZNrrfvpQG3BetDYDBWSjxOz6p3dKvza5kfQCv8/boEvtRaqt0Zjy9HiCD9aMZDhSprdInUh8RLWqFQKMtHZ2YtJ6xYTdKA++ZaFkrBCC7gxwq0qB6OpoYLWCNQKOk32w7MGn93tculNrvk9YIQD6GRdc7WKRBd2+0U+LrgtCE8/IL0SP2njToLrBKAPK1WvSyA0bK/JC8D1snUDvpa7M+Ed1nz0mZmxq901oByNc+Dhgpt3fmbmqlQC2kT6i/zV6TfKAHKLP0K8IXO2Ck3JocbWS1QCV9KPqzPSb5QA9QFeOjJxwwUq79MdrEeoFKSH8q4zkykg/0AJW0ZTTbASPl3p+izawYKKX06/Q32lNSVz7Qv8sKAsjPjx0uUqG/qU8/OHj6PXRX+nT69MF2t9pLkg/0AHWRvjfb1wylYrsz2jXxnnrotPQ98V+K/m4PST7QA9TRytFzDhep8P4ZfS0abe1AocZFB0RP2TuSD/QAdbezg0XqWOk/nk2KJlg9kKs1oxOjV+wZqfQ94wM9QH5OdrBIHW1W9JvofdYPDFr6TIptokvtFKmSH+jXtcYAshsV3eVgkbpS+mCuPaOFrSIYkLFJ62cr99ofkg/0ACTJGtFLDhapaz0fHR+tbR3BXG0UnZ74Kr3kAz0Ac/ikQ0UqRddFuyWtb81Aky0a7R3dbi9Itf5Av551B5Dd8Q4VqTS9kLSeafEeq4kGGRJtGZ2Z+Cu85AM9AAM2IrrRoSKVrvT3wd+NlremqKlVox9GD5t3yQd6AAZnxWiKQ0Uq7ZPwL48+n7QeBAZVtnT0laT10xLzLelZH+gBsts6mu1QkUrdq9EF0c6J39dTHenv4D8b/bH3H6fMsiQf6AFydqgDRapML0a/jnaKRltflEz6LZLdev/xabp5lTSAD/TrW50Agzc0utSBIlWuab0fmnZLfBWf7hkf7dV7jswwl5J8oAforHHRAw4UqbL9//buBOiusjDj+ElYEqJAAAEFCqQwIg5WBDcUkS2ALLIKsigQjBBW2UHZUrTVyqAsKlYrFMROW0EtA4hGB2VzpZRFRhEGSqMgSFglgSTT53iutiDL/dZ73nt/v5n/jDPtdGpyz3nvk+9+59Yj6vvp2LSeWxpj7I3pY+nGykfoJRn0AD33N+kpB4rUN0/F/2yanpZ2e2OEpqSd0hfT/a4vSWM06N/mdgswfHs6TKS+/D37K9PRaQO3ObpQfwf8m9NJVfMAu/muI0kGPUD7/Z3DROrrfpMuTh9Ma7rl0VF///vMqnnA4sOuE0k96jGDHmBkP5G50mEiDUz3pUs6Q87v2w+GCVXzq1WHd8b7b10Hkgx6gP6wfPqlw0QayB5Il6UT0rsr323fL/f0+vkJp1TNNyA84nUuyaAH6F+v69xIHSjSYLcw3VI1Dz+bkd5Ueahemy1TNU+FPjh9Jf0iLfY6llTooH+72zrA8OzQeSPvQJH0/3umM/AvSkelzdIKbpnjbpW0dTo+XZrucM+WZNAD8CcfcZBI6rL6I/r1992fnw5Nm3cGJyOzetV8TL7+h5P6ExLXVR5SJ2mwBv0mjgKA4fmCg0TSCHo8/Wf6evpk1Txsb4u0dlrKLbaalNbpDPZZ6az0jXRbesrrR5IMeoDhWjJd4yCRNAYtqpqvy/tx+vd0djo67Z22TBuklavmmzZKs0R6ddU8Ob4e6vum49I5nbH+s/Rg5XfaJcmgBxhD9dOQ73CQSOpR9e+C1x/jvzX9MP1HurgzjGd3/gFgRucfAXZO26RN08Zp/TQtrVk1H1mvB/arqub3/JdNy3X+88qd/1n9v7NW+uv0+s7/jXelbdMuaZ90UDo2nZnOq5qv96ufFF9/BP729FDnHyr83UnS6H7Sy6AHGIZpnTeoDhNJkiQZ9AAFeWea7yCRJElSDwf9O7wtBxi6fR0ikiRJMugBynOyQ0SSJEkGPUB5Pu8QkSRJUo8H/Tu9LQcYmvqror7hEJEkSZJBD1CWZdKNDhFJkiT1sCcMeoChWyn90iEiSZIkgx6gLPV30D/gEJEkSZJBD1CWjTo3UAeJJEmSejnoN/XWHGBotkrzHSKSJEky6AHKsmta6BCRJEmSQQ9QlgPTYoeIJEmSejzo3+WtOcDQHO0AkSRJkkEPUJ4zHSCSJEky6AHKc74DRJIkST3uSYMeYGgmpEsdIJIkSTLoAcqyZLrcASJJkqQWDPrNvD0H6N7S6QoHiCRJkgx6gLJMSt92gEiSJKkFg/7d3p4DdG9ymuMAkSRJkkEPUJYp6QcOEEmSJBn0AGV5ZbrBASJJkiSDHqAsy6WfOEAkSZLU454y6AGGZmr6sQNEkiRJLRj0m3t7DjC0n9D7yL0kSZIMeoDC1L9Df60DRJIkSQY9QFnqp9z72jpJkiS1YdBv4e05QPfq76H/tgNEkiRJBj1AWSalKxwgkiRJasGg39Lbc4DuLZUud4BIkiTJoAcoy5LpYgeIJEmSDHqAskxI5zpAJEmS1OP+YNADDN1sB4gkSZIMeoDyHJUWO0QkSZLU40G/lbfmAENzQFroEJEkSZJBD1CWXdJ8h4gkSZIMeoCy1L+r9LhDRJIkST0e9Ft7aw4wNBum3zhEJEmSZNADlGWtdKdDRJIkSQY9QFlWTDc4RCRJktTjQT/dW3OAoZmcLneISJIkyaAHKMvEdL5DRJIkST3saYMeYHhOTIsdJJIkSTLoAcqyd+W76CVJkmTQAxRnk/Sgg0SSJEk9HPTbeFsOMHRrp9sdJJIkSTLoAcqyXLraQSJJkqQeDvptvS0HGLol0nkOEkmSJBn0AOU5PC10mEiSJMmgByjLdmmew0SSJEk9GvTbeUsOMDyvTb9wmEiSJKkHzTfoAYZv2fQth4kkSZIMeoCyTEiz02IHiiRJkgx6gLLskh53oEiSJMmgByjL69NdDhRJkiT1YNC/x9txgOGbmq5yoEiSJMmgByjLxHRaWuRQkSRJ0jgP+u29HQcYmenpIYeKJEmSDHqAsqyRbnSoSJIkyaAHKMtS6bMOFUmSJI3zoN/BW3GAkduz8vV1kiRJMugBirNeutXBIkmSpHFqgUEPMDompy84WCRJkmTQA5Rnt/SIw0WSJEkGPUBZ1kzXO1wkSZI0ToN+R2/BAUbHEunMtMgBI0mSJIMeoCxbpLkOGEmSJBn0AGVZKX3TASNJkqRxGPQ7efsNMLoOqnwnvSRJkgx6gOJMS9c5ZCRJGlZXVL41Rup20L/XW2+A0TUxndS5yTpsJEl6+eal/Trn6EYGvWTQA/TShul2B40kSS/ZNWmN552hBr1k0AP01KR0dlrssJEk6Tk9lQ59iTPUoJcMeoCe2yzd5bCRJOmP3ZDW7eL83Nigl7rqGYMeYOxMqZqf0i9y4EiSBrT6p/FHV83zZbpl0EvdD/qdveUGGDubpDsdOJKkAevaqrufxr/YoJ/nz1Ay6AF6bXL6ZFro0JEk9XlPpMPShBGenQa9ZNADtMZb0m0OHUlSnzYnrT2K56ZBL3U/6HfxVhtgbC2dZle+l16S1D89nA4Yo3PzzQa9ZNADtMn66YcOHklS4X01rTzGZ6ZBL3U/6Hf1Nhtg7NW/T3hQ+r3DR5JUWPekbcbxzHyLQS8Z9ABtU/9E4xKHjySpgJ5N/1A1X8E63gx6yaAHaKWt0l0OIElSS7s+vaHHZ2U96B/1dyF1Neh38/YaYPzUX2N3ZprvEJIktaSH0oHVyL9uzqCXDHqAvrduutIhJEnqYYvSF9OKLTwnDXqp+1+NMegBemDH9GsHkSRpnPt5emvLz8i3GvSSQQ/QZpPSKekph5EkaYz7XZqZJhZyRhr0kkEP0Hprpq87jCRJY/RG/zNpaoHno0EvdX+d7+4tNUDv1E+9v8OBJEkapb6T1i/8bHybQS8Z9AAlWCIdkh50KEmShln9TJad++hsrAf9Y/5epa4G/R7eTgP01nLp79PTDiZJUpc9ko5OS/fhuWjQSwY9QFHWSv/iYJIkvUQL0tlphT4/Ew16yaAHKPINzA0OJ0nS86ofoLrOgJ2HBr3U3aB/n7fQAO1R35TvckBJ0sB3Y9p0QM/Ctxv0kkEPUKIl08FprkNKkgau+ltPdnYUGvTSEAb9nm4ZAO2yTDqhah545LCSpP7uvnRAmuj4+7NNDHrJoAco2dT0ifSkw0qS+q6Hq+YJ9ZMcdwa9ZNAD9KdV0/npGQeWJBXfvHRqWtbx1tWgf9xrRjLoAUo3LX25c8N2cElSWdWj9G+r5lNXGPTSaLfQoAcoY9R/qfKTekkqofpXpT6ZVnJ8GfSSQQ9AbW2jXpJaPeLPSqs4rgx6aZwH/V5uGQBlWCv9o1EvSa2ofmhb/fDSVzmeRt07DHrJoAfo11F/QZrvEJOkce/36bTK78Qb9FJ7Bv373TIAyvLq9KnKV/pI0nj0YDqx8nT68fROg14y6AH62fLp5PSAw0ySRr1fp0PSZMeNQS8Z9ACMhfqN5qx0twNNkkbcz6vmadFLOF5aMeif8JqUuhr0e7tlAJRric6/zN7sUJOkIfedtJWjxKCXDHoAemnz9M20yOEmSS9a/UDRC9MbHRsGvdQng34ftwyA/rBuOtebIEn6i4fazU6rOiaKsamzTDLoAQZR/bC8Y9K9DjlJA9xtaUaa5Fgw6CWDHoCS1L9Xv0e6zkEnaYDe1F6WtnQEGPTSgN379nXLAOhPb0ifr3z1j6T+/Sj9x9Nfud33nXcZ9JJBD0BVvbJqvkv5FoeepD7ops6b16Xd3g16SQY9wKDYJF1cNU94dgBKKqVH0+fShm7jAzfon/T6l162RQY9wOBYKR2X7nQASmpxN6YD0xS3bYNekkEPwHPVP63/UuV36yW1o0fSOWkDt2cMemnIg34/twyAwVP/5Gv/dG1a7ECUNI7Vv/N5VXpf5WvleGGbGfSSQQ/Ay1unap4Sfb9DUdIYdkc6Ib3GbReDXhrVQf8BtwyAwTYxbZ2+kh5zOEoahR6qmofZvdUtlmF4t0EvGfQADM3ktHu6vPI0fElDqx5fl6bt05Jupxj0kkEPQG9MTQel73cOCgempOf3bLoy7ZNe4baJQS/1bNB/0C0DgBeyejqmar5CyoPzJAP+O2lmepXbI+Mw6J9y3UkGPQCjM+yPTD+o/MReGrQB/yEDHoNeavWg398tA4BurJoOSXOq5munHKRS/1Q/N+OqzoBfye2OHtvcoJcMegDGRv3Tuvp37K9If3CYSkU2L321ar4Lflm3NQx6yaAHYLAsk3ZMF1S+x15qe/el89JWlafQY9BL/TToD3DLAGCk3pROTT+pPEBPasPvv1+bTkgbuD1RoC0MesmgB2D8vTrNSP+aHnbQSuPSA+nCqvn4/PJuQxj0kkEPACMxMb05fbRqflK4wKErjUpPV83T549PG6YJbjcY9NJAD/oD3TIAGEuvSDukc9KdDl+p6+pfX7k5fSptnSa7nTAgtjToJYMegPZZLe1dNQ/SM+6l5473/+r8w9dula+Ow6D3LSpSd4N+hlsGAL2wStqjap68fWvlYXoarDdgfxrvuxrvYNBLI/jHYIMegJ6rB80u6ax0fdX8nrCDWv3QE2lOmp22rTy0Dgx6yaAHoI8tVTUP1DsiXZrudmCrkDdVv0pfTYdVzQPrlnA5g0EvGfQADLKV007pE1XzdO+HHODqcXPTN6rmWxymp6kuUxhVWxn0kkEPQH9aI703nZ6+me5zoGuMuiddnk7r/KPSai4/MOillg36g9wyAChZ/fv39Vd61d/LfUnVfM2XN4LqtvqrsX6aLkxHpc0qv+cOvba1+7hk0AMwmCamdarmp/gnGfmqmocs3tx5LdSvifqn7dPSBJcLGPSSQQ8AZYz87dORVfNVeVenu9Kz3hAU38L063RV+mzVPJSu/t32tTp/94BBL/XroP+QWwYAg2rJztDftjMCP5O+VTU/zX3YG4XWVD8I8Sfp39Kn0iGdv7PXVs23IgD9ZbpBLxn0ADASU9J6VfOTovoJsvVD+P4pfTfdmR7xRmLE1X+Gt1bNpyW+1PkzPqgz1jdIy3oZwsAO+qfdI6WuBv1MtwwAGLqlq+aJ+xtXzUf5D0wnprPTpWlO1fykv35S+ry0qM/fUNT/He9OP6uarxf8WtV84uHkzj+I7JDektZMk718AINeMugBoAT1w9fq7ypfO22Ytki7dobuUZ3Re2Y6K30+XVQ1Hy+/In0v3ZRuSbdXzacDftX5h4L6K/v+Jz1QNR9Lr3/i/XinemD/Pv0u/bZqvjv9v9O9VfPsgNs64/v6zj8+XJku6wzxL3fGeP3/0wlpVvpA2qVqPrFQD/N104qV31EHDHrJoAcAADDopSEN+g+7ZQAAAG2xjUEvGfQAAIBBL/XzoD/YLQMAAGiLbQ16yaAHAAAMesmgBwAAMOilVg36Q9wyAACAttguzTfWJIMeAAAw6KV+HfSz3DIAAACDXjLoAQAADHrJoAcAAAx6SS806A91ywAAANriPQa9ZNADAAAGvWTQAwAAGPRSqzLoAQCA1tjeoJcMegAAwKCX+rnD3DIAAIC22MGglwx6AADAoJcMegAAgHEa9AsMNamrDnfLAAAADHrJoAcAADDopXHoCLcMAACgLXY06CWDHgAAMOglgx4AAMCgl1rVkW4ZAABAW+xk0EsGPQAAYNBL/dxRbhkAAEBbvNeglwx6AADAoJcMegAAAINealUfccsAAADaNOifMdQkgx4AADDopX7taLcMAACgLXY26CWDHgAAMOglgx4AAMCgl1rVMW4ZAABAW+xi0EsGPQAAYNBL/dyxbhkAAEBb7GrQSwY9AABg0EsGPQAAgEEvtarj3DIAAIC22M2glwx6AADAoJf6uePdMgAAgDYN+mcNNcmgBwAADHrJoAcAADDopdZ0glsGAADQFrsb9JJBDwAAGPSSQQ8AAGDQS63qRLcMAACgLfYw6CWDHgAAMOilfu4ktwwAAKAt3mfQSwY9AABg0EsGPQAAgEEvtaqT3TIAAIC22NOglwx6AADAoJf6uY+6ZQAAAG0a9AsNNcmgBwAADHrJoAcAADDopdb0MbcMAACgLfYy6CWDHgAAMOilfu4UtwwAAKAt3m/QSwY9AABg0EsGPQAAgEEvtapT3TIAAIC22Nuglwx6AADAoJf6udPcMgAAgLbYx6CXDHoAAMCglwx6AAAAg15qVae7ZQAAAG2xr0EvGfQAAIBBLxn0AAAABr3Uqk5yywAAANo06BcZalJXHe6WAQAAGPRSWS1O+7tlAAAAbbGfQS911TNpS7cMAADAoJfKal5a3y0DAAAw6KWyuiet6JYBAAC0xQcMeqmrrk4T3TIAAACDXvId9AAAAMP2QYNeetnqa8QD8QAAAINeKqz701S3CwAAwKCXyuprbhUAAEDb7G/QSy/b7m4VAACAQS+V1dy0nFsFAADQNgcY9NJLdp7bBAAAYNBL5T3dfkO3CQAAwKCXyup7bhEAAEBbHWjQSy/aDm4RAACAQS+V1R1polsEAADQVjPSYuNN+ov2cnsAAAAMeqmsbksT3B4AAACDXiqr3dwaAAAAg14qq+vcFgAAAINeKq+N3BYAAACDXiqrf3ZLAAAASnGQQS/9sT+k5d0SAAAAg14qq4PdDgAAgJJ8yKCXqpvcCgAAAINeKq9pbgUAAIBBL5XVsW4DAABAiWYa9BrgbnQLAAAADHqprOrX/apuAQAAQKk+bNBrQNvX5Q8AABj0Ulld5NIHAAAMeqms5rrsAQCAfnCwQa8By1fUAQAABr1UWHu75AEAgH5xiEGvAekclzsAAGDQS2V1g0sdAAAw6KWyetRlDgAA9KNZBr36vNVd5gAAgEEvldXWLnEAAKBfHWrQq0+b6fIGAAAMeqmsPu7SBgAABmHQG4Dqpy52WQMAAAa9VFbfdUkDAAAGvVRWN7ucAQCAQXKYIag+6F6XMgAAYNBLZfWYyxgAADDopbJa4BIGAAAG1eFGoQptscsXAAAw6KXyWsrlCwAAGPSSMQ8AAFCUI4xDVT5mDwAAYNBLY9R8lysAAMD/OdJQVAHNc6kCAAAY9Cqre1ymAAAABr3K6qcuUQAAgBd2lNGolnaNyxMAAMCgV1ld6NIEAAB4aR8xHtWyznBZAgAAGPQqqxkuSQAAAINeZbW5yxEAAKB7RxuSakGruBQBAAAMepXTQy5BAACA4TnGqFSPutblBwAAYNCrrD7t0gMAADDoVVa7u+wAAABG7lgDU+PYai45AAAAg17ldLdLDQAAYHQdZ2xqjLvAZQYAAGDQy+/LAwAAYNBrjHo2reDyAgAAGDvHG58a5ea4rAAAAAx6ldUslxQAAMD4OMEI1Si0KL3G5QQAAGDQy0fsAQAAMOg1Ru3nEgIAAOiNE41SDaPH0hSXDwAAgEGvcvqcywYAAMCgVzktTuu5ZAAAANrhJENVXXS1SwUAAMCgV1lNd5kAAAC0z8kGq16km1weAAAABr3K6j0uDQAAAINe5fQjlwQAAEAZPmrEqtOmLgcAAACDXuV0mcsAAACgPB8zaAe2BWldlwAAAIBBr3Ka7aUPAABg0KucfpkmedkDAACU7xQjdyBanLb0cgcAADDoVU7nepkDAAD0n1MN3r7tF2kZL3EAAACDXuU8vX4jL20AAACDXuV0qJc0AADAYDjNCO6LLvFSBgAAMOhVTrekKV7GAAAAg+d0o7jI5qY1vHwBAAAMepXRk5UH3gEAAGDQF9MzaXsvVwAAAP7kDGO51S1Me3qZAgAAYNCX0eI0w8sTAACAF3Oy8dyqFhnyAAAAdOOIqvlpsDHd+9+R99F6AAAAurZ/Z0wa1b17ar2H3QEAADBkW6V5hnVPvkfe188BAAAwbOunewzsceuWtIaXHQAAACO1Yrra0B7zLklTvNwAAAAYLRPT6VXzdHXDe3RbkGZ5iQEAADBWtkz3G+Cj1p2V348HAABgHExNXzPER1T91X/npmW8nAAAABhPu1fNk9eN86H1q6r5hAMAAAD0xHLpvMrv0nfT/HRGmuRlAwAAQBtsmL5nsL9ol6V1vUwAAABoox3THcb7n/tR2tTLAgAAgLarv8Zur3TbAI/4m9J2XgoAAACUZkLaLV1fDc4T6q9O0/3VAwAA0A82Thenp/twxD+WPpde568ZAACAfrR8OrhqPoZe8oCvn94/J+2XpvhrBQAAYFBMS8emG6vmI+ptH/DPpu+mWek1/voAAAAYdKumfdNFaW6LBvzd6YK0e1rBXxMAAAC8uPqn9nunc9IN6dFxGO4PpWvTp6vmwX2r+WsAAACAkVk9bZ1mpo9XzQP16o+935zurZoH0S2onvuR/fo/z0/z0j3pp+madGE6I81Im6dV/PECAABAby2dlvLH8NL+FxIFhKMMk5f+AAAAAElFTkSuQmCC) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"] }]
2455
+ args: [{ selector: "eqp-dynamic-module-configurator", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}::ng-deep .mdc-button__label{display:inline-flex;align-items:center}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table{margin-top:16px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table.mat-mdc-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell tmw-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell tmw-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup tmw-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"] }]
2456
2456
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.MatDialog }, { type: i3.UtilityHelperService }, { type: i4.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { debugMode: [{
2457
2457
  type: Input
2458
2458
  }], fieldsExtraConfig: [{
@@ -2534,4 +2534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2534
2534
  type: ViewChild,
2535
2535
  args: ["dialogVeReorder", { static: true }]
2536
2536
  }] } });
2537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGtCQUFrQixFQUVsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxjQUFjLEVBQ2QsSUFBSSxFQUVKLGtCQUFrQixFQUNsQixZQUFZLEdBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUs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O2dCQUlVLHVCQUF1QjtzQkFBOUUsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR04sZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBUaHJvd1N0bXQgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1xyXG4gIENlbGxBbGlnbm1lbnRFbnVtLFxyXG4gIENvbmZpZ0NvbHVtbixcclxuICBUbXdUYWJsZUNvbXBvbmVudCxcclxuICBUeXBlQ29sdW1uLFxyXG59IGZyb20gXCJ0bXctdGFibGVcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlciwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZEludmlzaWJpbGl0eUVudW0sIEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEVuZFBvaW50Q29uZmlndXJhdGlvbixcclxuICBFbmRQb2ludERhdGFQYXJhbXMsXHJcbiAgUGFyYW1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEFjdGlvbk9uUmVjb3JkLFxyXG4gIEZvcm0sXHJcbiAgRm9ybUZpZWxkR3JvdXAsXHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtLFxyXG4gIEZvcm1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgQXJyYXlWYWxpZGF0b3JzIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1mb3JtLXZhbGlkYXRvcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRyaWdnZXIsIEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIEZpcmVUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBDb250ZXN0dWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZ2V0dGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlU2VsZWN0b3JGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZEV4dHJhQ29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRUeXBlLCBUbXdBdHRhY2htZW50RFRPIH0gZnJvbSBcInRtdy1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50XCI7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgaW5qZWN0R29vZ2xlRm9udHNGcm9tRm9ybSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2dvb2dsZS1mb250cy1pbmplY3Rvcic7XHJcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yTW9kZUVudW0gfSBmcm9tIFwiLi4vLi4vcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkc0V4dHJhQ29uZmlnOiBBcnJheTxGaWVsZEV4dHJhQ29uZmlnPjtcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyA9XHJcbiAgICBuZXcgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZygpO1xyXG4gIEBJbnB1dCgpIGZvcm1JRDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSB2aWV3TW9kZTogc3RyaW5nID0gXCJhZGRPckVkaXRcIjsgLy8gRXhwb3J0XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIHRyaWdnZXJzOiBhbnk7XHJcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uczogYW55O1xyXG4gIEBJbnB1dCgpIGNvbnRlc3R1YWxpemF0aW9uOiBBcnJheTxDb250ZXN0dWFsaXphdGlvbj47XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55OyAvLyBFc2VtcGlvOiB7Y3Vycm9sZTogcm9sZSwgdXNlcjogdXNlciwgbWVkaWNhbDogbWVkaWNhbGV4YW1pbmF0aW9ufVxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRvclRoZW1lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdG9yVGhlbWVDc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgZmlyZVRyaWdnZXI6IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPigpO1xyXG5cclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUb2tlbiBkYSB1c2FyZSBuZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSByZWNvcmQuXHJcbiAgICogVXNhdG8gc29sbyBzZSB2aWVuZSBwb3BvbGF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiLlxyXG4gICAqL1xyXG4gIHVzZXJUb2tlbjogc3RyaW5nID0gbnVsbDtcclxuICAvKipcclxuICAgKiBDb25maWd1cmF6aW9uZSBkZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSBkYXRpLlxyXG4gICAqIFB1w7IgZXNzZXJlIGRlZmluaXRhIGRhbGwndXRlbnRlIG9wcHVyZSBsYXNjaWF0YSBudWxsLCB2aWVuZSBwb3BvbGF0YSBjb24gZGVpXHJcbiAgICogdmFsb3JpIGRpIGRlZmF1bHQgc2UgdmllbmUgdmFsb3JpenphdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIiBhbHRyaW1lbnRpXHJcbiAgICogdmllbmUgbGFzY2lhdGEgbnVsbCBlIG5vbiB2aWVuZSBlc2VndWl0YSBuZXNzdW5hIGNoaWFtYXRhIGFsIHNlcnZlci5cclxuICAgKi9cclxuICBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbiA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogVXJsIGRlbCBzZXJ2ZXIgZGEgY2hpYW1hcmUgcGVyIHJlY3VlcmFyZSwgc2FsdmFyZSBvIGVsaW1pbmFyZSBpIHJlY29yZC5cclxuICAgKiBVc2F0byBwZXIgY3JlYXJlIGxhIGNvbmZpZ3VyYXppb25lIGRpIGRlZmF1bHQgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgYmFzZVNlcnZlclVybDogc3RyaW5nID0gbnVsbDtcclxuICBjb250ZXh0OiBDb250ZXh0ID0gbmV3IENvbnRleHQoKTtcclxuXHJcbiAgLyogZXhwb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGRvd25sb2FkTmFtZTogc3RyaW5nO1xyXG4gIGRvd25sb2FkSnNvbkhyZWY6IGFueTtcclxuICBzdHJpbmdpZmllZEZvcm06IHN0cmluZztcclxuXHJcbiAgLyogaW1wb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGltcG9ydGVkTW9kdWxlOiBzdHJpbmcgPSBudWxsOyAvLyBqc29uIG9iamVjdFxyXG4gIGRpYWxvZ0ltcG9ydFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dJbXBvcnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nSW1wb3J0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBiYWNrdXBGb3JtOiBGb3JtID0gbnVsbDtcclxuICBzYXZlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9yZ2FJRDogc3RyaW5nID0gbnVsbDtcclxuICBVc2VySUQ6IG51bWJlciA9IDM2O1xyXG4gIGlubmVyRm9ybU1hbmFnbWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlubmVyRm9ybVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICAvKiBDT05GSUdVUkFaSU9ORSBQRVIgVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBICovXHJcbiAgdmlld0NvbmZpZzogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcoXHJcbiAgICB0cnVlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIFwiMFwiXHJcbiAgKTtcclxuXHJcbiAgZm9ybUZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG51bGw7XHJcbiAgZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gIHByZXZpZXdGb3JtOiBGb3JtO1xyXG4gIGZvcm1GaWVsZEdyb3VwTmFtZTogc3RyaW5nO1xyXG5cclxuICBhY3Rpb25BdXRvY29tcGxldGVPcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XHJcblxyXG4gIC8vI3JlZ2lvbiBFbnVtZXJhdG9yaSB1c2F0aSBuZWxsJ2h0bWxcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtID0gRm9ybVNjYWxhclR5cGVFbnVtO1xyXG4gIEF0dGFjaG1lbnRUeXBlID0gQXR0YWNobWVudFR5cGU7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBHZXN0aW9uZSBzZm9uZG8gZm9ybVxyXG4gIGdldCBwcmV2aWV3QmdTdHlsZSgpOiBTYWZlU3R5bGUgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5mb3JtPy5CZ0ltYWdlQmFzZTY0KSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoW1xyXG4gICAgICBgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJHt0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NH0nKWAsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXNpemU6IGNvdmVyJyxcclxuICAgICAgJ2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0JyxcclxuICAgIF0uam9pbignOyAnKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJldmlld1RoZW1lU3R5bGUoKTogU2FmZVN0eWxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uVGhlbWVDU1MpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmZvcm0uVGhlbWVDU1MudHJpbSgpLnJlcGxhY2UoLzskLywgJycpKTtcclxuICB9XHJcblxyXG4gIGdldCBiZ0F0dGFjaG1lbnRMaXN0KCk6IFRtd0F0dGFjaG1lbnREVE9bXSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uQmdJbWFnZUJhc2U2NCkgcmV0dXJuIFtdO1xyXG4gICAgY29uc3QgYXR0ID0gbmV3IER5bkF0dGFjaG1lbnQoKTtcclxuICAgIGF0dC5JRCA9IDA7XHJcbiAgICBhdHQuRmlsZURhdGFCYXNlNjQgPSB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NDtcclxuICAgIGF0dC5Jc0ltYWdlID0gdHJ1ZTtcclxuICAgIGF0dC5GaWxlQ29udGVudFR5cGUgPSAnaW1hZ2UvcG5nJztcclxuICAgIHJldHVybiBbYXR0XTtcclxuICB9XHJcblxyXG4gIG9uQmdJbWFnZUNoYW5nZShhdHRhY2htZW50czogVG13QXR0YWNobWVudERUT1tdKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGF0dGFjaG1lbnRzPy5sZW5ndGggPiAwID8gYXR0YWNobWVudHNbMF0uRmlsZURhdGFCYXNlNjQgOiBudWxsO1xyXG4gICAgdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnByZXZpZXdGb3JtKSB0aGlzLnByZXZpZXdGb3JtLkJnSW1hZ2VCYXNlNjQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQmdJbWFnZURlbGV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5CZ0ltYWdlQmFzZTY0ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnByZXZpZXdGb3JtKSB0aGlzLnByZXZpZXdGb3JtLkJnSW1hZ2VCYXNlNjQgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklFTERfVFlQRV9MQUJFTFM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XHJcbiAgICAxOiAnQ2FtcG8gZGkgdGVzdG8nLFxyXG4gICAgMjogJ1Rlc3RvIGx1bmdvJyxcclxuICAgIDM6ICdCb29sZWFubycsXHJcbiAgICA0OiAnRGF0YScsXHJcbiAgICA1OiAnTnVtZXJpY28nLFxyXG4gICAgNjogJ0FsbGVnYXRvJyxcclxuICAgIDc6ICdJbW1hZ2luZScsXHJcbiAgICA4OiAnRWxlbmNvJyxcclxuICAgIDExOiAnU2VsZXR0b3JlIGltbWFnaW5pJyxcclxuICAgIDEyOiAnRXRpY2hldHRhJyxcclxuICAgIDEzOiAnSW1tYWdpbmUgY29uIG1hcmNhdG9yaScsXHJcbiAgICAxNDogJ0JvdHRvbmUgYXppb25lJyxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0NTU19DTEFTUzogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcclxuICAgIDE6ICdUZXh0RmllbGRTdHlsZUNTUycsXHJcbiAgICAyOiAnVGV4dGFyZWFGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDM6ICdCb29sZWFuRmllbGRTdHlsZUNTUycsXHJcbiAgICA0OiAnRGF0ZUZpZWxkU3R5bGVDU1MnLFxyXG4gICAgNTogJ051bWVyaWNGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDY6ICdBdHRhY2htZW50RmllbGRTdHlsZUNTUycsXHJcbiAgICA3OiAnSW1hZ2VGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDg6ICdMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDExOiAnSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTI6ICdMYWJlbEZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTM6ICdJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUycsXHJcbiAgICAxNDogJ0FjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MnLFxyXG4gIH07XHJcblxyXG4gIC8vIE1hcHBhIGFsaWFzIG1vZGVsbG8g4oaSIElEIENsYXVkZSBwacO5IHJlY2VudGU7IGwnb3JkaW5lIGRpIGNoZWNrIMOoIHJpbGV2YW50ZSAoRmFibGUgZSBPcHVzIHByaW1hIGRpIFNvbm5ldC9IYWlrdSlcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNT0RFTF9NQVA6IEFycmF5PHsgcGF0dGVybjogUmVnRXhwOyBpZDogc3RyaW5nIH0+ID0gW1xyXG4gICAgeyBwYXR0ZXJuOiAvXFxiKD86KD86dXNhfHVzZXxjb258dXNpbmcpXFxzKyk/ZmFibGVcXGIvZ2ksIGlkOiAnY2xhdWRlLWZhYmxlLTUnIH0sXHJcbiAgICB7IHBhdHRlcm46IC9cXGIoPzooPzp1c2F8dXNlfGNvbnx1c2luZylcXHMrKT9vcHVzXFxiL2dpLCBpZDogJ2NsYXVkZS1vcHVzLTQtNycgfSxcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP3Nvbm5ldFxcYi9naSwgaWQ6ICdjbGF1ZGUtc29ubmV0LTQtNicgfSxcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP2hhaWt1XFxiL2dpLCBpZDogJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnIH0sXHJcbiAgXTtcclxuXHJcbiAgLy8gUHJlenppIHVmZmljaWFsaSBBbnRocm9waWMgVVNEL01Ub2sgcGVyIG1vZGVsbG8gKHBhZ2luYSBcIlByZXp6aSBkZWkgbW9kZWxsaVwiLCB2ZXJpZmljYXRhIDIwMjYtMDcpLlxyXG4gIC8vIGNhY2hlV3JpdGUgw6ggaWwgcHJlenpvIGRpIHNjcml0dHVyYSBjYWNoZSBhIDEgT1JBOiDDqCBpbCBDYWNoZVR0bCBjb25maWd1cmF0byBzdSBxdWFzaSB0dXR0aSBnbGlcclxuICAvLyBhbWJpZW50aSByZWFsaSAoVGFrZWNhcmUsIE1vc2FpY28sIFRlbGVtZWR3YXJlLCBlY2MuIOKAlCBzb2xvIERldmVsb3BtZW50IHVzYSBcIm5vbmVcIiwgVGVzdCB1c2EgXCIxaFwiXHJcbiAgLy8gYW5jaCdlc3NvKSwgcXVpbmRpIMOoIGxhIHN0aW1hIHJlYWxpc3RpY2EgYW5jaGUgc2UgbGVnZ2VybWVudGUgcGnDuSBhbHRhIGRlaSA1IG1pbnV0aS4gVGVuZXJlXHJcbiAgLy8gYWxsaW5lYXRpIGEgRHluYW1pY01vZHVsZS5BcGlcXFNraWxsc1xcRE1BSV9TS0lMTEZPUksubWQgZSBhaSBzZXJ2aXppIENsYXVkZSpTZXJ2aWNlLmNzIGxhdG8gc2VydmVyLlxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFJX01PREVMX1BSSUNJTkc6IFJlY29yZDxzdHJpbmcsIHsgaW5wdXQ6IG51bWJlcjsgb3V0cHV0OiBudW1iZXI7IGNhY2hlV3JpdGU6IG51bWJlcjsgY2FjaGVSZWFkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfT4gPSB7XHJcbiAgICAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMSc6IHsgaW5wdXQ6IDEuMDAsIG91dHB1dDogNS4wMCwgY2FjaGVXcml0ZTogMi4wMCwgY2FjaGVSZWFkOiAwLjEwLCBsYWJlbDogJ0hhaWt1JyB9LFxyXG4gICAgJ2NsYXVkZS1zb25uZXQtNC02JzogeyBpbnB1dDogMy4wMCwgb3V0cHV0OiAxNS4wMCwgY2FjaGVXcml0ZTogNi4wMCwgY2FjaGVSZWFkOiAwLjMwLCBsYWJlbDogJ1Nvbm5ldCcgfSxcclxuICAgICdjbGF1ZGUtb3B1cy00LTcnOiB7IGlucHV0OiA1LjAwLCBvdXRwdXQ6IDI1LjAwLCBjYWNoZVdyaXRlOiAxMC4wMCwgY2FjaGVSZWFkOiAwLjUwLCBsYWJlbDogJ09wdXMnIH0sXHJcbiAgICAnY2xhdWRlLWZhYmxlLTUnOiB7IGlucHV0OiAxMC4wMCwgb3V0cHV0OiA1MC4wMCwgY2FjaGVXcml0ZTogMjAuMDAsIGNhY2hlUmVhZDogMS4wMCwgbGFiZWw6ICdGYWJsZScgfSxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGV4dHJhY3RNb2RlbEZyb21UZXh0KHRleHQ6IHN0cmluZyk6IHsgY2xlYW5UZXh0OiBzdHJpbmc7IG1vZGVsSWQ6IHN0cmluZyB8IG51bGwgfSB7XHJcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuTU9ERUxfTUFQKSB7XHJcbiAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgaWYgKGVudHJ5LnBhdHRlcm4udGVzdCh0ZXh0KSkge1xyXG4gICAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgICBjb25zdCBjbGVhblRleHQgPSB0ZXh0XHJcbiAgICAgICAgICAucmVwbGFjZShlbnRyeS5wYXR0ZXJuLCAnJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9bIFxcdF0rL2csICcgJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHMqWy4sO11cXHMqJC8sICcnKVxyXG4gICAgICAgICAgLnRyaW0oKTtcclxuICAgICAgICBlbnRyeS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgcmV0dXJuIHsgY2xlYW5UZXh0LCBtb2RlbElkOiBlbnRyeS5pZCB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGNsZWFuVGV4dDogdGV4dCwgbW9kZWxJZDogbnVsbCB9O1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtR3JhcGhpY1N1Z2dlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCByYXdIaW50ID0gdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RIaW50Py50cmltKCk7XHJcbiAgICBpZiAoIXRoaXMuZm9ybSB8fCAhdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQpIHJldHVybjtcclxuICAgIGNvbnN0IHsgY2xlYW5UZXh0OiBoaW50LCBtb2RlbElkOiBhaU1vZGVsSWQgfSA9IHRoaXMuZXh0cmFjdE1vZGVsRnJvbVRleHQocmF3SGludCk7XHJcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuZm9ybUdyYXBoaWNTY29wZTtcclxuXHJcbiAgICAvLyBTY29wZSB0aXBvIHNwZWNpZmljbzogdmFsaWRhIGVzaXN0ZW56YSBkZWwgY2FtcG8gcHJpbWEgZGkgcGFydGlyZVxyXG4gICAgbGV0IHNjb3BlRmllbGRUeXBlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIGlmIChzY29wZS5zdGFydHNXaXRoKCd0eXBlXycpKSB7XHJcbiAgICAgIHNjb3BlRmllbGRUeXBlID0gcGFyc2VJbnQoc2NvcGUucmVwbGFjZSgndHlwZV8nLCAnJyksIDEwKTtcclxuICAgICAgY29uc3QgZXhpc3RzID0gKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLnNvbWUoZiA9PiBmLkZpZWxkVHlwZSA9PT0gc2NvcGVGaWVsZFR5cGUpO1xyXG4gICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKCdOZXNzdW4gY2FtcG8gZGkgcXVlc3RvIHRpcG8gcHJlc2VudGUgbmVsIGZvcm0uJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBDYW1waSBkYSBpbnZpYXJlOiB1biByYXBwcmVzZW50YW50ZSBwZXIgdGlwbyAoYWxsL21haW4pIG9wcHVyZSBzb2xvIGlsIHByaW1vIGRlbCB0aXBvIHNjZWx0byAodGlwbyBzcGVjaWZpY28pXHJcbiAgICBjb25zdCBzZWVuVHlwZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuICAgIGNvbnN0IGZpZWxkc1RvU2VuZCA9IHNjb3BlRmllbGRUeXBlICE9IG51bGxcclxuICAgICAgPyAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4gZi5GaWVsZFR5cGUgPT09IHNjb3BlRmllbGRUeXBlKS5zbGljZSgwLCAxKS5tYXAoZiA9PiAoeyBMYWJlbDogZi5MYWJlbCwgRmllbGRUeXBlOiBmLkZpZWxkVHlwZSB9KSlcclxuICAgICAgOiAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4geyBpZiAoc2VlblR5cGVzLmhhcyhmLkZpZWxkVHlwZSkpIHJldHVybiBmYWxzZTsgc2VlblR5cGVzLmFkZChmLkZpZWxkVHlwZSk7IHJldHVybiB0cnVlOyB9KS5tYXAoZiA9PiAoeyBMYWJlbDogZi5MYWJlbCwgRmllbGRUeXBlOiBmLkZpZWxkVHlwZSB9KSk7XHJcblxyXG4gICAgY29uc3QgZ3JhcGhpY3NQYXJhbXM6IEVuZFBvaW50RGF0YVBhcmFtc1tdID0gW1xyXG4gICAgICB7IFBhcmFtTmFtZTogJ05hbWUnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uTmFtZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdEZXNjcmlwdGlvbicsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5EZXNjcmlwdGlvbiA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RoZW1lQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLlRoZW1lQ1NTID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnVGl0bGVDU1MnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uVGl0bGVDU1MgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdGaWVsZHMnLCBQYXJhbVZhbHVlOiBmaWVsZHNUb1NlbmQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnSGludCcsIFBhcmFtVmFsdWU6IGhpbnQgfHwgdGhpcy5idWlsZFJhbmRvbUdyYXBoaWNIaW50KCksIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTW9kZWxJZCcsIFBhcmFtVmFsdWU6IGFpTW9kZWxJZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdHZW5lcmF0ZUJhY2tncm91bmQnLCBQYXJhbVZhbHVlOiB0aGlzLmdlbmVyYXRlQmFja2dyb3VuZCAmJiBzY29wZSA9PT0gJ2FsbCcsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIC4uLihzY29wZSA9PT0gJ21haW4nID8gW3sgUGFyYW1OYW1lOiAnTWFpbk9ubHknLCBQYXJhbVZhbHVlOiB0cnVlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9XSA6IFtdKSxcclxuICAgICAgLi4uKHNjb3BlRmllbGRUeXBlICE9IG51bGwgPyBbeyBQYXJhbU5hbWU6ICdTaW5nbGVGaWVsZE1vZGUnLCBQYXJhbVZhbHVlOiB0cnVlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9XSA6IFtdKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCxcclxuICAgICAgZ3JhcGhpY3NQYXJhbXMsXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHIgPSByZXMgYXMgeyBUaGVtZUNTUz86IHN0cmluZzsgVGl0bGVDU1M/OiBzdHJpbmc7IEJnSW1hZ2VCYXNlNjQ/OiBzdHJpbmc7IEZpZWxkU3R5bGVzPzogeyBbY3NzQ2xhc3NOYW1lOiBzdHJpbmddOiB7IFtwcm9wOiBzdHJpbmddOiBzdHJpbmcgfSB9OyBXYXJuaW5ncz86IHN0cmluZ1tdOyBEYWxsRUVsYXBzZWRTZWM/OiBudW1iZXIgfTtcclxuICAgICAgICB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoc2NvcGUgPT09ICdtYWluJykge1xyXG4gICAgICAgICAgLy8gU29sbyBUaGVtZUNTUyBlIFRpdGxlQ1NTXHJcbiAgICAgICAgICBpZiAoci5UaGVtZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGhlbWVDU1MgPSByLlRoZW1lQ1NTID8/IG51bGw7XHJcbiAgICAgICAgICBpZiAoci5UaXRsZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGl0bGVDU1MgPSByLlRpdGxlQ1NTID8/IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUZpZWxkVHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBGaWVsZFN0eWxlcyBkZWwgdGlwbyBzY2VsdG8gYXBwbGljYXRpIGEgVFVUVEkgaSBjYW1waSBkaSBxdWVsIHRpcG8gbmVsIGZvcm0uXHJcbiAgICAgICAgICAvLyBPZ25pIGNhbXBvIHJpY2V2ZSB1bmEgY29waWEgZGlzdGludGE6IHNhZmVDbG9uZSB1c2EgV2Vha1NldCBlIHNhbHRhIG9nZ2V0dGkgZ2nDoCB2aXN0aS5cclxuICAgICAgICAgIGlmIChyLkZpZWxkU3R5bGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNzc0NsYXNzTmFtZSA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfQ1NTX0NMQVNTIGFzIGFueSlbc2NvcGVGaWVsZFR5cGVdO1xyXG4gICAgICAgICAgICBpZiAoY3NzQ2xhc3NOYW1lICYmIHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXSkge1xyXG4gICAgICAgICAgICAgICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5maWx0ZXIoZiA9PiBmLkZpZWxkVHlwZSA9PT0gc2NvcGVGaWVsZFR5cGUpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAoZiBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSB7IC4uLnIuRmllbGRTdHlsZXMhW2Nzc0NsYXNzTmFtZV0gfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBUdXR0b1xyXG4gICAgICAgICAgaWYgKHIuVGhlbWVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRoZW1lQ1NTID0gci5UaGVtZUNTUyA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuVGl0bGVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRpdGxlQ1NTID0gci5UaXRsZUNTUyA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuQmdJbWFnZUJhc2U2NCAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NCA9IHIuQmdJbWFnZUJhc2U2NCA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuRmllbGRTdHlsZXMpIHtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY3NzQ2xhc3NOYW1lID0gKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuRklFTERfVFlQRV9DU1NfQ0xBU1MgYXMgYW55KVtmLkZpZWxkVHlwZV07XHJcbiAgICAgICAgICAgICAgaWYgKCFjc3NDbGFzc05hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgICBjb25zdCBjc3NPYmogPSByLkZpZWxkU3R5bGVzIVtjc3NDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICAgIGlmIChjc3NPYmogJiYgdHlwZW9mIGNzc09iaiA9PT0gJ29iamVjdCcpIChmIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHsgLi4uY3NzT2JqIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbXBsZXRlZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgYmdUaW1lUGFydCA9IHIuRGFsbEVFbGFwc2VkU2VjICE9IG51bGwgPyBgIChzZm9uZG8gZ2VuZXJhdG8gaW4gJHtyLkRhbGxFRWxhcHNlZFNlYy50b0ZpeGVkKDEpfXMpYCA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBzY29wZSA9PT0gJ21haW4nXHJcbiAgICAgICAgICA/IGBHcmFmaWNhIHByaW5jaXBhbGUgYXBwbGljYXRhISR7YmdUaW1lUGFydH1gXHJcbiAgICAgICAgICA6IHNjb3BlRmllbGRUeXBlICE9IG51bGxcclxuICAgICAgICAgICAgPyBgR3JhZmljYSBhcHBsaWNhdGEgYSB0dXR0aSBpIGNhbXBpIGRlbCB0aXBvIHNlbGV6aW9uYXRvISR7YmdUaW1lUGFydH1gXHJcbiAgICAgICAgICAgIDogYEdyYWZpY2EgYXBwbGljYXRhIGFsIGZvcm0hJHtiZ1RpbWVQYXJ0fWA7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuICAgICAgICBpZiAoci5XYXJuaW5ncz8ubGVuZ3RoID4gMCkgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhyLldhcm5pbmdzKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbXNnID0gKGVycm9yIGFzIGFueSk/LmVycm9yO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy50cmltKCkgPyBtc2cgOiAnRXJyb3JlIG5lbGxhIGdlbmVyYXppb25lIGRlbGxhIGdyYWZpY2EnKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhemlvbmUvbW9kaWZpY2EgY2FtcG9cclxuICBmaWVsZHNDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWVsZHNUYWJsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZmllbGRzVGFibGU6IFRtd1RhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdGVkRmllbGQ6IEJhc2VGaWVsZDtcclxuICBpbmRleFNlbGVjdGVkRmllbGQ6IG51bWJlcjtcclxuICBhY3Rpb25PblJlY29yZEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBkaWFsb2dGaWVsZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dGaWVsZFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dGaWVsZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBmaWVsZFNlY3Rpb25Db2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWFyZS9tb2RpZmljYXJlIHVuYSBGb3JtIGRpIGRldHRhZ2xpb1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtOiBGb3JtO1xyXG4gIGluZGV4U2VsZWN0ZWRJbm5lckZvcm06IG51bWJlcjtcclxuICBkaWFsb2dJbm5lckZvcm1SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nSW5uZXJGb3JtXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGlhbG9nSW5uZXJGb3JtOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGlubmVyRm9ybUNvbmZpZzogRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWFyZS9tb2RpZmljYXJlIHVuYSBhY3Rpb24gc3VpIHJlY29yZCBkaSB1bmEgRm9ybVxyXG4gIGFjdGlvbnNPblJlY29yZENvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgQFZpZXdDaGlsZChcImFjdGlvbnNPblJlY29yZFRhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFjdGlvbnNPblJlY29yZFRhYmxlOiBUbXdUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uT25SZWNvcmQ7XHJcbiAgaW5kZXhTZWxlY3RlZEFjdGlvbjogbnVtYmVyO1xyXG4gIGRpYWxvZ0FjdGlvbk9uUmVjb3JkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FjdGlvbk9uUmVjb3JkXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGlhbG9nQWN0aW9uT25SZWNvcmQ6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhcmUvbW9kaWZpY2FyZSBkZWkgYm90dG9uaSBhemlvbmVcclxuICBhY3Rpb25CdXR0b25zQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICBAVmlld0NoaWxkKFwiYWN0aW9uQnV0dG9uc1RhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFjdGlvbkJ1dHRvbnNUYWJsZTogVG13VGFibGVDb21wb25lbnQ7XHJcbiAgc2VsZWN0ZWRBY3Rpb25CdXR0b246IEFjdGlvbkJ1dHRvbjtcclxuICBpbmRleFNlbGVjdGVkQWN0aW9uQnV0dG9uOiBudW1iZXI7XHJcbiAgZGlhbG9nQWN0aW9uQnV0dG9uUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FjdGlvbkJ1dHRvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRpYWxvZ0FjdGlvbkJ1dHRvbjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgYWN0aW9uQnV0dG9uc0Zvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBhY3Rpb25zRmxhZyA9IEFjdGlvbkZsYWdFbnVtO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gZW1lc3NvIHF1YW5kbyBzaSBzYWx2YSB1bmEgZm9ybSBlIG5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPEZvcm0+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gZW1lc3NvIERPUE8gYXZlciBlc2VndWl0byB1bmEgY2hpYW1hdGEgYWwgc2VydmVyIHBlciBpbCBzYWx2YXRhZ2dpb2RpIHVuYSBmb3JtIGFsbCdlbmRwb2ludCBzcGVjaWZpY2F0by5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWZ0ZXJTYXZlRm9ybUV2ZW50OiBFdmVudEVtaXR0ZXI8Rm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XHJcblxyXG4gIC8vIE91dCBjb21wb25lbnRlIGVzdGVybm9cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuXHJcbiAgLy8gVHJpZ2dlcnNcclxuICBkaWFsb2dUcmlnZ2Vyc1JlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dUcmlnZ2Vyc1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dUcmlnZ2VyczogVGVtcGxhdGVSZWY8YW55PjtcclxuICBzZWxlY3RlZFRyaWdnZXI6IFRyaWdnZXI7XHJcbiAgdHJpZ2dlcnNDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJ0cmlnZ2Vyc1RhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0cmlnZ2Vyc1RhYmxlOiBUbXdUYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgc2hvd0FsbEZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dHcmFmaWNhUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29udGVzdHVhbGl6YXRpb25cclxuICBzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uOiBzdHJpbmcgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZTogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRmllbGRzOiBBcnJheTxCYXNlRmllbGQ+ID0gbmV3IEFycmF5PEJhc2VGaWVsZD4oKTtcclxuXHJcbiAgLy8gQUkgRWRpdCBkaWFsb2dcclxuICBkaWFsb2dBaUVkaXRSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWlFZGl0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0FpRWRpdDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBkaWFsb2dBaUhpc3RvcnlSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWlIaXN0b3J5XCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0FpSGlzdG9yeTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gQ29udGVzdHVhbGl6emF6aW9uZSBkaWFsb2dcclxuICBkaWFsb2dDb250ZXN0dWFsaXphdGlvblJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dDb250ZXN0dWFsaXphdGlvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dDb250ZXN0dWFsaXphdGlvbjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gVmlzdWFsIEVkaXRvclxyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dWZVRvb2x0aXBcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVmVUb29sdGlwOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dWZVJlb3JkZXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVmVSZW9yZGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHZpc3VhbEVkaXRvckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlU2VsZWN0ZWRGaWVsZDogQmFzZUZpZWxkIHwgbnVsbCA9IG51bGw7XHJcbiAgdmVTd2FwRmllbGQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gIGRpYWxvZ1ZlVG9vbHRpcFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIGRpYWxvZ1ZlUmVvcmRlclJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIHZlU2hvd0dyYXBoaWNJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlR3JhcGhpY0hpbnQ6IHN0cmluZyA9ICcnO1xyXG4gIHZlQXBwbHlUb0FsbE9mVHlwZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlUmVvcmRlckZpZWxkczogQmFzZUZpZWxkW10gPSBbXTtcclxuICBwcml2YXRlIHZlR3JhcGhpY1N1Z2dlc3RBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHZlU2VsZWN0ZWRGaWVsZFR5cGVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmdCA9IHRoaXMudmVTZWxlY3RlZEZpZWxkPy5GaWVsZFR5cGU7XHJcbiAgICBpZiAoZnQgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfTEFCRUxTIGFzIGFueSlbZnRdID8/IGBUaXBvICR7ZnR9YDtcclxuICB9XHJcblxyXG4gIGFpRWRpdFByb21wdDogc3RyaW5nID0gXCJcIjtcclxuICBhaUVkaXRBdHRhY2htZW50czogQXJyYXk8eyBmaWxlTmFtZTogc3RyaW5nOyBiYXNlNjRDb250ZW50OiBzdHJpbmc7IG1lZGlhVHlwZTogc3RyaW5nIH0+ID0gW107XHJcbiAgYWlFZGl0QXV0b3NhdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUVkaXRMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlFZGl0Q291bnRkb3duOiBudW1iZXIgPSAwO1xyXG4gIGFpRWRpdEVzdGltYXRlZFNlYzogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9haUNvdW50ZG93blJlZjogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIF9haUVkaXRDYW5jZWxsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUVkaXRJc092ZXJ0aW1lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0FpUHJvbXB0SGlzdG9yeTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWlFZGl0RmllbGRDb250ZXh0OiB7IGNvZGU6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gU2V6aW9uaSBpbiBjdWkgw6ggc3RhdG8gc3VkZGl2aXNvIGwndWx0aW1vIHByb21wdCBkaSBjcmVhemlvbmUgKGdlbmVyYXppb25lIHBhcmFsbGVsYSk7XHJcbiAgLy8gdnVvdG8gcXVhbmRvIGwndWx0aW1hIGNoaWFtYXRhIEFJIG5vbiBoYSByaWNoaWVzdG8gc3BsaXQuXHJcbiAgbGFzdFByb21wdFNwbGl0czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8gTnVtZXJvIGRpIHNwbGl0IGlwb3RpenphdGkgZGFsbCd1dGVudGUgcGVyIGxhIHN0aW1hIGNvc3RvIGxpdmUgKDEgPSBuZXNzdW5vIHNwbGl0KS5cclxuICAvLyBDb24gc3BsaXQgPiAxIGxlIGNoaWFtYXRlIHBhcnRvbm8gdHV0dGUgaW4gcGFyYWxsZWxvOiBuZXNzdW5hIGJlbmVmaWNpYSBkZWxsYSBjYWNoZVxyXG4gIC8vIGRlbCBzeXN0ZW0gcHJvbXB0IChza2lsbCksIHF1aW5kaSBvZ251bmEgcGFnYSBwZXIgaW50ZXJvIGkgdG9rZW4gc2tpbGwgKyBwcm9tcHQuXHJcbiAgLy8gUmFuZ2UgcmVhbGUgbGF0byBzZXJ2ZXIgKERNQUlfU0tJTExGT1JLLm1kLCBmbG9vciAyMDI2LTA3KTogMSAobmVzc3VubyBzcGxpdCkgb3BwdXJlIDMtMTIg4oCUXHJcbiAgLy8gMiBub24gw6ggcGnDuSB1biB2YWxvcmUgcG9zc2liaWxlIChzb3R0byBsZSAzIHNlemlvbmkgaWwgd2FybS11cCBjYWNoZSBub24gY29udmllbmUgbWFpLCB2ZWRpXHJcbiAgLy8gU2hvdWxkV2FybVVwQ2FjaGUpLCBxdWluZGkgcXVpIGxvIHNhbHRpYW1vIHBlciBub24gZmFyIHN0aW1hcmUgdW4gY29zdG8gcGVyIHVubyBzY2VuYXJpbyBjaGVcclxuICAvLyBpbCBzZXJ2ZXIgbm9uIHByb2R1Y2UgbWFpLlxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFJX01JTl9TUExJVF9DT1VOVCA9IDM7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUlfTUFYX1NQTElUX0NPVU5UID0gMTI7XHJcbiAgcHJpdmF0ZSBfYWlFZGl0U3BsaXRDb3VudCA9IDE7XHJcbiAgZ2V0IGFpRWRpdFNwbGl0Q291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9haUVkaXRTcGxpdENvdW50O1xyXG4gIH1cclxuICBzZXQgYWlFZGl0U3BsaXRDb3VudCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBuID0gTWF0aC5yb3VuZChOdW1iZXIodmFsdWUpKTtcclxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG4pIHx8IG4gPD0gMSkge1xyXG4gICAgICB0aGlzLl9haUVkaXRTcGxpdENvdW50ID0gMTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUFYX1NQTElUX0NPVU5ULCBuKTtcclxuICAgIHRoaXMuX2FpRWRpdFNwbGl0Q291bnQgPSBjbGFtcGVkIDwgRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgPyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA6IGNsYW1wZWQ7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRBaUVkaXRTcGxpdENvdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5haUVkaXRTcGxpdENvdW50ID0gdGhpcy5haUVkaXRTcGxpdENvdW50ID09PSAxXHJcbiAgICAgID8gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgOiB0aGlzLmFpRWRpdFNwbGl0Q291bnQgKyAxO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50QWlFZGl0U3BsaXRDb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWlFZGl0U3BsaXRDb3VudCA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudCA8PSBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA/IDFcclxuICAgICAgOiB0aGlzLmFpRWRpdFNwbGl0Q291bnQgLSAxO1xyXG4gIH1cclxuICBhaUZpZWxkU3VnZ2VzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyYXBoaWNTdWdnZXN0SGludDogc3RyaW5nID0gJyc7XHJcbiAgc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyYXBoaWNTY29wZTogc3RyaW5nID0gJ2FsbCc7XHJcbiAgZ2VuZXJhdGVCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlHZW5lcmF0ZUJhY2tncm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcmVzZW50RmllbGRUeXBlT3B0aW9uczogeyB2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAvLyBBSSBEYXRhR2V0dGVyIHNpbGVudCBsb2FkaW5nXHJcbiAgcGVuZGluZ0FpRGF0YUdldHRlckZpZWxkczogQmFzZUZpZWxkW10gPSBbXTtcclxuICBjdXJyZW50QWlEYXRhR2V0dGVyRmllbGQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gIGFpRGF0YUdldHRlckxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGFpUHJvbXB0SGlzdG9yeSgpOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uQUlQcm9tcHRzKSByZXR1cm4gW107XHJcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmZvcm0uQUlQcm9tcHRzKTsgfSBjYXRjaCB7IHJldHVybiBbXTsgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29zdGFudGkgcGVyIGxhIHN0aW1hIGRlbCBjb3N0byBBSSAodG9rZW4gc3RpbWF0aSBwZXIgdW4gcHJvbXB0IGRpIG1lZGlhIGNvbXBsZXNzaXTDoCAvIG91dHB1dCBtZWRpbztcclxuICAvLyBpbCBwcmV6em8gcGVyIHRva2VuIHZhcmlhIGludmVjZSBpbiBiYXNlIGFsIG1vZGVsbG8gcmlsZXZhdG8gbmVsIHByb21wdCwgdmVkaSBBSV9NT0RFTF9QUklDSU5HKVxyXG4gIC8vIFRva2VuIGZpc3NpIGRlaSBtb2R1bGkgc2tpbGwgKENPUkUgKyBDQU1QTyovR1JBRklDQSogY2FyaWNhdGkgdmlhIFNLSUxMRk9SSykgaW52aWF0aSBjb21lIHN5c3RlbVxyXG4gIC8vIHByb21wdCBhZCBPR05JIGNoaWFtYXRhICh1bmEgcGVyIHNwbGl0KS4gU3RpbWEgXCJhbCBtYXNzaW1vXCI6IHNvbW1hIGRpIHR1dHRpIGkgMjYgZmlsZVxyXG4gIC8vIERNQUlfRmxkSnNvbl8qLm1kICh+NDJLIHRva2VuLCBieXRlcy80LCBkb3BvIGxhIGNvbXByZXNzaW9uZSBkaSBDT1JFL01PRElGSUNBL0dSQUZJQ0FfQ09SRSBkZWxcclxuICAvLyAyMDI2LTA3KSDigJQgU0tJTExGT1JLIG5vbiBsaSBjYXJpY2EgbWFpIHR1dHRpIGluc2llbWUsIG1hIMOoIGlsIGxpbWl0ZSBzdXBlcmlvcmUgcmVhbGlzdGljbyB2aXN0b1xyXG4gIC8vIGNoZSBpbCBjbGllbnQgbm9uIHNhIHF1YWxlIHNvdHRvaW5zaWVtZSB2ZXJyw6Agc2VsZXppb25hdG8uXHJcbiAgLy8gTkI6IDEzMi4wMDAgKHZhbG9yZSBhbmNvcmEgcHJlY2VkZW50ZSkgZXJhIGluIHJlYWx0w6AgTWFpbklucHV0VG9rZW5zIHNvbW1hdG8gc3UgNSBjaGlhbWF0ZVxyXG4gIC8vIHBhcmFsbGVsZSAofjI2Sy9jaGlhbWF0YSkgZSBub24gYW5kYXZhIHVzYXRvIGNvbWUgY29zdGFudGUgcGVyIHNpbmdvbGEgY2hpYW1hdGEuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9TS0lMTF9UT0tFTlMgPSA0Ml8wMDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9UT0tFTlNfUEVSX0ZJRUxEID0gMTAwOyAgICAvLyBzdGltYSB0b2tlbiBwZXIgY2FtcG8gZGVsIGZvcm0gc2VyaWFsaXp6YXRvXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9PVVRQVVRfVE9LRU5TID0gM181MDA7ICAvLyBzdGltYSBjb25zZXJ2YXRpdmEgb3V0cHV0IEpTT04gbW9kaWZpY2F0b1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfUERGX0NIQVJTID0gMTVfMDYwOyAvLyBmaW5lc3RyYSBtYXggZXN0cmF0dGEgcGVyIGFsbGVnYXRvIFBERlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfQ0hBUlNfUEVSX1RPS0VOID0gNDsgICAgICAvLyBjaGFyL3Rva2VuIG1lZGkgcGVyIHRlc3RvIGl0YWxpYW5vXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9FVVJfVVNEX1JBVEUgPSAxLjEwOyAgIC8vIHRhc3NvIEVVUi9VU0QgYXBwcm9zc2ltYXRvXHJcblxyXG4gIC8vIE1vZGVsbG8gcmlsZXZhdG8gaW4gdGVtcG8gcmVhbGUgZGFsIHRlc3RvIGRlbCBwcm9tcHQgQUkgKFwiSGFpa3VcIi9cIlNvbm5ldFwiL1wiT3B1c1wiL1wiRmFibGVcIik7XHJcbiAgLy8gSGFpa3Ugw6ggaWwgZGVmYXVsdCBxdWFuZG8gbmVsIHByb21wdCBub24gw6ggY2l0YXRvIGVzcGxpY2l0YW1lbnRlIGFsY3VuIG1vZGVsbG9cclxuICBnZXQgYWlFZGl0RGV0ZWN0ZWRNb2RlbElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dCh0aGlzLmFpRWRpdFByb21wdCA/PyAnJykubW9kZWxJZCA/PyAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMSc7XHJcbiAgfVxyXG5cclxuICBnZXQgYWlFZGl0RGV0ZWN0ZWRNb2RlbExhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NT0RFTF9QUklDSU5HW3RoaXMuYWlFZGl0RGV0ZWN0ZWRNb2RlbElkXT8ubGFiZWwgPz8gJ0hhaWt1JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFpRWRpdFByaWNpbmcoKSB7XHJcbiAgICByZXR1cm4gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NT0RFTF9QUklDSU5HW3RoaXMuYWlFZGl0RGV0ZWN0ZWRNb2RlbElkXVxyXG4gICAgICA/PyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01PREVMX1BSSUNJTkdbJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnXTtcclxuICB9XHJcblxyXG4gIC8vIENvbiBzcGxpdCA+IDEgaWwgc2VydmVyIHZhbHV0YSBzZSBjb252aWVuZSBcInNjYWxkYXJlXCIgbGEgY2FjaGUgY29uIHVuYSBjaGlhbWF0YSBhIHZ1b3RvXHJcbiAgLy8gcHJpbWEgZGkgbGFuY2lhcmUgbGUgTiBjaGlhbWF0ZSBwYXJhbGxlbGUgKHZlZGkgU2hvdWxkV2FybVVwQ2FjaGUgaW5cclxuICAvLyBDbGF1ZGVGb3JtR2VuZXJhdG9yU2VydmljZS5jcyk6IGNvbnZpZW5lIHNvbG8gc2UgY2FjaGVXcml0ZSArIE7Dl2NhY2hlUmVhZCA8IE7Dl2lucHV0IOKAlCBjaW/DqFxyXG4gIC8vIHNlIGlsIHJpc3Bhcm1pbyBzdWxsZSBOIGxldHR1cmUgc3VwZXJhIGlsIHNvdnJhcHByZXp6byBkZWxsYSBzY3JpdHR1cmEgaW5pemlhbGUuIFF1aVxyXG4gIC8vIHJlcGxpY2hpYW1vIGxhIHN0ZXNzYSBkaXN1Z3VhZ2xpYW56YSBlIHVzaWFtbyBpbCBtaW5vcmUgZGVpIGR1ZSBjb3N0aSwgZXNhdHRhbWVudGUgY29tZSBmYVxyXG4gIC8vIGlsIHNlcnZlciAoY2hlIHF1aW5kaSBub24gc2NlZ2xpZSBtYWkgbCdvcHppb25lIHBlZ2dpb3JlKS4gSWwgcHJvbXB0L2Zvcm0gKGEgZGlmZmVyZW56YSBkZWlcclxuICAvLyB0b2tlbiBza2lsbCkgbm9uIGJlbmVmaWNpYSBtYWkgZGVsbGEgY2FjaGU6IHZpZW5lIHJpZmF0dHVyYXRvIHBlciBpbnRlcm8gYWQgb2duaSBzcGxpdC5cclxuICBwcml2YXRlIGNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKCk6IHsgbm9XYXJtdXBDb3N0OiBudW1iZXI7IHdhcm1VcENvc3Q6IG51bWJlcjsgb3V0cHV0Q29zdDogbnVtYmVyIH0ge1xyXG4gICAgY29uc3QgcHJpY2luZyA9IHRoaXMuYWlFZGl0UHJpY2luZztcclxuICAgIGNvbnN0IGZvcm1Ub2tlbnMgPSAodGhpcy5mb3JtPy5GaWVsZHM/Lmxlbmd0aCA/PyAwKSAqIHRoaXMuQUlfVE9LRU5TX1BFUl9GSUVMRDtcclxuICAgIGNvbnN0IHZhcklucHV0ID0gKHRoaXMuYWlFZGl0UHJvbXB0Py5sZW5ndGggPz8gMCkgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTlxyXG4gICAgICArIHRoaXMuYWlFZGl0QXR0YWNobWVudHMubGVuZ3RoICogKHRoaXMuQUlfUERGX0NIQVJTIC8gdGhpcy5BSV9DSEFSU19QRVJfVE9LRU4pO1xyXG4gICAgY29uc3QgbiA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudDtcclxuICAgIGNvbnN0IHByb21wdFRva2Vuc1BlckNhbGwgPSBmb3JtVG9rZW5zICsgdmFySW5wdXQ7XHJcblxyXG4gICAgY29uc3Qgbm9XYXJtdXBDb3N0ID0gbiAqICh0aGlzLkFJX1NLSUxMX1RPS0VOUyArIHByb21wdFRva2Vuc1BlckNhbGwpICogcHJpY2luZy5pbnB1dDtcclxuICAgIGNvbnN0IHdhcm1VcENvc3QgPSB0aGlzLkFJX1NLSUxMX1RPS0VOUyAqIHByaWNpbmcuY2FjaGVXcml0ZVxyXG4gICAgICArIG4gKiAodGhpcy5BSV9TS0lMTF9UT0tFTlMgKiBwcmljaW5nLmNhY2hlUmVhZCArIHByb21wdFRva2Vuc1BlckNhbGwgKiBwcmljaW5nLmlucHV0KTtcclxuXHJcbiAgICByZXR1cm4geyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QsIG91dHB1dENvc3Q6IHRoaXMuQUlfT1VUUFVUX1RPS0VOUyAqIHByaWNpbmcub3V0cHV0IH07XHJcbiAgfVxyXG5cclxuICAvLyB0cnVlIHF1YW5kbywgcGVyIGxvIHNwbGl0IGlwb3RpenphdG8sIGlsIHdhcm0tdXAgY29zdGVyZWJiZSBtZW5vIGRlbCBwcmV6em8gcGllbm8g4oCUIGNpb8OoXHJcbiAgLy8gcXVhbmRvIGlsIHNlcnZlciAoU2hvdWxkV2FybVVwQ2FjaGUpIGZhcmViYmUgZGF2dmVybyBwYXJ0aXJlIGxhIGNoaWFtYXRhIGEgdnVvdG8uXHJcbiAgZ2V0IGFpRWRpdFNwbGl0V2FybVVwQXBwbGllcygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFpRWRpdFNwbGl0Q291bnQgPD0gMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgeyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QgfSA9IHRoaXMuY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMoKTtcclxuICAgIHJldHVybiB3YXJtVXBDb3N0IDwgbm9XYXJtdXBDb3N0O1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY29sYSBpbCBjb3N0byAoVVNEKSBkZWxsYSBjaGlhbWF0YSBwcmluY2lwYWxlIGRhdG8gaWwgcHJlenpvIGRhIGFwcGxpY2FyZSBhaSB0b2tlbiBza2lsbFxyXG4gIC8vIGluIGFzc2VuemEgZGkgc3BsaXQgKGNhY2hlV3JpdGUgcGVyIGlsIHByaW1vIHVzbywgY2FjaGVSZWFkIHBlciBnbGkgdXNpIHN1Y2Nlc3NpdmkpLiBDb25cclxuICAvLyBzcGxpdCA+IDEgdXNhIGlsIG1pbm9yZSB0cmEgY29zdG8tY29uLXdhcm11cCBlIGNvc3RvLXNlbnphICh2ZWRpIGNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKS5cclxuICBwcml2YXRlIGNvbXB1dGVBaUVkaXRDb3N0VXNkKHNraWxsVG9rZW5QcmljZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG4gPSB0aGlzLmFpRWRpdFNwbGl0Q291bnQ7XHJcblxyXG4gICAgaWYgKG4gPD0gMSkge1xyXG4gICAgICBjb25zdCBwcmljaW5nID0gdGhpcy5haUVkaXRQcmljaW5nO1xyXG4gICAgICBjb25zdCBmb3JtVG9rZW5zID0gKHRoaXMuZm9ybT8uRmllbGRzPy5sZW5ndGggPz8gMCkgKiB0aGlzLkFJX1RPS0VOU19QRVJfRklFTEQ7XHJcbiAgICAgIGNvbnN0IHZhcklucHV0ID0gKHRoaXMuYWlFZGl0UHJvbXB0Py5sZW5ndGggPz8gMCkgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTlxyXG4gICAgICAgICsgdGhpcy5haUVkaXRBdHRhY2htZW50cy5sZW5ndGggKiAodGhpcy5BSV9QREZfQ0hBUlMgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTik7XHJcbiAgICAgIHJldHVybiAodGhpcy5BSV9TS0lMTF9UT0tFTlMgKiBza2lsbFRva2VuUHJpY2UgKyAoZm9ybVRva2VucyArIHZhcklucHV0KSAqIHByaWNpbmcuaW5wdXQgKyB0aGlzLkFJX09VVFBVVF9UT0tFTlMgKiBwcmljaW5nLm91dHB1dCkgLyAxXzAwMF8wMDA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QsIG91dHB1dENvc3QgfSA9IHRoaXMuY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMoKTtcclxuICAgIHJldHVybiAoTWF0aC5taW4obm9XYXJtdXBDb3N0LCB3YXJtVXBDb3N0KSArIG91dHB1dENvc3QpIC8gMV8wMDBfMDAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFpRWRpdENvc3RGaXJzdEV1cigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZUFpRWRpdENvc3RVc2QodGhpcy5haUVkaXRQcmljaW5nLmNhY2hlV3JpdGUpIC8gdGhpcy5BSV9FVVJfVVNEX1JBVEU7XHJcbiAgfVxyXG5cclxuICBnZXQgYWlFZGl0Q29zdFN1YnNlcXVlbnRFdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXB1dGVBaUVkaXRDb3N0VXNkKHRoaXMuYWlFZGl0UHJpY2luZy5jYWNoZVJlYWQpIC8gdGhpcy5BSV9FVVJfVVNEX1JBVEU7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRBaUVkaXRDb3N0KGV1cjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBldXIudG9GaXhlZCg2KTtcclxuICB9XHJcblxyXG4gIGdldCBpc05ld0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybT8uSUQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29uZmlndXJhdG9yVGhlbWUnXSB8fCBjaGFuZ2VzWydjb25maWd1cmF0b3JUaGVtZUNzcyddKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVRoZW1lKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gUmltdW92ZSB2YXJzIHByZWNlZGVudGkgZGFsIGhvc3QgZSBkYSA6cm9vdFxyXG4gICAgQXJyYXkuZnJvbShlbC5zdHlsZSkuZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCctLWNvbmYtJykpLmZvckVhY2gocCA9PiBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKSk7XHJcbiAgICBBcnJheS5mcm9tKHJvb3Quc3R5bGUpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aCgnLS1jb25mLScpKS5mb3JFYWNoKHAgPT4gcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKSk7XHJcblxyXG4gICAgY29uc3QgcGFyc2VkRnJvbUNzcyA9IHRoaXMuY29uZmlndXJhdG9yVGhlbWVDc3MgPyB0aGlzLnBhcnNlQ3NzVGhlbWUodGhpcy5jb25maWd1cmF0b3JUaGVtZUNzcykgOiBudWxsO1xyXG4gICAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IChwYXJzZWRGcm9tQ3NzIHx8IHRoaXMuY29uZmlndXJhdG9yVGhlbWUpXHJcbiAgICAgID8geyAuLi4ocGFyc2VkRnJvbUNzcyA/PyB7fSksIC4uLih0aGlzLmNvbmZpZ3VyYXRvclRoZW1lID8/IHt9KSB9XHJcbiAgICAgIDogbnVsbDtcclxuXHJcbiAgICBpZiAobWVyZ2VkKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKG1lcmdlZCkuZm9yRWFjaCgoW2ssIHZdKSA9PiBlbC5zdHlsZS5zZXRQcm9wZXJ0eShrLCB2LCAnaW1wb3J0YW50JykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByb3BhZ2EgaSB2YWxvcmkgZWZmZXR0aXZpIChTQ1NTIGRlZmF1bHQgKyBvdmVycmlkZSB0ZW1hKSBzdSA6cm9vdCBwZXJjaMOpIGkgZGlhbG9nc1xyXG4gICAgLy8gTWF0ZXJpYWwgcmVuZGVyaXp6YW5vIG5lbCBjZGstb3ZlcmxheSBmdW9yaSBkYWxsJ2hvc3QgZSBub24gZXJlZGl0YW5vIGxlIHZhciBkaSA6aG9zdFxyXG4gICAgY29uc3QgY29tcHV0ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcclxuICAgIFsnLS1jb25mLWdyYWRpZW50JywgJy0tY29uZi1iZy1wYWdlJywgJy0tY29uZi1yYWRpdXMnLCAnLS1jb25mLW1vZGFsLXJhZGl1cycsXHJcbiAgICAgICctLWNvbmYtYWNjZW50JywgJy0tY29uZi1hY2NlbnQtcmdiJywgJy0tY29uZi1wcmltYXJ5JywgJy0tY29uZi1wcmltYXJ5LXJnYicsXHJcbiAgICAgICctLWNvbmYtc3RlcC1zZWxlY3RlZCcsICctLWNvbmYtc3RlcC1lZGl0JywgJy0tY29uZi10YWJsZS1oZWFkZXItYmcnLFxyXG4gICAgICAnLS1jb25mLXNlYXJjaC1iZycsICctLWNvbmYtdGFibGUtYmcnLCAnLS1jb25mLWNhcmQtYmcnLCAnLS1jb25mLWZvbnQtZmFtaWx5JyxcclxuICAgICAgJy0tY29uZi1zdGVwcGVyLWhlYWRlci1iZycsICctLWNvbmYtc3RlcHBlci1jb250ZW50LWJnJywgJy0tY29uZi1zdGVwLWljb24tZWRpdC1iZycsXHJcbiAgICAgICctLWNvbmYtaGludC1idG4tYmcnLCAnLS1jb25mLWhpbnQtYnRuLWhvdmVyLWJnJywgJy0tY29uZi1idG4tY29sb3InXHJcbiAgICBdLmZvckVhY2godmFyTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSh2YXJOYW1lKS50cmltKCk7XHJcbiAgICAgIGlmICh2YWx1ZSkgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJOYW1lLCB2YWx1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDc3NUaGVtZShjc3M6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcbiAgICBjb25zdCByZWdleCA9IC8oLS1jb25mLVteOlxcc10rKVxccyo6XFxzKihbXjt9XSspL2c7XHJcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XHJcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhjc3MpKSAhPT0gbnVsbCkge1xyXG4gICAgICByZXN1bHRbbWF0Y2hbMV0udHJpbSgpXSA9IG1hdGNoWzJdLnRyaW0oKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBHYXJhbnRpc2NlIGNoZSBsZSB2YXJpYWJpbGkgQ1NTIGRpIGRlZmF1bHQgKGRlZmluaXRlIGluIDpob3N0IFNDU1MpIHZlbmdhbm9cclxuICAgIC8vIHByb3BhZ2F0ZSBzdSA6cm9vdCBhbmNoZSBxdWFuZG8gY29uZmlndXJhdG9yVGhlbWUgbm9uIMOoIGZvcm5pdG9cclxuICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgQXJyYXkuZnJvbShyb290LnN0eWxlKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoJy0tY29uZi0nKSkuZm9yRWFjaChwID0+IHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkocCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTW9kZSA9IHRoaXMuZGVidWdNb2RlO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnbmdPbkluaXQgLSBjb25maWd1cmF0aW9ucycsIHRoaXMuY29uZmlndXJhdGlvbnMpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnbmdPbkluaXQgLSBmb3JtSUQnLCB0aGlzLmZvcm1JRCk7XHJcblxyXG4gICAgdGhpcy5iYXNlU2VydmVyVXJsID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5iYXNlU2VydmVyVXJsO1xyXG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5jb250ZXh0O1xyXG4gICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICAgIC8vIHRoaXMuZm9ybUlEID0gdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5mb3JtSUQ7XHJcbiAgICB0aGlzLnVzZXJUb2tlbiA9IHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcudXNlclRva2VuO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm07XHJcbiAgICB0aGlzLm9yZ2FJRCA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLm9yZ2FJRDtcclxuICAgIHRoaXMuVXNlcklEID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuVXNlcklEO1xyXG4gICAgdGhpcy5pbm5lckZvcm1NYW5hZ21lbnQgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1NYW5hZ21lbnQ7XHJcbiAgICB0aGlzLmlubmVyRm9ybVJlZiA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybVJlZjtcclxuXHJcbiAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKCk7XHJcbiAgICB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XHJcbiAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLlNldENvbnRleHQodGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgZ2xpIGVuZHBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQgYSBwYXJ0aXJlIGRhbGwndXJsIGJhc2UgZGVsIHNlcnZlclxyXG4gICAqIGEgY3VpIHNpIGRldmUgY29ubmV0dGVyZSBlIGFsIHRva2VuIGRhIHBhc3NhcmUgcGVyIGF1dGVudGljYXJzaS5cclxuICAgKiBTZSBsYSBwcm9wcmlldMOgIGJhc2VTZXJ2ZXJVcmwgw6ggbnVsbCBlIG5vbiBzb25vIHN0YXRpIGNvbmZpZ3VyYXRpIGkgdmFyaSBlbmRwb2ludCBhbGxvcmFcclxuICAgKiBub24gdmllbmUgZXNlZ3VpdGEgbmVzc3VuYSBjaGlhbWF0YSBodHRwIHBlciByZWN1cGVyYXJlL3NhbHZhcmUgaSBkYXRpLlxyXG4gICAqL1xyXG4gIGNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmIHRoaXMuYmFzZVNlcnZlclVybCkge1xyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiA9XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5Db25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKFxyXG4gICAgICAgICAgdGhpcy5iYXNlU2VydmVyVXJsLFxyXG4gICAgICAgICAgdGhpcy51c2VyVG9rZW5cclxuICAgICAgICApO1xyXG4gICAgICBpZiAodGhpcy5mb3JtSUQpIHtcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQuUGFyYW1zID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0cmluZ1Nhbml0aXplcih2YWx1ZSkge1xyXG4gICAgaWYgKCFVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXModmFsdWUpKSB7XHJcbiAgICAgIGFsZXJ0KFwiZXJyb3JlISBlcmFubyBwcmVzZW50aSBkZWxsZSBwYXJlbnRlc2kuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldE5hbWUoTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RyaW5nU2FuaXRpemVyKE5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IFJlZ0V4cFBhcmV0ZXNpcyA9IC9bXFwoXFwpXFxbXFxdXFx7XFx9XS9nO1xyXG4gICAgICAvLyBSaW11b3ZpIHR1dHRlIGxlIHBhcmVudGVzaSBub24gYmlsYW5jaWF0ZVxyXG4gICAgICB0aGlzLmZvcm0uTmFtZSA9IE5hbWUucmVwbGFjZShSZWdFeHBQYXJldGVzaXMsICcnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0uSUQgPT0gbnVsbCkgeyAvLyB0aGlzLmZvcm0uQ29kZSA9PSBudWxsIHx8IHRoaXMuZm9ybS5Db2RlID09IHVuZGVmaW5lZCB8fCB0aGlzLmZvcm0uQ29kZSA9PSBcIlwiICl7XHJcbiAgICAgIHRoaXMuc2V0Q29kZSh0aGlzLmZvcm0uTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldENvZGUoQ29kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0cmluZ1Nhbml0aXplcihDb2RlKTtcclxuXHJcbiAgICBjb25zdCBSZWdFeHBQbGFpbiA9IC9bXlxcd10vZztcclxuICAgIHRoaXMuZm9ybS5Db2RlID0gQ29kZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoUmVnRXhwUGxhaW4sIFwiXCIpO1xyXG4gIH1cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudCkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQua2V5Q29kZTsgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgaWYgKGsgPT0gMzQpIHtcclxuICAgICAgZXZlbnQua2V5Q29kZSA9IDA7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIElNUE9SVCBGVU5DVElPTiAqL1xyXG4gIG9uSW1wb3J0KGV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChzZWxlY3RlZEZpbGUsIFwiVVRGLThcIik7XHJcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnb25JbXBvcnQgLSBmaWxlUmVhZGVyLnJlc3VsdC50b1N0cmluZygpJywgZmlsZVJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuaW1wb3J0ZWRNb2R1bGUgPSBmaWxlUmVhZGVyLnJlc3VsdC50b1N0cmluZygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW1wb3J0ZWRNb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjb25maXJtKFwic3RhaSBwZXIgc292cmFzY3JpdmVyZSBpbCBtb2R1bG9cIikpIHtcclxuICAgICAgICAgIC8vIGNoaWFtbyBpbCBwYXJzZSBjb3PDrCBkYSBub24gY3JlYXJlIHVuIHJlZmVyZW5jZUJpbmRpbmdcclxuICAgICAgICAgIHZhciBpbXBvcnRlZEZvcm06IEZvcm0gPSBKU09OLnBhcnNlKHRoaXMuaW1wb3J0ZWRNb2R1bGUpO1xyXG4gICAgICAgICAgaW1wb3J0ZWRGb3JtLklEID0gXCJcIjtcclxuICAgICAgICAgIGltcG9ydGVkRm9ybS5OYW1lID0gaW1wb3J0ZWRGb3JtLk5hbWUgKyBcIiAoSW1wb3J0YXRvKVwiO1xyXG5cclxuICAgICAgICAgIGltcG9ydGVkRm9ybSA9IHRoaXMuc2V0SW1wb3J0ZWRGb3JtKGltcG9ydGVkRm9ybSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUoaW1wb3J0ZWRGb3JtKTtcclxuICAgICAgICAgIHRoaXMuc2V0TmFtZShpbXBvcnRlZEZvcm0uTmFtZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jbG9zZUltcG9ydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhbGVydChcInNlbGV6aW9uYSB1biBmaWxlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZmlsZVJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGFsZXJ0KFwic2VsZXppb25hIHVuIGZpbGUgdmFsaWRvIG8gY29udHJvbGxhIGNoZSBub24gc2lhIGNvcnJvdHRvXCIpO1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRJbXBvcnRlZEZvcm0oZm9ybTogRm9ybSkge1xyXG5cclxuICAgIC8vIE1vZGlmaWNhIGRlbCBjcmVhdGlvbiB1c2VyIHN1IEltcG9ydFxyXG4gICAgZm9ybS5DcmVhdGlvblVzZXIgPSB0aGlzLlVzZXJJRDtcclxuXHJcbiAgICAvLyBNb2RpZmljYSBkZWkgRmllbGQgc3UgSW1wb3J0XHJcbiAgICBmb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl0pIHtcclxuICAgICAgICAoZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgICAgICBhdHRhY2htZW50LklEID0gMDtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0TW9kdWxlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dJbXBvcnRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW1wb3J0LCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIC8vIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICAvLyBtYXhIZWlnaHQ6IFwiODAlXCIsXHJcbiAgICAgIC8vIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VJbXBvcnQoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0ltcG9ydFJlZi5jbG9zZSgpO1xyXG4gIH1cclxuICAvKiBFTkQgSU1QT1JUIEZVTkNUSU9OICovXHJcblxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBkaSBlc3BvcnRhemlvbmUgbW9kdWxvXHJcbiAgICovXHJcblxyXG4gIGV4cG9ydCgpIHtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5FeHBvcnRCeUlERW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChiYXNlNjRyZXM6IHN0cmluZykgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBuZXdCbG9iID0gbmV3IEJsb2IoW2Jhc2U2NHJlc10sIHsgdHlwZTogXCJ0ZXh0L3BsYWluXCIgfSk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ld0Jsb2IpO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICBsaW5rLmhyZWYgPSBkYXRhO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcImV4cG9ydF9cIiArIHRoaXMuZm9ybUlEICsgXCJfZm9ybS50eHRcIjsgLy8gc2V0IGEgbmFtZSBmb3IgdGhlIGZpbGVcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKG5ldyBGb3JtKCkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB0dXR0aSBpIHJlY29yZCBzYWx2YXRpIHBlciB1bmEgcGFydGljb2xhcmUgRm9ybS5cclxuICAgKiBMYSBjaGlhbWF0YSB2aWVuZSBlZmZldHR1YXRhIHNvbG8gc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gbCdlbmRQb2ludCBkYSB1c2FyZS5cclxuICAgKi9cclxuICBnZXRGb3JtQnlJRCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtSUQgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50XHJcbiAgICApIHtcclxuICAgICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCxcclxuICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKG5ldyBGb3JtKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJvIGwnZXhwb3J0IGRlbCBmb3JtXHJcbiAgICovXHJcblxyXG4gIGNvbmZpZ3VyZUV4cG9ydChyZXM6IEZvcm0pIHtcclxuXHJcbiAgICAvKiBnZXR0aW5nIHJlYWR5IGZvciBleHBvcnQgKi9cclxuICAgIGxldCBjbG9uZSA9IG5ldyBGb3JtKCk7XHJcbiAgICBjbG9uZS5Db2RlID0gXCJJTVBPUlRfXCIgKyByZXMuQ29kZTtcclxuICAgIGNsb25lLk5hbWUgPSBcImltcG9ydF9cIiArIHJlcy5OYW1lO1xyXG4gICAgY2xvbmUuRGVzY3JpcHRpb24gPSByZXMuRGVzY3JpcHRpb247XHJcbiAgICBjbG9uZS5Gb3JtU2NhbGFyVHlwZSA9IHJlcy5Gb3JtU2NhbGFyVHlwZTtcclxuICAgIGNsb25lLkZvcm1GaWVsZHNHcm91cHMgPSByZXMuRm9ybUZpZWxkc0dyb3VwcztcclxuICAgIGNsb25lLkFjdGlvbnNPblJlY29yZCA9IHJlcy5BY3Rpb25zT25SZWNvcmQ7XHJcbiAgICBjbG9uZS5GaWVsZHMgPSByZXMuRmllbGRzO1xyXG4gICAgY2xvbmUuT2JqZWN0RmllbGRzID0gcmVzLk9iamVjdEZpZWxkcztcclxuICAgIGNsb25lLklubmVyRm9ybXMgPSByZXMuSW5uZXJGb3JtcztcclxuICAgIGNsb25lLlJvb3RFbnRpdHlJRCA9IHJlcy5Sb290RW50aXR5SUQ7XHJcbiAgICBjbG9uZS5PcmdhSUQgPSByZXMuT3JnYUlEO1xyXG5cclxuICAgIHRoaXMuZG93bmxvYWROYW1lID0gXCJleHBvcnRfXCIgKyByZXMuTmFtZTtcclxuICAgIHRoaXMuc3RyaW5naWZpZWRGb3JtID0gSlNPTi5zdHJpbmdpZnkoY2xvbmUpO1xyXG4gICAgdGhpcy5kb3dubG9hZEpzb25IcmVmID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcclxuICAgICAgXCJkYXRhOnRleHQvanNvbjtjaGFyc2V0PVVURi04LFwiICtcclxuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc3RyaW5naWZpZWRGb3JtKVxyXG4gICAgKTtcclxuXHJcbiAgICAvKiBlbmQgZXhwb3J0ICovXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdGlwbyBkaSB2aXN1YWxpenphemlvbmUgZGVsbGEgZm9ybS5cclxuICAgKiBTZSBsJ3V0ZW50ZSBzY2VnbGllIHVuYSB2aXN1YWxpenphemlvbmUgcmFnZ3J1cHBhdGEgaWwgbWV0b2RvIGFnZ2l1bmdlIGFsIEZvcm1Hcm91cCB1biBudW92b1xyXG4gICAqIGNvbnRyb2xsbyBwZXIgbCdhcnJheSBkZWkgbm9taSBkZWxsZSBzZXppb25pIGRhIGNyZWFyZS5cclxuICAgKi9cclxuICBvbkNoYW5nZUZvcm1TY2FsYXJUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2UpIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Gb3JtR3JvdXAuY29udGFpbnMoXCJGb3JtRmllbGRzR3JvdXBzXCIpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJGb3JtRmllbGRzR3JvdXBzXCIpO1xyXG4gICAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJGb3JtRmllbGRzR3JvdXBzXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLCBbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgIEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZm9ybUZvcm1Hcm91cC5jb250YWlucyhcIkZvcm1GaWVsZHNHcm91cHNcIikpXHJcbiAgICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJGb3JtRmllbGRzR3JvdXBzXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtRm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY29uZmlndXJlQ29sdW1ucygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGludm9jYXRvIGFsIGtleXVwIG5lbGwnaW5wdXQgcGVyIGluc2VyaXJlIGkgbm9taSBkZWxsZSBzZXppb25pIHBlciBsYSB2aXN1YWxpenphemlvbmVcclxuICAgKiByYWdncnVwcGF0YSBkZWxsYSBmb3JtLiBRdWFudG8gbCd1dGVudGUgcHJlbWUgaWwgdGFzdG8gaW52aW8gdmllbmUgYWdnaXVudG8gaWwgbnVvdm8gbm9tZSBhbGxlXHJcbiAgICogc2V6aW9uaSBkaXNwb2JpbGkgc2Ugbm9uIG5lIGVzaXN0ZSB1bmEgY29uIGxvIHN0ZXNzbyBub21lLlxyXG4gICAqIEBwYXJhbSBldmVudCBFdmVudG8gY2hlIHJhcHByZXNlbnRhIGlsIGtleXVwIHN1bGxhIHRhc3RpZXJhLlxyXG4gICAqL1xyXG4gIG9uRm9ybUZpZWxkR3JvdXBOYW1lS2V5VXAoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSBcIkVudGVyXCIgfHwgZXZlbnQuY29kZSA9PT0gXCJOdW1wYWRFbnRlclwiKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMpIHtcclxuICAgICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3VwcyA9IG5ldyBBcnJheTxGb3JtRmllbGRHcm91cD4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZpbmQoXHJcbiAgICAgICAgICAobikgPT4gbi5OYW1lID09IHRoaXMuZm9ybUZpZWxkR3JvdXBOYW1lXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5wdXNoKHsgTmFtZTogdGhpcy5mb3JtRmllbGRHcm91cE5hbWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gSW1wb3N0byBpbCBudW92byB2YWxvcmUgZGVsIEZvcm1Db250cm9sIHBlciBhZ2dpb3JuYXJlIGxvIHN0YXRvIGRlbGxhIGZvcm0uXHJcbiAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm1GaWVsZHNHcm91cHNcIl0uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHNcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtRmllbGRHcm91cE5hbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZEdyb3VwT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpbXVvdmVyZSBsYSBzZXppb25lIHNlbGV6aW9uYXRhIGRhIHF1ZWxsZSBkaXNwb25pYmlsaSBwZXIgbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gZ3JvdXBOYW1lIE5vbWUgZGVsbGEgc2V6aW9uZSBkYSBlbGltaW5hcmUuXHJcbiAgICovXHJcbiAgb25EZWxldGVGb3JtRmllbGRHcm91cE5hbWUoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLnNwbGljZShcclxuICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMuZmluZEluZGV4KChnKSA9PiBnLk5hbWUgPT09IGdyb3VwTmFtZSksXHJcbiAgICAgIDFcclxuICAgICk7XHJcbiAgICAvLyBJbXBvc3RvIGlsIG51b3ZvIHZhbG9yZSBkZWwgRm9ybUNvbnRyb2wgcGVyIGFnZ2lvcm5hcmUgbG8gc3RhdG8gZGVsbGEgZm9ybS5cclxuICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm1GaWVsZHNHcm91cHNcIl0uc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzXHJcbiAgICApO1xyXG4gICAgLy8gU2UgZXNpc3Rvbm8gRmllbGQgbGVnYXRpIGFsbGEgc2V6aW9uZSBjaGUgc2kgdnVvbGUgZWxpbWluYXJlIGFsbG9yYSByb21wbyBpbCBsZWdhbWUuXHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcy5maW5kKChmKSA9PiBmLkZpZWxkR3JvdXAgPT0gZ3JvdXBOYW1lKSkge1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbHRlcigoZikgPT4gZi5GaWVsZEdyb3VwID09IGdyb3VwTmFtZSkuZm9yRWFjaChcclxuICAgICAgICAoZikgPT4gKGYuRmllbGRHcm91cCA9IG51bGwpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZEdyb3VwT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25FZGl0Rm9ybUZpZWxkR3JvdXBOYW1lKGZvcm1GaWVsZEdyb3VwOiBGb3JtRmllbGRHcm91cCkge1xyXG5cclxuICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlByb21wdChcclxuICAgICAgXCJNb2RpZmljYSBpbCBub21lXCIsXHJcbiAgICAgIChuYW1lKSA9PiB7XHJcbiAgICAgICAgZm9ybUZpZWxkR3JvdXAuTmFtZSA9IG5hbWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIENsb25hIHVuIG9nZ2V0dG8gZXNjbHVkZW5kbyByaWZlcmltZW50aSBjaXJjb2xhcmkgZSBGb3JtRm9ybUdyb3VwICovXHJcbiAgcHJpdmF0ZSBzYWZlQ2xvbmU8VD4ob2JqOiBUKTogVCB7XHJcbiAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgaWYgKGtleSA9PT0gJ0Zvcm1Gb3JtR3JvdXAnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBxdWFuZG8gc2kgdnVvbGUgYWdnaXVuZ2VyZSB1biBudW92byBjYW1wbyBvIHNpIHZ1b2xlIG1vZGlmaWNhcmUgdW5vIGVzaXN0ZW50ZS5cclxuICAgKiBNZW1vcml6emEgbCdldmVudHVhbGUgRmllbGQgc2NlbHRvIG9uZSBjcmVhIHVubyBudW92byBwcmltYSBkaSBhcHJpcmUgaWwgZGlhbG9nIHBlciBtb2RpZmljYXJsby9hZ2dpdW5nZXJsby5cclxuICAgKiBAcGFyYW0gZmllbGQgT2dnZXR0byBCYXNlRmllbGQgZGEgbW9kaWZpY2FyZS4gU2UgbnVsbCBuZSB2aWVuZSBjcmVhdGEgdW5hIG51b3ZhIGlzdGFuemEgcGVyIGwnYWdnaXVudGEuXHJcbiAgICovXHJcbiAgb3BlbkZpZWxkRGlhbG9nKGZpZWxkOiBCYXNlRmllbGQgPSBudWxsKSB7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9wZW5GaWVsZERpYWxvZ1wiLCBmaWVsZCk7XHJcblxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUoZmllbGQpO1xyXG5cclxuICAgICAgLy8gRGF0byBjaGUgY29uIGlsIEpTT04ucGFyc2Ugc2kgcGVyZGUgcGVyIHN0cmFkYSBsYSBmb3JtdWxhLCBsYSByaW1ldHRvIGRvcG8uXHJcbiAgICAgIC8vIFRhbnRvIG9yYW1haSBpbCByaWZlcmltZW50byBjb24gXCJmaWVsZFwiIMOoIHN0YXRvIHBlcnNvIGUgc3RpYW1vIHBhc3NhbmRvIHVuYSBzdHJpbmdhXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gZmllbGQuRm9ybXVsYTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiBcIlwiLCBMYWJlbHN0eWxlQ1NTOiBcIlwiLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgaGVpZ2h0OiBcIjgwJVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIHNhbHZhIGlsIGNhbXBvIGFwcGVuYSBjcmVhdG8gbyBtb2RpZmljYXRvLlxyXG4gICAqIFByaW1hIGRlbCBzYWx2YXRhZ2dpbyBjb250cm9sbGEgc2UgZXNpc3RlIHVuIGFsdHJvIGNhbXBvIGNvbiBsYSBzdGVzc2EgbGFiZWwsIGluIHF1ZXN0b1xyXG4gICAqIGNhc2UgZ2VuZXJlIHVuIGVycm9yZSAoaSBjYW1waSBkZXZvbm8gYXZlcmUgbm9taSwgZSBxdWluZGkgbGFiZWwsIHVuaXZvY2hlIC0gaSBub21pIHZlbmdvbm9cclxuICAgKiByaWNhdmF0aSB1bmVuZG8gbGUgcGFyb2xlIGNoZSBmb3JtYW5vIGxhIGxhYmVsIHRyYW1pdGUgXCJfXCIpLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBzYWx2YXJlXHJcbiAgICogQHBhcmFtIHJlb3BlbiBzZSBwcmVzZW50ZSByaWFwcmUgbGEgZGlhbG9nIGRpIG1vZGlmaWNhIGRlbCBjYW1wbyBwZXNjYW5kbyBkYWxsYSBsaXN0YSBpbCBwcm9zc2ltbyBpbiBjYXNvIGRpIHZhbG9yZSBbMV0gbyBpbCBwcmVjZWRlbnRlIGluIGNhc28gZGkgdmFsb3JlIFstMV1cclxuICAgKi9cclxuICBvblNhdmVGaWVsZChldjogeyBmaWVsZDogQmFzZUZpZWxkLCByZW9wZW46IG51bWJlciB9KSB7XHJcbiAgICBsZXQgZmllbGQgPSBldi5maWVsZDtcclxuICAgIGxldCByZW9wZW4gPSBldi5yZW9wZW47XHJcblxyXG4gICAgLy8gc2UgYyfDqCBpbCBjYW1wb1xyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIC8vIGNvbnRyb2xsbyBjaGUgbm9uIGNpIHNpYSB1biBhbHRybyBjYW1wbyBjb24gbG8gc3Rlc3NvIGNvZGUgKGxhYmVsKSBlIG5vbiBzaWEgZXNzbyBzdGVzc29cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMgJiZcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbmQoXHJcbiAgICAgICAgICAoZiwgaSkgPT5cclxuICAgICAgICAgICAgZi5MYWJlbCA9PT0gZmllbGQuTGFiZWwgJiZcclxuICAgICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID09IG51bGxcclxuICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICA6IHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9PSBpKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhcclxuICAgICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGNhbXBpIGNvbiBsbyBzdGVzc28gQ29kaWNlLlwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgY2FtcGkgY29uIGxvIHN0ZXNzbyBDb2RpY2UuXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzZSBobyB1biBpbmRpY2UgaW4gY3VpIGluc2VyaXJlIGlsIGNhbXBvICh2ZXJvc2ltaWxtZW50ZSBzb25vIGluIG1vZGlmaWNhKVxyXG4gICAgICBpZiAodGhpcy5pbmRleFNlbGVjdGVkRmllbGQgIT0gbnVsbCAmJiB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZF0gPSBmaWVsZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDDqCB1biBjYW1wbyBudW92b1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICAgICAgLy8gc2Ugw6ggaWwgcHJpbW8gY2FtcG8gY2hlIHN0byBpbnNlcmVuZG8gcHJlcGFybyB1biBhcnJheVxyXG4gICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcyA9IG5ldyBBcnJheTxCYXNlRmllbGQ+KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib25TYXZlRmllbGRcIiwgdGhpcy5mb3JtKVxyXG4gICAgdGhpcy5jbG9zZUZpZWxkRGlhbG9nKCk7XHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hGaWVsZFR5cGVPcHRpb25zKCk7XHJcblxyXG4gICAgaWYgKHJlb3BlbiAhPSAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgKyByZW9wZW5dO1xyXG4gICAgICB0aGlzLm9wZW5GaWVsZERpYWxvZyhuZXdGaWVsZClcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52aXN1YWxFZGl0b3JBY3RpdmUpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBjb250cm9sbGEgc2UgbG8gc3RlcCBwZXIgbCdhZ2dpdW50YSBkZWkgY2FtcGkgbmVsbGEgZm9ybSDDqCBjb25jbHVzby5cclxuICAgKiBAcmV0dXJucyBTZSBUUlVFIGxvIHN0ZXAgdmllbmUgY29uc2lkZXJhdG8gY29tcGxldGF0byBlZCDDqCBwb3NzYmlsZSBwYXNzYXJlIGFsIHN1Y2Nlc3Npdm8uXHJcbiAgICovXHJcbiAgaXNGaWVsZFN0ZXBDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybS5GaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm0uRm9ybVNjYWxhclR5cGUgIT0gRm9ybVNjYWxhclR5cGVFbnVtLlNlbXBsaWNlICYmXHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmluZCgoZikgPT4gIWYuRmllbGRHcm91cClcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhcHJpcmUgaWwgZGlhbG9nIGRpIGNyZWF6aW9uZS9tb2RpZmljYSBkZWxsZSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICAgKiBTZSBpbCBwYXJhbWV0cm8gcGFzc2F0byDDqCBudWxsIHNvbm8gaW4gYWdnaXVudGEgYWx0cmltZW50aSBzb25vIGluIG1vZGlmaWNhLlxyXG4gICAqIEBwYXJhbSBpbm5lbnJGb3JtIEZvcm0gZGkgZGV0dGFnbGlvIGRhIG1vZGlmaWNhcmUgKHNlIG51bGwgYWxsb3JhIHZhZG8gaW4gYWRkKS5cclxuICAgKi9cclxuICBvcGVuSW5uZXJGb3JtRGlhbG9nKGlubmVuckZvcm06IEZvcm0gPSBudWxsKSB7XHJcbiAgICB0aGlzLmlubmVyRm9ybUNvbmZpZyA9IG5ldyBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29uZmlnKCk7XHJcbiAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtTWFuYWdtZW50ID1cclxuICAgICAgdHJ1ZTtcclxuICAgIC8vIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtXHJcbiAgICAvLyB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybS5PbGROYW1lXHJcbiAgICAvLyB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtUmVmXHJcbiAgICAvLyBbZm9ybV09XCJzZWxlY3RlZElubmVyRm9ybVwiXHJcbiAgICAvLyBbaW5uZXJGb3JtTWFuYWdtZW50XT1cInRydWVcIlxyXG4gICAgLy8gW2lubmVyRm9ybVJlZl09XCJkaWFsb2dJbm5lckZvcm1SZWZcIlxyXG5cclxuICAgIGlmIChpbm5lbnJGb3JtKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA9IHRoaXMuZm9ybS5Jbm5lckZvcm1zLmluZGV4T2YoaW5uZW5yRm9ybSk7XHJcblxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbm5lbnJGb3JtKSk7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0uT2xkTmFtZSA9IGlubmVuckZvcm0uTmFtZTtcclxuICAgICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm0gPVxyXG4gICAgICAgIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5uZW5yRm9ybSkpO1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybS5PbGROYW1lID1cclxuICAgICAgICBpbm5lbnJGb3JtLk5hbWU7XHJcblxyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuZmluZEluZGV4KFxyXG4gICAgICAgIChmKSA9PiBmLkxhYmVsID09PSBpbm5lbnJGb3JtLk5hbWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0gPSBuZXcgRm9ybSgpO1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybSA9XHJcbiAgICAgICAgbmV3IEZvcm0oKTtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID0gbnVsbDtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5kaWFsb2dJbm5lckZvcm1SZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtLCB7XHJcblxyXG4gICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybVJlZiA9XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dJbm5lckZvcm0sIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IFwiODUlXCIsXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHNjYXRlbmF0byBhbCBzYWx2YXRhZ2dpbyBkaSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAgICogQHBhcmFtIGV2ZW50IEZvcm0gY3JlYXRhL21vZGlmaWNhdGEgZGFsbCd1dGVudGUuIFNlIMOoIG51bGwgYWxsb3JhIGwndXRlbnRlIGhhIGFiYmFuZG9uYXRvIGxhIGNvbmZpZ3VyYXppb25lLlxyXG4gICAqL1xyXG4gIG9uU2F2ZU9yRXhpdElubmVyRm9ybShldmVudDogRm9ybSkge1xyXG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZm9ybS5OYW1lID09PSBldmVudC5OYW1lIHx8XHJcbiAgICAgICAgKHRoaXMuZm9ybS5Jbm5lckZvcm1zICYmXHJcbiAgICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKFxyXG4gICAgICAgICAgICAoYSwgaSkgPT5cclxuICAgICAgICAgICAgICBhLk5hbWUgPT09IGV2ZW50Lk5hbWUgJiZcclxuICAgICAgICAgICAgICAodGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gIT09IGkpXHJcbiAgICAgICAgICApKSB8fFxyXG4gICAgICAgICh0aGlzLmZvcm0uRmllbGRzICYmXHJcbiAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5maW5kKFxyXG4gICAgICAgICAgICAoZiwgaSkgPT5cclxuICAgICAgICAgICAgICBmLkxhYmVsID09PSBldmVudC5OYW1lICYmXHJcbiAgICAgICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCAhPT0gaSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgICBcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBmb3JtIGRpIGRldHRhZ2xpbyBjb24gbG8gc3Rlc3NvIG5vbWUuXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGZvcm0gZGkgZGV0dGFnbGlvIGNvbiBsbyBzdGVzc28gbm9tZS5cIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGlubmVyRm9ybUZpZWxkOiBCYXNlRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLk5hbWUgPSBldmVudC5OYW1lLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgaW5uZXJGb3JtRmllbGQuTGFiZWwgPSBldmVudC5OYW1lO1xyXG4gICAgICBpbm5lckZvcm1GaWVsZC5GaWVsZFR5cGUgPSBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl07XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLkZpZWxkR3JvdXAgPVxyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9IG51bGxcclxuICAgICAgICAgID8gdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZF0uRmllbGRHcm91cFxyXG4gICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSAhPSBudWxsICYmXHJcbiAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID49IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXNbdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtXSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGRdID0gaW5uZXJGb3JtRmllbGQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uSW5uZXJGb3Jtcykge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMgPSBuZXcgQXJyYXk8Rm9ybT4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMucHVzaChldmVudCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5wdXNoKGlubmVyRm9ybUZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhcHJpcmUgaWwgZGlhbG9nIGRpIGNyZWF6aW9uZS9tb2RpZmljYSBkZWxsZSBhY3Rpb24uXHJcbiAgICogU2UgaWwgcGFyYW1ldHJvIHBhc3NhdG8gw6ggbnVsbCBzb25vIGluIGFnZ2l1bnRhIGFsdHJpbWVudGkgc29ubyBpbiBtb2RpZmljYS5cclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbk9uUmVjb3JkIGRhIG1vZGlmaWNhcmUgKHNlIG51bGwgYWxsb3JhIHZhZG8gaW4gYWRkKS5cclxuICAgKi9cclxuICBvcGVuQWN0aW9uT25SZWNvcmREaWFsb2coYWN0aW9uOiBBY3Rpb25PblJlY29yZCA9IG51bGwpIHtcclxuICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uID0gdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5pbmRleE9mKGFjdGlvbik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb24gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFjdGlvbikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IG5ldyBBY3Rpb25PblJlY29yZCgpO1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jcmVhdGVBY3Rpb25PblJlY29yZEZvcm0oKTtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYXByaXJlIGlsIGRpYWxvZyBkaSBjcmVhemlvbmUvbW9kaWZpY2EgZGVpIGJvdHRvbmkgYXppb25lLlxyXG4gICAqIFNlIGlsIHBhcmFtZXRybyBwYXNzYXRvIMOoIG51bGwgc29ubyBpbiBhZ2dpdW50YSBhbHRyaW1lbnRpIHNvbm8gaW4gbW9kaWZpY2EuXHJcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb25CdXR0b24gZGEgbW9kaWZpY2FyZSAoc2UgbnVsbCBhbGxvcmEgdmFkbyBpbiBhZGQpLlxyXG4gICAqL1xyXG4gIG9wZW5BY3Rpb25CdXR0b25EaWFsb2coZXY6IEFjdGlvbkJ1dHRvbiA9IG51bGwpIHtcclxuXHJcbiAgICBpZiAoZXYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uQnV0dG9uID0gZXY7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uQnV0dG9uID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBY3Rpb25CdXR0b24sIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGkgdmFsb3JpIGRhIHN1Z2dlcmlyZSBuZWxsJ2F1dG9jb21wbGV0ZSBkZWwgY2FtcG8gRm9ybXVsYS5cclxuICAgKiBWaWVuZSBzY2F0ZW5hdG8gYWwgZm9jdXMgKGluIHF1ZXN0byBjYXNvIHZpZW5lIHBhc3NhdG8gaWwgcGFyYW1ldHJvIGEgbnVsbCBwZXIgZGlmZmVyZW56aWFybG9cclxuICAgKiBkYWxsJ2V2ZW50byBkaSBjbGljayBzdWxsYSB0YXN0aWVyYSkgZSBhbCBrZXl1cCBzdWxsJ2lucHV0IChpbCBwYXJhbWV0cm8gw6ggZGl2ZXJzbyBkYSBudWxsKS5cclxuICAgKiBAcGFyYW0ga2V5Ym9hcmRFdmVudCBFdmVudG8gc2NhdGVuYXRvIGFsIGtleXVwIHN1bGxhIHRhc3RpZXJhLiBTZSBudWxsIGFsbG9yYSBpbCBtZXRvZG8gw6ggc3RhdG8gaW52b2NhdG8gZGFsIGZvY3VzIHN1bGwnaW5wdXQuXHJcbiAgICogQHN1bW1hcnkgQWdnaW9ybmEgbCdlbGVuY28gZGVpIHN1Z2dlcmltZW50aSBwZXIgbCdhdXRvY29tcGxldGUgc2UgbCd1dGVudGUgZXNlZ3VlIGlsIGZvY3VzIHN1bGwnaW5wdXRcclxuICAgKiBvcHB1cmUgYWwga2V5dXAgc3VsbGEgdGFzdGllcmEgZGkgdW4gdGFzdG8gZGl2ZXJzbyBkYWxsZSBmcmVjY2UuXHJcbiAgICovXHJcbiAgc2V0QWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9ucyhrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBDcmVvIGwnYXJyYXkgcGVyIGwnYXV0b2NvbXBsZXRlIHNvbG8gc2Ugc3RvIGZhY2VuZG8gaWwgZm9jdXMgc3VsbCdpbnB1dCBvIHNlIHN0byBwcmVtZW5kbyB1biB0YXN0b1xyXG4gICAgLy8gc3VsbGEgdGFzdGllcmEgZGl2ZXJzbyBkYWxsZSBmcmVjY2UgKGluIHF1ZXN0J3VsdGltbyBjYXNvLCBzZSBub24gdmllbmUgZXNlZ3VpdG8gaWwgZmlsdHJvIHN1bGwnZXZlbnRvLFxyXG4gICAgLy8gbm9uIHNpIHB1w7Igc2VsZXppb25hcmUgdW4gc3VnZ2VyaW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlIHBlcmNow6ggYWwgY2xpY2sgdmVycmViYmUgcmljYXJpY2F0byBsJ2FycmF5IGVcclxuICAgIC8vIHNpIHByZWRlcmViYmUgbGEgc2VsZXppb25lIGFwcGVuYSBmYXR0YSkuXHJcbiAgICBpZiAoIWtleWJvYXJkRXZlbnQgfHwgIWtleWJvYXJkRXZlbnQuY29kZS5pbmNsdWRlcyhcIkFycm93XCIpKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9ucyA9XHJcbiAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuR2V0QXV0b2NvbXBsZXRlT3B0aW9ucyhcclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMsXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uLkFjdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBsJ2F6aW9uZSBjcmVhdGEvbW9kaWZpY2F0ZS5cclxuICAgKi9cclxuICBzYXZlQWN0aW9uT25SZWNvcmQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQgJiZcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5maW5kKFxyXG4gICAgICAgIChhLCBpKSA9PlxyXG4gICAgICAgICAgYS5OYW1lID09PSB0aGlzLnNlbGVjdGVkQWN0aW9uLk5hbWUgJiZcclxuICAgICAgICAgICh0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPT0gbnVsbFxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gIT09IGkpXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKFxyXG4gICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGFjdGlvbiBjb24gbG8gc3Rlc3NvIG5vbWUuXCJcclxuICAgICAgKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGFjdGlvbiBjb24gbG8gc3Rlc3NvIG5vbWUuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gIT0gbnVsbCAmJiB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPj0gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkW3RoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbl0gPSB0aGlzLnNlbGVjdGVkQWN0aW9uO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZCA9IG5ldyBBcnJheTxBY3Rpb25PblJlY29yZD4oKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLnB1c2godGhpcy5zZWxlY3RlZEFjdGlvbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlRGlhbG9nQWN0aW9uT25SZWNvcmQoKTtcclxuICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbCdhemlvbmUgY3JlYXRhL21vZGlmaWNhdGUuXHJcbiAgICovXHJcbiAgc2F2ZUFjdGlvbkJ1dHRvbnMoZWxlbWVudDogQWN0aW9uQnV0dG9uKSB7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBleGlzdHNBY3Rpb25CdXR0b25zSW5kZXggPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5maW5kSW5kZXgoeCA9PiB4LkJ1dHRvblVuaXF1ZUlkID09IGVsZW1lbnQuQnV0dG9uVW5pcXVlSWQpO1xyXG4gICAgICAgIGlmIChleGlzdHNBY3Rpb25CdXR0b25zSW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgIC8vIE51b3ZvIHRyaWdnZXJcclxuICAgICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zW2V4aXN0c0FjdGlvbkJ1dHRvbnNJbmRleF0gPSBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyA9IG5ldyBBcnJheTxBY3Rpb25CdXR0b24+KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjaGl1ZGVyZSBpbCBkaWFsb2cgZGVsbGEgaW5uZXIgZm9ybS5cclxuICAgKi9cclxuICBjbG9zZURpYWxvZ0lubmVyRm9ybSgpIHtcclxuICAgIHRoaXMuaW5uZXJGb3JtUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBkaSBnZXN0aW9uZSBkZWxsZSBhY3Rpb24uXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2dBY3Rpb25PblJlY29yZCgpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmRSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY2hpdWRlcmUgaWwgZGlhbG9nIGRpIGdlc3Rpb25lIGRlbGxlIGFjdGlvbiBidXR0b25zLlxyXG4gICAqL1xyXG4gIGNsb3NlRGlhbG9nQWN0aW9uQnV0dG9ucygpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uQnV0dG9uUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNlZ25hcmUgY29tZSBjb25jbHVzYSBsYSBjcmVhemlvbmUgZGVsbGEgZm9ybSBlIHBlciBjcmVhcm5lIHVuYSBjb3BpYVxyXG4gICAqIGRhIHZpc2FsaXp6YXJlIGNvbWUgYW50ZXByaW1hLlxyXG4gICAqIEBwYXJhbSBjb21wbGV0ZWQgU2UgVFJVRSBzZWduYSBsYSBmb3JtIGNvbWUgY29uY2x1c2EgZSBuZSBjcmVhIHVuYSBjb3BpYSBkYSB2aXN1YWxpenphcmVcclxuICAgKi9cclxuICBzZXRGb3JtU3RhdHVzKGNvbXBsZXRlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGNvbXBsZXRlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5mb3JtKTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInByZXZpZXdGb3JtXCIsIHRoaXMucHJldmlld0Zvcm0pXHJcblxyXG4gICAgICAvLyBQZXIgdmlzdWFsaXp6YXJlIGNvcnJldHRhbWVudGUgbCdvYW50ZXByaW1hIGRlbGxhIGZvcm0gYXBwZW5hIGNyZWF0YVxyXG4gICAgICAvLyBiaXNvZ25hIHZhbG9yaXp6YXJlIGxhIHByb3ByaWV0w6AgTmFtZSBkZWkgY2FtcGkgZGVsbGEgZm9ybSBlIGRlbGxlIElubmVyRm9ybXMuXHJcbiAgICAgIHRoaXMucHJldmlld0Zvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMgJiZcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbGEgZm9ybSBjcmVhdGEgYWxsYSBmaW5lIGRlbCB3aXphcmQuXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwYXNzYW5kbyBsJ29nZ2V0byBkYSBzYWx2YXJlXHJcbiAgICogbmVsIGJvZHkgZGVsbGEgY2hpYW1hdGEsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBcInNhdmVGb3JtRXZlbnRcIi5cclxuICAgKi9cclxuICBzYXZlRm9ybSgpIHtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU2F2ZUVuZFBvaW50XHJcbiAgICApIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5zYXZlZCkge1xyXG4gICAgICAgIHRoaXMuYmFja3VwRm9ybSA9IHRoaXMuc2FmZUNsb25lKHRoaXMuZm9ybSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5iYWNrdXBGb3JtKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIFBlciBmYXIgYXJyaXZhcmUgYWwgc2VydmVyIGwnYXJyYXkgZGkgRmllbGQgYmlzb2duYSBwYXNzYXJsaSBzdSBBbnlcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgLy8gUmltdW92byBpbCBGb3JtR3JvdXAgZGkgcHJldmlldyAocHJvcHJpZXTDoCBjbGllbnQtb25seSwgY3JlYSByaWZlcmltZW50byBjaXJjb2xhcmUgaW4gSlNPTi5zdHJpbmdpZnkpXHJcbiAgICAgICAgZmllbGQuRm9ybUZvcm1Hcm91cCA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFRyYXNmb3JtbyBpbCBkYXRhZ2V0dGVyIGluIEJhc2U2NFxyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmllbGQuRGF0YUdldHRlcikpO1xyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uQWxsZWdhdG8pIHtcclxuICAgICAgICAgIGNvbnN0IGZsZEE6IGFueSA9IGZpZWxkO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YU9iamVjdEZpZWxkcyA9IGZsZEEuTWV0YWRhdGFGaWVsZHM7XHJcbiAgICAgICAgICBmbGRBLk1ldGFkYXRhRmllbGRzID0gW107XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmxkQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWF4VmFsdWUgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID09IG51bGxcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5NaW5WYWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMgPSBudWxsO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25Vc2VyID0gdGhpcy5Vc2VySUQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLk1vZGlmeVVzZXIgPSB0aGlzLlVzZXJJRDtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5UcmlnZ2Vycyk7XHJcbiAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKTtcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5Db2RlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNldENvZGUodGhpcy5mb3JtLk5hbWUpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy8gY2hpYW1hdGEgZWZmZXR0aXZhXHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIkZvcm1cIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybSxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlO1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TYXZlRW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKFwiRm9ybSBzYWx2YXRhIGNvbiBzdWNjZXNzbyFcIik7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyU2F2ZUZvcm1FdmVudC5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKFwiRXJyb3JlIG5lbCBzYWx2YXRhZ2dpbyBkZWxsYSBmb3JtXCIpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yZSBuZWwgc2FsdmF0YWdnaW8gZGVsbGEgZm9ybVwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlRm9ybUV2ZW50LmVtaXQodGhpcy5mb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBGVU5aSU9OSSBQUklWQVRFXHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGxhIGZvcm0gZSBjb25maWd1cmFyZSBjb2xvbm5lL0Zvcm1Hb3VycC5cclxuICAgKiBAcGFyYW0gZm9ybSBGb3JtIGRhIHV0aWxpenphcmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtQW5kQ29uZmlndXJlKGZvcm06IEZvcm0gPSBudWxsKSB7XHJcblxyXG4gICAgaWYgKGZvcm0gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBuZXcgQXJyYXk8VHJpZ2dlcj4oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5PYmplY3RBY3Rpb25CdXR0b25zICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdEFjdGlvbkJ1dHRvbnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zID0gSlNPTi5wYXJzZSh0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBuZXcgQXJyYXk8QWN0aW9uQnV0dG9uPigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybS5GaWVsZHMgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBUcmFzZm9ybW8gaWwgQmFzZTY0U3RyaW5nIGRlbCBEYXRhZ2V0dGVyIG5lbCBEYXRhZ2V0dGVyIHZlcm8gZSBwcm9wcmlvXHJcbiAgICAgICAgICBpZiAoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IEpTT04ucGFyc2UoYXRvYihmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcpKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLkRhdGFHZXR0ZXIgPT0gbnVsbCkgeyBmaWVsZC5EYXRhR2V0dGVyID0gbmV3IERhdGFHZXR0ZXIoKTsgfVxyXG4gICAgICAgICAgICBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID0gZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBudWxsID8gRGF0YUdldHRlclR5cGVFbnVtLk1hbnVhbGUgOiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIENhbXBpIGNvbiBEYXRhR2V0dGVyU3BlZWNoVGV4dDogY2FyaWNhcmUgaWwgUXVlcnlFZGl0b3IgaW4gc2lsZW50IHBlciBwb3BvbGFyZSBpbCBEYXRhR2V0dGVyVmFsdWUgdmlhIEFJXHJcbiAgICAgICAgdGhpcy5wZW5kaW5nQWlEYXRhR2V0dGVyRmllbGRzID0gdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoZiA9PlxyXG4gICAgICAgICAgZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ10gJiZcclxuICAgICAgICAgICEhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ICYmXHJcbiAgICAgICAgICAhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzTmV4dEFpRGF0YUdldHRlckZpZWxkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUZvcm0oKTtcclxuICAgIGluamVjdEdvb2dsZUZvbnRzRnJvbUZvcm0odGhpcy5mb3JtKTtcclxuICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm1HcmFwaGljU3VnZ2VzdElucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgPSAhdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQ7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0KSB0aGlzLmZvcm1HcmFwaGljU2NvcGUgPSAnYWxsJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWVuVHlwZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgZiBvZiAodGhpcy5mb3JtPy5GaWVsZHMgPz8gW10pKSB7XHJcbiAgICAgIGlmIChzZWVuVHlwZXMuaGFzKGYuRmllbGRUeXBlKSkgY29udGludWU7XHJcbiAgICAgIHNlZW5UeXBlcy5hZGQoZi5GaWVsZFR5cGUpO1xyXG4gICAgICBjb25zdCBsYWJlbCA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfTEFCRUxTIGFzIGFueSlbZi5GaWVsZFR5cGVdID8/IGBUaXBvICR7Zi5GaWVsZFR5cGV9YDtcclxuICAgICAgb3B0aW9ucy5wdXNoKHsgdmFsdWU6IGB0eXBlXyR7Zi5GaWVsZFR5cGV9YCwgbGFiZWwgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXNlbnRGaWVsZFR5cGVPcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYSBsZSBjb2xvbm5lIHBlciBsZSB0YWJlbGxlIG5lY2Vzc2FyaWUgYWxsYSBjcmVhemlvbmUgZGVsbGEgZm9ybTpcclxuICAgKiAgLSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGRlaSBjYW1waSBpbnNlcml0aVxyXG4gICAqICAtIHBlciBsZSBmb3JtIGRpIGRldHRhZ2xpbyBjcmVhdGVcclxuICAgKiAgLSBwZXIgbGUgYXppb25pIGNvbmZpZ3VyYXRlIHN1aSByZWNvcmQgZGVsbGEgZm9ybVxyXG4gICAqL1xyXG5cclxuXHJcblxyXG5cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmZpZWxkc0NvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA0cmVtXCIgfSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiTW9kaWZpY2FcIixcclxuICAgICAgICAgICAgaWNvbjogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5lZGl0RmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkR1cGxpY2Egc290dG9cIixcclxuICAgICAgICAgICAgaWNvbjogXCJjb3B5XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kdXBsaWNhdGVGaWVsZChlbGVtZW50LCBlbGVtZW50Lk9yZGluYWxQb3NpdGlvbiArIDEpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJEdXBsaWNhIGluIGZvbmRvXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiY29weVwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZHVwbGljYXRlRmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkZpZWxkc1wiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAvLyAgIGljb246IFwiYXJyb3dfdXB3YXJkXCIsXHJcbiAgICAgICAgICAvLyAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIHRydWUsIFwiRmllbGRzXCIpLFxyXG4gICAgICAgICAgLy8gICBkaXNhYmxlZDogKGVsZW1lbnQpID0+IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihlbGVtZW50KSA9PT0gMCxcclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIGdpw7lcIixcclxuICAgICAgICAgIC8vICAgaWNvbjogXCJhcnJvd19kb3dud2FyZFwiLFxyXG4gICAgICAgICAgLy8gICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJGaWVsZHNcIiksXHJcbiAgICAgICAgICAvLyAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZWxlbWVudCkgPj0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxLFxyXG4gICAgICAgICAgLy8gfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkZpZWxkVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwb2xvZ2lhXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRmllbGRUeXBlRW51bSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMTJyZW1cIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7IGtleTogXCJMYWJlbFwiLCBkaXNwbGF5OiBcIkxhYmVsXCIsIHN0eWxlczogeyBmbGV4OiBcIjAgMCA4cmVtXCIgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkRlc2NyaXB0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwbyBSZWN1cGVybyBEYXRpXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRGF0YUdldHRlclR5cGVFbnVtLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiUmVxdWlyZWRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9iYmxpZ2F0b3Jpb1wiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5SZXF1aXJlZCxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJGb3JtdWxhXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDYWxjb2xhdG9cIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuRm9ybXVsYSAhPSBudWxsICYmIGVsZW1lbnQuRm9ybXVsYSAhPSAnJyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBpbiBDb21waWxhemlvbmVcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuSW5MaXN0VmlldyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbnZpc2liaWxpdHlcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9jY3VwYSBzcGF6aW8/XCIsXHJcbiAgICAgICAgdmFsdWU6IChlbGVtZW50KSA9PiBlbGVtZW50LkluTGlzdFZpZXcgfHwgZWxlbWVudC5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtW1wiTkFTQ09TVE8gQ09OIEFSRUEgVklTSUJJTEVcIl0sXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDdyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiVmlzaWJsZUlmXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsaXTDoCBjb25kaXppb25hdGFcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuVmlzaWJsZUlmICE9IG51bGwgJiYgZWxlbWVudC5WaXNpYmxlSWYgIT0gXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJBbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBuZWxsYSByaXNwb3N0YVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gIWVsZW1lbnQuQW5zd2VyU3R5bGUgfHwgZWxlbWVudC5BbnN3ZXJTdHlsZSAmJiBlbGVtZW50LkFuc3dlclN0eWxlLkluTGlzdFZpZXcsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDVyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICYmXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbnMuc3BsaWNlKDEsIDAsIHtcclxuICAgICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uZVwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxNHJlbVwiIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB0aGlzLmZpZWxkc0NvbHVtbnMucHVzaChcclxuICAgICAgLy8gICB7XHJcbiAgICAgIC8vICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAvLyAgICAgZGlzcGxheTogXCJTZXppb25lXCIsXHJcbiAgICAgIC8vICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIC8vICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAvLyAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDE0cmVtXCIgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5BY3Rpb25CdXR0b25EaWFsb2coZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVBY3Rpb25CdXR0b24oZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiQnV0dG9uTGFiZWxcIiwgZGlzcGxheTogXCJFdGljaGV0dGFcIiwgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDMwJVwiIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJCdXR0b25Db2RlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDb2RpY2VcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMjAlXCIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJY29uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJY29uYVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIlNob3dJblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uaVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWwpID0+IHtcclxuICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKGVsLlNob3dJbiA9PSBudWxsIHx8IGVsLlNob3dJbi5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJOZXNzdW5hXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbC5TaG93SW4uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgZmluYWxUZXh0ICs9IEFjdGlvbkZsYWdFbnVtW2VsZW1lbnRdICsgXCIgLyBcIjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGZpbmFsVGV4dDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAyMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbnNPblJlY29yZENvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA2JVwiIH0sXHJcbiAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIk1vZGlmaWNhXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiZWRpdFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMub3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbGltaW5hXCIsXHJcbiAgICAgICAgICAgIGljb246IFwidHJhc2hcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkFjdGlvbnNPblJlY29yZFwiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctdXBcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPT09IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBnacO5XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctZG93blwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPj1cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsga2V5OiBcIkljb25cIiwgZGlzcGxheTogXCJJY29uYVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiTmFtZVwiLCBkaXNwbGF5OiBcIk5vbWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAyMCVcIiB9IH0sXHJcbiAgICAgIHsga2V5OiBcIkFjdGlvblwiLCBkaXNwbGF5OiBcIkF6aW9uZVwiIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlcnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5UcmlnZ2Vyc0RpYWxvZyhlbGVtZW50KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRWxpbWluYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcInRyYXNoXCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVRyaWdnZXIoZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiZGVzY3JpcHRpb25cIiwgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiZXhlY3V0aW9uXCIsIGRpc3BsYXk6IFwiQ29zYSBlc2VndWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAxNSVcIiB9IH0sXHJcbiAgICBdO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWEgaWwgRm9ybUdyb3VwIHBlciBsJ29nZ2V0dG8gRm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgQ29kZTogW3RoaXMuZm9ybS5Db2RlXSxcclxuICAgICAgTmFtZTogW3RoaXMuZm9ybS5OYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgRGVzY3JpcHRpb246IFt0aGlzLmZvcm0uRGVzY3JpcHRpb25dLFxyXG4gICAgICBGb3JtU2NhbGFyVHlwZTogW3RoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMub25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRHJhZyBhbmQgRHJvcCBkZWxsZSBjb2xvbm5lIGRlbCBmb3JtXHJcbiAgICovXHJcblxyXG4gIG9uRHJhZ1JlbGVhc2VkKGV2ZW50KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kZWQoZXZlbnQpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSBpbCBGb3JtR3JvdXAgZXByIGwnYWdnaXVudGEgbyBsYSBtb2RpZmljYSBkaSB1bmEgYWN0aW9uIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUFjdGlvbk9uUmVjb3JkRm9ybSgpIHtcclxuICAgIHRoaXMuYWN0aW9uT25SZWNvcmRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgTmFtZTogW3RoaXMuc2VsZWN0ZWRBY3Rpb24uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIEljb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkljb24sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBBY3Rpb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkFjdGlvbiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoaXVkZSBpbCBkaWFsb2cgcGVyIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZSB1biBGaWVsZCBzZW56YSBzYWx2YXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG9zZUZpZWxkRGlhbG9nKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYgIT0gdW5kZWZpbmVkKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGdlc3RpcmUgbCdhcGVydHVyYSBkZWwgZGlhbG9nIHBlciBsYSBtb2RpZmljYSBkaSB1biBGaWVsZC5cclxuICAgKiBTZSBpbCBmaWVsZCDDqCBkaSB0aXBvIFwiRm9ybSBkaSBkZXR0YWdsaW9cIiBhcHJlIGlsIGRpYWxvZyBwZXIgbGEgbW9kaWZpY2EgZGkgdW5hXHJcbiAgICogSW5uZXJGb3JtIGFsdHJpbWVudGkgYXByZSBxdWVsbG8gcGVyIGxhIG1vZGlmaWNhIGRpIHVuIEZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBtb2RpZmljYXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlZGl0RmllbGQoZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgaWYgKGZpZWxkLkZpZWxkVHlwZSAhPSBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0pIHtcclxuICAgICAgdGhpcy5vcGVuRmllbGREaWFsb2coZmllbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuSW5uZXJGb3JtRGlhbG9nKFxyXG4gICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoKGYpID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZ2VzdGlyZSBsYSBkdXBsaWNhemlvbmUgZGkgdW4gRmllbGQuXHJcbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGRhIG1vZGlmaWNhcmVcclxuICAgKi9cclxuICBwcml2YXRlIGR1cGxpY2F0ZUZpZWxkKGZpZWxkOiBCYXNlRmllbGQsIG9yZGluYWxQb3NpdGlvbiA9IG51bGwpIHtcclxuICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgIT0gRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKSB7XHJcbiAgICAgIC8vIHJpY3JlbyBsJ29nZ2V0dG8gcGFzc2FuZG8gcGVyIHVuIGpzb25cclxuICAgICAgbGV0IGNsb25lRmllbGQ6IEJhc2VGaWVsZCA9IHRoaXMuc2FmZUNsb25lKGZpZWxkKTtcclxuXHJcbiAgICAgIGNsb25lRmllbGQuTGFiZWwgPSBmaWVsZFtcIkxhYmVsXCJdICsgXCJDb3B5XCI7XHJcbiAgICAgIGNsb25lRmllbGQuSUQgPSB0aGlzLmdlbmVyYXRlR1VJRCgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIGlmIChvcmRpbmFsUG9zaXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIGNsb25lRmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggKyAxO1xyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjbG9uZUZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICAvLyB1dGlsaXp6byBvcmRpbmFsIHBvc2l0aW9uIHBlciBpbmZpbGFyZSBpbCBjYW1wbyBjb3JyZXR0YW1ldG5lIG5lbGxhIGxpc3RhXHJcbiAgICAgICAgLy8gcGVyIGZhcmxvIHNlIG5vbiDDqCBudWxsbyBkZXZvIGNyZWFyZSBsbyBzcGF6aW9cclxuICAgICAgICB0aGlzLk9yZGluYXRlZEluc2VydEZpZWxkKGZpZWxkLCBvcmRpbmFsUG9zaXRpb24pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjbG9uZUZpZWxkU3RydWN0dXJlID0geyBmaWVsZDogY2xvbmVGaWVsZCwgcmVvcGVuOiAwIH1cclxuICAgICAgdGhpcy5vblNhdmVGaWVsZChjbG9uZUZpZWxkU3RydWN0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwibm9uIMOoIHBvc3NpYmlsZSBkdXBsaWNhcmUgdW5hIGZvcm0gZGkgZGV0dGFnbGlvXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBPcmRpbmF0ZWRJbnNlcnRGaWVsZChmaWVsZDogQmFzZUZpZWxkLCBvcmRpbmFsUG9zaXRpb24gPSAwKSB7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzLnNwbGljZShvcmRpbmFsUG9zaXRpb24sIDAsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25FeGNoYW5nZUZpZWxkcyhmaWVsZDE6IEJhc2VGaWVsZCwgZmllbGQyOiBCYXNlRmllbGQpIHtcclxuICAgIGNvbnN0IHRlbXAgPSBmaWVsZDE7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzW2ZpZWxkMS5PcmRpbmFsUG9zaXRpb25dID0gZmllbGQyO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkc1tmaWVsZDIuT3JkaW5hbFBvc2l0aW9uXSA9IHRlbXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGdlbmVyYSB1bmEgbnVvdmEgR1VJRFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVHVUlEKCkge1xyXG4gICAgcmV0dXJuICd4eHh4LXh4eHgteHh4eC14eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCxcclxuICAgICAgICB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIHVuIEZpZWxkIGFsbCdpbnRlcm5vIGRpIHVuYSBGb3JtLlxyXG4gICAqIFJpY2hpZWRlIGNvbmZlcm1hIGFsbCd1dGVudGUgcHJpbWEgZGkgcmltdW92ZXJsby5cclxuICAgKiBAcGFyYW0gZmllbGQgQmFzZUZpZWxkIGRhIHJpbXVvdmVyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVsZXRlRWxlbWVudChcclxuICAgIGVsZW1lbnQ6IEJhc2VGaWVsZCB8IEFjdGlvbk9uUmVjb3JkIHwgRm9ybSxcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKFxyXG4gICAgICBcIkVsaW1pbmFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvP1wiLFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uc3BsaWNlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiRmllbGRzXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25zT25SZWNvcmRcIikge1xyXG4gICAgICAgICAgdGhpcy5zZXRBY3Rpb25PcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25CdXR0b25zXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZEFjdGlvbkJ1dHRvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgXCJSaWNoaWVzdGEgY29uZmVybWFcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc3Bvc3RhcmUgdW4gY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gZmllbGQgT2dnZXR0byBkaSB0aXBvIEJhc2VGaWVsZCBkYSBzcG9zdGFyZS5cclxuICAgKiBAcGFyYW0gbW92ZVVwIFNlIFRSVUUgYWxsb3JhIHNwb3N0YSB2ZXJzbyBsJ2FsdG8gaWwgY2FtcG8gKGFiYmFzc2EgbCdpbmRpY2UpIGFsdHJpbWVudGkgaWwgY29udHJhcmlvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbW92ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBCYXNlRmllbGQgfCBBY3Rpb25PblJlY29yZCxcclxuICAgIG1vdmVVcDogYm9vbGVhbixcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KTtcclxuICAgIGNvbnN0IGVuZGluZ0luZGV4ID0gc3RhcnRpbmdJbmRleCArIChtb3ZlVXAgPyAtMSA6IDEpO1xyXG5cclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShzdGFydGluZ0luZGV4LCAxKTtcclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShlbmRpbmdJbmRleCwgMCwgZWxlbWVudCk7XHJcblxyXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJGaWVsZHNcIikge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09PSBcIkFjdGlvbnNPblJlY29yZFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWxsZSBzZXppb25pIGNoZSBjb21wb25nb25vIGxhIGZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtRmllbGRHcm91cE9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZvckVhY2goKGcsIGkpID0+IChnLk9yZGluYWxQb3NpdGlvbiA9IGkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpY2FyaWNhcmUgaSBkYXRpIGRlbGxhIHRhYmVsbGEgZGVpIGNhbXBpIGFnZ2l1bnRpIGluIHVuYSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRGaWVsZHNUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkc1RhYmxlKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVpIGNhbXBpIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0gaW4gYmFzZSBhbGwnb3JkaW5lIGNoZSBsJ3V0ZW50ZVxyXG4gICAqIGhhIGRlZmluaXRvIG5lbGxhIHRhYmVsbGEgaW4gY3VpIHNvbm8gbW9zdHJhdGlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEFjdGlvbk9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgYWN0aW9uLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuaW5kZXhPZihhY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgIGFjdGlvbi5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5pbmRleE9mKGFjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaWNhcmljYXJlIGkgZGF0aSBkZWxsYSB0YWJlbGxhIGRlbGxlIGF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aW9uc09uUmVjb3JkVGFibGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb25zT25SZWNvcmRUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmljYXJpY2FyZSBpIGRhdGkgZGVsbGEgdGFiZWxsYSBkZWxsZSBhemlvbmkgYWdnaXVudGl2ZSBzdWkgcmVjb3JkIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRBY3Rpb25CdXR0b25zT25SZWNvcmRUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCkge1xyXG4gICAgdGhpcy5vdXQuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCA9IHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5zaGlmdCgpO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uQ09NUE9TRVI7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5sb2FkUXVlcnlTdGF0dXNlcyA9IG51bGw7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5EYXRhR2V0dGVyU3BlZWNoVGV4dCA9IHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclNwZWVjaFRleHQ7XHJcbiAgICAvLyBGb3J6YSBsYSAocmkpY3JlYXppb25lIGRlbCBjb21wb25lbnRlIGF6emVyYW5kbyBwcmltYSBpbCBmbGFnXHJcbiAgICB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uQWlEYXRhR2V0dGVyT3V0KGV2OiBldmVudE91dCk6IHZvaWQge1xyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNhdmUtcXVlcnlcIikgPT09IC0xIHx8ICF0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBldi5QYXJhbXM7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9IDE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gRGF0YUdldHRlckNvbHVtbkZvcmNlIGRldmUgZXNzZXJlIGxhIHN0cmluZ2EgY2hpYXZlIChub24gbCdvZ2dldHRvKSBwZXIgZnVuemlvbmFyZSBjb24gdG13LXNlbGVjdFxyXG4gICAgY29uc3QgY29sdW1uRm9yY2UgPSBkYXRhPy5EYXRhR2V0dGVyQ29sdW1uRm9yY2U7XHJcbiAgICBpZiAoY29sdW1uRm9yY2UpIHtcclxuICAgICAgLy8gVjIgc2VydmVyIHJlc3RpdHVpc2NlIHsga2V5LCB2YWx1ZSwga2V5UHJvcGVydHkgfSDigJQgZXN0cmFpYW1vIHNvbG8gaWwga2V5IHN0cmluZ1xyXG4gICAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9XHJcbiAgICAgICAgdHlwZW9mIGNvbHVtbkZvcmNlID09PSAnb2JqZWN0JyA/IGNvbHVtbkZvcmNlLmtleSA6IGNvbHVtbkZvcmNlO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhPy5zZWxlY3RlZEZpZWxkcz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IHNmID0gZGF0YS5zZWxlY3RlZEZpZWxkc1swXTtcclxuICAgICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPVxyXG4gICAgICAgIHNmLkRhdGFiYXNlVGFibGVOYW1lICsgXCJfXCIgKyBzZi5Qcm9wZXJ0eU5hbWUgKyBcIl9fXCIgKyBzZi5DdXJyZW50VHJhbnNsYXRlLnJlcGxhY2UoLyAvZywgJ18nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIC8vIEF6emVyYSBEYXRhR2V0dGVyU3BlZWNoVGV4dCBkYWwgY29uZmlnIG9iamVjdCBwZXIgZXZpdGFyZSBjaGUgXCJNb2RpZmljYVwiIGxvIHJpbGFuY2lcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkID0gbnVsbDtcclxuICAgIHRoaXMuYWlEYXRhR2V0dGVyTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRSSUdHRVJTXHJcbiAgICovXHJcblxyXG4gIG9wZW5UcmlnZ2Vyc0RpYWxvZyhldjogVHJpZ2dlciA9IG51bGwpIHtcclxuXHJcbiAgICBpZiAoZXYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHJpZ2dlciA9IGV2O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyaWdnZXIgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nVHJpZ2dlcnNSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVHJpZ2dlcnMsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVRyaWdnZXIoZWxlbWVudDogVHJpZ2dlcikge1xyXG5cclxuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5UcmlnZ2VycyAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGV4aXN0c1RyaWdnZXJJbmRleCA9IHRoaXMuZm9ybS5UcmlnZ2Vycy5maW5kSW5kZXgoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICAgICAgaWYgKGV4aXN0c1RyaWdnZXJJbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgLy8gTnVvdm8gdHJpZ2dlclxyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2Vyc1tleGlzdHNUcmlnZ2VySW5kZXhdID0gZWxlbWVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmlnZ2Vyc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nVHJpZ2dlcnNSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVRyaWdnZXIoZWxlbWVudDogVHJpZ2dlcikge1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5mb3JtLlRyaWdnZXJzLmZpbmRJbmRleCh4ID0+IHguQ0lEID09IGVsZW1lbnQuQ0lEKTtcclxuICAgIHRoaXMuZm9ybS5UcmlnZ2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy50cmlnZ2Vyc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQWN0aW9uQnV0dG9uKGVsZW1lbnQ6IEFjdGlvbkJ1dHRvbikge1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMuZmluZEluZGV4KHggPT4geC5CdXR0b25Db2RlID09IGVsZW1lbnQuQnV0dG9uQ29kZSk7XHJcbiAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b25zVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQWlFZGl0RGlhbG9nKCkge1xyXG4gICAgdGhpcy5haUVkaXRQcm9tcHQgPSBcIlwiO1xyXG4gICAgdGhpcy5haUVkaXRBdHRhY2htZW50cyA9IFtdO1xyXG4gICAgdGhpcy5haUVkaXRBdXRvc2F2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dBaVByb21wdEhpc3RvcnkgPSB0cnVlO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWlFZGl0LCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjYwJVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFpRWRpdERpYWxvZygpIHtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9wZW5BaUhpc3RvcnlEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0FpSGlzdG9yeVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBaUhpc3RvcnksIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIG1heEhlaWdodDogJzgwdmgnLFxyXG4gICAgICBwb3NpdGlvbjogeyB0b3A6ICc0MHB4JyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdG9wQWlDb3VudGRvd24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYWlDb3VudGRvd25SZWYpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9haUNvdW50ZG93blJlZik7XHJcbiAgICAgIHRoaXMuX2FpQ291bnRkb3duUmVmID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuYWlFZGl0Q291bnRkb3duID0gMDtcclxuICAgIHRoaXMuYWlFZGl0RXN0aW1hdGVkU2VjID0gMDtcclxuICAgIHRoaXMuYWlFZGl0SXNPdmVydGltZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRBaUNvdW50ZG93bihlc3RpbWF0ZWRTZWNvbmRzOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5haUVkaXRFc3RpbWF0ZWRTZWMgPSBNYXRoLmNlaWwoZXN0aW1hdGVkU2Vjb25kcyAqIDEuMik7XHJcbiAgICB0aGlzLmFpRWRpdENvdW50ZG93biA9IHRoaXMuYWlFZGl0RXN0aW1hdGVkU2VjO1xyXG4gICAgdGhpcy5fYWlDb3VudGRvd25SZWYgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWlFZGl0Q291bnRkb3duLS07XHJcbiAgICAgIGlmICh0aGlzLmFpRWRpdENvdW50ZG93biA8IDAgJiYgIXRoaXMuYWlFZGl0SXNPdmVydGltZSkge1xyXG4gICAgICAgIHRoaXMuYWlFZGl0SXNPdmVydGltZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsQWlFZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWlFZGl0Q2FuY2VsbGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFpRWRpdEZvckZpZWxkKGZpZWxkQ29kZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCA9IHsgY29kZTogZmllbGRDb2RlIH07XHJcbiAgICB0aGlzLm9wZW5BaUVkaXREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIG9uQWlHcmFwaGljU3VnZ2VzdChkYXRhOiB7IGNvZGU6IHN0cmluZzsgaGludDogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJhd0hpbnQgPSBkYXRhLmhpbnQ/LnRyaW0oKSA/PyAnJztcclxuICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBkYXRhLmNvZGU/LnRyaW0oKSB8fCAnX2NhbXBvc2VuemFub21lXyc7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCkge1xyXG4gICAgICAvLyBGYWxsYmFjazogcGFzc2EgaWwgcmF3SGludCBuZWxsJ2luamVjdGVkUHJvbXB0OyBzZW5kQWlFZGl0IGVzdHJhcnLDoCBpbCBtb2RlbGxvIGRhIGVzc29cclxuICAgICAgY29uc3QgaW5qZWN0ZWRQcm9tcHQgPSByYXdIaW50XHJcbiAgICAgICAgPyBgVm9nbGlvIG1vZGlmaWNhcmUgaW4gbWFuaWVyYSBjb21wbGV0YSBsYSBncmFmaWNhIGRlbCBjYW1wbyAnJHtmaWVsZExhYmVsfScgc2VndWVuZG8gaW4gbWFuaWVyYSBpbmNvbnRlc3RhYmlsZSBxdWVzdGEgaW5kaWNhemlvbmU6ICcke3Jhd0hpbnR9J2BcclxuICAgICAgICA6IGBWb2dsaW8gbW9kaWZpY2FyZSBpbiBtYW5pZXJhIGNvbXBsZXRhIGxhIGdyYWZpY2EgZGVsIGNhbXBvICcke2ZpZWxkTGFiZWx9JyBjb24gdW5vIHN0aWxlIGNyZWF0aXZvIGUgb3JpZ2luYWxlIGEgdHVhIHNjZWx0YWA7XHJcbiAgICAgIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ID0geyBjb2RlOiBkYXRhLmNvZGUgfTtcclxuICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbmRBaUVkaXQoaW5qZWN0ZWRQcm9tcHQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBjbGVhblRleHQ6IGhpbnQsIG1vZGVsSWQ6IGFpTW9kZWxJZCB9ID0gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dChyYXdIaW50KTtcclxuXHJcbiAgICAvLyBUcm92YSBpbCBjYW1wbzogZ2nDoCBzYWx2YXRvIG5lbCBmb3JtIG9wcHVyZSBudW92byBhbmNvcmEgbmVsIGRpYWxvZ1xyXG4gICAgY29uc3QgZmllbGRJbkZvcm0gPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IGZpZWxkTGFiZWwpID8/IG51bGw7XHJcbiAgICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWVsZEluRm9ybSA/PyB0aGlzLnNlbGVjdGVkRmllbGQ7XHJcbiAgICBpZiAoIWN1cnJlbnRGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBTdGVzc28gcGF5bG9hZCBkaSBvbkZvcm1HcmFwaGljU3VnZ2VzdCwgbWEgRmllbGRzIGNvbiBzb2xvIGlsIGNhbXBvIGNvcnJlbnRlXHJcbiAgICBjb25zdCBncmFwaGljc1BhcmFtczogRW5kUG9pbnREYXRhUGFyYW1zW10gPSBbXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTmFtZScsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybT8uTmFtZSA/PyBmaWVsZExhYmVsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0Rlc2NyaXB0aW9uJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5EZXNjcmlwdGlvbiA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RoZW1lQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5UaGVtZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RpdGxlQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5UaXRsZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0ZpZWxkcycsIFBhcmFtVmFsdWU6IFt7IExhYmVsOiBjdXJyZW50RmllbGQuTGFiZWwsIEZpZWxkVHlwZTogY3VycmVudEZpZWxkLkZpZWxkVHlwZSB9XSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdIaW50JywgUGFyYW1WYWx1ZTogaGludCB8fCB0aGlzLmJ1aWxkUmFuZG9tR3JhcGhpY0hpbnQoKSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdNb2RlbElkJywgUGFyYW1WYWx1ZTogYWlNb2RlbElkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1NpbmdsZUZpZWxkTW9kZScsIFBhcmFtVmFsdWU6IHRydWUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQsXHJcbiAgICAgIGdyYXBoaWNzUGFyYW1zLFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCByID0gcmVzIGFzIHsgRmllbGRTdHlsZXM/OiB7IFtjc3NDbGFzc05hbWU6IHN0cmluZ106IHsgW3Byb3A6IHN0cmluZ106IHN0cmluZyB9IH07IFdhcm5pbmdzPzogc3RyaW5nW10gfTtcclxuXHJcbiAgICAgICAgLy8gQXBwbGljYSBGaWVsZFN0eWxlcyBhbCBjYW1wbyB0YXJnZXQ7IHNlIHZlQXBwbHlUb0FsbE9mVHlwZSDDqCBhdHRpdm8sIHByb3BhZ2EgYSB0dXR0aSBpIGNhbXBpIGRlbGxvIHN0ZXNzbyB0aXBvXHJcbiAgICAgICAgaWYgKHIuRmllbGRTdHlsZXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNzc0NsYXNzTmFtZSA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfQ1NTX0NMQVNTIGFzIGFueSlbY3VycmVudEZpZWxkLkZpZWxkVHlwZV07XHJcbiAgICAgICAgICBpZiAoY3NzQ2xhc3NOYW1lICYmIHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXSAmJiB0eXBlb2Ygci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52ZUFwcGx5VG9BbGxPZlR5cGUpIHtcclxuICAgICAgICAgICAgICAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4gZi5GaWVsZFR5cGUgPT09IGN1cnJlbnRGaWVsZC5GaWVsZFR5cGUpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAoZiBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSB7IC4uLnIuRmllbGRTdHlsZXMhW2Nzc0NsYXNzTmFtZV0gfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAoY3VycmVudEZpZWxkIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgICBpZiAoZmllbGRJbkZvcm0pIChmaWVsZEluRm9ybSBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52ZUFwcGx5VG9BbGxPZlR5cGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gQWdnaW9ybmEgc2VsZWN0ZWRGaWVsZCBwZXIgaWwgZGlhbG9nXHJcbiAgICAgICAgY29uc3QgYXBwbHlUYXJnZXQgPSBmaWVsZEluRm9ybSA/PyBjdXJyZW50RmllbGQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUoYXBwbHlUYXJnZXQpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gYXBwbHlUYXJnZXQuRm9ybXVsYTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZEluRm9ybSkgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZmllbGRJbkZvcm0pO1xyXG5cclxuICAgICAgICAvLyBSaWFwcmkgaWwgZGlhbG9nIGNhbXBvIChzYWx2byBWaXN1YWwgRWRpdG9yIGdyYXBoaWMgc3VnZ2VzdCBtb2RlKVxyXG4gICAgICAgIGlmICghdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFnZ2lvcm5hIHByZXZpZXcgc2UgZXJhIGFwZXJ0YVxyXG4gICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKCdHcmFmaWNhIGNhbXBvIGFwcGxpY2F0YSEnKTtcclxuICAgICAgICBpZiAoci5XYXJuaW5ncz8ubGVuZ3RoID4gMCkgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhyLldhcm5pbmdzKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IChlcnJvciBhcyBhbnkpPy5lcnJvcjtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcih0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cudHJpbSgpID8gbXNnIDogJ0Vycm9yZSBuZWxsYSBnZW5lcmF6aW9uZSBkZWxsYSBncmFmaWNhIGRlbCBjYW1wbycpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25BaUVkaXRGaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICghaW5wdXQuZmlsZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBiYXNlNjQgPSAocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpLnNwbGl0KCcsJylbMV07XHJcbiAgICAgICAgdGhpcy5haUVkaXRBdHRhY2htZW50cy5wdXNoKHsgZmlsZU5hbWU6IGZpbGUubmFtZSwgYmFzZTY0Q29udGVudDogYmFzZTY0LCBtZWRpYVR5cGU6IGZpbGUudHlwZSB9KTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICByZW1vdmVBaUVkaXRBdHRhY2htZW50KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWlFZGl0QXR0YWNobWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcblxyXG4gIHNlbmRBaUVkaXQoZGlyZWN0UHJvbXB0Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyUHJvbXB0UmF3ID0gZGlyZWN0UHJvbXB0ID8/IHRoaXMuYWlFZGl0UHJvbXB0O1xyXG4gICAgaWYgKCF1c2VyUHJvbXB0UmF3Py50cmltKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIEFnZ2lvcm5hIGxvIHN0b3JpY28gcHJvbXB0IHByaW1hIGRpIGludmlhcmVcclxuICAgIGNvbnN0IGN1cnJlbnRIaXN0b3J5OiBzdHJpbmdbXSA9IHRoaXMuZm9ybT8uQUlQcm9tcHRzID8gSlNPTi5wYXJzZSh0aGlzLmZvcm0uQUlQcm9tcHRzKSA6IFtdO1xyXG4gICAgY3VycmVudEhpc3RvcnkucHVzaCh1c2VyUHJvbXB0UmF3LnRyaW0oKSk7XHJcbiAgICBjb25zdCB1cGRhdGVkUHJvbXB0c0pzb24gPSBKU09OLnN0cmluZ2lmeShjdXJyZW50SGlzdG9yeSk7XHJcblxyXG4gICAgLy8gSW4gZmllbGQtY29udGV4dCBtb2RlIChkaWFsb2cgQUkgbyBncmFwaGljIHN1Z2dlc3QpOiBwcmVuZGkgaWwgY2FtcG8gZGFsbGEgbW9kYWxlXHJcbiAgICBsZXQgZmllbGRDbG9uZUZvclNlbmQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGZpZWxkQ29kZUZvclJlZnJlc2g6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGlzTmV3VW5zYXZlZEZpZWxkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ICE9PSBudWxsKSB7XHJcbiAgICAgIGZpZWxkQ2xvbmVGb3JTZW5kID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5zZWxlY3RlZEZpZWxkKTtcclxuICAgICAgaWYgKCFmaWVsZENsb25lRm9yU2VuZC5MYWJlbD8udHJpbSgpKSB7XHJcbiAgICAgICAgZmllbGRDbG9uZUZvclNlbmQuTGFiZWwgPSAnX2NhbXBvc2VuemFub21lXyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmaWVsZENsb25lRm9yU2VuZC5GaWVsZFR5cGUpIHtcclxuICAgICAgICBmaWVsZENsb25lRm9yU2VuZC5GaWVsZFR5cGUgPSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl07XHJcbiAgICAgIH1cclxuICAgICAgZmllbGRDb2RlRm9yUmVmcmVzaCA9IGZpZWxkQ2xvbmVGb3JTZW5kLkxhYmVsO1xyXG4gICAgICBpc05ld1Vuc2F2ZWRGaWVsZCA9ICEodGhpcy5mb3JtPy5GaWVsZHM/LnNvbWUoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKSA/PyBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pZXppb25lIGNvbnRlc3R1YWxlOiBpbiBtb2RhbGl0w6AgZGlhbG9nIChubyBkaXJlY3RQcm9tcHQpIHNpIHByZXBlbmRlIGlsIGNvbnRlc3RvIGRlbCBjYW1wb1xyXG4gICAgbGV0IHNwZWVjaFRleHQgPSB1c2VyUHJvbXB0UmF3O1xyXG4gICAgaWYgKGRpcmVjdFByb21wdCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0KSB7XHJcbiAgICAgIHNwZWVjaFRleHQgPSBgVm9nbGlvIG1vZGlmaWNhcmUgaWwgY2FtcG8gJyR7ZmllbGRDb2RlRm9yUmVmcmVzaCA/PyB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dC5jb2RlfScsIGRpIHNlZ3VpdG8gdGkgZMOyIGxlIGlzdHJ1emlvbmkuIFNlIHF1ZWxsbyBjaGUgdGkgc2NyaXZvIG5vbiByaWd1YXJkYSBsYSBtb2RpZmljYSBkZWwgY2FtcG8sIGNvbnNpZGVyYSB0dXR0byBjb21lIGluY29lcmVudGUuICR7dXNlclByb21wdFJhd31gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ID0gbnVsbDtcclxuXHJcbiAgICAvLyBFc3RyYWUgaWwgbW9kZWxsbyBBSSBkYWwgdGVzdG8gKGVzLiBcIlVzYSBTb25uZXRcIikgZSBwdWxpc2NlIGlsIHByb21wdCBwcmltYSBkaSBpbnZpYXJsb1xyXG4gICAgY29uc3QgeyBjbGVhblRleHQ6IGNsZWFuU3BlZWNoVGV4dCwgbW9kZWxJZDogYWlNb2RlbElkIH0gPSB0aGlzLmV4dHJhY3RNb2RlbEZyb21UZXh0KHNwZWVjaFRleHQpO1xyXG4gICAgc3BlZWNoVGV4dCA9IGNsZWFuU3BlZWNoVGV4dDtcclxuXHJcbiAgICAvLyBQcmVwYXJhIGlsIGZvcm0gY29tZSBpbiBzYXZlRm9ybTogRmllbGRzIOKGkiBPYmplY3RGaWVsZHNcclxuICAgIGNvbnN0IGZvcm1Ub1NlbmQgPSB0aGlzLnNhZmVDbG9uZSh0aGlzLmZvcm0pO1xyXG4gICAgZm9ybVRvU2VuZC5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdEZpZWxkcyA9IFtdO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IFtdO1xyXG5cclxuICAgIGlmIChmb3JtVG9TZW5kLkZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwpIHtcclxuICAgICAgZm9ybVRvU2VuZC5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9ybVRvU2VuZC5GbGRFeHRyYUNvbmZpZ1ZhbHVlcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluIGZpZWxkLWNvbnRleHQ6IHNvc3RpdHVpc2NlIChtb2RpZmljYSkgbyBhZ2dpdW5nZSAobnVvdm8gY2FtcG8pIGlsIGNhbXBvIGNvbiBpbCBjb250ZW51dG8gY29ycmVudGUgZGVsbGEgbW9kYWxlXHJcbiAgICBpZiAoZmllbGRDbG9uZUZvclNlbmQpIHtcclxuICAgICAgaWYgKCFmb3JtVG9TZW5kLkZpZWxkcykgZm9ybVRvU2VuZC5GaWVsZHMgPSBbXTtcclxuICAgICAgZm9ybVRvU2VuZC5GaWVsZHMgPSBmb3JtVG9TZW5kLkZpZWxkcy5maWx0ZXIoZiA9PiBmLkxhYmVsICE9PSBmaWVsZENvZGVGb3JSZWZyZXNoKTtcclxuICAgICAgZm9ybVRvU2VuZC5GaWVsZHMucHVzaChmaWVsZENsb25lRm9yU2VuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm1Ub1NlbmQuRmllbGRzKSB7XHJcbiAgICAgIGZvcm1Ub1NlbmQuRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvKSB7XHJcbiAgICAgICAgICBjb25zdCBmbGRBOiBhbnkgPSBmaWVsZDtcclxuICAgICAgICAgIGZsZEEuTWV0YWRhdGFPYmplY3RGaWVsZHMgPSBmbGRBLk1ldGFkYXRhRmllbGRzO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YUZpZWxkcyA9IFtdO1xyXG4gICAgICAgICAgZmxkQS5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgPSBidG9hKEpTT04uc3RyaW5naWZ5KGZsZEEuRGF0YUdldHRlciA/PyB7fSkpO1xyXG4gICAgICAgICAgZmxkQS5EYXRhR2V0dGVyID0gbnVsbDtcclxuICAgICAgICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmllbGRzLnB1c2goZmxkQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmllbGQuRGF0YUdldHRlciA/PyB7fSkpO1xyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG51bGw7XHJcbiAgICAgICAgICBmb3JtVG9TZW5kLk9iamVjdEZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZm9ybVRvU2VuZC5GaWVsZHMgPSBudWxsO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RUcmlnZ2VycyA9IEpTT04uc3RyaW5naWZ5KGZvcm1Ub1NlbmQuVHJpZ2dlcnMgPz8gW10pO1xyXG4gICAgZm9ybVRvU2VuZC5UcmlnZ2VycyA9IG51bGw7XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdEFjdGlvbkJ1dHRvbnMgPSBKU09OLnN0cmluZ2lmeShmb3JtVG9TZW5kLkFjdGlvbkJ1dHRvbnMgPz8gW10pO1xyXG4gICAgZm9ybVRvU2VuZC5BY3Rpb25CdXR0b25zID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7IFBhcmFtTmFtZTogXCJGb3JtXCIsIFBhcmFtVmFsdWU6IGZvcm1Ub1NlbmQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiU3BlZWNoVGV4dFwiLCBQYXJhbVZhbHVlOiBzcGVlY2hUZXh0LCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIk9yZ2FJRFwiLCBQYXJhbVZhbHVlOiBwYXJzZUludCh0aGlzLm9yZ2FJRCkgfHwgMCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJNb2RpZnlVc2VyXCIsIFBhcmFtVmFsdWU6IHRoaXMuVXNlcklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkF1dG9zYXZlXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWlFZGl0QXV0b3NhdmUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiQXR0YWNobWVudHNcIiwgUGFyYW1WYWx1ZTogdGhpcy5haUVkaXRBdHRhY2htZW50cy5tYXAoYSA9PiAoeyBGaWxlTmFtZTogYS5maWxlTmFtZSwgQmFzZTY0Q29udGVudDogYS5iYXNlNjRDb250ZW50LCBNZWRpYVR5cGU6IGEubWVkaWFUeXBlIH0pKSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJUcmlnZ2VyRGVmaW5pdGlvbnNcIiwgUGFyYW1WYWx1ZTogdGhpcy50cmlnZ2VycyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkFjdGlvbkJ1dHRvbkRlZmluaXRpb25zXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWN0aW9uQnV0dG9ucyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIk1vZGVsSWRcIiwgUGFyYW1WYWx1ZTogYWlNb2RlbElkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkdlbmVyYXRlQmFja2dyb3VuZFwiLCBQYXJhbVZhbHVlOiB0aGlzLmFpR2VuZXJhdGVCYWNrZ3JvdW5kLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuU3NlRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChlc3RpbWF0ZWRTZWNvbmRzOiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLl9zdGFydEFpQ291bnRkb3duKGVzdGltYXRlZFNlY29uZHMpO1xyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiB7IEZvcm06IEZvcm0sIFdhcm5pbmdzOiBzdHJpbmdbXSwgQ29zdENlbnRzOiBudW1iZXIsIEVsYXBzZWRNczogbnVtYmVyLCBEYWxsRUVsYXBzZWRTZWM/OiBudW1iZXIsIFByb21wdFNwbGl0cz86IHN0cmluZ1tdIH0pID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fYWlFZGl0Q2FuY2VsbGVkKSB7IHRoaXMuX2FpRWRpdENhbmNlbGxlZCA9IGZhbHNlOyByZXR1cm47IH1cclxuICAgICAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgICAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVjdFByb21wdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlQWlFZGl0RGlhbG9nKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGlzTmV3VW5zYXZlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgIC8vIENhbXBvIG51b3ZvIG5vbiBzYWx2YXRvOiBlbGFib3JhIGlsIGZvcm0gdG9ybmF0byBlIHJpYXByaSBpbCBkaWFsb2cgY2FtcG8gY29uIGkgdmFsb3JpIGFnZ2lvcm5hdGlcclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcy5Gb3JtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZElkeCA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKSA/PyAtMTtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdXBkYXRlZEZpZWxkSWR4ID49IDAgPyB0aGlzLmZvcm0uRmllbGRzW3VwZGF0ZWRGaWVsZElkeF0gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5zcGxpY2UodXBkYXRlZEZpZWxkSWR4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIENhbXBvIGdpw6AgZXNpc3RlbnRlIG8gbmVzc3VuIGNvbnRlc3RvIGNhbXBvXHJcbiAgICAgICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICAvLyBTZSBjJ2VyYSB1biBjb250ZXN0byBjYW1wbywgYWdnaW9ybmEgc2VsZWN0ZWRGaWVsZCBlIHJpYXByaSBpbCBkaWFsb2dcclxuICAgICAgICAgICAgLy8gcGVyIHJpZmxldHRlcmUgbGUgbW9kaWZpY2hlIEFJIChlcy4gVGV4dEZpZWxkU3R5bGVDU1MpIG5lbGwnZWRpdG9yXHJcbiAgICAgICAgICAgIGlmIChmaWVsZENvZGVGb3JSZWZyZXNoICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCk7XHJcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gXCJTdWdnZXJpc2NpIGdyYWZpY2FcIjogc3Rlc3NvIGZsdXNzbyBmaWVsZC1jb250ZXh0IChudW92byBvIGVzaXN0ZW50ZSlcclxuICAgICAgICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKGlzTmV3VW5zYXZlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRJZHggPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCkgPz8gLTE7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHVwZGF0ZWRGaWVsZElkeCA+PSAwID8gdGhpcy5mb3JtLkZpZWxkc1t1cGRhdGVkRmllbGRJZHhdIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuc3BsaWNlKHVwZGF0ZWRGaWVsZElkeCwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB1cGRhdGVkRmllbGQuRm9ybXVsYTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICBpZiAoZmllbGRDb2RlRm9yUmVmcmVzaCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuZmluZChmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpO1xyXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkRmllbGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRJZHggPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHVwZGF0ZWRJZHg7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGFzdFByb21wdFNwbGl0cyA9IHJlcy5Qcm9tcHRTcGxpdHMgPz8gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhbGxFUGFydCA9IHJlcy5EYWxsRUVsYXBzZWRTZWMgIT0gbnVsbCA/IGAgKHNmb25kbyBnZW5lcmF0byBpbiAke3Jlcy5EYWxsRUVsYXBzZWRTZWMudG9GaXhlZCgxKX1zKWAgOiAnJztcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKGBGb3JtIG1vZGlmaWNhdGEgY29uIEFJISR7ZGFsbEVQYXJ0fWApO1xyXG4gICAgICAgIGlmIChyZXMuV2FybmluZ3MgJiYgcmVzLldhcm5pbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcocmVzLldhcm5pbmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubGFzdFByb21wdFNwbGl0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5JbmZvKHRoaXMubGFzdFByb21wdFNwbGl0cy5tYXAoKHMsIGkpID0+IGAke2kgKyAxfS4gJHtzfWApLmpvaW4oJzxicj4nKSwgJ0Zvcm0gZ2VuZXJhdG8gaW4gcGFydGkgcGFyYWxsZWxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fYWlFZGl0Q2FuY2VsbGVkKSB7IHRoaXMuX2FpRWRpdENhbmNlbGxlZCA9IGZhbHNlOyByZXR1cm47IH1cclxuICAgICAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgICAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZGlyZWN0UHJvbXB0ICE9PSB1bmRlZmluZWQpIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyTXNnID0gKGVycm9yIGFzIGFueSk/LmVycm9yID8/IChlcnJvciBhcyBhbnkpPy5tZXNzYWdlO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlNc2cgPSB0eXBlb2Ygc2VydmVyTXNnID09PSAnc3RyaW5nJyAmJiBzZXJ2ZXJNc2cudHJpbSgpXHJcbiAgICAgICAgICA/IHNlcnZlck1zZ1xyXG4gICAgICAgICAgOiAnRXJyb3JlIG5lbGxhIG1vZGlmaWNhIGRlbGxhIGZvcm0gY29uIEFJJztcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcihkaXNwbGF5TXNnKTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3JlIG5lbGxhIG1vZGlmaWNhIGRlbGxhIGZvcm0gY29uIEFJXCIsIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3QoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZSA9IHRoaXMuY29udGVzdHVhbGl6YXRpb24uZmluZCh4ID0+IHguZW50aXR5VGFibGVOYW1lID09IHRoaXMuc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbikuZW50aXR5SUQ7XHJcbiAgfVxyXG5cclxuICBvbkNvbnRlc3R1YWxpemF0aW9uU2VsZWN0VmFsdWUoKSB7XHJcbiAgICB0aGlzLmNvbnRlc3R1YWxpemF0aW9uLmZpbmQoeCA9PiB4LmVudGl0eVRhYmxlTmFtZSA9PSB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24pLmVudGl0eUlEID0gdGhpcy5zZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uVmFsdWU7XHJcbiAgfVxyXG5cclxuICBhcHBseUNvbnRlc3R1YWxpemF0aW9uKGVsZW1lbnQpIHtcclxuICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuY29udGVzdHVhbGl6YXRpb24gPSBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dDb250ZXN0dWFsaXphdGlvblJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dDb250ZXN0dWFsaXphdGlvbiwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc0ODBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ29udGVzdHVhbGl6YXRpb25EaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uUmVmPy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaXJlVHJpZ2dlcihldjogRmlyZVRyaWdnZXIpIHtcclxuICAgIHRoaXMuZmlyZVRyaWdnZXIuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVEZWxldGVCdXR0b24oZXZlbnQ6IEFycmF5PEJhc2VGaWVsZD4pIHtcclxuICAgIHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbiA9IGV2ZW50Lmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGRzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWxlY3RlZEZpZWxkcyhwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG5cclxuXHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKFxyXG4gICAgICBcIkVsaW1pbmFyZSBnbGkgZWxlbWVudGkgc2VsZXppb25hdGk/XCIsXHJcbiAgICAgICgpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkcy5mb3JFYWNoKChzZWxlY3RlZEZpZWxkKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1bcHJvcGVydHlOYW1lXS5zcGxpY2UodGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihzZWxlY3RlZEZpZWxkKSwgMSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgXCJSaWNoaWVzdGEgY29uZmVybWFcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBWaXN1YWwgRWRpdG9yXHJcblxyXG4gIHRvZ2dsZVZpc3VhbEVkaXRvcigpOiB2b2lkIHtcclxuICAgIHRoaXMudmlzdWFsRWRpdG9yQWN0aXZlID0gIXRoaXMudmlzdWFsRWRpdG9yQWN0aXZlO1xyXG4gICAgaWYgKCF0aGlzLnZpc3VhbEVkaXRvckFjdGl2ZSkge1xyXG4gICAgICB0aGlzLnZlU3dhcEZpZWxkID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmVGaWVsZENsaWNrKGV2OiB7IGZpZWxkOiBCYXNlRmllbGQ7IGV2ZW50OiBNb3VzZUV2ZW50IH0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZlU3dhcEZpZWxkKSB7XHJcbiAgICAgIGlmICh0aGlzLnZlU3dhcEZpZWxkLkxhYmVsICE9PSBldi5maWVsZC5MYWJlbCkge1xyXG4gICAgICAgIHRoaXMudmVEb1N3YXAoZXYuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudmVTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IGV2LmZpZWxkLkxhYmVsKSA/PyBldi5maWVsZDtcclxuICAgIHRoaXMudmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnZlR3JhcGhpY0hpbnQgPSAnJztcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1ZlVG9vbHRpcCwge1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICczMjBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZlRWRpdEZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLm9wZW5GaWVsZERpYWxvZyh0aGlzLnZlU2VsZWN0ZWRGaWVsZCk7XHJcbiAgfVxyXG5cclxuICB2ZUFpRWRpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgLy8gUmVwbGljYSBjacOyIGNoZSBmYSBvcGVuRmllbGREaWFsb2c6IHBvcG9sYSBzZWxlY3RlZEZpZWxkIGUgaW5kZXhTZWxlY3RlZEZpZWxkXHJcbiAgICAvLyBjb3PDrCBzZW5kQWlFZGl0IHB1w7IgY2xvbmFyZSBjb3JyZXR0YW1lbnRlIGlsIGNhbXBvXHJcbiAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHM/LmluZGV4T2YodGhpcy52ZVNlbGVjdGVkRmllbGQpID8/IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh0aGlzLnZlU2VsZWN0ZWRGaWVsZCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHRoaXMudmVTZWxlY3RlZEZpZWxkLkZvcm11bGE7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgIH1cclxuICAgIHRoaXMub25BaUVkaXRGb3JGaWVsZCh0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCk7XHJcbiAgfVxyXG5cclxuICB2ZVNlbmRHcmFwaGljKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsKSA/PyB0aGlzLnZlU2VsZWN0ZWRGaWVsZCBhcyBhbnk7XHJcbiAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5vbkFpR3JhcGhpY1N1Z2dlc3QoeyBjb2RlOiB0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCwgaGludDogdGhpcy52ZUdyYXBoaWNIaW50IH0pO1xyXG4gICAgdGhpcy52ZVNob3dHcmFwaGljSW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMudmVHcmFwaGljSGludCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdmVPcGVuUmVvcmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgdGhpcy52ZVJlb3JkZXJGaWVsZHMgPSBbLi4uKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pXTtcclxuICAgIHRoaXMuZGlhbG9nVmVSZW9yZGVyUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1ZlUmVvcmRlciwge1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZlQXBwbHlSZW9yZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkcyA9IFsuLi50aGlzLnZlUmVvcmRlckZpZWxkc107XHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlUmVvcmRlclJlZj8uY2xvc2UoKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICB9XHJcblxyXG4gIG9uVmVEcmFnRHJvcFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPEJhc2VGaWVsZFtdPik6IHZvaWQge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMudmVSZW9yZGVyRmllbGRzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgdmVTdGFydFN3YXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIHRoaXMudmVTd2FwRmllbGQgPSB0aGlzLnZlU2VsZWN0ZWRGaWVsZDtcclxuICB9XHJcblxyXG4gIHZlRG9Td2FwKHRhcmdldEZpZWxkOiBCYXNlRmllbGQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy52ZVN3YXBGaWVsZCB8fCAhdGhpcy5mb3JtLkZpZWxkcykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5mb3JtLkZpZWxkcztcclxuICAgIGNvbnN0IGlkeEEgPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gdGhpcy52ZVN3YXBGaWVsZCEuTGFiZWwpO1xyXG4gICAgY29uc3QgaWR4QiA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSB0YXJnZXRGaWVsZC5MYWJlbCk7XHJcbiAgICBpZiAoaWR4QSA+PSAwICYmIGlkeEIgPj0gMCkge1xyXG4gICAgICBbZmllbGRzW2lkeEFdLCBmaWVsZHNbaWR4Ql1dID0gW2ZpZWxkc1tpZHhCXSwgZmllbGRzW2lkeEFdXTtcclxuICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgIH1cclxuICAgIHRoaXMudmVTd2FwRmllbGQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgdmVDYW5jZWxTd2FwKCk6IHZvaWQge1xyXG4gICAgdGhpcy52ZVN3YXBGaWVsZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICB2ZURlbGV0ZUZpZWxkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsKTtcclxuICAgIGlmICghZmllbGQpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgLy8gc2V0VGltZW91dCBuZWNlc3NhcmlvOiBTd2VldEFsZXJ0IG5vbiBzaSBhcHJlIGNvcnJldHRhbWVudGUgc2UgaWwgTWF0ZXJpYWwgRGlhbG9nIMOoIGFuY29yYSBpbiBmYXNlIGRpIGNoaXVzdXJhXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVsZXRlRWxlbWVudChmaWVsZCwgJ0ZpZWxkcycpLCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9QQUxFVFRFUyA9IFtcclxuICAgICdtb25vY3JvbWF0aWNvIHZpYnJhbnRlJywgJ2NvbXBsZW1lbnRhcmUnLCAndHJpYWRpY28nLCAnYW5hbG9nbyBjYWxkbycsICdhbmFsb2dvIGZyZWRkbycsXHJcbiAgICAncGFzdGVsbG8gZGVsaWNhdG8nLCAnbmVvbiBzdSBzY3VybycsICdlYXJ0aCB0b25lcycsICdvY2Vhbm8gcHJvZm9uZG8nLCAndHJhbW9udG8gY29sb3JhdG8nLFxyXG4gICAgJ2ZvcmVzdGEgYXV0dW5uYWxlJywgJ2xhdmFuZGEgZSBvcm8nLCAnY29yYWxsbyBlIHR1cmNoZXNlJywgJ3Jvc3NvIGUgYW50cmFjaXRlJywgJ3ZlcmRlIGFjcXVhIGUgc2FiYmlhJyxcclxuICAgICd2aW9sYSBlbGV0dHJpY28gZSBnaWFsbG8gbGltb25lJywgJ3Jvc2EgY2lwcmlhIGUgZ3JpZ2lvIHBlcmxhJywgJ2JsdSBjb2JhbHRvIGUgYXJhbmNpbyBicnVjaWF0bycsXHJcbiAgICAnb3JvIGFudGljbyBlIGJvcmRlYXV4JywgJ21lbnRhIGZyZXNjYSBlIGNpb2Njb2xhdG8nLCAnYXJnZW50byBlIGJsdSBhY2NpYWlvJywgJ3Blc2NhIGUgaW5kYWNvJyxcclxuICAgICdyb3NzbyBjaWxpZWdpYSBlIGF2b3JpbycsICd0ZWFsIHNjdXJvIGUgcmFtZScsICdsaW1lIGUgYmx1IG5hdnknLCAnbGlsbGEgZSB2ZXJkZSBzYWx2aWEnLFxyXG4gICAgJ2F6enVycm8gZ2hpYWNjaW8gZSBncmlnaW8gYXJkZXNpYScsICdhbWJyYSBlIHBldHJvbGlvJywgJ3NtZXJhbGRvIGUgcm9zYSBhbnRpY28nLCAnYmlhbmNvIGUgbmVybyBjb24gYWNjZW50byByb3NzbyBmdW9jbycsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9TVFlMRVMgPSBbXHJcbiAgICAnbWluaW1hbGlzdGEnLCAnYm9sZCBlIHZpdmFjZScsICdlbGVnYW50ZSBlIHNvYnJpbycsICdnaW9jb3NvIGUgZGluYW1pY28nLCAnaW5kdXN0cmlhbGUnLFxyXG4gICAgJ3JldHJvZnV0dXJpc3RhJywgJ29yZ2FuaWNvIGUgbmF0dXJhbGUnLCAndGVjaC9kaWdpdGFsZScsICdsdXh1cnkgcHJlbWl1bScsICd2aW50YWdlIG1vcmJpZG8nLFxyXG4gICAgJ2ZsYXQgZGVzaWduIHB1bGl0bycsICdnbGFzc21vcnBoaXNtJywgJ25ldW1vcmZpc21vJywgJ2RhcmsgbW9kZSByYWZmaW5hdG8nLFxyXG4gICAgJ2JydXRhbGlzdCBjb24gYm9yZGkgc3Blc3NpJywgJ3NjYW5kaW5hdm8gcHVsaXRvJywgJ2FydCBkw6ljbyBnZW9tZXRyaWNvJywgJ2N5YmVycHVuayBkaXN0b3BpY28nLFxyXG4gICAgJ3BvcCBhcnQgYSB0aW50ZSBwaWF0dGUnLCAnd2F0ZXJjb2xvciBwYXN0ZWxsbyBzZnVtYXRvJywgJ25lb24gYW5uaSBvdHRhbnRhJywgJ21hdGVyaWFsIGRlc2lnbiBjb24gb21icmUnLFxyXG4gICAgJ2F1cm9yYSBib3JlYWxlJywgJ3N3aXNzIHN0eWxlIHRpcG9ncmFmaWNvJywgJ3Ryb3BpY2FsZSB2aXZhY2UnLCAnbW9ub2Nyb21vIGNvbiBhY2NlbnRvIHNpbmdvbG8nLFxyXG4gICAgJ2F1cm9yYSBub3R0dXJuYSBzY3VyYScsICdjb3R0YWdlY29yZSBjYWxkbycsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9BREpFQ1RJVkVTID0gW1xyXG4gICAgJ29yaWdpbmFsZScsICdpbXByZXZlZGliaWxlJywgJ2FjY2F0dGl2YW50ZScsICdzcGV0dGFjb2xhcmUnLCAnZGVsaWNhdG8nLFxyXG4gICAgJ2F1ZGFjZScsICdyYWZmaW5hdG8nLCAnZ2lvY29zbycsICd2aXZhY2UnLCAnbWlzdGVyaW9zbycsXHJcbiAgICAnY2FsZG8nLCAnZnJlc2NvJywgJ3JvbWFudGljbycsICdmdXR1cmlzdGljbycsICdlbGVnYW50ZScsXHJcbiAgICAncnVzdGljbycsICdtb2Rlcm5vJywgJ3ZpbnRhZ2UnLCAnYXJtb25pb3NvJywgJ3NvcnByZW5kZW50ZScsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBidWlsZEhpbnRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwaWNrID0gPFQ+KGFycjogVFtdKTogVCA9PiBhcnJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCldO1xyXG4gICAgY29uc3QgcGFsZXR0ZSA9IHBpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1BBTEVUVEVTKTtcclxuICAgIGNvbnN0IHN0eWxlID0gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfU1RZTEVTKTtcclxuICAgIGNvbnN0IGFkajEgPSBwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9BREpFQ1RJVkVTKTtcclxuICAgIGNvbnN0IHVzZVR3byA9IE1hdGgucmFuZG9tKCkgPCAwLjU7XHJcbiAgICBjb25zdCBhZGoyID0gdXNlVHdvID8gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfQURKRUNUSVZFUy5maWx0ZXIoYSA9PiBhICE9PSBhZGoxKSkgOiBudWxsO1xyXG4gICAgY29uc3QgYWRqVGV4dCA9IGFkajIgPyBgJHthZGoxfSBlICR7YWRqMn1gIDogYWRqMTtcclxuICAgIHJldHVybiBgUGFsZXR0ZSAke3BhbGV0dGV9LCBzdGlsZSAke3N0eWxlfSwgJHthZGpUZXh0fWA7XHJcbiAgfVxyXG5cclxuICByYW5kb21pemVIaW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RIaW50ID0gdGhpcy5idWlsZEhpbnRUZXh0KCk7XHJcbiAgfVxyXG5cclxuICByYW5kb21pemVWZUhpbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZlR3JhcGhpY0hpbnQgPSB0aGlzLmJ1aWxkSGludFRleHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRSYW5kb21HcmFwaGljSGludCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGljayA9IDxUPihhcnI6IFRbXSk6IFQgPT4gYXJyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFyci5sZW5ndGgpXTtcclxuICAgIGNvbnN0IHJhZGl1cyA9IFsnYm9yZGVyLXJhZGl1cyBwaWNjb2xvICgyLTRweCknLCAnYm9yZGVyLXJhZGl1cyBtZWRpbyAoOC0xMHB4KScsICdib3JkZXItcmFkaXVzIGdyYW5kZSAoMTYtMjBweCknLCAnYm9yZGVyLXJhZGl1cyBwaWxsb2xhICg5OTk5cHgpJ107XHJcbiAgICByZXR1cm4gYENBU1VBTEU6IHBhbGV0dGUgXCIke3BpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1BBTEVUVEVTKX1cIiwgc3RpbGUgXCIke3BpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1NUWUxFUyl9XCIsICR7cGljayhyYWRpdXMpfS4gSWdub3JhIGxhIHRhYmVsbGEgcHJlc2V0IHNldHRvcmlhbGkgZSBjcmVhIHVuYSBncmFmaWNhIG9yaWdpbmFsZSBlIGltcHJldmVkaWJpbGUuYDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcGxldGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBWaXN1YWwgRWRpdG9yXHJcblxyXG59XHJcbiIsIjxlcXAtZHluYW1pYy1tb2R1bGUtc3Bpbm5lcj48L2VxcC1keW5hbWljLW1vZHVsZS1zcGlubmVyPlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItaGVhZGVyIHJvdyB0aXRsZSBwLTFcIiAqbmdJZj1cImlubmVyRm9ybU1hbmFnbWVudFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGUtc3RhbmRhcmRcIj5BZ2dpdW50YSBmb3JtIGRpIGRldHRhZ2xpbzwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiB0ZXh0LXJpZ2h0XCI+XHJcbiAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvbiBjbG9zZVwiIChjbGljayk9XCJjbG9zZURpYWxvZ0lubmVyRm9ybSgpXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0jcmVnaW9uIEVYUE9SVCBNT0RVTEUgLS0+XHJcbjxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItZXhwb3J0ZXJcIiAqbmdJZj1cImxvYWRlciAmJiB2aWV3TW9kZSA9PSAnRXhwb3J0J1wiIGNsYXNzPVwicC0zXCI+XHJcblxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZXhwb3J0KClcIj5Fc3BvcnRhPC9idXR0b24+XHJcblxyXG4gIDwhLS08YVxyXG4gICAgY2xhc3M9XCJidG4gYnRuLWNsZWFyXCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgdGl0bGU9XCJEb3dubG9hZCBKU09OXCJcclxuICAgIFtocmVmXT1cImRvd25sb2FkSnNvbkhyZWZcIlxyXG4gICAgZG93bmxvYWQ9XCJ7eyBkb3dubG9hZE5hbWUgfX0uanNvblwiXHJcbiAgICA+RXhwb3J0PC9hPi0tPlxyXG5cclxuPC9kaXY+XHJcbjwhLS0jZW5kcmVnaW9uIEVYUE9SVCBNT0RVTEUgLS0+XHJcblxyXG48bWF0LWhvcml6b250YWwtc3RlcHBlciAqbmdJZj1cImxvYWRlciAmJiBmb3JtRm9ybUdyb3VwICYmIHZpZXdNb2RlID09ICdhZGRPckVkaXQnXCIgbGluZWFyICNzdGVwcGVyXHJcbiAgW25nQ2xhc3NdPVwieyBvdXRlckZvcm06IHRydWUsICdpbm5lckZvcm1NYW5hZ21lbnQtc3RlcHBlcic6IGlubmVyRm9ybU1hbmFnbWVudCAgfVwiXHJcbiAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3Itc3RlcHBlciB7eyAnbGFzdC1lZGl0ZWQtc3RlcC0nICsgc3RlcHBlci5zZWxlY3RlZEluZGV4IH19XCI+XHJcbiAgPCEtLSNyZWdpb24gREFUSSBHRU5FUkFMSSBERUxMQSBGT1JNIC0tPlxyXG4gIDxtYXQtc3RlcCBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1nZW5lcmFsLWRhdGFcIiBbc3RlcENvbnRyb2xdPVwiZm9ybUZvcm1Hcm91cFwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRm9ybUdyb3VwXCIgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWhlYWRlci1vdmVybGF5XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+PC9kaXY+XHJcbiAgICAgICAgRGF0aSBnZW5lcmFsaSBkZWxsYSBmb3JtXHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiPlxyXG4gICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPnt7IGlzTmV3Rm9ybSA/ICdDcmVhIGNvbiBBSScgOiAnTW9kaWZpY2EgY29uIEFJJyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gVWx0aW1vIHByb21wdCBBSSArIGFjY2Vzc28gYWxsbyBzdG9yaWNvIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50ICYmIGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCJcclxuICAgICAgICBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWJhclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1pY29uLXdyYXBcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtbGFiZWxcIj5SaWNoaWVzdGEgQUkgaW5pemlhbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC10ZXh0XCI+e3sgYWlQcm9tcHRIaXN0b3J5WzBdIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtaGlzdG9yeS1idG5cIiBtYXRUb29sdGlwPVwiVmVkaSBzdG9yaWNvIGNvbXBsZXRvXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlIaXN0b3J5RGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImhpc3RvcnlcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZmlyc3RSb3dcIj5cclxuICAgICAgICA8IS0tXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInVmEgaW5zZXJpdG8gcGVyIGVzc2VyZSB1dGlsaXp6YXRvIGNvbWUgcmlmZXJpbWVudG8gbmVpIHRlbXBsYXRlLiBub24gYWNjZXR0YSBjYXJhdHRlcmkgc3BlY2lhbGkgbmUgc3BhemkuJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQ29kaWNlIFVuaXZvY29cclxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1ZhIGluc2VyaXRvIHBlciBlc3NlcmUgdXRpbGl6emF0byBjb21lIHJpZmVyaW1lbnRvIG5laSB0ZW1wbGF0ZS4gbm9uIGFjY2V0dGEgY2FyYXR0ZXJpIHNwZWNpYWxpIG5lIHNwYXppLidcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic2V0Q29kZShmb3JtLkNvZGUpXCJcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgcmVhZG9ubHk9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwiTm9tZVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIiBbKG5nTW9kZWwpXT1cImZvcm0uTmFtZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInNldE5hbWUoZm9ybS5OYW1lKVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1sYWJlbD5UaXBvIGRpIHZpc3VhbGl6emF6aW9uZTwvbWF0LWxhYmVsPiAtLT5cclxuICAgICAgICAgIDx0bXctc2VsZWN0IGNsYXNzPVwibmFtZVNlY3Rpb25cIiBbZW51bURhdGFdPVwiRm9ybVNjYWxhclR5cGVFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm0uRm9ybVNjYWxhclR5cGVcIlxyXG4gICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJmYWxzZVwiIHJlcXVpcmVkIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZvcm1Gb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Zvcm1TY2FsYXJUeXBlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUaXBvIGRpIHZpc3VhbGl6emF6aW9uZVwiPlxyXG4gICAgICAgICAgPC90bXctc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkRlc2NyaXppb25lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiIFsobmdNb2RlbCldPVwiZm9ybS5EZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmb3JtLk5hbWUpXCIgcGxhY2Vob2xkZXI9XCJEZXNjcml6aW9uZVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBpbnNlcnRlZFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICYmXHJcbiAgICAgICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVxyXG4gICAgICAgIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibmFtZVNlY3Rpb25cIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPiBOb21lIHNlemlvbmUgKGludmlvIHBlciBjb25mZXJtYXJlKSA8L21hdC1sYWJlbD5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm1GaWVsZEdyb3VwTmFtZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgKGtleXVwKT1cIm9uRm9ybUZpZWxkR3JvdXBOYW1lS2V5VXAoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiTm9tZSBzZXppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSlcIiAvPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPlNlemlvbmkgaW5zZXJpdGU6PC9zcGFuPlxyXG4gICAgICAgICAgPHVsIGNsYXNzPVwic2VjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXBOYW1lIG9mIGZvcm0uRm9ybUZpZWxkc0dyb3VwczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbkluc2VydFwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gbXItMVwiIChjbGljayk9XCJvbkRlbGV0ZUZvcm1GaWVsZEdyb3VwTmFtZShncm91cE5hbWUuTmFtZSlcIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvbiBtci0xIGljb24tYmxhY2tcIiAoY2xpY2spPVwib25FZGl0Rm9ybUZpZWxkR3JvdXBOYW1lKGdyb3VwTmFtZSlcIiBuYW1lPVwiZWRpdFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgICB7eyBncm91cE5hbWUuTmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICA8IS0tIElNUE9SVCAtLT5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXRoaXMuZm9ybUlEXCIgY2xhc3M9XCJidG4gYnRuLWNsZWFyIGJ1dHRvbi1uZXh0IG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZHVsZSgpXCI+XHJcbiAgICAgICAgICBJbXBvcnRhXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPCEtLSBFTkQgSU1QT1JUIC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCBbZGlzYWJsZWRdPVwiZm9ybUZvcm1Hcm91cC5pbnZhbGlkXCI+XHJcbiAgICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gREFUSSBHRU5FUkFMSSBERUxMQSBGT1JNIC0tPlxyXG5cclxuICA8IS0tI3JlZ2lvbiBBR0dJVU5UQSBERUkgQ0FNUEkgREVMTEEgRk9STSAtLT5cclxuICA8bWF0LXN0ZXAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItYWRkLWZpZWxkXCIgW2NvbXBsZXRlZF09XCJpc0ZpZWxkU3RlcENvbXBsZXRlZCgpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICA8bWF0LWxhYmVsPkNhbXBpIGRhIGluc2VyaXJlPC9tYXQtbGFiZWw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFkZEJ1dHRvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWVsZERpYWxvZygpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwbHVzXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naSBjYW1wbzwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiXHJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5Jbm5lckZvcm1EaWFsb2coKVwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpbm5lckZvcm1NYW5hZ21lbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIGZvcm0gZGkgZGV0dGFnbGlvPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgYnRuLW91dGxpbmVkLXJlZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJyZWRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZEZpZWxkcygnRmllbGRzJylcIiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkVsaW1pbmEgY2FtcGkgc2VsZXppb25hdGk8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BaUVkaXREaWFsb2coKVwiICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj57eyBpc05ld0Zvcm0gPyAnQ3JlYSBjb24gQUknIDogJ01vZGlmaWNhIGNvbiBBSScgfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRtdy10YWJsZSBjbGFzcz1cInRhYmxlXCIgI2ZpZWxkc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiZmllbGRzQ29sdW1uc1wiIFtlbmFibGVEcmFnQW5kRHJvcF09XCJmYWxzZVwiXHJcbiAgICAgIFtlbmFibGVEcmFnQ29sdW1uXT1cInRydWVcIiBbY2hhbmdlRHJhZ1Jvd1Bvc2l0aW9uXT1cInRydWVcIiBbaXNNdWx0aXBsZVNlbGVjdGlvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZm9ybS5GaWVsZHNcIlxyXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1biBjYW1wbyBpbnNlcml0bydcIiAoZHJhZ1JlbGVhc2VkRXZlbnQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiXHJcbiAgICAgIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCIgKGNoZWNrYm94SW5mbyk9XCJ0b2dnbGVEZWxldGVCdXR0b24oJGV2ZW50KVwiIFtzZWFyY2hUZXh0XT1cIicnXCJcclxuICAgICAgW3BhZ2luYXRvclZpc2libGVdPVwiZmFsc2VcIj5cclxuICAgIDwvdG13LXRhYmxlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIHByZXZpb3VzXCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPlxyXG4gICAgICAgIFByZWNlZGVudGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tbmV4dFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdFN0ZXBwZXJOZXh0IFtkaXNhYmxlZF09XCIhaXNGaWVsZFN0ZXBDb21wbGV0ZWQoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZm9ybUZvcm1Hcm91cC5pbnZhbGlkIH1cIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUkgQ0FNUEkgREVMTEEgRk9STSAtLT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7IGluZGV4ICsgMSB9fTwvbWF0LWxhYmVsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0jcmVnaW9uIEFHR0lVTlRBIERFTExFIE9QRVJBWklPTkkgU1VJIFJFQ09SRCAtLT5cclxuICA8IS0tIzxtYXQtc3RlcD5cclxuICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWhlYWRlci1vdmVybGF5XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+PC9kaXY+XHJcbiAgICAgIEF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmRcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWN0aW9uT25SZWNvcmREaWFsb2coKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgYXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHRtdy10YWJsZVxyXG4gICAgICBjbGFzcz1cInRhYmxlXCJcclxuICAgICAgI2FjdGlvbnNPblJlY29yZFRhYmxlXHJcbiAgICAgIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCJcclxuICAgICAgW2NvbHVtbnNdPVwiYWN0aW9uc09uUmVjb3JkQ29sdW1uc1wiXHJcbiAgICAgIFtkYXRhXT1cImZvcm0uQWN0aW9uc09uUmVjb3JkXCJcclxuICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW5hIGFjdGlvbiBpbnNlcml0YSdcIlxyXG4gICAgICBbc2VhcmNoVGV4dF09XCInJ1wiXHJcbiAgICA+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b25zTmV4dERpdlwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidXR0b24tbmV4dFwiXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIG1hdFN0ZXBwZXJOZXh0XHJcbiAgICAgICAgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFN1Y2Nlc3Npdm9cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1zdGVwPi0tPlxyXG4gIDwhLS0jZW5kcmVnaW9uIEFHR0lVTlRBIERFTExFIE9QRVJBWklPTkkgU1VJIFJFQ09SRCAtLT5cclxuXHJcblxyXG5cclxuICA8IS0tI3JlZ2lvbiBBR0dJVU5UQSBERUkgQk9UVE9OSSBBWklPTkUgLS0+XHJcbiAgPG1hdC1zdGVwPlxyXG4gICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cclxuICAgICAgQm90dG9uaSBBemlvbmVcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BY3Rpb25CdXR0b25EaWFsb2coKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgYm90dG9uZSBhemlvbmU8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dG13LXRhYmxlIGNsYXNzPVwidGFibGVcIiAjYWN0aW9uQnV0dG9uc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiYWN0aW9uQnV0dG9uc0NvbHVtbnNcIlxyXG4gICAgICBbZGF0YV09XCJmb3JtLkFjdGlvbkJ1dHRvbnNcIiBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1biBib3R0b25lIGF6aW9uZSBpbnNlcml0bydcIiBbc2VhcmNoVGV4dF09XCInJ1wiXHJcbiAgICAgIFtlbmFibGVEcmFnQW5kRHJvcF09XCJmYWxzZVwiIFtlbmFibGVEcmFnQ29sdW1uXT1cInRydWVcIiBbY2hhbmdlRHJhZ1Jvd1Bvc2l0aW9uXT1cInRydWVcIlxyXG4gICAgICAoZHJhZ1JlbGVhc2VkRXZlbnQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCI+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b25zTmV4dERpdlwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUkgQk9UVE9OSSBBWklPTkUgLS0+XHJcblxyXG5cclxuXHJcbiAgPCEtLSNyZWdpb24gVFJJR0dFUlMtLT5cclxuICA8bWF0LXN0ZXA+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICBUcmlnZ2Vyc1xyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuVHJpZ2dlcnNEaWFsb2coKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgdHJpZ2dlcjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dG13LXRhYmxlIGNsYXNzPVwidGFibGVcIiAjdHJpZ2dlcnNUYWJsZSBbY3JlYXRlTWF0Q2FyZF09XCJmYWxzZVwiIFtjb2x1bW5zXT1cInRyaWdnZXJzQ29sdW1uc1wiIFtkYXRhXT1cImZvcm0uVHJpZ2dlcnNcIlxyXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1bmEgYWN0aW9uIGluc2VyaXRhJ1wiIFtzZWFyY2hUZXh0XT1cIicnXCI+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCBbZGlzYWJsZWRdPVwiIWlzRmllbGRTdGVwQ29tcGxldGVkKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGZvcm1Gb3JtR3JvdXAuaW52YWxpZCB9XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXModHJ1ZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gVFJJR0dFUlMtLT5cclxuXHJcbiAgPCEtLSNyZWdpb24gVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBIC0tPlxyXG4gIDxtYXQtc3RlcCBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1wcmV2aWV3XCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoIGZvcm1Gb3JtR3JvdXAudmFsaWQgJiYgZm9ybS5GaWVsZHMgJiYgZm9ybS5GaWVsZHMubGVuZ3RoID4gMCApXCI+PC9kaXY+XHJcbiAgICAgIEFudGVwcmltYVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBhZGRCdXR0b25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dBbGxGaWVsZHNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93QWxsRmllbGRzID0gIXNob3dBbGxGaWVsZHNcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgW25hbWVdPVwic2hvd0FsbEZpZWxkcyA/ICdleWUtb2ZmJyA6ICdleWUnXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5Nb3N0cmEgYW5jaGUgaSBjYW1waSBpbnZpc2liaWxpPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCIgKm5nSWY9XCJjb250ZXN0dWFsaXphdGlvbiAmJiBjb250ZXN0dWFsaXphdGlvbi5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbiAhPSBudWxsXCIgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImFkanVzdG1lbnRzLWhvcml6b250YWxcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkNvbnRlc3R1YWxpenphemlvbmU8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93R3JhZmljYVBhbmVsXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93R3JhZmljYVBhbmVsID0gIXNob3dHcmFmaWNhUGFuZWxcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkdyYWZpY2E8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJ2aXN1YWxFZGl0b3JBY3RpdmVcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVZpc3VhbEVkaXRvcigpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJsYXlvdXQtZ3JpZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+VmlzdWFsIEVkaXRvcjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50RW5kUG9pbnRcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPk1vZGlmaWNhIGNvbiBBSTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwidmVTd2FwRmllbGRcIiBjbGFzcz1cInZlLXN3YXAtYmFubmVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uIHZlLXN3YXAtYmFubmVyLWljb25cIiBuYW1lPVwiYXJyb3dzLWxlZnQtcmlnaHRcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3Bhbj5DbGljY2Egc3VsIGNhbXBvIGNvbiBjdWkgdnVvaSBzY2FtYmlhcmUgbGEgcG9zaXppb25lPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInZlQ2FuY2VsU3dhcCgpXCIgY2xhc3M9XCJ2ZS1zd2FwLWJhbm5lci1jYW5jZWxcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgICBBbm51bGxhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dHcmFmaWNhUGFuZWxcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJjb25maWd1cmF0b3ItYWNjb3JkaW9uXCIgW211bHRpXT1cInRydWVcIiBkaXNwbGF5TW9kZT1cImZsYXRcIj5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cImNvbmZpZ3VyYXRvci1wYW5lbFwiIFtleHBhbmRlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+R3JhZmljYTwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyYWZpY2EtYWktcm93XCIgKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZvcm0tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiIChjbGljayk9XCJ0b2dnbGVGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cIiFmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIHt7IGZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIEdyYWZpY2EgQ29tcGxldGEnIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1ncmFwaGljLXNjb3BlLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9ybUdyYXBoaWNTY29wZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWxsXCI+VHV0dG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtYWluXCI+UHJpbmNpcGFsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIHByZXNlbnRGaWVsZFR5cGVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPnt7IG9wdC5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUhpbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImJ1bGJcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdlbmVyYXRlLWJnXCIgW2NsYXNzLmFjdGl2ZV09XCJnZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXRlQmFja2dyb3VuZCA9ICFnZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2VuZXJhdGVCYWNrZ3JvdW5kID8gJ1Nmb25kbyBBSTogYXR0aXZvJyA6ICdHZW5lcmEgYW5jaGUgc2ZvbmRvIEFJJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGhvdG9cIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1ncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImZvcm1HcmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGJsdSBzY3Vybywgc3RpbGUgcHJvZmVzc2lvbmFsZSwgc2ZvbmRvIHNmdW1hdG8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZvcm0tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uRm9ybUdyYXBoaWNTdWdnZXN0KClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY28gYWwgZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aHIgY2xhc3M9XCJncmFmaWNhLWFpLXNlcGFyYXRvclwiIC8+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0IGdyYWZpY2Etcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ3JhZmljYS1maWVsZC1sYWJlbFwiPkltbWFnaW5lIGRpIHNmb25kbzwvcD5cclxuICAgICAgICAgICAgICA8dG13LWF0dGFjaG1lbnRzIFthdHRhY2htZW50c0xpc3RdPVwiYmdBdHRhY2htZW50TGlzdFwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJmYWxzZVwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCIgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwib25CZ0ltYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG9uRGVsZXRlQXR0YWNobWVudCk9XCJvbkJnSW1hZ2VEZWxldGUoKVwiPlxyXG4gICAgICAgICAgICAgIDwvdG13LWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DU1MgUHJpbmNpcGFsZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwiZm9ybS5UaGVtZUNTU1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIG1heC13aWR0aDogODAwcHg7IHBhZGRpbmc6IDE2cHg7IGJhY2tncm91bmQ6ICNmNWY1ZjU7XCIgcm93cz1cIjVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkNTUyBUaXRvbG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm0uVGl0bGVDU1NcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwcmV2aWV3Rm9ybSAmJiAocHJldmlld0Zvcm0uVGl0bGVDU1MgPSAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gZm9udC1zaXplOiAycmVtOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogI2ZmZjtcIiByb3dzPVwiNVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1wcmV2aWV3XCIgW3N0eWxlXT1cInByZXZpZXdCZ1N0eWxlXCI+XHJcbiAgICAgIDxkaXYgW3N0eWxlXT1cInByZXZpZXdUaGVtZVN0eWxlXCI+XHJcbiAgICAgICAgPGFkZC1mb3JtLXJlY29yZCAqbmdJZj1cInByZXZpZXdGb3JtICYmIGZvcm1Db21wbGV0ZWRcIiBbZm9ybV09XCJwcmV2aWV3Rm9ybVwiIFt1c2VySURdPVwiVXNlcklEXCIgW29yZ2FJRF09XCJvcmdhSURcIlxyXG4gICAgICAgICAgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtjb25maWd1cmF0aW9uc109XCJ2aWV3Q29uZmlnXCIgW3Nob3dBbGxGaWVsZHNdPVwic2hvd0FsbEZpZWxkc1wiXHJcbiAgICAgICAgICBbUXVlcnlFZGl0b3JDb21wb25lbnRdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgICAgICAgICBbdmlzdWFsRWRpdG9yTW9kZV09XCJ2aXN1YWxFZGl0b3JBY3RpdmVcIiBbdmVTd2FwRmllbGRDb2RlXT1cInZlU3dhcEZpZWxkPy5MYWJlbCA/PyBudWxsXCJcclxuICAgICAgICAgICh2ZUZpZWxkQ2xpY2spPVwib25WZUZpZWxkQ2xpY2soJGV2ZW50KVwiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpXCJcclxuICAgICAgICAgIChmaXJlVHJpZ2dlcik9XCJvbkZpcmVUcmlnZ2VyKCRldmVudClcIiBbaW5Db25maWddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvYWRkLWZvcm0tcmVjb3JkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJ1dHRvbi1uZXh0RGl2XCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIGJ1dHRvbi1leGl0XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPlxyXG4gICAgICAgIFByZWNlZGVudGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tbmV4dFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRm9ybSgpXCI+XHJcbiAgICAgICAgU2FsdmEgZm9ybVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBIC0tPlxyXG5cclxuPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG5cclxuPCEtLSBESUFMT0cgQUdHSVVOVEEvTU9ESUZJQ0EgQ0FNUE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRmllbGQ+XHJcbiAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZCBbZm9ybV09XCJmb3JtXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgW2ZpZWxkXT1cInNlbGVjdGVkRmllbGRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2luZGV4RmllbGRdPVwiaW5kZXhTZWxlY3RlZEZpZWxkXCJcclxuICAgIFthdmFpbGFibGVGaWVsZHNdPVwiZm9ybS5GaWVsZHNcIiBbY29udGVzdHVhbGl6YXRpb25dPVwiY29udGVzdHVhbGl6YXRpb25cIlxyXG4gICAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2ZpZWxkc0V4dHJhQ29uZmlnXT1cImZpZWxkc0V4dHJhQ29uZmlnXCJcclxuICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiBbYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIFtmb3JtRmllbGRzR3JvdXBzXT1cIlxyXG4gICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVxyXG4gICAgICA/IGZvcm0uRm9ybUZpZWxkc0dyb3Vwc1xyXG4gICAgICA6IG51bGxcclxuICAgICAgXCIgKG9wZW5BaUVkaXRGb3JGaWVsZEV2ZW50KT1cIm9uQWlFZGl0Rm9yRmllbGQoJGV2ZW50KVwiIChvcGVuQWlHcmFwaGljU3VnZ2VzdEV2ZW50KT1cIm9uQWlHcmFwaGljU3VnZ2VzdCgkZXZlbnQpXCJcclxuICAgIChzYXZlRmllbGRFdmVudCk9XCJvblNhdmVGaWVsZCgkZXZlbnQpXCIgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudClcIj5cclxuICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVEVNUExBVEUgUEVSIFZJU1VBTElaWkFSRSBMQSBDT0xPTk5BIERFTExBIFNFWklPTkUgTkVMTEEgVEFCRUxMQSBERUkgRklFTERTIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICA8dG13LXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm0uRm9ybUZpZWxkc0dyb3Vwc1wiIFsobmdNb2RlbElucHV0KV09XCJyb3cuRmllbGRHcm91cFwiIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiXHJcbiAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIHBsYWNlaG9sZGVyPVwiU2V6aW9uZVwiIFtpc1JlcXVpcmVkXT1cInRydWVcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICA8L3Rtdy1zZWxlY3Q+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERJQUxPRyBQRVIgQUdHSVVOR0VSRS9NT0RJRklDQVJFIFVOQSBBQ1RJT04gU1VJIFJFQ09SRCBERUxMQSBGT1JNIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FjdGlvbk9uUmVjb3JkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRoaXJkLW1vZGFsXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiA3MHZoICFpbXBvcnRhbnQ7IG92ZXJmbG93LXg6IGhpZGRlbjsgb3ZlcmZsb3cteTogYXV0b1wiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3Rpb25PblJlY29yZEZvcm1Hcm91cFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHRpdGxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZS1zdGFuZGFyZFwiPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgIGluZGV4U2VsZWN0ZWRBY3Rpb24gIT0gbnVsbCAmJiBpbmRleFNlbGVjdGVkQWN0aW9uID49IDBcclxuICAgICAgICAgID8gXCJNb2RpZmljYVwiXHJcbiAgICAgICAgICA6IFwiQWdnaXVuZ2lcIlxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGF6aW9uZSBzdWwgcmVjb3JkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPiBOb21lIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTmFtZVwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uTmFtZVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD4gSWNvbmEgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uXCIgcmVxdWlyZWQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEFjdGlvbi5JY29uXCIgLz5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5BemlvbmUgKEphdmFzY3JpcHQpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbcm93c109XCIzXCIgZm9ybUNvbnRyb2xOYW1lPVwiQWN0aW9uXCIgcmVxdWlyZWQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEFjdGlvbi5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYWN0aW9uQXV0b2NvbXBsZXRlXCIgKGtleXVwKT1cInNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMobnVsbClcIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2FjdGlvbkF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMiBtYi0xXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNGb3JtXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1hdC1yYWlzZWQtYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJjbG9zZURpYWxvZ0FjdGlvbk9uUmVjb3JkKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgc2F2ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlQWN0aW9uT25SZWNvcmQoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25PblJlY29yZEZvcm1Hcm91cC5pbnZhbGlkXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICBTYWx2YVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIEFHR0lVTkdFUkUvTU9ESUZJQ0FSRSBVTiBCT1RUT05FIEFaSU9ORSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dBY3Rpb25CdXR0b24+XHJcbiAgPGFjdGlvbi1idXR0b24tY3JlYXRvciBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtmb3JtXT1cImZvcm1cIiBbZm9ybXVsYXNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgICBbYWN0aW9uQnV0dG9uXT1cInNlbGVjdGVkQWN0aW9uQnV0dG9uXCIgKG9uU2F2ZVJlY29yZCk9XCJzYXZlQWN0aW9uQnV0dG9ucygkZXZlbnQpXCI+PC9hY3Rpb24tYnV0dG9uLWNyZWF0b3I+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBDT05GSUdVUkFSRSBMRSBGT1JNIERJIERFVFRBR0xJTyAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dJbm5lckZvcm0+XHJcbiAgPCEtLSBbZm9ybV09XCJzZWxlY3RlZElubmVyRm9ybVwiXHJcbiAgICBbaW5uZXJGb3JtTWFuYWdtZW50XT1cInRydWVcIlxyXG4gICAgW2lubmVyRm9ybVJlZl09XCJkaWFsb2dJbm5lckZvcm1SZWZcIiAtLT5cclxuICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvciBbY29uZmlndXJhdGlvbnNdPVwiaW5uZXJGb3JtQ29uZmlnXCIgKHNhdmVGb3JtRXZlbnQpPVwib25TYXZlT3JFeGl0SW5uZXJGb3JtKCRldmVudClcIj5cclxuICA8L2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3I+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBJTVBPUlQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nSW1wb3J0PlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImltcG9ydERpYWxvZ1wiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cInAtMiBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kXCI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICBJbXBvcnRcclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJpbnB1dC1maWxlLWJ0biBwYi0yXCIgKGNoYW5nZSk9XCJvbkltcG9ydCgkZXZlbnQpXCIgLz5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tY2xlYXIgYnV0dG9uLWJhY2sgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VJbXBvcnQoKVwiPlxyXG4gICAgICAgIEFubnVsbGFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuICA8L21hdC1jYXJkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIEFHR0lVTkdFUkUvTU9ESUZJQ0FSRSBJIFRSSUdHRVJTIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ1RyaWdnZXJzPlxyXG4gIDx0cmlnZ2VyLWNyZWF0b3IgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbZm9ybV09XCJmb3JtXCIgW2Zvcm11bGFzXT1cInRyaWdnZXJzXCJcclxuICAgIFt0cmlnZ2VyXT1cInNlbGVjdGVkVHJpZ2dlclwiIChvblNhdmVSZWNvcmQpPVwic2F2ZVRyaWdnZXIoJGV2ZW50KVwiPjwvdHJpZ2dlci1jcmVhdG9yPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgTU9ESUZJQ0EgQ09OIEFJIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpRWRpdD5cclxuICA8bWF0LWNhcmQgc3R5bGU9XCJtaW4td2lkdGg6IDQ4MHB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgPHNwYW4+e3sgaXNOZXdGb3JtID8gJ0NyZWEgZm9ybSBjb24gQUknIDogJ01vZGlmaWNhIGZvcm0gY29uIEFJJyB9fTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWhpc3RvcnktdG9nZ2xlLWJ0blwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93QWlQcm9tcHRIaXN0b3J5XCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJzaG93QWlQcm9tcHRIaXN0b3J5ID8gJ05hc2NvbmRpIHN0b3JpY28gcmljaGllc3RlJyA6ICdNb3N0cmEgc3RvcmljbyByaWNoaWVzdGUnXCJcclxuICAgICAgICAoY2xpY2spPVwic2hvd0FpUHJvbXB0SGlzdG9yeSA9ICFzaG93QWlQcm9tcHRIaXN0b3J5XCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBbbmFtZV09XCJzaG93QWlQcm9tcHRIaXN0b3J5ID8gJ2hpc3Rvcnktb2ZmJyA6ICdoaXN0b3J5J1wiPjwvdG13LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWRpYWxvZy1ib2R5LWZsZXhcIj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTMgYWktZGlhbG9nLW1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDwhLS0gUHJvbXB0IHRleHRhcmVhICsgbWljcm9mb25vIC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBpc05ld0Zvcm0gPyAnRGVzY3JpdmkgaWwgZm9ybSBkYSBjcmVhcmUnIDogJ0Rlc2NyaXZpIGxhIG1vZGlmaWNhIGRhIGFwcG9ydGFyZScgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwiYWlFZGl0UHJvbXB0XCIgcm93cz1cIjVcIiBbZGlzYWJsZWRdPVwiYWlFZGl0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzTmV3Rm9ybSA/ICdFczogY3JlYSB1biBmb3JtIHBlciBsYSByZWdpc3RyYXppb25lIHBhemllbnRpIGNvbiBjYW1waSBub21lLCBjb2dub21lLCBkYXRhIGRpIG5hc2NpdGEgZSBjb2RpY2UgZmlzY2FsZS4uLicgOiAnRXM6IGFnZ2l1bmdpIHVuIGNhbXBvIGRhdGEgZGkgbmFzY2l0YSwgcmltdW92aSBpbCBjYW1wbyBlbWFpbCwgcmVuZGkgb2JibGlnYXRvcmlvIGlsIGNhbXBvIHRlbGVmb25vLi4uJ1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cInRydWVcIiBTcGVlY2hUb1RleHQgWyhiaW5kZWRUZXh0KV09XCJhaUVkaXRQcm9tcHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDEycHg7IHRvcDogMTJweDsgY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogIzY2NlwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImlzTmV3Rm9ybSA/ICdQYXJsYSBwZXIgZGVzY3JpdmVyZSBpbCBmb3JtJyA6ICdQYXJsYSBwZXIgZGV0dGFyZSBsYSBtb2RpZmljYSdcIiBuYW1lPVwibWljcm9waG9uZVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQWxsZWdhdGkgKyBnZW5lcmEgc2ZvbmRvIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIG10LTFcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCIgKGNsaWNrKT1cImFpRWRpdEZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhcGVyY2xpcFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDZweFwiPkFnZ2l1bmdpIGFsbGVnYXRpIChQREYgbyBpbW1hZ2luaSk8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxpbnB1dCAjYWlFZGl0RmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgYWNjZXB0PVwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uQWlFZGl0RmlsZUNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ2VuZXJhdGUtYmdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWlHZW5lcmF0ZUJhY2tncm91bmQgPSAhYWlHZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhaUdlbmVyYXRlQmFja2dyb3VuZCA/ICdTZm9uZG8gQUk6IGF0dGl2bycgOiAnR2VuZXJhIGFuY2hlIHNmb25kbyBBSSdcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGhvdG9cIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsICpuZ0lmPVwiYWlFZGl0QXR0YWNobWVudHMubGVuZ3RoID4gMFwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTsgcGFkZGluZzogMDsgbWFyZ2luOiAwIDAgMTJweFwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhdHQgb2YgYWlFZGl0QXR0YWNobWVudHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tYm90dG9tOiA0cHhcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIG5hbWU9XCJmaWxlXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgYXR0LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjOTk5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQWlFZGl0QXR0YWNobWVudChpKVwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgPCEtLSBBdXRvc2F2ZSAtLT5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImFpRWRpdEF1dG9zYXZlXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgIHt7IGlzTmV3Rm9ybSA/ICdTYWx2YSBhdXRvbWF0aWNhbWVudGUgZG9wbyBsYSBjcmVhemlvbmUnIDogJ1NhbHZhIGF1dG9tYXRpY2FtZW50ZSBkb3BvIGxhIG1vZGlmaWNhJyB9fVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuXHJcbiAgICAgICAgPCEtLSBDb250byBhbGxhIHJvdmVzY2lhIG1vc3RyYXRvIG1lbnRyZSBBSSBlbGFib3JhIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhaUVkaXRMb2FkaW5nICYmIGFpRWRpdEVzdGltYXRlZFNlYyA+IDBcIiBjbGFzcz1cIm10LTMgbWItMVwiPlxyXG4gICAgICAgICAgPCEtLSBGYXNlIG5vcm1hbGU6IGNvdW50ZG93biBpbiBjb3JzbyAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWlFZGl0SXNPdmVydGltZVwiPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwiKDEgLSBhaUVkaXRDb3VudGRvd24gLyBhaUVkaXRFc3RpbWF0ZWRTZWMpICogMTAwXCJcclxuICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiPlxyXG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDRweFwiPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgIE9wZXJhemlvbmUgaW4gY29yc28g4oCUIHRlbXBvIHN0aW1hdG8gcmltYW5lbnRlOiA8Yj57eyBhaUVkaXRDb3VudGRvd24gfX1zPC9iPlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8IS0tIEZhc2Ugb3ZlcnRpbWU6IGlsIHNlcnZlciBpbXBpZWdhIHBpw7kgZGVsIHByZXZpc3RvIC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFpRWRpdElzT3ZlcnRpbWVcIj5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cIndhcm5cIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMnB4OyBtYXJnaW4tdG9wOiA2cHhcIj5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICBTZW1icmEgY2hlIGNpIHZvZ2xpYSBwacO5IGRlbCBwcmV2aXN0byDigJQgPGI+K3t7IC1haUVkaXRDb3VudGRvd24gfX1zPC9iPlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjYW5jZWxBaUVkaXQoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMjZweDsgbGluZS1oZWlnaHQ6IDI2cHg7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZzogMCAxMHB4OyBtaW4td2lkdGg6IHVuc2V0XCI+XHJcbiAgICAgICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gU3RpbWEgY29zdG8gQUkgKGFnZ2lvcm5hdGEgaW4gdGVtcG8gcmVhbGUgYWwgdmFyaWFyZSBkZWwgcHJvbXB0LCBkZWwgbW9kZWxsbyBjaXRhdG8sXHJcbiAgICAgICAgICAgICBkZWdsaSBhbGxlZ2F0aSBlIGRlbCBudW1lcm8gZGkgc3BsaXQgaXBvdGl6emF0bykgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwgbXQtM1wiICpuZ0lmPVwiIWFpRWRpdExvYWRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWljb25cIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiY2FzaFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC10aXRsZVwiPkNvc3RvIHN0aW1hdG8gdXNvIEFJPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1tb2RlbFwiPnt7IGFpRWRpdERldGVjdGVkTW9kZWxMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWlFZGl0U3BsaXRDb3VudCA8PSAxOyBlbHNlIGFpQ29zdFNwbGl0TGluZXNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS1sYWJlbFwiPlByaW1vIHVzbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLXZhbHVlXCI+YWwgbWFzc2ltbyB7eyBmb3JtYXRBaUVkaXRDb3N0KGFpRWRpdENvc3RGaXJzdEV1cikgfX0g4oKsPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+VXNpIHN1Y2Nlc3Npdmk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS12YWx1ZVwiPmFsIG1hc3NpbW8ge3sgZm9ybWF0QWlFZGl0Q29zdChhaUVkaXRDb3N0U3Vic2VxdWVudEV1cikgfX1cclxuICAgICAgICAgICAgICAgICAg4oKsPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhaUNvc3RTcGxpdExpbmVzPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+e3sgYWlFZGl0U3BsaXRDb3VudCB9fSBwYXJ0aSBwYXJhbGxlbGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS12YWx1ZVwiPmFsIG1hc3NpbW8ge3sgZm9ybWF0QWlFZGl0Q29zdChhaUVkaXRDb3N0Rmlyc3RFdXIpIH19IOKCrDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1oaW50XCI+e3sgYWlFZGl0U3BsaXRXYXJtVXBBcHBsaWVzXHJcbiAgICAgICAgICAgICAgICA/ICdJbCBzZXJ2ZXIgc2NhbGRhIGxhIGNhY2hlIHByaW1hIGRlbGxvIHNwbGl0OiByaXNwYXJtaW8gc3UgJyArIGFpRWRpdFNwbGl0Q291bnQgKyAnIGNoaWFtYXRlJ1xyXG4gICAgICAgICAgICAgICAgOiAnU3BsaXQgdHJvcHBvIHBpY2NvbG8gcGVyIGxhIGNhY2hlOiBuZXNzdW4gYmVuZWZpY2lvLCBwcmV6em8gcGllbm8gc3UgJyArIGFpRWRpdFNwbGl0Q291bnQgKyAnXHJcbiAgICAgICAgICAgICAgICBjaGlhbWF0ZScgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLXNwbGl0XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk51bWVybyBkaSBzcGxpdCBpcG90aXp6YXRpIHBlciBsYSBzdGltYSAoMSA9IG5lc3N1bm8gc3BsaXQsIGFsdHJpbWVudGkgMy0xMjogaWwgc2VydmVyIG5vbiB1c2EgbWFpIDIgc3BsaXQpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1zcGxpdC1sYWJlbFwiPlNwbGl0PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1zcGxpdC1zdGVwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWJ0blwiIFtkaXNhYmxlZF09XCJhaUVkaXRTcGxpdENvdW50IDw9IDFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwibWludXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWlucHV0XCIgWyhuZ01vZGVsKV09XCJhaUVkaXRTcGxpdENvdW50XCIgbWluPVwiMVwiIG1heD1cIjEyXCIgLz5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWNvc3Qtc3BsaXQtYnRuXCIgW2Rpc2FibGVkXT1cImFpRWRpdFNwbGl0Q291bnQgPj0gMTJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICAgIDwhLS0gUGFubmVsbG8gc3RvcmljbyByaWNoaWVzdGUgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWlQcm9tcHRIaXN0b3J5ICYmIGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCIgY2xhc3M9XCJhaS1oaXN0b3J5LXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIiBuYW1lPVwiaGlzdG9yeVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5TdG9yaWNvIHJpY2hpZXN0ZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1saXN0XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9tcHQgb2YgYWlQcm9tcHRIaXN0b3J5OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJhaS1oaXN0b3J5LWl0ZW1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1oaXN0b3J5LWluZGV4XCI+e3sgaSArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS10ZXh0XCI+e3sgcHJvbXB0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cInAtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiIHN0eWxlPVwiZ2FwOiA4cHhcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiAoY2xpY2spPVwiY2xvc2VBaUVkaXREaWFsb2coKVwiPlxyXG4gICAgICAgIEFubnVsbGFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhYWlFZGl0UHJvbXB0Py50cmltKCkgfHwgYWlFZGl0TG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbmRBaUVkaXQoKVwiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRWRpdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE4XCJcclxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6IDZweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgPHNwYW4+e3sgYWlFZGl0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogKGlzTmV3Rm9ybSA/ICdDcmVhIGNvbiBBSScgOiAnTW9kaWZpY2EgY29uIEFJJykgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVklTVUFMIEVESVRPUiDigJQgVG9vbHRpcCBhemlvbmkgY2FtcG8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVmVUb29sdGlwPlxyXG4gIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLXBhbmVsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1oZWFkZXJcIj5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gdmUtdG9vbHRpcC1pY29uXCIgbmFtZT1cImVkaXRcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInZlLXRvb2x0aXAtdGl0bGVcIj57eyB2ZVNlbGVjdGVkRmllbGQ/LkRlc2NyaXB0aW9uIH19PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2ZVNob3dHcmFwaGljSW5wdXRcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZUVkaXRGaWVsZCgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwic2V0dGluZ3NcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIE1vZGlmaWNhIGNhbXBvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnRcIiAoY2xpY2spPVwidmVBaUVkaXQoKVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIE1vZGlmaWNhIGNvbiBJQVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCJcclxuICAgICAgICAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gdHJ1ZVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIFN1Z2dlcmlzY2kgR3JhZmljYVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZU9wZW5SZW9yZGVyKClcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJncmlwLXZlcnRpY2FsXCI+PC90bXctaWNvbj5cclxuICAgICAgICBSaW9yZGluYVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZVN0YXJ0U3dhcCgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiYXJyb3dzLWxlZnQtcmlnaHRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIFNjYW1iaWFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInZlRGVsZXRlRmllbGQoKVwiIHN0eWxlPVwiY29sb3I6ICNlNTM5MzU7XCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBzdHlsZT1cImNvbG9yOiAjZTUzOTM1O1wiIG5hbWU9XCJ0cmFzaFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgRWxpbWluYSBjYW1wb1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLWdyYXBoaWNcIiAqbmdJZj1cInZlU2hvd0dyYXBoaWNJbnB1dFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1ncmFwaGljLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2ZVNob3dHcmFwaGljSW5wdXQgPSBmYWxzZTsgdmVBcHBseVRvQWxsT2ZUeXBlID0gZmFsc2VcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImFycm93LWxlZnRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+R3JhZmljYSBwZXIgXCJ7eyB2ZVNlbGVjdGVkRmllbGQ/LkxhYmVsIH19XCI8L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplVmVIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImJ1bGJcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+U3VnZ2VyaW1lbnRvIGdyYWZpY288L21hdC1sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJ2ZUdyYXBoaWNIaW50XCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIHJvd3M9XCIzXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIGJvcmRvIGJsdSwgc2ZvbmRvIHNlbWktdHJhc3BhcmVudGUsIGV0aWNoZXR0YSBpbiBncmFzc2V0dG8uLi5cIj48L3RleHRhcmVhPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmUtYXBwbHktYWxsLXJvd1wiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwidmVBcHBseVRvQWxsT2ZUeXBlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgQXBwbGljYSBhIHR1dHRpIGkgPHN0cm9uZz57eyB2ZVNlbGVjdGVkRmllbGRUeXBlTmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLWdyYXBoaWMtYWN0aW9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7IHZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlXCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInZlU2VuZEdyYXBoaWMoKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICBJbnZpYVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBWSVNVQUwgRURJVE9SIOKAlCBSaW9yZGluYSBjYW1waSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dWZVJlb3JkZXI+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwidmUtcmVvcmRlci1jYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmUtcmVvcmRlci1oZWFkZXJcIj5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiZ3JpcC12ZXJ0aWNhbFwiPjwvdG13LWljb24+XHJcbiAgICAgIDxzcGFuPlJpb3JkaW5hIGNhbXBpPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uVmVEcmFnRHJvcFJlb3JkZXIoJGV2ZW50KVwiIGNsYXNzPVwidmUtcmVvcmRlci1saXN0XCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdmVSZW9yZGVyRmllbGRzXCIgY2RrRHJhZyBjbGFzcz1cInZlLXJlb3JkZXItaXRlbVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gdmUtZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlIG5hbWU9XCJncmlwLXZlcnRpY2FsXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuPnt7IGZpZWxkLkRlc2NyaXB0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZlLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBzdHlsZT1cImdhcDogOHB4XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nVmVSZW9yZGVyUmVmPy5jbG9zZSgpXCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ2ZUFwcGx5UmVvcmRlcigpXCI+T0s8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERJQUxPRyBDT05URVNUVUFMSVpaQVpJT05FIERCR0VUVEVSIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0NvbnRlc3R1YWxpemF0aW9uPlxyXG4gIDxtYXQtY2FyZCBzdHlsZT1cIm1pbi13aWR0aDogNDIwcHhcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPkNvbnRlc3R1YWxpenphemlvbmUgZGVsIERCR2V0dGVyPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgPHRtdy1zZWxlY3QgW2FycmF5RGF0YV09XCJjb250ZXN0dWFsaXphdGlvblwiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uXCJcclxuICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIlxyXG4gICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db250ZXN0dWFsaXphdGlvblNlbGVjdCgpXCIgW3BsYWNlaG9sZGVyXT1cIidDb250ZXN0dWFsaXp6YXppb25lIGRlbCBEQkdldHRlcidcIlxyXG4gICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPjwvdG13LXNlbGVjdD5cclxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24gIT0gbnVsbFwiIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblZhbHVlXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25Db250ZXN0dWFsaXphdGlvblNlbGVjdFZhbHVlKClcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyIGNsYXNzPVwicC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgc3R5bGU9XCJnYXA6IDhweFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseUNvbnRlc3R1YWxpemF0aW9uKG51bGwpOyBjbG9zZUNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKClcIj5SaW11b3ZpPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseUNvbnRlc3R1YWxpemF0aW9uKGNvbnRlc3R1YWxpemF0aW9uKTsgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+QXBwbGljYTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gTU9EQUxFIFNUT1JJQ08gUFJPTVBUIEFJIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpSGlzdG9yeT5cclxuICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhaS1kaWFsb2ctaGVhZGVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImhpc3RvcnlcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3Bhbj5TdG9yaWNvIHJpY2hpZXN0ZSBBSTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktaGlzdG9yeS10b2dnbGUtYnRuXCIgKGNsaWNrKT1cImRpYWxvZ0FpSGlzdG9yeVJlZj8uY2xvc2UoKVwiXHJcbiAgICAgICAgbWF0VG9vbHRpcD1cIkNoaXVkaVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWJvZHlcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvbXB0IG9mIGFpUHJvbXB0SGlzdG9yeTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctaXRlbVwiXHJcbiAgICAgICAgW2NsYXNzLmFpLWhpc3RvcnktZGlhbG9nLWl0ZW0tLWxhc3RdPVwiaSA9PT0gYWlQcm9tcHRIaXN0b3J5Lmxlbmd0aCAtIDFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctYmFkZ2VcIj57eyBpICsgMSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1wcm9tcHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0LWxhYmVsXCIgKm5nSWY9XCJpID09PSBhaVByb21wdEhpc3RvcnkubGVuZ3RoIC0gMVwiPlBpw7kgcmVjZW50ZTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0LXRleHRcIj57eyBwcm9tcHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctZm9vdGVyXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaWFsb2dBaUhpc3RvcnlSZWY/LmNsb3NlKClcIj5DaGl1ZGk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBSSBEYXRhR2V0dGVyOiBjYXJpY2FtZW50byBzaWxlbnQgZGVsIFF1ZXJ5RWRpdG9yIHBlciBwb3BvbGFyZSBEYXRhR2V0dGVyVmFsdWUgdmlhIHByb21wdCAtLT5cclxuPGRpdiAqbmdJZj1cImFpRGF0YUdldHRlckxvYWRpbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW5cIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uQWlEYXRhR2V0dGVyT3V0KCRldmVudClcIj48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
2537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGtCQUFrQixFQUVsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxjQUFjLEVBQ2QsSUFBSSxFQUVKLGtCQUFrQixFQUNsQixZQUFZLEdBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUs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O2dCQUlVLHVCQUF1QjtzQkFBOUUsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR04sZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBUaHJvd1N0bXQgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1xyXG4gIENlbGxBbGlnbm1lbnRFbnVtLFxyXG4gIENvbmZpZ0NvbHVtbixcclxuICBUbXdUYWJsZUNvbXBvbmVudCxcclxuICBUeXBlQ29sdW1uLFxyXG59IGZyb20gXCJ0bXctdGFibGVcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlciwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZEludmlzaWJpbGl0eUVudW0sIEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEVuZFBvaW50Q29uZmlndXJhdGlvbixcclxuICBFbmRQb2ludERhdGFQYXJhbXMsXHJcbiAgUGFyYW1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEFjdGlvbk9uUmVjb3JkLFxyXG4gIEZvcm0sXHJcbiAgRm9ybUZpZWxkR3JvdXAsXHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtLFxyXG4gIEZvcm1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgQXJyYXlWYWxpZGF0b3JzIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1mb3JtLXZhbGlkYXRvcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRyaWdnZXIsIEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIEZpcmVUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBDb250ZXN0dWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZ2V0dGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlU2VsZWN0b3JGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZEV4dHJhQ29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRUeXBlLCBUbXdBdHRhY2htZW50RFRPIH0gZnJvbSBcInRtdy1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50XCI7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgaW5qZWN0R29vZ2xlRm9udHNGcm9tRm9ybSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2dvb2dsZS1mb250cy1pbmplY3Rvcic7XHJcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yTW9kZUVudW0gfSBmcm9tIFwiLi4vLi4vcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkc0V4dHJhQ29uZmlnOiBBcnJheTxGaWVsZEV4dHJhQ29uZmlnPjtcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyA9XHJcbiAgICBuZXcgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZygpO1xyXG4gIEBJbnB1dCgpIGZvcm1JRDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSB2aWV3TW9kZTogc3RyaW5nID0gXCJhZGRPckVkaXRcIjsgLy8gRXhwb3J0XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIHRyaWdnZXJzOiBhbnk7XHJcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uczogYW55O1xyXG4gIEBJbnB1dCgpIGNvbnRlc3R1YWxpemF0aW9uOiBBcnJheTxDb250ZXN0dWFsaXphdGlvbj47XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55OyAvLyBFc2VtcGlvOiB7Y3Vycm9sZTogcm9sZSwgdXNlcjogdXNlciwgbWVkaWNhbDogbWVkaWNhbGV4YW1pbmF0aW9ufVxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRvclRoZW1lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdG9yVGhlbWVDc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgZmlyZVRyaWdnZXI6IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPigpO1xyXG5cclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUb2tlbiBkYSB1c2FyZSBuZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSByZWNvcmQuXHJcbiAgICogVXNhdG8gc29sbyBzZSB2aWVuZSBwb3BvbGF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiLlxyXG4gICAqL1xyXG4gIHVzZXJUb2tlbjogc3RyaW5nID0gbnVsbDtcclxuICAvKipcclxuICAgKiBDb25maWd1cmF6aW9uZSBkZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSBkYXRpLlxyXG4gICAqIFB1w7IgZXNzZXJlIGRlZmluaXRhIGRhbGwndXRlbnRlIG9wcHVyZSBsYXNjaWF0YSBudWxsLCB2aWVuZSBwb3BvbGF0YSBjb24gZGVpXHJcbiAgICogdmFsb3JpIGRpIGRlZmF1bHQgc2UgdmllbmUgdmFsb3JpenphdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIiBhbHRyaW1lbnRpXHJcbiAgICogdmllbmUgbGFzY2lhdGEgbnVsbCBlIG5vbiB2aWVuZSBlc2VndWl0YSBuZXNzdW5hIGNoaWFtYXRhIGFsIHNlcnZlci5cclxuICAgKi9cclxuICBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbiA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogVXJsIGRlbCBzZXJ2ZXIgZGEgY2hpYW1hcmUgcGVyIHJlY3VlcmFyZSwgc2FsdmFyZSBvIGVsaW1pbmFyZSBpIHJlY29yZC5cclxuICAgKiBVc2F0byBwZXIgY3JlYXJlIGxhIGNvbmZpZ3VyYXppb25lIGRpIGRlZmF1bHQgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgYmFzZVNlcnZlclVybDogc3RyaW5nID0gbnVsbDtcclxuICBjb250ZXh0OiBDb250ZXh0ID0gbmV3IENvbnRleHQoKTtcclxuXHJcbiAgLyogZXhwb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGRvd25sb2FkTmFtZTogc3RyaW5nO1xyXG4gIGRvd25sb2FkSnNvbkhyZWY6IGFueTtcclxuICBzdHJpbmdpZmllZEZvcm06IHN0cmluZztcclxuXHJcbiAgLyogaW1wb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGltcG9ydGVkTW9kdWxlOiBzdHJpbmcgPSBudWxsOyAvLyBqc29uIG9iamVjdFxyXG4gIGRpYWxvZ0ltcG9ydFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dJbXBvcnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nSW1wb3J0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBiYWNrdXBGb3JtOiBGb3JtID0gbnVsbDtcclxuICBzYXZlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9yZ2FJRDogc3RyaW5nID0gbnVsbDtcclxuICBVc2VySUQ6IG51bWJlciA9IDM2O1xyXG4gIGlubmVyRm9ybU1hbmFnbWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlubmVyRm9ybVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICAvKiBDT05GSUdVUkFaSU9ORSBQRVIgVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBICovXHJcbiAgdmlld0NvbmZpZzogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcoXHJcbiAgICB0cnVlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIFwiMFwiXHJcbiAgKTtcclxuXHJcbiAgZm9ybUZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG51bGw7XHJcbiAgZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gIHByZXZpZXdGb3JtOiBGb3JtO1xyXG4gIGZvcm1GaWVsZEdyb3VwTmFtZTogc3RyaW5nO1xyXG5cclxuICBhY3Rpb25BdXRvY29tcGxldGVPcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XHJcblxyXG4gIC8vI3JlZ2lvbiBFbnVtZXJhdG9yaSB1c2F0aSBuZWxsJ2h0bWxcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtID0gRm9ybVNjYWxhclR5cGVFbnVtO1xyXG4gIEF0dGFjaG1lbnRUeXBlID0gQXR0YWNobWVudFR5cGU7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBHZXN0aW9uZSBzZm9uZG8gZm9ybVxyXG4gIGdldCBwcmV2aWV3QmdTdHlsZSgpOiBTYWZlU3R5bGUgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5mb3JtPy5CZ0ltYWdlQmFzZTY0KSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoW1xyXG4gICAgICBgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJHt0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NH0nKWAsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXNpemU6IGNvdmVyJyxcclxuICAgICAgJ2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0JyxcclxuICAgIF0uam9pbignOyAnKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJldmlld1RoZW1lU3R5bGUoKTogU2FmZVN0eWxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uVGhlbWVDU1MpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmZvcm0uVGhlbWVDU1MudHJpbSgpLnJlcGxhY2UoLzskLywgJycpKTtcclxuICB9XHJcblxyXG4gIGdldCBiZ0F0dGFjaG1lbnRMaXN0KCk6IFRtd0F0dGFjaG1lbnREVE9bXSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uQmdJbWFnZUJhc2U2NCkgcmV0dXJuIFtdO1xyXG4gICAgY29uc3QgYXR0ID0gbmV3IER5bkF0dGFjaG1lbnQoKTtcclxuICAgIGF0dC5JRCA9IDA7XHJcbiAgICBhdHQuRmlsZURhdGFCYXNlNjQgPSB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NDtcclxuICAgIGF0dC5Jc0ltYWdlID0gdHJ1ZTtcclxuICAgIGF0dC5GaWxlQ29udGVudFR5cGUgPSAnaW1hZ2UvcG5nJztcclxuICAgIHJldHVybiBbYXR0XTtcclxuICB9XHJcblxyXG4gIG9uQmdJbWFnZUNoYW5nZShhdHRhY2htZW50czogVG13QXR0YWNobWVudERUT1tdKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGF0dGFjaG1lbnRzPy5sZW5ndGggPiAwID8gYXR0YWNobWVudHNbMF0uRmlsZURhdGFCYXNlNjQgOiBudWxsO1xyXG4gICAgdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnByZXZpZXdGb3JtKSB0aGlzLnByZXZpZXdGb3JtLkJnSW1hZ2VCYXNlNjQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQmdJbWFnZURlbGV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5CZ0ltYWdlQmFzZTY0ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnByZXZpZXdGb3JtKSB0aGlzLnByZXZpZXdGb3JtLkJnSW1hZ2VCYXNlNjQgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklFTERfVFlQRV9MQUJFTFM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XHJcbiAgICAxOiAnQ2FtcG8gZGkgdGVzdG8nLFxyXG4gICAgMjogJ1Rlc3RvIGx1bmdvJyxcclxuICAgIDM6ICdCb29sZWFubycsXHJcbiAgICA0OiAnRGF0YScsXHJcbiAgICA1OiAnTnVtZXJpY28nLFxyXG4gICAgNjogJ0FsbGVnYXRvJyxcclxuICAgIDc6ICdJbW1hZ2luZScsXHJcbiAgICA4OiAnRWxlbmNvJyxcclxuICAgIDExOiAnU2VsZXR0b3JlIGltbWFnaW5pJyxcclxuICAgIDEyOiAnRXRpY2hldHRhJyxcclxuICAgIDEzOiAnSW1tYWdpbmUgY29uIG1hcmNhdG9yaScsXHJcbiAgICAxNDogJ0JvdHRvbmUgYXppb25lJyxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0NTU19DTEFTUzogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcclxuICAgIDE6ICdUZXh0RmllbGRTdHlsZUNTUycsXHJcbiAgICAyOiAnVGV4dGFyZWFGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDM6ICdCb29sZWFuRmllbGRTdHlsZUNTUycsXHJcbiAgICA0OiAnRGF0ZUZpZWxkU3R5bGVDU1MnLFxyXG4gICAgNTogJ051bWVyaWNGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDY6ICdBdHRhY2htZW50RmllbGRTdHlsZUNTUycsXHJcbiAgICA3OiAnSW1hZ2VGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDg6ICdMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDExOiAnSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTI6ICdMYWJlbEZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTM6ICdJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUycsXHJcbiAgICAxNDogJ0FjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MnLFxyXG4gIH07XHJcblxyXG4gIC8vIE1hcHBhIGFsaWFzIG1vZGVsbG8g4oaSIElEIENsYXVkZSBwacO5IHJlY2VudGU7IGwnb3JkaW5lIGRpIGNoZWNrIMOoIHJpbGV2YW50ZSAoRmFibGUgZSBPcHVzIHByaW1hIGRpIFNvbm5ldC9IYWlrdSlcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNT0RFTF9NQVA6IEFycmF5PHsgcGF0dGVybjogUmVnRXhwOyBpZDogc3RyaW5nIH0+ID0gW1xyXG4gICAgeyBwYXR0ZXJuOiAvXFxiKD86KD86dXNhfHVzZXxjb258dXNpbmcpXFxzKyk/ZmFibGVcXGIvZ2ksIGlkOiAnY2xhdWRlLWZhYmxlLTUnIH0sXHJcbiAgICB7IHBhdHRlcm46IC9cXGIoPzooPzp1c2F8dXNlfGNvbnx1c2luZylcXHMrKT9vcHVzXFxiL2dpLCBpZDogJ2NsYXVkZS1vcHVzLTQtNycgfSxcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP3Nvbm5ldFxcYi9naSwgaWQ6ICdjbGF1ZGUtc29ubmV0LTQtNicgfSxcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP2hhaWt1XFxiL2dpLCBpZDogJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnIH0sXHJcbiAgXTtcclxuXHJcbiAgLy8gUHJlenppIHVmZmljaWFsaSBBbnRocm9waWMgVVNEL01Ub2sgcGVyIG1vZGVsbG8gKHBhZ2luYSBcIlByZXp6aSBkZWkgbW9kZWxsaVwiLCB2ZXJpZmljYXRhIDIwMjYtMDcpLlxyXG4gIC8vIGNhY2hlV3JpdGUgw6ggaWwgcHJlenpvIGRpIHNjcml0dHVyYSBjYWNoZSBhIDEgT1JBOiDDqCBpbCBDYWNoZVR0bCBjb25maWd1cmF0byBzdSBxdWFzaSB0dXR0aSBnbGlcclxuICAvLyBhbWJpZW50aSByZWFsaSAoVGFrZWNhcmUsIE1vc2FpY28sIFRlbGVtZWR3YXJlLCBlY2MuIOKAlCBzb2xvIERldmVsb3BtZW50IHVzYSBcIm5vbmVcIiwgVGVzdCB1c2EgXCIxaFwiXHJcbiAgLy8gYW5jaCdlc3NvKSwgcXVpbmRpIMOoIGxhIHN0aW1hIHJlYWxpc3RpY2EgYW5jaGUgc2UgbGVnZ2VybWVudGUgcGnDuSBhbHRhIGRlaSA1IG1pbnV0aS4gVGVuZXJlXHJcbiAgLy8gYWxsaW5lYXRpIGEgRHluYW1pY01vZHVsZS5BcGlcXFNraWxsc1xcRE1BSV9TS0lMTEZPUksubWQgZSBhaSBzZXJ2aXppIENsYXVkZSpTZXJ2aWNlLmNzIGxhdG8gc2VydmVyLlxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFJX01PREVMX1BSSUNJTkc6IFJlY29yZDxzdHJpbmcsIHsgaW5wdXQ6IG51bWJlcjsgb3V0cHV0OiBudW1iZXI7IGNhY2hlV3JpdGU6IG51bWJlcjsgY2FjaGVSZWFkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfT4gPSB7XHJcbiAgICAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMSc6IHsgaW5wdXQ6IDEuMDAsIG91dHB1dDogNS4wMCwgY2FjaGVXcml0ZTogMi4wMCwgY2FjaGVSZWFkOiAwLjEwLCBsYWJlbDogJ0hhaWt1JyB9LFxyXG4gICAgJ2NsYXVkZS1zb25uZXQtNC02JzogeyBpbnB1dDogMy4wMCwgb3V0cHV0OiAxNS4wMCwgY2FjaGVXcml0ZTogNi4wMCwgY2FjaGVSZWFkOiAwLjMwLCBsYWJlbDogJ1Nvbm5ldCcgfSxcclxuICAgICdjbGF1ZGUtb3B1cy00LTcnOiB7IGlucHV0OiA1LjAwLCBvdXRwdXQ6IDI1LjAwLCBjYWNoZVdyaXRlOiAxMC4wMCwgY2FjaGVSZWFkOiAwLjUwLCBsYWJlbDogJ09wdXMnIH0sXHJcbiAgICAnY2xhdWRlLWZhYmxlLTUnOiB7IGlucHV0OiAxMC4wMCwgb3V0cHV0OiA1MC4wMCwgY2FjaGVXcml0ZTogMjAuMDAsIGNhY2hlUmVhZDogMS4wMCwgbGFiZWw6ICdGYWJsZScgfSxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGV4dHJhY3RNb2RlbEZyb21UZXh0KHRleHQ6IHN0cmluZyk6IHsgY2xlYW5UZXh0OiBzdHJpbmc7IG1vZGVsSWQ6IHN0cmluZyB8IG51bGwgfSB7XHJcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuTU9ERUxfTUFQKSB7XHJcbiAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgaWYgKGVudHJ5LnBhdHRlcm4udGVzdCh0ZXh0KSkge1xyXG4gICAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgICBjb25zdCBjbGVhblRleHQgPSB0ZXh0XHJcbiAgICAgICAgICAucmVwbGFjZShlbnRyeS5wYXR0ZXJuLCAnJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9bIFxcdF0rL2csICcgJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHMqWy4sO11cXHMqJC8sICcnKVxyXG4gICAgICAgICAgLnRyaW0oKTtcclxuICAgICAgICBlbnRyeS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgcmV0dXJuIHsgY2xlYW5UZXh0LCBtb2RlbElkOiBlbnRyeS5pZCB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGNsZWFuVGV4dDogdGV4dCwgbW9kZWxJZDogbnVsbCB9O1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtR3JhcGhpY1N1Z2dlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCByYXdIaW50ID0gdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RIaW50Py50cmltKCk7XHJcbiAgICBpZiAoIXRoaXMuZm9ybSB8fCAhdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQpIHJldHVybjtcclxuICAgIGNvbnN0IHsgY2xlYW5UZXh0OiBoaW50LCBtb2RlbElkOiBhaU1vZGVsSWQgfSA9IHRoaXMuZXh0cmFjdE1vZGVsRnJvbVRleHQocmF3SGludCk7XHJcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuZm9ybUdyYXBoaWNTY29wZTtcclxuXHJcbiAgICAvLyBTY29wZSB0aXBvIHNwZWNpZmljbzogdmFsaWRhIGVzaXN0ZW56YSBkZWwgY2FtcG8gcHJpbWEgZGkgcGFydGlyZVxyXG4gICAgbGV0IHNjb3BlRmllbGRUeXBlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIGlmIChzY29wZS5zdGFydHNXaXRoKCd0eXBlXycpKSB7XHJcbiAgICAgIHNjb3BlRmllbGRUeXBlID0gcGFyc2VJbnQoc2NvcGUucmVwbGFjZSgndHlwZV8nLCAnJyksIDEwKTtcclxuICAgICAgY29uc3QgZXhpc3RzID0gKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLnNvbWUoZiA9PiBmLkZpZWxkVHlwZSA9PT0gc2NvcGVGaWVsZFR5cGUpO1xyXG4gICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKCdOZXNzdW4gY2FtcG8gZGkgcXVlc3RvIHRpcG8gcHJlc2VudGUgbmVsIGZvcm0uJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBDYW1waSBkYSBpbnZpYXJlOiB1biByYXBwcmVzZW50YW50ZSBwZXIgdGlwbyAoYWxsL21haW4pIG9wcHVyZSBzb2xvIGlsIHByaW1vIGRlbCB0aXBvIHNjZWx0byAodGlwbyBzcGVjaWZpY28pXHJcbiAgICBjb25zdCBzZWVuVHlwZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuICAgIGNvbnN0IGZpZWxkc1RvU2VuZCA9IHNjb3BlRmllbGRUeXBlICE9IG51bGxcclxuICAgICAgPyAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4gZi5GaWVsZFR5cGUgPT09IHNjb3BlRmllbGRUeXBlKS5zbGljZSgwLCAxKS5tYXAoZiA9PiAoeyBMYWJlbDogZi5MYWJlbCwgRmllbGRUeXBlOiBmLkZpZWxkVHlwZSB9KSlcclxuICAgICAgOiAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4geyBpZiAoc2VlblR5cGVzLmhhcyhmLkZpZWxkVHlwZSkpIHJldHVybiBmYWxzZTsgc2VlblR5cGVzLmFkZChmLkZpZWxkVHlwZSk7IHJldHVybiB0cnVlOyB9KS5tYXAoZiA9PiAoeyBMYWJlbDogZi5MYWJlbCwgRmllbGRUeXBlOiBmLkZpZWxkVHlwZSB9KSk7XHJcblxyXG4gICAgY29uc3QgZ3JhcGhpY3NQYXJhbXM6IEVuZFBvaW50RGF0YVBhcmFtc1tdID0gW1xyXG4gICAgICB7IFBhcmFtTmFtZTogJ05hbWUnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uTmFtZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdEZXNjcmlwdGlvbicsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5EZXNjcmlwdGlvbiA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RoZW1lQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLlRoZW1lQ1NTID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnVGl0bGVDU1MnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uVGl0bGVDU1MgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdGaWVsZHMnLCBQYXJhbVZhbHVlOiBmaWVsZHNUb1NlbmQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnSGludCcsIFBhcmFtVmFsdWU6IGhpbnQgfHwgdGhpcy5idWlsZFJhbmRvbUdyYXBoaWNIaW50KCksIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTW9kZWxJZCcsIFBhcmFtVmFsdWU6IGFpTW9kZWxJZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdHZW5lcmF0ZUJhY2tncm91bmQnLCBQYXJhbVZhbHVlOiB0aGlzLmdlbmVyYXRlQmFja2dyb3VuZCAmJiBzY29wZSA9PT0gJ2FsbCcsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIC4uLihzY29wZSA9PT0gJ21haW4nID8gW3sgUGFyYW1OYW1lOiAnTWFpbk9ubHknLCBQYXJhbVZhbHVlOiB0cnVlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9XSA6IFtdKSxcclxuICAgICAgLi4uKHNjb3BlRmllbGRUeXBlICE9IG51bGwgPyBbeyBQYXJhbU5hbWU6ICdTaW5nbGVGaWVsZE1vZGUnLCBQYXJhbVZhbHVlOiB0cnVlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9XSA6IFtdKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCxcclxuICAgICAgZ3JhcGhpY3NQYXJhbXMsXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHIgPSByZXMgYXMgeyBUaGVtZUNTUz86IHN0cmluZzsgVGl0bGVDU1M/OiBzdHJpbmc7IEJnSW1hZ2VCYXNlNjQ/OiBzdHJpbmc7IEZpZWxkU3R5bGVzPzogeyBbY3NzQ2xhc3NOYW1lOiBzdHJpbmddOiB7IFtwcm9wOiBzdHJpbmddOiBzdHJpbmcgfSB9OyBXYXJuaW5ncz86IHN0cmluZ1tdOyBEYWxsRUVsYXBzZWRTZWM/OiBudW1iZXIgfTtcclxuICAgICAgICB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoc2NvcGUgPT09ICdtYWluJykge1xyXG4gICAgICAgICAgLy8gU29sbyBUaGVtZUNTUyBlIFRpdGxlQ1NTXHJcbiAgICAgICAgICBpZiAoci5UaGVtZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGhlbWVDU1MgPSByLlRoZW1lQ1NTID8/IG51bGw7XHJcbiAgICAgICAgICBpZiAoci5UaXRsZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGl0bGVDU1MgPSByLlRpdGxlQ1NTID8/IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUZpZWxkVHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBGaWVsZFN0eWxlcyBkZWwgdGlwbyBzY2VsdG8gYXBwbGljYXRpIGEgVFVUVEkgaSBjYW1waSBkaSBxdWVsIHRpcG8gbmVsIGZvcm0uXHJcbiAgICAgICAgICAvLyBPZ25pIGNhbXBvIHJpY2V2ZSB1bmEgY29waWEgZGlzdGludGE6IHNhZmVDbG9uZSB1c2EgV2Vha1NldCBlIHNhbHRhIG9nZ2V0dGkgZ2nDoCB2aXN0aS5cclxuICAgICAgICAgIGlmIChyLkZpZWxkU3R5bGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNzc0NsYXNzTmFtZSA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfQ1NTX0NMQVNTIGFzIGFueSlbc2NvcGVGaWVsZFR5cGVdO1xyXG4gICAgICAgICAgICBpZiAoY3NzQ2xhc3NOYW1lICYmIHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXSkge1xyXG4gICAgICAgICAgICAgICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5maWx0ZXIoZiA9PiBmLkZpZWxkVHlwZSA9PT0gc2NvcGVGaWVsZFR5cGUpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAoZiBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSB7IC4uLnIuRmllbGRTdHlsZXMhW2Nzc0NsYXNzTmFtZV0gfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBUdXR0b1xyXG4gICAgICAgICAgaWYgKHIuVGhlbWVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRoZW1lQ1NTID0gci5UaGVtZUNTUyA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuVGl0bGVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRpdGxlQ1NTID0gci5UaXRsZUNTUyA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuQmdJbWFnZUJhc2U2NCAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NCA9IHIuQmdJbWFnZUJhc2U2NCA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuRmllbGRTdHlsZXMpIHtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY3NzQ2xhc3NOYW1lID0gKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuRklFTERfVFlQRV9DU1NfQ0xBU1MgYXMgYW55KVtmLkZpZWxkVHlwZV07XHJcbiAgICAgICAgICAgICAgaWYgKCFjc3NDbGFzc05hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgICBjb25zdCBjc3NPYmogPSByLkZpZWxkU3R5bGVzIVtjc3NDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICAgIGlmIChjc3NPYmogJiYgdHlwZW9mIGNzc09iaiA9PT0gJ29iamVjdCcpIChmIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHsgLi4uY3NzT2JqIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbXBsZXRlZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgYmdUaW1lUGFydCA9IHIuRGFsbEVFbGFwc2VkU2VjICE9IG51bGwgPyBgIChzZm9uZG8gZ2VuZXJhdG8gaW4gJHtyLkRhbGxFRWxhcHNlZFNlYy50b0ZpeGVkKDEpfXMpYCA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBzY29wZSA9PT0gJ21haW4nXHJcbiAgICAgICAgICA/IGBHcmFmaWNhIHByaW5jaXBhbGUgYXBwbGljYXRhISR7YmdUaW1lUGFydH1gXHJcbiAgICAgICAgICA6IHNjb3BlRmllbGRUeXBlICE9IG51bGxcclxuICAgICAgICAgICAgPyBgR3JhZmljYSBhcHBsaWNhdGEgYSB0dXR0aSBpIGNhbXBpIGRlbCB0aXBvIHNlbGV6aW9uYXRvISR7YmdUaW1lUGFydH1gXHJcbiAgICAgICAgICAgIDogYEdyYWZpY2EgYXBwbGljYXRhIGFsIGZvcm0hJHtiZ1RpbWVQYXJ0fWA7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuICAgICAgICBpZiAoci5XYXJuaW5ncz8ubGVuZ3RoID4gMCkgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhyLldhcm5pbmdzKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbXNnID0gKGVycm9yIGFzIGFueSk/LmVycm9yO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy50cmltKCkgPyBtc2cgOiAnRXJyb3JlIG5lbGxhIGdlbmVyYXppb25lIGRlbGxhIGdyYWZpY2EnKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhemlvbmUvbW9kaWZpY2EgY2FtcG9cclxuICBmaWVsZHNDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWVsZHNUYWJsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZmllbGRzVGFibGU6IFRtd1RhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdGVkRmllbGQ6IEJhc2VGaWVsZDtcclxuICBpbmRleFNlbGVjdGVkRmllbGQ6IG51bWJlcjtcclxuICBhY3Rpb25PblJlY29yZEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBkaWFsb2dGaWVsZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dGaWVsZFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dGaWVsZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBmaWVsZFNlY3Rpb25Db2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWFyZS9tb2RpZmljYXJlIHVuYSBGb3JtIGRpIGRldHRhZ2xpb1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtOiBGb3JtO1xyXG4gIGluZGV4U2VsZWN0ZWRJbm5lckZvcm06IG51bWJlcjtcclxuICBkaWFsb2dJbm5lckZvcm1SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nSW5uZXJGb3JtXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGlhbG9nSW5uZXJGb3JtOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGlubmVyRm9ybUNvbmZpZzogRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWFyZS9tb2RpZmljYXJlIHVuYSBhY3Rpb24gc3VpIHJlY29yZCBkaSB1bmEgRm9ybVxyXG4gIGFjdGlvbnNPblJlY29yZENvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgQFZpZXdDaGlsZChcImFjdGlvbnNPblJlY29yZFRhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFjdGlvbnNPblJlY29yZFRhYmxlOiBUbXdUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uT25SZWNvcmQ7XHJcbiAgaW5kZXhTZWxlY3RlZEFjdGlvbjogbnVtYmVyO1xyXG4gIGRpYWxvZ0FjdGlvbk9uUmVjb3JkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FjdGlvbk9uUmVjb3JkXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGlhbG9nQWN0aW9uT25SZWNvcmQ6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhcmUvbW9kaWZpY2FyZSBkZWkgYm90dG9uaSBhemlvbmVcclxuICBhY3Rpb25CdXR0b25zQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICBAVmlld0NoaWxkKFwiYWN0aW9uQnV0dG9uc1RhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFjdGlvbkJ1dHRvbnNUYWJsZTogVG13VGFibGVDb21wb25lbnQ7XHJcbiAgc2VsZWN0ZWRBY3Rpb25CdXR0b246IEFjdGlvbkJ1dHRvbjtcclxuICBpbmRleFNlbGVjdGVkQWN0aW9uQnV0dG9uOiBudW1iZXI7XHJcbiAgZGlhbG9nQWN0aW9uQnV0dG9uUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FjdGlvbkJ1dHRvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRpYWxvZ0FjdGlvbkJ1dHRvbjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgYWN0aW9uQnV0dG9uc0Zvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBhY3Rpb25zRmxhZyA9IEFjdGlvbkZsYWdFbnVtO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gZW1lc3NvIHF1YW5kbyBzaSBzYWx2YSB1bmEgZm9ybSBlIG5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPEZvcm0+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gZW1lc3NvIERPUE8gYXZlciBlc2VndWl0byB1bmEgY2hpYW1hdGEgYWwgc2VydmVyIHBlciBpbCBzYWx2YXRhZ2dpb2RpIHVuYSBmb3JtIGFsbCdlbmRwb2ludCBzcGVjaWZpY2F0by5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWZ0ZXJTYXZlRm9ybUV2ZW50OiBFdmVudEVtaXR0ZXI8Rm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XHJcblxyXG4gIC8vIE91dCBjb21wb25lbnRlIGVzdGVybm9cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuXHJcbiAgLy8gVHJpZ2dlcnNcclxuICBkaWFsb2dUcmlnZ2Vyc1JlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dUcmlnZ2Vyc1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dUcmlnZ2VyczogVGVtcGxhdGVSZWY8YW55PjtcclxuICBzZWxlY3RlZFRyaWdnZXI6IFRyaWdnZXI7XHJcbiAgdHJpZ2dlcnNDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJ0cmlnZ2Vyc1RhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0cmlnZ2Vyc1RhYmxlOiBUbXdUYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgc2hvd0FsbEZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dHcmFmaWNhUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29udGVzdHVhbGl6YXRpb25cclxuICBzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uOiBzdHJpbmcgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZTogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRmllbGRzOiBBcnJheTxCYXNlRmllbGQ+ID0gbmV3IEFycmF5PEJhc2VGaWVsZD4oKTtcclxuXHJcbiAgLy8gQUkgRWRpdCBkaWFsb2dcclxuICBkaWFsb2dBaUVkaXRSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWlFZGl0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0FpRWRpdDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBkaWFsb2dBaUhpc3RvcnlSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWlIaXN0b3J5XCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0FpSGlzdG9yeTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gQ29udGVzdHVhbGl6emF6aW9uZSBkaWFsb2dcclxuICBkaWFsb2dDb250ZXN0dWFsaXphdGlvblJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dDb250ZXN0dWFsaXphdGlvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dDb250ZXN0dWFsaXphdGlvbjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gVmlzdWFsIEVkaXRvclxyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dWZVRvb2x0aXBcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVmVUb29sdGlwOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dWZVJlb3JkZXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVmVSZW9yZGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHZpc3VhbEVkaXRvckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlU2VsZWN0ZWRGaWVsZDogQmFzZUZpZWxkIHwgbnVsbCA9IG51bGw7XHJcbiAgdmVTd2FwRmllbGQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gIGRpYWxvZ1ZlVG9vbHRpcFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIGRpYWxvZ1ZlUmVvcmRlclJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIHZlU2hvd0dyYXBoaWNJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlR3JhcGhpY0hpbnQ6IHN0cmluZyA9ICcnO1xyXG4gIHZlQXBwbHlUb0FsbE9mVHlwZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlUmVvcmRlckZpZWxkczogQmFzZUZpZWxkW10gPSBbXTtcclxuICBwcml2YXRlIHZlR3JhcGhpY1N1Z2dlc3RBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHZlU2VsZWN0ZWRGaWVsZFR5cGVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmdCA9IHRoaXMudmVTZWxlY3RlZEZpZWxkPy5GaWVsZFR5cGU7XHJcbiAgICBpZiAoZnQgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfTEFCRUxTIGFzIGFueSlbZnRdID8/IGBUaXBvICR7ZnR9YDtcclxuICB9XHJcblxyXG4gIGFpRWRpdFByb21wdDogc3RyaW5nID0gXCJcIjtcclxuICBhaUVkaXRBdHRhY2htZW50czogQXJyYXk8eyBmaWxlTmFtZTogc3RyaW5nOyBiYXNlNjRDb250ZW50OiBzdHJpbmc7IG1lZGlhVHlwZTogc3RyaW5nIH0+ID0gW107XHJcbiAgYWlFZGl0QXV0b3NhdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUVkaXRMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlFZGl0Q291bnRkb3duOiBudW1iZXIgPSAwO1xyXG4gIGFpRWRpdEVzdGltYXRlZFNlYzogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9haUNvdW50ZG93blJlZjogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIF9haUVkaXRDYW5jZWxsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUVkaXRJc092ZXJ0aW1lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0FpUHJvbXB0SGlzdG9yeTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWlFZGl0RmllbGRDb250ZXh0OiB7IGNvZGU6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gU2V6aW9uaSBpbiBjdWkgw6ggc3RhdG8gc3VkZGl2aXNvIGwndWx0aW1vIHByb21wdCBkaSBjcmVhemlvbmUgKGdlbmVyYXppb25lIHBhcmFsbGVsYSk7XHJcbiAgLy8gdnVvdG8gcXVhbmRvIGwndWx0aW1hIGNoaWFtYXRhIEFJIG5vbiBoYSByaWNoaWVzdG8gc3BsaXQuXHJcbiAgbGFzdFByb21wdFNwbGl0czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8gTnVtZXJvIGRpIHNwbGl0IGlwb3RpenphdGkgZGFsbCd1dGVudGUgcGVyIGxhIHN0aW1hIGNvc3RvIGxpdmUgKDEgPSBuZXNzdW5vIHNwbGl0KS5cclxuICAvLyBDb24gc3BsaXQgPiAxIGxlIGNoaWFtYXRlIHBhcnRvbm8gdHV0dGUgaW4gcGFyYWxsZWxvOiBuZXNzdW5hIGJlbmVmaWNpYSBkZWxsYSBjYWNoZVxyXG4gIC8vIGRlbCBzeXN0ZW0gcHJvbXB0IChza2lsbCksIHF1aW5kaSBvZ251bmEgcGFnYSBwZXIgaW50ZXJvIGkgdG9rZW4gc2tpbGwgKyBwcm9tcHQuXHJcbiAgLy8gUmFuZ2UgcmVhbGUgbGF0byBzZXJ2ZXIgKERNQUlfU0tJTExGT1JLLm1kLCBmbG9vciAyMDI2LTA3KTogMSAobmVzc3VubyBzcGxpdCkgb3BwdXJlIDMtMTIg4oCUXHJcbiAgLy8gMiBub24gw6ggcGnDuSB1biB2YWxvcmUgcG9zc2liaWxlIChzb3R0byBsZSAzIHNlemlvbmkgaWwgd2FybS11cCBjYWNoZSBub24gY29udmllbmUgbWFpLCB2ZWRpXHJcbiAgLy8gU2hvdWxkV2FybVVwQ2FjaGUpLCBxdWluZGkgcXVpIGxvIHNhbHRpYW1vIHBlciBub24gZmFyIHN0aW1hcmUgdW4gY29zdG8gcGVyIHVubyBzY2VuYXJpbyBjaGVcclxuICAvLyBpbCBzZXJ2ZXIgbm9uIHByb2R1Y2UgbWFpLlxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFJX01JTl9TUExJVF9DT1VOVCA9IDM7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUlfTUFYX1NQTElUX0NPVU5UID0gMTI7XHJcbiAgcHJpdmF0ZSBfYWlFZGl0U3BsaXRDb3VudCA9IDE7XHJcbiAgZ2V0IGFpRWRpdFNwbGl0Q291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9haUVkaXRTcGxpdENvdW50O1xyXG4gIH1cclxuICBzZXQgYWlFZGl0U3BsaXRDb3VudCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBuID0gTWF0aC5yb3VuZChOdW1iZXIodmFsdWUpKTtcclxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG4pIHx8IG4gPD0gMSkge1xyXG4gICAgICB0aGlzLl9haUVkaXRTcGxpdENvdW50ID0gMTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUFYX1NQTElUX0NPVU5ULCBuKTtcclxuICAgIHRoaXMuX2FpRWRpdFNwbGl0Q291bnQgPSBjbGFtcGVkIDwgRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgPyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA6IGNsYW1wZWQ7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRBaUVkaXRTcGxpdENvdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5haUVkaXRTcGxpdENvdW50ID0gdGhpcy5haUVkaXRTcGxpdENvdW50ID09PSAxXHJcbiAgICAgID8gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgOiB0aGlzLmFpRWRpdFNwbGl0Q291bnQgKyAxO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50QWlFZGl0U3BsaXRDb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWlFZGl0U3BsaXRDb3VudCA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudCA8PSBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA/IDFcclxuICAgICAgOiB0aGlzLmFpRWRpdFNwbGl0Q291bnQgLSAxO1xyXG4gIH1cclxuICBhaUZpZWxkU3VnZ2VzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyYXBoaWNTdWdnZXN0SGludDogc3RyaW5nID0gJyc7XHJcbiAgc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyYXBoaWNTY29wZTogc3RyaW5nID0gJ2FsbCc7XHJcbiAgZ2VuZXJhdGVCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlHZW5lcmF0ZUJhY2tncm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcmVzZW50RmllbGRUeXBlT3B0aW9uczogeyB2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAvLyBBSSBEYXRhR2V0dGVyIHNpbGVudCBsb2FkaW5nXHJcbiAgcGVuZGluZ0FpRGF0YUdldHRlckZpZWxkczogQmFzZUZpZWxkW10gPSBbXTtcclxuICBjdXJyZW50QWlEYXRhR2V0dGVyRmllbGQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gIGFpRGF0YUdldHRlckxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGFpUHJvbXB0SGlzdG9yeSgpOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uQUlQcm9tcHRzKSByZXR1cm4gW107XHJcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmZvcm0uQUlQcm9tcHRzKTsgfSBjYXRjaCB7IHJldHVybiBbXTsgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29zdGFudGkgcGVyIGxhIHN0aW1hIGRlbCBjb3N0byBBSSAodG9rZW4gc3RpbWF0aSBwZXIgdW4gcHJvbXB0IGRpIG1lZGlhIGNvbXBsZXNzaXTDoCAvIG91dHB1dCBtZWRpbztcclxuICAvLyBpbCBwcmV6em8gcGVyIHRva2VuIHZhcmlhIGludmVjZSBpbiBiYXNlIGFsIG1vZGVsbG8gcmlsZXZhdG8gbmVsIHByb21wdCwgdmVkaSBBSV9NT0RFTF9QUklDSU5HKVxyXG4gIC8vIFRva2VuIGZpc3NpIGRlaSBtb2R1bGkgc2tpbGwgKENPUkUgKyBDQU1QTyovR1JBRklDQSogY2FyaWNhdGkgdmlhIFNLSUxMRk9SSykgaW52aWF0aSBjb21lIHN5c3RlbVxyXG4gIC8vIHByb21wdCBhZCBPR05JIGNoaWFtYXRhICh1bmEgcGVyIHNwbGl0KS4gU3RpbWEgXCJhbCBtYXNzaW1vXCI6IHNvbW1hIGRpIHR1dHRpIGkgMjYgZmlsZVxyXG4gIC8vIERNQUlfRmxkSnNvbl8qLm1kICh+NDJLIHRva2VuLCBieXRlcy80LCBkb3BvIGxhIGNvbXByZXNzaW9uZSBkaSBDT1JFL01PRElGSUNBL0dSQUZJQ0FfQ09SRSBkZWxcclxuICAvLyAyMDI2LTA3KSDigJQgU0tJTExGT1JLIG5vbiBsaSBjYXJpY2EgbWFpIHR1dHRpIGluc2llbWUsIG1hIMOoIGlsIGxpbWl0ZSBzdXBlcmlvcmUgcmVhbGlzdGljbyB2aXN0b1xyXG4gIC8vIGNoZSBpbCBjbGllbnQgbm9uIHNhIHF1YWxlIHNvdHRvaW5zaWVtZSB2ZXJyw6Agc2VsZXppb25hdG8uXHJcbiAgLy8gTkI6IDEzMi4wMDAgKHZhbG9yZSBhbmNvcmEgcHJlY2VkZW50ZSkgZXJhIGluIHJlYWx0w6AgTWFpbklucHV0VG9rZW5zIHNvbW1hdG8gc3UgNSBjaGlhbWF0ZVxyXG4gIC8vIHBhcmFsbGVsZSAofjI2Sy9jaGlhbWF0YSkgZSBub24gYW5kYXZhIHVzYXRvIGNvbWUgY29zdGFudGUgcGVyIHNpbmdvbGEgY2hpYW1hdGEuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9TS0lMTF9UT0tFTlMgPSA0Ml8wMDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9UT0tFTlNfUEVSX0ZJRUxEID0gMTAwOyAgICAvLyBzdGltYSB0b2tlbiBwZXIgY2FtcG8gZGVsIGZvcm0gc2VyaWFsaXp6YXRvXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9PVVRQVVRfVE9LRU5TID0gM181MDA7ICAvLyBzdGltYSBjb25zZXJ2YXRpdmEgb3V0cHV0IEpTT04gbW9kaWZpY2F0b1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfUERGX0NIQVJTID0gMTVfMDYwOyAvLyBmaW5lc3RyYSBtYXggZXN0cmF0dGEgcGVyIGFsbGVnYXRvIFBERlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfQ0hBUlNfUEVSX1RPS0VOID0gNDsgICAgICAvLyBjaGFyL3Rva2VuIG1lZGkgcGVyIHRlc3RvIGl0YWxpYW5vXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9FVVJfVVNEX1JBVEUgPSAxLjEwOyAgIC8vIHRhc3NvIEVVUi9VU0QgYXBwcm9zc2ltYXRvXHJcblxyXG4gIC8vIE1vZGVsbG8gcmlsZXZhdG8gaW4gdGVtcG8gcmVhbGUgZGFsIHRlc3RvIGRlbCBwcm9tcHQgQUkgKFwiSGFpa3VcIi9cIlNvbm5ldFwiL1wiT3B1c1wiL1wiRmFibGVcIik7XHJcbiAgLy8gSGFpa3Ugw6ggaWwgZGVmYXVsdCBxdWFuZG8gbmVsIHByb21wdCBub24gw6ggY2l0YXRvIGVzcGxpY2l0YW1lbnRlIGFsY3VuIG1vZGVsbG9cclxuICBnZXQgYWlFZGl0RGV0ZWN0ZWRNb2RlbElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dCh0aGlzLmFpRWRpdFByb21wdCA/PyAnJykubW9kZWxJZCA/PyAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMSc7XHJcbiAgfVxyXG5cclxuICBnZXQgYWlFZGl0RGV0ZWN0ZWRNb2RlbExhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NT0RFTF9QUklDSU5HW3RoaXMuYWlFZGl0RGV0ZWN0ZWRNb2RlbElkXT8ubGFiZWwgPz8gJ0hhaWt1JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFpRWRpdFByaWNpbmcoKSB7XHJcbiAgICByZXR1cm4gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NT0RFTF9QUklDSU5HW3RoaXMuYWlFZGl0RGV0ZWN0ZWRNb2RlbElkXVxyXG4gICAgICA/PyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01PREVMX1BSSUNJTkdbJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnXTtcclxuICB9XHJcblxyXG4gIC8vIENvbiBzcGxpdCA+IDEgaWwgc2VydmVyIHZhbHV0YSBzZSBjb252aWVuZSBcInNjYWxkYXJlXCIgbGEgY2FjaGUgY29uIHVuYSBjaGlhbWF0YSBhIHZ1b3RvXHJcbiAgLy8gcHJpbWEgZGkgbGFuY2lhcmUgbGUgTiBjaGlhbWF0ZSBwYXJhbGxlbGUgKHZlZGkgU2hvdWxkV2FybVVwQ2FjaGUgaW5cclxuICAvLyBDbGF1ZGVGb3JtR2VuZXJhdG9yU2VydmljZS5jcyk6IGNvbnZpZW5lIHNvbG8gc2UgY2FjaGVXcml0ZSArIE7Dl2NhY2hlUmVhZCA8IE7Dl2lucHV0IOKAlCBjaW/DqFxyXG4gIC8vIHNlIGlsIHJpc3Bhcm1pbyBzdWxsZSBOIGxldHR1cmUgc3VwZXJhIGlsIHNvdnJhcHByZXp6byBkZWxsYSBzY3JpdHR1cmEgaW5pemlhbGUuIFF1aVxyXG4gIC8vIHJlcGxpY2hpYW1vIGxhIHN0ZXNzYSBkaXN1Z3VhZ2xpYW56YSBlIHVzaWFtbyBpbCBtaW5vcmUgZGVpIGR1ZSBjb3N0aSwgZXNhdHRhbWVudGUgY29tZSBmYVxyXG4gIC8vIGlsIHNlcnZlciAoY2hlIHF1aW5kaSBub24gc2NlZ2xpZSBtYWkgbCdvcHppb25lIHBlZ2dpb3JlKS4gSWwgcHJvbXB0L2Zvcm0gKGEgZGlmZmVyZW56YSBkZWlcclxuICAvLyB0b2tlbiBza2lsbCkgbm9uIGJlbmVmaWNpYSBtYWkgZGVsbGEgY2FjaGU6IHZpZW5lIHJpZmF0dHVyYXRvIHBlciBpbnRlcm8gYWQgb2duaSBzcGxpdC5cclxuICBwcml2YXRlIGNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKCk6IHsgbm9XYXJtdXBDb3N0OiBudW1iZXI7IHdhcm1VcENvc3Q6IG51bWJlcjsgb3V0cHV0Q29zdDogbnVtYmVyIH0ge1xyXG4gICAgY29uc3QgcHJpY2luZyA9IHRoaXMuYWlFZGl0UHJpY2luZztcclxuICAgIGNvbnN0IGZvcm1Ub2tlbnMgPSAodGhpcy5mb3JtPy5GaWVsZHM/Lmxlbmd0aCA/PyAwKSAqIHRoaXMuQUlfVE9LRU5TX1BFUl9GSUVMRDtcclxuICAgIGNvbnN0IHZhcklucHV0ID0gKHRoaXMuYWlFZGl0UHJvbXB0Py5sZW5ndGggPz8gMCkgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTlxyXG4gICAgICArIHRoaXMuYWlFZGl0QXR0YWNobWVudHMubGVuZ3RoICogKHRoaXMuQUlfUERGX0NIQVJTIC8gdGhpcy5BSV9DSEFSU19QRVJfVE9LRU4pO1xyXG4gICAgY29uc3QgbiA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudDtcclxuICAgIGNvbnN0IHByb21wdFRva2Vuc1BlckNhbGwgPSBmb3JtVG9rZW5zICsgdmFySW5wdXQ7XHJcblxyXG4gICAgY29uc3Qgbm9XYXJtdXBDb3N0ID0gbiAqICh0aGlzLkFJX1NLSUxMX1RPS0VOUyArIHByb21wdFRva2Vuc1BlckNhbGwpICogcHJpY2luZy5pbnB1dDtcclxuICAgIGNvbnN0IHdhcm1VcENvc3QgPSB0aGlzLkFJX1NLSUxMX1RPS0VOUyAqIHByaWNpbmcuY2FjaGVXcml0ZVxyXG4gICAgICArIG4gKiAodGhpcy5BSV9TS0lMTF9UT0tFTlMgKiBwcmljaW5nLmNhY2hlUmVhZCArIHByb21wdFRva2Vuc1BlckNhbGwgKiBwcmljaW5nLmlucHV0KTtcclxuXHJcbiAgICByZXR1cm4geyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QsIG91dHB1dENvc3Q6IHRoaXMuQUlfT1VUUFVUX1RPS0VOUyAqIHByaWNpbmcub3V0cHV0IH07XHJcbiAgfVxyXG5cclxuICAvLyB0cnVlIHF1YW5kbywgcGVyIGxvIHNwbGl0IGlwb3RpenphdG8sIGlsIHdhcm0tdXAgY29zdGVyZWJiZSBtZW5vIGRlbCBwcmV6em8gcGllbm8g4oCUIGNpb8OoXHJcbiAgLy8gcXVhbmRvIGlsIHNlcnZlciAoU2hvdWxkV2FybVVwQ2FjaGUpIGZhcmViYmUgZGF2dmVybyBwYXJ0aXJlIGxhIGNoaWFtYXRhIGEgdnVvdG8uXHJcbiAgZ2V0IGFpRWRpdFNwbGl0V2FybVVwQXBwbGllcygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFpRWRpdFNwbGl0Q291bnQgPD0gMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgeyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QgfSA9IHRoaXMuY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMoKTtcclxuICAgIHJldHVybiB3YXJtVXBDb3N0IDwgbm9XYXJtdXBDb3N0O1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY29sYSBpbCBjb3N0byAoVVNEKSBkZWxsYSBjaGlhbWF0YSBwcmluY2lwYWxlIGRhdG8gaWwgcHJlenpvIGRhIGFwcGxpY2FyZSBhaSB0b2tlbiBza2lsbFxyXG4gIC8vIGluIGFzc2VuemEgZGkgc3BsaXQgKGNhY2hlV3JpdGUgcGVyIGlsIHByaW1vIHVzbywgY2FjaGVSZWFkIHBlciBnbGkgdXNpIHN1Y2Nlc3NpdmkpLiBDb25cclxuICAvLyBzcGxpdCA+IDEgdXNhIGlsIG1pbm9yZSB0cmEgY29zdG8tY29uLXdhcm11cCBlIGNvc3RvLXNlbnphICh2ZWRpIGNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKS5cclxuICBwcml2YXRlIGNvbXB1dGVBaUVkaXRDb3N0VXNkKHNraWxsVG9rZW5QcmljZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG4gPSB0aGlzLmFpRWRpdFNwbGl0Q291bnQ7XHJcblxyXG4gICAgaWYgKG4gPD0gMSkge1xyXG4gICAgICBjb25zdCBwcmljaW5nID0gdGhpcy5haUVkaXRQcmljaW5nO1xyXG4gICAgICBjb25zdCBmb3JtVG9rZW5zID0gKHRoaXMuZm9ybT8uRmllbGRzPy5sZW5ndGggPz8gMCkgKiB0aGlzLkFJX1RPS0VOU19QRVJfRklFTEQ7XHJcbiAgICAgIGNvbnN0IHZhcklucHV0ID0gKHRoaXMuYWlFZGl0UHJvbXB0Py5sZW5ndGggPz8gMCkgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTlxyXG4gICAgICAgICsgdGhpcy5haUVkaXRBdHRhY2htZW50cy5sZW5ndGggKiAodGhpcy5BSV9QREZfQ0hBUlMgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTik7XHJcbiAgICAgIHJldHVybiAodGhpcy5BSV9TS0lMTF9UT0tFTlMgKiBza2lsbFRva2VuUHJpY2UgKyAoZm9ybVRva2VucyArIHZhcklucHV0KSAqIHByaWNpbmcuaW5wdXQgKyB0aGlzLkFJX09VVFBVVF9UT0tFTlMgKiBwcmljaW5nLm91dHB1dCkgLyAxXzAwMF8wMDA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBub1dhcm11cENvc3QsIHdhcm1VcENvc3QsIG91dHB1dENvc3QgfSA9IHRoaXMuY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMoKTtcclxuICAgIHJldHVybiAoTWF0aC5taW4obm9XYXJtdXBDb3N0LCB3YXJtVXBDb3N0KSArIG91dHB1dENvc3QpIC8gMV8wMDBfMDAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFpRWRpdENvc3RGaXJzdEV1cigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZUFpRWRpdENvc3RVc2QodGhpcy5haUVkaXRQcmljaW5nLmNhY2hlV3JpdGUpIC8gdGhpcy5BSV9FVVJfVVNEX1JBVEU7XHJcbiAgfVxyXG5cclxuICBnZXQgYWlFZGl0Q29zdFN1YnNlcXVlbnRFdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXB1dGVBaUVkaXRDb3N0VXNkKHRoaXMuYWlFZGl0UHJpY2luZy5jYWNoZVJlYWQpIC8gdGhpcy5BSV9FVVJfVVNEX1JBVEU7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRBaUVkaXRDb3N0KGV1cjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBldXIudG9GaXhlZCg2KTtcclxuICB9XHJcblxyXG4gIGdldCBpc05ld0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybT8uSUQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29uZmlndXJhdG9yVGhlbWUnXSB8fCBjaGFuZ2VzWydjb25maWd1cmF0b3JUaGVtZUNzcyddKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVRoZW1lKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gUmltdW92ZSB2YXJzIHByZWNlZGVudGkgZGFsIGhvc3QgZSBkYSA6cm9vdFxyXG4gICAgQXJyYXkuZnJvbShlbC5zdHlsZSkuZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCctLWNvbmYtJykpLmZvckVhY2gocCA9PiBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKSk7XHJcbiAgICBBcnJheS5mcm9tKHJvb3Quc3R5bGUpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aCgnLS1jb25mLScpKS5mb3JFYWNoKHAgPT4gcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKSk7XHJcblxyXG4gICAgY29uc3QgcGFyc2VkRnJvbUNzcyA9IHRoaXMuY29uZmlndXJhdG9yVGhlbWVDc3MgPyB0aGlzLnBhcnNlQ3NzVGhlbWUodGhpcy5jb25maWd1cmF0b3JUaGVtZUNzcykgOiBudWxsO1xyXG4gICAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IChwYXJzZWRGcm9tQ3NzIHx8IHRoaXMuY29uZmlndXJhdG9yVGhlbWUpXHJcbiAgICAgID8geyAuLi4ocGFyc2VkRnJvbUNzcyA/PyB7fSksIC4uLih0aGlzLmNvbmZpZ3VyYXRvclRoZW1lID8/IHt9KSB9XHJcbiAgICAgIDogbnVsbDtcclxuXHJcbiAgICBpZiAobWVyZ2VkKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKG1lcmdlZCkuZm9yRWFjaCgoW2ssIHZdKSA9PiBlbC5zdHlsZS5zZXRQcm9wZXJ0eShrLCB2LCAnaW1wb3J0YW50JykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByb3BhZ2EgaSB2YWxvcmkgZWZmZXR0aXZpIChTQ1NTIGRlZmF1bHQgKyBvdmVycmlkZSB0ZW1hKSBzdSA6cm9vdCBwZXJjaMOpIGkgZGlhbG9nc1xyXG4gICAgLy8gTWF0ZXJpYWwgcmVuZGVyaXp6YW5vIG5lbCBjZGstb3ZlcmxheSBmdW9yaSBkYWxsJ2hvc3QgZSBub24gZXJlZGl0YW5vIGxlIHZhciBkaSA6aG9zdFxyXG4gICAgY29uc3QgY29tcHV0ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcclxuICAgIFsnLS1jb25mLWdyYWRpZW50JywgJy0tY29uZi1iZy1wYWdlJywgJy0tY29uZi1yYWRpdXMnLCAnLS1jb25mLW1vZGFsLXJhZGl1cycsXHJcbiAgICAgICctLWNvbmYtYWNjZW50JywgJy0tY29uZi1hY2NlbnQtcmdiJywgJy0tY29uZi1wcmltYXJ5JywgJy0tY29uZi1wcmltYXJ5LXJnYicsXHJcbiAgICAgICctLWNvbmYtc3RlcC1zZWxlY3RlZCcsICctLWNvbmYtc3RlcC1lZGl0JywgJy0tY29uZi10YWJsZS1oZWFkZXItYmcnLFxyXG4gICAgICAnLS1jb25mLXNlYXJjaC1iZycsICctLWNvbmYtdGFibGUtYmcnLCAnLS1jb25mLWNhcmQtYmcnLCAnLS1jb25mLWZvbnQtZmFtaWx5JyxcclxuICAgICAgJy0tY29uZi1zdGVwcGVyLWhlYWRlci1iZycsICctLWNvbmYtc3RlcHBlci1jb250ZW50LWJnJywgJy0tY29uZi1zdGVwLWljb24tZWRpdC1iZycsXHJcbiAgICAgICctLWNvbmYtaGludC1idG4tYmcnLCAnLS1jb25mLWhpbnQtYnRuLWhvdmVyLWJnJywgJy0tY29uZi1idG4tY29sb3InXHJcbiAgICBdLmZvckVhY2godmFyTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSh2YXJOYW1lKS50cmltKCk7XHJcbiAgICAgIGlmICh2YWx1ZSkgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJOYW1lLCB2YWx1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDc3NUaGVtZShjc3M6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcbiAgICBjb25zdCByZWdleCA9IC8oLS1jb25mLVteOlxcc10rKVxccyo6XFxzKihbXjt9XSspL2c7XHJcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XHJcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhjc3MpKSAhPT0gbnVsbCkge1xyXG4gICAgICByZXN1bHRbbWF0Y2hbMV0udHJpbSgpXSA9IG1hdGNoWzJdLnRyaW0oKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBHYXJhbnRpc2NlIGNoZSBsZSB2YXJpYWJpbGkgQ1NTIGRpIGRlZmF1bHQgKGRlZmluaXRlIGluIDpob3N0IFNDU1MpIHZlbmdhbm9cclxuICAgIC8vIHByb3BhZ2F0ZSBzdSA6cm9vdCBhbmNoZSBxdWFuZG8gY29uZmlndXJhdG9yVGhlbWUgbm9uIMOoIGZvcm5pdG9cclxuICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgQXJyYXkuZnJvbShyb290LnN0eWxlKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoJy0tY29uZi0nKSkuZm9yRWFjaChwID0+IHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkocCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTW9kZSA9IHRoaXMuZGVidWdNb2RlO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnbmdPbkluaXQgLSBjb25maWd1cmF0aW9ucycsIHRoaXMuY29uZmlndXJhdGlvbnMpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnbmdPbkluaXQgLSBmb3JtSUQnLCB0aGlzLmZvcm1JRCk7XHJcblxyXG4gICAgdGhpcy5iYXNlU2VydmVyVXJsID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5iYXNlU2VydmVyVXJsO1xyXG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5jb250ZXh0O1xyXG4gICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICAgIC8vIHRoaXMuZm9ybUlEID0gdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5mb3JtSUQ7XHJcbiAgICB0aGlzLnVzZXJUb2tlbiA9IHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcudXNlclRva2VuO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm07XHJcbiAgICB0aGlzLm9yZ2FJRCA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLm9yZ2FJRDtcclxuICAgIHRoaXMuVXNlcklEID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuVXNlcklEO1xyXG4gICAgdGhpcy5pbm5lckZvcm1NYW5hZ21lbnQgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1NYW5hZ21lbnQ7XHJcbiAgICB0aGlzLmlubmVyRm9ybVJlZiA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybVJlZjtcclxuXHJcbiAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKCk7XHJcbiAgICB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XHJcbiAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLlNldENvbnRleHQodGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgZ2xpIGVuZHBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQgYSBwYXJ0aXJlIGRhbGwndXJsIGJhc2UgZGVsIHNlcnZlclxyXG4gICAqIGEgY3VpIHNpIGRldmUgY29ubmV0dGVyZSBlIGFsIHRva2VuIGRhIHBhc3NhcmUgcGVyIGF1dGVudGljYXJzaS5cclxuICAgKiBTZSBsYSBwcm9wcmlldMOgIGJhc2VTZXJ2ZXJVcmwgw6ggbnVsbCBlIG5vbiBzb25vIHN0YXRpIGNvbmZpZ3VyYXRpIGkgdmFyaSBlbmRwb2ludCBhbGxvcmFcclxuICAgKiBub24gdmllbmUgZXNlZ3VpdGEgbmVzc3VuYSBjaGlhbWF0YSBodHRwIHBlciByZWN1cGVyYXJlL3NhbHZhcmUgaSBkYXRpLlxyXG4gICAqL1xyXG4gIGNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmIHRoaXMuYmFzZVNlcnZlclVybCkge1xyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiA9XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5Db25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKFxyXG4gICAgICAgICAgdGhpcy5iYXNlU2VydmVyVXJsLFxyXG4gICAgICAgICAgdGhpcy51c2VyVG9rZW5cclxuICAgICAgICApO1xyXG4gICAgICBpZiAodGhpcy5mb3JtSUQpIHtcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQuUGFyYW1zID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0cmluZ1Nhbml0aXplcih2YWx1ZSkge1xyXG4gICAgaWYgKCFVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXModmFsdWUpKSB7XHJcbiAgICAgIGFsZXJ0KFwiZXJyb3JlISBlcmFubyBwcmVzZW50aSBkZWxsZSBwYXJlbnRlc2kuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldE5hbWUoTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RyaW5nU2FuaXRpemVyKE5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IFJlZ0V4cFBhcmV0ZXNpcyA9IC9bXFwoXFwpXFxbXFxdXFx7XFx9XS9nO1xyXG4gICAgICAvLyBSaW11b3ZpIHR1dHRlIGxlIHBhcmVudGVzaSBub24gYmlsYW5jaWF0ZVxyXG4gICAgICB0aGlzLmZvcm0uTmFtZSA9IE5hbWUucmVwbGFjZShSZWdFeHBQYXJldGVzaXMsICcnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0uSUQgPT0gbnVsbCkgeyAvLyB0aGlzLmZvcm0uQ29kZSA9PSBudWxsIHx8IHRoaXMuZm9ybS5Db2RlID09IHVuZGVmaW5lZCB8fCB0aGlzLmZvcm0uQ29kZSA9PSBcIlwiICl7XHJcbiAgICAgIHRoaXMuc2V0Q29kZSh0aGlzLmZvcm0uTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldENvZGUoQ29kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0cmluZ1Nhbml0aXplcihDb2RlKTtcclxuXHJcbiAgICBjb25zdCBSZWdFeHBQbGFpbiA9IC9bXlxcd10vZztcclxuICAgIHRoaXMuZm9ybS5Db2RlID0gQ29kZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoUmVnRXhwUGxhaW4sIFwiXCIpO1xyXG4gIH1cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudCkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQua2V5Q29kZTsgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgaWYgKGsgPT0gMzQpIHtcclxuICAgICAgZXZlbnQua2V5Q29kZSA9IDA7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIElNUE9SVCBGVU5DVElPTiAqL1xyXG4gIG9uSW1wb3J0KGV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChzZWxlY3RlZEZpbGUsIFwiVVRGLThcIik7XHJcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnb25JbXBvcnQgLSBmaWxlUmVhZGVyLnJlc3VsdC50b1N0cmluZygpJywgZmlsZVJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuaW1wb3J0ZWRNb2R1bGUgPSBmaWxlUmVhZGVyLnJlc3VsdC50b1N0cmluZygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW1wb3J0ZWRNb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjb25maXJtKFwic3RhaSBwZXIgc292cmFzY3JpdmVyZSBpbCBtb2R1bG9cIikpIHtcclxuICAgICAgICAgIC8vIGNoaWFtbyBpbCBwYXJzZSBjb3PDrCBkYSBub24gY3JlYXJlIHVuIHJlZmVyZW5jZUJpbmRpbmdcclxuICAgICAgICAgIHZhciBpbXBvcnRlZEZvcm06IEZvcm0gPSBKU09OLnBhcnNlKHRoaXMuaW1wb3J0ZWRNb2R1bGUpO1xyXG4gICAgICAgICAgaW1wb3J0ZWRGb3JtLklEID0gXCJcIjtcclxuICAgICAgICAgIGltcG9ydGVkRm9ybS5OYW1lID0gaW1wb3J0ZWRGb3JtLk5hbWUgKyBcIiAoSW1wb3J0YXRvKVwiO1xyXG5cclxuICAgICAgICAgIGltcG9ydGVkRm9ybSA9IHRoaXMuc2V0SW1wb3J0ZWRGb3JtKGltcG9ydGVkRm9ybSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUoaW1wb3J0ZWRGb3JtKTtcclxuICAgICAgICAgIHRoaXMuc2V0TmFtZShpbXBvcnRlZEZvcm0uTmFtZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jbG9zZUltcG9ydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhbGVydChcInNlbGV6aW9uYSB1biBmaWxlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZmlsZVJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGFsZXJ0KFwic2VsZXppb25hIHVuIGZpbGUgdmFsaWRvIG8gY29udHJvbGxhIGNoZSBub24gc2lhIGNvcnJvdHRvXCIpO1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRJbXBvcnRlZEZvcm0oZm9ybTogRm9ybSkge1xyXG5cclxuICAgIC8vIE1vZGlmaWNhIGRlbCBjcmVhdGlvbiB1c2VyIHN1IEltcG9ydFxyXG4gICAgZm9ybS5DcmVhdGlvblVzZXIgPSB0aGlzLlVzZXJJRDtcclxuXHJcbiAgICAvLyBNb2RpZmljYSBkZWkgRmllbGQgc3UgSW1wb3J0XHJcbiAgICBmb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl0pIHtcclxuICAgICAgICAoZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgICAgICBhdHRhY2htZW50LklEID0gMDtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0TW9kdWxlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dJbXBvcnRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW1wb3J0LCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIC8vIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICAvLyBtYXhIZWlnaHQ6IFwiODAlXCIsXHJcbiAgICAgIC8vIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VJbXBvcnQoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0ltcG9ydFJlZi5jbG9zZSgpO1xyXG4gIH1cclxuICAvKiBFTkQgSU1QT1JUIEZVTkNUSU9OICovXHJcblxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBkaSBlc3BvcnRhemlvbmUgbW9kdWxvXHJcbiAgICovXHJcblxyXG4gIGV4cG9ydCgpIHtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5FeHBvcnRCeUlERW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChiYXNlNjRyZXM6IHN0cmluZykgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBuZXdCbG9iID0gbmV3IEJsb2IoW2Jhc2U2NHJlc10sIHsgdHlwZTogXCJ0ZXh0L3BsYWluXCIgfSk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ld0Jsb2IpO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICBsaW5rLmhyZWYgPSBkYXRhO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcImV4cG9ydF9cIiArIHRoaXMuZm9ybUlEICsgXCJfZm9ybS50eHRcIjsgLy8gc2V0IGEgbmFtZSBmb3IgdGhlIGZpbGVcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKG5ldyBGb3JtKCkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB0dXR0aSBpIHJlY29yZCBzYWx2YXRpIHBlciB1bmEgcGFydGljb2xhcmUgRm9ybS5cclxuICAgKiBMYSBjaGlhbWF0YSB2aWVuZSBlZmZldHR1YXRhIHNvbG8gc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gbCdlbmRQb2ludCBkYSB1c2FyZS5cclxuICAgKi9cclxuICBnZXRGb3JtQnlJRCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtSUQgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50XHJcbiAgICApIHtcclxuICAgICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCxcclxuICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKG5ldyBGb3JtKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJvIGwnZXhwb3J0IGRlbCBmb3JtXHJcbiAgICovXHJcblxyXG4gIGNvbmZpZ3VyZUV4cG9ydChyZXM6IEZvcm0pIHtcclxuXHJcbiAgICAvKiBnZXR0aW5nIHJlYWR5IGZvciBleHBvcnQgKi9cclxuICAgIGxldCBjbG9uZSA9IG5ldyBGb3JtKCk7XHJcbiAgICBjbG9uZS5Db2RlID0gXCJJTVBPUlRfXCIgKyByZXMuQ29kZTtcclxuICAgIGNsb25lLk5hbWUgPSBcImltcG9ydF9cIiArIHJlcy5OYW1lO1xyXG4gICAgY2xvbmUuRGVzY3JpcHRpb24gPSByZXMuRGVzY3JpcHRpb247XHJcbiAgICBjbG9uZS5Gb3JtU2NhbGFyVHlwZSA9IHJlcy5Gb3JtU2NhbGFyVHlwZTtcclxuICAgIGNsb25lLkZvcm1GaWVsZHNHcm91cHMgPSByZXMuRm9ybUZpZWxkc0dyb3VwcztcclxuICAgIGNsb25lLkFjdGlvbnNPblJlY29yZCA9IHJlcy5BY3Rpb25zT25SZWNvcmQ7XHJcbiAgICBjbG9uZS5GaWVsZHMgPSByZXMuRmllbGRzO1xyXG4gICAgY2xvbmUuT2JqZWN0RmllbGRzID0gcmVzLk9iamVjdEZpZWxkcztcclxuICAgIGNsb25lLklubmVyRm9ybXMgPSByZXMuSW5uZXJGb3JtcztcclxuICAgIGNsb25lLlJvb3RFbnRpdHlJRCA9IHJlcy5Sb290RW50aXR5SUQ7XHJcbiAgICBjbG9uZS5PcmdhSUQgPSByZXMuT3JnYUlEO1xyXG5cclxuICAgIHRoaXMuZG93bmxvYWROYW1lID0gXCJleHBvcnRfXCIgKyByZXMuTmFtZTtcclxuICAgIHRoaXMuc3RyaW5naWZpZWRGb3JtID0gSlNPTi5zdHJpbmdpZnkoY2xvbmUpO1xyXG4gICAgdGhpcy5kb3dubG9hZEpzb25IcmVmID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcclxuICAgICAgXCJkYXRhOnRleHQvanNvbjtjaGFyc2V0PVVURi04LFwiICtcclxuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc3RyaW5naWZpZWRGb3JtKVxyXG4gICAgKTtcclxuXHJcbiAgICAvKiBlbmQgZXhwb3J0ICovXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdGlwbyBkaSB2aXN1YWxpenphemlvbmUgZGVsbGEgZm9ybS5cclxuICAgKiBTZSBsJ3V0ZW50ZSBzY2VnbGllIHVuYSB2aXN1YWxpenphemlvbmUgcmFnZ3J1cHBhdGEgaWwgbWV0b2RvIGFnZ2l1bmdlIGFsIEZvcm1Hcm91cCB1biBudW92b1xyXG4gICAqIGNvbnRyb2xsbyBwZXIgbCdhcnJheSBkZWkgbm9taSBkZWxsZSBzZXppb25pIGRhIGNyZWFyZS5cclxuICAgKi9cclxuICBvbkNoYW5nZUZvcm1TY2FsYXJUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2UpIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Gb3JtR3JvdXAuY29udGFpbnMoXCJGb3JtRmllbGRzR3JvdXBzXCIpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJGb3JtRmllbGRzR3JvdXBzXCIpO1xyXG4gICAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJGb3JtRmllbGRzR3JvdXBzXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLCBbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgIEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZm9ybUZvcm1Hcm91cC5jb250YWlucyhcIkZvcm1GaWVsZHNHcm91cHNcIikpXHJcbiAgICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJGb3JtRmllbGRzR3JvdXBzXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtRm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY29uZmlndXJlQ29sdW1ucygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGludm9jYXRvIGFsIGtleXVwIG5lbGwnaW5wdXQgcGVyIGluc2VyaXJlIGkgbm9taSBkZWxsZSBzZXppb25pIHBlciBsYSB2aXN1YWxpenphemlvbmVcclxuICAgKiByYWdncnVwcGF0YSBkZWxsYSBmb3JtLiBRdWFudG8gbCd1dGVudGUgcHJlbWUgaWwgdGFzdG8gaW52aW8gdmllbmUgYWdnaXVudG8gaWwgbnVvdm8gbm9tZSBhbGxlXHJcbiAgICogc2V6aW9uaSBkaXNwb2JpbGkgc2Ugbm9uIG5lIGVzaXN0ZSB1bmEgY29uIGxvIHN0ZXNzbyBub21lLlxyXG4gICAqIEBwYXJhbSBldmVudCBFdmVudG8gY2hlIHJhcHByZXNlbnRhIGlsIGtleXVwIHN1bGxhIHRhc3RpZXJhLlxyXG4gICAqL1xyXG4gIG9uRm9ybUZpZWxkR3JvdXBOYW1lS2V5VXAoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSBcIkVudGVyXCIgfHwgZXZlbnQuY29kZSA9PT0gXCJOdW1wYWRFbnRlclwiKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMpIHtcclxuICAgICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3VwcyA9IG5ldyBBcnJheTxGb3JtRmllbGRHcm91cD4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZpbmQoXHJcbiAgICAgICAgICAobikgPT4gbi5OYW1lID09IHRoaXMuZm9ybUZpZWxkR3JvdXBOYW1lXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5wdXNoKHsgTmFtZTogdGhpcy5mb3JtRmllbGRHcm91cE5hbWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gSW1wb3N0byBpbCBudW92byB2YWxvcmUgZGVsIEZvcm1Db250cm9sIHBlciBhZ2dpb3JuYXJlIGxvIHN0YXRvIGRlbGxhIGZvcm0uXHJcbiAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm1GaWVsZHNHcm91cHNcIl0uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHNcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtRmllbGRHcm91cE5hbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZEdyb3VwT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpbXVvdmVyZSBsYSBzZXppb25lIHNlbGV6aW9uYXRhIGRhIHF1ZWxsZSBkaXNwb25pYmlsaSBwZXIgbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gZ3JvdXBOYW1lIE5vbWUgZGVsbGEgc2V6aW9uZSBkYSBlbGltaW5hcmUuXHJcbiAgICovXHJcbiAgb25EZWxldGVGb3JtRmllbGRHcm91cE5hbWUoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLnNwbGljZShcclxuICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMuZmluZEluZGV4KChnKSA9PiBnLk5hbWUgPT09IGdyb3VwTmFtZSksXHJcbiAgICAgIDFcclxuICAgICk7XHJcbiAgICAvLyBJbXBvc3RvIGlsIG51b3ZvIHZhbG9yZSBkZWwgRm9ybUNvbnRyb2wgcGVyIGFnZ2lvcm5hcmUgbG8gc3RhdG8gZGVsbGEgZm9ybS5cclxuICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm1GaWVsZHNHcm91cHNcIl0uc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzXHJcbiAgICApO1xyXG4gICAgLy8gU2UgZXNpc3Rvbm8gRmllbGQgbGVnYXRpIGFsbGEgc2V6aW9uZSBjaGUgc2kgdnVvbGUgZWxpbWluYXJlIGFsbG9yYSByb21wbyBpbCBsZWdhbWUuXHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcy5maW5kKChmKSA9PiBmLkZpZWxkR3JvdXAgPT0gZ3JvdXBOYW1lKSkge1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbHRlcigoZikgPT4gZi5GaWVsZEdyb3VwID09IGdyb3VwTmFtZSkuZm9yRWFjaChcclxuICAgICAgICAoZikgPT4gKGYuRmllbGRHcm91cCA9IG51bGwpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZEdyb3VwT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25FZGl0Rm9ybUZpZWxkR3JvdXBOYW1lKGZvcm1GaWVsZEdyb3VwOiBGb3JtRmllbGRHcm91cCkge1xyXG5cclxuICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlByb21wdChcclxuICAgICAgXCJNb2RpZmljYSBpbCBub21lXCIsXHJcbiAgICAgIChuYW1lKSA9PiB7XHJcbiAgICAgICAgZm9ybUZpZWxkR3JvdXAuTmFtZSA9IG5hbWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIENsb25hIHVuIG9nZ2V0dG8gZXNjbHVkZW5kbyByaWZlcmltZW50aSBjaXJjb2xhcmkgZSBGb3JtRm9ybUdyb3VwICovXHJcbiAgcHJpdmF0ZSBzYWZlQ2xvbmU8VD4ob2JqOiBUKTogVCB7XHJcbiAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgaWYgKGtleSA9PT0gJ0Zvcm1Gb3JtR3JvdXAnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBxdWFuZG8gc2kgdnVvbGUgYWdnaXVuZ2VyZSB1biBudW92byBjYW1wbyBvIHNpIHZ1b2xlIG1vZGlmaWNhcmUgdW5vIGVzaXN0ZW50ZS5cclxuICAgKiBNZW1vcml6emEgbCdldmVudHVhbGUgRmllbGQgc2NlbHRvIG9uZSBjcmVhIHVubyBudW92byBwcmltYSBkaSBhcHJpcmUgaWwgZGlhbG9nIHBlciBtb2RpZmljYXJsby9hZ2dpdW5nZXJsby5cclxuICAgKiBAcGFyYW0gZmllbGQgT2dnZXR0byBCYXNlRmllbGQgZGEgbW9kaWZpY2FyZS4gU2UgbnVsbCBuZSB2aWVuZSBjcmVhdGEgdW5hIG51b3ZhIGlzdGFuemEgcGVyIGwnYWdnaXVudGEuXHJcbiAgICovXHJcbiAgb3BlbkZpZWxkRGlhbG9nKGZpZWxkOiBCYXNlRmllbGQgPSBudWxsKSB7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9wZW5GaWVsZERpYWxvZ1wiLCBmaWVsZCk7XHJcblxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUoZmllbGQpO1xyXG5cclxuICAgICAgLy8gRGF0byBjaGUgY29uIGlsIEpTT04ucGFyc2Ugc2kgcGVyZGUgcGVyIHN0cmFkYSBsYSBmb3JtdWxhLCBsYSByaW1ldHRvIGRvcG8uXHJcbiAgICAgIC8vIFRhbnRvIG9yYW1haSBpbCByaWZlcmltZW50byBjb24gXCJmaWVsZFwiIMOoIHN0YXRvIHBlcnNvIGUgc3RpYW1vIHBhc3NhbmRvIHVuYSBzdHJpbmdhXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gZmllbGQuRm9ybXVsYTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiBcIlwiLCBMYWJlbHN0eWxlQ1NTOiBcIlwiLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgaGVpZ2h0OiBcIjgwJVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIHNhbHZhIGlsIGNhbXBvIGFwcGVuYSBjcmVhdG8gbyBtb2RpZmljYXRvLlxyXG4gICAqIFByaW1hIGRlbCBzYWx2YXRhZ2dpbyBjb250cm9sbGEgc2UgZXNpc3RlIHVuIGFsdHJvIGNhbXBvIGNvbiBsYSBzdGVzc2EgbGFiZWwsIGluIHF1ZXN0b1xyXG4gICAqIGNhc2UgZ2VuZXJlIHVuIGVycm9yZSAoaSBjYW1waSBkZXZvbm8gYXZlcmUgbm9taSwgZSBxdWluZGkgbGFiZWwsIHVuaXZvY2hlIC0gaSBub21pIHZlbmdvbm9cclxuICAgKiByaWNhdmF0aSB1bmVuZG8gbGUgcGFyb2xlIGNoZSBmb3JtYW5vIGxhIGxhYmVsIHRyYW1pdGUgXCJfXCIpLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBzYWx2YXJlXHJcbiAgICogQHBhcmFtIHJlb3BlbiBzZSBwcmVzZW50ZSByaWFwcmUgbGEgZGlhbG9nIGRpIG1vZGlmaWNhIGRlbCBjYW1wbyBwZXNjYW5kbyBkYWxsYSBsaXN0YSBpbCBwcm9zc2ltbyBpbiBjYXNvIGRpIHZhbG9yZSBbMV0gbyBpbCBwcmVjZWRlbnRlIGluIGNhc28gZGkgdmFsb3JlIFstMV1cclxuICAgKi9cclxuICBvblNhdmVGaWVsZChldjogeyBmaWVsZDogQmFzZUZpZWxkLCByZW9wZW46IG51bWJlciB9KSB7XHJcbiAgICBsZXQgZmllbGQgPSBldi5maWVsZDtcclxuICAgIGxldCByZW9wZW4gPSBldi5yZW9wZW47XHJcblxyXG4gICAgLy8gc2UgYyfDqCBpbCBjYW1wb1xyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIC8vIGNvbnRyb2xsbyBjaGUgbm9uIGNpIHNpYSB1biBhbHRybyBjYW1wbyBjb24gbG8gc3Rlc3NvIGNvZGUgKGxhYmVsKSBlIG5vbiBzaWEgZXNzbyBzdGVzc29cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMgJiZcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbmQoXHJcbiAgICAgICAgICAoZiwgaSkgPT5cclxuICAgICAgICAgICAgZi5MYWJlbCA9PT0gZmllbGQuTGFiZWwgJiZcclxuICAgICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID09IG51bGxcclxuICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICA6IHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9PSBpKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhcclxuICAgICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGNhbXBpIGNvbiBsbyBzdGVzc28gQ29kaWNlLlwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgY2FtcGkgY29uIGxvIHN0ZXNzbyBDb2RpY2UuXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzZSBobyB1biBpbmRpY2UgaW4gY3VpIGluc2VyaXJlIGlsIGNhbXBvICh2ZXJvc2ltaWxtZW50ZSBzb25vIGluIG1vZGlmaWNhKVxyXG4gICAgICBpZiAodGhpcy5pbmRleFNlbGVjdGVkRmllbGQgIT0gbnVsbCAmJiB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZF0gPSBmaWVsZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDDqCB1biBjYW1wbyBudW92b1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICAgICAgLy8gc2Ugw6ggaWwgcHJpbW8gY2FtcG8gY2hlIHN0byBpbnNlcmVuZG8gcHJlcGFybyB1biBhcnJheVxyXG4gICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcyA9IG5ldyBBcnJheTxCYXNlRmllbGQ+KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib25TYXZlRmllbGRcIiwgdGhpcy5mb3JtKVxyXG4gICAgdGhpcy5jbG9zZUZpZWxkRGlhbG9nKCk7XHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hGaWVsZFR5cGVPcHRpb25zKCk7XHJcblxyXG4gICAgaWYgKHJlb3BlbiAhPSAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgKyByZW9wZW5dO1xyXG4gICAgICB0aGlzLm9wZW5GaWVsZERpYWxvZyhuZXdGaWVsZClcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52aXN1YWxFZGl0b3JBY3RpdmUpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBjb250cm9sbGEgc2UgbG8gc3RlcCBwZXIgbCdhZ2dpdW50YSBkZWkgY2FtcGkgbmVsbGEgZm9ybSDDqCBjb25jbHVzby5cclxuICAgKiBAcmV0dXJucyBTZSBUUlVFIGxvIHN0ZXAgdmllbmUgY29uc2lkZXJhdG8gY29tcGxldGF0byBlZCDDqCBwb3NzYmlsZSBwYXNzYXJlIGFsIHN1Y2Nlc3Npdm8uXHJcbiAgICovXHJcbiAgaXNGaWVsZFN0ZXBDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybS5GaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm0uRm9ybVNjYWxhclR5cGUgIT0gRm9ybVNjYWxhclR5cGVFbnVtLlNlbXBsaWNlICYmXHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmluZCgoZikgPT4gIWYuRmllbGRHcm91cClcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhcHJpcmUgaWwgZGlhbG9nIGRpIGNyZWF6aW9uZS9tb2RpZmljYSBkZWxsZSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICAgKiBTZSBpbCBwYXJhbWV0cm8gcGFzc2F0byDDqCBudWxsIHNvbm8gaW4gYWdnaXVudGEgYWx0cmltZW50aSBzb25vIGluIG1vZGlmaWNhLlxyXG4gICAqIEBwYXJhbSBpbm5lbnJGb3JtIEZvcm0gZGkgZGV0dGFnbGlvIGRhIG1vZGlmaWNhcmUgKHNlIG51bGwgYWxsb3JhIHZhZG8gaW4gYWRkKS5cclxuICAgKi9cclxuICBvcGVuSW5uZXJGb3JtRGlhbG9nKGlubmVuckZvcm06IEZvcm0gPSBudWxsKSB7XHJcbiAgICB0aGlzLmlubmVyRm9ybUNvbmZpZyA9IG5ldyBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29uZmlnKCk7XHJcbiAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtTWFuYWdtZW50ID1cclxuICAgICAgdHJ1ZTtcclxuICAgIC8vIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtXHJcbiAgICAvLyB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybS5PbGROYW1lXHJcbiAgICAvLyB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtUmVmXHJcbiAgICAvLyBbZm9ybV09XCJzZWxlY3RlZElubmVyRm9ybVwiXHJcbiAgICAvLyBbaW5uZXJGb3JtTWFuYWdtZW50XT1cInRydWVcIlxyXG4gICAgLy8gW2lubmVyRm9ybVJlZl09XCJkaWFsb2dJbm5lckZvcm1SZWZcIlxyXG5cclxuICAgIGlmIChpbm5lbnJGb3JtKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA9IHRoaXMuZm9ybS5Jbm5lckZvcm1zLmluZGV4T2YoaW5uZW5yRm9ybSk7XHJcblxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbm5lbnJGb3JtKSk7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0uT2xkTmFtZSA9IGlubmVuckZvcm0uTmFtZTtcclxuICAgICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm0gPVxyXG4gICAgICAgIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5uZW5yRm9ybSkpO1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybS5PbGROYW1lID1cclxuICAgICAgICBpbm5lbnJGb3JtLk5hbWU7XHJcblxyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuZmluZEluZGV4KFxyXG4gICAgICAgIChmKSA9PiBmLkxhYmVsID09PSBpbm5lbnJGb3JtLk5hbWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0gPSBuZXcgRm9ybSgpO1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybSA9XHJcbiAgICAgICAgbmV3IEZvcm0oKTtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID0gbnVsbDtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5kaWFsb2dJbm5lckZvcm1SZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtLCB7XHJcblxyXG4gICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybVJlZiA9XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dJbm5lckZvcm0sIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IFwiODUlXCIsXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHNjYXRlbmF0byBhbCBzYWx2YXRhZ2dpbyBkaSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAgICogQHBhcmFtIGV2ZW50IEZvcm0gY3JlYXRhL21vZGlmaWNhdGEgZGFsbCd1dGVudGUuIFNlIMOoIG51bGwgYWxsb3JhIGwndXRlbnRlIGhhIGFiYmFuZG9uYXRvIGxhIGNvbmZpZ3VyYXppb25lLlxyXG4gICAqL1xyXG4gIG9uU2F2ZU9yRXhpdElubmVyRm9ybShldmVudDogRm9ybSkge1xyXG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZm9ybS5OYW1lID09PSBldmVudC5OYW1lIHx8XHJcbiAgICAgICAgKHRoaXMuZm9ybS5Jbm5lckZvcm1zICYmXHJcbiAgICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKFxyXG4gICAgICAgICAgICAoYSwgaSkgPT5cclxuICAgICAgICAgICAgICBhLk5hbWUgPT09IGV2ZW50Lk5hbWUgJiZcclxuICAgICAgICAgICAgICAodGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gIT09IGkpXHJcbiAgICAgICAgICApKSB8fFxyXG4gICAgICAgICh0aGlzLmZvcm0uRmllbGRzICYmXHJcbiAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5maW5kKFxyXG4gICAgICAgICAgICAoZiwgaSkgPT5cclxuICAgICAgICAgICAgICBmLkxhYmVsID09PSBldmVudC5OYW1lICYmXHJcbiAgICAgICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID09IG51bGxcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCAhPT0gaSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgICBcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBmb3JtIGRpIGRldHRhZ2xpbyBjb24gbG8gc3Rlc3NvIG5vbWUuXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGZvcm0gZGkgZGV0dGFnbGlvIGNvbiBsbyBzdGVzc28gbm9tZS5cIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGlubmVyRm9ybUZpZWxkOiBCYXNlRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLk5hbWUgPSBldmVudC5OYW1lLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgaW5uZXJGb3JtRmllbGQuTGFiZWwgPSBldmVudC5OYW1lO1xyXG4gICAgICBpbm5lckZvcm1GaWVsZC5GaWVsZFR5cGUgPSBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl07XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLkZpZWxkR3JvdXAgPVxyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9IG51bGxcclxuICAgICAgICAgID8gdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZF0uRmllbGRHcm91cFxyXG4gICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSAhPSBudWxsICYmXHJcbiAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID49IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXNbdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtXSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGRdID0gaW5uZXJGb3JtRmllbGQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uSW5uZXJGb3Jtcykge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMgPSBuZXcgQXJyYXk8Rm9ybT4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMucHVzaChldmVudCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5wdXNoKGlubmVyRm9ybUZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhcHJpcmUgaWwgZGlhbG9nIGRpIGNyZWF6aW9uZS9tb2RpZmljYSBkZWxsZSBhY3Rpb24uXHJcbiAgICogU2UgaWwgcGFyYW1ldHJvIHBhc3NhdG8gw6ggbnVsbCBzb25vIGluIGFnZ2l1bnRhIGFsdHJpbWVudGkgc29ubyBpbiBtb2RpZmljYS5cclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbk9uUmVjb3JkIGRhIG1vZGlmaWNhcmUgKHNlIG51bGwgYWxsb3JhIHZhZG8gaW4gYWRkKS5cclxuICAgKi9cclxuICBvcGVuQWN0aW9uT25SZWNvcmREaWFsb2coYWN0aW9uOiBBY3Rpb25PblJlY29yZCA9IG51bGwpIHtcclxuICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uID0gdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5pbmRleE9mKGFjdGlvbik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb24gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFjdGlvbikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IG5ldyBBY3Rpb25PblJlY29yZCgpO1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jcmVhdGVBY3Rpb25PblJlY29yZEZvcm0oKTtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYXByaXJlIGlsIGRpYWxvZyBkaSBjcmVhemlvbmUvbW9kaWZpY2EgZGVpIGJvdHRvbmkgYXppb25lLlxyXG4gICAqIFNlIGlsIHBhcmFtZXRybyBwYXNzYXRvIMOoIG51bGwgc29ubyBpbiBhZ2dpdW50YSBhbHRyaW1lbnRpIHNvbm8gaW4gbW9kaWZpY2EuXHJcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb25CdXR0b24gZGEgbW9kaWZpY2FyZSAoc2UgbnVsbCBhbGxvcmEgdmFkbyBpbiBhZGQpLlxyXG4gICAqL1xyXG4gIG9wZW5BY3Rpb25CdXR0b25EaWFsb2coZXY6IEFjdGlvbkJ1dHRvbiA9IG51bGwpIHtcclxuXHJcbiAgICBpZiAoZXYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uQnV0dG9uID0gZXY7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uQnV0dG9uID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBY3Rpb25CdXR0b24sIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGkgdmFsb3JpIGRhIHN1Z2dlcmlyZSBuZWxsJ2F1dG9jb21wbGV0ZSBkZWwgY2FtcG8gRm9ybXVsYS5cclxuICAgKiBWaWVuZSBzY2F0ZW5hdG8gYWwgZm9jdXMgKGluIHF1ZXN0byBjYXNvIHZpZW5lIHBhc3NhdG8gaWwgcGFyYW1ldHJvIGEgbnVsbCBwZXIgZGlmZmVyZW56aWFybG9cclxuICAgKiBkYWxsJ2V2ZW50byBkaSBjbGljayBzdWxsYSB0YXN0aWVyYSkgZSBhbCBrZXl1cCBzdWxsJ2lucHV0IChpbCBwYXJhbWV0cm8gw6ggZGl2ZXJzbyBkYSBudWxsKS5cclxuICAgKiBAcGFyYW0ga2V5Ym9hcmRFdmVudCBFdmVudG8gc2NhdGVuYXRvIGFsIGtleXVwIHN1bGxhIHRhc3RpZXJhLiBTZSBudWxsIGFsbG9yYSBpbCBtZXRvZG8gw6ggc3RhdG8gaW52b2NhdG8gZGFsIGZvY3VzIHN1bGwnaW5wdXQuXHJcbiAgICogQHN1bW1hcnkgQWdnaW9ybmEgbCdlbGVuY28gZGVpIHN1Z2dlcmltZW50aSBwZXIgbCdhdXRvY29tcGxldGUgc2UgbCd1dGVudGUgZXNlZ3VlIGlsIGZvY3VzIHN1bGwnaW5wdXRcclxuICAgKiBvcHB1cmUgYWwga2V5dXAgc3VsbGEgdGFzdGllcmEgZGkgdW4gdGFzdG8gZGl2ZXJzbyBkYWxsZSBmcmVjY2UuXHJcbiAgICovXHJcbiAgc2V0QWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9ucyhrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBDcmVvIGwnYXJyYXkgcGVyIGwnYXV0b2NvbXBsZXRlIHNvbG8gc2Ugc3RvIGZhY2VuZG8gaWwgZm9jdXMgc3VsbCdpbnB1dCBvIHNlIHN0byBwcmVtZW5kbyB1biB0YXN0b1xyXG4gICAgLy8gc3VsbGEgdGFzdGllcmEgZGl2ZXJzbyBkYWxsZSBmcmVjY2UgKGluIHF1ZXN0J3VsdGltbyBjYXNvLCBzZSBub24gdmllbmUgZXNlZ3VpdG8gaWwgZmlsdHJvIHN1bGwnZXZlbnRvLFxyXG4gICAgLy8gbm9uIHNpIHB1w7Igc2VsZXppb25hcmUgdW4gc3VnZ2VyaW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlIHBlcmNow6ggYWwgY2xpY2sgdmVycmViYmUgcmljYXJpY2F0byBsJ2FycmF5IGVcclxuICAgIC8vIHNpIHByZWRlcmViYmUgbGEgc2VsZXppb25lIGFwcGVuYSBmYXR0YSkuXHJcbiAgICBpZiAoIWtleWJvYXJkRXZlbnQgfHwgIWtleWJvYXJkRXZlbnQuY29kZS5pbmNsdWRlcyhcIkFycm93XCIpKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9ucyA9XHJcbiAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuR2V0QXV0b2NvbXBsZXRlT3B0aW9ucyhcclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMsXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uLkFjdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBsJ2F6aW9uZSBjcmVhdGEvbW9kaWZpY2F0ZS5cclxuICAgKi9cclxuICBzYXZlQWN0aW9uT25SZWNvcmQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQgJiZcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5maW5kKFxyXG4gICAgICAgIChhLCBpKSA9PlxyXG4gICAgICAgICAgYS5OYW1lID09PSB0aGlzLnNlbGVjdGVkQWN0aW9uLk5hbWUgJiZcclxuICAgICAgICAgICh0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPT0gbnVsbFxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gIT09IGkpXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKFxyXG4gICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGFjdGlvbiBjb24gbG8gc3Rlc3NvIG5vbWUuXCJcclxuICAgICAgKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGFjdGlvbiBjb24gbG8gc3Rlc3NvIG5vbWUuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gIT0gbnVsbCAmJiB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPj0gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkW3RoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbl0gPSB0aGlzLnNlbGVjdGVkQWN0aW9uO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZCA9IG5ldyBBcnJheTxBY3Rpb25PblJlY29yZD4oKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLnB1c2godGhpcy5zZWxlY3RlZEFjdGlvbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlRGlhbG9nQWN0aW9uT25SZWNvcmQoKTtcclxuICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbCdhemlvbmUgY3JlYXRhL21vZGlmaWNhdGUuXHJcbiAgICovXHJcbiAgc2F2ZUFjdGlvbkJ1dHRvbnMoZWxlbWVudDogQWN0aW9uQnV0dG9uKSB7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBleGlzdHNBY3Rpb25CdXR0b25zSW5kZXggPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5maW5kSW5kZXgoeCA9PiB4LkJ1dHRvblVuaXF1ZUlkID09IGVsZW1lbnQuQnV0dG9uVW5pcXVlSWQpO1xyXG4gICAgICAgIGlmIChleGlzdHNBY3Rpb25CdXR0b25zSW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgIC8vIE51b3ZvIHRyaWdnZXJcclxuICAgICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zW2V4aXN0c0FjdGlvbkJ1dHRvbnNJbmRleF0gPSBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyA9IG5ldyBBcnJheTxBY3Rpb25CdXR0b24+KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjaGl1ZGVyZSBpbCBkaWFsb2cgZGVsbGEgaW5uZXIgZm9ybS5cclxuICAgKi9cclxuICBjbG9zZURpYWxvZ0lubmVyRm9ybSgpIHtcclxuICAgIHRoaXMuaW5uZXJGb3JtUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBkaSBnZXN0aW9uZSBkZWxsZSBhY3Rpb24uXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2dBY3Rpb25PblJlY29yZCgpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmRSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY2hpdWRlcmUgaWwgZGlhbG9nIGRpIGdlc3Rpb25lIGRlbGxlIGFjdGlvbiBidXR0b25zLlxyXG4gICAqL1xyXG4gIGNsb3NlRGlhbG9nQWN0aW9uQnV0dG9ucygpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uQnV0dG9uUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNlZ25hcmUgY29tZSBjb25jbHVzYSBsYSBjcmVhemlvbmUgZGVsbGEgZm9ybSBlIHBlciBjcmVhcm5lIHVuYSBjb3BpYVxyXG4gICAqIGRhIHZpc2FsaXp6YXJlIGNvbWUgYW50ZXByaW1hLlxyXG4gICAqIEBwYXJhbSBjb21wbGV0ZWQgU2UgVFJVRSBzZWduYSBsYSBmb3JtIGNvbWUgY29uY2x1c2EgZSBuZSBjcmVhIHVuYSBjb3BpYSBkYSB2aXN1YWxpenphcmVcclxuICAgKi9cclxuICBzZXRGb3JtU3RhdHVzKGNvbXBsZXRlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGNvbXBsZXRlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5mb3JtKTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInByZXZpZXdGb3JtXCIsIHRoaXMucHJldmlld0Zvcm0pXHJcblxyXG4gICAgICAvLyBQZXIgdmlzdWFsaXp6YXJlIGNvcnJldHRhbWVudGUgbCdvYW50ZXByaW1hIGRlbGxhIGZvcm0gYXBwZW5hIGNyZWF0YVxyXG4gICAgICAvLyBiaXNvZ25hIHZhbG9yaXp6YXJlIGxhIHByb3ByaWV0w6AgTmFtZSBkZWkgY2FtcGkgZGVsbGEgZm9ybSBlIGRlbGxlIElubmVyRm9ybXMuXHJcbiAgICAgIHRoaXMucHJldmlld0Zvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMgJiZcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbGEgZm9ybSBjcmVhdGEgYWxsYSBmaW5lIGRlbCB3aXphcmQuXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwYXNzYW5kbyBsJ29nZ2V0byBkYSBzYWx2YXJlXHJcbiAgICogbmVsIGJvZHkgZGVsbGEgY2hpYW1hdGEsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBcInNhdmVGb3JtRXZlbnRcIi5cclxuICAgKi9cclxuICBzYXZlRm9ybSgpIHtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU2F2ZUVuZFBvaW50XHJcbiAgICApIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5zYXZlZCkge1xyXG4gICAgICAgIHRoaXMuYmFja3VwRm9ybSA9IHRoaXMuc2FmZUNsb25lKHRoaXMuZm9ybSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5iYWNrdXBGb3JtKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIFBlciBmYXIgYXJyaXZhcmUgYWwgc2VydmVyIGwnYXJyYXkgZGkgRmllbGQgYmlzb2duYSBwYXNzYXJsaSBzdSBBbnlcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgLy8gUmltdW92byBpbCBGb3JtR3JvdXAgZGkgcHJldmlldyAocHJvcHJpZXTDoCBjbGllbnQtb25seSwgY3JlYSByaWZlcmltZW50byBjaXJjb2xhcmUgaW4gSlNPTi5zdHJpbmdpZnkpXHJcbiAgICAgICAgZmllbGQuRm9ybUZvcm1Hcm91cCA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFRyYXNmb3JtbyBpbCBkYXRhZ2V0dGVyIGluIEJhc2U2NFxyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmllbGQuRGF0YUdldHRlcikpO1xyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uQWxsZWdhdG8pIHtcclxuICAgICAgICAgIGNvbnN0IGZsZEE6IGFueSA9IGZpZWxkO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YU9iamVjdEZpZWxkcyA9IGZsZEEuTWV0YWRhdGFGaWVsZHM7XHJcbiAgICAgICAgICBmbGRBLk1ldGFkYXRhRmllbGRzID0gW107XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmxkQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWF4VmFsdWUgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID09IG51bGxcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5NaW5WYWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMgPSBudWxsO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25Vc2VyID0gdGhpcy5Vc2VySUQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLk1vZGlmeVVzZXIgPSB0aGlzLlVzZXJJRDtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5UcmlnZ2Vycyk7XHJcbiAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKTtcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5Db2RlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNldENvZGUodGhpcy5mb3JtLk5hbWUpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy8gY2hpYW1hdGEgZWZmZXR0aXZhXHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIkZvcm1cIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybSxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlO1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TYXZlRW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKFwiRm9ybSBzYWx2YXRhIGNvbiBzdWNjZXNzbyFcIik7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyU2F2ZUZvcm1FdmVudC5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKFwiRXJyb3JlIG5lbCBzYWx2YXRhZ2dpbyBkZWxsYSBmb3JtXCIpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yZSBuZWwgc2FsdmF0YWdnaW8gZGVsbGEgZm9ybVwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlRm9ybUV2ZW50LmVtaXQodGhpcy5mb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBGVU5aSU9OSSBQUklWQVRFXHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGxhIGZvcm0gZSBjb25maWd1cmFyZSBjb2xvbm5lL0Zvcm1Hb3VycC5cclxuICAgKiBAcGFyYW0gZm9ybSBGb3JtIGRhIHV0aWxpenphcmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtQW5kQ29uZmlndXJlKGZvcm06IEZvcm0gPSBudWxsKSB7XHJcblxyXG4gICAgaWYgKGZvcm0gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBuZXcgQXJyYXk8VHJpZ2dlcj4oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5PYmplY3RBY3Rpb25CdXR0b25zICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdEFjdGlvbkJ1dHRvbnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zID0gSlNPTi5wYXJzZSh0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBuZXcgQXJyYXk8QWN0aW9uQnV0dG9uPigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybS5GaWVsZHMgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBUcmFzZm9ybW8gaWwgQmFzZTY0U3RyaW5nIGRlbCBEYXRhZ2V0dGVyIG5lbCBEYXRhZ2V0dGVyIHZlcm8gZSBwcm9wcmlvXHJcbiAgICAgICAgICBpZiAoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IEpTT04ucGFyc2UoYXRvYihmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcpKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLkRhdGFHZXR0ZXIgPT0gbnVsbCkgeyBmaWVsZC5EYXRhR2V0dGVyID0gbmV3IERhdGFHZXR0ZXIoKTsgfVxyXG4gICAgICAgICAgICBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID0gZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBudWxsID8gRGF0YUdldHRlclR5cGVFbnVtLk1hbnVhbGUgOiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIENhbXBpIGNvbiBEYXRhR2V0dGVyU3BlZWNoVGV4dDogY2FyaWNhcmUgaWwgUXVlcnlFZGl0b3IgaW4gc2lsZW50IHBlciBwb3BvbGFyZSBpbCBEYXRhR2V0dGVyVmFsdWUgdmlhIEFJXHJcbiAgICAgICAgdGhpcy5wZW5kaW5nQWlEYXRhR2V0dGVyRmllbGRzID0gdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoZiA9PlxyXG4gICAgICAgICAgZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ10gJiZcclxuICAgICAgICAgICEhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ICYmXHJcbiAgICAgICAgICAhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzTmV4dEFpRGF0YUdldHRlckZpZWxkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUZvcm0oKTtcclxuICAgIGluamVjdEdvb2dsZUZvbnRzRnJvbUZvcm0odGhpcy5mb3JtKTtcclxuICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm1HcmFwaGljU3VnZ2VzdElucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgPSAhdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQ7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0KSB0aGlzLmZvcm1HcmFwaGljU2NvcGUgPSAnYWxsJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWVuVHlwZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgZiBvZiAodGhpcy5mb3JtPy5GaWVsZHMgPz8gW10pKSB7XHJcbiAgICAgIGlmIChzZWVuVHlwZXMuaGFzKGYuRmllbGRUeXBlKSkgY29udGludWU7XHJcbiAgICAgIHNlZW5UeXBlcy5hZGQoZi5GaWVsZFR5cGUpO1xyXG4gICAgICBjb25zdCBsYWJlbCA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfTEFCRUxTIGFzIGFueSlbZi5GaWVsZFR5cGVdID8/IGBUaXBvICR7Zi5GaWVsZFR5cGV9YDtcclxuICAgICAgb3B0aW9ucy5wdXNoKHsgdmFsdWU6IGB0eXBlXyR7Zi5GaWVsZFR5cGV9YCwgbGFiZWwgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXNlbnRGaWVsZFR5cGVPcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYSBsZSBjb2xvbm5lIHBlciBsZSB0YWJlbGxlIG5lY2Vzc2FyaWUgYWxsYSBjcmVhemlvbmUgZGVsbGEgZm9ybTpcclxuICAgKiAgLSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGRlaSBjYW1waSBpbnNlcml0aVxyXG4gICAqICAtIHBlciBsZSBmb3JtIGRpIGRldHRhZ2xpbyBjcmVhdGVcclxuICAgKiAgLSBwZXIgbGUgYXppb25pIGNvbmZpZ3VyYXRlIHN1aSByZWNvcmQgZGVsbGEgZm9ybVxyXG4gICAqL1xyXG5cclxuXHJcblxyXG5cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmZpZWxkc0NvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA0cmVtXCIgfSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiTW9kaWZpY2FcIixcclxuICAgICAgICAgICAgaWNvbjogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5lZGl0RmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkR1cGxpY2Egc290dG9cIixcclxuICAgICAgICAgICAgaWNvbjogXCJjb3B5XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kdXBsaWNhdGVGaWVsZChlbGVtZW50LCBlbGVtZW50Lk9yZGluYWxQb3NpdGlvbiArIDEpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJEdXBsaWNhIGluIGZvbmRvXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiY29weVwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZHVwbGljYXRlRmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkZpZWxkc1wiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAvLyAgIGljb246IFwiYXJyb3dfdXB3YXJkXCIsXHJcbiAgICAgICAgICAvLyAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIHRydWUsIFwiRmllbGRzXCIpLFxyXG4gICAgICAgICAgLy8gICBkaXNhYmxlZDogKGVsZW1lbnQpID0+IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihlbGVtZW50KSA9PT0gMCxcclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIGdpw7lcIixcclxuICAgICAgICAgIC8vICAgaWNvbjogXCJhcnJvd19kb3dud2FyZFwiLFxyXG4gICAgICAgICAgLy8gICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJGaWVsZHNcIiksXHJcbiAgICAgICAgICAvLyAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZWxlbWVudCkgPj0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxLFxyXG4gICAgICAgICAgLy8gfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkZpZWxkVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwb2xvZ2lhXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRmllbGRUeXBlRW51bSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMTJyZW1cIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7IGtleTogXCJMYWJlbFwiLCBkaXNwbGF5OiBcIkxhYmVsXCIsIHN0eWxlczogeyBmbGV4OiBcIjAgMCA4cmVtXCIgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkRlc2NyaXB0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwbyBSZWN1cGVybyBEYXRpXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRGF0YUdldHRlclR5cGVFbnVtLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiUmVxdWlyZWRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9iYmxpZ2F0b3Jpb1wiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5SZXF1aXJlZCxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJGb3JtdWxhXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDYWxjb2xhdG9cIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuRm9ybXVsYSAhPSBudWxsICYmIGVsZW1lbnQuRm9ybXVsYSAhPSAnJyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBpbiBDb21waWxhemlvbmVcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuSW5MaXN0VmlldyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbnZpc2liaWxpdHlcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9jY3VwYSBzcGF6aW8/XCIsXHJcbiAgICAgICAgdmFsdWU6IChlbGVtZW50KSA9PiBlbGVtZW50LkluTGlzdFZpZXcgfHwgZWxlbWVudC5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtW1wiTkFTQ09TVE8gQ09OIEFSRUEgVklTSUJJTEVcIl0sXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDdyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiVmlzaWJsZUlmXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsaXTDoCBjb25kaXppb25hdGFcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuVmlzaWJsZUlmICE9IG51bGwgJiYgZWxlbWVudC5WaXNpYmxlSWYgIT0gXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJBbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBuZWxsYSByaXNwb3N0YVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gIWVsZW1lbnQuQW5zd2VyU3R5bGUgfHwgZWxlbWVudC5BbnN3ZXJTdHlsZSAmJiBlbGVtZW50LkFuc3dlclN0eWxlLkluTGlzdFZpZXcsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDVyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICYmXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbnMuc3BsaWNlKDEsIDAsIHtcclxuICAgICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uZVwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxNHJlbVwiIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB0aGlzLmZpZWxkc0NvbHVtbnMucHVzaChcclxuICAgICAgLy8gICB7XHJcbiAgICAgIC8vICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAvLyAgICAgZGlzcGxheTogXCJTZXppb25lXCIsXHJcbiAgICAgIC8vICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIC8vICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAvLyAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDE0cmVtXCIgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5BY3Rpb25CdXR0b25EaWFsb2coZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVBY3Rpb25CdXR0b24oZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiQnV0dG9uTGFiZWxcIiwgZGlzcGxheTogXCJFdGljaGV0dGFcIiwgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDMwJVwiIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJCdXR0b25Db2RlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDb2RpY2VcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMjAlXCIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJY29uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJY29uYVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIlNob3dJblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uaVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWwpID0+IHtcclxuICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKGVsLlNob3dJbiA9PSBudWxsIHx8IGVsLlNob3dJbi5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJOZXNzdW5hXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbC5TaG93SW4uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgZmluYWxUZXh0ICs9IEFjdGlvbkZsYWdFbnVtW2VsZW1lbnRdICsgXCIgLyBcIjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGZpbmFsVGV4dDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAyMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbnNPblJlY29yZENvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA2JVwiIH0sXHJcbiAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIk1vZGlmaWNhXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiZWRpdFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMub3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbGltaW5hXCIsXHJcbiAgICAgICAgICAgIGljb246IFwidHJhc2hcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkFjdGlvbnNPblJlY29yZFwiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctdXBcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPT09IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBnacO5XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctZG93blwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPj1cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsga2V5OiBcIkljb25cIiwgZGlzcGxheTogXCJJY29uYVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiTmFtZVwiLCBkaXNwbGF5OiBcIk5vbWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAyMCVcIiB9IH0sXHJcbiAgICAgIHsga2V5OiBcIkFjdGlvblwiLCBkaXNwbGF5OiBcIkF6aW9uZVwiIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlcnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5UcmlnZ2Vyc0RpYWxvZyhlbGVtZW50KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRWxpbWluYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcInRyYXNoXCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVRyaWdnZXIoZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiZGVzY3JpcHRpb25cIiwgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiZXhlY3V0aW9uXCIsIGRpc3BsYXk6IFwiQ29zYSBlc2VndWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAxNSVcIiB9IH0sXHJcbiAgICBdO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWEgaWwgRm9ybUdyb3VwIHBlciBsJ29nZ2V0dG8gRm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgQ29kZTogW3RoaXMuZm9ybS5Db2RlXSxcclxuICAgICAgTmFtZTogW3RoaXMuZm9ybS5OYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgRGVzY3JpcHRpb246IFt0aGlzLmZvcm0uRGVzY3JpcHRpb25dLFxyXG4gICAgICBGb3JtU2NhbGFyVHlwZTogW3RoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMub25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRHJhZyBhbmQgRHJvcCBkZWxsZSBjb2xvbm5lIGRlbCBmb3JtXHJcbiAgICovXHJcblxyXG4gIG9uRHJhZ1JlbGVhc2VkKGV2ZW50KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kZWQoZXZlbnQpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSBpbCBGb3JtR3JvdXAgZXByIGwnYWdnaXVudGEgbyBsYSBtb2RpZmljYSBkaSB1bmEgYWN0aW9uIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUFjdGlvbk9uUmVjb3JkRm9ybSgpIHtcclxuICAgIHRoaXMuYWN0aW9uT25SZWNvcmRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgTmFtZTogW3RoaXMuc2VsZWN0ZWRBY3Rpb24uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIEljb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkljb24sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBBY3Rpb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkFjdGlvbiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoaXVkZSBpbCBkaWFsb2cgcGVyIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZSB1biBGaWVsZCBzZW56YSBzYWx2YXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG9zZUZpZWxkRGlhbG9nKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYgIT0gdW5kZWZpbmVkKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGdlc3RpcmUgbCdhcGVydHVyYSBkZWwgZGlhbG9nIHBlciBsYSBtb2RpZmljYSBkaSB1biBGaWVsZC5cclxuICAgKiBTZSBpbCBmaWVsZCDDqCBkaSB0aXBvIFwiRm9ybSBkaSBkZXR0YWdsaW9cIiBhcHJlIGlsIGRpYWxvZyBwZXIgbGEgbW9kaWZpY2EgZGkgdW5hXHJcbiAgICogSW5uZXJGb3JtIGFsdHJpbWVudGkgYXByZSBxdWVsbG8gcGVyIGxhIG1vZGlmaWNhIGRpIHVuIEZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBtb2RpZmljYXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlZGl0RmllbGQoZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgaWYgKGZpZWxkLkZpZWxkVHlwZSAhPSBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0pIHtcclxuICAgICAgdGhpcy5vcGVuRmllbGREaWFsb2coZmllbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuSW5uZXJGb3JtRGlhbG9nKFxyXG4gICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoKGYpID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZ2VzdGlyZSBsYSBkdXBsaWNhemlvbmUgZGkgdW4gRmllbGQuXHJcbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGRhIG1vZGlmaWNhcmVcclxuICAgKi9cclxuICBwcml2YXRlIGR1cGxpY2F0ZUZpZWxkKGZpZWxkOiBCYXNlRmllbGQsIG9yZGluYWxQb3NpdGlvbiA9IG51bGwpIHtcclxuICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgIT0gRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKSB7XHJcbiAgICAgIC8vIHJpY3JlbyBsJ29nZ2V0dG8gcGFzc2FuZG8gcGVyIHVuIGpzb25cclxuICAgICAgbGV0IGNsb25lRmllbGQ6IEJhc2VGaWVsZCA9IHRoaXMuc2FmZUNsb25lKGZpZWxkKTtcclxuXHJcbiAgICAgIGNsb25lRmllbGQuTGFiZWwgPSBmaWVsZFtcIkxhYmVsXCJdICsgXCJDb3B5XCI7XHJcbiAgICAgIGNsb25lRmllbGQuSUQgPSB0aGlzLmdlbmVyYXRlR1VJRCgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIGlmIChvcmRpbmFsUG9zaXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIGNsb25lRmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggKyAxO1xyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjbG9uZUZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICAvLyB1dGlsaXp6byBvcmRpbmFsIHBvc2l0aW9uIHBlciBpbmZpbGFyZSBpbCBjYW1wbyBjb3JyZXR0YW1ldG5lIG5lbGxhIGxpc3RhXHJcbiAgICAgICAgLy8gcGVyIGZhcmxvIHNlIG5vbiDDqCBudWxsbyBkZXZvIGNyZWFyZSBsbyBzcGF6aW9cclxuICAgICAgICB0aGlzLk9yZGluYXRlZEluc2VydEZpZWxkKGZpZWxkLCBvcmRpbmFsUG9zaXRpb24pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjbG9uZUZpZWxkU3RydWN0dXJlID0geyBmaWVsZDogY2xvbmVGaWVsZCwgcmVvcGVuOiAwIH1cclxuICAgICAgdGhpcy5vblNhdmVGaWVsZChjbG9uZUZpZWxkU3RydWN0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwibm9uIMOoIHBvc3NpYmlsZSBkdXBsaWNhcmUgdW5hIGZvcm0gZGkgZGV0dGFnbGlvXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBPcmRpbmF0ZWRJbnNlcnRGaWVsZChmaWVsZDogQmFzZUZpZWxkLCBvcmRpbmFsUG9zaXRpb24gPSAwKSB7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzLnNwbGljZShvcmRpbmFsUG9zaXRpb24sIDAsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25FeGNoYW5nZUZpZWxkcyhmaWVsZDE6IEJhc2VGaWVsZCwgZmllbGQyOiBCYXNlRmllbGQpIHtcclxuICAgIGNvbnN0IHRlbXAgPSBmaWVsZDE7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzW2ZpZWxkMS5PcmRpbmFsUG9zaXRpb25dID0gZmllbGQyO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkc1tmaWVsZDIuT3JkaW5hbFBvc2l0aW9uXSA9IHRlbXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGdlbmVyYSB1bmEgbnVvdmEgR1VJRFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVHVUlEKCkge1xyXG4gICAgcmV0dXJuICd4eHh4LXh4eHgteHh4eC14eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCxcclxuICAgICAgICB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIHVuIEZpZWxkIGFsbCdpbnRlcm5vIGRpIHVuYSBGb3JtLlxyXG4gICAqIFJpY2hpZWRlIGNvbmZlcm1hIGFsbCd1dGVudGUgcHJpbWEgZGkgcmltdW92ZXJsby5cclxuICAgKiBAcGFyYW0gZmllbGQgQmFzZUZpZWxkIGRhIHJpbXVvdmVyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVsZXRlRWxlbWVudChcclxuICAgIGVsZW1lbnQ6IEJhc2VGaWVsZCB8IEFjdGlvbk9uUmVjb3JkIHwgRm9ybSxcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKFxyXG4gICAgICBcIkVsaW1pbmFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvP1wiLFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uc3BsaWNlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiRmllbGRzXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25zT25SZWNvcmRcIikge1xyXG4gICAgICAgICAgdGhpcy5zZXRBY3Rpb25PcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25CdXR0b25zXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZEFjdGlvbkJ1dHRvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgXCJSaWNoaWVzdGEgY29uZmVybWFcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc3Bvc3RhcmUgdW4gY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gZmllbGQgT2dnZXR0byBkaSB0aXBvIEJhc2VGaWVsZCBkYSBzcG9zdGFyZS5cclxuICAgKiBAcGFyYW0gbW92ZVVwIFNlIFRSVUUgYWxsb3JhIHNwb3N0YSB2ZXJzbyBsJ2FsdG8gaWwgY2FtcG8gKGFiYmFzc2EgbCdpbmRpY2UpIGFsdHJpbWVudGkgaWwgY29udHJhcmlvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbW92ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBCYXNlRmllbGQgfCBBY3Rpb25PblJlY29yZCxcclxuICAgIG1vdmVVcDogYm9vbGVhbixcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KTtcclxuICAgIGNvbnN0IGVuZGluZ0luZGV4ID0gc3RhcnRpbmdJbmRleCArIChtb3ZlVXAgPyAtMSA6IDEpO1xyXG5cclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShzdGFydGluZ0luZGV4LCAxKTtcclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShlbmRpbmdJbmRleCwgMCwgZWxlbWVudCk7XHJcblxyXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJGaWVsZHNcIikge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09PSBcIkFjdGlvbnNPblJlY29yZFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWxsZSBzZXppb25pIGNoZSBjb21wb25nb25vIGxhIGZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtRmllbGRHcm91cE9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZvckVhY2goKGcsIGkpID0+IChnLk9yZGluYWxQb3NpdGlvbiA9IGkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpY2FyaWNhcmUgaSBkYXRpIGRlbGxhIHRhYmVsbGEgZGVpIGNhbXBpIGFnZ2l1bnRpIGluIHVuYSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRGaWVsZHNUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkc1RhYmxlKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVpIGNhbXBpIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0gaW4gYmFzZSBhbGwnb3JkaW5lIGNoZSBsJ3V0ZW50ZVxyXG4gICAqIGhhIGRlZmluaXRvIG5lbGxhIHRhYmVsbGEgaW4gY3VpIHNvbm8gbW9zdHJhdGlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEFjdGlvbk9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgYWN0aW9uLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuaW5kZXhPZihhY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgIGFjdGlvbi5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5pbmRleE9mKGFjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaWNhcmljYXJlIGkgZGF0aSBkZWxsYSB0YWJlbGxhIGRlbGxlIGF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aW9uc09uUmVjb3JkVGFibGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb25zT25SZWNvcmRUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmljYXJpY2FyZSBpIGRhdGkgZGVsbGEgdGFiZWxsYSBkZWxsZSBhemlvbmkgYWdnaXVudGl2ZSBzdWkgcmVjb3JkIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRBY3Rpb25CdXR0b25zT25SZWNvcmRUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCkge1xyXG4gICAgdGhpcy5vdXQuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCA9IHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5zaGlmdCgpO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uQ09NUE9TRVI7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5sb2FkUXVlcnlTdGF0dXNlcyA9IG51bGw7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5EYXRhR2V0dGVyU3BlZWNoVGV4dCA9IHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclNwZWVjaFRleHQ7XHJcbiAgICAvLyBGb3J6YSBsYSAocmkpY3JlYXppb25lIGRlbCBjb21wb25lbnRlIGF6emVyYW5kbyBwcmltYSBpbCBmbGFnXHJcbiAgICB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uQWlEYXRhR2V0dGVyT3V0KGV2OiBldmVudE91dCk6IHZvaWQge1xyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNhdmUtcXVlcnlcIikgPT09IC0xIHx8ICF0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBldi5QYXJhbXM7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9IDE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gRGF0YUdldHRlckNvbHVtbkZvcmNlIGRldmUgZXNzZXJlIGxhIHN0cmluZ2EgY2hpYXZlIChub24gbCdvZ2dldHRvKSBwZXIgZnVuemlvbmFyZSBjb24gdG13LXNlbGVjdFxyXG4gICAgY29uc3QgY29sdW1uRm9yY2UgPSBkYXRhPy5EYXRhR2V0dGVyQ29sdW1uRm9yY2U7XHJcbiAgICBpZiAoY29sdW1uRm9yY2UpIHtcclxuICAgICAgLy8gVjIgc2VydmVyIHJlc3RpdHVpc2NlIHsga2V5LCB2YWx1ZSwga2V5UHJvcGVydHkgfSDigJQgZXN0cmFpYW1vIHNvbG8gaWwga2V5IHN0cmluZ1xyXG4gICAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9XHJcbiAgICAgICAgdHlwZW9mIGNvbHVtbkZvcmNlID09PSAnb2JqZWN0JyA/IGNvbHVtbkZvcmNlLmtleSA6IGNvbHVtbkZvcmNlO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhPy5zZWxlY3RlZEZpZWxkcz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IHNmID0gZGF0YS5zZWxlY3RlZEZpZWxkc1swXTtcclxuICAgICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPVxyXG4gICAgICAgIHNmLkRhdGFiYXNlVGFibGVOYW1lICsgXCJfXCIgKyBzZi5Qcm9wZXJ0eU5hbWUgKyBcIl9fXCIgKyBzZi5DdXJyZW50VHJhbnNsYXRlLnJlcGxhY2UoLyAvZywgJ18nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIC8vIEF6emVyYSBEYXRhR2V0dGVyU3BlZWNoVGV4dCBkYWwgY29uZmlnIG9iamVjdCBwZXIgZXZpdGFyZSBjaGUgXCJNb2RpZmljYVwiIGxvIHJpbGFuY2lcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkID0gbnVsbDtcclxuICAgIHRoaXMuYWlEYXRhR2V0dGVyTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRSSUdHRVJTXHJcbiAgICovXHJcblxyXG4gIG9wZW5UcmlnZ2Vyc0RpYWxvZyhldjogVHJpZ2dlciA9IG51bGwpIHtcclxuXHJcbiAgICBpZiAoZXYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHJpZ2dlciA9IGV2O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyaWdnZXIgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nVHJpZ2dlcnNSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVHJpZ2dlcnMsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVRyaWdnZXIoZWxlbWVudDogVHJpZ2dlcikge1xyXG5cclxuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5UcmlnZ2VycyAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGV4aXN0c1RyaWdnZXJJbmRleCA9IHRoaXMuZm9ybS5UcmlnZ2Vycy5maW5kSW5kZXgoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICAgICAgaWYgKGV4aXN0c1RyaWdnZXJJbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgLy8gTnVvdm8gdHJpZ2dlclxyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2Vyc1tleGlzdHNUcmlnZ2VySW5kZXhdID0gZWxlbWVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmlnZ2Vyc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nVHJpZ2dlcnNSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVRyaWdnZXIoZWxlbWVudDogVHJpZ2dlcikge1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5mb3JtLlRyaWdnZXJzLmZpbmRJbmRleCh4ID0+IHguQ0lEID09IGVsZW1lbnQuQ0lEKTtcclxuICAgIHRoaXMuZm9ybS5UcmlnZ2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy50cmlnZ2Vyc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQWN0aW9uQnV0dG9uKGVsZW1lbnQ6IEFjdGlvbkJ1dHRvbikge1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMuZmluZEluZGV4KHggPT4geC5CdXR0b25Db2RlID09IGVsZW1lbnQuQnV0dG9uQ29kZSk7XHJcbiAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b25zVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQWlFZGl0RGlhbG9nKCkge1xyXG4gICAgdGhpcy5haUVkaXRQcm9tcHQgPSBcIlwiO1xyXG4gICAgdGhpcy5haUVkaXRBdHRhY2htZW50cyA9IFtdO1xyXG4gICAgdGhpcy5haUVkaXRBdXRvc2F2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dBaVByb21wdEhpc3RvcnkgPSB0cnVlO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWlFZGl0LCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjYwJVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFpRWRpdERpYWxvZygpIHtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9wZW5BaUhpc3RvcnlEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0FpSGlzdG9yeVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBaUhpc3RvcnksIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIG1heEhlaWdodDogJzgwdmgnLFxyXG4gICAgICBwb3NpdGlvbjogeyB0b3A6ICc0MHB4JyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdG9wQWlDb3VudGRvd24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYWlDb3VudGRvd25SZWYpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9haUNvdW50ZG93blJlZik7XHJcbiAgICAgIHRoaXMuX2FpQ291bnRkb3duUmVmID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuYWlFZGl0Q291bnRkb3duID0gMDtcclxuICAgIHRoaXMuYWlFZGl0RXN0aW1hdGVkU2VjID0gMDtcclxuICAgIHRoaXMuYWlFZGl0SXNPdmVydGltZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRBaUNvdW50ZG93bihlc3RpbWF0ZWRTZWNvbmRzOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5haUVkaXRFc3RpbWF0ZWRTZWMgPSBNYXRoLmNlaWwoZXN0aW1hdGVkU2Vjb25kcyAqIDEuMik7XHJcbiAgICB0aGlzLmFpRWRpdENvdW50ZG93biA9IHRoaXMuYWlFZGl0RXN0aW1hdGVkU2VjO1xyXG4gICAgdGhpcy5fYWlDb3VudGRvd25SZWYgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWlFZGl0Q291bnRkb3duLS07XHJcbiAgICAgIGlmICh0aGlzLmFpRWRpdENvdW50ZG93biA8IDAgJiYgIXRoaXMuYWlFZGl0SXNPdmVydGltZSkge1xyXG4gICAgICAgIHRoaXMuYWlFZGl0SXNPdmVydGltZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsQWlFZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWlFZGl0Q2FuY2VsbGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dBaUVkaXRSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFpRWRpdEZvckZpZWxkKGZpZWxkQ29kZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCA9IHsgY29kZTogZmllbGRDb2RlIH07XHJcbiAgICB0aGlzLm9wZW5BaUVkaXREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIG9uQWlHcmFwaGljU3VnZ2VzdChkYXRhOiB7IGNvZGU6IHN0cmluZzsgaGludDogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJhd0hpbnQgPSBkYXRhLmhpbnQ/LnRyaW0oKSA/PyAnJztcclxuICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBkYXRhLmNvZGU/LnRyaW0oKSB8fCAnX2NhbXBvc2VuemFub21lXyc7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCkge1xyXG4gICAgICAvLyBGYWxsYmFjazogcGFzc2EgaWwgcmF3SGludCBuZWxsJ2luamVjdGVkUHJvbXB0OyBzZW5kQWlFZGl0IGVzdHJhcnLDoCBpbCBtb2RlbGxvIGRhIGVzc29cclxuICAgICAgY29uc3QgaW5qZWN0ZWRQcm9tcHQgPSByYXdIaW50XHJcbiAgICAgICAgPyBgVm9nbGlvIG1vZGlmaWNhcmUgaW4gbWFuaWVyYSBjb21wbGV0YSBsYSBncmFmaWNhIGRlbCBjYW1wbyAnJHtmaWVsZExhYmVsfScgc2VndWVuZG8gaW4gbWFuaWVyYSBpbmNvbnRlc3RhYmlsZSBxdWVzdGEgaW5kaWNhemlvbmU6ICcke3Jhd0hpbnR9J2BcclxuICAgICAgICA6IGBWb2dsaW8gbW9kaWZpY2FyZSBpbiBtYW5pZXJhIGNvbXBsZXRhIGxhIGdyYWZpY2EgZGVsIGNhbXBvICcke2ZpZWxkTGFiZWx9JyBjb24gdW5vIHN0aWxlIGNyZWF0aXZvIGUgb3JpZ2luYWxlIGEgdHVhIHNjZWx0YWA7XHJcbiAgICAgIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ID0geyBjb2RlOiBkYXRhLmNvZGUgfTtcclxuICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbmRBaUVkaXQoaW5qZWN0ZWRQcm9tcHQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBjbGVhblRleHQ6IGhpbnQsIG1vZGVsSWQ6IGFpTW9kZWxJZCB9ID0gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dChyYXdIaW50KTtcclxuXHJcbiAgICAvLyBUcm92YSBpbCBjYW1wbzogZ2nDoCBzYWx2YXRvIG5lbCBmb3JtIG9wcHVyZSBudW92byBhbmNvcmEgbmVsIGRpYWxvZ1xyXG4gICAgY29uc3QgZmllbGRJbkZvcm0gPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IGZpZWxkTGFiZWwpID8/IG51bGw7XHJcbiAgICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWVsZEluRm9ybSA/PyB0aGlzLnNlbGVjdGVkRmllbGQ7XHJcbiAgICBpZiAoIWN1cnJlbnRGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBTdGVzc28gcGF5bG9hZCBkaSBvbkZvcm1HcmFwaGljU3VnZ2VzdCwgbWEgRmllbGRzIGNvbiBzb2xvIGlsIGNhbXBvIGNvcnJlbnRlXHJcbiAgICBjb25zdCBncmFwaGljc1BhcmFtczogRW5kUG9pbnREYXRhUGFyYW1zW10gPSBbXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTmFtZScsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybT8uTmFtZSA/PyBmaWVsZExhYmVsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0Rlc2NyaXB0aW9uJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5EZXNjcmlwdGlvbiA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RoZW1lQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5UaGVtZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RpdGxlQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5UaXRsZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0ZpZWxkcycsIFBhcmFtVmFsdWU6IFt7IExhYmVsOiBjdXJyZW50RmllbGQuTGFiZWwsIEZpZWxkVHlwZTogY3VycmVudEZpZWxkLkZpZWxkVHlwZSB9XSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdIaW50JywgUGFyYW1WYWx1ZTogaGludCB8fCB0aGlzLmJ1aWxkUmFuZG9tR3JhcGhpY0hpbnQoKSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdNb2RlbElkJywgUGFyYW1WYWx1ZTogYWlNb2RlbElkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1NpbmdsZUZpZWxkTW9kZScsIFBhcmFtVmFsdWU6IHRydWUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQsXHJcbiAgICAgIGdyYXBoaWNzUGFyYW1zLFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCByID0gcmVzIGFzIHsgRmllbGRTdHlsZXM/OiB7IFtjc3NDbGFzc05hbWU6IHN0cmluZ106IHsgW3Byb3A6IHN0cmluZ106IHN0cmluZyB9IH07IFdhcm5pbmdzPzogc3RyaW5nW10gfTtcclxuXHJcbiAgICAgICAgLy8gQXBwbGljYSBGaWVsZFN0eWxlcyBhbCBjYW1wbyB0YXJnZXQ7IHNlIHZlQXBwbHlUb0FsbE9mVHlwZSDDqCBhdHRpdm8sIHByb3BhZ2EgYSB0dXR0aSBpIGNhbXBpIGRlbGxvIHN0ZXNzbyB0aXBvXHJcbiAgICAgICAgaWYgKHIuRmllbGRTdHlsZXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNzc0NsYXNzTmFtZSA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfQ1NTX0NMQVNTIGFzIGFueSlbY3VycmVudEZpZWxkLkZpZWxkVHlwZV07XHJcbiAgICAgICAgICBpZiAoY3NzQ2xhc3NOYW1lICYmIHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXSAmJiB0eXBlb2Ygci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52ZUFwcGx5VG9BbGxPZlR5cGUpIHtcclxuICAgICAgICAgICAgICAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4gZi5GaWVsZFR5cGUgPT09IGN1cnJlbnRGaWVsZC5GaWVsZFR5cGUpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAoZiBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSB7IC4uLnIuRmllbGRTdHlsZXMhW2Nzc0NsYXNzTmFtZV0gfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAoY3VycmVudEZpZWxkIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgICBpZiAoZmllbGRJbkZvcm0pIChmaWVsZEluRm9ybSBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52ZUFwcGx5VG9BbGxPZlR5cGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gQWdnaW9ybmEgc2VsZWN0ZWRGaWVsZCBwZXIgaWwgZGlhbG9nXHJcbiAgICAgICAgY29uc3QgYXBwbHlUYXJnZXQgPSBmaWVsZEluRm9ybSA/PyBjdXJyZW50RmllbGQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUoYXBwbHlUYXJnZXQpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gYXBwbHlUYXJnZXQuRm9ybXVsYTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZEluRm9ybSkgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZmllbGRJbkZvcm0pO1xyXG5cclxuICAgICAgICAvLyBSaWFwcmkgaWwgZGlhbG9nIGNhbXBvIChzYWx2byBWaXN1YWwgRWRpdG9yIGdyYXBoaWMgc3VnZ2VzdCBtb2RlKVxyXG4gICAgICAgIGlmICghdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFnZ2lvcm5hIHByZXZpZXcgc2UgZXJhIGFwZXJ0YVxyXG4gICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKCdHcmFmaWNhIGNhbXBvIGFwcGxpY2F0YSEnKTtcclxuICAgICAgICBpZiAoci5XYXJuaW5ncz8ubGVuZ3RoID4gMCkgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhyLldhcm5pbmdzKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IChlcnJvciBhcyBhbnkpPy5lcnJvcjtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcih0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cudHJpbSgpID8gbXNnIDogJ0Vycm9yZSBuZWxsYSBnZW5lcmF6aW9uZSBkZWxsYSBncmFmaWNhIGRlbCBjYW1wbycpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25BaUVkaXRGaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICghaW5wdXQuZmlsZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBiYXNlNjQgPSAocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpLnNwbGl0KCcsJylbMV07XHJcbiAgICAgICAgdGhpcy5haUVkaXRBdHRhY2htZW50cy5wdXNoKHsgZmlsZU5hbWU6IGZpbGUubmFtZSwgYmFzZTY0Q29udGVudDogYmFzZTY0LCBtZWRpYVR5cGU6IGZpbGUudHlwZSB9KTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICByZW1vdmVBaUVkaXRBdHRhY2htZW50KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWlFZGl0QXR0YWNobWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcblxyXG4gIHNlbmRBaUVkaXQoZGlyZWN0UHJvbXB0Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyUHJvbXB0UmF3ID0gZGlyZWN0UHJvbXB0ID8/IHRoaXMuYWlFZGl0UHJvbXB0O1xyXG4gICAgaWYgKCF1c2VyUHJvbXB0UmF3Py50cmltKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIEFnZ2lvcm5hIGxvIHN0b3JpY28gcHJvbXB0IHByaW1hIGRpIGludmlhcmVcclxuICAgIGNvbnN0IGN1cnJlbnRIaXN0b3J5OiBzdHJpbmdbXSA9IHRoaXMuZm9ybT8uQUlQcm9tcHRzID8gSlNPTi5wYXJzZSh0aGlzLmZvcm0uQUlQcm9tcHRzKSA6IFtdO1xyXG4gICAgY3VycmVudEhpc3RvcnkucHVzaCh1c2VyUHJvbXB0UmF3LnRyaW0oKSk7XHJcbiAgICBjb25zdCB1cGRhdGVkUHJvbXB0c0pzb24gPSBKU09OLnN0cmluZ2lmeShjdXJyZW50SGlzdG9yeSk7XHJcblxyXG4gICAgLy8gSW4gZmllbGQtY29udGV4dCBtb2RlIChkaWFsb2cgQUkgbyBncmFwaGljIHN1Z2dlc3QpOiBwcmVuZGkgaWwgY2FtcG8gZGFsbGEgbW9kYWxlXHJcbiAgICBsZXQgZmllbGRDbG9uZUZvclNlbmQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGZpZWxkQ29kZUZvclJlZnJlc2g6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGlzTmV3VW5zYXZlZEZpZWxkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ICE9PSBudWxsKSB7XHJcbiAgICAgIGZpZWxkQ2xvbmVGb3JTZW5kID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5zZWxlY3RlZEZpZWxkKTtcclxuICAgICAgaWYgKCFmaWVsZENsb25lRm9yU2VuZC5MYWJlbD8udHJpbSgpKSB7XHJcbiAgICAgICAgZmllbGRDbG9uZUZvclNlbmQuTGFiZWwgPSAnX2NhbXBvc2VuemFub21lXyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmaWVsZENsb25lRm9yU2VuZC5GaWVsZFR5cGUpIHtcclxuICAgICAgICBmaWVsZENsb25lRm9yU2VuZC5GaWVsZFR5cGUgPSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl07XHJcbiAgICAgIH1cclxuICAgICAgZmllbGRDb2RlRm9yUmVmcmVzaCA9IGZpZWxkQ2xvbmVGb3JTZW5kLkxhYmVsO1xyXG4gICAgICBpc05ld1Vuc2F2ZWRGaWVsZCA9ICEodGhpcy5mb3JtPy5GaWVsZHM/LnNvbWUoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKSA/PyBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pZXppb25lIGNvbnRlc3R1YWxlOiBpbiBtb2RhbGl0w6AgZGlhbG9nIChubyBkaXJlY3RQcm9tcHQpIHNpIHByZXBlbmRlIGlsIGNvbnRlc3RvIGRlbCBjYW1wb1xyXG4gICAgbGV0IHNwZWVjaFRleHQgPSB1c2VyUHJvbXB0UmF3O1xyXG4gICAgaWYgKGRpcmVjdFByb21wdCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0KSB7XHJcbiAgICAgIHNwZWVjaFRleHQgPSBgVm9nbGlvIG1vZGlmaWNhcmUgaWwgY2FtcG8gJyR7ZmllbGRDb2RlRm9yUmVmcmVzaCA/PyB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dC5jb2RlfScsIGRpIHNlZ3VpdG8gdGkgZMOyIGxlIGlzdHJ1emlvbmkuIFNlIHF1ZWxsbyBjaGUgdGkgc2NyaXZvIG5vbiByaWd1YXJkYSBsYSBtb2RpZmljYSBkZWwgY2FtcG8sIGNvbnNpZGVyYSB0dXR0byBjb21lIGluY29lcmVudGUuICR7dXNlclByb21wdFJhd31gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ID0gbnVsbDtcclxuXHJcbiAgICAvLyBFc3RyYWUgaWwgbW9kZWxsbyBBSSBkYWwgdGVzdG8gKGVzLiBcIlVzYSBTb25uZXRcIikgZSBwdWxpc2NlIGlsIHByb21wdCBwcmltYSBkaSBpbnZpYXJsb1xyXG4gICAgY29uc3QgeyBjbGVhblRleHQ6IGNsZWFuU3BlZWNoVGV4dCwgbW9kZWxJZDogYWlNb2RlbElkIH0gPSB0aGlzLmV4dHJhY3RNb2RlbEZyb21UZXh0KHNwZWVjaFRleHQpO1xyXG4gICAgc3BlZWNoVGV4dCA9IGNsZWFuU3BlZWNoVGV4dDtcclxuXHJcbiAgICAvLyBQcmVwYXJhIGlsIGZvcm0gY29tZSBpbiBzYXZlRm9ybTogRmllbGRzIOKGkiBPYmplY3RGaWVsZHNcclxuICAgIGNvbnN0IGZvcm1Ub1NlbmQgPSB0aGlzLnNhZmVDbG9uZSh0aGlzLmZvcm0pO1xyXG4gICAgZm9ybVRvU2VuZC5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdEZpZWxkcyA9IFtdO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IFtdO1xyXG5cclxuICAgIGlmIChmb3JtVG9TZW5kLkZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwpIHtcclxuICAgICAgZm9ybVRvU2VuZC5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9ybVRvU2VuZC5GbGRFeHRyYUNvbmZpZ1ZhbHVlcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluIGZpZWxkLWNvbnRleHQ6IHNvc3RpdHVpc2NlIChtb2RpZmljYSkgbyBhZ2dpdW5nZSAobnVvdm8gY2FtcG8pIGlsIGNhbXBvIGNvbiBpbCBjb250ZW51dG8gY29ycmVudGUgZGVsbGEgbW9kYWxlXHJcbiAgICBpZiAoZmllbGRDbG9uZUZvclNlbmQpIHtcclxuICAgICAgaWYgKCFmb3JtVG9TZW5kLkZpZWxkcykgZm9ybVRvU2VuZC5GaWVsZHMgPSBbXTtcclxuICAgICAgZm9ybVRvU2VuZC5GaWVsZHMgPSBmb3JtVG9TZW5kLkZpZWxkcy5maWx0ZXIoZiA9PiBmLkxhYmVsICE9PSBmaWVsZENvZGVGb3JSZWZyZXNoKTtcclxuICAgICAgZm9ybVRvU2VuZC5GaWVsZHMucHVzaChmaWVsZENsb25lRm9yU2VuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm1Ub1NlbmQuRmllbGRzKSB7XHJcbiAgICAgIGZvcm1Ub1NlbmQuRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvKSB7XHJcbiAgICAgICAgICBjb25zdCBmbGRBOiBhbnkgPSBmaWVsZDtcclxuICAgICAgICAgIGZsZEEuTWV0YWRhdGFPYmplY3RGaWVsZHMgPSBmbGRBLk1ldGFkYXRhRmllbGRzO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YUZpZWxkcyA9IFtdO1xyXG4gICAgICAgICAgZmxkQS5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgPSBidG9hKEpTT04uc3RyaW5naWZ5KGZsZEEuRGF0YUdldHRlciA/PyB7fSkpO1xyXG4gICAgICAgICAgZmxkQS5EYXRhR2V0dGVyID0gbnVsbDtcclxuICAgICAgICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmllbGRzLnB1c2goZmxkQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmllbGQuRGF0YUdldHRlciA/PyB7fSkpO1xyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG51bGw7XHJcbiAgICAgICAgICBmb3JtVG9TZW5kLk9iamVjdEZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZm9ybVRvU2VuZC5GaWVsZHMgPSBudWxsO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RUcmlnZ2VycyA9IEpTT04uc3RyaW5naWZ5KGZvcm1Ub1NlbmQuVHJpZ2dlcnMgPz8gW10pO1xyXG4gICAgZm9ybVRvU2VuZC5UcmlnZ2VycyA9IG51bGw7XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdEFjdGlvbkJ1dHRvbnMgPSBKU09OLnN0cmluZ2lmeShmb3JtVG9TZW5kLkFjdGlvbkJ1dHRvbnMgPz8gW10pO1xyXG4gICAgZm9ybVRvU2VuZC5BY3Rpb25CdXR0b25zID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7IFBhcmFtTmFtZTogXCJGb3JtXCIsIFBhcmFtVmFsdWU6IGZvcm1Ub1NlbmQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiU3BlZWNoVGV4dFwiLCBQYXJhbVZhbHVlOiBzcGVlY2hUZXh0LCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIk9yZ2FJRFwiLCBQYXJhbVZhbHVlOiBwYXJzZUludCh0aGlzLm9yZ2FJRCkgfHwgMCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJNb2RpZnlVc2VyXCIsIFBhcmFtVmFsdWU6IHRoaXMuVXNlcklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkF1dG9zYXZlXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWlFZGl0QXV0b3NhdmUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiQXR0YWNobWVudHNcIiwgUGFyYW1WYWx1ZTogdGhpcy5haUVkaXRBdHRhY2htZW50cy5tYXAoYSA9PiAoeyBGaWxlTmFtZTogYS5maWxlTmFtZSwgQmFzZTY0Q29udGVudDogYS5iYXNlNjRDb250ZW50LCBNZWRpYVR5cGU6IGEubWVkaWFUeXBlIH0pKSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJUcmlnZ2VyRGVmaW5pdGlvbnNcIiwgUGFyYW1WYWx1ZTogdGhpcy50cmlnZ2VycyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkFjdGlvbkJ1dHRvbkRlZmluaXRpb25zXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWN0aW9uQnV0dG9ucyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIk1vZGVsSWRcIiwgUGFyYW1WYWx1ZTogYWlNb2RlbElkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkdlbmVyYXRlQmFja2dyb3VuZFwiLCBQYXJhbVZhbHVlOiB0aGlzLmFpR2VuZXJhdGVCYWNrZ3JvdW5kLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuU3NlRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChlc3RpbWF0ZWRTZWNvbmRzOiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLl9zdGFydEFpQ291bnRkb3duKGVzdGltYXRlZFNlY29uZHMpO1xyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiB7IEZvcm06IEZvcm0sIFdhcm5pbmdzOiBzdHJpbmdbXSwgQ29zdENlbnRzOiBudW1iZXIsIEVsYXBzZWRNczogbnVtYmVyLCBEYWxsRUVsYXBzZWRTZWM/OiBudW1iZXIsIFByb21wdFNwbGl0cz86IHN0cmluZ1tdIH0pID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fYWlFZGl0Q2FuY2VsbGVkKSB7IHRoaXMuX2FpRWRpdENhbmNlbGxlZCA9IGZhbHNlOyByZXR1cm47IH1cclxuICAgICAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgICAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVjdFByb21wdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlQWlFZGl0RGlhbG9nKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGlzTmV3VW5zYXZlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgIC8vIENhbXBvIG51b3ZvIG5vbiBzYWx2YXRvOiBlbGFib3JhIGlsIGZvcm0gdG9ybmF0byBlIHJpYXByaSBpbCBkaWFsb2cgY2FtcG8gY29uIGkgdmFsb3JpIGFnZ2lvcm5hdGlcclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcy5Gb3JtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZElkeCA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKSA/PyAtMTtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdXBkYXRlZEZpZWxkSWR4ID49IDAgPyB0aGlzLmZvcm0uRmllbGRzW3VwZGF0ZWRGaWVsZElkeF0gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5zcGxpY2UodXBkYXRlZEZpZWxkSWR4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIENhbXBvIGdpw6AgZXNpc3RlbnRlIG8gbmVzc3VuIGNvbnRlc3RvIGNhbXBvXHJcbiAgICAgICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICAvLyBTZSBjJ2VyYSB1biBjb250ZXN0byBjYW1wbywgYWdnaW9ybmEgc2VsZWN0ZWRGaWVsZCBlIHJpYXByaSBpbCBkaWFsb2dcclxuICAgICAgICAgICAgLy8gcGVyIHJpZmxldHRlcmUgbGUgbW9kaWZpY2hlIEFJIChlcy4gVGV4dEZpZWxkU3R5bGVDU1MpIG5lbGwnZWRpdG9yXHJcbiAgICAgICAgICAgIGlmIChmaWVsZENvZGVGb3JSZWZyZXNoICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCk7XHJcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gXCJTdWdnZXJpc2NpIGdyYWZpY2FcIjogc3Rlc3NvIGZsdXNzbyBmaWVsZC1jb250ZXh0IChudW92byBvIGVzaXN0ZW50ZSlcclxuICAgICAgICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKGlzTmV3VW5zYXZlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRJZHggPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCkgPz8gLTE7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHVwZGF0ZWRGaWVsZElkeCA+PSAwID8gdGhpcy5mb3JtLkZpZWxkc1t1cGRhdGVkRmllbGRJZHhdIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuc3BsaWNlKHVwZGF0ZWRGaWVsZElkeCwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB1cGRhdGVkRmllbGQuRm9ybXVsYTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdhc09uUHJldmlldyA9IHRoaXMuZm9ybUNvbXBsZXRlZDtcclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICBpZiAoZmllbGRDb2RlRm9yUmVmcmVzaCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuZmluZChmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpO1xyXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkRmllbGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRJZHggPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHVwZGF0ZWRJZHg7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGFzdFByb21wdFNwbGl0cyA9IHJlcy5Qcm9tcHRTcGxpdHMgPz8gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhbGxFUGFydCA9IHJlcy5EYWxsRUVsYXBzZWRTZWMgIT0gbnVsbCA/IGAgKHNmb25kbyBnZW5lcmF0byBpbiAke3Jlcy5EYWxsRUVsYXBzZWRTZWMudG9GaXhlZCgxKX1zKWAgOiAnJztcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKGBGb3JtIG1vZGlmaWNhdGEgY29uIEFJISR7ZGFsbEVQYXJ0fWApO1xyXG4gICAgICAgIGlmIChyZXMuV2FybmluZ3MgJiYgcmVzLldhcm5pbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcocmVzLldhcm5pbmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubGFzdFByb21wdFNwbGl0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5JbmZvKHRoaXMubGFzdFByb21wdFNwbGl0cy5tYXAoKHMsIGkpID0+IGAke2kgKyAxfS4gJHtzfWApLmpvaW4oJzxicj4nKSwgJ0Zvcm0gZ2VuZXJhdG8gaW4gcGFydGkgcGFyYWxsZWxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fYWlFZGl0Q2FuY2VsbGVkKSB7IHRoaXMuX2FpRWRpdENhbmNlbGxlZCA9IGZhbHNlOyByZXR1cm47IH1cclxuICAgICAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgICAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZGlyZWN0UHJvbXB0ICE9PSB1bmRlZmluZWQpIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyTXNnID0gKGVycm9yIGFzIGFueSk/LmVycm9yID8/IChlcnJvciBhcyBhbnkpPy5tZXNzYWdlO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlNc2cgPSB0eXBlb2Ygc2VydmVyTXNnID09PSAnc3RyaW5nJyAmJiBzZXJ2ZXJNc2cudHJpbSgpXHJcbiAgICAgICAgICA/IHNlcnZlck1zZ1xyXG4gICAgICAgICAgOiAnRXJyb3JlIG5lbGxhIG1vZGlmaWNhIGRlbGxhIGZvcm0gY29uIEFJJztcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcihkaXNwbGF5TXNnKTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3JlIG5lbGxhIG1vZGlmaWNhIGRlbGxhIGZvcm0gY29uIEFJXCIsIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3QoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZSA9IHRoaXMuY29udGVzdHVhbGl6YXRpb24uZmluZCh4ID0+IHguZW50aXR5VGFibGVOYW1lID09IHRoaXMuc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbikuZW50aXR5SUQ7XHJcbiAgfVxyXG5cclxuICBvbkNvbnRlc3R1YWxpemF0aW9uU2VsZWN0VmFsdWUoKSB7XHJcbiAgICB0aGlzLmNvbnRlc3R1YWxpemF0aW9uLmZpbmQoeCA9PiB4LmVudGl0eVRhYmxlTmFtZSA9PSB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24pLmVudGl0eUlEID0gdGhpcy5zZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uVmFsdWU7XHJcbiAgfVxyXG5cclxuICBhcHBseUNvbnRlc3R1YWxpemF0aW9uKGVsZW1lbnQpIHtcclxuICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuY29udGVzdHVhbGl6YXRpb24gPSBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dDb250ZXN0dWFsaXphdGlvblJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dDb250ZXN0dWFsaXphdGlvbiwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc0ODBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ29udGVzdHVhbGl6YXRpb25EaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uUmVmPy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaXJlVHJpZ2dlcihldjogRmlyZVRyaWdnZXIpIHtcclxuICAgIHRoaXMuZmlyZVRyaWdnZXIuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVEZWxldGVCdXR0b24oZXZlbnQ6IEFycmF5PEJhc2VGaWVsZD4pIHtcclxuICAgIHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbiA9IGV2ZW50Lmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGRzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWxlY3RlZEZpZWxkcyhwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG5cclxuXHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKFxyXG4gICAgICBcIkVsaW1pbmFyZSBnbGkgZWxlbWVudGkgc2VsZXppb25hdGk/XCIsXHJcbiAgICAgICgpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkcy5mb3JFYWNoKChzZWxlY3RlZEZpZWxkKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1bcHJvcGVydHlOYW1lXS5zcGxpY2UodGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihzZWxlY3RlZEZpZWxkKSwgMSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgXCJSaWNoaWVzdGEgY29uZmVybWFcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBWaXN1YWwgRWRpdG9yXHJcblxyXG4gIHRvZ2dsZVZpc3VhbEVkaXRvcigpOiB2b2lkIHtcclxuICAgIHRoaXMudmlzdWFsRWRpdG9yQWN0aXZlID0gIXRoaXMudmlzdWFsRWRpdG9yQWN0aXZlO1xyXG4gICAgaWYgKCF0aGlzLnZpc3VhbEVkaXRvckFjdGl2ZSkge1xyXG4gICAgICB0aGlzLnZlU3dhcEZpZWxkID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmVGaWVsZENsaWNrKGV2OiB7IGZpZWxkOiBCYXNlRmllbGQ7IGV2ZW50OiBNb3VzZUV2ZW50IH0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZlU3dhcEZpZWxkKSB7XHJcbiAgICAgIGlmICh0aGlzLnZlU3dhcEZpZWxkLkxhYmVsICE9PSBldi5maWVsZC5MYWJlbCkge1xyXG4gICAgICAgIHRoaXMudmVEb1N3YXAoZXYuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudmVTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IGV2LmZpZWxkLkxhYmVsKSA/PyBldi5maWVsZDtcclxuICAgIHRoaXMudmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnZlR3JhcGhpY0hpbnQgPSAnJztcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1ZlVG9vbHRpcCwge1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICczMjBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZlRWRpdEZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLm9wZW5GaWVsZERpYWxvZyh0aGlzLnZlU2VsZWN0ZWRGaWVsZCk7XHJcbiAgfVxyXG5cclxuICB2ZUFpRWRpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgLy8gUmVwbGljYSBjacOyIGNoZSBmYSBvcGVuRmllbGREaWFsb2c6IHBvcG9sYSBzZWxlY3RlZEZpZWxkIGUgaW5kZXhTZWxlY3RlZEZpZWxkXHJcbiAgICAvLyBjb3PDrCBzZW5kQWlFZGl0IHB1w7IgY2xvbmFyZSBjb3JyZXR0YW1lbnRlIGlsIGNhbXBvXHJcbiAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHM/LmluZGV4T2YodGhpcy52ZVNlbGVjdGVkRmllbGQpID8/IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh0aGlzLnZlU2VsZWN0ZWRGaWVsZCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHRoaXMudmVTZWxlY3RlZEZpZWxkLkZvcm11bGE7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgIH1cclxuICAgIHRoaXMub25BaUVkaXRGb3JGaWVsZCh0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCk7XHJcbiAgfVxyXG5cclxuICB2ZVNlbmRHcmFwaGljKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsKSA/PyB0aGlzLnZlU2VsZWN0ZWRGaWVsZCBhcyBhbnk7XHJcbiAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5vbkFpR3JhcGhpY1N1Z2dlc3QoeyBjb2RlOiB0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCwgaGludDogdGhpcy52ZUdyYXBoaWNIaW50IH0pO1xyXG4gICAgdGhpcy52ZVNob3dHcmFwaGljSW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMudmVHcmFwaGljSGludCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdmVPcGVuUmVvcmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgdGhpcy52ZVJlb3JkZXJGaWVsZHMgPSBbLi4uKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pXTtcclxuICAgIHRoaXMuZGlhbG9nVmVSZW9yZGVyUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1ZlUmVvcmRlciwge1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZlQXBwbHlSZW9yZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkcyA9IFsuLi50aGlzLnZlUmVvcmRlckZpZWxkc107XHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlUmVvcmRlclJlZj8uY2xvc2UoKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICB9XHJcblxyXG4gIG9uVmVEcmFnRHJvcFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPEJhc2VGaWVsZFtdPik6IHZvaWQge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMudmVSZW9yZGVyRmllbGRzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgdmVTdGFydFN3YXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIHRoaXMudmVTd2FwRmllbGQgPSB0aGlzLnZlU2VsZWN0ZWRGaWVsZDtcclxuICB9XHJcblxyXG4gIHZlRG9Td2FwKHRhcmdldEZpZWxkOiBCYXNlRmllbGQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy52ZVN3YXBGaWVsZCB8fCAhdGhpcy5mb3JtLkZpZWxkcykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5mb3JtLkZpZWxkcztcclxuICAgIGNvbnN0IGlkeEEgPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gdGhpcy52ZVN3YXBGaWVsZCEuTGFiZWwpO1xyXG4gICAgY29uc3QgaWR4QiA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSB0YXJnZXRGaWVsZC5MYWJlbCk7XHJcbiAgICBpZiAoaWR4QSA+PSAwICYmIGlkeEIgPj0gMCkge1xyXG4gICAgICBbZmllbGRzW2lkeEFdLCBmaWVsZHNbaWR4Ql1dID0gW2ZpZWxkc1tpZHhCXSwgZmllbGRzW2lkeEFdXTtcclxuICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgIH1cclxuICAgIHRoaXMudmVTd2FwRmllbGQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgdmVDYW5jZWxTd2FwKCk6IHZvaWQge1xyXG4gICAgdGhpcy52ZVN3YXBGaWVsZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICB2ZURlbGV0ZUZpZWxkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZChmID0+IGYuTGFiZWwgPT09IHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsKTtcclxuICAgIGlmICghZmllbGQpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgLy8gc2V0VGltZW91dCBuZWNlc3NhcmlvOiBTd2VldEFsZXJ0IG5vbiBzaSBhcHJlIGNvcnJldHRhbWVudGUgc2UgaWwgTWF0ZXJpYWwgRGlhbG9nIMOoIGFuY29yYSBpbiBmYXNlIGRpIGNoaXVzdXJhXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVsZXRlRWxlbWVudChmaWVsZCwgJ0ZpZWxkcycpLCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9QQUxFVFRFUyA9IFtcclxuICAgICdtb25vY3JvbWF0aWNvIHZpYnJhbnRlJywgJ2NvbXBsZW1lbnRhcmUnLCAndHJpYWRpY28nLCAnYW5hbG9nbyBjYWxkbycsICdhbmFsb2dvIGZyZWRkbycsXHJcbiAgICAncGFzdGVsbG8gZGVsaWNhdG8nLCAnbmVvbiBzdSBzY3VybycsICdlYXJ0aCB0b25lcycsICdvY2Vhbm8gcHJvZm9uZG8nLCAndHJhbW9udG8gY29sb3JhdG8nLFxyXG4gICAgJ2ZvcmVzdGEgYXV0dW5uYWxlJywgJ2xhdmFuZGEgZSBvcm8nLCAnY29yYWxsbyBlIHR1cmNoZXNlJywgJ3Jvc3NvIGUgYW50cmFjaXRlJywgJ3ZlcmRlIGFjcXVhIGUgc2FiYmlhJyxcclxuICAgICd2aW9sYSBlbGV0dHJpY28gZSBnaWFsbG8gbGltb25lJywgJ3Jvc2EgY2lwcmlhIGUgZ3JpZ2lvIHBlcmxhJywgJ2JsdSBjb2JhbHRvIGUgYXJhbmNpbyBicnVjaWF0bycsXHJcbiAgICAnb3JvIGFudGljbyBlIGJvcmRlYXV4JywgJ21lbnRhIGZyZXNjYSBlIGNpb2Njb2xhdG8nLCAnYXJnZW50byBlIGJsdSBhY2NpYWlvJywgJ3Blc2NhIGUgaW5kYWNvJyxcclxuICAgICdyb3NzbyBjaWxpZWdpYSBlIGF2b3JpbycsICd0ZWFsIHNjdXJvIGUgcmFtZScsICdsaW1lIGUgYmx1IG5hdnknLCAnbGlsbGEgZSB2ZXJkZSBzYWx2aWEnLFxyXG4gICAgJ2F6enVycm8gZ2hpYWNjaW8gZSBncmlnaW8gYXJkZXNpYScsICdhbWJyYSBlIHBldHJvbGlvJywgJ3NtZXJhbGRvIGUgcm9zYSBhbnRpY28nLCAnYmlhbmNvIGUgbmVybyBjb24gYWNjZW50byByb3NzbyBmdW9jbycsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9TVFlMRVMgPSBbXHJcbiAgICAnbWluaW1hbGlzdGEnLCAnYm9sZCBlIHZpdmFjZScsICdlbGVnYW50ZSBlIHNvYnJpbycsICdnaW9jb3NvIGUgZGluYW1pY28nLCAnaW5kdXN0cmlhbGUnLFxyXG4gICAgJ3JldHJvZnV0dXJpc3RhJywgJ29yZ2FuaWNvIGUgbmF0dXJhbGUnLCAndGVjaC9kaWdpdGFsZScsICdsdXh1cnkgcHJlbWl1bScsICd2aW50YWdlIG1vcmJpZG8nLFxyXG4gICAgJ2ZsYXQgZGVzaWduIHB1bGl0bycsICdnbGFzc21vcnBoaXNtJywgJ25ldW1vcmZpc21vJywgJ2RhcmsgbW9kZSByYWZmaW5hdG8nLFxyXG4gICAgJ2JydXRhbGlzdCBjb24gYm9yZGkgc3Blc3NpJywgJ3NjYW5kaW5hdm8gcHVsaXRvJywgJ2FydCBkw6ljbyBnZW9tZXRyaWNvJywgJ2N5YmVycHVuayBkaXN0b3BpY28nLFxyXG4gICAgJ3BvcCBhcnQgYSB0aW50ZSBwaWF0dGUnLCAnd2F0ZXJjb2xvciBwYXN0ZWxsbyBzZnVtYXRvJywgJ25lb24gYW5uaSBvdHRhbnRhJywgJ21hdGVyaWFsIGRlc2lnbiBjb24gb21icmUnLFxyXG4gICAgJ2F1cm9yYSBib3JlYWxlJywgJ3N3aXNzIHN0eWxlIHRpcG9ncmFmaWNvJywgJ3Ryb3BpY2FsZSB2aXZhY2UnLCAnbW9ub2Nyb21vIGNvbiBhY2NlbnRvIHNpbmdvbG8nLFxyXG4gICAgJ2F1cm9yYSBub3R0dXJuYSBzY3VyYScsICdjb3R0YWdlY29yZSBjYWxkbycsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9BREpFQ1RJVkVTID0gW1xyXG4gICAgJ29yaWdpbmFsZScsICdpbXByZXZlZGliaWxlJywgJ2FjY2F0dGl2YW50ZScsICdzcGV0dGFjb2xhcmUnLCAnZGVsaWNhdG8nLFxyXG4gICAgJ2F1ZGFjZScsICdyYWZmaW5hdG8nLCAnZ2lvY29zbycsICd2aXZhY2UnLCAnbWlzdGVyaW9zbycsXHJcbiAgICAnY2FsZG8nLCAnZnJlc2NvJywgJ3JvbWFudGljbycsICdmdXR1cmlzdGljbycsICdlbGVnYW50ZScsXHJcbiAgICAncnVzdGljbycsICdtb2Rlcm5vJywgJ3ZpbnRhZ2UnLCAnYXJtb25pb3NvJywgJ3NvcnByZW5kZW50ZScsXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBidWlsZEhpbnRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwaWNrID0gPFQ+KGFycjogVFtdKTogVCA9PiBhcnJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCldO1xyXG4gICAgY29uc3QgcGFsZXR0ZSA9IHBpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1BBTEVUVEVTKTtcclxuICAgIGNvbnN0IHN0eWxlID0gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfU1RZTEVTKTtcclxuICAgIGNvbnN0IGFkajEgPSBwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9BREpFQ1RJVkVTKTtcclxuICAgIGNvbnN0IHVzZVR3byA9IE1hdGgucmFuZG9tKCkgPCAwLjU7XHJcbiAgICBjb25zdCBhZGoyID0gdXNlVHdvID8gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfQURKRUNUSVZFUy5maWx0ZXIoYSA9PiBhICE9PSBhZGoxKSkgOiBudWxsO1xyXG4gICAgY29uc3QgYWRqVGV4dCA9IGFkajIgPyBgJHthZGoxfSBlICR7YWRqMn1gIDogYWRqMTtcclxuICAgIHJldHVybiBgUGFsZXR0ZSAke3BhbGV0dGV9LCBzdGlsZSAke3N0eWxlfSwgJHthZGpUZXh0fWA7XHJcbiAgfVxyXG5cclxuICByYW5kb21pemVIaW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RIaW50ID0gdGhpcy5idWlsZEhpbnRUZXh0KCk7XHJcbiAgfVxyXG5cclxuICByYW5kb21pemVWZUhpbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZlR3JhcGhpY0hpbnQgPSB0aGlzLmJ1aWxkSGludFRleHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRSYW5kb21HcmFwaGljSGludCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGljayA9IDxUPihhcnI6IFRbXSk6IFQgPT4gYXJyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFyci5sZW5ndGgpXTtcclxuICAgIGNvbnN0IHJhZGl1cyA9IFsnYm9yZGVyLXJhZGl1cyBwaWNjb2xvICgyLTRweCknLCAnYm9yZGVyLXJhZGl1cyBtZWRpbyAoOC0xMHB4KScsICdib3JkZXItcmFkaXVzIGdyYW5kZSAoMTYtMjBweCknLCAnYm9yZGVyLXJhZGl1cyBwaWxsb2xhICg5OTk5cHgpJ107XHJcbiAgICByZXR1cm4gYENBU1VBTEU6IHBhbGV0dGUgXCIke3BpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1BBTEVUVEVTKX1cIiwgc3RpbGUgXCIke3BpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1NUWUxFUyl9XCIsICR7cGljayhyYWRpdXMpfS4gSWdub3JhIGxhIHRhYmVsbGEgcHJlc2V0IHNldHRvcmlhbGkgZSBjcmVhIHVuYSBncmFmaWNhIG9yaWdpbmFsZSBlIGltcHJldmVkaWJpbGUuYDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcGxldGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBWaXN1YWwgRWRpdG9yXHJcblxyXG59XHJcbiIsIjxlcXAtZHluYW1pYy1tb2R1bGUtc3Bpbm5lcj48L2VxcC1keW5hbWljLW1vZHVsZS1zcGlubmVyPlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItaGVhZGVyIHJvdyB0aXRsZSBwLTFcIiAqbmdJZj1cImlubmVyRm9ybU1hbmFnbWVudFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGUtc3RhbmRhcmRcIj5BZ2dpdW50YSBmb3JtIGRpIGRldHRhZ2xpbzwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiB0ZXh0LXJpZ2h0XCI+XHJcbiAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvbiBjbG9zZVwiIChjbGljayk9XCJjbG9zZURpYWxvZ0lubmVyRm9ybSgpXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0jcmVnaW9uIEVYUE9SVCBNT0RVTEUgLS0+XHJcbjxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItZXhwb3J0ZXJcIiAqbmdJZj1cImxvYWRlciAmJiB2aWV3TW9kZSA9PSAnRXhwb3J0J1wiIGNsYXNzPVwicC0zXCI+XHJcblxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZXhwb3J0KClcIj5Fc3BvcnRhPC9idXR0b24+XHJcblxyXG4gIDwhLS08YVxyXG4gICAgY2xhc3M9XCJidG4gYnRuLWNsZWFyXCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgdGl0bGU9XCJEb3dubG9hZCBKU09OXCJcclxuICAgIFtocmVmXT1cImRvd25sb2FkSnNvbkhyZWZcIlxyXG4gICAgZG93bmxvYWQ9XCJ7eyBkb3dubG9hZE5hbWUgfX0uanNvblwiXHJcbiAgICA+RXhwb3J0PC9hPi0tPlxyXG5cclxuPC9kaXY+XHJcbjwhLS0jZW5kcmVnaW9uIEVYUE9SVCBNT0RVTEUgLS0+XHJcblxyXG48bWF0LWhvcml6b250YWwtc3RlcHBlciAqbmdJZj1cImxvYWRlciAmJiBmb3JtRm9ybUdyb3VwICYmIHZpZXdNb2RlID09ICdhZGRPckVkaXQnXCIgbGluZWFyICNzdGVwcGVyXHJcbiAgW25nQ2xhc3NdPVwieyBvdXRlckZvcm06IHRydWUsICdpbm5lckZvcm1NYW5hZ21lbnQtc3RlcHBlcic6IGlubmVyRm9ybU1hbmFnbWVudCAgfVwiXHJcbiAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3Itc3RlcHBlciB7eyAnbGFzdC1lZGl0ZWQtc3RlcC0nICsgc3RlcHBlci5zZWxlY3RlZEluZGV4IH19XCI+XHJcbiAgPCEtLSNyZWdpb24gREFUSSBHRU5FUkFMSSBERUxMQSBGT1JNIC0tPlxyXG4gIDxtYXQtc3RlcCBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1nZW5lcmFsLWRhdGFcIiBbc3RlcENvbnRyb2xdPVwiZm9ybUZvcm1Hcm91cFwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRm9ybUdyb3VwXCIgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWhlYWRlci1vdmVybGF5XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+PC9kaXY+XHJcbiAgICAgICAgRGF0aSBnZW5lcmFsaSBkZWxsYSBmb3JtXHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiPlxyXG4gICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPnt7IGlzTmV3Rm9ybSA/ICdDcmVhIGNvbiBBSScgOiAnTW9kaWZpY2EgY29uIEFJJyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gVWx0aW1vIHByb21wdCBBSSArIGFjY2Vzc28gYWxsbyBzdG9yaWNvIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50ICYmIGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCJcclxuICAgICAgICBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWJhclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1pY29uLXdyYXBcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtbGFiZWxcIj5SaWNoaWVzdGEgQUkgaW5pemlhbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC10ZXh0XCI+e3sgYWlQcm9tcHRIaXN0b3J5WzBdIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtaGlzdG9yeS1idG5cIiBtYXRUb29sdGlwPVwiVmVkaSBzdG9yaWNvIGNvbXBsZXRvXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlIaXN0b3J5RGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImhpc3RvcnlcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZmlyc3RSb3dcIj5cclxuICAgICAgICA8IS0tXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInVmEgaW5zZXJpdG8gcGVyIGVzc2VyZSB1dGlsaXp6YXRvIGNvbWUgcmlmZXJpbWVudG8gbmVpIHRlbXBsYXRlLiBub24gYWNjZXR0YSBjYXJhdHRlcmkgc3BlY2lhbGkgbmUgc3BhemkuJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQ29kaWNlIFVuaXZvY29cclxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1ZhIGluc2VyaXRvIHBlciBlc3NlcmUgdXRpbGl6emF0byBjb21lIHJpZmVyaW1lbnRvIG5laSB0ZW1wbGF0ZS4gbm9uIGFjY2V0dGEgY2FyYXR0ZXJpIHNwZWNpYWxpIG5lIHNwYXppLidcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic2V0Q29kZShmb3JtLkNvZGUpXCJcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgcmVhZG9ubHk9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwiTm9tZVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIiBbKG5nTW9kZWwpXT1cImZvcm0uTmFtZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInNldE5hbWUoZm9ybS5OYW1lKVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1sYWJlbD5UaXBvIGRpIHZpc3VhbGl6emF6aW9uZTwvbWF0LWxhYmVsPiAtLT5cclxuICAgICAgICAgIDx0bXctc2VsZWN0IGNsYXNzPVwibmFtZVNlY3Rpb25cIiBbZW51bURhdGFdPVwiRm9ybVNjYWxhclR5cGVFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm0uRm9ybVNjYWxhclR5cGVcIlxyXG4gICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJmYWxzZVwiIHJlcXVpcmVkIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZvcm1Gb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Zvcm1TY2FsYXJUeXBlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUaXBvIGRpIHZpc3VhbGl6emF6aW9uZVwiPlxyXG4gICAgICAgICAgPC90bXctc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkRlc2NyaXppb25lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiIFsobmdNb2RlbCldPVwiZm9ybS5EZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmb3JtLk5hbWUpXCIgcGxhY2Vob2xkZXI9XCJEZXNjcml6aW9uZVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBpbnNlcnRlZFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICYmXHJcbiAgICAgICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVxyXG4gICAgICAgIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibmFtZVNlY3Rpb25cIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPiBOb21lIHNlemlvbmUgKGludmlvIHBlciBjb25mZXJtYXJlKSA8L21hdC1sYWJlbD5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm1GaWVsZEdyb3VwTmFtZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgKGtleXVwKT1cIm9uRm9ybUZpZWxkR3JvdXBOYW1lS2V5VXAoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiTm9tZSBzZXppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSlcIiAvPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPlNlemlvbmkgaW5zZXJpdGU6PC9zcGFuPlxyXG4gICAgICAgICAgPHVsIGNsYXNzPVwic2VjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXBOYW1lIG9mIGZvcm0uRm9ybUZpZWxkc0dyb3VwczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbkluc2VydFwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gbXItMVwiIChjbGljayk9XCJvbkRlbGV0ZUZvcm1GaWVsZEdyb3VwTmFtZShncm91cE5hbWUuTmFtZSlcIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvbiBtci0xIGljb24tYmxhY2tcIiAoY2xpY2spPVwib25FZGl0Rm9ybUZpZWxkR3JvdXBOYW1lKGdyb3VwTmFtZSlcIiBuYW1lPVwiZWRpdFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgICB7eyBncm91cE5hbWUuTmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICA8IS0tIElNUE9SVCAtLT5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXRoaXMuZm9ybUlEXCIgY2xhc3M9XCJidG4gYnRuLWNsZWFyIGJ1dHRvbi1uZXh0IG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZHVsZSgpXCI+XHJcbiAgICAgICAgICBJbXBvcnRhXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPCEtLSBFTkQgSU1QT1JUIC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCBbZGlzYWJsZWRdPVwiZm9ybUZvcm1Hcm91cC5pbnZhbGlkXCI+XHJcbiAgICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gREFUSSBHRU5FUkFMSSBERUxMQSBGT1JNIC0tPlxyXG5cclxuICA8IS0tI3JlZ2lvbiBBR0dJVU5UQSBERUkgQ0FNUEkgREVMTEEgRk9STSAtLT5cclxuICA8bWF0LXN0ZXAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItYWRkLWZpZWxkXCIgW2NvbXBsZXRlZF09XCJpc0ZpZWxkU3RlcENvbXBsZXRlZCgpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICA8bWF0LWxhYmVsPkNhbXBpIGRhIGluc2VyaXJlPC9tYXQtbGFiZWw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFkZEJ1dHRvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWVsZERpYWxvZygpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwbHVzXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naSBjYW1wbzwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiXHJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5Jbm5lckZvcm1EaWFsb2coKVwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpbm5lckZvcm1NYW5hZ21lbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIGZvcm0gZGkgZGV0dGFnbGlvPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgYnRuLW91dGxpbmVkLXJlZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJyZWRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZEZpZWxkcygnRmllbGRzJylcIiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkVsaW1pbmEgY2FtcGkgc2VsZXppb25hdGk8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BaUVkaXREaWFsb2coKVwiICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj57eyBpc05ld0Zvcm0gPyAnQ3JlYSBjb24gQUknIDogJ01vZGlmaWNhIGNvbiBBSScgfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRtdy10YWJsZSBjbGFzcz1cInRhYmxlXCIgI2ZpZWxkc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiZmllbGRzQ29sdW1uc1wiIFtlbmFibGVEcmFnQW5kRHJvcF09XCJmYWxzZVwiXHJcbiAgICAgIFtlbmFibGVEcmFnQ29sdW1uXT1cInRydWVcIiBbY2hhbmdlRHJhZ1Jvd1Bvc2l0aW9uXT1cInRydWVcIiBbaXNNdWx0aXBsZVNlbGVjdGlvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZm9ybS5GaWVsZHNcIlxyXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1biBjYW1wbyBpbnNlcml0bydcIiAoZHJhZ1JlbGVhc2VkRXZlbnQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiXHJcbiAgICAgIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCIgKGNoZWNrYm94SW5mbyk9XCJ0b2dnbGVEZWxldGVCdXR0b24oJGV2ZW50KVwiIFtzZWFyY2hUZXh0XT1cIicnXCJcclxuICAgICAgW3BhZ2luYXRvclZpc2libGVdPVwiZmFsc2VcIj5cclxuICAgIDwvdG13LXRhYmxlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIHByZXZpb3VzXCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPlxyXG4gICAgICAgIFByZWNlZGVudGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tbmV4dFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdFN0ZXBwZXJOZXh0IFtkaXNhYmxlZF09XCIhaXNGaWVsZFN0ZXBDb21wbGV0ZWQoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZm9ybUZvcm1Hcm91cC5pbnZhbGlkIH1cIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUkgQ0FNUEkgREVMTEEgRk9STSAtLT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7IGluZGV4ICsgMSB9fTwvbWF0LWxhYmVsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0jcmVnaW9uIEFHR0lVTlRBIERFTExFIE9QRVJBWklPTkkgU1VJIFJFQ09SRCAtLT5cclxuICA8IS0tIzxtYXQtc3RlcD5cclxuICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWhlYWRlci1vdmVybGF5XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+PC9kaXY+XHJcbiAgICAgIEF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmRcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWN0aW9uT25SZWNvcmREaWFsb2coKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgYXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHRtdy10YWJsZVxyXG4gICAgICBjbGFzcz1cInRhYmxlXCJcclxuICAgICAgI2FjdGlvbnNPblJlY29yZFRhYmxlXHJcbiAgICAgIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCJcclxuICAgICAgW2NvbHVtbnNdPVwiYWN0aW9uc09uUmVjb3JkQ29sdW1uc1wiXHJcbiAgICAgIFtkYXRhXT1cImZvcm0uQWN0aW9uc09uUmVjb3JkXCJcclxuICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW5hIGFjdGlvbiBpbnNlcml0YSdcIlxyXG4gICAgICBbc2VhcmNoVGV4dF09XCInJ1wiXHJcbiAgICA+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b25zTmV4dERpdlwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidXR0b24tbmV4dFwiXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIG1hdFN0ZXBwZXJOZXh0XHJcbiAgICAgICAgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFN1Y2Nlc3Npdm9cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1zdGVwPi0tPlxyXG4gIDwhLS0jZW5kcmVnaW9uIEFHR0lVTlRBIERFTExFIE9QRVJBWklPTkkgU1VJIFJFQ09SRCAtLT5cclxuXHJcblxyXG5cclxuICA8IS0tI3JlZ2lvbiBBR0dJVU5UQSBERUkgQk9UVE9OSSBBWklPTkUgLS0+XHJcbiAgPG1hdC1zdGVwPlxyXG4gICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cclxuICAgICAgQm90dG9uaSBBemlvbmVcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BY3Rpb25CdXR0b25EaWFsb2coKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgYm90dG9uZSBhemlvbmU8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dG13LXRhYmxlIGNsYXNzPVwidGFibGVcIiAjYWN0aW9uQnV0dG9uc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiYWN0aW9uQnV0dG9uc0NvbHVtbnNcIlxyXG4gICAgICBbZGF0YV09XCJmb3JtLkFjdGlvbkJ1dHRvbnNcIiBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1biBib3R0b25lIGF6aW9uZSBpbnNlcml0bydcIiBbc2VhcmNoVGV4dF09XCInJ1wiXHJcbiAgICAgIFtlbmFibGVEcmFnQW5kRHJvcF09XCJmYWxzZVwiIFtlbmFibGVEcmFnQ29sdW1uXT1cInRydWVcIiBbY2hhbmdlRHJhZ1Jvd1Bvc2l0aW9uXT1cInRydWVcIlxyXG4gICAgICAoZHJhZ1JlbGVhc2VkRXZlbnQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCI+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b25zTmV4dERpdlwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUkgQk9UVE9OSSBBWklPTkUgLS0+XHJcblxyXG5cclxuXHJcbiAgPCEtLSNyZWdpb24gVFJJR0dFUlMtLT5cclxuICA8bWF0LXN0ZXA+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICBUcmlnZ2Vyc1xyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuVHJpZ2dlcnNEaWFsb2coKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgdHJpZ2dlcjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dG13LXRhYmxlIGNsYXNzPVwidGFibGVcIiAjdHJpZ2dlcnNUYWJsZSBbY3JlYXRlTWF0Q2FyZF09XCJmYWxzZVwiIFtjb2x1bW5zXT1cInRyaWdnZXJzQ29sdW1uc1wiIFtkYXRhXT1cImZvcm0uVHJpZ2dlcnNcIlxyXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1bmEgYWN0aW9uIGluc2VyaXRhJ1wiIFtzZWFyY2hUZXh0XT1cIicnXCI+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCBbZGlzYWJsZWRdPVwiIWlzRmllbGRTdGVwQ29tcGxldGVkKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGZvcm1Gb3JtR3JvdXAuaW52YWxpZCB9XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXModHJ1ZSlcIj5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gVFJJR0dFUlMtLT5cclxuXHJcbiAgPCEtLSNyZWdpb24gVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBIC0tPlxyXG4gIDxtYXQtc3RlcCBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1wcmV2aWV3XCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoIGZvcm1Gb3JtR3JvdXAudmFsaWQgJiYgZm9ybS5GaWVsZHMgJiYgZm9ybS5GaWVsZHMubGVuZ3RoID4gMCApXCI+PC9kaXY+XHJcbiAgICAgIEFudGVwcmltYVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBhZGRCdXR0b25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dBbGxGaWVsZHNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93QWxsRmllbGRzID0gIXNob3dBbGxGaWVsZHNcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgW25hbWVdPVwic2hvd0FsbEZpZWxkcyA/ICdleWUtb2ZmJyA6ICdleWUnXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5Nb3N0cmEgYW5jaGUgaSBjYW1waSBpbnZpc2liaWxpPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCIgKm5nSWY9XCJjb250ZXN0dWFsaXphdGlvbiAmJiBjb250ZXN0dWFsaXphdGlvbi5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbiAhPSBudWxsXCIgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImFkanVzdG1lbnRzLWhvcml6b250YWxcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkNvbnRlc3R1YWxpenphemlvbmU8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93R3JhZmljYVBhbmVsXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93R3JhZmljYVBhbmVsID0gIXNob3dHcmFmaWNhUGFuZWxcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkdyYWZpY2E8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJ2aXN1YWxFZGl0b3JBY3RpdmVcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVZpc3VhbEVkaXRvcigpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJsYXlvdXQtZ3JpZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+VmlzdWFsIEVkaXRvcjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50RW5kUG9pbnRcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPk1vZGlmaWNhIGNvbiBBSTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwidmVTd2FwRmllbGRcIiBjbGFzcz1cInZlLXN3YXAtYmFubmVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uIHZlLXN3YXAtYmFubmVyLWljb25cIiBuYW1lPVwiYXJyb3dzLWxlZnQtcmlnaHRcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3Bhbj5DbGljY2Egc3VsIGNhbXBvIGNvbiBjdWkgdnVvaSBzY2FtYmlhcmUgbGEgcG9zaXppb25lPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInZlQ2FuY2VsU3dhcCgpXCIgY2xhc3M9XCJ2ZS1zd2FwLWJhbm5lci1jYW5jZWxcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgICBBbm51bGxhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dHcmFmaWNhUGFuZWxcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJjb25maWd1cmF0b3ItYWNjb3JkaW9uXCIgW211bHRpXT1cInRydWVcIiBkaXNwbGF5TW9kZT1cImZsYXRcIj5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cImNvbmZpZ3VyYXRvci1wYW5lbFwiIFtleHBhbmRlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+R3JhZmljYTwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyYWZpY2EtYWktcm93XCIgKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZvcm0tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiIChjbGljayk9XCJ0b2dnbGVGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cIiFmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIHt7IGZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIEdyYWZpY2EgQ29tcGxldGEnIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1ncmFwaGljLXNjb3BlLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9ybUdyYXBoaWNTY29wZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWxsXCI+VHV0dG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtYWluXCI+UHJpbmNpcGFsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIHByZXNlbnRGaWVsZFR5cGVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPnt7IG9wdC5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUhpbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImJ1bGJcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdlbmVyYXRlLWJnXCIgW2NsYXNzLmFjdGl2ZV09XCJnZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXRlQmFja2dyb3VuZCA9ICFnZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2VuZXJhdGVCYWNrZ3JvdW5kID8gJ1Nmb25kbyBBSTogYXR0aXZvJyA6ICdHZW5lcmEgYW5jaGUgc2ZvbmRvIEFJJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGhvdG9cIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1ncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImZvcm1HcmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGJsdSBzY3Vybywgc3RpbGUgcHJvZmVzc2lvbmFsZSwgc2ZvbmRvIHNmdW1hdG8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZvcm0tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uRm9ybUdyYXBoaWNTdWdnZXN0KClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY28gYWwgZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aHIgY2xhc3M9XCJncmFmaWNhLWFpLXNlcGFyYXRvclwiIC8+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0IGdyYWZpY2Etcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ3JhZmljYS1maWVsZC1sYWJlbFwiPkltbWFnaW5lIGRpIHNmb25kbzwvcD5cclxuICAgICAgICAgICAgICA8dG13LWF0dGFjaG1lbnRzIFthdHRhY2htZW50c0xpc3RdPVwiYmdBdHRhY2htZW50TGlzdFwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJmYWxzZVwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCIgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwib25CZ0ltYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG9uRGVsZXRlQXR0YWNobWVudCk9XCJvbkJnSW1hZ2VEZWxldGUoKVwiPlxyXG4gICAgICAgICAgICAgIDwvdG13LWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DU1MgUHJpbmNpcGFsZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwiZm9ybS5UaGVtZUNTU1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIG1heC13aWR0aDogODAwcHg7IHBhZGRpbmc6IDE2cHg7IGJhY2tncm91bmQ6ICNmNWY1ZjU7XCIgcm93cz1cIjVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkNTUyBUaXRvbG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm0uVGl0bGVDU1NcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwcmV2aWV3Rm9ybSAmJiAocHJldmlld0Zvcm0uVGl0bGVDU1MgPSAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gZm9udC1zaXplOiAycmVtOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogI2ZmZjtcIiByb3dzPVwiNVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1wcmV2aWV3XCIgW3N0eWxlXT1cInByZXZpZXdCZ1N0eWxlXCI+XHJcbiAgICAgIDxkaXYgW3N0eWxlXT1cInByZXZpZXdUaGVtZVN0eWxlXCI+XHJcbiAgICAgICAgPGFkZC1mb3JtLXJlY29yZCAqbmdJZj1cInByZXZpZXdGb3JtICYmIGZvcm1Db21wbGV0ZWRcIiBbZm9ybV09XCJwcmV2aWV3Rm9ybVwiIFt1c2VySURdPVwiVXNlcklEXCIgW29yZ2FJRF09XCJvcmdhSURcIlxyXG4gICAgICAgICAgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtjb25maWd1cmF0aW9uc109XCJ2aWV3Q29uZmlnXCIgW3Nob3dBbGxGaWVsZHNdPVwic2hvd0FsbEZpZWxkc1wiXHJcbiAgICAgICAgICBbUXVlcnlFZGl0b3JDb21wb25lbnRdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgICAgICAgICBbdmlzdWFsRWRpdG9yTW9kZV09XCJ2aXN1YWxFZGl0b3JBY3RpdmVcIiBbdmVTd2FwRmllbGRDb2RlXT1cInZlU3dhcEZpZWxkPy5MYWJlbCA/PyBudWxsXCJcclxuICAgICAgICAgICh2ZUZpZWxkQ2xpY2spPVwib25WZUZpZWxkQ2xpY2soJGV2ZW50KVwiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpXCJcclxuICAgICAgICAgIChmaXJlVHJpZ2dlcik9XCJvbkZpcmVUcmlnZ2VyKCRldmVudClcIiBbaW5Db25maWddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvYWRkLWZvcm0tcmVjb3JkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJ1dHRvbi1uZXh0RGl2XCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIGJ1dHRvbi1leGl0XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPlxyXG4gICAgICAgIFByZWNlZGVudGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tbmV4dFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRm9ybSgpXCI+XHJcbiAgICAgICAgU2FsdmEgZm9ybVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBIC0tPlxyXG5cclxuPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG5cclxuPCEtLSBESUFMT0cgQUdHSVVOVEEvTU9ESUZJQ0EgQ0FNUE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRmllbGQ+XHJcbiAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZCBbZm9ybV09XCJmb3JtXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgW2ZpZWxkXT1cInNlbGVjdGVkRmllbGRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2luZGV4RmllbGRdPVwiaW5kZXhTZWxlY3RlZEZpZWxkXCJcclxuICAgIFthdmFpbGFibGVGaWVsZHNdPVwiZm9ybS5GaWVsZHNcIiBbY29udGVzdHVhbGl6YXRpb25dPVwiY29udGVzdHVhbGl6YXRpb25cIlxyXG4gICAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2ZpZWxkc0V4dHJhQ29uZmlnXT1cImZpZWxkc0V4dHJhQ29uZmlnXCJcclxuICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiBbYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIFtmb3JtRmllbGRzR3JvdXBzXT1cIlxyXG4gICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVxyXG4gICAgICA/IGZvcm0uRm9ybUZpZWxkc0dyb3Vwc1xyXG4gICAgICA6IG51bGxcclxuICAgICAgXCIgKG9wZW5BaUVkaXRGb3JGaWVsZEV2ZW50KT1cIm9uQWlFZGl0Rm9yRmllbGQoJGV2ZW50KVwiIChvcGVuQWlHcmFwaGljU3VnZ2VzdEV2ZW50KT1cIm9uQWlHcmFwaGljU3VnZ2VzdCgkZXZlbnQpXCJcclxuICAgIChzYXZlRmllbGRFdmVudCk9XCJvblNhdmVGaWVsZCgkZXZlbnQpXCIgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudClcIj5cclxuICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVEVNUExBVEUgUEVSIFZJU1VBTElaWkFSRSBMQSBDT0xPTk5BIERFTExBIFNFWklPTkUgTkVMTEEgVEFCRUxMQSBERUkgRklFTERTIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICA8dG13LXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm0uRm9ybUZpZWxkc0dyb3Vwc1wiIFsobmdNb2RlbElucHV0KV09XCJyb3cuRmllbGRHcm91cFwiIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiXHJcbiAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIHBsYWNlaG9sZGVyPVwiU2V6aW9uZVwiIFtpc1JlcXVpcmVkXT1cInRydWVcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICA8L3Rtdy1zZWxlY3Q+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERJQUxPRyBQRVIgQUdHSVVOR0VSRS9NT0RJRklDQVJFIFVOQSBBQ1RJT04gU1VJIFJFQ09SRCBERUxMQSBGT1JNIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FjdGlvbk9uUmVjb3JkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRoaXJkLW1vZGFsXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiA3MHZoICFpbXBvcnRhbnQ7IG92ZXJmbG93LXg6IGhpZGRlbjsgb3ZlcmZsb3cteTogYXV0b1wiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3Rpb25PblJlY29yZEZvcm1Hcm91cFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHRpdGxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZS1zdGFuZGFyZFwiPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgIGluZGV4U2VsZWN0ZWRBY3Rpb24gIT0gbnVsbCAmJiBpbmRleFNlbGVjdGVkQWN0aW9uID49IDBcclxuICAgICAgICAgID8gXCJNb2RpZmljYVwiXHJcbiAgICAgICAgICA6IFwiQWdnaXVuZ2lcIlxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGF6aW9uZSBzdWwgcmVjb3JkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPiBOb21lIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTmFtZVwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uTmFtZVwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD4gSWNvbmEgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uXCIgcmVxdWlyZWQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEFjdGlvbi5JY29uXCIgLz5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5BemlvbmUgKEphdmFzY3JpcHQpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbcm93c109XCIzXCIgZm9ybUNvbnRyb2xOYW1lPVwiQWN0aW9uXCIgcmVxdWlyZWQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEFjdGlvbi5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYWN0aW9uQXV0b2NvbXBsZXRlXCIgKGtleXVwKT1cInNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMobnVsbClcIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2FjdGlvbkF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMiBtYi0xXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNGb3JtXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1hdC1yYWlzZWQtYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJjbG9zZURpYWxvZ0FjdGlvbk9uUmVjb3JkKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgc2F2ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlQWN0aW9uT25SZWNvcmQoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25PblJlY29yZEZvcm1Hcm91cC5pbnZhbGlkXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICBTYWx2YVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIEFHR0lVTkdFUkUvTU9ESUZJQ0FSRSBVTiBCT1RUT05FIEFaSU9ORSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dBY3Rpb25CdXR0b24+XHJcbiAgPGFjdGlvbi1idXR0b24tY3JlYXRvciBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtmb3JtXT1cImZvcm1cIiBbZm9ybXVsYXNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgICBbYWN0aW9uQnV0dG9uXT1cInNlbGVjdGVkQWN0aW9uQnV0dG9uXCIgKG9uU2F2ZVJlY29yZCk9XCJzYXZlQWN0aW9uQnV0dG9ucygkZXZlbnQpXCI+PC9hY3Rpb24tYnV0dG9uLWNyZWF0b3I+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBDT05GSUdVUkFSRSBMRSBGT1JNIERJIERFVFRBR0xJTyAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dJbm5lckZvcm0+XHJcbiAgPCEtLSBbZm9ybV09XCJzZWxlY3RlZElubmVyRm9ybVwiXHJcbiAgICBbaW5uZXJGb3JtTWFuYWdtZW50XT1cInRydWVcIlxyXG4gICAgW2lubmVyRm9ybVJlZl09XCJkaWFsb2dJbm5lckZvcm1SZWZcIiAtLT5cclxuICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvciBbY29uZmlndXJhdGlvbnNdPVwiaW5uZXJGb3JtQ29uZmlnXCIgKHNhdmVGb3JtRXZlbnQpPVwib25TYXZlT3JFeGl0SW5uZXJGb3JtKCRldmVudClcIj5cclxuICA8L2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3I+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBJTVBPUlQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nSW1wb3J0PlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImltcG9ydERpYWxvZ1wiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cInAtMiBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kXCI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICBJbXBvcnRcclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJpbnB1dC1maWxlLWJ0biBwYi0yXCIgKGNoYW5nZSk9XCJvbkltcG9ydCgkZXZlbnQpXCIgLz5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tY2xlYXIgYnV0dG9uLWJhY2sgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VJbXBvcnQoKVwiPlxyXG4gICAgICAgIEFubnVsbGFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuICA8L21hdC1jYXJkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIEFHR0lVTkdFUkUvTU9ESUZJQ0FSRSBJIFRSSUdHRVJTIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ1RyaWdnZXJzPlxyXG4gIDx0cmlnZ2VyLWNyZWF0b3IgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbZm9ybV09XCJmb3JtXCIgW2Zvcm11bGFzXT1cInRyaWdnZXJzXCJcclxuICAgIFt0cmlnZ2VyXT1cInNlbGVjdGVkVHJpZ2dlclwiIChvblNhdmVSZWNvcmQpPVwic2F2ZVRyaWdnZXIoJGV2ZW50KVwiPjwvdHJpZ2dlci1jcmVhdG9yPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgTU9ESUZJQ0EgQ09OIEFJIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpRWRpdD5cclxuICA8bWF0LWNhcmQgc3R5bGU9XCJtaW4td2lkdGg6IDQ4MHB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgPHNwYW4+e3sgaXNOZXdGb3JtID8gJ0NyZWEgZm9ybSBjb24gQUknIDogJ01vZGlmaWNhIGZvcm0gY29uIEFJJyB9fTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWhpc3RvcnktdG9nZ2xlLWJ0blwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93QWlQcm9tcHRIaXN0b3J5XCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJzaG93QWlQcm9tcHRIaXN0b3J5ID8gJ05hc2NvbmRpIHN0b3JpY28gcmljaGllc3RlJyA6ICdNb3N0cmEgc3RvcmljbyByaWNoaWVzdGUnXCJcclxuICAgICAgICAoY2xpY2spPVwic2hvd0FpUHJvbXB0SGlzdG9yeSA9ICFzaG93QWlQcm9tcHRIaXN0b3J5XCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBbbmFtZV09XCJzaG93QWlQcm9tcHRIaXN0b3J5ID8gJ2hpc3Rvcnktb2ZmJyA6ICdoaXN0b3J5J1wiPjwvdG13LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWRpYWxvZy1ib2R5LWZsZXhcIj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTMgYWktZGlhbG9nLW1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDwhLS0gUHJvbXB0IHRleHRhcmVhICsgbWljcm9mb25vIC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBpc05ld0Zvcm0gPyAnRGVzY3JpdmkgaWwgZm9ybSBkYSBjcmVhcmUnIDogJ0Rlc2NyaXZpIGxhIG1vZGlmaWNhIGRhIGFwcG9ydGFyZScgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwiYWlFZGl0UHJvbXB0XCIgcm93cz1cIjVcIiBbZGlzYWJsZWRdPVwiYWlFZGl0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzTmV3Rm9ybSA/ICdFczogY3JlYSB1biBmb3JtIHBlciBsYSByZWdpc3RyYXppb25lIHBhemllbnRpIGNvbiBjYW1waSBub21lLCBjb2dub21lLCBkYXRhIGRpIG5hc2NpdGEgZSBjb2RpY2UgZmlzY2FsZS4uLicgOiAnRXM6IGFnZ2l1bmdpIHVuIGNhbXBvIGRhdGEgZGkgbmFzY2l0YSwgcmltdW92aSBpbCBjYW1wbyBlbWFpbCwgcmVuZGkgb2JibGlnYXRvcmlvIGlsIGNhbXBvIHRlbGVmb25vLi4uJ1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cInRydWVcIiBTcGVlY2hUb1RleHQgWyhiaW5kZWRUZXh0KV09XCJhaUVkaXRQcm9tcHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDEycHg7IHRvcDogMTJweDsgY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogIzY2NlwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImlzTmV3Rm9ybSA/ICdQYXJsYSBwZXIgZGVzY3JpdmVyZSBpbCBmb3JtJyA6ICdQYXJsYSBwZXIgZGV0dGFyZSBsYSBtb2RpZmljYSdcIiBuYW1lPVwibWljcm9waG9uZVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQWxsZWdhdGkgKyBnZW5lcmEgc2ZvbmRvIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIG10LTFcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCIgKGNsaWNrKT1cImFpRWRpdEZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhcGVyY2xpcFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDZweFwiPkFnZ2l1bmdpIGFsbGVnYXRpIChQREYgbyBpbW1hZ2luaSk8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxpbnB1dCAjYWlFZGl0RmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgYWNjZXB0PVwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uQWlFZGl0RmlsZUNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ2VuZXJhdGUtYmdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWlHZW5lcmF0ZUJhY2tncm91bmQgPSAhYWlHZW5lcmF0ZUJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhaUdlbmVyYXRlQmFja2dyb3VuZCA/ICdTZm9uZG8gQUk6IGF0dGl2bycgOiAnR2VuZXJhIGFuY2hlIHNmb25kbyBBSSdcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGhvdG9cIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsICpuZ0lmPVwiYWlFZGl0QXR0YWNobWVudHMubGVuZ3RoID4gMFwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTsgcGFkZGluZzogMDsgbWFyZ2luOiAwIDAgMTJweFwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhdHQgb2YgYWlFZGl0QXR0YWNobWVudHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tYm90dG9tOiA0cHhcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIG5hbWU9XCJmaWxlXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgYXR0LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjOTk5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQWlFZGl0QXR0YWNobWVudChpKVwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgPCEtLSBBdXRvc2F2ZSAtLT5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImFpRWRpdEF1dG9zYXZlXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgIHt7IGlzTmV3Rm9ybSA/ICdTYWx2YSBhdXRvbWF0aWNhbWVudGUgZG9wbyBsYSBjcmVhemlvbmUnIDogJ1NhbHZhIGF1dG9tYXRpY2FtZW50ZSBkb3BvIGxhIG1vZGlmaWNhJyB9fVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuXHJcbiAgICAgICAgPCEtLSBDb250byBhbGxhIHJvdmVzY2lhIG1vc3RyYXRvIG1lbnRyZSBBSSBlbGFib3JhIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhaUVkaXRMb2FkaW5nICYmIGFpRWRpdEVzdGltYXRlZFNlYyA+IDBcIiBjbGFzcz1cIm10LTMgbWItMVwiPlxyXG4gICAgICAgICAgPCEtLSBGYXNlIG5vcm1hbGU6IGNvdW50ZG93biBpbiBjb3JzbyAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWlFZGl0SXNPdmVydGltZVwiPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwiKDEgLSBhaUVkaXRDb3VudGRvd24gLyBhaUVkaXRFc3RpbWF0ZWRTZWMpICogMTAwXCJcclxuICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiPlxyXG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDRweFwiPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgIE9wZXJhemlvbmUgaW4gY29yc28g4oCUIHRlbXBvIHN0aW1hdG8gcmltYW5lbnRlOiA8Yj57eyBhaUVkaXRDb3VudGRvd24gfX1zPC9iPlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8IS0tIEZhc2Ugb3ZlcnRpbWU6IGlsIHNlcnZlciBpbXBpZWdhIHBpw7kgZGVsIHByZXZpc3RvIC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFpRWRpdElzT3ZlcnRpbWVcIj5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cIndhcm5cIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMnB4OyBtYXJnaW4tdG9wOiA2cHhcIj5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICBTZW1icmEgY2hlIGNpIHZvZ2xpYSBwacO5IGRlbCBwcmV2aXN0byDigJQgPGI+K3t7IC1haUVkaXRDb3VudGRvd24gfX1zPC9iPlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjYW5jZWxBaUVkaXQoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMjZweDsgbGluZS1oZWlnaHQ6IDI2cHg7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZzogMCAxMHB4OyBtaW4td2lkdGg6IHVuc2V0XCI+XHJcbiAgICAgICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gU3RpbWEgY29zdG8gQUkgKGFnZ2lvcm5hdGEgaW4gdGVtcG8gcmVhbGUgYWwgdmFyaWFyZSBkZWwgcHJvbXB0LCBkZWwgbW9kZWxsbyBjaXRhdG8sXHJcbiAgICAgICAgICAgICBkZWdsaSBhbGxlZ2F0aSBlIGRlbCBudW1lcm8gZGkgc3BsaXQgaXBvdGl6emF0bykgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwgbXQtM1wiICpuZ0lmPVwiIWFpRWRpdExvYWRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWljb25cIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiY2FzaFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC10aXRsZVwiPkNvc3RvIHN0aW1hdG8gdXNvIEFJPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1tb2RlbFwiPnt7IGFpRWRpdERldGVjdGVkTW9kZWxMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWlFZGl0U3BsaXRDb3VudCA8PSAxOyBlbHNlIGFpQ29zdFNwbGl0TGluZXNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS1sYWJlbFwiPlByaW1vIHVzbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLXZhbHVlXCI+YWwgbWFzc2ltbyB7eyBmb3JtYXRBaUVkaXRDb3N0KGFpRWRpdENvc3RGaXJzdEV1cikgfX0g4oKsPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+VXNpIHN1Y2Nlc3Npdmk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS12YWx1ZVwiPmFsIG1hc3NpbW8ge3sgZm9ybWF0QWlFZGl0Q29zdChhaUVkaXRDb3N0U3Vic2VxdWVudEV1cikgfX1cclxuICAgICAgICAgICAgICAgICAg4oKsPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhaUNvc3RTcGxpdExpbmVzPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+e3sgYWlFZGl0U3BsaXRDb3VudCB9fSBwYXJ0aSBwYXJhbGxlbGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS12YWx1ZVwiPmFsIG1hc3NpbW8ge3sgZm9ybWF0QWlFZGl0Q29zdChhaUVkaXRDb3N0Rmlyc3RFdXIpIH19IOKCrDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1oaW50XCI+e3sgYWlFZGl0U3BsaXRXYXJtVXBBcHBsaWVzXHJcbiAgICAgICAgICAgICAgICA/ICdJbCBzZXJ2ZXIgc2NhbGRhIGxhIGNhY2hlIHByaW1hIGRlbGxvIHNwbGl0OiByaXNwYXJtaW8gc3UgJyArIGFpRWRpdFNwbGl0Q291bnQgKyAnIGNoaWFtYXRlJ1xyXG4gICAgICAgICAgICAgICAgOiAnU3BsaXQgdHJvcHBvIHBpY2NvbG8gcGVyIGxhIGNhY2hlOiBuZXNzdW4gYmVuZWZpY2lvLCBwcmV6em8gcGllbm8gc3UgJyArIGFpRWRpdFNwbGl0Q291bnQgKyAnXHJcbiAgICAgICAgICAgICAgICBjaGlhbWF0ZScgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLXNwbGl0XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk51bWVybyBkaSBzcGxpdCBpcG90aXp6YXRpIHBlciBsYSBzdGltYSAoMSA9IG5lc3N1bm8gc3BsaXQsIGFsdHJpbWVudGkgMy0xMjogaWwgc2VydmVyIG5vbiB1c2EgbWFpIDIgc3BsaXQpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1zcGxpdC1sYWJlbFwiPlNwbGl0PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1zcGxpdC1zdGVwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWJ0blwiIFtkaXNhYmxlZF09XCJhaUVkaXRTcGxpdENvdW50IDw9IDFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwibWludXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWlucHV0XCIgWyhuZ01vZGVsKV09XCJhaUVkaXRTcGxpdENvdW50XCIgbWluPVwiMVwiIG1heD1cIjEyXCIgLz5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWNvc3Qtc3BsaXQtYnRuXCIgW2Rpc2FibGVkXT1cImFpRWRpdFNwbGl0Q291bnQgPj0gMTJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICAgIDwhLS0gUGFubmVsbG8gc3RvcmljbyByaWNoaWVzdGUgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWlQcm9tcHRIaXN0b3J5ICYmIGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCIgY2xhc3M9XCJhaS1oaXN0b3J5LXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIiBuYW1lPVwiaGlzdG9yeVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5TdG9yaWNvIHJpY2hpZXN0ZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1saXN0XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9tcHQgb2YgYWlQcm9tcHRIaXN0b3J5OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJhaS1oaXN0b3J5LWl0ZW1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1oaXN0b3J5LWluZGV4XCI+e3sgaSArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS10ZXh0XCI+e3sgcHJvbXB0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cInAtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiIHN0eWxlPVwiZ2FwOiA4cHhcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiAoY2xpY2spPVwiY2xvc2VBaUVkaXREaWFsb2coKVwiPlxyXG4gICAgICAgIEFubnVsbGFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhYWlFZGl0UHJvbXB0Py50cmltKCkgfHwgYWlFZGl0TG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbmRBaUVkaXQoKVwiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRWRpdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE4XCJcclxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6IDZweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgPHNwYW4+e3sgYWlFZGl0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogKGlzTmV3Rm9ybSA/ICdDcmVhIGNvbiBBSScgOiAnTW9kaWZpY2EgY29uIEFJJykgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVklTVUFMIEVESVRPUiDigJQgVG9vbHRpcCBhemlvbmkgY2FtcG8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVmVUb29sdGlwPlxyXG4gIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLXBhbmVsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1oZWFkZXJcIj5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gdmUtdG9vbHRpcC1pY29uXCIgbmFtZT1cImVkaXRcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInZlLXRvb2x0aXAtdGl0bGVcIj57eyB2ZVNlbGVjdGVkRmllbGQ/LkRlc2NyaXB0aW9uIH19PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2ZVNob3dHcmFwaGljSW5wdXRcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZUVkaXRGaWVsZCgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwic2V0dGluZ3NcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIE1vZGlmaWNhIGNhbXBvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnRcIiAoY2xpY2spPVwidmVBaUVkaXQoKVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIE1vZGlmaWNhIGNvbiBJQVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCJcclxuICAgICAgICAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gdHJ1ZVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBhbGV0dGVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIFN1Z2dlcmlzY2kgR3JhZmljYVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZU9wZW5SZW9yZGVyKClcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJncmlwLXZlcnRpY2FsXCI+PC90bXctaWNvbj5cclxuICAgICAgICBSaW9yZGluYVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZVN0YXJ0U3dhcCgpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiYXJyb3dzLWxlZnQtcmlnaHRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIFNjYW1iaWFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInZlRGVsZXRlRmllbGQoKVwiIHN0eWxlPVwiY29sb3I6ICNlNTM5MzU7XCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBzdHlsZT1cImNvbG9yOiAjZTUzOTM1O1wiIG5hbWU9XCJ0cmFzaFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgRWxpbWluYSBjYW1wb1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLWdyYXBoaWNcIiAqbmdJZj1cInZlU2hvd0dyYXBoaWNJbnB1dFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1ncmFwaGljLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2ZVNob3dHcmFwaGljSW5wdXQgPSBmYWxzZTsgdmVBcHBseVRvQWxsT2ZUeXBlID0gZmFsc2VcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImFycm93LWxlZnRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+R3JhZmljYSBwZXIgXCJ7eyB2ZVNlbGVjdGVkRmllbGQ/LkxhYmVsIH19XCI8L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplVmVIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImJ1bGJcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+U3VnZ2VyaW1lbnRvIGdyYWZpY288L21hdC1sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJ2ZUdyYXBoaWNIaW50XCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIHJvd3M9XCIzXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIGJvcmRvIGJsdSwgc2ZvbmRvIHNlbWktdHJhc3BhcmVudGUsIGV0aWNoZXR0YSBpbiBncmFzc2V0dG8uLi5cIj48L3RleHRhcmVhPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmUtYXBwbHktYWxsLXJvd1wiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwidmVBcHBseVRvQWxsT2ZUeXBlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgQXBwbGljYSBhIHR1dHRpIGkgPHN0cm9uZz57eyB2ZVNlbGVjdGVkRmllbGRUeXBlTmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLWdyYXBoaWMtYWN0aW9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7IHZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlXCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInZlU2VuZEdyYXBoaWMoKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICBJbnZpYVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBWSVNVQUwgRURJVE9SIOKAlCBSaW9yZGluYSBjYW1waSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dWZVJlb3JkZXI+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwidmUtcmVvcmRlci1jYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmUtcmVvcmRlci1oZWFkZXJcIj5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiZ3JpcC12ZXJ0aWNhbFwiPjwvdG13LWljb24+XHJcbiAgICAgIDxzcGFuPlJpb3JkaW5hIGNhbXBpPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uVmVEcmFnRHJvcFJlb3JkZXIoJGV2ZW50KVwiIGNsYXNzPVwidmUtcmVvcmRlci1saXN0XCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdmVSZW9yZGVyRmllbGRzXCIgY2RrRHJhZyBjbGFzcz1cInZlLXJlb3JkZXItaXRlbVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gdmUtZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlIG5hbWU9XCJncmlwLXZlcnRpY2FsXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuPnt7IGZpZWxkLkRlc2NyaXB0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZlLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBzdHlsZT1cImdhcDogOHB4XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nVmVSZW9yZGVyUmVmPy5jbG9zZSgpXCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ2ZUFwcGx5UmVvcmRlcigpXCI+T0s8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERJQUxPRyBDT05URVNUVUFMSVpaQVpJT05FIERCR0VUVEVSIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0NvbnRlc3R1YWxpemF0aW9uPlxyXG4gIDxtYXQtY2FyZCBzdHlsZT1cIm1pbi13aWR0aDogNDIwcHhcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPkNvbnRlc3R1YWxpenphemlvbmUgZGVsIERCR2V0dGVyPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgPHRtdy1zZWxlY3QgW2FycmF5RGF0YV09XCJjb250ZXN0dWFsaXphdGlvblwiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uXCJcclxuICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIlxyXG4gICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db250ZXN0dWFsaXphdGlvblNlbGVjdCgpXCIgW3BsYWNlaG9sZGVyXT1cIidDb250ZXN0dWFsaXp6YXppb25lIGRlbCBEQkdldHRlcidcIlxyXG4gICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPjwvdG13LXNlbGVjdD5cclxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24gIT0gbnVsbFwiIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblZhbHVlXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25Db250ZXN0dWFsaXphdGlvblNlbGVjdFZhbHVlKClcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyIGNsYXNzPVwicC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgc3R5bGU9XCJnYXA6IDhweFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseUNvbnRlc3R1YWxpemF0aW9uKG51bGwpOyBjbG9zZUNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKClcIj5SaW11b3ZpPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseUNvbnRlc3R1YWxpemF0aW9uKGNvbnRlc3R1YWxpemF0aW9uKTsgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+QXBwbGljYTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gTU9EQUxFIFNUT1JJQ08gUFJPTVBUIEFJIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpSGlzdG9yeT5cclxuICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhaS1kaWFsb2ctaGVhZGVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImhpc3RvcnlcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3Bhbj5TdG9yaWNvIHJpY2hpZXN0ZSBBSTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktaGlzdG9yeS10b2dnbGUtYnRuXCIgKGNsaWNrKT1cImRpYWxvZ0FpSGlzdG9yeVJlZj8uY2xvc2UoKVwiXHJcbiAgICAgICAgbWF0VG9vbHRpcD1cIkNoaXVkaVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWJvZHlcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvbXB0IG9mIGFpUHJvbXB0SGlzdG9yeTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctaXRlbVwiXHJcbiAgICAgICAgW2NsYXNzLmFpLWhpc3RvcnktZGlhbG9nLWl0ZW0tLWxhc3RdPVwiaSA9PT0gYWlQcm9tcHRIaXN0b3J5Lmxlbmd0aCAtIDFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctYmFkZ2VcIj57eyBpICsgMSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1wcm9tcHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0LWxhYmVsXCIgKm5nSWY9XCJpID09PSBhaVByb21wdEhpc3RvcnkubGVuZ3RoIC0gMVwiPlBpw7kgcmVjZW50ZTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0LXRleHRcIj57eyBwcm9tcHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctZm9vdGVyXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaWFsb2dBaUhpc3RvcnlSZWY/LmNsb3NlKClcIj5DaGl1ZGk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBSSBEYXRhR2V0dGVyOiBjYXJpY2FtZW50byBzaWxlbnQgZGVsIFF1ZXJ5RWRpdG9yIHBlciBwb3BvbGFyZSBEYXRhR2V0dGVyVmFsdWUgdmlhIHByb21wdCAtLT5cclxuPGRpdiAqbmdJZj1cImFpRGF0YUdldHRlckxvYWRpbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW5cIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uQWlEYXRhR2V0dGVyT3V0KCRldmVudClcIj48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=