@alfresco/adf-process-services-cloud 8.1.0-15902121227 → 8.1.0-15928551305
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/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +4 -4
- package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +8 -9
- package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +9 -10
- package/esm2022/lib/form/components/form-cloud.component.mjs +9 -10
- package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +7 -8
- package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +5 -6
- package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +6 -7
- package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +9 -10
- package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +8 -9
- package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +7 -8
- package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +5 -6
- package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +8 -9
- package/esm2022/lib/group/components/group-cloud.component.mjs +13 -14
- package/esm2022/lib/people/components/people-cloud.component.mjs +13 -14
- package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +11 -12
- package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +10 -11
- package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +6 -7
- package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +4 -5
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +13 -14
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +15 -16
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +15 -16
- package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +6 -7
- package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +8 -9
- package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +8 -9
- package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +5 -6
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +7 -8
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +5 -6
- package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +5 -6
- package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +5 -6
- package/fesm2022/adf-process-services-cloud.mjs +105 -106
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -27,7 +27,7 @@ import { TasksListDatatableAdapter } from './datatable/task-list-datatable-adapt
|
|
|
27
27
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
28
28
|
import { TaskListRequestSortingModel } from '../../../../models/task-list-sorting.model';
|
|
29
29
|
import { CommonModule } from '@angular/common';
|
|
30
|
-
import {
|
|
30
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
31
31
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
32
32
|
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
33
33
|
import * as i0 from "@angular/core";
|
|
@@ -35,8 +35,7 @@ import * as i1 from "@alfresco/adf-core";
|
|
|
35
35
|
import * as i2 from "../../../services/task-cloud.service";
|
|
36
36
|
import * as i3 from "../../../../services/variable-mapper.sevice";
|
|
37
37
|
import * as i4 from "@angular/common";
|
|
38
|
-
import * as i5 from "@
|
|
39
|
-
import * as i6 from "@angular/material/progress-spinner";
|
|
38
|
+
import * as i5 from "@angular/material/progress-spinner";
|
|
40
39
|
const PRESET_KEY = 'adf-cloud-task-list.presets';
|
|
41
40
|
export class TaskListCloudComponent extends BaseTaskListCloudComponent {
|
|
42
41
|
constructor(taskListCloudService, appConfigService, taskCloudService, userPreferences, cloudPreferenceService, viewModelCreator) {
|
|
@@ -288,7 +287,7 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent {
|
|
|
288
287
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskListCloudComponent, isStandalone: true, selector: "adf-cloud-task-list", inputs: { assignee: "assignee", createdDate: "createdDate", createdFrom: "createdFrom", createdTo: "createdTo", dueDate: "dueDate", lastModifiedFrom: "lastModifiedFrom", lastModifiedTo: "lastModifiedTo", dueDateFrom: "dueDateFrom", dueDateTo: "dueDateTo", id: "id", name: "name", environmentId: "environmentId", parentTaskId: "parentTaskId", processDefinitionName: "processDefinitionName", processDefinitionId: "processDefinitionId", processInstanceId: "processInstanceId", status: "status", owner: "owner", priority: "priority", completedBy: "completedBy", standalone: "standalone", completedDate: "completedDate", completedFrom: "completedFrom", completedTo: "completedTo", candidateGroupId: "candidateGroupId", searchApiMethod: "searchApiMethod", names: "names", assignees: "assignees", statuses: "statuses", processDefinitionNames: "processDefinitionNames", ids: "ids", parentIds: "parentIds", processInstanceIds: "processInstanceIds", processNames: "processNames", priorities: "priorities", completedByUsers: "completedByUsers", processVariableFilters: "processVariableFilters" }, providers: [
|
|
289
288
|
{ provide: DateAdapter, useClass: AdfDateFnsAdapter },
|
|
290
289
|
{ provide: MAT_DATE_FORMATS, useValue: MOMENT_DATE_FORMATS }
|
|
291
|
-
], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!rows\">{{ 'ADF_CLOUD_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n<ng-container *ngIf=\"rows\">\n <adf-datatable\n [rows]=\"rows\"\n [columns]=\"columns\"\n [data]=\"dataAdapter\"\n [loading]=\"isLoading$ | async\"\n [sorting]=\"formattedSorting\"\n [multiselect]=\"multiselect\"\n [selectionMode]=\"selectionMode\"\n [stickyHeader]=\"stickyHeader\"\n [actions]=\"showActions\"\n [actionsPosition]=\"actionsPosition\"\n [contextMenu]=\"showContextMenu\"\n [resolverFn]=\"boundReplacePriorityValues\"\n [showProvidedActions]=\"showProvidedActions\"\n [showMainDatatableActions]=\"showMainDatatableActions\"\n [isResizingEnabled]=\"isResizingEnabled\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (sorting-changed)=\"onSortingChanged($any($event))\"\n (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n >\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n class=\"adf-cloud-task-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n *ngIf=\"!emptyCustomContent\"\n icon=\"assignment\"\n [title]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n\n <adf-main-menu-datatable-template>\n <ng-template let-mainMenuTrigger>\n <adf-datatable-column-selector\n [columns]=\"columns\"\n [mainMenuTrigger]=\"mainMenuTrigger\"\n (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n </ng-template>\n </adf-main-menu-datatable-template>\n </adf-datatable>\n</ng-container>\n", styles: [".adf-cloud-task-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: ColumnsSelectorComponent, selector: "adf-datatable-column-selector", inputs: ["columns", "mainMenuTrigger", "columnsSorting", "maxColumnsVisible"], outputs: ["submitColumnsVisibility"] }, { kind: "directive", type: MainMenuDataTableTemplateDirective, selector: "adf-main-menu-datatable-template" }, { kind: "
|
|
290
|
+
], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!rows\">{{ 'ADF_CLOUD_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n<ng-container *ngIf=\"rows\">\n <adf-datatable\n [rows]=\"rows\"\n [columns]=\"columns\"\n [data]=\"dataAdapter\"\n [loading]=\"isLoading$ | async\"\n [sorting]=\"formattedSorting\"\n [multiselect]=\"multiselect\"\n [selectionMode]=\"selectionMode\"\n [stickyHeader]=\"stickyHeader\"\n [actions]=\"showActions\"\n [actionsPosition]=\"actionsPosition\"\n [contextMenu]=\"showContextMenu\"\n [resolverFn]=\"boundReplacePriorityValues\"\n [showProvidedActions]=\"showProvidedActions\"\n [showMainDatatableActions]=\"showMainDatatableActions\"\n [isResizingEnabled]=\"isResizingEnabled\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (sorting-changed)=\"onSortingChanged($any($event))\"\n (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n >\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n class=\"adf-cloud-task-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n *ngIf=\"!emptyCustomContent\"\n icon=\"assignment\"\n [title]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n\n <adf-main-menu-datatable-template>\n <ng-template let-mainMenuTrigger>\n <adf-datatable-column-selector\n [columns]=\"columns\"\n [mainMenuTrigger]=\"mainMenuTrigger\"\n (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n </ng-template>\n </adf-main-menu-datatable-template>\n </adf-datatable>\n</ng-container>\n", styles: [".adf-cloud-task-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: ColumnsSelectorComponent, selector: "adf-datatable-column-selector", inputs: ["columns", "mainMenuTrigger", "columnsSorting", "maxColumnsVisible"], outputs: ["submitColumnsVisibility"] }, { kind: "directive", type: MainMenuDataTableTemplateDirective, selector: "adf-main-menu-datatable-template" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
292
291
|
}
|
|
293
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskListCloudComponent, decorators: [{
|
|
294
293
|
type: Component,
|
|
@@ -296,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
296
295
|
CommonModule,
|
|
297
296
|
ColumnsSelectorComponent,
|
|
298
297
|
MainMenuDataTableTemplateDirective,
|
|
299
|
-
|
|
298
|
+
TranslatePipe,
|
|
300
299
|
EmptyContentComponent,
|
|
301
300
|
NoContentTemplateDirective,
|
|
302
301
|
MatProgressSpinnerModule,
|
|
@@ -387,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
387
386
|
}], processVariableFilters: [{
|
|
388
387
|
type: Input
|
|
389
388
|
}] } });
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWxpc3QvY29tcG9uZW50cy90YXNrLWxpc3QvdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWxpc3QvY29tcG9uZW50cy90YXNrLWxpc3QvdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFB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Z0JBUU4sc0JBQXNCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFkZkRhdGVGbnNBZGFwdGVyLFxuICAgIEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgQ29sdW1uc1NlbGVjdG9yQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBFbXB0eUNvbnRlbnRDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBNYWluTWVudURhdGFUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE1PTUVOVF9EQVRFX0ZPUk1BVFMsXG4gICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgVXNlclByZWZlcmVuY2VzU2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgVGFza0xpc3RSZXF1ZXN0TW9kZWwsIFRhc2tRdWVyeUNsb3VkUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1jbG91ZC1tb2RlbCc7XG5pbXBvcnQgeyBCYXNlVGFza0xpc3RDbG91ZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNrQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGFzay1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRBU0tfTElTVF9DTE9VRF9UT0tFTiwgVEFTS19MSVNUX1BSRUZFUkVOQ0VTX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9jbG91ZC10b2tlbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VDbG91ZFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlLWNsb3VkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYXNrTGlzdENsb3VkU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3Rhc2stbGlzdC1jbG91ZC5zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZhcmlhYmxlTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3ZhcmlhYmxlLW1hcHBlci5zZXZpY2UnO1xuaW1wb3J0IHsgUHJvY2Vzc0xpc3REYXRhQ29sdW1uQ3VzdG9tRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9kYXRhLWNvbHVtbi1jdXN0b20tZGF0YSc7XG5pbXBvcnQgeyBUYXNrQ2xvdWRNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy90YXNrLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFBhZ2luYXRlZEVudHJpZXMgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFRhc2tJbnN0YW5jZUNsb3VkTGlzdFZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90YXNrLWNsb3VkLXZpZXcubW9kZWwnO1xuaW1wb3J0IHsgVGFza3NMaXN0RGF0YXRhYmxlQWRhcHRlciB9IGZyb20gJy4vZGF0YXRhYmxlL3Rhc2stbGlzdC1kYXRhdGFibGUtYWRhcHRlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUYXNrTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvdGFzay1saXN0LXNvcnRpbmcubW9kZWwnO1xuaW1wb3J0IHsgUHJvY2Vzc1ZhcmlhYmxlRmlsdGVyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcHJvY2Vzcy12YXJpYWJsZS1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5jb25zdCBQUkVTRVRfS0VZID0gJ2FkZi1jbG91ZC10YXNrLWxpc3QucHJlc2V0cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXRhc2stbGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQ29sdW1uc1NlbGVjdG9yQ29tcG9uZW50LFxuICAgICAgICBNYWluTWVudURhdGFUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIEVtcHR5Q29udGVudENvbXBvbmVudCxcbiAgICAgICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgRGF0YVRhYmxlQ29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEFkZkRhdGVGbnNBZGFwdGVyIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTUVOVF9EQVRFX0ZPUk1BVFMgfVxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stbGlzdC1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYXNrTGlzdENsb3VkQ29tcG9uZW50IGV4dGVuZHMgQmFzZVRhc2tMaXN0Q2xvdWRDb21wb25lbnQ8UHJvY2Vzc0xpc3REYXRhQ29sdW1uQ3VzdG9tRGF0YT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBhc3NpZ25lZSBvZiB0aGUgcHJvY2Vzcy4gUG9zc2libGUgdmFsdWVzIGFyZTogXCJhc3NpZ25lZVwiICh0aGUgY3VycmVudCB1c2VyIGlzIHRoZSBhc3NpZ25lZSksXG4gICAgICogXCJjYW5kaWRhdGVcIiAodGhlIGN1cnJlbnQgdXNlciBpcyBhIHRhc2sgY2FuZGlkYXRlXCIsIFwiZ3JvdXBfeFwiICh0aGUgdGFzayBpcyBhc3NpZ25lZCB0byBhIGdyb3VwXG4gICAgICogd2hlcmUgdGhlIGN1cnJlbnQgdXNlciBpcyBhIG1lbWJlciwgbm8gdmFsdWUgKHRoZSBjdXJyZW50IHVzZXIgaXMgaW52b2x2ZWQpLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXNzaWduZWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyBjcmVhdGVkIG9uIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3JlYXRlZERhdGU6IERhdGU7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY3JlYXRlZEZyb20gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjcmVhdGVkRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY3JlYXRlZFRvIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3JlYXRlZFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBkdWVEYXRlIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHVlRGF0ZTogRGF0ZTtcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBsYXN0TW9kaWZpZWRGcm9tIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFzdE1vZGlmaWVkRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggbGFzdE1vZGlmaWVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBsYXN0TW9kaWZpZWRUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggZHVlRGF0ZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBkdWVEYXRlRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggZHVlRGF0ZSBsZXNzIG9yIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHVlRGF0ZVRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBpZCBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzIHRvIGRpc3BsYXkgb25seSB0aGUgb25lcyB3aXRoIHRoaXMgZW52aXJvbm1lbnQgSUQuICovXG4gICAgQElucHV0KClcbiAgICBlbnZpcm9ubWVudElkOiBzdHJpbmc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcGFyZW50VGFza0lkIGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudFRhc2tJZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcHJvY2Vzc0RlZmluaXRpb25OYW1lIGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcHJvY2Vzc0RlZmluaXRpb25JZCBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBwcm9jZXNzSW5zdGFuY2VJZCBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggc3RhdHVzIGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1czogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggb3duZXIgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3duZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHByaW9yaXR5IGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByaW9yaXR5OiBudW1iZXI7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY3JlYXRlZEJ5IGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZEJ5OiBudW1iZXI7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRoZSB0YXNrcyB0aGF0IGJlbG9uZyB0byBhIHByb2Nlc3MgaW4gY2FzZSBpcyBmYWxzZSBvciB0YXNrcyB0aGF0IGRvZXNuJ3QgYmVsb25nIHRvIGEgcHJvY2VzcyBpbiBjYXNlIG9mIHRydWUuICovXG4gICAgQElucHV0KClcbiAgICBzdGFuZGFsb25lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY29tcGxldGVkRGF0ZSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZERhdGU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGNvbXBsZXRlZEZyb20gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRGcm9tOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBjb21wbGV0ZWRUbyBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBjYW5kaWRhdGVHcm91cHMgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2FuZGlkYXRlR3JvdXBJZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRnJvbSBBY3Rpdml0aSA4LjcuMCBmb3J3YXJkLCB1c2UgdGhlICdQT1NUJyB2YWx1ZSBhbmQgYXJyYXkgaW5wdXRzIHRvIGVuYWJsZSBhZHZhbmNlZCBmaWx0ZXJpbmcuICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hBcGlNZXRob2Q6ICdHRVQnIHwgJ1BPU1QnID0gJ0dFVCc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBuYW1lcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGFzc2lnbmVlcyB3aG9zZSB1c2VybmFtZXMgYXJlIHByZXNlbnQgaW4gdGhlIGFycmF5LlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXNzaWduZWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcHJvdmlkZWQgc3RhdHVzZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB1bmRlciBwcm9jZXNzZXMgd2l0aCBwcm92aWRlZCBkZWZpbml0aW9uIG5hbWVzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0RlZmluaXRpb25OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIElkcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBwYXJlbnRUYXNrSWRzIG1hdGNoaW5nIGFueSBvZiB0aGUgc3VwcGxpZWQgc3RyaW5ncy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHByb2Nlc3NJbnN0YW5jZUlkcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3MgdW5kZXIgcHJvY2Vzc2VzIHdpdGggcHJvdmlkZWQgbmFtZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBwcm92aWRlZCBwcmlvcml0aWVzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJpb3JpdGllczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyBjb21wbGV0ZWQgYnkgdXNlcnMgd2hvc2UgdXNlcm5hbWVzIGFyZSBwcmVzZW50IGluIHRoZSBhcnJheS5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZEJ5VXNlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3NlcyB3aXRoIHNwZWNpZmljIHByb2Nlc3MgdmFyaWFibGVzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc1ZhcmlhYmxlRmlsdGVyczogUHJvY2Vzc1ZhcmlhYmxlRmlsdGVyTW9kZWxbXTtcblxuICAgIHJvd3M6IFRhc2tJbnN0YW5jZUNsb3VkTGlzdFZpZXdNb2RlbFtdID0gW107XG4gICAgZGF0YUFkYXB0ZXI6IFRhc2tzTGlzdERhdGF0YWJsZUFkYXB0ZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIGlzUmVsb2FkaW5nU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBpc0xvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5pc0xvYWRpbmdQcmVmZXJlbmNlcyQsIHRoaXMuaXNSZWxvYWRpbmdTdWJqZWN0JF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2lzTG9hZGluZ1ByZWZlcmVuY2VzLCBpc1JlbG9hZGluZ10pID0+IGlzTG9hZGluZ1ByZWZlcmVuY2VzIHx8IGlzUmVsb2FkaW5nKVxuICAgICk7XG5cbiAgICBwcml2YXRlIGZldGNoUHJvY2Vzc2VzVHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVEFTS19MSVNUX0NMT1VEX1RPS0VOKSBwdWJsaWMgdGFza0xpc3RDbG91ZFNlcnZpY2U6IFRhc2tMaXN0Q2xvdWRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgICAgICBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICB0YXNrQ2xvdWRTZXJ2aWNlOiBUYXNrQ2xvdWRTZXJ2aWNlLFxuICAgICAgICB1c2VyUHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVEFTS19MSVNUX1BSRUZFUkVOQ0VTX1NFUlZJQ0VfVE9LRU4pIGNsb3VkUHJlZmVyZW5jZVNlcnZpY2U6IFByZWZlcmVuY2VDbG91ZFNlcnZpY2VJbnRlcmZhY2UsXG4gICAgICAgIHByaXZhdGUgdmlld01vZGVsQ3JlYXRvcjogVmFyaWFibGVNYXBwZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGFwcENvbmZpZ1NlcnZpY2UsIHRhc2tDbG91ZFNlcnZpY2UsIHVzZXJQcmVmZXJlbmNlcywgUFJFU0VUX0tFWSwgY2xvdWRQcmVmZXJlbmNlU2VydmljZSk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0xvYWRpbmdQcmVmZXJlbmNlcyQsIHRoaXMuaXNDb2x1bW5TY2hlbWFDcmVhdGVkJCwgdGhpcy5mZXRjaFByb2Nlc3Nlc1RyaWdnZXIkXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmlzUmVsb2FkaW5nU3ViamVjdCQubmV4dCh0cnVlKSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChbaXNMb2FkaW5nUHJlZmVyZW5jZXMsIGlzQ29sdW1uU2NoZW1hQ3JlYXRlZF0pID0+ICFpc0xvYWRpbmdQcmVmZXJlbmNlcyAmJiAhIWlzQ29sdW1uU2NoZW1hQ3JlYXRlZCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQXBpTWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0gdGhpcy5jcmVhdGVUYXNrTGlzdFJlcXVlc3ROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXNrTGlzdENsb3VkU2VydmljZS5mZXRjaFRhc2tMaXN0KHJlcXVlc3ROb2RlKS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdE5vZGUgPSB0aGlzLmNyZWF0ZVJlcXVlc3ROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3ROb2RlID0gcmVxdWVzdE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXNrTGlzdENsb3VkU2VydmljZS5nZXRUYXNrQnlSZXF1ZXN0KHJlcXVlc3ROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAodGFza3M6IHsgbGlzdDogUGFnaW5hdGVkRW50cmllczxUYXNrQ2xvdWRNb2RlbD4gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrc1dpdGhWYXJpYWJsZXMgPSB0YXNrcy5saXN0LmVudHJpZXMubWFwKCh0YXNrKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGFzayxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdGFzay5wcm9jZXNzVmFyaWFibGVzXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd3MgPSB0aGlzLnZpZXdNb2RlbENyZWF0b3IubWFwVmFyaWFibGVzQnlDb2x1bW5UaXRsZSh0YXNrc1dpdGhWYXJpYWJsZXMsIHRoaXMuY29sdW1ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhQWRhcHRlciA9IG5ldyBUYXNrc0xpc3REYXRhdGFibGVBZGFwdGVyKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdCh0YXNrcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWxvYWRpbmdTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLm5leHQodGFza3MubGlzdC5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWxvYWRpbmdTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIHRoaXMuaXNSZWxvYWRpbmdTdWJqZWN0JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmZldGNoUHJvY2Vzc2VzVHJpZ2dlciQubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVGFza0xpc3RSZXF1ZXN0Tm9kZSgpOiBUYXNrTGlzdFJlcXVlc3RNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlOiBUYXNrTGlzdFJlcXVlc3RNb2RlbCA9IHtcbiAgICAgICAgICAgIGFwcE5hbWU6IHRoaXMuYXBwTmFtZSxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICBtYXhJdGVtczogdGhpcy5zaXplLFxuICAgICAgICAgICAgICAgIHNraXBDb3VudDogdGhpcy5za2lwQ291bnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLmdldFRhc2tMaXN0UmVxdWVzdFNvcnRpbmcoKSxcbiAgICAgICAgICAgIG9ubHlTdGFuZGFsb25lOiB0aGlzLnN0YW5kYWxvbmUsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWVzLFxuICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25OYW1lOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uTmFtZXMsXG4gICAgICAgICAgICBpZDogdGhpcy5pZHMsXG4gICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5wYXJlbnRJZHMsXG4gICAgICAgICAgICBwcm9jZXNzTmFtZTogdGhpcy5wcm9jZXNzTmFtZXMsXG4gICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogdGhpcy5wcm9jZXNzSW5zdGFuY2VJZHMsXG4gICAgICAgICAgICBwcmlvcml0eTogdGhpcy5wcmlvcml0aWVzLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c2VzLFxuICAgICAgICAgICAgY29tcGxldGVkQnk6IHRoaXMuY29tcGxldGVkQnlVc2VycyxcbiAgICAgICAgICAgIGFzc2lnbmVlOiB0aGlzLmFzc2lnbmVlcyxcbiAgICAgICAgICAgIGNyZWF0ZWRGcm9tOiB0aGlzLmNyZWF0ZWRGcm9tLFxuICAgICAgICAgICAgY3JlYXRlZFRvOiB0aGlzLmNyZWF0ZWRUbyxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZEZyb206IHRoaXMubGFzdE1vZGlmaWVkRnJvbSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZFRvOiB0aGlzLmxhc3RNb2RpZmllZFRvLFxuICAgICAgICAgICAgZHVlRGF0ZUZyb206IHRoaXMuZHVlRGF0ZUZyb20sXG4gICAgICAgICAgICBkdWVEYXRlVG86IHRoaXMuZHVlRGF0ZVRvLFxuICAgICAgICAgICAgY29tcGxldGVkRnJvbTogdGhpcy5jb21wbGV0ZWRGcm9tLFxuICAgICAgICAgICAgY29tcGxldGVkVG86IHRoaXMuY29tcGxldGVkVG8sXG4gICAgICAgICAgICBwcm9jZXNzVmFyaWFibGVLZXlzOiB0aGlzLmdldFJlcXVlc3ROb2RlVmFyaWFibGVzKCksXG4gICAgICAgICAgICBwcm9jZXNzVmFyaWFibGVGaWx0ZXJzOiB0aGlzLnByb2Nlc3NWYXJpYWJsZUZpbHRlcnMgPz8gW11cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IFRhc2tMaXN0UmVxdWVzdE1vZGVsKHJlcXVlc3ROb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVJlcXVlc3ROb2RlKCk6IFRhc2tRdWVyeUNsb3VkUmVxdWVzdE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdE5vZGUgPSB7XG4gICAgICAgICAgICBhcHBOYW1lOiB0aGlzLmFwcE5hbWUsXG4gICAgICAgICAgICBhc3NpZ25lZTogdGhpcy5hc3NpZ25lZSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgZW52aXJvbm1lbnRJZDogdGhpcy5lbnZpcm9ubWVudElkLFxuICAgICAgICAgICAgcGFyZW50VGFza0lkOiB0aGlzLnBhcmVudFRhc2tJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLm93bmVyLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHRoaXMucHJpb3JpdHksXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRGcm9tOiB0aGlzLmxhc3RNb2RpZmllZEZyb20sXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRUbzogdGhpcy5sYXN0TW9kaWZpZWRUbyxcbiAgICAgICAgICAgIGR1ZURhdGVGcm9tOiB0aGlzLmR1ZURhdGVGcm9tLFxuICAgICAgICAgICAgZHVlRGF0ZVRvOiB0aGlzLmR1ZURhdGVUbyxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICBkdWVEYXRlOiB0aGlzLmR1ZURhdGUsXG4gICAgICAgICAgICBjcmVhdGVkRGF0ZTogdGhpcy5jcmVhdGVkRGF0ZSxcbiAgICAgICAgICAgIGNyZWF0ZWRGcm9tOiB0aGlzLmNyZWF0ZWRGcm9tLFxuICAgICAgICAgICAgY3JlYXRlZFRvOiB0aGlzLmNyZWF0ZWRUbyxcbiAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemUsXG4gICAgICAgICAgICBza2lwQ291bnQ6IHRoaXMuc2tpcENvdW50LFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogdGhpcy5zdGFuZGFsb25lLFxuICAgICAgICAgICAgY29tcGxldGVkQnk6IHRoaXMuY29tcGxldGVkQnksXG4gICAgICAgICAgICBjb21wbGV0ZWRGcm9tOiB0aGlzLmNvbXBsZXRlZEZyb20sXG4gICAgICAgICAgICBjb21wbGV0ZWRUbzogdGhpcy5jb21wbGV0ZWRUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZERhdGU6IHRoaXMuY29tcGxldGVkRGF0ZSxcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyb3VwSWQ6IHRoaXMuY2FuZGlkYXRlR3JvdXBJZCxcbiAgICAgICAgICAgIHZhcmlhYmxlS2V5czogdGhpcy5nZXRSZXF1ZXN0Tm9kZVZhcmlhYmxlcygpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUYXNrUXVlcnlDbG91ZFJlcXVlc3RNb2RlbChyZXF1ZXN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZXF1ZXN0Tm9kZVZhcmlhYmxlcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXllZFZhcmlhYmxlQ29sdW1uczogc3RyaW5nW10gPSAodGhpcy5jb2x1bW5zID8/IFtdKVxuICAgICAgICAgICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4uY3VzdG9tRGF0YT8uY29sdW1uVHlwZSA9PT0gJ3Byb2Nlc3MtdmFyaWFibGUtY29sdW1uJyAmJiBjb2x1bW4uaXNIaWRkZW4gIT09IHRydWUpXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZURlZmluaXRpb25zUGF5bG9hZCA9IGNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZURlZmluaXRpb25zUGF5bG9hZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucmVkdWNlKChhbGxSZXF1ZXN0S2V5cywgcmVxdWVzdEtleXMpID0+IFsuLi5yZXF1ZXN0S2V5cywgLi4uYWxsUmVxdWVzdEtleXNdLCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIGRpc3BsYXllZFZhcmlhYmxlQ29sdW1ucy5sZW5ndGggPyBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYXNrTGlzdFJlcXVlc3RTb3J0aW5nKCk6IFRhc2tMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCB7XG4gICAgICAgIGlmICghdGhpcy5zb3J0aW5nPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFza0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsKHtcbiAgICAgICAgICAgICAgICBvcmRlckJ5OiB0aGlzLmRlZmF1bHRTb3J0aW5nLmtleSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGVmYXVsdFNvcnRpbmcuZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGlzRmllbGRQcm9jZXNzVmFyaWFibGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yZGVyQnkgPSB0aGlzLnNvcnRpbmdbMF0/Lm9yZGVyQnk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuc29ydGluZ1swXT8uZGlyZWN0aW9uO1xuICAgICAgICBjb25zdCBvcmRlckJ5Q29sdW1uID0gdGhpcy5jb2x1bW5MaXN0Py5jb2x1bW5zLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLmtleSA9PT0gb3JkZXJCeSk7XG4gICAgICAgIGNvbnN0IGlzRmllbGRQcm9jZXNzVmFyaWFibGUgPSBvcmRlckJ5Q29sdW1uPy5jdXN0b21EYXRhPy5jb2x1bW5UeXBlID09PSAncHJvY2Vzcy12YXJpYWJsZS1jb2x1bW4nO1xuXG4gICAgICAgIGlmIChpc0ZpZWxkUHJvY2Vzc1ZhcmlhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzRGVmaW5pdGlvbktleSA9IG9yZGVyQnlDb2x1bW4uY3VzdG9tRGF0YS52YXJpYWJsZURlZmluaXRpb25zUGF5bG9hZFswXS5zcGxpdCgnLycpWzBdO1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gb3JkZXJCeUNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkWzBdLnNwbGl0KCcvJylbMV07XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhc2tMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCh7XG4gICAgICAgICAgICAgICAgb3JkZXJCeTogdmFyaWFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBpc0ZpZWxkUHJvY2Vzc1ZhcmlhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NWYXJpYWJsZURhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IG9yZGVyQnlDb2x1bW4uY3VzdG9tRGF0YS52YXJpYWJsZVR5cGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFza0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsKHsgb3JkZXJCeSwgZGlyZWN0aW9uLCBpc0ZpZWxkUHJvY2Vzc1ZhcmlhYmxlOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhcm93c1wiPnt7ICdBREZfQ0xPVURfVEFTS19MSVNULkZJTFRFUlMuTUVTU0FHRVMuTk9ORScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dzXCI+XG4gICAgICAgIDxhZGYtZGF0YXRhYmxlXG4gICAgICAgICAgICBbcm93c109XCJyb3dzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YUFkYXB0ZXJcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cImZvcm1hdHRlZFNvcnRpbmdcIlxuICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgICAgICAgICAgW3N0aWNreUhlYWRlcl09XCJzdGlja3lIZWFkZXJcIlxuICAgICAgICAgICAgW2FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIlxuICAgICAgICAgICAgW2FjdGlvbnNQb3NpdGlvbl09XCJhY3Rpb25zUG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRleHRNZW51XT1cInNob3dDb250ZXh0TWVudVwiXG4gICAgICAgICAgICBbcmVzb2x2ZXJGbl09XCJib3VuZFJlcGxhY2VQcmlvcml0eVZhbHVlc1wiXG4gICAgICAgICAgICBbc2hvd1Byb3ZpZGVkQWN0aW9uc109XCJzaG93UHJvdmlkZWRBY3Rpb25zXCJcbiAgICAgICAgICAgIFtzaG93TWFpbkRhdGF0YWJsZUFjdGlvbnNdPVwic2hvd01haW5EYXRhdGFibGVBY3Rpb25zXCJcbiAgICAgICAgICAgIFtpc1Jlc2l6aW5nRW5hYmxlZF09XCJpc1Jlc2l6aW5nRW5hYmxlZFwiXG4gICAgICAgICAgICAoc2hvd1Jvd0FjdGlvbnNNZW51KT1cIm9uU2hvd1Jvd0FjdGlvbnNNZW51KCRldmVudClcIlxuICAgICAgICAgICAgKHNob3dSb3dDb250ZXh0TWVudSk9XCJvblNob3dSb3dDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChleGVjdXRlUm93QWN0aW9uKT1cIm9uRXhlY3V0ZVJvd0FjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIChyb3ctc2VsZWN0KT1cIm9uUm93U2VsZWN0KCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgKHJvdy11bnNlbGVjdCk9XCJvblJvd1Vuc2VsZWN0KCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGFueSgkZXZlbnQpKVwiXG4gICAgICAgICAgICAocm93LWtleXVwKT1cIm9uUm93S2V5VXAoJGFueSgkZXZlbnQpKVwiXG4gICAgICAgICAgICAoc29ydGluZy1jaGFuZ2VkKT1cIm9uU29ydGluZ0NoYW5nZWQoJGFueSgkZXZlbnQpKVwiXG4gICAgICAgICAgICAoY29sdW1uT3JkZXJDaGFuZ2VkKT1cIm9uQ29sdW1uT3JkZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgKGNvbHVtbnNXaWR0aENoYW5nZWQpPVwib25Db2x1bW5zV2lkdGhDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGFkZi1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNsb3VkLXRhc2stbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIidpbmRldGVybWluYXRlJ1wiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZW1wdHlDdXN0b21Db250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJhc3NpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQURGX0NMT1VEX1RBU0tfTElTVC5MSVNULk1FU1NBR0VTLlRJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FERl9DTE9VRF9UQVNLX0xJU1QuTElTVC5NRVNTQUdFUy5TVUJUSVRMRScgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8YWRmLW1haW4tbWVudS1kYXRhdGFibGUtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tYWluTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZGF0YXRhYmxlLWNvbHVtbi1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFpbk1lbnVUcmlnZ2VyXT1cIm1haW5NZW51VHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0Q29sdW1uc1Zpc2liaWxpdHkpPVwib25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cbiAgICAgICAgPC9hZGYtZGF0YXRhYmxlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWxpc3QvY29tcG9uZW50cy90YXNrLWxpc3QvdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWxpc3QvY29tcG9uZW50cy90YXNrLWxpc3QvdGFzay1saXN0LWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFB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QkFRTixzQkFBc0I7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWRmRGF0ZUZuc0FkYXB0ZXIsXG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBDb2x1bW5zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIEVtcHR5Q29udGVudENvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTU9NRU5UX0RBVEVfRk9STUFUUyxcbiAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBUYXNrTGlzdFJlcXVlc3RNb2RlbCwgVGFza1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLW1vZGVsJztcbmltcG9ydCB7IEJhc2VUYXNrTGlzdENsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS10YXNrLWxpc3QtY2xvdWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc2tDbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90YXNrLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVEFTS19MSVNUX0NMT1VEX1RPS0VOLCBUQVNLX0xJU1RfUFJFRkVSRU5DRVNfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmVyZW5jZUNsb3VkU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3ByZWZlcmVuY2UtY2xvdWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhc2tMaXN0Q2xvdWRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdGFzay1saXN0LWNsb3VkLnNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVmFyaWFibGVNYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdmFyaWFibGUtbWFwcGVyLnNldmljZSc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdERhdGFDb2x1bW5DdXN0b21EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2RhdGEtY29sdW1uLWN1c3RvbS1kYXRhJztcbmltcG9ydCB7IFRhc2tDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Rhc2stY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgUGFnaW5hdGVkRW50cmllcyB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgVGFza0luc3RhbmNlQ2xvdWRMaXN0Vmlld01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Rhc2stY2xvdWQtdmlldy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrc0xpc3REYXRhdGFibGVBZGFwdGVyIH0gZnJvbSAnLi9kYXRhdGFibGUvdGFzay1saXN0LWRhdGF0YWJsZS1hZGFwdGVyJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRhc2tMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy90YXNrLWxpc3Qtc29ydGluZy5tb2RlbCc7XG5pbXBvcnQgeyBQcm9jZXNzVmFyaWFibGVGaWx0ZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9wcm9jZXNzLXZhcmlhYmxlLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5jb25zdCBQUkVTRVRfS0VZID0gJ2FkZi1jbG91ZC10YXNrLWxpc3QucHJlc2V0cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXRhc2stbGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQ29sdW1uc1NlbGVjdG9yQ29tcG9uZW50LFxuICAgICAgICBNYWluTWVudURhdGFUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBFbXB0eUNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgIE5vQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIExvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIERhdGFUYWJsZUNvbXBvbmVudFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBBZGZEYXRlRm5zQWRhcHRlciB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNT01FTlRfREFURV9GT1JNQVRTIH1cbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YXNrLWxpc3QtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stbGlzdC1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDbG91ZENvbXBvbmVudCBleHRlbmRzIEJhc2VUYXNrTGlzdENsb3VkQ29tcG9uZW50PFByb2Nlc3NMaXN0RGF0YUNvbHVtbkN1c3RvbURhdGE+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgYXNzaWduZWUgb2YgdGhlIHByb2Nlc3MuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IFwiYXNzaWduZWVcIiAodGhlIGN1cnJlbnQgdXNlciBpcyB0aGUgYXNzaWduZWUpLFxuICAgICAqIFwiY2FuZGlkYXRlXCIgKHRoZSBjdXJyZW50IHVzZXIgaXMgYSB0YXNrIGNhbmRpZGF0ZVwiLCBcImdyb3VwX3hcIiAodGhlIHRhc2sgaXMgYXNzaWduZWQgdG8gYSBncm91cFxuICAgICAqIHdoZXJlIHRoZSBjdXJyZW50IHVzZXIgaXMgYSBtZW1iZXIsIG5vIHZhbHVlICh0aGUgY3VycmVudCB1c2VyIGlzIGludm9sdmVkKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFzc2lnbmVlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3MgY3JlYXRlZCBvbiB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNyZWF0ZWREYXRlOiBEYXRlO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGNyZWF0ZWRGcm9tIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3JlYXRlZEZyb206IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGNyZWF0ZWRUbyBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNyZWF0ZWRUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggZHVlRGF0ZSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGR1ZURhdGU6IERhdGU7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggbGFzdE1vZGlmaWVkRnJvbSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGxhc3RNb2RpZmllZEZyb206IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGxhc3RNb2RpZmllZFRvIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFzdE1vZGlmaWVkVG86IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGR1ZURhdGUgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHVlRGF0ZUZyb206IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGR1ZURhdGUgbGVzcyBvciBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGR1ZURhdGVUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggaWQgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIGVudmlyb25tZW50IElELiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW52aXJvbm1lbnRJZDogc3RyaW5nO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHBhcmVudFRhc2tJZCBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBwYXJlbnRUYXNrSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHByb2Nlc3NEZWZpbml0aW9uTmFtZSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHByb2Nlc3NEZWZpbml0aW9uSWQgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcHJvY2Vzc0luc3RhbmNlSWQgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHN0YXR1cyBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXM6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIG93bmVyIGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG93bmVyOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBwcmlvcml0eSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBwcmlvcml0eTogbnVtYmVyO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGNyZWF0ZWRCeSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRCeTogbnVtYmVyO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0aGUgdGFza3MgdGhhdCBiZWxvbmcgdG8gYSBwcm9jZXNzIGluIGNhc2UgaXMgZmFsc2Ugb3IgdGFza3MgdGhhdCBkb2Vzbid0IGJlbG9uZyB0byBhIHByb2Nlc3MgaW4gY2FzZSBvZiB0cnVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhbmRhbG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIGNvbXBsZXRlZERhdGUgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWREYXRlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBjb21wbGV0ZWRGcm9tIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tcGxldGVkRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY29tcGxldGVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggY2FuZGlkYXRlR3JvdXBzIGVxdWFsIHRvIHRoZSBzdXBwbGllZCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbmRpZGF0ZUdyb3VwSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlIHRoZSAnUE9TVCcgdmFsdWUgYW5kIGFycmF5IGlucHV0cyB0byBlbmFibGUgYWR2YW5jZWQgZmlsdGVyaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoQXBpTWV0aG9kOiAnR0VUJyB8ICdQT1NUJyA9ICdHRVQnO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggbmFtZXMgbWF0Y2hpbmcgYW55IG9mIHRoZSBzdXBwbGllZCBzdHJpbmdzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBhc3NpZ25lZXMgd2hvc2UgdXNlcm5hbWVzIGFyZSBwcmVzZW50IGluIHRoZSBhcnJheS5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFzc2lnbmVlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgdGFza3MuIERpc3BsYXkgb25seSB0YXNrcyB3aXRoIHByb3ZpZGVkIHN0YXR1c2VzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdHVzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3MgdW5kZXIgcHJvY2Vzc2VzIHdpdGggcHJvdmlkZWQgZGVmaW5pdGlvbiBuYW1lcy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBJZHMgbWF0Y2hpbmcgYW55IG9mIHRoZSBzdXBwbGllZCBzdHJpbmdzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcGFyZW50VGFza0lkcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwYXJlbnRJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3Mgd2l0aCBwcm9jZXNzSW5zdGFuY2VJZHMgbWF0Y2hpbmcgYW55IG9mIHRoZSBzdXBwbGllZCBzdHJpbmdzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHVuZGVyIHByb2Nlc3NlcyB3aXRoIHByb3ZpZGVkIG5hbWVzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSB0YXNrcy4gRGlzcGxheSBvbmx5IHRhc2tzIHdpdGggcHJvdmlkZWQgcHJpb3JpdGllcy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHByaW9yaXRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHRhc2tzLiBEaXNwbGF5IG9ubHkgdGFza3MgY29tcGxldGVkIGJ5IHVzZXJzIHdob3NlIHVzZXJuYW1lcyBhcmUgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRCeVVzZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgd2l0aCBzcGVjaWZpYyBwcm9jZXNzIHZhcmlhYmxlcy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NWYXJpYWJsZUZpbHRlcnM6IFByb2Nlc3NWYXJpYWJsZUZpbHRlck1vZGVsW107XG5cbiAgICByb3dzOiBUYXNrSW5zdGFuY2VDbG91ZExpc3RWaWV3TW9kZWxbXSA9IFtdO1xuICAgIGRhdGFBZGFwdGVyOiBUYXNrc0xpc3REYXRhdGFibGVBZGFwdGVyIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBpc1JlbG9hZGluZ1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgaXNMb2FkaW5nJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNMb2FkaW5nUHJlZmVyZW5jZXMkLCB0aGlzLmlzUmVsb2FkaW5nU3ViamVjdCRdKS5waXBlKFxuICAgICAgICBtYXAoKFtpc0xvYWRpbmdQcmVmZXJlbmNlcywgaXNSZWxvYWRpbmddKSA9PiBpc0xvYWRpbmdQcmVmZXJlbmNlcyB8fCBpc1JlbG9hZGluZylcbiAgICApO1xuXG4gICAgcHJpdmF0ZSBmZXRjaFByb2Nlc3Nlc1RyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRBU0tfTElTVF9DTE9VRF9UT0tFTikgcHVibGljIHRhc2tMaXN0Q2xvdWRTZXJ2aWNlOiBUYXNrTGlzdENsb3VkU2VydmljZUludGVyZmFjZSxcbiAgICAgICAgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgdGFza0Nsb3VkU2VydmljZTogVGFza0Nsb3VkU2VydmljZSxcbiAgICAgICAgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFRBU0tfTElTVF9QUkVGRVJFTkNFU19TRVJWSUNFX1RPS0VOKSBjbG91ZFByZWZlcmVuY2VTZXJ2aWNlOiBQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdNb2RlbENyZWF0b3I6IFZhcmlhYmxlTWFwcGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihhcHBDb25maWdTZXJ2aWNlLCB0YXNrQ2xvdWRTZXJ2aWNlLCB1c2VyUHJlZmVyZW5jZXMsIFBSRVNFVF9LRVksIGNsb3VkUHJlZmVyZW5jZVNlcnZpY2UpO1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNMb2FkaW5nUHJlZmVyZW5jZXMkLCB0aGlzLmlzQ29sdW1uU2NoZW1hQ3JlYXRlZCQsIHRoaXMuZmV0Y2hQcm9jZXNzZXNUcmlnZ2VyJF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5pc1JlbG9hZGluZ1N1YmplY3QkLm5leHQodHJ1ZSkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoW2lzTG9hZGluZ1ByZWZlcmVuY2VzLCBpc0NvbHVtblNjaGVtYUNyZWF0ZWRdKSA9PiAhaXNMb2FkaW5nUHJlZmVyZW5jZXMgJiYgISFpc0NvbHVtblNjaGVtYUNyZWF0ZWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEFwaU1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Tm9kZSA9IHRoaXMuY3JlYXRlVGFza0xpc3RSZXF1ZXN0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFza0xpc3RDbG91ZFNlcnZpY2UuZmV0Y2hUYXNrTGlzdChyZXF1ZXN0Tm9kZSkucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0gdGhpcy5jcmVhdGVSZXF1ZXN0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0Tm9kZSA9IHJlcXVlc3ROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFza0xpc3RDbG91ZFNlcnZpY2UuZ2V0VGFza0J5UmVxdWVzdChyZXF1ZXN0Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKHRhc2tzOiB7IGxpc3Q6IFBhZ2luYXRlZEVudHJpZXM8VGFza0Nsb3VkTW9kZWw+IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFza3NXaXRoVmFyaWFibGVzID0gdGFza3MubGlzdC5lbnRyaWVzLm1hcCgodGFzaykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2ssXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHRhc2sucHJvY2Vzc1ZhcmlhYmxlc1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzID0gdGhpcy52aWV3TW9kZWxDcmVhdG9yLm1hcFZhcmlhYmxlc0J5Q29sdW1uVGl0bGUodGFza3NXaXRoVmFyaWFibGVzLCB0aGlzLmNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgVGFza3NMaXN0RGF0YXRhYmxlQWRhcHRlcih0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodGFza3MpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVsb2FkaW5nU3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHRhc2tzLmxpc3QucGFnaW5hdGlvbik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVsb2FkaW5nU3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVsb2FkKCkge1xuICAgICAgICB0aGlzLmlzUmVsb2FkaW5nU3ViamVjdCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5mZXRjaFByb2Nlc3Nlc1RyaWdnZXIkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRhc2tMaXN0UmVxdWVzdE5vZGUoKTogVGFza0xpc3RSZXF1ZXN0TW9kZWwge1xuICAgICAgICBjb25zdCByZXF1ZXN0Tm9kZTogVGFza0xpc3RSZXF1ZXN0TW9kZWwgPSB7XG4gICAgICAgICAgICBhcHBOYW1lOiB0aGlzLmFwcE5hbWUsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgICAgICBza2lwQ291bnQ6IHRoaXMuc2tpcENvdW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5nZXRUYXNrTGlzdFJlcXVlc3RTb3J0aW5nKCksXG4gICAgICAgICAgICBvbmx5U3RhbmRhbG9uZTogdGhpcy5zdGFuZGFsb25lLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lcyxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWVzLFxuICAgICAgICAgICAgaWQ6IHRoaXMuaWRzLFxuICAgICAgICAgICAgcGFyZW50SWQ6IHRoaXMucGFyZW50SWRzLFxuICAgICAgICAgICAgcHJvY2Vzc05hbWU6IHRoaXMucHJvY2Vzc05hbWVzLFxuICAgICAgICAgICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHRoaXMucHJvY2Vzc0luc3RhbmNlSWRzLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHRoaXMucHJpb3JpdGllcyxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXNlcyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEJ5OiB0aGlzLmNvbXBsZXRlZEJ5VXNlcnMsXG4gICAgICAgICAgICBhc3NpZ25lZTogdGhpcy5hc3NpZ25lZXMsXG4gICAgICAgICAgICBjcmVhdGVkRnJvbTogdGhpcy5jcmVhdGVkRnJvbSxcbiAgICAgICAgICAgIGNyZWF0ZWRUbzogdGhpcy5jcmVhdGVkVG8sXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRGcm9tOiB0aGlzLmxhc3RNb2RpZmllZEZyb20sXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRUbzogdGhpcy5sYXN0TW9kaWZpZWRUbyxcbiAgICAgICAgICAgIGR1ZURhdGVGcm9tOiB0aGlzLmR1ZURhdGVGcm9tLFxuICAgICAgICAgICAgZHVlRGF0ZVRvOiB0aGlzLmR1ZURhdGVUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEZyb206IHRoaXMuY29tcGxldGVkRnJvbSxcbiAgICAgICAgICAgIGNvbXBsZXRlZFRvOiB0aGlzLmNvbXBsZXRlZFRvLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlS2V5czogdGhpcy5nZXRSZXF1ZXN0Tm9kZVZhcmlhYmxlcygpLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlRmlsdGVyczogdGhpcy5wcm9jZXNzVmFyaWFibGVGaWx0ZXJzID8/IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUYXNrTGlzdFJlcXVlc3RNb2RlbChyZXF1ZXN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0Tm9kZSgpOiBUYXNrUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0ge1xuICAgICAgICAgICAgYXBwTmFtZTogdGhpcy5hcHBOYW1lLFxuICAgICAgICAgICAgYXNzaWduZWU6IHRoaXMuYXNzaWduZWUsXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50SWQ6IHRoaXMuZW52aXJvbm1lbnRJZCxcbiAgICAgICAgICAgIHBhcmVudFRhc2tJZDogdGhpcy5wYXJlbnRUYXNrSWQsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25OYW1lLFxuICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25JZDogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHRoaXMucHJvY2Vzc0luc3RhbmNlSWQsXG4gICAgICAgICAgICBvd25lcjogdGhpcy5vd25lcixcbiAgICAgICAgICAgIHByaW9yaXR5OiB0aGlzLnByaW9yaXR5LFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkRnJvbTogdGhpcy5sYXN0TW9kaWZpZWRGcm9tLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkVG86IHRoaXMubGFzdE1vZGlmaWVkVG8sXG4gICAgICAgICAgICBkdWVEYXRlRnJvbTogdGhpcy5kdWVEYXRlRnJvbSxcbiAgICAgICAgICAgIGR1ZURhdGVUbzogdGhpcy5kdWVEYXRlVG8sXG4gICAgICAgICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgICAgICAgZHVlRGF0ZTogdGhpcy5kdWVEYXRlLFxuICAgICAgICAgICAgY3JlYXRlZERhdGU6IHRoaXMuY3JlYXRlZERhdGUsXG4gICAgICAgICAgICBjcmVhdGVkRnJvbTogdGhpcy5jcmVhdGVkRnJvbSxcbiAgICAgICAgICAgIGNyZWF0ZWRUbzogdGhpcy5jcmVhdGVkVG8sXG4gICAgICAgICAgICBtYXhJdGVtczogdGhpcy5zaXplLFxuICAgICAgICAgICAgc2tpcENvdW50OiB0aGlzLnNraXBDb3VudCxcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuc29ydGluZyxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6IHRoaXMuc3RhbmRhbG9uZSxcbiAgICAgICAgICAgIGNvbXBsZXRlZEJ5OiB0aGlzLmNvbXBsZXRlZEJ5LFxuICAgICAgICAgICAgY29tcGxldGVkRnJvbTogdGhpcy5jb21wbGV0ZWRGcm9tLFxuICAgICAgICAgICAgY29tcGxldGVkVG86IHRoaXMuY29tcGxldGVkVG8sXG4gICAgICAgICAgICBjb21wbGV0ZWREYXRlOiB0aGlzLmNvbXBsZXRlZERhdGUsXG4gICAgICAgICAgICBjYW5kaWRhdGVHcm91cElkOiB0aGlzLmNhbmRpZGF0ZUdyb3VwSWQsXG4gICAgICAgICAgICB2YXJpYWJsZUtleXM6IHRoaXMuZ2V0UmVxdWVzdE5vZGVWYXJpYWJsZXMoKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXcgVGFza1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwocmVxdWVzdE5vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVxdWVzdE5vZGVWYXJpYWJsZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gKHRoaXMuY29sdW1ucyA/PyBbXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmN1c3RvbURhdGE/LmNvbHVtblR5cGUgPT09ICdwcm9jZXNzLXZhcmlhYmxlLWNvbHVtbicgJiYgY29sdW1uLmlzSGlkZGVuICE9PSB0cnVlKVxuICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWQgPSBjb2x1bW4uY3VzdG9tRGF0YS52YXJpYWJsZURlZmluaXRpb25zUGF5bG9hZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlZHVjZSgoYWxsUmVxdWVzdEtleXMsIHJlcXVlc3RLZXlzKSA9PiBbLi4ucmVxdWVzdEtleXMsIC4uLmFsbFJlcXVlc3RLZXlzXSwgW10pO1xuXG4gICAgICAgIHJldHVybiBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMubGVuZ3RoID8gZGlzcGxheWVkVmFyaWFibGVDb2x1bW5zIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFza0xpc3RSZXF1ZXN0U29ydGluZygpOiBUYXNrTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwge1xuICAgICAgICBpZiAoIXRoaXMuc29ydGluZz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhc2tMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCh7XG4gICAgICAgICAgICAgICAgb3JkZXJCeTogdGhpcy5kZWZhdWx0U29ydGluZy5rZXksXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmRlZmF1bHRTb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBpc0ZpZWxkUHJvY2Vzc1ZhcmlhYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmRlckJ5ID0gdGhpcy5zb3J0aW5nWzBdPy5vcmRlckJ5O1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLnNvcnRpbmdbMF0/LmRpcmVjdGlvbjtcbiAgICAgICAgY29uc3Qgb3JkZXJCeUNvbHVtbiA9IHRoaXMuY29sdW1uTGlzdD8uY29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IG9yZGVyQnkpO1xuICAgICAgICBjb25zdCBpc0ZpZWxkUHJvY2Vzc1ZhcmlhYmxlID0gb3JkZXJCeUNvbHVtbj8uY3VzdG9tRGF0YT8uY29sdW1uVHlwZSA9PT0gJ3Byb2Nlc3MtdmFyaWFibGUtY29sdW1uJztcblxuICAgICAgICBpZiAoaXNGaWVsZFByb2Nlc3NWYXJpYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0RlZmluaXRpb25LZXkgPSBvcmRlckJ5Q29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWRbMF0uc3BsaXQoJy8nKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IG9yZGVyQnlDb2x1bW4uY3VzdG9tRGF0YS52YXJpYWJsZURlZmluaXRpb25zUGF5bG9hZFswXS5zcGxpdCgnLycpWzFdO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUYXNrTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwoe1xuICAgICAgICAgICAgICAgIG9yZGVyQnk6IHZhcmlhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9jZXNzVmFyaWFibGVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBvcmRlckJ5Q29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVUeXBlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhc2tMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCh7IG9yZGVyQnksIGRpcmVjdGlvbiwgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZTogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIXJvd3NcIj57eyAnQURGX0NMT1VEX1RBU0tfTElTVC5GSUxURVJTLk1FU1NBR0VTLk5PTkUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwicm93c1wiPlxuICAgICAgICA8YWRmLWRhdGF0YWJsZVxuICAgICAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgICAgIFtkYXRhXT1cImRhdGFBZGFwdGVyXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbc29ydGluZ109XCJmb3JtYXR0ZWRTb3J0aW5nXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgICAgIFtzdGlja3lIZWFkZXJdPVwic3RpY2t5SGVhZGVyXCJcbiAgICAgICAgICAgIFthY3Rpb25zXT1cInNob3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3Rpb25zUG9zaXRpb25dPVwiYWN0aW9uc1Bvc2l0aW9uXCJcbiAgICAgICAgICAgIFtjb250ZXh0TWVudV09XCJzaG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW3Jlc29sdmVyRm5dPVwiYm91bmRSZXBsYWNlUHJpb3JpdHlWYWx1ZXNcIlxuICAgICAgICAgICAgW3Nob3dQcm92aWRlZEFjdGlvbnNdPVwic2hvd1Byb3ZpZGVkQWN0aW9uc1wiXG4gICAgICAgICAgICBbc2hvd01haW5EYXRhdGFibGVBY3Rpb25zXT1cInNob3dNYWluRGF0YXRhYmxlQWN0aW9uc1wiXG4gICAgICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgICAgICAgICAgKHNob3dSb3dBY3Rpb25zTWVudSk9XCJvblNob3dSb3dBY3Rpb25zTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzaG93Um93Q29udGV4dE1lbnUpPVwib25TaG93Um93Q29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZXhlY3V0ZVJvd0FjdGlvbik9XCJvbkV4ZWN1dGVSb3dBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAocm93LXNlbGVjdCk9XCJvblJvd1NlbGVjdCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgICAgIChyb3ctdW5zZWxlY3QpPVwib25Sb3dVbnNlbGVjdCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgKHJvdy1rZXl1cCk9XCJvblJvd0tleVVwKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgKHNvcnRpbmctY2hhbmdlZCk9XCJvblNvcnRpbmdDaGFuZ2VkKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgKGNvbHVtbk9yZGVyQ2hhbmdlZCk9XCJvbkNvbHVtbk9yZGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjb2x1bW5zV2lkdGhDaGFuZ2VkKT1cIm9uQ29sdW1uc1dpZHRoQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC10YXNrLWxpc3QtbG9hZGluZy1tYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2FkZi1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICA8YWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWVtcHR5LWNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVtcHR5Q3VzdG9tQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FERl9DTE9VRF9UQVNLX0xJU1QuTElTVC5NRVNTQUdFUy5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIidBREZfQ0xPVURfVEFTS19MSVNULkxJU1QuTUVTU0FHRVMuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPGFkZi1tYWluLW1lbnUtZGF0YXRhYmxlLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWFpbk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWRhdGF0YWJsZS1jb2x1bW4tc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21haW5NZW51VHJpZ2dlcl09XCJtYWluTWVudVRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHN1Ym1pdENvbHVtbnNWaXNpYmlsaXR5KT1cIm9uQ29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYWRmLW1haW4tbWVudS1kYXRhdGFibGUtdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLWRhdGF0YWJsZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|