@bcgov/nr-ngx-component-lib 0.0.63 → 0.0.65
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/components/list-attachments/list-attachments.component.d.ts +5 -3
- package/components/list-event-history/list-event-history.component.d.ts +5 -3
- package/components/list-select/list-select.component.d.ts +3 -3
- package/components/resource-schedule/resource-schedule.component.d.ts +2 -1
- package/components/schedule/schedule.component.d.ts +6 -4
- package/directives/pagination.base.d.ts +13 -4
- package/directives/row-list.base.d.ts +4 -6
- package/esm2022/components/list-attachments/list-attachments.component.mjs +7 -5
- package/esm2022/components/list-event-history/list-event-history.component.mjs +7 -5
- package/esm2022/components/list-select/list-select.component.mjs +2 -4
- package/esm2022/components/resource-schedule/resource-schedule.component.mjs +5 -3
- package/esm2022/components/schedule/schedule.component.mjs +6 -3
- package/esm2022/directives/pagination.base.mjs +49 -16
- package/esm2022/directives/row-list.base.mjs +13 -19
- package/esm2022/services/page-state.service.mjs +11 -13
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs +91 -59
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/services/page-state.service.d.ts +4 -4
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OnChanges, SimpleChanges } from "@angular/core";
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
|
-
import { RowListBase
|
|
3
|
+
import { RowListBase } from "../../directives/row-list.base";
|
|
4
|
+
import { InitialState } from "../../public-api";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export type AttachmentsTableRow = {
|
|
6
7
|
attachmentTypeDescription: string;
|
|
@@ -20,11 +21,13 @@ export type FetchAttachmentsParameters = {
|
|
|
20
21
|
sortColumn: string;
|
|
21
22
|
sortDirection: string;
|
|
22
23
|
};
|
|
24
|
+
export type InitialAttachmentsState = Omit<InitialState<{}>, 'filter' | 'pageConfig'> & Partial<Pick<InitialState<{}>, 'filter' | 'pageConfig'>>;
|
|
23
25
|
export interface AttachmentRowListProvider<R, L = any> {
|
|
24
26
|
fetchAttachments(x: FetchAttachmentsParameters): Observable<L>;
|
|
25
27
|
displayRowListPage(res: L): AttachmentsTableRow[];
|
|
26
28
|
downloadItem(item: R): any;
|
|
27
29
|
deleteItem(item: R): any;
|
|
30
|
+
getInitialPageState(): InitialAttachmentsState;
|
|
28
31
|
}
|
|
29
32
|
export declare class ListAttachmentsComponent extends RowListBase<{}, AttachmentsTableRow> implements OnChanges {
|
|
30
33
|
rowListProvider?: AttachmentRowListProvider<AttachmentsTableRow>;
|
|
@@ -52,12 +55,11 @@ export declare class ListAttachmentsComponent extends RowListBase<{}, Attachment
|
|
|
52
55
|
description: string;
|
|
53
56
|
}[];
|
|
54
57
|
ngOnChanges(changes: SimpleChanges): void;
|
|
55
|
-
getInitialPageState():
|
|
58
|
+
getInitialPageState(): InitialState<{}>;
|
|
56
59
|
fetchRowListPage(): Observable<any>;
|
|
57
60
|
parseRows(res: any): AttachmentsTableRow[];
|
|
58
61
|
onDownloadClick(item: AttachmentsTableRow): any;
|
|
59
62
|
onDeleteClick(item: AttachmentsTableRow): any;
|
|
60
|
-
savePageState(): void;
|
|
61
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListAttachmentsComponent, never>;
|
|
62
64
|
static ɵcmp: i0.ɵɵComponentDeclaration<ListAttachmentsComponent, "nrcl-list-attachments", never, { "rowListProvider": { "alias": "rowListProvider"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "canDownload": { "alias": "canDownload"; "required": false; }; "showOrgUnit": { "alias": "showOrgUnit"; "required": false; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; }; }, {}, never, never, false, never>;
|
|
63
65
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import { RowListBase
|
|
2
|
+
import { RowListBase } from "../../directives/row-list.base";
|
|
3
|
+
import { InitialState } from "../../directives/pagination.base";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export type EventHistoryTableRow = {
|
|
5
6
|
eventTimestamp: string;
|
|
@@ -16,9 +17,11 @@ export type FetchEventHistoryParameters = {
|
|
|
16
17
|
sortColumn: string;
|
|
17
18
|
sortDirection: string;
|
|
18
19
|
};
|
|
20
|
+
export type InitialEventHistoryState = Omit<InitialState<{}>, 'filter' | 'pageConfig'> & Partial<Pick<InitialState<{}>, 'filter' | 'pageConfig'>>;
|
|
19
21
|
export interface EventHistoryRowListProvider<R, L = any> {
|
|
20
22
|
fetchEventHistory(x: FetchEventHistoryParameters): Observable<L>;
|
|
21
23
|
displayRowListPage(res: L): EventHistoryTableRow[];
|
|
24
|
+
getInitialPageState(): InitialEventHistoryState;
|
|
22
25
|
}
|
|
23
26
|
export declare class ListEventHistoryComponent extends RowListBase<{}, EventHistoryTableRow> {
|
|
24
27
|
rowListProvider?: EventHistoryRowListProvider<EventHistoryTableRow>;
|
|
@@ -47,8 +50,7 @@ export declare class ListEventHistoryComponent extends RowListBase<{}, EventHist
|
|
|
47
50
|
}[];
|
|
48
51
|
fetchRowListPage(): Observable<any>;
|
|
49
52
|
parseRows(res: any): EventHistoryTableRow[];
|
|
50
|
-
getInitialPageState():
|
|
51
|
-
savePageState(): void;
|
|
53
|
+
getInitialPageState(): InitialState<{}>;
|
|
52
54
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListEventHistoryComponent, never>;
|
|
53
55
|
static ɵcmp: i0.ɵɵComponentDeclaration<ListEventHistoryComponent, "nrcl-list-event-history", never, { "rowListProvider": { "alias": "rowListProvider"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "showPagination": { "alias": "showPagination"; "required": false; }; "isSupplier": { "alias": "isSupplier"; "required": false; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; }; }, {}, never, never, false, never>;
|
|
54
56
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AfterContentInit, EventEmitter, OnChanges, QueryList, SimpleChanges } from "@angular/core";
|
|
2
2
|
import { MatColumnDef, MatTable } from "@angular/material/table";
|
|
3
3
|
import { Observable } from "rxjs";
|
|
4
|
-
import { RowListBase
|
|
4
|
+
import { RowListBase } from "../../directives/row-list.base";
|
|
5
5
|
import { CodeDescription } from "../../utils/code-table.util";
|
|
6
|
+
import { InitialState } from "../../directives/pagination.base";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class ListSelectComponent<T> extends RowListBase<{}, CodeDescription> implements OnChanges, AfterContentInit {
|
|
8
9
|
options: CodeDescription[];
|
|
@@ -22,7 +23,7 @@ export declare class ListSelectComponent<T> extends RowListBase<{}, CodeDescript
|
|
|
22
23
|
displayColumns: any[];
|
|
23
24
|
ngOnChanges(changes: SimpleChanges): void;
|
|
24
25
|
ngAfterContentInit(): void;
|
|
25
|
-
getInitialPageState():
|
|
26
|
+
getInitialPageState(): InitialState<{}>;
|
|
26
27
|
fetchRowListPage(): Observable<CodeDescription[]>;
|
|
27
28
|
parseRows(res: any): CodeDescription[];
|
|
28
29
|
parseTotalRowCount(res: any): number;
|
|
@@ -31,7 +32,6 @@ export declare class ListSelectComponent<T> extends RowListBase<{}, CodeDescript
|
|
|
31
32
|
onClearFilters(): void;
|
|
32
33
|
onSearchTextChange(ev: any): void;
|
|
33
34
|
filterOption(option: CodeDescription): boolean;
|
|
34
|
-
savePageState(): void;
|
|
35
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListSelectComponent<any>, never>;
|
|
36
36
|
static ɵcmp: i0.ɵɵComponentDeclaration<ListSelectComponent<any>, "nrcl-list-select", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "descriptionLabel": { "alias": "descriptionLabel"; "required": false; }; "single": { "alias": "single"; "required": false; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; }; "displayColumnsProvider": { "alias": "displayColumnsProvider"; "required": false; }; "filterProvider": { "alias": "filterProvider"; "required": false; }; }, { "valueChange": "valueChange"; "filterClear": "filterClear"; }, ["columnDefs"], ["[filter]", "*"], false, never>;
|
|
37
37
|
static ngAcceptInputType_single: unknown;
|
|
@@ -22,12 +22,13 @@ export type ResourceSchedule = ResourceScheduleRow[];
|
|
|
22
22
|
export declare class ResourceScheduleComponent {
|
|
23
23
|
provider?: ScheduleProvider;
|
|
24
24
|
startDate?: string;
|
|
25
|
+
highlightDate?: string;
|
|
25
26
|
weekStart: number;
|
|
26
27
|
dayCount?: number;
|
|
27
28
|
menu?: MatMenuPanel;
|
|
28
29
|
scheduleComponent?: ScheduleComponent;
|
|
29
30
|
headerTemplate: ResourceScheduleRowHeadingDirective;
|
|
30
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceScheduleComponent, never>;
|
|
31
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceScheduleComponent, "nrcl-resource-schedule", never, { "provider": { "alias": "provider"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "dayCount": { "alias": "dayCount"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; }, {}, ["headerTemplate"], ["*"], false, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceScheduleComponent, "nrcl-resource-schedule", never, { "provider": { "alias": "provider"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "highlightDate": { "alias": "highlightDate"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "dayCount": { "alias": "dayCount"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; }, {}, ["headerTemplate"], ["*"], false, never>;
|
|
32
33
|
static ngAcceptInputType_dayCount: unknown;
|
|
33
34
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
|
|
2
2
|
import { MatMenuPanel } from '@angular/material/menu';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
import { PaginationState } from '../../directives/pagination.base';
|
|
4
|
+
import { InitialState, PaginationState } from '../../directives/pagination.base';
|
|
5
5
|
import { RowListBase } from '../../directives/row-list.base';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class ScheduleRowHeadingDirective {
|
|
@@ -37,6 +37,7 @@ type Day = {
|
|
|
37
37
|
isWeekend: boolean;
|
|
38
38
|
isToday: boolean;
|
|
39
39
|
isFirst: boolean;
|
|
40
|
+
isHighlight: boolean;
|
|
40
41
|
};
|
|
41
42
|
type Week = {
|
|
42
43
|
start: string;
|
|
@@ -50,7 +51,7 @@ export interface ScheduleProvider {
|
|
|
50
51
|
startloadSchedule(inner: () => Promise<any>): Promise<any>;
|
|
51
52
|
fetchSchedule(): Observable<any>;
|
|
52
53
|
parseSchedule(res: any): Schedule;
|
|
53
|
-
getInitialPageState():
|
|
54
|
+
getInitialPageState(): InitialState<{}>;
|
|
54
55
|
completedLoadSchedule(inner: () => void): any;
|
|
55
56
|
}
|
|
56
57
|
export declare class ScheduleComponent extends RowListBase<{}, ScheduleRow> implements OnChanges {
|
|
@@ -59,6 +60,7 @@ export declare class ScheduleComponent extends RowListBase<{}, ScheduleRow> impl
|
|
|
59
60
|
weekStart: number;
|
|
60
61
|
dayCount?: number;
|
|
61
62
|
menu?: MatMenuPanel;
|
|
63
|
+
highlightDate?: string;
|
|
62
64
|
itemTemplates: QueryList<ScheduleItemDirective>;
|
|
63
65
|
headerTemplate: ScheduleRowHeadingDirective;
|
|
64
66
|
protected _days: Day[];
|
|
@@ -69,12 +71,12 @@ export declare class ScheduleComponent extends RowListBase<{}, ScheduleRow> impl
|
|
|
69
71
|
loadRowList(): Promise<any>;
|
|
70
72
|
fetchRowListPage(): Observable<any>;
|
|
71
73
|
parseRows(res: any): ScheduleRow[];
|
|
72
|
-
getInitialPageState():
|
|
74
|
+
getInitialPageState(): InitialState<{}>;
|
|
73
75
|
completedRowListPage(): PaginationState<{}>;
|
|
74
76
|
onSamePageFilterChange(ev: {}): void;
|
|
75
77
|
makeRows(schedule: Schedule): Schedule;
|
|
76
78
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScheduleComponent, never>;
|
|
77
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScheduleComponent, "nrcl-schedule", never, { "provider": { "alias": "provider"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "dayCount": { "alias": "dayCount"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; }, {}, ["headerTemplate", "itemTemplates"], ["*"], false, never>;
|
|
79
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScheduleComponent, "nrcl-schedule", never, { "provider": { "alias": "provider"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "dayCount": { "alias": "dayCount"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; "highlightDate": { "alias": "highlightDate"; "required": false; }; }, {}, ["headerTemplate", "itemTemplates"], ["*"], false, never>;
|
|
78
80
|
static ngAcceptInputType_weekStart: unknown;
|
|
79
81
|
static ngAcceptInputType_dayCount: unknown;
|
|
80
82
|
}
|
|
@@ -20,6 +20,9 @@ export type PaginationState<F> = {
|
|
|
20
20
|
pageConfig: PaginationConfig;
|
|
21
21
|
filter: F;
|
|
22
22
|
};
|
|
23
|
+
export type InitialState<F> = PaginationState<F> & {
|
|
24
|
+
instance?: string;
|
|
25
|
+
};
|
|
23
26
|
export declare abstract class PaginationBase<F> extends NrclBase implements AfterViewInit {
|
|
24
27
|
pageStateService: PageStateService;
|
|
25
28
|
changeDetectorRef: ChangeDetectorRef;
|
|
@@ -33,16 +36,22 @@ export declare abstract class PaginationBase<F> extends NrclBase implements Afte
|
|
|
33
36
|
private _filter?;
|
|
34
37
|
get filter(): F;
|
|
35
38
|
protected set filter(f: F);
|
|
39
|
+
protected _instance?: string;
|
|
40
|
+
get instance(): string | undefined;
|
|
36
41
|
ngAfterViewInit(): void;
|
|
42
|
+
onInitPageState(): void;
|
|
37
43
|
clone(obj: any): any;
|
|
38
44
|
onFilterChange(ev: F): void;
|
|
39
45
|
onSortChange(ev: Sort): void;
|
|
40
46
|
onPageSizeChange(ev: number): void;
|
|
41
47
|
onPageNumberChange(ev: number): void;
|
|
42
|
-
|
|
43
|
-
abstract
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
onPageStateChanged(): Promise<void>;
|
|
49
|
+
protected abstract refresh(): Promise<void>;
|
|
50
|
+
abstract getInitialPageState(): InitialState<F>;
|
|
51
|
+
getCurrentPageState(): PaginationState<F>;
|
|
52
|
+
setCurrentPageState(state: PaginationState<F>): void;
|
|
53
|
+
persistState(state: PaginationState<F>): void;
|
|
54
|
+
retrieveState(): PaginationState<F> | undefined;
|
|
46
55
|
paginateState(id: string): {
|
|
47
56
|
id: string;
|
|
48
57
|
itemsPerPage: number;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter } from "@angular/core";
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
3
|
import { PageStateService } from "../services/page-state.service";
|
|
4
|
-
import { PaginationBase
|
|
4
|
+
import { PaginationBase } from "./pagination.base";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export
|
|
7
|
-
export declare abstract class RowListBase<F, R, L = any> extends PaginationBase<F> implements AfterViewInit {
|
|
6
|
+
export declare abstract class RowListBase<F, R, L = any> extends PaginationBase<F> {
|
|
8
7
|
pageStateService: PageStateService;
|
|
9
8
|
changeDetectorRef: ChangeDetectorRef;
|
|
10
9
|
isLoadingChange: EventEmitter<boolean>;
|
|
@@ -15,7 +14,6 @@ export declare abstract class RowListBase<F, R, L = any> extends PaginationBase<
|
|
|
15
14
|
get rows(): R[];
|
|
16
15
|
private _loadRowListRequest?;
|
|
17
16
|
private _inProgress;
|
|
18
|
-
ngAfterViewInit(): void;
|
|
19
17
|
refreshRowList(): Promise<void>;
|
|
20
18
|
loadRowList(): Promise<L>;
|
|
21
19
|
abstract fetchRowListPage(): Observable<L>;
|
|
@@ -24,7 +22,7 @@ export declare abstract class RowListBase<F, R, L = any> extends PaginationBase<
|
|
|
24
22
|
parseTotalRowCount(res: L): number;
|
|
25
23
|
completedRowListPage(): void;
|
|
26
24
|
loadRowListPageFailed(error: any): void;
|
|
27
|
-
|
|
25
|
+
protected refresh(): Promise<void>;
|
|
28
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<RowListBase<any, any, any>, never>;
|
|
29
27
|
static ɵdir: i0.ɵɵDirectiveDeclaration<RowListBase<any, any, any>, never, never, {}, { "isLoadingChange": "isLoadingChange"; }, never, never, false, never>;
|
|
30
28
|
}
|
|
@@ -53,14 +53,19 @@ export class ListAttachmentsComponent extends RowListBase {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
getInitialPageState() {
|
|
56
|
+
if (!this.rowListProvider?.getInitialPageState)
|
|
57
|
+
throw Error('no provider for ListAttachmentsComponent.rowListProvider.getInitialPageState');
|
|
58
|
+
let state = this.rowListProvider.getInitialPageState();
|
|
56
59
|
return {
|
|
60
|
+
instance: state.instance,
|
|
57
61
|
filter: {},
|
|
58
62
|
pageConfig: {
|
|
59
63
|
pageSize: 10,
|
|
60
64
|
pageNumber: 1,
|
|
61
65
|
sortActive: 'uploadedTimestamp',
|
|
62
66
|
sortDirection: 'desc',
|
|
63
|
-
|
|
67
|
+
...state.pageConfig
|
|
68
|
+
},
|
|
64
69
|
};
|
|
65
70
|
}
|
|
66
71
|
fetchRowListPage() {
|
|
@@ -88,9 +93,6 @@ export class ListAttachmentsComponent extends RowListBase {
|
|
|
88
93
|
throw Error('no provider for ListAttachmentsComponent.rowListProvider.onDeleteClick.');
|
|
89
94
|
return this.rowListProvider.deleteItem(item);
|
|
90
95
|
}
|
|
91
|
-
savePageState() {
|
|
92
|
-
// state not saved
|
|
93
|
-
}
|
|
94
96
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListAttachmentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
97
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListAttachmentsComponent, selector: "nrcl-list-attachments", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", canDownload: "canDownload", showOrgUnit: "showOrgUnit", noRowsMessage: "noRowsMessage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: paginateState( 'desktop-attachments' )\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Attachment Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n<!-- Only show this column for prep sheet attachment section-->\n <ng-container matColumnDef=\"orgUnit\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Org Unit</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.orgUnit }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Name</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button anchor tooltip\n [label]=\"item.fileName\"\n iconRight=\"download\"\n (click)=\"onDownloadClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileExtension\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileExtension }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded By</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedBy }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded Date</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedTimestamp }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Description</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <mat-header-cell *matHeaderCellDef>Down­load</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef>Delete</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: paginateState( 'mobile-attachments' ); track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width class=\"filename\">\n <mat-label>File Name</mat-label>\n <div class=\"value\">\n <nrcl-button anchor\n [label]=\"item.fileName\"\n iconRight=\"download\"\n (click)=\"onDownloadClick( item )\"\n ></nrcl-button>\n </div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section>\n\n @if ( showOrgUnit ) {\n <section full-width>\n <mat-label>Org Unit</mat-label>\n <div class=\"value\">{{ item.orgUnit }}</div>\n </section>\n }\n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section>\n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\"\n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer>\n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{flex-basis:150px;flex-grow:1;flex-shrink:0}:host .mat-mdc-table .mat-column-orgUnit{flex-basis:150px;flex-grow:1;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-fileName{flex-basis:200px;flex-grow:3;flex-shrink:0}:host .mat-mdc-table .mat-column-fileName .nrcl-button{width:100%;--nrcl-button-width: 100%}:host .mat-mdc-table .mat-column-fileExtension{flex-basis:60px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedBy{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedTimestamp{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-description{flex-basis:200px;flex-grow:1;flex-shrink:1;word-break:break-word}:host .mat-mdc-table .mat-column-download{flex-basis:90px;flex-grow:0;flex-shrink:0;justify-content:center}:host .mat-mdc-table .mat-column-delete{flex-basis:60px;flex-grow:0;flex-shrink:0;justify-content:center}:host .nrcl-row-list-mobile section.filename .value .nrcl-button{width:100%;--nrcl-button-width: 100%;--nrcl-button-font-weight: bold}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "small", "primary", "secondary", "tertiary", "disabled", "anchor"], outputs: ["click"] }, { kind: "component", type: i6.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i7.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i8.RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: ["showRowHover"] }, { kind: "component", type: i9.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i10.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: i11.RowListSortingComponent, selector: "nrcl-row-list-sorting", inputs: ["sortColumn", "sortColumnOptions", "sortDirection"], outputs: ["sortChange"] }, { kind: "directive", type: i12.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i12.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i12.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i13.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
96
98
|
}
|
|
@@ -108,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
108
110
|
}], noRowsMessage: [{
|
|
109
111
|
type: Input
|
|
110
112
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBbUNyRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBbUM7SUFOakY7O1FBUWEsY0FBUyxHQUFHLElBQUksQ0FBQTtRQUNoQixnQkFBVyxHQUFHLElBQUksQ0FBQTtRQUNsQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixrQkFBYSxHQUFHLGlDQUFpQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsWUFBWSxDQUFBO1FBQzNCLFlBQU8sR0FBYSxFQUFFLENBQUE7UUFDdEIsZ0JBQVcsR0FBNkMsRUFBRSxDQUFBO0tBMEU3RDtJQXhFRyxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ1gsb0JBQW9CO2dCQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxVQUFVO2dCQUNWLGVBQWU7Z0JBQ2YsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLGFBQWE7Z0JBQ2IsR0FBRyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRTtnQkFDM0MsR0FBRyxDQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRTthQUMxQyxDQUFBO1FBQ0wsQ0FBQztRQUVELElBQUssT0FBTyxDQUFDLFdBQVcsRUFBRyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUc7Z0JBQ2YsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtnQkFDOUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7Z0JBQ25ELEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFO2dCQUNsRCxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO2dCQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0UsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUU7YUFDdEQsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFVBQVUsRUFBRSxtQkFBbUI7Z0JBQy9CLGFBQWEsRUFBRSxNQUFNO2FBQ3hCO1NBQ0osQ0FBQTtJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0I7WUFBRyxNQUFNLEtBQUssQ0FBRSwyRUFBMkUsQ0FBRSxDQUFBO1FBRXpJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDcEMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBRSxHQUFRO1FBQ2YsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsa0JBQWtCO1lBQUcsTUFBTSxLQUFLLENBQUUsNkVBQTZFLENBQUUsQ0FBQTtRQUU3SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUUsR0FBRyxDQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUF5QjtRQUN0QyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZO1lBQUcsTUFBTSxLQUFLLENBQUUsMEVBQTBFLENBQUUsQ0FBQTtRQUVwSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFFLElBQUksQ0FBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUUsSUFBeUI7UUFDcEMsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVTtZQUFHLE1BQU0sS0FBSyxDQUFFLHlFQUF5RSxDQUFFLENBQUE7UUFFakksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsYUFBYTtRQUNULGtCQUFrQjtJQUN0QixDQUFDOytHQWxGUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UUN0Q3JDLGtvU0F3TUE7OzRGRGxLYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUm93TGlzdEJhc2UsIFJvd0xpc3RTdGF0ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Jvdy1saXN0LmJhc2VcIjtcbmltcG9ydCB7IERBVEVfRk9STUFUUyB9IGZyb20gXCIuLi8uLi91dGlscy9kYXRlLnV0aWxcIjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudHNUYWJsZVJvdyA9IHtcbiAgICBhdHRhY2htZW50VHlwZURlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBvcmdVbml0OiBzdHJpbmdcbiAgICBmaWxlTmFtZTogc3RyaW5nXG4gICAgZmlsZUV4dGVuc2lvbjogc3RyaW5nXG4gICAgdXBsb2FkZWRCeTogc3RyaW5nXG4gICAgdXBsb2FkZWRUaW1lc3RhbXA6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnREZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgYXR0YWNobWVudElkOiBzdHJpbmcgXG4gICAgZmlsZUlkOiBzdHJpbmdcbiAgICBzb3VyY2VPYmplY3RVbmlxdWVJZDogc3RyaW5nLFxufVxuXG5leHBvcnQgdHlwZSBGZXRjaEF0dGFjaG1lbnRzUGFyYW1ldGVycyA9IHsgXG4gICAgcGFnZU51bWJlcjogbnVtYmVyIFxuICAgIHBhZ2VSb3dDb3VudDogbnVtYmVyIFxuICAgIHNvcnRDb2x1bW46IHN0cmluZyBcbiAgICBzb3J0RGlyZWN0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50Um93TGlzdFByb3ZpZGVyPFIsTD1hbnk+IHtcbiAgICBmZXRjaEF0dGFjaG1lbnRzKCB4OiBGZXRjaEF0dGFjaG1lbnRzUGFyYW1ldGVycyApOiBPYnNlcnZhYmxlPEw+ICAgIFxuICAgIGRpc3BsYXlSb3dMaXN0UGFnZSggcmVzOiBMICk6IEF0dGFjaG1lbnRzVGFibGVSb3dbXVxuICAgIGRvd25sb2FkSXRlbSggaXRlbTogUiApOiBhbnlcbiAgICBkZWxldGVJdGVtKCBpdGVtOiBSICk6IGFueVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJucmNsLWxpc3QtYXR0YWNobWVudHNcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybDogXCIuL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0QXR0YWNobWVudHNDb21wb25lbnQgZXh0ZW5kcyBSb3dMaXN0QmFzZTx7fSxBdHRhY2htZW50c1RhYmxlUm93PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcm93TGlzdFByb3ZpZGVyPzogQXR0YWNobWVudFJvd0xpc3RQcm92aWRlcjxBdHRhY2htZW50c1RhYmxlUm93PlxuICAgIEBJbnB1dCgpIGNhbkRlbGV0ZSA9IHRydWVcbiAgICBASW5wdXQoKSBjYW5Eb3dubG9hZCA9IHRydWVcbiAgICBASW5wdXQoKSBzaG93T3JnVW5pdCA9IGZhbHNlXG4gICAgQElucHV0KCkgbm9Sb3dzTWVzc2FnZSA9IFwiTm8gYXR0YWNobWVudHMgaGF2ZSBiZWVuIGFkZGVkLlwiXG5cbiAgICBEQVRFX0ZPUk1BVFMgPSBEQVRFX0ZPUk1BVFNcbiAgICBjb2x1bW5zOiBzdHJpbmdbXSA9IFtdIFxuICAgIHNvcnRDb2x1bW5zOiB7IGNvZGU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZzsgfVtdID0gW11cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCBjaGFuZ2VzLmNhbkRvd25sb2FkIHx8IGNoYW5nZXMuY2FuRGVsZXRlIHx8IGNoYW5nZXMuc2hvd09yZ1VuaXQgKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBbIFxuICAgICAgICAgICAgICAgICdhdHRhY2htZW50VHlwZUNvZGUnLFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLnNob3dPcmdVbml0ID8gWydvcmdVbml0J10gOiBbXSksXG4gICAgICAgICAgICAgICAgJ2ZpbGVOYW1lJywgXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb24nLCBcbiAgICAgICAgICAgICAgICAndXBsb2FkZWRCeScsIFxuICAgICAgICAgICAgICAgICd1cGxvYWRlZFRpbWVzdGFtcCcsIFxuICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgLi4uKCB0aGlzLmNhbkRvd25sb2FkID8gWydkb3dubG9hZCddIDogW10gKSxcbiAgICAgICAgICAgICAgICAuLi4oIHRoaXMuY2FuRGVsZXRlID8gWydkZWxldGUnXSA6IFtdIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCBjaGFuZ2VzLnNob3dPcmdVbml0ICkge1xuICAgICAgICAgICAgdGhpcy5zb3J0Q29sdW1ucyA9IFtcbiAgICAgICAgICAgICAgICB7IGNvZGU6ICdhdHRhY2htZW50VHlwZUNvZGUnLCBkZXNjcmlwdGlvbjogJ0F0dGFjaG1lbnQgVHlwZScgfSxcbiAgICAgICAgICAgICAgICB7IGNvZGU6ICdmaWxlTmFtZScsIGRlc2NyaXB0aW9uOiAnRmlsZSBOYW1lJyB9LFxuICAgICAgICAgICAgICAgIHsgY29kZTogJ2ZpbGVFeHRlbnNpb24nLCBkZXNjcmlwdGlvbjogJ0ZpbGUgVHlwZScgfSxcbiAgICAgICAgICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZEJ5JywgZGVzY3JpcHRpb246ICdVcGxvYWRlZCBCeScgfSxcbiAgICAgICAgICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZFRpbWVzdGFtcCcsIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgRGF0ZScgfSxcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5zaG93T3JnVW5pdCA/IFt7IGNvZGU6ICdvcmdVbml0JywgZGVzY3JpcHRpb246ICdPcmcgVW5pdCcgfV0gOiBbXSksXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJyB9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SW5pdGlhbFBhZ2VTdGF0ZSgpOiBSb3dMaXN0U3RhdGU8e30+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcjoge30sXG4gICAgICAgICAgICBwYWdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxuICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICAgICAgc29ydEFjdGl2ZTogJ3VwbG9hZGVkVGltZXN0YW1wJyxcbiAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmZXRjaFJvd0xpc3RQYWdlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5mZXRjaEF0dGFjaG1lbnRzICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5mZXRjaFJvd0xpc3RQYWdlJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmZldGNoQXR0YWNobWVudHMoe1xuICAgICAgICAgICAgcGFnZU51bWJlcjogdGhpcy5wYWdlTnVtYmVyLFxuICAgICAgICAgICAgcGFnZVJvd0NvdW50OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0QWN0aXZlLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbjogdGhpcy5zb3J0RGlyZWN0aW9uLFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHBhcnNlUm93cyggcmVzOiBhbnkgKTogQXR0YWNobWVudHNUYWJsZVJvd1tdIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRpc3BsYXlSb3dMaXN0UGFnZSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RBdHRhY2htZW50c0NvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIuZGlzcGxheVJvd0xpc3RQYWdlJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRpc3BsYXlSb3dMaXN0UGFnZSggcmVzIClcbiAgICB9XG4gICAgXG4gICAgb25Eb3dubG9hZENsaWNrKCBpdGVtOiBBdHRhY2htZW50c1RhYmxlUm93ICkge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZG93bmxvYWRJdGVtICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5vbkRvd25sb2FkQ2xpY2snIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZG93bmxvYWRJdGVtKCBpdGVtIClcbiAgICB9XG5cbiAgICBvbkRlbGV0ZUNsaWNrKCBpdGVtOiBBdHRhY2htZW50c1RhYmxlUm93ICkge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZGVsZXRlSXRlbSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RBdHRhY2htZW50c0NvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIub25EZWxldGVDbGljay4nIClcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5kZWxldGVJdGVtKCBpdGVtIClcbiAgICB9XG5cbiAgICBzYXZlUGFnZVN0YXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBzdGF0ZSBub3Qgc2F2ZWRcbiAgICB9XG59XG4iLCI8bnJjbC1kZXZpY2Utdmlldz5cbiAgICA8bmctdGVtcGxhdGUgZGVza3RvcC12aWV3PlxuICAgICAgICBAaWYgKCByb3dzPy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcCBbc2hvd1Jvd0hvdmVyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdkZXNrdG9wLWF0dGFjaG1lbnRzJyApXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0U29ydFxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhdHRhY2htZW50VHlwZUNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkF0dGFjaG1lbnQgVHlwZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb24gfX08L25yY2wtY2VsbC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbjwhLS0gICAgICAgICAgICAgICAgICAgIE9ubHkgc2hvdyB0aGlzIGNvbHVtbiBmb3IgcHJlcCBzaGVldCBhdHRhY2htZW50IHNlY3Rpb24tLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcmdVbml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5PcmcgVW5pdDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm9yZ1VuaXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZmlsZU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkZpbGUgTmFtZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gYW5jaG9yIHRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0uZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJkb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZpbGVFeHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkZpbGUgVHlwZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmZpbGVFeHRlbnNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBsb2FkZWRCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+VXBsb2FkZWQgQnk8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51cGxvYWRlZEJ5IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVwbG9hZGVkVGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5VcGxvYWRlZCBEYXRlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udXBsb2FkZWRUaW1lc3RhbXAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkRlc2NyaXB0aW9uPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uYXR0YWNobWVudERlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRvd25sb2FkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRvd24mc2h5O2xvYWQ8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRlbGV0ZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1ucztcIj48L21hdC1yb3c+XG4gICAgICAgICAgICAgICAgPC9tYXQtdGFibGU+XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3QtZGVza3RvcD5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cImRlc2t0b3AtYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtwYWdlTnVtYmVyXT1cInBhZ2VOdW1iZXJcIlxuICAgICAgICAgICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgICAgICAgICAgKHBhZ2VOdW1iZXJDaGFuZ2UpPVwib25QYWdlTnVtYmVyQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgW25vUm93c01lc3NhZ2VdPVwibm9Sb3dzTWVzc2FnZVwiXG4gICAgICAgID48L25yY2wtcm93LWxpc3QtcGFnaW5hdGlvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG1vYmlsZS12aWV3PlxuICAgICAgICA8bnJjbC1nYXAvPlxuXG4gICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICA8bnJjbC1yb3ctbGlzdC1zb3J0aW5nXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5dPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5PcHRpb25zXT1cInNvcnRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LXNvcnRpbmc+XG5cbiAgICAgICAgICAgIDxucmNsLWdhcC8+XG5cbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LW1vYmlsZT5cbiAgICAgICAgICAgICAgICBAZm9yICggaXRlbSBvZiByb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdtb2JpbGUtYXR0YWNobWVudHMnICk7IHRyYWNrIGl0ZW0uYXR0YWNobWVudElkICkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBmdWxsLXdpZHRoIGNsYXNzPVwiZmlsZW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWxlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gYW5jaG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0uZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25SaWdodD1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkF0dGFjaG1lbnQgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWxlIFR5cGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VXBsb2FkZWQgQnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS51cGxvYWRlZEJ5IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VXBsb2FkZWQgRGF0ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnVwbG9hZGVkVGltZXN0YW1wIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICggc2hvd09yZ1VuaXQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk9yZyBVbml0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLm9yZ1VuaXQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5hdHRhY2htZW50RGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1mb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICggY2FuRG93bmxvYWQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBjYW5EZWxldGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUNsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3QtbW9iaWxlPlxuXG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgcGFnaW5hdGlvbklkPVwibW9iaWxlLWF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgIFtyb3dDb3VudF09XCJ0b3RhbFJvd0NvdW50XCJcbiAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIFtub1Jvd3NNZXNzYWdlXT1cIm5vUm93c01lc3NhZ2VcIlxuICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbnJjbC1kZXZpY2Utdmlldz5cbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUF1Q3JELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFtQztJQU5qRjs7UUFRYSxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ25CLGtCQUFhLEdBQUcsaUNBQWlDLENBQUE7UUFFMUQsaUJBQVksR0FBRyxZQUFZLENBQUE7UUFDM0IsWUFBTyxHQUFhLEVBQUUsQ0FBQTtRQUN0QixnQkFBVyxHQUE2QyxFQUFFLENBQUE7S0E0RTdEO0lBMUVHLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFLLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFHLENBQUM7WUFDcEUsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDWCxvQkFBb0I7Z0JBQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENB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Q0FBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUUsSUFBeUI7UUFDcEMsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVTtZQUFHLE1BQU0sS0FBSyxDQUFFLHlFQUF5RSxDQUFFLENBQUE7UUFFakksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNsRCxDQUFDOytHQXBGUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UUMxQ3JDLGtvU0F3TUE7OzRGRDlKYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUm93TGlzdEJhc2UgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9yb3ctbGlzdC5iYXNlXCI7XG5pbXBvcnQgeyBEQVRFX0ZPUk1BVFMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZGF0ZS51dGlsXCI7XG5pbXBvcnQgeyBJbml0aWFsU3RhdGUgfSBmcm9tIFwiLi4vLi4vcHVibGljLWFwaVwiO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50c1RhYmxlUm93ID0ge1xuICAgIGF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb246IHN0cmluZ1xuICAgIG9yZ1VuaXQ6IHN0cmluZ1xuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmdcbiAgICB1cGxvYWRlZEJ5OiBzdHJpbmdcbiAgICB1cGxvYWRlZFRpbWVzdGFtcDogc3RyaW5nXG4gICAgYXR0YWNobWVudERlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBhdHRhY2htZW50SWQ6IHN0cmluZyBcbiAgICBmaWxlSWQ6IHN0cmluZ1xuICAgIHNvdXJjZU9iamVjdFVuaXF1ZUlkOiBzdHJpbmcsXG59XG5cbmV4cG9ydCB0eXBlIEZldGNoQXR0YWNobWVudHNQYXJhbWV0ZXJzID0geyBcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIgXG4gICAgcGFnZVJvd0NvdW50OiBudW1iZXIgXG4gICAgc29ydENvbHVtbjogc3RyaW5nIFxuICAgIHNvcnREaXJlY3Rpb246IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBJbml0aWFsQXR0YWNobWVudHNTdGF0ZSA9IE9taXQ8SW5pdGlhbFN0YXRlPHt9PiwnZmlsdGVyJ3wncGFnZUNvbmZpZyc+ICYgUGFydGlhbDxQaWNrPEluaXRpYWxTdGF0ZTx7fT4sJ2ZpbHRlcid8J3BhZ2VDb25maWcnPj5cblxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50Um93TGlzdFByb3ZpZGVyPFIsTD1hbnk+IHtcbiAgICBmZXRjaEF0dGFjaG1lbnRzKCB4OiBGZXRjaEF0dGFjaG1lbnRzUGFyYW1ldGVycyApOiBPYnNlcnZhYmxlPEw+ICAgIFxuICAgIGRpc3BsYXlSb3dMaXN0UGFnZSggcmVzOiBMICk6IEF0dGFjaG1lbnRzVGFibGVSb3dbXVxuICAgIGRvd25sb2FkSXRlbSggaXRlbTogUiApOiBhbnlcbiAgICBkZWxldGVJdGVtKCBpdGVtOiBSICk6IGFueVxuICAgIGdldEluaXRpYWxQYWdlU3RhdGUoKTogSW5pdGlhbEF0dGFjaG1lbnRzU3RhdGVcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnJjbC1saXN0LWF0dGFjaG1lbnRzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50IGV4dGVuZHMgUm93TGlzdEJhc2U8e30sQXR0YWNobWVudHNUYWJsZVJvdz4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIHJvd0xpc3RQcm92aWRlcj86IEF0dGFjaG1lbnRSb3dMaXN0UHJvdmlkZXI8QXR0YWNobWVudHNUYWJsZVJvdz5cbiAgICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gICAgQElucHV0KCkgY2FuRG93bmxvYWQgPSB0cnVlXG4gICAgQElucHV0KCkgc2hvd09yZ1VuaXQgPSBmYWxzZVxuICAgIEBJbnB1dCgpIG5vUm93c01lc3NhZ2UgPSBcIk5vIGF0dGFjaG1lbnRzIGhhdmUgYmVlbiBhZGRlZC5cIlxuXG4gICAgREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTXG4gICAgY29sdW1uczogc3RyaW5nW10gPSBbXSBcbiAgICBzb3J0Q29sdW1uczogeyBjb2RlOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmc7IH1bXSA9IFtdXG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICggY2hhbmdlcy5jYW5Eb3dubG9hZCB8fCBjaGFuZ2VzLmNhbkRlbGV0ZSB8fCBjaGFuZ2VzLnNob3dPcmdVbml0ICkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gWyBcbiAgICAgICAgICAgICAgICAnYXR0YWNobWVudFR5cGVDb2RlJyxcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5zaG93T3JnVW5pdCA/IFsnb3JnVW5pdCddIDogW10pLFxuICAgICAgICAgICAgICAgICdmaWxlTmFtZScsIFxuICAgICAgICAgICAgICAgICdmaWxlRXh0ZW5zaW9uJywgXG4gICAgICAgICAgICAgICAgJ3VwbG9hZGVkQnknLCBcbiAgICAgICAgICAgICAgICAndXBsb2FkZWRUaW1lc3RhbXAnLCBcbiAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgIC4uLiggdGhpcy5jYW5Eb3dubG9hZCA/IFsnZG93bmxvYWQnXSA6IFtdICksXG4gICAgICAgICAgICAgICAgLi4uKCB0aGlzLmNhbkRlbGV0ZSA/IFsnZGVsZXRlJ10gOiBbXSApXG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICggY2hhbmdlcy5zaG93T3JnVW5pdCApIHtcbiAgICAgICAgICAgIHRoaXMuc29ydENvbHVtbnMgPSBbXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnYXR0YWNobWVudFR5cGVDb2RlJywgZGVzY3JpcHRpb246ICdBdHRhY2htZW50IFR5cGUnIH0sXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnZmlsZU5hbWUnLCBkZXNjcmlwdGlvbjogJ0ZpbGUgTmFtZScgfSxcbiAgICAgICAgICAgICAgICB7IGNvZGU6ICdmaWxlRXh0ZW5zaW9uJywgZGVzY3JpcHRpb246ICdGaWxlIFR5cGUnIH0sXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAndXBsb2FkZWRCeScsIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgQnknIH0sXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAndXBsb2FkZWRUaW1lc3RhbXAnLCBkZXNjcmlwdGlvbjogJ1VwbG9hZGVkIERhdGUnIH0sXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuc2hvd09yZ1VuaXQgPyBbeyBjb2RlOiAnb3JnVW5pdCcsIGRlc2NyaXB0aW9uOiAnT3JnIFVuaXQnIH1dIDogW10pLFxuICAgICAgICAgICAgICAgIHsgY29kZTogJ2Rlc2NyaXB0aW9uJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEluaXRpYWxQYWdlU3RhdGUoKTogSW5pdGlhbFN0YXRlPHt9PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5nZXRJbml0aWFsUGFnZVN0YXRlICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5nZXRJbml0aWFsUGFnZVN0YXRlJyApXG5cbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZ2V0SW5pdGlhbFBhZ2VTdGF0ZSgpXG5cbiAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICBcbiAgICAgICAgICAgIGluc3RhbmNlOiBzdGF0ZS5pbnN0YW5jZSxcbiAgICAgICAgICAgIGZpbHRlcjoge30sXG4gICAgICAgICAgICBwYWdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxuICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICAgICAgc29ydEFjdGl2ZTogJ3VwbG9hZGVkVGltZXN0YW1wJyxcbiAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucGFnZUNvbmZpZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZldGNoUm93TGlzdFBhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmZldGNoQXR0YWNobWVudHMgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0QXR0YWNobWVudHNDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLmZldGNoUm93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZmV0Y2hBdHRhY2htZW50cyh7XG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgICBwYWdlUm93Q291bnQ6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnRBY3RpdmUsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFyc2VSb3dzKCByZXM6IGFueSApOiBBdHRhY2htZW50c1RhYmxlUm93W10ge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZGlzcGxheVJvd0xpc3RQYWdlICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5kaXNwbGF5Um93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGlzcGxheVJvd0xpc3RQYWdlKCByZXMgKVxuICAgIH1cbiAgICBcbiAgICBvbkRvd25sb2FkQ2xpY2soIGl0ZW06IEF0dGFjaG1lbnRzVGFibGVSb3cgKSB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kb3dubG9hZEl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0QXR0YWNobWVudHNDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLm9uRG93bmxvYWRDbGljaycgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5kb3dubG9hZEl0ZW0oIGl0ZW0gKVxuICAgIH1cblxuICAgIG9uRGVsZXRlQ2xpY2soIGl0ZW06IEF0dGFjaG1lbnRzVGFibGVSb3cgKSB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kZWxldGVJdGVtICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5vbkRlbGV0ZUNsaWNrLicgKVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRlbGV0ZUl0ZW0oIGl0ZW0gKVxuICAgIH1cbn1cbiIsIjxucmNsLWRldmljZS12aWV3PlxuICAgIDxuZy10ZW1wbGF0ZSBkZXNrdG9wLXZpZXc+XG4gICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICA8bnJjbC1yb3ctbGlzdC1kZXNrdG9wIFtzaG93Um93SG92ZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXRhYmxlXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInJvd3MgfCBwYWdpbmF0ZTogcGFnaW5hdGVTdGF0ZSggJ2Rlc2t0b3AtYXR0YWNobWVudHMnIClcIlxuICAgICAgICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImF0dGFjaG1lbnRUeXBlQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+QXR0YWNobWVudCBUeXBlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0uYXR0YWNobWVudFR5cGVEZXNjcmlwdGlvbiB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuPCEtLSAgICAgICAgICAgICAgICAgICAgT25seSBzaG93IHRoaXMgY29sdW1uIGZvciBwcmVwIHNoZWV0IGF0dGFjaG1lbnQgc2VjdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9yZ1VuaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPk9yZyBVbml0PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ub3JnVW5pdCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RmlsZSBOYW1lPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBhbmNob3IgdG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5maWxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25SaWdodD1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZmlsZUV4dGVuc2lvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RmlsZSBUeXBlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZmlsZUV4dGVuc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1cGxvYWRlZEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5VcGxvYWRlZCBCeTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnVwbG9hZGVkQnkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBsb2FkZWRUaW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlVwbG9hZGVkIERhdGU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51cGxvYWRlZFRpbWVzdGFtcCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RGVzY3JpcHRpb248L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5hdHRhY2htZW50RGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RG93biZzaHk7bG9hZDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVsZXRlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBjb2x1bW5zO1wiPjwvbWF0LXJvdz5cbiAgICAgICAgICAgICAgICA8L21hdC10YWJsZT5cbiAgICAgICAgICAgIDwvbnJjbC1yb3ctbGlzdC1kZXNrdG9wPlxuXG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgcGFnaW5hdGlvbklkPVwiZGVza3RvcC1hdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAocGFnZU51bWJlckNoYW5nZSk9XCJvblBhZ2VOdW1iZXJDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgPjwvbnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbW9iaWxlLXZpZXc+XG4gICAgICAgIDxucmNsLWdhcC8+XG5cbiAgICAgICAgQGlmICggcm93cz8ubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LXNvcnRpbmdcbiAgICAgICAgICAgICAgICBbc29ydENvbHVtbl09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbc29ydENvbHVtbk9wdGlvbnNdPVwic29ydENvbHVtbnNcIlxuICAgICAgICAgICAgICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3Qtc29ydGluZz5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cblxuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtbW9iaWxlPlxuICAgICAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIHJvd3MgfCBwYWdpbmF0ZTogcGFnaW5hdGVTdGF0ZSggJ21vYmlsZS1hdHRhY2htZW50cycgKTsgdHJhY2sgaXRlbS5hdHRhY2htZW50SWQgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGggY2xhc3M9XCJmaWxlbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpbGUgTmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5maWxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblJpZ2h0PVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QXR0YWNobWVudCBUeXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uYXR0YWNobWVudFR5cGVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpbGUgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmZpbGVFeHRlbnNpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VcGxvYWRlZCBCeTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnVwbG9hZGVkQnkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VcGxvYWRlZCBEYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0udXBsb2FkZWRUaW1lc3RhbXAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBzaG93T3JnVW5pdCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZnVsbC13aWR0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+T3JnIFVuaXQ8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0ub3JnVW5pdCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZnVsbC13aWR0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmF0dGFjaG1lbnREZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBjYW5Eb3dubG9hZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIGNhbkRlbGV0ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbnJjbC1yb3ctbGlzdC1tb2JpbGU+XG5cbiAgICAgICAgICAgIDxucmNsLWdhcC8+XG4gICAgICAgIH1cblxuICAgICAgICA8bnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uXG4gICAgICAgICAgICBwYWdpbmF0aW9uSWQ9XCJtb2JpbGUtYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtwYWdlTnVtYmVyXT1cInBhZ2VOdW1iZXJcIlxuICAgICAgICAgICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgICAgICAgICAgKHBhZ2VOdW1iZXJDaGFuZ2UpPVwib25QYWdlTnVtYmVyQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgW25vUm93c01lc3NhZ2VdPVwibm9Sb3dzTWVzc2FnZVwiXG4gICAgICAgID48L25yY2wtcm93LWxpc3QtcGFnaW5hdGlvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9ucmNsLWRldmljZS12aWV3PlxuIl19
|
|
@@ -47,19 +47,21 @@ export class ListEventHistoryComponent extends RowListBase {
|
|
|
47
47
|
return this.rowListProvider.displayRowListPage(res);
|
|
48
48
|
}
|
|
49
49
|
getInitialPageState() {
|
|
50
|
+
if (!this.rowListProvider?.getInitialPageState)
|
|
51
|
+
throw Error('no provider for ListEventHistoryComponent.rowListProvider.getInitialPageState');
|
|
52
|
+
let state = this.rowListProvider.getInitialPageState();
|
|
50
53
|
return {
|
|
54
|
+
instance: state.instance,
|
|
51
55
|
filter: {},
|
|
52
56
|
pageConfig: {
|
|
53
57
|
pageSize: 20,
|
|
54
58
|
pageNumber: 1,
|
|
55
59
|
sortActive: 'dateTime',
|
|
56
60
|
sortDirection: 'desc',
|
|
57
|
-
|
|
61
|
+
...state.pageConfig
|
|
62
|
+
},
|
|
58
63
|
};
|
|
59
64
|
}
|
|
60
|
-
savePageState() {
|
|
61
|
-
// state not saved
|
|
62
|
-
}
|
|
63
65
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListEventHistoryComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
66
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListEventHistoryComponent, selector: "nrcl-list-event-history", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", showPagination: "showPagination", isSupplier: "isSupplier", noRowsMessage: "noRowsMessage" }, usesInheritance: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: paginateState( 'desktop-event-history' )\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\">\n >\n <ng-container matColumnDef=\"dateTime\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Date and Time</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.eventTimestamp }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"changedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>User ID</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.createdByUserId }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.eventHistoryTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"section\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Section</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.sourceObjectNameDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"comment\">\n <mat-header-cell *matHeaderCellDef>Comment</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.comment }}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-event-history\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n @if ( rows?.length > 0 ) {\n <nrcl-gap/>\n\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: paginateState( 'mobile-event-history' ); track item.eventHistoryGuid ) {\n <mat-card>\n <mat-card-title>\n <section title>\n <h2>{{ item.eventTimestamp }}</h2>\n </section>\n </mat-card-title>\n\n <mat-card-content>\n <section>\n <mat-label>User ID</mat-label>\n <div class=\"value\">{{ item.createdByUserId }}</div>\n </section>\n\n <section>\n <mat-label>Type</mat-label>\n <div class=\"value\">{{ item.eventHistoryTypeDescription }}</div>\n </section>\n\n <section full-width>\n <mat-label>Section</mat-label>\n <div class=\"value\">{{ item.sourceObjectNameDescription }}</div>\n </section>\n\n <section full-width>\n <mat-label>Comment</mat-label>\n <div class=\"value\">{{ item.comment }}</div>\n </section>\n </mat-card-content>\n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-event-history\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-dateTime{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-changedBy{flex-basis:120px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-type{flex-basis:80px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-section{flex-basis:230px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-comment{flex-basis:400px;flex-grow:1;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i6.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i7.RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: ["showRowHover"] }, { kind: "component", type: i8.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i9.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: i10.RowListSortingComponent, selector: "nrcl-row-list-sorting", inputs: ["sortColumn", "sortColumnOptions", "sortDirection"], outputs: ["sortChange"] }, { kind: "directive", type: i11.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i11.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i11.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i12.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
65
67
|
}
|
|
@@ -77,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
77
79
|
}], noRowsMessage: [{
|
|
78
80
|
type: Input
|
|
79
81
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ldmVudC1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL2xpc3QtZXZlbnQtaGlzdG9yeS9saXN0LWV2ZW50LWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1ldmVudC1oaXN0b3J5L2xpc3QtZXZlbnQtaGlzdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUE4QnJELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxXQUFvQztJQU5uRjs7UUFRYSxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLG1CQUFjLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLGVBQVUsR0FBWSxLQUFLLENBQUE7UUFDM0Isa0JBQWEsR0FBRyw4QkFBOEIsQ0FBQTtRQUV2RCxpQkFBWSxHQUFHLFlBQVksQ0FBQTtRQUMzQixZQUFPLEdBQUcsQ0FBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFFLENBQUE7UUFDbkUsZ0JBQVcsR0FBRztZQUNWLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO1lBQ2xELEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO1lBQ3JDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFO1NBQzlDLENBQUE7S0FtQ0o7SUFqQ0csZ0JBQWdCO1FBQ1osSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCO1lBQUcsTUFBTSxLQUFLLENBQUUsNEVBQTRFLENBQUUsQ0FBQTtRQUUzSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUU7WUFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNwQyxDQUFFLENBQUE7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFFLEdBQVE7UUFDZixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0I7WUFBRyxNQUFNLEtBQUssQ0FBRSw4RUFBOEUsQ0FBRSxDQUFBO1FBRTlJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBRSxHQUFHLENBQUUsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixhQUFhLEVBQUUsTUFBTTthQUN4QjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNULGtCQUFrQjtJQUN0QixDQUFDOytHQWhEUSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwUENqQ3RDLG9pTEE4SEE7OzRGRDdGYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFJvd0xpc3RCYXNlLCBSb3dMaXN0U3RhdGUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9yb3ctbGlzdC5iYXNlXCI7XG5pbXBvcnQgeyBEQVRFX0ZPUk1BVFMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZGF0ZS51dGlsXCI7XG5cbmV4cG9ydCB0eXBlIEV2ZW50SGlzdG9yeVRhYmxlUm93ID0ge1xuICAgIGV2ZW50VGltZXN0YW1wOiBzdHJpbmdcbiAgICBjcmVhdGVkQnlVc2VySWQ6IHN0cmluZ1xuICAgIGV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgc291cmNlT2JqZWN0TmFtZURlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBjb21tZW50OiBzdHJpbmdcbiAgICBldmVudEhpc3RvcnlHdWlkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hFdmVudEhpc3RvcnlQYXJhbWV0ZXJzID0geyBcbiAgICBpc1N1cHBsaWVyOiBib29sZWFuIFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciBcbiAgICBwYWdlUm93Q291bnQ6IG51bWJlciBcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcgXG4gICAgc29ydERpcmVjdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRIaXN0b3J5Um93TGlzdFByb3ZpZGVyPFIsTD1hbnk+IHtcbiAgICBmZXRjaEV2ZW50SGlzdG9yeSggeDogRmV0Y2hFdmVudEhpc3RvcnlQYXJhbWV0ZXJzICk6IE9ic2VydmFibGU8TD4gICAgXG4gICAgZGlzcGxheVJvd0xpc3RQYWdlKCByZXM6IEwgKTogRXZlbnRIaXN0b3J5VGFibGVSb3dbXVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJucmNsLWxpc3QtZXZlbnQtaGlzdG9yeVwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC1ldmVudC1oaXN0b3J5LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9saXN0LWV2ZW50LWhpc3RvcnkuY29tcG9uZW50LnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0RXZlbnRIaXN0b3J5Q29tcG9uZW50IGV4dGVuZHMgUm93TGlzdEJhc2U8e30sRXZlbnRIaXN0b3J5VGFibGVSb3c+IHtcbiAgICBASW5wdXQoKSByb3dMaXN0UHJvdmlkZXI/OiBFdmVudEhpc3RvcnlSb3dMaXN0UHJvdmlkZXI8RXZlbnRIaXN0b3J5VGFibGVSb3c+XG4gICAgQElucHV0KCkgY2FuRGVsZXRlID0gdHJ1ZVxuICAgIEBJbnB1dCgpIHNob3dQYWdpbmF0aW9uID0gZmFsc2VcbiAgICBASW5wdXQoKSBpc1N1cHBsaWVyOiBib29sZWFuID0gZmFsc2VcbiAgICBASW5wdXQoKSBub1Jvd3NNZXNzYWdlID0gXCJObyBjb21tZW50cyBoYXZlIGJlZW4gYWRkZWQuXCJcblxuICAgIERBVEVfRk9STUFUUyA9IERBVEVfRk9STUFUU1xuICAgIGNvbHVtbnMgPSBbICdkYXRlVGltZScsICdjaGFuZ2VkQnknLCAndHlwZScsICdzZWN0aW9uJywgJ2NvbW1lbnQnIF1cbiAgICBzb3J0Q29sdW1ucyA9IFtcbiAgICAgICAgeyBjb2RlOiAnZGF0ZVRpbWUnLCBkZXNjcmlwdGlvbjogJ0RhdGUgYW5kIFRpbWUnIH0sXG4gICAgICAgIHsgY29kZTogJ2NoYW5nZWRCeScsIGRlc2NyaXB0aW9uOiAnQ2hhbmdlZCBCeScgfSxcbiAgICAgICAgeyBjb2RlOiAndHlwZScsIGRlc2NyaXB0aW9uOiAnVHlwZScgfSxcbiAgICAgICAgeyBjb2RlOiAnc2VjdGlvbicsIGRlc2NyaXB0aW9uOiAnU2VjdGlvbicgfSxcbiAgICBdXG5cbiAgICBmZXRjaFJvd0xpc3RQYWdlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5mZXRjaEV2ZW50SGlzdG9yeSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RFdmVudEhpc3RvcnlDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLmZldGNoUm93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZmV0Y2hFdmVudEhpc3RvcnkoIHtcbiAgICAgICAgICAgIGlzU3VwcGxpZXI6IHRoaXMuaXNTdXBwbGllcixcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBhZ2VSb3dDb3VudDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgfSApXG4gICAgfVxuXG4gICAgcGFyc2VSb3dzKCByZXM6IGFueSApOiBFdmVudEhpc3RvcnlUYWJsZVJvd1tdIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRpc3BsYXlSb3dMaXN0UGFnZSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RFdmVudEhpc3RvcnlDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLmRpc3BsYXlSb3dMaXN0UGFnZScgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5kaXNwbGF5Um93TGlzdFBhZ2UoIHJlcyApXG4gICAgfVxuXG4gICAgZ2V0SW5pdGlhbFBhZ2VTdGF0ZSgpOiBSb3dMaXN0U3RhdGU8e30+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcjoge30sXG4gICAgICAgICAgICBwYWdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDIwLFxuICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICAgICAgc29ydEFjdGl2ZTogJ2RhdGVUaW1lJyxcbiAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlUGFnZVN0YXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBzdGF0ZSBub3Qgc2F2ZWRcbiAgICB9XG59XG4iLCI8bnJjbC1kZXZpY2Utdmlldz5cbiAgICA8bmctdGVtcGxhdGUgZGVza3RvcC12aWV3PlxuICAgICAgICBAaWYgKCByb3dzPy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcCBbc2hvd1Jvd0hvdmVyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdkZXNrdG9wLWV2ZW50LWhpc3RvcnknIClcIlxuICAgICAgICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCAkZXZlbnQgKVwiPlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlVGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RGF0ZSBhbmQgVGltZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmV2ZW50VGltZXN0YW1wIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY2hhbmdlZEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Vc2VyIElEPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0uY3JlYXRlZEJ5VXNlcklkIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+VHlwZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbiB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlNlY3Rpb248L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtY2VsbC1jb250ZW50IHRvb2x0aXA+e3sgaXRlbS5zb3VyY2VPYmplY3ROYW1lRGVzY3JpcHRpb24gfX08L25yY2wtY2VsbC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjb21tZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkNvbW1lbnQ8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jb21tZW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1ucztcIj48L21hdC1yb3c+XG4gICAgICAgICAgICAgICAgPC9tYXQtdGFibGU+XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3QtZGVza3RvcD5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cImRlc2t0b3AtZXZlbnQtaGlzdG9yeVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAocGFnZU51bWJlckNoYW5nZSk9XCJvblBhZ2VOdW1iZXJDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgPjwvbnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbW9iaWxlLXZpZXc+XG4gICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuXG4gICAgICAgICAgICA8bnJjbC1yb3ctbGlzdC1zb3J0aW5nXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5dPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5PcHRpb25zXT1cInNvcnRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LXNvcnRpbmc+XG5cbiAgICAgICAgICAgIDxucmNsLWdhcC8+XG5cbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LW1vYmlsZT5cbiAgICAgICAgICAgICAgICBAZm9yICggaXRlbSBvZiByb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdtb2JpbGUtZXZlbnQtaGlzdG9yeScgKTsgdHJhY2sgaXRlbS5ldmVudEhpc3RvcnlHdWlkICkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57eyBpdGVtLmV2ZW50VGltZXN0YW1wIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Vc2VyIElEPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uY3JlYXRlZEJ5VXNlcklkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VjdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnNvdXJjZU9iamVjdE5hbWVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q29tbWVudDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmNvbW1lbnQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LW1vYmlsZT5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cIm1vYmlsZS1ldmVudC1oaXN0b3J5XCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgIFtyb3dDb3VudF09XCJ0b3RhbFJvd0NvdW50XCJcbiAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIFtub1Jvd3NNZXNzYWdlXT1cIm5vUm93c01lc3NhZ2VcIlxuICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbnJjbC1kZXZpY2Utdmlldz5cbiJdfQ==
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ldmVudC1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL2xpc3QtZXZlbnQtaGlzdG9yeS9saXN0LWV2ZW50LWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1ldmVudC1oaXN0b3J5L2xpc3QtZXZlbnQtaGlzdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWtDckQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLFdBQW9DO0lBTm5GOztRQVFhLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsbUJBQWMsR0FBRyxLQUFLLENBQUE7UUFDdEIsZUFBVSxHQUFZLEtBQUssQ0FBQTtRQUMzQixrQkFBYSxHQUFHLDhCQUE4QixDQUFBO1FBRXZELGlCQUFZLEdBQUcsWUFBWSxDQUFBO1FBQzNCLFlBQU8sR0FBRyxDQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUUsQ0FBQTtRQUNuRSxnQkFBVyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUU7WUFDaEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7WUFDckMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7U0FDOUMsQ0FBQTtLQXFDSjtJQW5DRyxnQkFBZ0I7UUFDWixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUI7WUFBRyxNQUFNLEtBQUssQ0FBRSw0RUFBNEUsQ0FBRSxDQUFBO1FBRTNJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBRTtZQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3BDLENBQUUsQ0FBQTtJQUNQLENBQUM7SUFFRCxTQUFTLENBQUUsR0FBUTtRQUNmLElBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQjtZQUFHLE1BQU0sS0FBSyxDQUFFLDhFQUE4RSxDQUFFLENBQUE7UUFFOUksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFFLEdBQUcsQ0FBRSxDQUFBO0lBQ3pELENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxtQkFBbUI7WUFBRyxNQUFNLEtBQUssQ0FBRSwrRUFBK0UsQ0FBRSxDQUFBO1FBRWhKLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUV0RCxPQUFPO1lBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixhQUFhLEVBQUUsTUFBTTtnQkFDckIsR0FBRyxLQUFLLENBQUMsVUFBVTthQUN0QjtTQUNKLENBQUE7SUFDTCxDQUFDOytHQWxEUSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwUENyQ3RDLG9pTEE4SEE7OzRGRHpGYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFJvd0xpc3RCYXNlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcm93LWxpc3QuYmFzZVwiO1xuaW1wb3J0IHsgREFURV9GT1JNQVRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RhdGUudXRpbFwiO1xuaW1wb3J0IHsgSW5pdGlhbFN0YXRlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5iYXNlXCI7XG5cbmV4cG9ydCB0eXBlIEV2ZW50SGlzdG9yeVRhYmxlUm93ID0ge1xuICAgIGV2ZW50VGltZXN0YW1wOiBzdHJpbmdcbiAgICBjcmVhdGVkQnlVc2VySWQ6IHN0cmluZ1xuICAgIGV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgc291cmNlT2JqZWN0TmFtZURlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBjb21tZW50OiBzdHJpbmdcbiAgICBldmVudEhpc3RvcnlHdWlkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hFdmVudEhpc3RvcnlQYXJhbWV0ZXJzID0geyBcbiAgICBpc1N1cHBsaWVyOiBib29sZWFuIFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciBcbiAgICBwYWdlUm93Q291bnQ6IG51bWJlciBcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcgXG4gICAgc29ydERpcmVjdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEluaXRpYWxFdmVudEhpc3RvcnlTdGF0ZSA9IE9taXQ8SW5pdGlhbFN0YXRlPHt9PiwnZmlsdGVyJ3wncGFnZUNvbmZpZyc+ICYgUGFydGlhbDxQaWNrPEluaXRpYWxTdGF0ZTx7fT4sJ2ZpbHRlcid8J3BhZ2VDb25maWcnPj5cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEhpc3RvcnlSb3dMaXN0UHJvdmlkZXI8UixMPWFueT4ge1xuICAgIGZldGNoRXZlbnRIaXN0b3J5KCB4OiBGZXRjaEV2ZW50SGlzdG9yeVBhcmFtZXRlcnMgKTogT2JzZXJ2YWJsZTxMPiAgICBcbiAgICBkaXNwbGF5Um93TGlzdFBhZ2UoIHJlczogTCApOiBFdmVudEhpc3RvcnlUYWJsZVJvd1tdXG4gICAgZ2V0SW5pdGlhbFBhZ2VTdGF0ZSgpOiBJbml0aWFsRXZlbnRIaXN0b3J5U3RhdGVcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnJjbC1saXN0LWV2ZW50LWhpc3RvcnlcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2xpc3QtZXZlbnQtaGlzdG9yeS5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vbGlzdC1ldmVudC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTGlzdEV2ZW50SGlzdG9yeUNvbXBvbmVudCBleHRlbmRzIFJvd0xpc3RCYXNlPHt9LEV2ZW50SGlzdG9yeVRhYmxlUm93PiB7XG4gICAgQElucHV0KCkgcm93TGlzdFByb3ZpZGVyPzogRXZlbnRIaXN0b3J5Um93TGlzdFByb3ZpZGVyPEV2ZW50SGlzdG9yeVRhYmxlUm93PlxuICAgIEBJbnB1dCgpIGNhbkRlbGV0ZSA9IHRydWVcbiAgICBASW5wdXQoKSBzaG93UGFnaW5hdGlvbiA9IGZhbHNlXG4gICAgQElucHV0KCkgaXNTdXBwbGllcjogYm9vbGVhbiA9IGZhbHNlXG4gICAgQElucHV0KCkgbm9Sb3dzTWVzc2FnZSA9IFwiTm8gY29tbWVudHMgaGF2ZSBiZWVuIGFkZGVkLlwiXG5cbiAgICBEQVRFX0ZPUk1BVFMgPSBEQVRFX0ZPUk1BVFNcbiAgICBjb2x1bW5zID0gWyAnZGF0ZVRpbWUnLCAnY2hhbmdlZEJ5JywgJ3R5cGUnLCAnc2VjdGlvbicsICdjb21tZW50JyBdXG4gICAgc29ydENvbHVtbnMgPSBbXG4gICAgICAgIHsgY29kZTogJ2RhdGVUaW1lJywgZGVzY3JpcHRpb246ICdEYXRlIGFuZCBUaW1lJyB9LFxuICAgICAgICB7IGNvZGU6ICdjaGFuZ2VkQnknLCBkZXNjcmlwdGlvbjogJ0NoYW5nZWQgQnknIH0sXG4gICAgICAgIHsgY29kZTogJ3R5cGUnLCBkZXNjcmlwdGlvbjogJ1R5cGUnIH0sXG4gICAgICAgIHsgY29kZTogJ3NlY3Rpb24nLCBkZXNjcmlwdGlvbjogJ1NlY3Rpb24nIH0sXG4gICAgXVxuXG4gICAgZmV0Y2hSb3dMaXN0UGFnZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZmV0Y2hFdmVudEhpc3RvcnkgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0RXZlbnRIaXN0b3J5Q29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5mZXRjaFJvd0xpc3RQYWdlJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmZldGNoRXZlbnRIaXN0b3J5KCB7XG4gICAgICAgICAgICBpc1N1cHBsaWVyOiB0aGlzLmlzU3VwcGxpZXIsXG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgICBwYWdlUm93Q291bnQ6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnRBY3RpdmUsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0gKVxuICAgIH1cblxuICAgIHBhcnNlUm93cyggcmVzOiBhbnkgKTogRXZlbnRIaXN0b3J5VGFibGVSb3dbXSB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kaXNwbGF5Um93TGlzdFBhZ2UgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0RXZlbnRIaXN0b3J5Q29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5kaXNwbGF5Um93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGlzcGxheVJvd0xpc3RQYWdlKCByZXMgKVxuICAgIH1cblxuICAgIGdldEluaXRpYWxQYWdlU3RhdGUoKTogSW5pdGlhbFN0YXRlPHt9PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5nZXRJbml0aWFsUGFnZVN0YXRlICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEV2ZW50SGlzdG9yeUNvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIuZ2V0SW5pdGlhbFBhZ2VTdGF0ZScgKVxuXG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMucm93TGlzdFByb3ZpZGVyLmdldEluaXRpYWxQYWdlU3RhdGUoKVxuXG4gICAgICAgIHJldHVybiB7ICAgICAgICAgICAgXG4gICAgICAgICAgICBpbnN0YW5jZTogc3RhdGUuaW5zdGFuY2UsXG4gICAgICAgICAgICBmaWx0ZXI6IHt9LFxuICAgICAgICAgICAgcGFnZUNvbmZpZzoge1xuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBwYWdlTnVtYmVyOiAxLFxuICAgICAgICAgICAgICAgIHNvcnRBY3RpdmU6ICdkYXRlVGltZScsXG4gICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBhZ2VDb25maWdcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bnJjbC1kZXZpY2Utdmlldz5cbiAgICA8bmctdGVtcGxhdGUgZGVza3RvcC12aWV3PlxuICAgICAgICBAaWYgKCByb3dzPy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcCBbc2hvd1Jvd0hvdmVyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdkZXNrdG9wLWV2ZW50LWhpc3RvcnknIClcIlxuICAgICAgICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCAkZXZlbnQgKVwiPlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlVGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RGF0ZSBhbmQgVGltZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmV2ZW50VGltZXN0YW1wIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY2hhbmdlZEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Vc2VyIElEPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0uY3JlYXRlZEJ5VXNlcklkIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+VHlwZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbiB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlNlY3Rpb248L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtY2VsbC1jb250ZW50IHRvb2x0aXA+e3sgaXRlbS5zb3VyY2VPYmplY3ROYW1lRGVzY3JpcHRpb24gfX08L25yY2wtY2VsbC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjb21tZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkNvbW1lbnQ8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jb21tZW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1ucztcIj48L21hdC1yb3c+XG4gICAgICAgICAgICAgICAgPC9tYXQtdGFibGU+XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3QtZGVza3RvcD5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cImRlc2t0b3AtZXZlbnQtaGlzdG9yeVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAocGFnZU51bWJlckNoYW5nZSk9XCJvblBhZ2VOdW1iZXJDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgPjwvbnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbW9iaWxlLXZpZXc+XG4gICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuXG4gICAgICAgICAgICA8bnJjbC1yb3ctbGlzdC1zb3J0aW5nXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5dPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW3NvcnRDb2x1bW5PcHRpb25zXT1cInNvcnRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LXNvcnRpbmc+XG5cbiAgICAgICAgICAgIDxucmNsLWdhcC8+XG5cbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LW1vYmlsZT5cbiAgICAgICAgICAgICAgICBAZm9yICggaXRlbSBvZiByb3dzIHwgcGFnaW5hdGU6IHBhZ2luYXRlU3RhdGUoICdtb2JpbGUtZXZlbnQtaGlzdG9yeScgKTsgdHJhY2sgaXRlbS5ldmVudEhpc3RvcnlHdWlkICkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57eyBpdGVtLmV2ZW50VGltZXN0YW1wIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Vc2VyIElEPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uY3JlYXRlZEJ5VXNlcklkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmV2ZW50SGlzdG9yeVR5cGVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VjdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnNvdXJjZU9iamVjdE5hbWVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q29tbWVudDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmNvbW1lbnQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LW1vYmlsZT5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cIm1vYmlsZS1ldmVudC1oaXN0b3J5XCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgIFtyb3dDb3VudF09XCJ0b3RhbFJvd0NvdW50XCJcbiAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIFtub1Jvd3NNZXNzYWdlXT1cIm5vUm93c01lc3NhZ2VcIlxuICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbnJjbC1kZXZpY2Utdmlldz5cbiJdfQ==
|