@alfresco/adf-process-services-cloud 6.9.0-9000964813 → 6.9.0-9015612022
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.
- package/esm2020/lib/form/components/form-cloud.component.mjs +20 -14
- package/esm2020/lib/form/components/spinner/form-spinner.component.mjs +34 -0
- package/esm2020/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +74 -12
- package/esm2020/lib/form/components/widgets/data-table/data-table.widget.mjs +1 -1
- package/esm2020/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +4 -1
- package/esm2020/lib/form/form-cloud.module.mjs +14 -5
- package/esm2020/lib/form/services/spinner/form-cloud-spinner.service.mjs +50 -0
- package/esm2020/lib/process/start-process/components/start-process-cloud.component.mjs +15 -7
- package/esm2020/lib/services/notification-cloud.service.mjs +1 -1
- package/fesm2015/adf-process-services-cloud.mjs +248 -90
- package/fesm2015/adf-process-services-cloud.mjs.map +1 -1
- package/fesm2020/adf-process-services-cloud.mjs +247 -90
- package/fesm2020/adf-process-services-cloud.mjs.map +1 -1
- package/lib/form/components/form-cloud.component.d.ts +3 -1
- package/lib/form/components/spinner/form-spinner.component.d.ts +6 -0
- package/lib/form/components/spinner/form-spinner.component.scss +20 -0
- package/lib/form/components/widgets/data-table/data-table-adapter.widget.d.ts +23 -6
- package/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.d.ts +2 -2
- package/lib/form/form-cloud.module.d.ts +12 -10
- package/lib/form/services/spinner/form-cloud-spinner.service.d.ts +10 -0
- package/lib/process/start-process/components/start-process-cloud.component.d.ts +3 -1
- package/package.json +4 -4
|
@@ -24,26 +24,29 @@ import { ConfirmDialogComponent } from '@alfresco/adf-content-services';
|
|
|
24
24
|
import { v4 as uuidGeneration } from 'uuid';
|
|
25
25
|
import { FormCloudDisplayMode } from '../../services/form-fields.interfaces';
|
|
26
26
|
import { DisplayModeService } from '../public-api';
|
|
27
|
+
import { FormCloudSpinnerService } from '../services/spinner/form-cloud-spinner.service';
|
|
27
28
|
import * as i0 from "@angular/core";
|
|
28
29
|
import * as i1 from "../services/form-cloud.service";
|
|
29
30
|
import * as i2 from "@alfresco/adf-core";
|
|
30
31
|
import * as i3 from "@angular/material/dialog";
|
|
31
32
|
import * as i4 from "../public-api";
|
|
32
|
-
import * as i5 from "
|
|
33
|
-
import * as i6 from "@angular/
|
|
34
|
-
import * as i7 from "@angular/material/
|
|
35
|
-
import * as i8 from "@angular/material/
|
|
36
|
-
import * as i9 from "@angular/material/
|
|
37
|
-
import * as i10 from "@angular/
|
|
38
|
-
import * as i11 from "@
|
|
33
|
+
import * as i5 from "../services/spinner/form-cloud-spinner.service";
|
|
34
|
+
import * as i6 from "@angular/common";
|
|
35
|
+
import * as i7 from "@angular/material/button";
|
|
36
|
+
import * as i8 from "@angular/material/card";
|
|
37
|
+
import * as i9 from "@angular/material/icon";
|
|
38
|
+
import * as i10 from "@angular/material/tooltip";
|
|
39
|
+
import * as i11 from "@angular/cdk/a11y";
|
|
40
|
+
import * as i12 from "@ngx-translate/core";
|
|
39
41
|
export class FormCloudComponent extends FormBaseComponent {
|
|
40
|
-
constructor(formCloudService, formService, dialog, visibilityService, displayModeService) {
|
|
42
|
+
constructor(formCloudService, formService, dialog, visibilityService, displayModeService, spinnerService) {
|
|
41
43
|
super();
|
|
42
44
|
this.formCloudService = formCloudService;
|
|
43
45
|
this.formService = formService;
|
|
44
46
|
this.dialog = dialog;
|
|
45
47
|
this.visibilityService = visibilityService;
|
|
46
48
|
this.displayModeService = displayModeService;
|
|
49
|
+
this.spinnerService = spinnerService;
|
|
47
50
|
/** App name to fetch corresponding form and values. */
|
|
48
51
|
this.appName = '';
|
|
49
52
|
/** FormFieldValidator allow to override the form field validators provided. */
|
|
@@ -64,6 +67,7 @@ export class FormCloudComponent extends FormBaseComponent {
|
|
|
64
67
|
this.displayModeOff = new EventEmitter();
|
|
65
68
|
this.subscriptions = [];
|
|
66
69
|
this.onDestroy$ = new Subject();
|
|
70
|
+
this.spinnerService.initSpinnerHandling(this.onDestroy$);
|
|
67
71
|
this.id = uuidGeneration();
|
|
68
72
|
this.formService.formContentClicked.pipe(takeUntil(this.onDestroy$)).subscribe((content) => {
|
|
69
73
|
if (content instanceof UploadWidgetContentLinkModel) {
|
|
@@ -280,8 +284,10 @@ export class FormCloudComponent extends FormBaseComponent {
|
|
|
280
284
|
}
|
|
281
285
|
refreshFormData() {
|
|
282
286
|
this.form = this.parseForm(this.formCloudRepresentationJSON);
|
|
283
|
-
|
|
284
|
-
|
|
287
|
+
if (this.form) {
|
|
288
|
+
this.onFormLoaded(this.form);
|
|
289
|
+
this.onFormDataRefreshed(this.form);
|
|
290
|
+
}
|
|
285
291
|
}
|
|
286
292
|
onFormLoaded(form) {
|
|
287
293
|
if (form) {
|
|
@@ -326,12 +332,12 @@ export class FormCloudComponent extends FormBaseComponent {
|
|
|
326
332
|
return this.displayModeService.findConfiguration(FormCloudDisplayMode[displayMode], this.displayModeConfigurations);
|
|
327
333
|
}
|
|
328
334
|
}
|
|
329
|
-
FormCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormCloudComponent, deps: [{ token: i1.FormCloudService }, { token: i2.FormService }, { token: i3.MatDialog }, { token: i2.WidgetVisibilityService }, { token: i4.DisplayModeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
330
|
-
FormCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormCloudComponent, selector: "adf-cloud-form", inputs: { appName: "appName", appVersion: "appVersion", formId: "formId", processInstanceId: "processInstanceId", form: "form", taskId: "taskId", data: "data", fieldValidators: "fieldValidators", displayModeConfigurations: "displayModeConfigurations" }, outputs: { formSaved: "formSaved", formCompleted: "formCompleted", formLoaded: "formLoaded", formDataRefreshed: "formDataRefreshed", formContentClicked: "formContentClicked", displayModeOn: "displayModeOn", displayModeOff: "displayModeOff" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\">\n </ng-content>\n</div>\n\n<div *ngIf=\"hasForm()\" class=\"adf-cloud-form-container adf-cloud-form-{{displayMode?.toLowerCase() || 'inline'}}-container\">\n <div class=\"adf-cloud-form-content\"\n [cdkTrapFocus]=\"displayMode === 'fullScreen'\"\n cdkTrapFocusAutoCapture>\n\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayMode === 'fullScreen' && findDisplayConfiguration('fullScreen')?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider></adf-toolbar-divider>\n <button class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [matTooltip]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card [class.adf-cloud-form-content-card]=\"displayMode === 'fullScreen'\">\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\"\n *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div *ngIf=\"displayMode !== 'fullScreen' && findDisplayConfiguration('fullScreen')\" class=\"adf-cloud-form-fullscreen-button\">\n <button mat-icon-button (click)=\"switchToDisplayMode('fullScreen')\" [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [matTooltip]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\">\n </adf-form-renderer>\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-form-mat-card-actions\">\n <ng-content select=\"adf-cloud-form-custom-outcomes\"></ng-content>\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button *ngIf=\"outcome.isVisible\" [id]=\"'adf-form-'+ outcome.name | formatSpace\" [color]=\"getColorForOutcome(outcome.name)\"\n mat-button [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding:0;height:100%;width:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-actions{display:flex;justify-content:flex-end}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type:
|
|
335
|
+
FormCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormCloudComponent, deps: [{ token: i1.FormCloudService }, { token: i2.FormService }, { token: i3.MatDialog }, { token: i2.WidgetVisibilityService }, { token: i4.DisplayModeService }, { token: i5.FormCloudSpinnerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
336
|
+
FormCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormCloudComponent, selector: "adf-cloud-form", inputs: { appName: "appName", appVersion: "appVersion", formId: "formId", processInstanceId: "processInstanceId", form: "form", taskId: "taskId", data: "data", fieldValidators: "fieldValidators", displayModeConfigurations: "displayModeConfigurations" }, outputs: { formSaved: "formSaved", formCompleted: "formCompleted", formLoaded: "formLoaded", formDataRefreshed: "formDataRefreshed", formContentClicked: "formContentClicked", displayModeOn: "displayModeOn", displayModeOff: "displayModeOff" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\">\n </ng-content>\n</div>\n\n<div *ngIf=\"hasForm()\" class=\"adf-cloud-form-container adf-cloud-form-{{displayMode?.toLowerCase() || 'inline'}}-container\">\n <div class=\"adf-cloud-form-content\"\n [cdkTrapFocus]=\"displayMode === 'fullScreen'\"\n cdkTrapFocusAutoCapture>\n\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayMode === 'fullScreen' && findDisplayConfiguration('fullScreen')?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider></adf-toolbar-divider>\n <button class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [matTooltip]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card [class.adf-cloud-form-content-card]=\"displayMode === 'fullScreen'\">\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\"\n *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div *ngIf=\"displayMode !== 'fullScreen' && findDisplayConfiguration('fullScreen')\" class=\"adf-cloud-form-fullscreen-button\">\n <button mat-icon-button (click)=\"switchToDisplayMode('fullScreen')\" [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [matTooltip]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\">\n </adf-form-renderer>\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-form-mat-card-actions\">\n <ng-content select=\"adf-cloud-form-custom-outcomes\"></ng-content>\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button *ngIf=\"outcome.isVisible\" [id]=\"'adf-form-'+ outcome.name | formatSpace\" [color]=\"getColorForOutcome(outcome.name)\"\n mat-button [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding:0;height:100%;width:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-actions{display:flex;justify-content:flex-end}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i8.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i8.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i2.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i2.ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: i2.FormRendererComponent, selector: "adf-form-renderer", inputs: ["showDebugButton", "formDefinition"] }, { kind: "directive", type: i11.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i6.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.FormatSpacePipe, name: "formatSpace" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
|
|
331
337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormCloudComponent, decorators: [{
|
|
332
338
|
type: Component,
|
|
333
339
|
args: [{ selector: 'adf-cloud-form', template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\">\n </ng-content>\n</div>\n\n<div *ngIf=\"hasForm()\" class=\"adf-cloud-form-container adf-cloud-form-{{displayMode?.toLowerCase() || 'inline'}}-container\">\n <div class=\"adf-cloud-form-content\"\n [cdkTrapFocus]=\"displayMode === 'fullScreen'\"\n cdkTrapFocusAutoCapture>\n\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayMode === 'fullScreen' && findDisplayConfiguration('fullScreen')?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider></adf-toolbar-divider>\n <button class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [matTooltip]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card [class.adf-cloud-form-content-card]=\"displayMode === 'fullScreen'\">\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\"\n *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div *ngIf=\"displayMode !== 'fullScreen' && findDisplayConfiguration('fullScreen')\" class=\"adf-cloud-form-fullscreen-button\">\n <button mat-icon-button (click)=\"switchToDisplayMode('fullScreen')\" [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [matTooltip]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [matTooltip]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\">\n </adf-form-renderer>\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-form-mat-card-actions\">\n <ng-content select=\"adf-cloud-form-custom-outcomes\"></ng-content>\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button *ngIf=\"outcome.isVisible\" [id]=\"'adf-form-'+ outcome.name | formatSpace\" [color]=\"getColorForOutcome(outcome.name)\"\n mat-button [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding:0;height:100%;width:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-content-card .adf-cloud-form-content-card-container mat-card-actions{display:flex;justify-content:flex-end}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"] }]
|
|
334
|
-
}], ctorParameters: function () { return [{ type: i1.FormCloudService }, { type: i2.FormService }, { type: i3.MatDialog }, { type: i2.WidgetVisibilityService }, { type: i4.DisplayModeService }]; }, propDecorators: { appName: [{
|
|
340
|
+
}], ctorParameters: function () { return [{ type: i1.FormCloudService }, { type: i2.FormService }, { type: i3.MatDialog }, { type: i2.WidgetVisibilityService }, { type: i4.DisplayModeService }, { type: i5.FormCloudSpinnerService }]; }, propDecorators: { appName: [{
|
|
335
341
|
type: Input
|
|
336
342
|
}], appVersion: [{
|
|
337
343
|
type: Input
|
|
@@ -367,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
367
373
|
type: HostListener,
|
|
368
374
|
args: ['keydown', ['$event']]
|
|
369
375
|
}] } });
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBNEIsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLHFCQUFxQixFQUdyQixTQUFTLEVBRVQsNEJBQTRCLEVBQzVCLFNBQVMsRUFDWixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsRUFBRSxJQUFJLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQXFDLE1BQU0sdUNBQXVD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a0JBTDlCLFNBQVM7K0JBQ0ksZ0JBQWdCO2dPQU8xQixPQUFPO3NCQUROLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQU9OLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxjQUFjO3NCQURiLE1BQU07Z0JBNkNQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEZvcm1CYXNlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE1vZGVsLFxuICAgIEZvcm1PdXRjb21lRXZlbnQsXG4gICAgRm9ybU91dGNvbWVNb2RlbCxcbiAgICBXaWRnZXRWaXNpYmlsaXR5U2VydmljZSxcbiAgICBGb3JtU2VydmljZSxcbiAgICBGT1JNX0ZJRUxEX1ZBTElEQVRPUlMsXG4gICAgRm9ybUZpZWxkVmFsaWRhdG9yLFxuICAgIEZvcm1WYWx1ZXMsXG4gICAgRm9ybU1vZGVsLFxuICAgIENvbnRlbnRMaW5rTW9kZWwsXG4gICAgVXBsb2FkV2lkZ2V0Q29udGVudExpbmtNb2RlbCxcbiAgICBGb3JtRXZlbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZvcm1DbG91ZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFza1ZhcmlhYmxlQ2xvdWQgfSBmcm9tICcuLi9tb2RlbHMvdGFzay12YXJpYWJsZS1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi90YXNrL3N0YXJ0LXRhc2svbW9kZWxzL3Rhc2stZGV0YWlscy1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkR2VuZXJhdGlvbiB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRm9ybUNsb3VkRGlzcGxheU1vZGUsIEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGlzcGxheU1vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWNsb3VkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNsb3VkQ29tcG9uZW50IGV4dGVuZHMgRm9ybUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQXBwIG5hbWUgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgYXBwbGljYXRpb24gdmVyc2lvbiB0byB1c2Ugd2hlbiBmZXRjaGluZyBkYXRhICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uPzogbnVtYmVyO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBmb3JtSWQ6IHN0cmluZztcblxuICAgIC8qKiBQcm9jZXNzSW5zdGFuY2VJZCBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogVW5kZXJseWluZyBmb3JtIG1vZGVsIGluc3RhbmNlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybTogRm9ybU1vZGVsO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICB0YXNrSWQ6IHN0cmluZztcblxuICAgIC8qKiBDdXN0b20gZm9ybSB2YWx1ZXMgbWFwIHRvIGJlIHVzZWQgd2l0aCB0aGUgcmVuZGVyZWQgZm9ybS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRhdGE6IFRhc2tWYXJpYWJsZUNsb3VkW107XG5cbiAgICAvKiogRm9ybUZpZWxkVmFsaWRhdG9yIGFsbG93IHRvIG92ZXJyaWRlIHRoZSBmb3JtIGZpZWxkIHZhbGlkYXRvcnMgcHJvdmlkZWQuICovXG4gICAgQElucHV0KClcbiAgICBmaWVsZFZhbGlkYXRvcnM6IEZvcm1GaWVsZFZhbGlkYXRvcltdID0gWy4uLkZPUk1fRklFTERfVkFMSURBVE9SU107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYXZhaWxhYmxlIGRpc3BsYXkgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBmb3JtXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBTYXZlYCBvciBjdXN0b20gb3V0Y29tZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgQ29tcGxldGVgIG91dGNvbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBsb2FkZWQgb3IgcmVsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb3JtIHZhbHVlcyBhcmUgcmVmcmVzaGVkIGR1ZSB0byBhIGRhdGEgcHJvcGVydHkgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1EYXRhUmVmcmVzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvcm0gY29udGVudCBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Db250ZW50Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGVudExpbmtNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBkaXNwbGF5IG1vZGUgY29uZmlndXJhdGlvbiBpcyB0dXJuZWQgb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPbiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGRpc3BsYXkgbW9kZSBjb25maWd1cmF0aW9uIGlzIHR1cm5lZCBvZmYuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj4oKTtcblxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTjogYW55O1xuXG4gICAgcHJvdGVjdGVkIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TW9kZTogRm9ybUNsb3VkRGlzcGxheU1vZGU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1DbG91ZFNlcnZpY2U6IEZvcm1DbG91ZFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByb3RlY3RlZCB2aXNpYmlsaXR5U2VydmljZTogV2lkZ2V0VmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1vZGVTZXJ2aWNlOiBEaXNwbGF5TW9kZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5pZCA9IHV1aWRHZW5lcmF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtQ29udGVudENsaWNrZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0Tm9kZUlkVmFsdWVGb3JWaWV3ZXJzTGlua2VkVG9VcGxvYWRXaWRnZXQoY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRGF0YVJlZnJlc2hlZC5uZXh0KG5ldyBGb3JtRXZlbnQodGhpcy5mb3JtKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRlbnRDbGlja2VkLmVtaXQoY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybVZhbHVlc1JlcXVlc3RlZC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlc1RvU2V0SWZOb3RQcmVzZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uYWRkVmFsdWVzTm90UHJlc2VudCh2YWx1ZXNUb1NldElmTm90UHJlc2VudCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybURhdGFSZWZyZXNoZWQodGhpcy5mb3JtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRmllbGRWYWx1ZUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVTYXZlQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuXG4gICAgICAgIGlmIChhcHBOYW1lPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLnRhc2tJZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLmZvcm1JZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1JZCA9IGNoYW5nZXNbJ2Zvcm1JZCddO1xuICAgICAgICBpZiAoZm9ybUlkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgZm9ybUlkLmN1cnJlbnRWYWx1ZSwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGNoYW5nZXNbJ3Rhc2tJZCddO1xuICAgICAgICBpZiAodGFza0lkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRhc2tJZC5jdXJyZW50VmFsdWUsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddO1xuICAgICAgICBpZiAoZGF0YT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtRGF0YSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVJlcHJlc2VudGF0aW9uID0gY2hhbmdlc1snZm9ybSddO1xuICAgICAgICBpZiAoZm9ybVJlcHJlc2VudGF0aW9uPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybSA9IGZvcm1SZXByZXNlbnRhdGlvbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybUxvYWRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIERpc3BsYXlNb2RlU2VydmljZS5kaXNwbGF5TW9kZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY2hhbmdlKSA9PiBjaGFuZ2UuaWQgPT09IHRoaXMuaWQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkaXNwbGF5TW9kZUNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZERpc3BsYXlNb2RlID0gdGhpcy5kaXNwbGF5TW9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlID0gZGlzcGxheU1vZGVDaGFuZ2UuZGlzcGxheU1vZGU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24gPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbihvbGREaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24gPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU1vZGVDaGFuZ2UuZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAob2xkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPy5kaXNwbGF5TW9kZSAhPT0gbmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uPy5kaXNwbGF5TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlT2ZmLmVtaXQob2xkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlT24uZW1pdChuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHVzZXIgY2xpY2tzIGZvcm0gcmVmcmVzaCBidXR0b24uXG4gICAgICovXG4gICAgb25SZWZyZXNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybSgpO1xuICAgIH1cblxuICAgIGxvYWRGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwTmFtZSAmJiB0aGlzLmZvcm1JZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZCh0aGlzLmFwcE5hbWUsIHRoaXMuZm9ybUlkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByb2Nlc3NWYXJpYWJsZXNCeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrVmFyaWFibGVDbG91ZFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFzayhhcHBOYW1lLCB0YXNrSWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRhc2spID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FQcm9jZXNzVGFzayh0YXNrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tWYXJpYWJsZXMoYXBwTmFtZSwgdGFza0lkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNBUHJvY2Vzc1Rhc2sodGFza1JlcHJlc2VudGF0aW9uOiBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbklkICYmIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbkRlcGxveW1lbnRJZCAhPT0gJ251bGwnO1xuICAgIH1cblxuICAgIGdldEZvcm1CeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxGb3JtTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEZvcm1Nb2RlbD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGZvcmtKb2luKHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrRm9ybShhcHBOYW1lLCB0YXNrSWQsIHZlcnNpb24pLCB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTiA9IGRhdGFbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLnByb2Nlc3NWYXJpYWJsZXMgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YVsxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSwgdGhpcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0udmFsaWRhdGVGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5SWQoYXBwTmFtZTogc3RyaW5nLCBmb3JtSWQ6IHN0cmluZywgYXBwVmVyc2lvbj86IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGb3JtKGFwcE5hbWUsIGZvcm1JZCwgYXBwVmVyc2lvbilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuRm9ybSA9IHsgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24sIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uIH07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuRm9ybS5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KHBhcnNlZEZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRGb3JtPy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtID0gcGFyc2VkRm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHNhdmVUYXNrRm9ybSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgICAgIC5zYXZlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhc2tTYXZlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrU2F2ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25TYXZlVGFzayh0aGlzLmlkLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcGxldGVUYXNrRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmNvbmZpcm1NZXNzYWdlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZm9ybS5jb25maXJtTWVzc2FnZS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzQ1MHB4J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlRm9ybShvdXRjb21lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLm9uQ29tcGxldGVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZUZvcm0ob3V0Y29tZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmNvbXBsZXRlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMsIG91dGNvbWUsIHRoaXMuYXBwVmVyc2lvbilcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza0NvbXBsZXRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrQ29tcGxldGVkRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlRm9ybShmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04/OiBhbnkpOiBGb3JtTW9kZWwgfCBudWxsIHtcbiAgICAgICAgaWYgKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTikge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlczogRm9ybVZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgKHRoaXMuZGF0YSB8fCBbXSkuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzW3ZhcmlhYmxlLm5hbWVdID0gdmFyaWFibGUudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtTW9kZWwoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLCBmb3JtVmFsdWVzLCB0aGlzLnJlYWRPbmx5LCB0aGlzLmZvcm1TZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmICghZm9ybSkge1xuICAgICAgICAgICAgICAgIGZvcm0ub3V0Y29tZXMgPSB0aGlzLmdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZFZhbGlkYXRvcnMgJiYgdGhpcy5maWVsZFZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvcm0uZmllbGRWYWxpZGF0b3JzID0gdGhpcy5maWVsZFZhbGlkYXRvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VzdG9tIHNldCBvZiBvdXRjb21lcyBmb3IgYSBGb3JtIERlZmluaXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybSBGb3JtIGRlZmluaXRpb24gbW9kZWwuXG4gICAgICogQHJldHVybnMgbGlzdCBvZiBmb3JtIG91dGNvbWVzXG4gICAgICovXG4gICAgZ2V0Rm9ybURlZmluaXRpb25PdXRjb21lcyhmb3JtOiBGb3JtTW9kZWwpOiBGb3JtT3V0Y29tZU1vZGVsW10ge1xuICAgICAgICByZXR1cm4gW25ldyBGb3JtT3V0Y29tZU1vZGVsKGZvcm0sIHsgaWQ6ICckc2F2ZScsIG5hbWU6IEZvcm1PdXRjb21lTW9kZWwuU0FWRV9BQ1RJT04sIGlzU3lzdGVtOiB0cnVlIH0pXTtcbiAgICB9XG5cbiAgICBjaGVja1Zpc2liaWxpdHkoZmllbGQ6IEZvcm1GaWVsZE1vZGVsKSB7XG4gICAgICAgIGlmIChmaWVsZD8uZm9ybSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5U2VydmljZS5yZWZyZXNoVmlzaWJpbGl0eShmaWVsZC5mb3JtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaEZvcm1EYXRhKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLnBhcnNlRm9ybSh0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTik7XG4gICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkZvcm1Mb2FkZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMgPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5nZXREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlID0gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uuc3dpdGNoVG9EaXNwbGF5TW9kZShcbiAgICAgICAgICAgICAgICB0aGlzLmlkLFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5qc29uLmRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZU9uLmVtaXQodGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24odGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm1Mb2FkZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVJlZnJlc2hlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YVJlZnJlc2hlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tTYXZlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtU2F2ZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrU2F2ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4ZWN1dGVPdXRjb21lKG91dGNvbWU6IEZvcm1PdXRjb21lTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXJncyA9IG5ldyBGb3JtT3V0Y29tZUV2ZW50KG91dGNvbWUpO1xuXG4gICAgICAgIGlmIChhcmdzLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY3V0ZU91dGNvbWUuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuICFhcmdzLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0b3JlRm9ybUFzTWV0YWRhdGEoKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBzd2l0Y2hUb0Rpc3BsYXlNb2RlKG5ld0Rpc3BsYXlNb2RlPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLnN3aXRjaFRvRGlzcGxheU1vZGUodGhpcy5pZCwgRm9ybUNsb3VkRGlzcGxheU1vZGVbbmV3RGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbihkaXNwbGF5TW9kZT86IHN0cmluZyk6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbihGb3JtQ2xvdWREaXNwbGF5TW9kZVtkaXNwbGF5TW9kZV0sIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiFoYXNGb3JtKClcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHktZm9ybV1cIj5cbiAgICA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImhhc0Zvcm0oKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGFpbmVyIGFkZi1jbG91ZC1mb3JtLXt7ZGlzcGxheU1vZGU/LnRvTG93ZXJDYXNlKCkgfHwgJ2lubGluZSd9fS1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudFwiXG4gICAgICAgIFtjZGtUcmFwRm9jdXNdPVwiZGlzcGxheU1vZGUgPT09ICdmdWxsU2NyZWVuJ1wiXG4gICAgICAgIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuXG4gICAgICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRvb2xiYXJcIiAqbmdJZj1cImRpc3BsYXlNb2RlID09PSAnZnVsbFNjcmVlbicgJiYgZmluZERpc3BsYXlDb25maWd1cmF0aW9uKCdmdWxsU2NyZWVuJyk/Lm9wdGlvbnM/LmRpc3BsYXlUb29sYmFyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWZvcm1fX2Zvcm0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19kaXNwbGF5LW5hbWVcIiBbbWF0VG9vbHRpcF09XCJmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Zm9ybS50YXNrTmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybS50YXNrTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snRk9STS5GT1JNX1JFTkRFUkVSLk5BTUVMRVNTX1RBU0snIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyPjwvYWRmLXRvb2xiYXItZGl2aWRlcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLXJpZ2h0LWJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9hZGYtdG9vbGJhcj5cblxuICAgICAgICA8bWF0LWNhcmQgW2NsYXNzLmFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZF09XCJkaXNwbGF5TW9kZSA9PT0gJ2Z1bGxTY3JlZW4nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInNob3dUaXRsZSB8fCBzaG93UmVmcmVzaEJ1dHRvbiB8fCBzaG93VmFsaWRhdGlvbkljb25cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxoND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VmFsaWRhdGlvbkljb25cIiBjbGFzcz1cImFkZi1mb3JtLXZhbGlkYXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJhZGYtdmFsaWQtZm9ybS1pY29uXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5pc1ZhbGlkOyBlbHNlIG5vX3ZhbGlkX2Zvcm1cIj5jaGVja19jaXJjbGU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub192YWxpZF9mb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cImFkZi1pbnZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYWRmLWludmFsaWQtY29sb3JcIj5lcnJvcjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheU1vZGUgIT09ICdmdWxsU2NyZWVuJyAmJiBmaW5kRGlzcGxheUNvbmZpZ3VyYXRpb24oJ2Z1bGxTY3JlZW4nKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tZnVsbHNjcmVlbi1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic3dpdGNoVG9EaXNwbGF5TW9kZSgnZnVsbFNjcmVlbicpXCIgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1JlZnJlc2hCdXR0b25cIiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXJlbG9hZC1idXR0b25cIiBbbWF0VG9vbHRpcF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uUmVmcmVzaENsaWNrZWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNUaXRsZUVuYWJsZWQoKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tdGl0bGVcIiBbbWF0VG9vbHRpcF09XCJmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmb3JtLnRhc2tOYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snRk9STS5GT1JNX1JFTkRFUkVSLk5BTUVMRVNTX1RBU0snIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1mb3JtLWNvbnRhaW5lci1jYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWZvcm0tcmVuZGVyZXIgW2Zvcm1EZWZpbml0aW9uXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICA8L2FkZi1mb3JtLXJlbmRlcmVyPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgKm5nSWY9XCJmb3JtLmhhc091dGNvbWVzKClcIiBjbGFzcz1cImFkZi1mb3JtLW1hdC1jYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtY2xvdWQtZm9ybS1jdXN0b20tb3V0Y29tZXNcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3V0Y29tZSBvZiBmb3JtLm91dGNvbWVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJvdXRjb21lLmlzVmlzaWJsZVwiIFtpZF09XCInYWRmLWZvcm0tJysgb3V0Y29tZS5uYW1lICB8IGZvcm1hdFNwYWNlXCIgW2NvbG9yXT1cImdldENvbG9yRm9yT3V0Y29tZShvdXRjb21lLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cIiFpc091dGNvbWVCdXR0b25FbmFibGVkKG91dGNvbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtZm9ybS1oaWRlLWJ1dHRvbl09XCIhaXNPdXRjb21lQnV0dG9uVmlzaWJsZShvdXRjb21lLCBmb3JtLnJlYWRPbmx5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PdXRjb21lQ2xpY2tlZChvdXRjb21lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tvdXRjb21lLm5hbWUgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBNEIsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLHFCQUFxQixFQUdyQixTQUFTLEVBRVQsNEJBQTRCLEVBQzVCLFNBQVMsRUFDWixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsRUFBRSxJQUFJLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQXFDLE1BQU0sdUNBQXVD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d0IsQ0FBQyxXQUFvQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4SCxDQUFDOzsrR0FuYVEsa0JBQWtCO21HQUFsQixrQkFBa0IsNG9CQ2xEL0IseTNKQW1GQTsyRkRqQ2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGdCQUFnQjtzUUFPMUIsT0FBTztzQkFETixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFPTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sU0FBUztzQkFEUixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQWlEUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZm9ya0pvaW4sIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwsIG1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRNb2RlbCxcbiAgICBGb3JtT3V0Y29tZUV2ZW50LFxuICAgIEZvcm1PdXRjb21lTW9kZWwsXG4gICAgV2lkZ2V0VmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgRm9ybVNlcnZpY2UsXG4gICAgRk9STV9GSUVMRF9WQUxJREFUT1JTLFxuICAgIEZvcm1GaWVsZFZhbGlkYXRvcixcbiAgICBGb3JtVmFsdWVzLFxuICAgIEZvcm1Nb2RlbCxcbiAgICBDb250ZW50TGlua01vZGVsLFxuICAgIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwsXG4gICAgRm9ybUV2ZW50XG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0RldGFpbHNDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay9zdGFydC10YXNrL21vZGVscy90YXNrLWRldGFpbHMtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZEdlbmVyYXRpb24gfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEZvcm1DbG91ZERpc3BsYXlNb2RlLCBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLWZpZWxkcy5pbnRlcmZhY2VzJztcbmltcG9ydCB7IERpc3BsYXlNb2RlU2VydmljZSB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGlubmVyL2Zvcm0tY2xvdWQtc3Bpbm5lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY2xvdWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ2xvdWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBBcHAgbmFtZSB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcE5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFRoZSBhcHBsaWNhdGlvbiB2ZXJzaW9uIHRvIHVzZSB3aGVuIGZldGNoaW5nIGRhdGEgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcFZlcnNpb24/OiBudW1iZXI7XG5cbiAgICAvKiogVGFzayBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcm1JZDogc3RyaW5nO1xuXG4gICAgLyoqIFByb2Nlc3NJbnN0YW5jZUlkIGlkIHRvIGZldGNoIGNvcnJlc3BvbmRpbmcgZm9ybSBhbmQgdmFsdWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcblxuICAgIC8qKiBVbmRlcmx5aW5nIGZvcm0gbW9kZWwgaW5zdGFuY2UuICovXG4gICAgQElucHV0KClcbiAgICBmb3JtOiBGb3JtTW9kZWw7XG5cbiAgICAvKiogVGFzayBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRhc2tJZDogc3RyaW5nO1xuXG4gICAgLyoqIEN1c3RvbSBmb3JtIHZhbHVlcyBtYXAgdG8gYmUgdXNlZCB3aXRoIHRoZSByZW5kZXJlZCBmb3JtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGF0YTogVGFza1ZhcmlhYmxlQ2xvdWRbXTtcblxuICAgIC8qKiBGb3JtRmllbGRWYWxpZGF0b3IgYWxsb3cgdG8gb3ZlcnJpZGUgdGhlIGZvcm0gZmllbGQgdmFsaWRhdG9ycyBwcm92aWRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10gPSBbLi4uRk9STV9GSUVMRF9WQUxJREFUT1JTXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBhdmFpbGFibGUgZGlzcGxheSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGZvcm1cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnM6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbltdO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgYFNhdmVgIG9yIGN1c3RvbSBvdXRjb21lcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb3JtU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Nb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBDb21wbGV0ZWAgb3V0Y29tZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb3JtQ29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIGxvYWRlZCBvciByZWxvYWRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb3JtTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvcm0gdmFsdWVzIGFyZSByZWZyZXNoZWQgZHVlIHRvIGEgZGF0YSBwcm9wZXJ0eSBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybURhdGFSZWZyZXNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Nb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZm9ybSBjb250ZW50IGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbnRlbnRDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDb250ZW50TGlua01vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGRpc3BsYXkgbW9kZSBjb25maWd1cmF0aW9uIGlzIHR1cm5lZCBvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBkaXNwbGF5TW9kZU9uID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZGlzcGxheSBtb2RlIGNvbmZpZ3VyYXRpb24gaXMgdHVybmVkIG9mZi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBkaXNwbGF5TW9kZU9mZiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPigpO1xuXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gICAgbm9kZUlkOiBzdHJpbmc7XG4gICAgZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OOiBhbnk7XG5cbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICByZWFkb25seSBpZDogc3RyaW5nO1xuICAgIGRpc3BsYXlNb2RlOiBGb3JtQ2xvdWREaXNwbGF5TW9kZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUNsb3VkU2VydmljZTogRm9ybUNsb3VkU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlOiBXaWRnZXRWaXNpYmlsaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5TW9kZVNlcnZpY2U6IERpc3BsYXlNb2RlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmluaXRTcGlubmVySGFuZGxpbmcodGhpcy5vbkRlc3Ryb3kkKTtcblxuICAgICAgICB0aGlzLmlkID0gdXVpZEdlbmVyYXRpb24oKTtcblxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1Db250ZW50Q2xpY2tlZC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgVXBsb2FkV2lkZ2V0Q29udGVudExpbmtNb2RlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXROb2RlSWRWYWx1ZUZvclZpZXdlcnNMaW5rZWRUb1VwbG9hZFdpZGdldChjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRm9ybURhdGFSZWZyZXNoZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1EYXRhUmVmcmVzaGVkLm5leHQobmV3IEZvcm1FdmVudCh0aGlzLmZvcm0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udGVudENsaWNrZWQuZW1pdChjb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS51cGRhdGVGb3JtVmFsdWVzUmVxdWVzdGVkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgodmFsdWVzVG9TZXRJZk5vdFByZXNlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRWYWx1ZXNOb3RQcmVzZW50KHZhbHVlc1RvU2V0SWZOb3RQcmVzZW50KTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1GaWVsZFZhbHVlQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZVNhdmVCdXR0b24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGFwcE5hbWUgPSBjaGFuZ2VzWydhcHBOYW1lJ107XG5cbiAgICAgICAgaWYgKGFwcE5hbWU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlUYXNrSWQoYXBwTmFtZS5jdXJyZW50VmFsdWUsIHRoaXMudGFza0lkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5SWQoYXBwTmFtZS5jdXJyZW50VmFsdWUsIHRoaXMuZm9ybUlkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybUlkID0gY2hhbmdlc1snZm9ybUlkJ107XG4gICAgICAgIGlmIChmb3JtSWQ/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5SWQodGhpcy5hcHBOYW1lLCBmb3JtSWQuY3VycmVudFZhbHVlLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFza0lkID0gY2hhbmdlc1sndGFza0lkJ107XG4gICAgICAgIGlmICh0YXNrSWQ/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKHRoaXMuYXBwTmFtZSwgdGFza0lkLmN1cnJlbnRWYWx1ZSwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBjaGFuZ2VzWydkYXRhJ107XG4gICAgICAgIGlmIChkYXRhPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEZvcm1EYXRhKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtUmVwcmVzZW50YXRpb24gPSBjaGFuZ2VzWydmb3JtJ107XG4gICAgICAgIGlmIChmb3JtUmVwcmVzZW50YXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybVJlcHJlc2VudGF0aW9uLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgRGlzcGxheU1vZGVTZXJ2aWNlLmRpc3BsYXlNb2RlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZS5pZCA9PT0gdGhpcy5pZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXlNb2RlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkRGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKG9sZERpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlICE9PSBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPZmYuZW1pdChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdXNlciBjbGlja3MgZm9ybSByZWZyZXNoIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBvblJlZnJlc2hDbGlja2VkKCkge1xuICAgICAgICB0aGlzLmxvYWRGb3JtKCk7XG4gICAgfVxuXG4gICAgbG9hZEZvcm0oKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKHRoaXMuYXBwTmFtZSwgdGhpcy50YXNrSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMuZm9ybUlkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgdGhpcy5mb3JtSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kUHJvY2Vzc1ZhcmlhYmxlc0J5VGFza0lkKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tWYXJpYWJsZUNsb3VkW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrKGFwcE5hbWUsIHRhc2tJZCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodGFzaykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQVByb2Nlc3NUYXNrKHRhc2spKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0FQcm9jZXNzVGFzayh0YXNrUmVwcmVzZW50YXRpb246IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGFza1JlcHJlc2VudGF0aW9uLnByb2Nlc3NEZWZpbml0aW9uSWQgJiYgdGFza1JlcHJlc2VudGF0aW9uLnByb2Nlc3NEZWZpbml0aW9uRGVwbG95bWVudElkICE9PSAnbnVsbCc7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpOiBQcm9taXNlPEZvcm1Nb2RlbD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Rm9ybU1vZGVsPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgZm9ya0pvaW4odGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tGb3JtKGFwcE5hbWUsIHRhc2tJZCwgdmVyc2lvbiksIHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrVmFyaWFibGVzKGFwcE5hbWUsIHRhc2tJZCkpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZGF0YVswXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04ucHJvY2Vzc1ZhcmlhYmxlcyA9IGRhdGFbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhWzFdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRGb3JtID0gdGhpcy5wYXJzZUZvcm0odGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5U2VydmljZS5yZWZyZXNoVmlzaWJpbGl0eShwYXJzZWRGb3JtLCB0aGlzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkRm9ybS52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybSA9IHBhcnNlZEZvcm07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubm9kZUlkID0gJy1teS0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRGb3JtQnlJZChhcHBOYW1lOiBzdHJpbmcsIGZvcm1JZDogc3RyaW5nLCBhcHBWZXJzaW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgLmdldEZvcm0oYXBwTmFtZSwgZm9ybUlkLCBhcHBWZXJzaW9uKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5Gb3JtID0geyAuLi5mb3JtLmZvcm1SZXByZXNlbnRhdGlvbiwgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24uZm9ybURlZmluaXRpb24gfTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZsYXR0ZW5Gb3JtLmZvcm1EZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhdHRlbkZvcm07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGZvcm0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04gPSBmb3JtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRGb3JtID0gdGhpcy5wYXJzZUZvcm0oZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0/LnZhbGlkYXRlRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubm9kZUlkID0gJy1teS0nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9ybUxvYWRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgc2F2ZVRhc2tGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnNhdmVUYXNrRm9ybSh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkLCBgJHt0aGlzLmZvcm0uaWR9YCwgdGhpcy5mb3JtLnZhbHVlcylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza1NhdmVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4gdGhpcy5vblRhc2tTYXZlZEVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5vblNhdmVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wbGV0ZVRhc2tGb3JtKG91dGNvbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybT8uY29uZmlybU1lc3NhZ2U/LnNob3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5mb3JtLmNvbmZpcm1NZXNzYWdlLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNDUwcHgnXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb21wbGV0ZUZvcm0ob3V0Y29tZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25Db21wbGV0ZVRhc2sodGhpcy5pZCwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXBsZXRlRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0gJiYgdGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuY29tcGxldGVUYXNrRm9ybSh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkLCBgJHt0aGlzLmZvcm0uaWR9YCwgdGhpcy5mb3JtLnZhbHVlcywgb3V0Y29tZSwgdGhpcy5hcHBWZXJzaW9uKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25UYXNrQ29tcGxldGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4gdGhpcy5vblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2VGb3JtKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTj86IGFueSk6IEZvcm1Nb2RlbCB8IG51bGwge1xuICAgICAgICBpZiAoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWVzOiBGb3JtVmFsdWVzID0ge307XG4gICAgICAgICAgICAodGhpcy5kYXRhIHx8IFtdKS5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXNbdmFyaWFibGUubmFtZV0gPSB2YXJpYWJsZS52YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Nb2RlbChmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04sIGZvcm1WYWx1ZXMsIHRoaXMucmVhZE9ubHksIHRoaXMuZm9ybVNlcnZpY2UpO1xuICAgICAgICAgICAgaWYgKCFmb3JtKSB7XG4gICAgICAgICAgICAgICAgZm9ybS5vdXRjb21lcyA9IHRoaXMuZ2V0Rm9ybURlZmluaXRpb25PdXRjb21lcyhmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkVmFsaWRhdG9ycyAmJiB0aGlzLmZpZWxkVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9ybS5maWVsZFZhbGlkYXRvcnMgPSB0aGlzLmZpZWxkVmFsaWRhdG9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1c3RvbSBzZXQgb2Ygb3V0Y29tZXMgZm9yIGEgRm9ybSBEZWZpbml0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm0gRm9ybSBkZWZpbml0aW9uIG1vZGVsLlxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgZm9ybSBvdXRjb21lc1xuICAgICAqL1xuICAgIGdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybTogRm9ybU1vZGVsKTogRm9ybU91dGNvbWVNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIFtuZXcgRm9ybU91dGNvbWVNb2RlbChmb3JtLCB7IGlkOiAnJHNhdmUnLCBuYW1lOiBGb3JtT3V0Y29tZU1vZGVsLlNBVkVfQUNUSU9OLCBpc1N5c3RlbTogdHJ1ZSB9KV07XG4gICAgfVxuXG4gICAgY2hlY2tWaXNpYmlsaXR5KGZpZWxkOiBGb3JtRmllbGRNb2RlbCkge1xuICAgICAgICBpZiAoZmllbGQ/LmZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkoZmllbGQuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hGb3JtRGF0YSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5wYXJzZUZvcm0odGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04pO1xuICAgICAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybUxvYWRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtTG9hZGVkKGZvcm06IEZvcm1Nb2RlbCkge1xuICAgICAgICBpZiAoZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zID0gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZ2V0RGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyh0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLnN3aXRjaFRvRGlzcGxheU1vZGUoXG4gICAgICAgICAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uanNvbi5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtTG9hZGVkLmVtaXQoZm9ybSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybURhdGFSZWZyZXNoZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGFSZWZyZXNoZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrU2F2ZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybVNhdmVkLmVtaXQoZm9ybSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVGFza1NhdmVkRXJyb3IoZXJyb3I6IGFueSkge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrQ29tcGxldGVkKGZvcm06IEZvcm1Nb2RlbCkge1xuICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrQ29tcGxldGVkRXJyb3IoZXJyb3I6IGFueSkge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25FeGVjdXRlT3V0Y29tZShvdXRjb21lOiBGb3JtT3V0Y29tZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBuZXcgRm9ybU91dGNvbWVFdmVudChvdXRjb21lKTtcblxuICAgICAgICBpZiAoYXJncy5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4ZWN1dGVPdXRjb21lLmVtaXQoYXJncyk7XG4gICAgICAgIHJldHVybiAhYXJncy5kZWZhdWx0UHJldmVudGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdG9yZUZvcm1Bc01ldGFkYXRhKCkge31cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgc3dpdGNoVG9EaXNwbGF5TW9kZShuZXdEaXNwbGF5TW9kZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKHRoaXMuaWQsIEZvcm1DbG91ZERpc3BsYXlNb2RlW25ld0Rpc3BsYXlNb2RlXSwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBmaW5kRGlzcGxheUNvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGU/OiBzdHJpbmcpOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24oRm9ybUNsb3VkRGlzcGxheU1vZGVbZGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhaGFzRm9ybSgpXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VtcHR5LWZvcm1dXCI+XG4gICAgPC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJoYXNGb3JtKClcIiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRhaW5lciBhZGYtY2xvdWQtZm9ybS17e2Rpc3BsYXlNb2RlPy50b0xvd2VyQ2FzZSgpIHx8ICdpbmxpbmUnfX0tY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnRcIlxuICAgICAgICBbY2RrVHJhcEZvY3VzXT1cImRpc3BsYXlNb2RlID09PSAnZnVsbFNjcmVlbidcIlxuICAgICAgICBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cblxuICAgICAgICA8YWRmLXRvb2xiYXIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS10b29sYmFyXCIgKm5nSWY9XCJkaXNwbGF5TW9kZSA9PT0gJ2Z1bGxTY3JlZW4nICYmIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbignZnVsbFNjcmVlbicpPy5vcHRpb25zPy5kaXNwbGF5VG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19mb3JtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2xvdWQtZm9ybV9fZGlzcGxheS1uYW1lXCIgW21hdFRvb2x0aXBdPVwiZm9ybS50YXNrTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2Zvcm0udGFza05hbWV9fVxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0ZPUk0uRk9STV9SRU5ERVJFUi5OQU1FTEVTU19UQVNLJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlcj48L2FkZi10b29sYmFyLWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1jbG9zZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVG9EaXNwbGF5TW9kZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvYWRmLXRvb2xiYXI+XG5cbiAgICAgICAgPG1hdC1jYXJkIFtjbGFzcy5hZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmRdPVwiZGlzcGxheU1vZGUgPT09ICdmdWxsU2NyZWVuJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJzaG93VGl0bGUgfHwgc2hvd1JlZnJlc2hCdXR0b24gfHwgc2hvd1ZhbGlkYXRpb25JY29uXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1ZhbGlkYXRpb25JY29uXCIgY2xhc3M9XCJhZGYtZm9ybS12YWxpZGF0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiYWRmLXZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uaXNWYWxpZDsgZWxzZSBub192YWxpZF9mb3JtXCI+Y2hlY2tfY2lyY2xlPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9fdmFsaWRfZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJhZGYtaW52YWxpZC1mb3JtLWljb25cIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGFkZi1pbnZhbGlkLWNvbG9yXCI+ZXJyb3I8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlNb2RlICE9PSAnZnVsbFNjcmVlbicgJiYgZmluZERpc3BsYXlDb25maWd1cmF0aW9uKCdmdWxsU2NyZWVuJylcIiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWZ1bGxzY3JlZW4tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInN3aXRjaFRvRGlzcGxheU1vZGUoJ2Z1bGxTY3JlZW4nKVwiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWNsb3VkLWZvcm0tZnVsbHNjcmVlbi1idXR0b24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dSZWZyZXNoQnV0dG9uXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1yZWxvYWQtYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvblJlZnJlc2hDbGlja2VkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzVGl0bGVFbmFibGVkKClcIiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRpdGxlXCIgW21hdFRvb2x0aXBdPVwiZm9ybS50YXNrTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Zm9ybS50YXNrTmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0ZPUk0uRk9STV9SRU5ERVJFUi5OQU1FTEVTU19UQVNLJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtZm9ybS1jb250YWluZXItY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGFkZi1mb3JtLXJlbmRlcmVyIFtmb3JtRGVmaW5pdGlvbl09XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgPC9hZGYtZm9ybS1yZW5kZXJlcj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zICpuZ0lmPVwiZm9ybS5oYXNPdXRjb21lcygpXCIgY2xhc3M9XCJhZGYtZm9ybS1tYXQtY2FyZC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWNsb3VkLWZvcm0tY3VzdG9tLW91dGNvbWVzXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG91dGNvbWUgb2YgZm9ybS5vdXRjb21lc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwib3V0Y29tZS5pc1Zpc2libGVcIiBbaWRdPVwiJ2FkZi1mb3JtLScrIG91dGNvbWUubmFtZSAgfCBmb3JtYXRTcGFjZVwiIFtjb2xvcl09XCJnZXRDb2xvckZvck91dGNvbWUob3V0Y29tZS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uIFtkaXNhYmxlZF09XCIhaXNPdXRjb21lQnV0dG9uRW5hYmxlZChvdXRjb21lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWRmLWZvcm0taGlkZS1idXR0b25dPVwiIWlzT3V0Y29tZUJ1dHRvblZpc2libGUob3V0Y29tZSwgZm9ybS5yZWFkT25seSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3V0Y29tZUNsaWNrZWQob3V0Y29tZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7b3V0Y29tZS5uYW1lIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { Component, Input } from '@angular/core';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@angular/material/progress-spinner";
|
|
20
|
+
import * as i2 from "@ngx-translate/core";
|
|
21
|
+
export class FormSpinnerComponent {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.message = '';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
FormSpinnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
FormSpinnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormSpinnerComponent, selector: "ng-component", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"adf-cloud-form-spinner\">\n <div class=\"adf-cloud-form-spinner-content\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n ></mat-progress-spinner>\n <span class=\"adf-cloud-form-spinner-content-message\">\n {{message | translate}}\n </span>\n </div>\n</div>\n", styles: [".adf-cloud-form-spinner{position:fixed;inset:0;display:flex;place-content:center center}.adf-cloud-form-spinner-content{display:flex;flex-flow:column wrap;place-content:center center;row-gap:25px;align-items:center}.adf-cloud-form-spinner-content-message{font-size:var(--theme-body-4-font-size)}\n"], dependencies: [{ kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormSpinnerComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ template: "<div class=\"adf-cloud-form-spinner\">\n <div class=\"adf-cloud-form-spinner-content\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n ></mat-progress-spinner>\n <span class=\"adf-cloud-form-spinner-content-message\">\n {{message | translate}}\n </span>\n </div>\n</div>\n", styles: [".adf-cloud-form-spinner{position:fixed;inset:0;display:flex;place-content:center center}.adf-cloud-form-spinner-content{display:flex;flex-flow:column wrap;place-content:center center;row-gap:25px;align-items:center}.adf-cloud-form-spinner-content-message{font-size:var(--theme-body-4-font-size)}\n"] }]
|
|
31
|
+
}], propDecorators: { message: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3NwaW5uZXIvZm9ybS1zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3NwaW5uZXIvZm9ybS1zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTWpELE1BQU0sT0FBTyxvQkFBb0I7SUFKakM7UUFLYSxZQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ3pCOztpSEFGWSxvQkFBb0I7cUdBQXBCLG9CQUFvQixvRkN2QmpDLDZXQVdBOzJGRFlhLG9CQUFvQjtrQkFKaEMsU0FBUzs7OEJBS0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tc3Bpbm5lci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TcGlubmVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tc3Bpbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1zcGlubmVyLWNvbnRlbnRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1zcGlubmVyLWNvbnRlbnQtbWVzc2FnZVwiPlxuICAgICAgICAgICAge3ttZXNzYWdlIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -14,28 +14,90 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { ObjectDataTableAdapter } from '@alfresco/adf-core';
|
|
18
|
-
|
|
17
|
+
import { ObjectDataTableAdapter, ObjectDataColumn, ObjectDataRow } from '@alfresco/adf-core';
|
|
18
|
+
import { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';
|
|
19
|
+
export class WidgetDataTableAdapter {
|
|
19
20
|
constructor(data, schema) {
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
21
|
+
this.columnKeys = [];
|
|
22
|
+
this.helper = new DataTablePathParserHelper();
|
|
23
|
+
this.adapter = new ObjectDataTableAdapter(data, schema);
|
|
24
|
+
this.createColumns(schema);
|
|
25
|
+
this.createRows(data);
|
|
26
|
+
}
|
|
27
|
+
get selectedRow() {
|
|
28
|
+
return this.adapter.selectedRow;
|
|
29
|
+
}
|
|
30
|
+
get rowsChanged() {
|
|
31
|
+
return this.adapter.rowsChanged;
|
|
32
|
+
}
|
|
33
|
+
createColumns(schema) {
|
|
34
|
+
if (schema?.length) {
|
|
35
|
+
this.adapter.setColumns(this.buildColumnsFromSchema(schema));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
buildColumnsFromSchema(schema) {
|
|
39
|
+
return schema.map((dataColumn) => {
|
|
40
|
+
this.columnKeys.push(dataColumn.key);
|
|
41
|
+
return new ObjectDataColumn(dataColumn);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
createRows(data) {
|
|
45
|
+
if (data?.length) {
|
|
46
|
+
this.adapter.setRows(data.map((item) => this.buildDataRowFromItem(item)));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
buildDataRowFromItem(item) {
|
|
50
|
+
const rowData = {};
|
|
51
|
+
this.columnKeys.forEach((path, i) => {
|
|
52
|
+
const rowValue = this.extractPropertyValue(this.helper.splitPathIntoProperties(path), item);
|
|
53
|
+
if (rowValue) {
|
|
54
|
+
rowData[this.columnKeys[i]] = rowValue;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return new ObjectDataRow(rowData);
|
|
58
|
+
}
|
|
59
|
+
extractPropertyValue(properties, item) {
|
|
60
|
+
return properties.reduce((acc, property) => (acc ? acc[this.helper.removeSquareBracketsFromProperty(property)] : undefined), item);
|
|
61
|
+
}
|
|
62
|
+
getColumns() {
|
|
63
|
+
return this.adapter.getColumns();
|
|
23
64
|
}
|
|
24
65
|
getRows() {
|
|
25
66
|
if (this.isDataSourceValid()) {
|
|
26
|
-
return this.
|
|
67
|
+
return this.adapter.getRows();
|
|
27
68
|
}
|
|
28
69
|
return [];
|
|
29
70
|
}
|
|
71
|
+
setRows(rows) {
|
|
72
|
+
this.adapter.setRows(rows);
|
|
73
|
+
}
|
|
74
|
+
setColumns(columns) {
|
|
75
|
+
this.adapter.setColumns(columns);
|
|
76
|
+
}
|
|
77
|
+
getValue(row, col, resolverFn) {
|
|
78
|
+
return this.adapter.getValue(row, col, resolverFn);
|
|
79
|
+
}
|
|
80
|
+
getColumnType(row, col) {
|
|
81
|
+
return this.adapter.getColumnType(row, col);
|
|
82
|
+
}
|
|
83
|
+
getSorting() {
|
|
84
|
+
return this.adapter.getSorting();
|
|
85
|
+
}
|
|
86
|
+
setSorting(sorting) {
|
|
87
|
+
this.adapter.setSorting(sorting);
|
|
88
|
+
}
|
|
89
|
+
sort(key, direction) {
|
|
90
|
+
this.adapter.sort(key, direction);
|
|
91
|
+
}
|
|
30
92
|
isDataSourceValid() {
|
|
31
|
-
return this.hasAllColumnsLinkedToData() && this.
|
|
93
|
+
return this.hasAllColumnsLinkedToData() && this.allMandatoryColumnPropertiesHaveValues();
|
|
32
94
|
}
|
|
33
|
-
|
|
34
|
-
return this.
|
|
95
|
+
allMandatoryColumnPropertiesHaveValues() {
|
|
96
|
+
return this.adapter.getColumns().every((column) => !!column.key);
|
|
35
97
|
}
|
|
36
98
|
hasAllColumnsLinkedToData() {
|
|
37
|
-
const availableColumnKeys = this.
|
|
38
|
-
return availableColumnKeys.every(columnKey => this.
|
|
99
|
+
const availableColumnKeys = this.adapter.getColumns().map((column) => column.key);
|
|
100
|
+
return availableColumnKeys.every((columnKey) => this.adapter.getRows().some((row) => Object.keys(row.obj).includes(columnKey)));
|
|
39
101
|
}
|
|
40
102
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWFkYXB0ZXIud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFDSCxzQkFBc0IsRUFHekIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBSzlELFlBQVksSUFBWSxFQUFFLE1BQXFCO1FBQzNDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNwQjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUksSUFBSSxDQUFDLHlDQUF5QyxFQUFFLENBQUM7SUFDaEcsQ0FBQztJQUVPLHlDQUF5QztRQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8seUJBQXlCO1FBQzdCLE1BQU0sbUJBQW1CLEdBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0UsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkgsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIE9iamVjdERhdGFUYWJsZUFkYXB0ZXIsXG4gICAgRGF0YUNvbHVtbixcbiAgICBEYXRhUm93XG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBXaWRnZXREYXRhVGFibGVBZGFwdGVyIGV4dGVuZHMgT2JqZWN0RGF0YVRhYmxlQWRhcHRlciB7XG5cbiAgICBwcml2YXRlIHJvd3M6IERhdGFSb3dbXTtcbiAgICBwcml2YXRlIGNvbHVtbnM6IERhdGFDb2x1bW5bXTtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnlbXSwgc2NoZW1hPzogRGF0YUNvbHVtbltdKSB7XG4gICAgICAgIHN1cGVyKGRhdGEsIHNjaGVtYSk7XG4gICAgICAgIHRoaXMucm93cyA9IHN1cGVyLmdldFJvd3MoKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gc3VwZXIuZ2V0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIGdldFJvd3MoKTogRGF0YVJvd1tdIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpc0RhdGFTb3VyY2VWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQWxsQ29sdW1uc0xpbmtlZFRvRGF0YSgpICYmIHRoaXMuaGFzQWxsTWFuZGF0b3J5Q29sdW1uUHJvcGVydGllc0hhdmVWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0FsbE1hbmRhdG9yeUNvbHVtblByb3BlcnRpZXNIYXZlVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmV2ZXJ5KGNvbHVtbiA9PiAhIWNvbHVtbi5rZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQWxsQ29sdW1uc0xpbmtlZFRvRGF0YSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlQ29sdW1uS2V5czogc3RyaW5nW10gPSB0aGlzLmNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ua2V5KTtcblxuICAgICAgICByZXR1cm4gYXZhaWxhYmxlQ29sdW1uS2V5cy5ldmVyeShjb2x1bW5LZXkgPT4gdGhpcy5yb3dzLnNvbWUocm93ID0+IE9iamVjdC5rZXlzKHJvdy5vYmopLmluY2x1ZGVzKGNvbHVtbktleSkpKTtcbiAgICB9XG59XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWFkYXB0ZXIud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUUsYUFBYSxFQUFpQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3BGLE1BQU0sT0FBTyxzQkFBc0I7SUFhL0IsWUFBWSxJQUFXLEVBQUUsTUFBb0I7UUFYckMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBVzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFiRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFTTyxhQUFhLENBQUMsTUFBb0I7UUFDdEMsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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QUksQ0FBQyxHQUFZLEVBQUUsU0FBa0I7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFFTyxzQ0FBc0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8seUJBQXlCO1FBQzdCLE1BQU0sbUJBQW1CLEdBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBPYmplY3REYXRhVGFibGVBZGFwdGVyLCBEYXRhQ29sdW1uLCBEYXRhUm93LCBPYmplY3REYXRhQ29sdW1uLCBPYmplY3REYXRhUm93LCBEYXRhVGFibGVBZGFwdGVyLCBEYXRhU29ydGluZyB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2RhdGEtdGFibGUtcGF0aC1wYXJzZXIuaGVscGVyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFdpZGdldERhdGFUYWJsZUFkYXB0ZXIgaW1wbGVtZW50cyBEYXRhVGFibGVBZGFwdGVyIHtcbiAgICBwcml2YXRlIGFkYXB0ZXI6IE9iamVjdERhdGFUYWJsZUFkYXB0ZXI7XG4gICAgcHJpdmF0ZSBjb2x1bW5LZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgaGVscGVyID0gbmV3IERhdGFUYWJsZVBhdGhQYXJzZXJIZWxwZXIoKTtcblxuICAgIGdldCBzZWxlY3RlZFJvdygpOiBEYXRhUm93IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5zZWxlY3RlZFJvdztcbiAgICB9XG5cbiAgICBnZXQgcm93c0NoYW5nZWQoKTogU3ViamVjdDxBcnJheTxEYXRhUm93Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJvd3NDaGFuZ2VkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IGFueVtdLCBzY2hlbWE6IERhdGFDb2x1bW5bXSkge1xuICAgICAgICB0aGlzLmFkYXB0ZXIgPSBuZXcgT2JqZWN0RGF0YVRhYmxlQWRhcHRlcihkYXRhLCBzY2hlbWEpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucyhzY2hlbWEpO1xuICAgICAgICB0aGlzLmNyZWF0ZVJvd3MoZGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5zKHNjaGVtYTogRGF0YUNvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIGlmIChzY2hlbWE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLnNldENvbHVtbnModGhpcy5idWlsZENvbHVtbnNGcm9tU2NoZW1hKHNjaGVtYSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZENvbHVtbnNGcm9tU2NoZW1hKHNjaGVtYTogRGF0YUNvbHVtbltdKTogT2JqZWN0RGF0YUNvbHVtbltdIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5tYXAoKGRhdGFDb2x1bW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uS2V5cy5wdXNoKGRhdGFDb2x1bW4ua2V5KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYmplY3REYXRhQ29sdW1uKGRhdGFDb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVJvd3MoZGF0YTogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLnNldFJvd3MoZGF0YS5tYXAoKGl0ZW0pID0+IHRoaXMuYnVpbGREYXRhUm93RnJvbUl0ZW0oaXRlbSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGREYXRhUm93RnJvbUl0ZW0oaXRlbTogYW55KTogT2JqZWN0RGF0YVJvdyB7XG4gICAgICAgIGNvbnN0IHJvd0RhdGEgPSB7fTtcbiAgICAgICAgdGhpcy5jb2x1bW5LZXlzLmZvckVhY2goKHBhdGgsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd1ZhbHVlID0gdGhpcy5leHRyYWN0UHJvcGVydHlWYWx1ZSh0aGlzLmhlbHBlci5zcGxpdFBhdGhJbnRvUHJvcGVydGllcyhwYXRoKSwgaXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChyb3dWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJvd0RhdGFbdGhpcy5jb2x1bW5LZXlzW2ldXSA9IHJvd1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV3IE9iamVjdERhdGFSb3cocm93RGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0UHJvcGVydHlWYWx1ZShwcm9wZXJ0aWVzOiBzdHJpbmdbXSwgaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMucmVkdWNlKChhY2MsIHByb3BlcnR5KSA9PiAoYWNjID8gYWNjW3RoaXMuaGVscGVyLnJlbW92ZVNxdWFyZUJyYWNrZXRzRnJvbVByb3BlcnR5KHByb3BlcnR5KV0gOiB1bmRlZmluZWQpLCBpdGVtKTtcbiAgICB9XG5cbiAgICBnZXRDb2x1bW5zKCk6IEFycmF5PERhdGFDb2x1bW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgZ2V0Um93cygpOiBEYXRhUm93W10ge1xuICAgICAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2VWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldFJvd3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBzZXRSb3dzKHJvd3M6IEFycmF5PERhdGFSb3c+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRSb3dzKHJvd3MpO1xuICAgIH1cblxuICAgIHNldENvbHVtbnMoY29sdW1uczogQXJyYXk8RGF0YUNvbHVtbj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnNldENvbHVtbnMoY29sdW1ucyk7XG4gICAgfVxuXG4gICAgZ2V0VmFsdWUocm93OiBEYXRhUm93LCBjb2w6IERhdGFDb2x1bW4sIHJlc29sdmVyRm4/OiAoX3JvdzogRGF0YVJvdywgX2NvbDogRGF0YUNvbHVtbikgPT4gYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRWYWx1ZShyb3csIGNvbCwgcmVzb2x2ZXJGbik7XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uVHlwZShyb3c6IERhdGFSb3csIGNvbDogRGF0YUNvbHVtbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0Q29sdW1uVHlwZShyb3csIGNvbCk7XG4gICAgfVxuXG4gICAgZ2V0U29ydGluZygpOiBEYXRhU29ydGluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0U29ydGluZygpO1xuICAgIH1cblxuICAgIHNldFNvcnRpbmcoc29ydGluZzogRGF0YVNvcnRpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnNldFNvcnRpbmcoc29ydGluZyk7XG4gICAgfVxuXG4gICAgc29ydChrZXk/OiBzdHJpbmcsIGRpcmVjdGlvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkYXB0ZXIuc29ydChrZXksIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgaXNEYXRhU291cmNlVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FsbENvbHVtbnNMaW5rZWRUb0RhdGEoKSAmJiB0aGlzLmFsbE1hbmRhdG9yeUNvbHVtblByb3BlcnRpZXNIYXZlVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhbGxNYW5kYXRvcnlDb2x1bW5Qcm9wZXJ0aWVzSGF2ZVZhbHVlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRDb2x1bW5zKCkuZXZlcnkoKGNvbHVtbikgPT4gISFjb2x1bW4ua2V5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0FsbENvbHVtbnNMaW5rZWRUb0RhdGEoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUNvbHVtbktleXM6IHN0cmluZ1tdID0gdGhpcy5hZGFwdGVyLmdldENvbHVtbnMoKS5tYXAoKGNvbHVtbikgPT4gY29sdW1uLmtleSk7XG5cbiAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUNvbHVtbktleXMuZXZlcnkoKGNvbHVtbktleSkgPT4gdGhpcy5hZGFwdGVyLmdldFJvd3MoKS5zb21lKChyb3cpID0+IE9iamVjdC5rZXlzKHJvdy5vYmopLmluY2x1ZGVzKGNvbHVtbktleSkpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
107
107
|
'(select)': 'event($event)'
|
|
108
108
|
}, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-data-table-widget-container\">\n <div class=\"adf-data-table-widget-label\">\n <label\n class=\"adf-label\"\n [class.adf-left-label]=\"field.leftLabels\"\n [attr.for]=\"field.id\">\n {{field.name | translate }}\n </label>\n </div>\n\n <ng-container *ngIf=\"!previewState; else previewTemplate\">\n <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\"></adf-datatable>\n\n <error-widget *ngIf=\"dataTableLoadFailed\"\n class=\"adf-data-table-widget-failed-message\"\n required=\"{{ 'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate }}\"></error-widget>\n </ng-container>\n\n <ng-template #previewTemplate>\n <adf-datatable data-automation-id=\"adf-data-table-widget-preview\"></adf-datatable>\n </ng-template>\n</div>\n", styles: [".adf-data-table-widget-failed-message{margin:10px}\n"] }]
|
|
109
109
|
}], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.FormCloudService }]; } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQXFCcEYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUFZekQsWUFBbUIsV0FBd0IsRUFBVSxnQkFBa0M7UUFDbkYsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBREosZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVHZGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUtiLDRCQUF1QixHQUFHLE1BQU0sQ0FBQztRQUNqQyxxQkFBZ0IsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7SUFJM0QsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7UUFFbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWhGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzNCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxXQUFXLENBQUMsOENBQThDLENBQUMsQ0FBQzthQUNwRTtTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBRU8sV0FBVztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDNUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTFELElBQUksUUFBUSxFQUFFO1lBQ1YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQWMsQ0FBQztTQUNqRjtJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQztRQUM1RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7UUFFbEQsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEcsT0FBTyw4QkFBOEIsSUFBSSwyQkFBMkIsQ0FBQztJQUN6RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsU0FBOEIsRUFBRSxZQUFvQjtRQUMvRSxPQUFPLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUEyQixFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLGFBQWEsWUFBWSxFQUFFLElBQUksUUFBUSxFQUFFLElBQUksS0FBSyxZQUFZLENBQUM7WUFDdEksRUFBRSxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDOztxSEE5RVEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isd1dDL0NyQyx1M0JBc0JBLDZHRFFjLFlBQVksa0lBQUUsZUFBZSwyRkFBRSxlQUFlLDRvQkFBRSxjQUFjOzJGQWlCL0Qsd0JBQXdCO2tCQW5CcEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsWUFDL0QsWUFBWSxRQUdoQjt3QkFDRixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLFVBQVUsRUFBRSxlQUFlO3dCQUMzQixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFlBQVksRUFBRSxlQUFlO3dCQUM3QixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFVBQVUsRUFBRSxlQUFlO3FCQUM5QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0Q29tcG9uZW50LCBGb3JtU2VydmljZSwgRGF0YVRhYmxlTW9kdWxlLCBGb3JtQmFzZU1vZHVsZSwgRGF0YVJvdywgRGF0YUNvbHVtbiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0RGF0YVRhYmxlQWRhcHRlciB9IGZyb20gJy4vZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldCc7XG5pbXBvcnQgeyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2RhdGEtdGFibGUtcGF0aC1wYXJzZXIuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgRm9ybUJhc2VNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnZGF0YS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUud2lkZ2V0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUud2lkZ2V0LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZGF0YVNvdXJjZTogV2lkZ2V0RGF0YVRhYmxlQWRhcHRlcjtcbiAgICBkYXRhVGFibGVMb2FkRmFpbGVkID0gZmFsc2U7XG4gICAgcHJldmlld1N0YXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJvd3NEYXRhOiBEYXRhUm93W107XG4gICAgcHJpdmF0ZSBjb2x1bW5zU2NoZW1hOiBEYXRhQ29sdW1uW107XG4gICAgcHJpdmF0ZSB2YXJpYWJsZU5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRSZXNwb25zZVByb3BlcnR5ID0gJ2RhdGEnO1xuICAgIHByaXZhdGUgcGF0aFBhcnNlckhlbHBlciA9IG5ldyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLCBwcml2YXRlIGZvcm1DbG91ZFNlcnZpY2U6IEZvcm1DbG91ZFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFByZXZpZXdTdGF0ZSgpO1xuICAgICAgICB0aGlzLmdldFRhYmxlRGF0YSgpO1xuICAgICAgICB0aGlzLmluaXREYXRhVGFibGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYmxlRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YXJpYWJsZU5hbWUgPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8udmFyaWFibGVOYW1lO1xuICAgICAgICB0aGlzLmNvbHVtbnNTY2hlbWEgPSB0aGlzLmZpZWxkPy5zY2hlbWFEZWZpbml0aW9uO1xuXG4gICAgICAgIHRoaXMuZ2V0Um93c0RhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREYXRhVGFibGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJvd3NEYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBXaWRnZXREYXRhVGFibGVBZGFwdGVyKHRoaXMucm93c0RhdGEsIHRoaXMuY29sdW1uc1NjaGVtYSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UuaXNEYXRhU291cmNlVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdEYXRhIHNvdXJjZSBoYXMgY29ycnVwdGVkIG1vZGVsIG9yIHN0cnVjdHVyZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignRGF0YSBzb3VyY2Ugbm90IGZvdW5kIG9yIGl0IGlzIG5vdCBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dzRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1BhdGggPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc1BhdGggPz8gdGhpcy5kZWZhdWx0UmVzcG9uc2VQcm9wZXJ0eTtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZmllbGQ/LnZhbHVlO1xuICAgICAgICBjb25zdCByb3dzRGF0YSA9IGZpZWxkVmFsdWUgfHwgdGhpcy5nZXREYXRhRnJvbVZhcmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKHJvd3NEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhRnJvbVBhdGggPSB0aGlzLnBhdGhQYXJzZXJIZWxwZXIucmV0cmlldmVEYXRhRnJvbVBhdGgocm93c0RhdGEsIG9wdGlvbnNQYXRoKTtcbiAgICAgICAgICAgIHRoaXMucm93c0RhdGEgPSAoZGF0YUZyb21QYXRoPy5sZW5ndGggPyBkYXRhRnJvbVBhdGggOiByb3dzRGF0YSkgYXMgRGF0YVJvd1tdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRhRnJvbVZhcmlhYmxlKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NWYXJpYWJsZXMgPSB0aGlzLmZpZWxkPy5mb3JtPy5wcm9jZXNzVmFyaWFibGVzO1xuICAgICAgICBjb25zdCBmb3JtVmFyaWFibGVzID0gdGhpcy5maWVsZD8uZm9ybT8udmFyaWFibGVzO1xuXG4gICAgICAgIGNvbnN0IHByb2Nlc3NWYXJpYWJsZURyb3Bkb3duT3B0aW9ucyA9IHRoaXMuZ2V0VmFyaWFibGVWYWx1ZUJ5TmFtZShwcm9jZXNzVmFyaWFibGVzLCB0aGlzLnZhcmlhYmxlTmFtZSk7XG4gICAgICAgIGNvbnN0IGZvcm1WYXJpYWJsZURyb3Bkb3duT3B0aW9ucyA9IHRoaXMuZ2V0VmFyaWFibGVWYWx1ZUJ5TmFtZShmb3JtVmFyaWFibGVzLCB0aGlzLnZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NWYXJpYWJsZURyb3Bkb3duT3B0aW9ucyA/PyBmb3JtVmFyaWFibGVEcm9wZG93bk9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYXJpYWJsZVZhbHVlQnlOYW1lKHZhcmlhYmxlczogVGFza1ZhcmlhYmxlQ2xvdWRbXSwgdmFyaWFibGVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGVzPy5maW5kKCh2YXJpYWJsZTogVGFza1ZhcmlhYmxlQ2xvdWQpID0+IHZhcmlhYmxlPy5uYW1lID09PSBgdmFyaWFibGVzLiR7dmFyaWFibGVOYW1lfWAgfHwgdmFyaWFibGU/Lm5hbWUgPT09IHZhcmlhYmxlTmFtZSlcbiAgICAgICAgICAgID8udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcmV2aWV3U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld1N0YXRlID0gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFByZXZpZXdTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMucHJldmlld1N0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZUxvYWRGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy53aWRnZXRFcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1kYXRhLXRhYmxlLXdpZGdldC1sYWJlbFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxhYmVsXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtbGVmdC1sYWJlbF09XCJmaWVsZC5sZWZ0TGFiZWxzXCJcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxuICAgICAgICAgICAgICAgIHt7ZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcmV2aWV3U3RhdGU7IGVsc2UgcHJldmlld1RlbXBsYXRlXCI+XG4gICAgICAgIDxhZGYtZGF0YXRhYmxlIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1kYXRhLXRhYmxlLXdpZGdldFwiIFtkYXRhXT1cImRhdGFTb3VyY2VcIj48L2FkZi1kYXRhdGFibGU+XG5cbiAgICAgICAgPGVycm9yLXdpZGdldCAqbmdJZj1cImRhdGFUYWJsZUxvYWRGYWlsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtZmFpbGVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5EQVRBX1RBQkxFX0xPQURfRkFJTEVEJyB8IHRyYW5zbGF0ZSB9fVwiPjwvZXJyb3Itd2lkZ2V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNwcmV2aWV3VGVtcGxhdGU+XG4gICAgICAgIDxhZGYtZGF0YXRhYmxlIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1kYXRhLXRhYmxlLXdpZGdldC1wcmV2aWV3XCI+PC9hZGYtZGF0YXRhYmxlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQXFCcEYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUFXekQsWUFBbUIsV0FBd0IsRUFBVSxnQkFBa0M7UUFDbkYsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBREosZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVHZGLHdCQUFtQixHQUFHLEtBQUss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QVcsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDOztxSEE3RVEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isd1dDL0NyQyx1M0JBc0JBLDZHRFFjLFlBQVksa0lBQUUsZUFBZSwyRkFBRSxlQUFlLDRvQkFBRSxjQUFjOzJGQWlCL0Qsd0JBQXdCO2tCQW5CcEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsWUFDL0QsWUFBWSxRQUdoQjt3QkFDRixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLFVBQVUsRUFBRSxlQUFlO3dCQUMzQixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFlBQVksRUFBRSxlQUFlO3dCQUM3QixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFVBQVUsRUFBRSxlQUFlO3FCQUM5QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0Q29tcG9uZW50LCBGb3JtU2VydmljZSwgRGF0YVRhYmxlTW9kdWxlLCBGb3JtQmFzZU1vZHVsZSwgRGF0YVJvdywgRGF0YUNvbHVtbiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0RGF0YVRhYmxlQWRhcHRlciB9IGZyb20gJy4vZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldCc7XG5pbXBvcnQgeyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2RhdGEtdGFibGUtcGF0aC1wYXJzZXIuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgRm9ybUJhc2VNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnZGF0YS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUud2lkZ2V0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUud2lkZ2V0LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGRhdGFTb3VyY2U6IFdpZGdldERhdGFUYWJsZUFkYXB0ZXI7XG4gICAgZGF0YVRhYmxlTG9hZEZhaWxlZCA9IGZhbHNlO1xuICAgIHByZXZpZXdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByb3dzRGF0YTogRGF0YVJvd1tdO1xuICAgIHByaXZhdGUgY29sdW1uc1NjaGVtYTogRGF0YUNvbHVtbltdO1xuICAgIHByaXZhdGUgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0UmVzcG9uc2VQcm9wZXJ0eSA9ICdkYXRhJztcbiAgICBwcml2YXRlIHBhdGhQYXJzZXJIZWxwZXIgPSBuZXcgRGF0YVRhYmxlUGF0aFBhcnNlckhlbHBlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSwgcHJpdmF0ZSBmb3JtQ2xvdWRTZXJ2aWNlOiBGb3JtQ2xvdWRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQcmV2aWV3U3RhdGUoKTtcbiAgICAgICAgdGhpcy5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgdGhpcy5pbml0RGF0YVRhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJsZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/LnZhcmlhYmxlTmFtZTtcbiAgICAgICAgdGhpcy5jb2x1bW5zU2NoZW1hID0gdGhpcy5maWVsZD8uc2NoZW1hRGVmaW5pdGlvbjtcblxuICAgICAgICB0aGlzLmdldFJvd3NEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YVRhYmxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yb3dzRGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgV2lkZ2V0RGF0YVRhYmxlQWRhcHRlcih0aGlzLnJvd3NEYXRhLCB0aGlzLmNvbHVtbnNTY2hlbWEpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmlzRGF0YVNvdXJjZVZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignRGF0YSBzb3VyY2UgaGFzIGNvcnJ1cHRlZCBtb2RlbCBvciBzdHJ1Y3R1cmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ0RhdGEgc291cmNlIG5vdCBmb3VuZCBvciBpdCBpcyBub3QgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um93c0RhdGEoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNQYXRoID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/Lm9wdGlvbnNQYXRoID8/IHRoaXMuZGVmYXVsdFJlc3BvbnNlUHJvcGVydHk7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLmZpZWxkPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgcm93c0RhdGEgPSBmaWVsZFZhbHVlIHx8IHRoaXMuZ2V0RGF0YUZyb21WYXJpYWJsZSgpO1xuXG4gICAgICAgIGlmIChyb3dzRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyb21QYXRoID0gdGhpcy5wYXRoUGFyc2VySGVscGVyLnJldHJpZXZlRGF0YUZyb21QYXRoKHJvd3NEYXRhLCBvcHRpb25zUGF0aCk7XG4gICAgICAgICAgICB0aGlzLnJvd3NEYXRhID0gKGRhdGFGcm9tUGF0aD8ubGVuZ3RoID8gZGF0YUZyb21QYXRoIDogcm93c0RhdGEpIGFzIERhdGFSb3dbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YUZyb21WYXJpYWJsZSgpOiBhbnkge1xuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVzID0gdGhpcy5maWVsZD8uZm9ybT8ucHJvY2Vzc1ZhcmlhYmxlcztcbiAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlcyA9IHRoaXMuZmllbGQ/LmZvcm0/LnZhcmlhYmxlcztcblxuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVEcm9wZG93bk9wdGlvbnMgPSB0aGlzLmdldFZhcmlhYmxlVmFsdWVCeU5hbWUocHJvY2Vzc1ZhcmlhYmxlcywgdGhpcy52YXJpYWJsZU5hbWUpO1xuICAgICAgICBjb25zdCBmb3JtVmFyaWFibGVEcm9wZG93bk9wdGlvbnMgPSB0aGlzLmdldFZhcmlhYmxlVmFsdWVCeU5hbWUoZm9ybVZhcmlhYmxlcywgdGhpcy52YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzVmFyaWFibGVEcm9wZG93bk9wdGlvbnMgPz8gZm9ybVZhcmlhYmxlRHJvcGRvd25PcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFyaWFibGVWYWx1ZUJ5TmFtZSh2YXJpYWJsZXM6IFRhc2tWYXJpYWJsZUNsb3VkW10sIHZhcmlhYmxlTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlcz8uZmluZCgodmFyaWFibGU6IFRhc2tWYXJpYWJsZUNsb3VkKSA9PiB2YXJpYWJsZT8ubmFtZSA9PT0gYHZhcmlhYmxlcy4ke3ZhcmlhYmxlTmFtZX1gIHx8IHZhcmlhYmxlPy5uYW1lID09PSB2YXJpYWJsZU5hbWUpXG4gICAgICAgICAgICA/LnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UHJldmlld1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdTdGF0ZSA9IHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRQcmV2aWV3U3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXZpZXdTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhVGFibGVMb2FkRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWRhdGEtdGFibGUtd2lkZ2V0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtbGFiZWxcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1sYWJlbFwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWxlZnQtbGFiZWxdPVwiZmllbGQubGVmdExhYmVsc1wiXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgICAgICB7e2ZpZWxkLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJldmlld1N0YXRlOyBlbHNlIHByZXZpZXdUZW1wbGF0ZVwiPlxuICAgICAgICA8YWRmLWRhdGF0YWJsZSBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZGF0YS10YWJsZS13aWRnZXRcIiBbZGF0YV09XCJkYXRhU291cmNlXCI+PC9hZGYtZGF0YXRhYmxlPlxuXG4gICAgICAgIDxlcnJvci13aWRnZXQgKm5nSWY9XCJkYXRhVGFibGVMb2FkRmFpbGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWRhdGEtdGFibGUtd2lkZ2V0LWZhaWxlZC1tZXNzYWdlXCJcbiAgICAgICAgICAgIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuREFUQV9UQUJMRV9MT0FEX0ZBSUxFRCcgfCB0cmFuc2xhdGUgfX1cIj48L2Vycm9yLXdpZGdldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlld1RlbXBsYXRlPlxuICAgICAgICA8YWRmLWRhdGF0YWJsZSBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtcHJldmlld1wiPjwvYWRmLWRhdGF0YWJsZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|