vcomply-workflow-engine 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/pipes/get-editor-config.pipe.mjs +3 -3
- package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +37 -21
- package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +15 -5
- package/esm2022/lib/report-a-case/constants/report-case.constants.mjs +15 -1
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +2 -1
- package/fesm2022/vcomply-workflow-engine.mjs +66 -25
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/pipes/get-editor-config.pipe.d.ts +1 -1
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +3 -0
- package/lib/report-a-case/constants/report-case.constants.d.ts +1 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class GetEditorConfigPipe {
|
|
4
|
-
transform(index) {
|
|
4
|
+
transform(index, additionalValue) {
|
|
5
5
|
return {
|
|
6
6
|
mode: 'prime',
|
|
7
7
|
colorPalette: true,
|
|
8
8
|
link: true,
|
|
9
9
|
placeholder: 'Add value',
|
|
10
|
-
id:
|
|
10
|
+
id: additionalValue + index
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GetEditorConfigPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
20
20
|
pure: true
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVkaXRvci1jb25maWcucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3BpcGVzL2dldC1lZGl0b3ItY29uZmlnLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBUXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUFDLEtBQWEsRUFBRSxlQUF1QjtRQUM5QyxPQUFTO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixZQUFZLEVBQUUsSUFBSTtZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLEVBQUUsRUFBRSxlQUFlLEdBQUcsS0FBSztTQUM1QixDQUFDO0lBQ04sQ0FBQzsrR0FUVSxtQkFBbUI7NkdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ0B2Y29tcGx5L2VkaXRvcic7XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnZ2V0RWRpdG9yQ29uZmlnJyxcbiAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZXRFZGl0b3JDb25maWdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShpbmRleDogbnVtYmVyLCBhZGRpdGlvbmFsVmFsdWU6IHN0cmluZyk6IEVkaXRvckNvbmZpZyB7XG4gICAgcmV0dXJuICAge1xuICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnQWRkIHZhbHVlJyxcbiAgICAgICAgaWQ6IGFkZGl0aW9uYWxWYWx1ZSArIGluZGV4XG4gICAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -99,20 +99,32 @@ export class CaseCategoryComponent {
|
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
populateInitialCategory() {
|
|
102
|
-
if (
|
|
102
|
+
if (this.isACTWWorkflow()) {
|
|
103
103
|
this.updateACTWCategory();
|
|
104
|
+
return;
|
|
104
105
|
}
|
|
105
|
-
|
|
106
|
+
if (this.isRACWorkflow()) {
|
|
106
107
|
this.updateRACCategory();
|
|
108
|
+
return;
|
|
107
109
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
110
|
+
this.handleDefaultCase();
|
|
111
|
+
}
|
|
112
|
+
isACTWWorkflow() {
|
|
113
|
+
return ((this.initialCategory?.length || this.initialAdditionalCategory?.length) &&
|
|
114
|
+
this.workflowType === 'ACTW');
|
|
115
|
+
}
|
|
116
|
+
isRACWorkflow() {
|
|
117
|
+
return (this.initialCategory?.length || this.initialAdditionalCategory?.length) && this.workflowType === 'RAC';
|
|
118
|
+
}
|
|
119
|
+
handleDefaultCase() {
|
|
120
|
+
const isEditModeWithRestrictions = this.mode === 'EDIT' &&
|
|
121
|
+
this.workflowType !== 'ACTW' &&
|
|
122
|
+
this.caseTypeSelected === this.caseType.ADD_CASE_TO_WORKFLOW;
|
|
123
|
+
this.state = isEditModeWithRestrictions
|
|
124
|
+
? SelectionState.DISABLED
|
|
125
|
+
: SelectionState.EMPTY;
|
|
126
|
+
if (isEditModeWithRestrictions) {
|
|
127
|
+
this.config.disabledText = this.categoryTexts.case_details.category.placeholder;
|
|
116
128
|
}
|
|
117
129
|
}
|
|
118
130
|
updateRACCategory() {
|
|
@@ -127,22 +139,22 @@ export class CaseCategoryComponent {
|
|
|
127
139
|
}));
|
|
128
140
|
}
|
|
129
141
|
if (this.initialAdditionalCategory?.length) {
|
|
130
|
-
this.
|
|
131
|
-
this.
|
|
132
|
-
this.selectedAdditionalItems = this.caseCategoryList
|
|
133
|
-
.filter((category) => this.initialAdditionalCategory?.includes(category?._id))
|
|
142
|
+
this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialAdditionalCategory?.some((id) => id === category?._id) || this.initialAdditionalCategory?.includes(category?._id));
|
|
143
|
+
this.selectedAdditionalItems = this.selectedAdditionalCategoryList
|
|
134
144
|
.map((category) => ({
|
|
135
145
|
label: category?.name,
|
|
136
146
|
value: category?._id,
|
|
137
147
|
}));
|
|
148
|
+
this.additionalCategoryState = SelectionState.SELECTED;
|
|
149
|
+
if (!this.initialCategory?.length) {
|
|
150
|
+
this.handleDefaultCase();
|
|
151
|
+
}
|
|
138
152
|
}
|
|
139
153
|
}
|
|
140
154
|
updateACTWCategory() {
|
|
141
155
|
this.additionalCategoryState = SelectionState.SELECTED;
|
|
142
|
-
this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialCategory.some((id) => id === category?._id));
|
|
143
|
-
this.selectedAdditionalItems = this.
|
|
144
|
-
.filter((category) => this.initialCategory.includes(category?._id))
|
|
145
|
-
.map((category) => ({
|
|
156
|
+
this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialCategory.some((id) => id === category?._id) || this.initialAdditionalCategory.includes(category?._id));
|
|
157
|
+
this.selectedAdditionalItems = this.selectedAdditionalCategoryList.map((category) => ({
|
|
146
158
|
label: category?.name,
|
|
147
159
|
value: category?._id,
|
|
148
160
|
}));
|
|
@@ -245,6 +257,7 @@ export class CaseCategoryComponent {
|
|
|
245
257
|
}
|
|
246
258
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseCategoryComponent, deps: [{ token: i1.ReportACaseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
247
259
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaseCategoryComponent, selector: "app-case-category", inputs: { payload: "payload", fieldSelected: "fieldSelected", caseTypeSelected: "caseTypeSelected", initialSelection: "initialSelection", initialAdditionalSelection: "initialAdditionalSelection", mode: "mode", workflowType: "workflowType" }, outputs: { onCategoryChange: "onCategoryChange", fieldClicked: "fieldClicked" }, usesOnChanges: true, ngImport: i0, template: `
|
|
260
|
+
|
|
248
261
|
<app-field-holder
|
|
249
262
|
[image]="ASSETS.case_category"
|
|
250
263
|
[disabled]="fieldSelector?.includes(fieldSelected)"
|
|
@@ -275,6 +288,7 @@ export class CaseCategoryComponent {
|
|
|
275
288
|
<vcomply-editor
|
|
276
289
|
[(ngModel)]="tag.value"
|
|
277
290
|
[editorConfig]="customField"
|
|
291
|
+
[editorConfig]="(i | getEditorConfig: 'category') ?? customField"
|
|
278
292
|
></vcomply-editor>
|
|
279
293
|
</div>
|
|
280
294
|
</ng-container>
|
|
@@ -306,7 +320,7 @@ export class CaseCategoryComponent {
|
|
|
306
320
|
<vcomply-editor
|
|
307
321
|
[ngModel]="tag?.value || ''"
|
|
308
322
|
(ngModelChange)="updateCustomField($event, i)"
|
|
309
|
-
[editorConfig]="(i | getEditorConfig) ?? customField"
|
|
323
|
+
[editorConfig]="(i | getEditorConfig: 'additionalCategory') ?? customField"
|
|
310
324
|
></vcomply-editor>
|
|
311
325
|
</div>
|
|
312
326
|
</ng-container>
|
|
@@ -342,6 +356,7 @@ export class CaseCategoryComponent {
|
|
|
342
356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseCategoryComponent, decorators: [{
|
|
343
357
|
type: Component,
|
|
344
358
|
args: [{ selector: 'app-case-category', template: `
|
|
359
|
+
|
|
345
360
|
<app-field-holder
|
|
346
361
|
[image]="ASSETS.case_category"
|
|
347
362
|
[disabled]="fieldSelector?.includes(fieldSelected)"
|
|
@@ -372,6 +387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
372
387
|
<vcomply-editor
|
|
373
388
|
[(ngModel)]="tag.value"
|
|
374
389
|
[editorConfig]="customField"
|
|
390
|
+
[editorConfig]="(i | getEditorConfig: 'category') ?? customField"
|
|
375
391
|
></vcomply-editor>
|
|
376
392
|
</div>
|
|
377
393
|
</ng-container>
|
|
@@ -403,7 +419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
403
419
|
<vcomply-editor
|
|
404
420
|
[ngModel]="tag?.value || ''"
|
|
405
421
|
(ngModelChange)="updateCustomField($event, i)"
|
|
406
|
-
[editorConfig]="(i | getEditorConfig) ?? customField"
|
|
422
|
+
[editorConfig]="(i | getEditorConfig: 'additionalCategory') ?? customField"
|
|
407
423
|
></vcomply-editor>
|
|
408
424
|
</div>
|
|
409
425
|
</ng-container>
|
|
@@ -454,4 +470,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
454
470
|
}], fieldClicked: [{
|
|
455
471
|
type: Output
|
|
456
472
|
}] } });
|
|
457
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL2NvbXBvbmVudHMvY2FzZS1jYXRlZ29yeS9jYXNlLWNhdGVnb3J5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRCxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFzR2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFtQ2hDLElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7SUFFcEMsQ0FBQztJQUNELElBQWEsMEJBQTBCLENBQUMsS0FBVTtRQUNoRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBT0QsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBL0NuRCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVE7WUFDWixHQUFHLGVBQWUsQ0FBQyxhQUFhO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FB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Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RlQ7eUdBbUNRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBSU8sMEJBQTBCO3NCQUF0QyxLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2Vzc3RzLmNvbnN0YW50cyc7XG5pbXBvcnQge1xuICBBQ1RJT05fQ09ERSxcbiAgRklFTERfU0VMRUNUT1IsXG4gIFJFUE9SVF9DQVNFLFxuICBTRUxFQ1RPUl9DT05GSUcsXG4gIFNlbGVjdGlvblBvcHVwU3RhdGUsXG4gIFNlbGVjdGlvblN0YXRlLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcbmltcG9ydCB7IHJlcG9ydCB9IGZyb20gJy4uL2Nhc2UtdHlwZS1zbGlkZXIvY2FzZS10eXBlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRBQ2FzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQtYS1jYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAnQHZjb21wbHkvZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhc2UtY2F0ZWdvcnknLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxhcHAtZmllbGQtaG9sZGVyXG4gICAgICBbaW1hZ2VdPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkU2VsZWN0ZWQpXCJcbiAgICAgIFthY3RpdmVdPVwiY2F0ZWdvcnlDbGlja2VkXCJcbiAgICAgIFtjaGVja2VkXT1cInBheWxvYWQ/LmNhdGVnb3J5Py5pZHM/Lmxlbmd0aFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBmaWVsZD5cbiAgICAgICAgPGFwcC1mb3JtLXNlbGVjdEJveFxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICAgIFtwb3B1cFN0YXRlXT1cIlNlbGVjdGlvblBvcHVwU3RhdGUuU0VMRUNUSU9OX0RJQUxPR1wiXG4gICAgICAgICAgW2NoaXBJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgICBbZWRpdERpc2FibGVkXT1cImNhdGVnb3J5RWRpdERpc2FibGVcIlxuICAgICAgICAgIFtyZW1vdmFibGVdPVwiIWNhdGVnb3J5RWRpdERpc2FibGVcIlxuICAgICAgICAgIChmaWVsZENsaWNrZWQpPVwiYWN0aXZhdGVTZWxlY3RvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtTGlzdENoYW5nZSk9XCJzZXRDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXBwLXZjLWxhYmVsXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJjYXRlZ29yeVRleHRzLmNhc2VfZGV0YWlscy5jYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgPjwvYXBwLXZjLWxhYmVsPlxuICAgICAgICA8L2FwcC1mb3JtLXNlbGVjdEJveD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBwYXlsb2FkPy5jYXRlZ29yeT8uY3VzdG9tX2ZpZWxkc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+e3sgdGFnPy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLnZhbHVlXCJcbiAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiY3VzdG9tRmllbGRcIlxuICAgICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYXBwLWZpZWxkLWhvbGRlcj5cbiAgICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICAgKm5nSWY9XCJjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPV1wiXG4gICAgICBbZGlzYWJsZWRdPVwiZmllbGRTZWxlY3RlZCA9PT0gJ1JDJ1wiXG4gICAgICBbYWN0aXZlXT1cImNhdGVnb3J5Q2xpY2tlZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBmaWVsZD5cbiAgICAgICAgPGFwcC1mb3JtLXNlbGVjdEJveFxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICBbc3RhdGVdPVwiYWRkaXRpb25hbENhdGVnb3J5U3RhdGVcIlxuICAgICAgICAgIFtwb3B1cFN0YXRlXT1cIlNlbGVjdGlvblBvcHVwU3RhdGUuU0VMRUNUSU9OX0RJQUxPR1wiXG4gICAgICAgICAgW2NoaXBJdGVtc109XCJzZWxlY3RlZEFkZGl0aW9uYWxJdGVtc1wiXG4gICAgICAgICAgKGZpZWxkQ2xpY2tlZCk9XCJhY3RpdmF0ZUFkZGl0aW9uYWxDYXRlZ29yeVNlbGVjdG9yKCRldmVudClcIlxuICAgICAgICAgIChzZWxlY3RlZEl0ZW1MaXN0Q2hhbmdlKT1cInNldEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXBwLXZjLWxhYmVsXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJjYXRlZ29yeVRleHRzLmNhc2VfZGV0YWlscy5hZGRpdGlvbmFsX2NhdGVnb3J5LnRpdGxlXCJcbiAgICAgICAgICA+PC9hcHAtdmMtbGFiZWw+XG4gICAgICAgIDwvYXBwLWZvcm0tc2VsZWN0Qm94PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHBheWxvYWQ/LmFkZGl0aW9uYWxfY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+e3sgdGFnPy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInRhZz8udmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ3VzdG9tRmllbGQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIihpIHwgZ2V0RWRpdG9yQ29uZmlnKSA/PyBjdXN0b21GaWVsZFwiXG4gICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hcHAtZmllbGQtaG9sZGVyPlxuICAgIDxhcHAtY2F0ZWdvcnktbGlzdC1zZWxlY3Rpb25cbiAgICAgICpuZ0lmPVwiY2F0ZWdvcnlDbGlja2VkXCJcbiAgICAgIFtjYXRlZ29yeUxpc3RdPVwiY2FzZUNhdGVnb3J5TGlzdFwiXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICBbbG9hZGluZ109XCJjYXRlZ29yeUxpc3RMb2FkZXJcIlxuICAgICAgW3NlbGVjdGVkTGlzdF09XCJzZWxlY3RlZENhdGVnb3J5TGlzdFwiXG4gICAgICBbc2VsZWN0aW9uTW9kZV09XCJcbiAgICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0UgPyAnbXVsdGlwbGUnIDogJ3NpbmdsZSdcbiAgICAgIFwiXG4gICAgICAoY2FuY2VsKT1cImFjdGl2YXRlU2VsZWN0b3IoZmFsc2UpXCJcbiAgICAgIChuZXh0KT1cInNhdmVTZWxlY3RlZENhdGVnb3J5TGlzdCgkZXZlbnQpXCJcbiAgICA+PC9hcHAtY2F0ZWdvcnktbGlzdC1zZWxlY3Rpb24+IFxuICAgIDxhcHAtY2F0ZWdvcnktbGlzdC1zZWxlY3Rpb25cbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbENhdGVnb3J5Q2xpY2tlZFwiXG4gICAgICBbY2F0ZWdvcnlMaXN0XT1cIlxuICAgICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPVyAmJlxuICAgICAgICBwYXlsb2FkPy5jYXRlZ29yeT8uaWRzPy5sZW5ndGhcbiAgICAgICAgICA/IGZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdFxuICAgICAgICAgIDogY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgXCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgIFtsb2FkaW5nXT1cImNhdGVnb3J5TGlzdExvYWRlclwiXG4gICAgICBbc2VsZWN0ZWRMaXN0XT1cInNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdFwiXG4gICAgICAoY2FuY2VsKT1cImFjdGl2YXRlQWRkaXRpb25hbENhdGVnb3J5U2VsZWN0b3IoZmFsc2UpXCJcbiAgICAgIChuZXh0KT1cInNhdmVTZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXG4gICAgPjwvYXBwLWNhdGVnb3J5LWxpc3Qtc2VsZWN0aW9uPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXNlQ2F0ZWdvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc3tcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjYXRlZ29yeVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGNhc2VDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG4gIGNvbmZpZzogYW55ID0ge1xuICAgIC4uLlNFTEVDVE9SX0NPTkZJRy5DQVNFX0NBVEVHT1JZLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLmNhdGVnb3J5VGV4dHMuY2FzZV9kZXRhaWxzLmNhdGVnb3J5LnBsYWNlaG9sZGVyLFxuICB9O1xuICBjYXRlZ29yeUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkaXRpb25hbENhdGVnb3J5Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjYXRlZ29yeUxpc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgU2VsZWN0aW9uU3RhdGUgPSBTZWxlY3Rpb25TdGF0ZTtcbiAgU2VsZWN0aW9uUG9wdXBTdGF0ZSA9IFNlbGVjdGlvblBvcHVwU3RhdGU7XG4gIHN0YXRlOiBzdHJpbmcgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgYWRkaXRpb25hbENhdGVnb3J5U3RhdGU6IHN0cmluZyA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEFkZGl0aW9uYWxJdGVtczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgaW5pdGlhbENhdGVnb3J5OiBhbnk7XG4gIGNhc2VUeXBlID0gcmVwb3J0O1xuICBmaWVsZFNlbGVjdG9yID0gRklFTERfU0VMRUNUT1I7XG4gIGN1c3RvbUZpZWxkOiBFZGl0b3JDb25maWcgPSB7XG4gICAgbW9kZTogJ3ByaW1lJyxcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgbGluazogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCB2YWx1ZScsXG4gICAgaWQ6ICdjdXN0b21GaWVsZCdcbiAgfTtcbiAgaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeTogYW55O1xuICBmaWx0ZXJlZENhc2VDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG5cbiAgQElucHV0KCkgcGF5bG9hZDogYW55ID0ge307XG4gIEBJbnB1dCgpIGZpZWxkU2VsZWN0ZWQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjYXNlVHlwZVNlbGVjdGVkOiBhbnk7XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmluaXRpYWxDYXRlZ29yeSA9IHZhbHVlPy5pZHM7XG4gIFxuICB9XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsQWRkaXRpb25hbFNlbGVjdGlvbih2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5ID0gdmFsdWU/LmlkcztcbiAgfVxuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgd29ya2Zsb3dUeXBlOiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KCkgb25DYXRlZ29yeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0QWxsQ2F0ZWdvcmllcygpO1xuICB9XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgXG4gIHVwZGF0ZUN1c3RvbUZpZWxkKHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5Py5jdXN0b21fZmllbGRzKSB7XG4gICAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5jdXN0b21fZmllbGRzW2luZGV4XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuY3VzdG9tX2ZpZWxkcyA9IFsuLi50aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5jdXN0b21fZmllbGRzXTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3BheWxvYWQnXSkge1xuICAgICAgaWYgKCF0aGlzLnBheWxvYWQ/LmNhdGVnb3J5Py5pZHM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5U3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuXG4gICAgICB9XG4gICAgICB0aGlzLnBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbml0aWFsU2VsZWN0aW9uJ10gfHwgY2hhbmdlc1snaW5pdGlhbEFkZGl0aW9uYWxTZWxlY3Rpb24nXSkge1xuICAgICAgdGhpcy5wb3B1bGF0ZUluaXRpYWxDYXRlZ29yeSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFsbENhdGVnb3JpZXMoKSB7XG4gICAgdGhpcy5jYXRlZ29yeUxpc3RMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuY2FzZVNlcnZpY2UuZ2V0QWxsQ2F0ZWdvcmllcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FzZUNhdGVnb3J5TGlzdCA9IHJlcz8uZGF0YTtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICB0aGlzLnBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRDYXRlZ29yeUxpc3QoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwb3B1bGF0ZUluaXRpYWxDYXRlZ29yeSgpIHtcbiAgICBpZiAoKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGggfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5sZW5ndGgpICYmIHRoaXMud29ya2Zsb3dUeXBlID09PSAnQUNUVycpIHtcbiAgICAgIHRoaXMudXBkYXRlQUNUV0NhdGVnb3J5KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmluaXRpYWxDYXRlZ29yeT8ubGVuZ3RoICYmIHRoaXMud29ya2Zsb3dUeXBlID09PSAnUkFDJykge1xuICAgICAgdGhpcy51cGRhdGVSQUNDYXRlZ29yeSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJyAmJlxuICAgICAgdGhpcy5jYXNlVHlwZVNlbGVjdGVkID09PSB0aGlzLmNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXG4gICAgICAgID8gKCh0aGlzLnN0YXRlID0gU2VsZWN0aW9uU3RhdGUuRElTQUJMRUQpLFxuICAgICAgICAgICh0aGlzLmNvbmZpZy5kaXNhYmxlZFRleHQgPVxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVRleHRzLmNhc2VfZGV0YWlscy5jYXRlZ29yeS5wbGFjZWhvbGRlcikpXG4gICAgICAgIDogKHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUkFDQ2F0ZWdvcnkoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3Q/LmZpbHRlcihcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnk/LnNvbWUoKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgICAuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuaW5pdGlhbENhdGVnb3J5Py5zb21lKChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICAgICAgKVxuICAgICAgICAubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5U3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0Py5maWx0ZXIoXG4gICAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeT8uc29tZShcbiAgICAgICAgICAgIChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZFxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5pbmNsdWRlcyhjYXRlZ29yeT8uX2lkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQUNUV0NhdGVnb3J5KCkge1xuICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5U3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdD8uZmlsdGVyKFxuICAgICAgKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgIHRoaXMuaW5pdGlhbENhdGVnb3J5LnNvbWUoKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT4gdGhpcy5pbml0aWFsQ2F0ZWdvcnkuaW5jbHVkZXMoY2F0ZWdvcnk/Ll9pZCkpXG4gICAgICAubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICBsYWJlbDogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgfSkpO1xuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhdGVnb3J5Q2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgKVxuICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgIH0pKTtcbiAgICB0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzID0gZXZlbnQubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gZXZlbnQuZmxhdE1hcChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmN1c3RvbV9maWVsZHNcbiAgICApO1xuICAgIHRoaXMub25DYXRlZ29yeUNoYW5nZS5lbWl0KHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMpO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHRoaXMuY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+ICF0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzLmluY2x1ZGVzKGNhdGVnb3J5Ll9pZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdChldmVudDogYW55KSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3RcbiAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/Ll9pZCA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICAgIClcbiAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgICB9KSk7XG4gICAgICBpZighdGhpcy5wYXlsb2FkWydhZGRpdGlvbmFsX2NhdGVnb3J5J10pe1xuICAgICAgICB0aGlzLnBheWxvYWRbJ2FkZGl0aW9uYWxfY2F0ZWdvcnknXSA9IHt9O1xuICAgICAgfVxuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydpZHMnXSA9IGV2ZW50Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5faWQpO1xuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydjdXN0b21fZmllbGRzJ10gPSBldmVudC5mbGF0TWFwKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uY3VzdG9tX2ZpZWxkc1xuICAgICk7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICBldmVudC5zb21lKChldmVudEl0ZW06IGFueSkgPT4gZXZlbnRJdGVtPy5faWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3QuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2NhdGVnb3J5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlQWRkaXRpb25hbENhdGVnb3J5U2VsZWN0b3IoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2FkZGl0aW9uYWxDYXRlZ29yeScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgICB9XG4gIH1cblxuICBzZXRDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueSkge1xuICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yZXNldENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/LnZhbHVlID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeT8uX2lkXG4gICAgKTtcbiAgICB0aGlzLm9uQ2F0ZWdvcnlDaGFuZ2UuZW1pdCh0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzKTtcbiAgfVxuXG4gIHNldEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKCFldmVudD8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc2V0QWRkaXRpb25hbENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdC5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8udmFsdWUgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5pZHMgPVxuICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Py5faWRcbiAgICAgICk7XG4gIH1cblxuICBnZXQgY2F0ZWdvcnlFZGl0RGlzYWJsZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgJiZcbiAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gdGhpcy5jYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPVyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJ1xuICAgICk7XG4gIH1cblxuICByZXNldENhdGVnb3J5TGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IFtdO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICB0aGlzLmZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdCA9IFsuLi50aGlzLmNhc2VDYXRlZ29yeUxpc3RdO1xuICB9XG5cbiAgcmVzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuaWRzID0gW107XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICB9XG59XG4iXX0=
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL2NvbXBvbmVudHMvY2FzZS1jYXRlZ29yeS9jYXNlLWNhdGVnb3J5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRCxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF3R2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFtQ2hDLElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7SUFFcEMsQ0FBQztJQUNELElBQWEsMEJBQTBCLENBQUMsS0FBVTtRQUNoRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBT0QsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBL0NuRCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVE7WUFDWixHQUFHLGVBQWUsQ0FBQyxhQUFhO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FB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QixxQkFBcUIsaVpBbEd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRlQ7OzRGQUdVLHFCQUFxQjtrQkFwR2pDLFNBQVM7K0JBQ0UsbUJBQW1CLFlBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStGVDt5R0FtQ1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFJTywwQkFBMEI7c0JBQXRDLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXNzZXNzdHMuY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEFDVElPTl9DT0RFLFxuICBGSUVMRF9TRUxFQ1RPUixcbiAgUkVQT1JUX0NBU0UsXG4gIFNFTEVDVE9SX0NPTkZJRyxcbiAgU2VsZWN0aW9uUG9wdXBTdGF0ZSxcbiAgU2VsZWN0aW9uU3RhdGUsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cy9yZXBvcnQtY2FzZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSAnLi4vY2FzZS10eXBlLXNsaWRlci9jYXNlLXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC1hLWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICdAdmNvbXBseS9lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2FzZS1jYXRlZ29yeScsXG4gIHRlbXBsYXRlOiBgXG5cbiAgICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICAgW2ltYWdlXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZFNlbGVjdGVkKVwiXG4gICAgICBbYWN0aXZlXT1cImNhdGVnb3J5Q2xpY2tlZFwiXG4gICAgICBbY2hlY2tlZF09XCJwYXlsb2FkPy5jYXRlZ29yeT8uaWRzPy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgW2VkaXREaXNhYmxlZF09XCJjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cIiFjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICAoZmllbGRDbGlja2VkKT1cImFjdGl2YXRlU2VsZWN0b3IoJGV2ZW50KVwiXG4gICAgICAgICAgKHNlbGVjdGVkSXRlbUxpc3RDaGFuZ2UpPVwic2V0Q2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgID48L2FwcC12Yy1sYWJlbD5cbiAgICAgICAgPC9hcHAtZm9ybS1zZWxlY3RCb3g+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgcGF5bG9hZD8uY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cImN1c3RvbUZpZWxkXCJcbiAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiKGkgfCBnZXRFZGl0b3JDb25maWc6ICdjYXRlZ29yeScpID8/IGN1c3RvbUZpZWxkXCJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gICAgPGFwcC1maWVsZC1ob2xkZXJcbiAgICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgICAgW2Rpc2FibGVkXT1cImZpZWxkU2VsZWN0ZWQgPT09ICdSQydcIlxuICAgICAgW2FjdGl2ZV09XCJjYXRlZ29yeUNsaWNrZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cImFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXNcIlxuICAgICAgICAgIChmaWVsZENsaWNrZWQpPVwiYWN0aXZhdGVBZGRpdGlvbmFsQ2F0ZWdvcnlTZWxlY3RvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtTGlzdENoYW5nZSk9XCJzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuYWRkaXRpb25hbF9jYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgPjwvYXBwLXZjLWxhYmVsPlxuICAgICAgICA8L2FwcC1mb3JtLXNlbGVjdEJveD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBwYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5Py5jdXN0b21fZmllbGRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ0YWc/LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUN1c3RvbUZpZWxkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCIoaSB8IGdldEVkaXRvckNvbmZpZzogJ2FkZGl0aW9uYWxDYXRlZ29yeScpID8/IGN1c3RvbUZpZWxkXCJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gICAgPGFwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvblxuICAgICAgKm5nSWY9XCJjYXRlZ29yeUNsaWNrZWRcIlxuICAgICAgW2NhdGVnb3J5TGlzdF09XCJjYXNlQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgIFtsb2FkaW5nXT1cImNhdGVnb3J5TGlzdExvYWRlclwiXG4gICAgICBbc2VsZWN0ZWRMaXN0XT1cInNlbGVjdGVkQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIlxuICAgICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/ICdtdWx0aXBsZScgOiAnc2luZ2xlJ1xuICAgICAgXCJcbiAgICAgIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3RvcihmYWxzZSlcIlxuICAgICAgKG5leHQpPVwic2F2ZVNlbGVjdGVkQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgID48L2FwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvbj4gXG4gICAgPGFwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvblxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkXCJcbiAgICAgIFtjYXRlZ29yeUxpc3RdPVwiXG4gICAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XICYmXG4gICAgICAgIHBheWxvYWQ/LmNhdGVnb3J5Py5pZHM/Lmxlbmd0aFxuICAgICAgICAgID8gZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgICAgOiBjYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICBcIlxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgW2xvYWRpbmddPVwiY2F0ZWdvcnlMaXN0TG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZExpc3RdPVwic2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIChjYW5jZWwpPVwiYWN0aXZhdGVBZGRpdGlvbmFsQ2F0ZWdvcnlTZWxlY3RvcihmYWxzZSlcIlxuICAgICAgKG5leHQpPVwic2F2ZVNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCgkZXZlbnQpXCJcbiAgICA+PC9hcHAtY2F0ZWdvcnktbGlzdC1zZWxlY3Rpb24+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuLi8uLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2Vze1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGNhdGVnb3J5VGV4dHMgPSBSRVBPUlRfQ0FTRTtcbiAgY2FzZUNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgY29uZmlnOiBhbnkgPSB7XG4gICAgLi4uU0VMRUNUT1JfQ09ORklHLkNBU0VfQ0FURUdPUlksXG4gICAgcGxhY2Vob2xkZXI6IHRoaXMuY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkucGxhY2Vob2xkZXIsXG4gIH07XG4gIGNhdGVnb3J5Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGNhdGVnb3J5TGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBTZWxlY3Rpb25TdGF0ZSA9IFNlbGVjdGlvblN0YXRlO1xuICBTZWxlY3Rpb25Qb3B1cFN0YXRlID0gU2VsZWN0aW9uUG9wdXBTdGF0ZTtcbiAgc3RhdGU6IHN0cmluZyA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICBhZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZTogc3RyaW5nID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZENhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBpbml0aWFsQ2F0ZWdvcnk6IGFueTtcbiAgY2FzZVR5cGUgPSByZXBvcnQ7XG4gIGZpZWxkU2VsZWN0b3IgPSBGSUVMRF9TRUxFQ1RPUjtcbiAgY3VzdG9tRmllbGQ6IEVkaXRvckNvbmZpZyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIHZhbHVlJyxcbiAgICBpZDogJ2N1c3RvbUZpZWxkJ1xuICB9O1xuICBpbml0aWFsQWRkaXRpb25hbENhdGVnb3J5OiBhbnk7XG4gIGZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgZmllbGRTZWxlY3RlZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNhc2VUeXBlU2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KCkgc2V0IGluaXRpYWxTZWxlY3Rpb24odmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5pdGlhbENhdGVnb3J5ID0gdmFsdWU/LmlkcztcbiAgXG4gIH1cbiAgQElucHV0KCkgc2V0IGluaXRpYWxBZGRpdGlvbmFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnkgPSB2YWx1ZT8uaWRzO1xuICB9XG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB3b3JrZmxvd1R5cGU6IHN0cmluZyA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvbkNhdGVnb3J5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhc2VTZXJ2aWNlOiBSZXBvcnRBQ2FzZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzKCk7XG4gIH1cblxuICB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuICBcbiAgdXBkYXRlQ3VzdG9tRmllbGQodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheWxvYWQ/LmFkZGl0aW9uYWxfY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHMpIHtcbiAgICAgIHRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmN1c3RvbV9maWVsZHNbaW5kZXhdLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gWy4uLnRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmN1c3RvbV9maWVsZHNdO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncGF5bG9hZCddKSB7XG4gICAgICBpZiAoIXRoaXMucGF5bG9hZD8uY2F0ZWdvcnk/Lmlkcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk7XG5cbiAgICAgIH1cbiAgICAgIHRoaXMucG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxTZWxlY3Rpb24nXSB8fCBjaGFuZ2VzWydpbml0aWFsQWRkaXRpb25hbFNlbGVjdGlvbiddKSB7XG4gICAgICB0aGlzLnBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jYXNlU2VydmljZS5nZXRBbGxDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCkge1xuICAgIGlmICh0aGlzLmlzQUNUV1dvcmtmbG93KCkpIHtcbiAgICAgIHRoaXMudXBkYXRlQUNUV0NhdGVnb3J5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSQUNXb3JrZmxvdygpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJBQ0NhdGVnb3J5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVEZWZhdWx0Q2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FDVFdXb3JrZmxvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGggfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5sZW5ndGgpICYmIFxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJ1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzUkFDV29ya2Zsb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmluaXRpYWxDYXRlZ29yeT8ubGVuZ3RoIHx8IHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeT8ubGVuZ3RoKSAmJiB0aGlzLndvcmtmbG93VHlwZSA9PT0gJ1JBQyc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlZmF1bHRDYXNlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzRWRpdE1vZGVXaXRoUmVzdHJpY3Rpb25zID0gXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJyAmJlxuICAgICAgdGhpcy5jYXNlVHlwZVNlbGVjdGVkID09PSB0aGlzLmNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XO1xuXG4gICAgdGhpcy5zdGF0ZSA9IGlzRWRpdE1vZGVXaXRoUmVzdHJpY3Rpb25zIFxuICAgICAgPyBTZWxlY3Rpb25TdGF0ZS5ESVNBQkxFRCBcbiAgICAgIDogU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG5cbiAgICBpZiAoaXNFZGl0TW9kZVdpdGhSZXN0cmljdGlvbnMpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRpc2FibGVkVGV4dCA9IHRoaXMuY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGVSQUNDYXRlZ29yeSgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdD8uZmlsdGVyKFxuICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmluaXRpYWxDYXRlZ29yeT8uc29tZSgoaWQ6IGFueSkgPT4gaWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnk/LnNvbWUoKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICBcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0Py5maWx0ZXIoXG4gICAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeT8uc29tZShcbiAgICAgICAgICAgIChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZFxuICAgICAgICAgICkgfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5pbmNsdWRlcyhjYXRlZ29yeT8uX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdFxuICAgICAgICAubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlID0gU2VsZWN0aW9uU3RhdGUuU0VMRUNURUQ7XG5cbiAgICAgICAgaWYoIXRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGgpe1xuICAgICAgICAgIHRoaXMuaGFuZGxlRGVmYXVsdENhc2UoKTtcbiAgICAgICAgICBcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUFDVFdDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlID0gU2VsZWN0aW9uU3RhdGUuU0VMRUNURUQ7XG4gICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3Q/LmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICB0aGlzLmluaXRpYWxDYXRlZ29yeS5zb21lKChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZCkgfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5LmluY2x1ZGVzKGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgfSkpO1xuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhdGVnb3J5Q2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgKVxuICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgIH0pKTtcbiAgICB0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzID0gZXZlbnQubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gZXZlbnQuZmxhdE1hcChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmN1c3RvbV9maWVsZHNcbiAgICApO1xuICAgIHRoaXMub25DYXRlZ29yeUNoYW5nZS5lbWl0KHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMpO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHRoaXMuY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+ICF0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzLmluY2x1ZGVzKGNhdGVnb3J5Ll9pZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdChldmVudDogYW55KSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3RcbiAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/Ll9pZCA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICAgIClcbiAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgICB9KSk7XG4gICAgICBpZighdGhpcy5wYXlsb2FkWydhZGRpdGlvbmFsX2NhdGVnb3J5J10pe1xuICAgICAgICB0aGlzLnBheWxvYWRbJ2FkZGl0aW9uYWxfY2F0ZWdvcnknXSA9IHt9O1xuICAgICAgfVxuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydpZHMnXSA9IGV2ZW50Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5faWQpO1xuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydjdXN0b21fZmllbGRzJ10gPSBldmVudC5mbGF0TWFwKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uY3VzdG9tX2ZpZWxkc1xuICAgICk7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICBldmVudC5zb21lKChldmVudEl0ZW06IGFueSkgPT4gZXZlbnRJdGVtPy5faWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3QuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2NhdGVnb3J5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlQWRkaXRpb25hbENhdGVnb3J5U2VsZWN0b3IoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2FkZGl0aW9uYWxDYXRlZ29yeScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgICB9XG4gIH1cblxuICBzZXRDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueSkge1xuICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yZXNldENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/LnZhbHVlID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeT8uX2lkXG4gICAgKTtcbiAgICB0aGlzLm9uQ2F0ZWdvcnlDaGFuZ2UuZW1pdCh0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzKTtcbiAgfVxuXG4gIHNldEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKCFldmVudD8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc2V0QWRkaXRpb25hbENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdC5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8udmFsdWUgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5pZHMgPVxuICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Py5faWRcbiAgICAgICk7XG4gIH1cblxuICBnZXQgY2F0ZWdvcnlFZGl0RGlzYWJsZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgJiZcbiAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gdGhpcy5jYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPVyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJ1xuICAgICk7XG4gIH1cblxuICByZXNldENhdGVnb3J5TGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IFtdO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICB0aGlzLmZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdCA9IFsuLi50aGlzLmNhc2VDYXRlZ29yeUxpc3RdO1xuICB9XG5cbiAgcmVzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuaWRzID0gW107XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ElementRef, Input, ViewChild, Output, EventEmitter, HostListener, } from '@angular/core';
|
|
2
|
-
import { REPORT_CASE, HELPER_TEXT, EMAIL_REMINDERS, } from '../../constants/report-case.constants';
|
|
2
|
+
import { REPORT_CASE, HELPER_TEXT, EMAIL_REMINDERS, MONTH_NAMES, } from '../../constants/report-case.constants';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../../../services/common.service";
|
|
5
5
|
import * as i2 from "../../../sharedComponents/frequency/frequency.service";
|
|
@@ -61,7 +61,12 @@ export class DueDateComponent {
|
|
|
61
61
|
this.initializeStageAssignees(deadline);
|
|
62
62
|
}
|
|
63
63
|
initializeDeadlineValues(deadline) {
|
|
64
|
-
|
|
64
|
+
const dateValue = deadline?.due_date;
|
|
65
|
+
const date = new Date(dateValue);
|
|
66
|
+
const utcDay = date.getUTCDate().toString().padStart(2, '0');
|
|
67
|
+
const utcMonth = MONTH_NAMES[date.getUTCMonth()].substring(0, 3);
|
|
68
|
+
const utcYear = date.getUTCFullYear();
|
|
69
|
+
this.dueDate = `${utcDay} ${utcMonth} ${utcYear}`;
|
|
65
70
|
this.emailReminder =
|
|
66
71
|
deadline.assignee_remind_before || EMAIL_REMINDERS.email_reminder;
|
|
67
72
|
this.escalationEmail =
|
|
@@ -119,7 +124,7 @@ export class DueDateComponent {
|
|
|
119
124
|
const dateStr = `${dateValue} ${monthValue} ${yearValue}`;
|
|
120
125
|
}
|
|
121
126
|
if (evt?.date?.$d) {
|
|
122
|
-
this.dueDate = evt
|
|
127
|
+
this.dueDate = new Date(evt.date.$d);
|
|
123
128
|
this.showError = false;
|
|
124
129
|
}
|
|
125
130
|
this.datePicker?.api?.close();
|
|
@@ -221,7 +226,12 @@ export class DueDateComponent {
|
|
|
221
226
|
return this.workflowDetails?.stages_assignees?.every((stage, index) => this.assigneeData[index] && this.assigneeData[index]?.length > 0);
|
|
222
227
|
}
|
|
223
228
|
formatDueDate(date) {
|
|
224
|
-
|
|
229
|
+
const localDate = new Date(date);
|
|
230
|
+
// Add one day to the date
|
|
231
|
+
localDate.setDate(localDate.getDate() + 1);
|
|
232
|
+
// Set time to midnight
|
|
233
|
+
localDate.setHours(0, 0, 0, 0);
|
|
234
|
+
return localDate.toISOString();
|
|
225
235
|
}
|
|
226
236
|
setDeadlineReminders() {
|
|
227
237
|
this.payload.caseToWorkflow.resolution_deadline.assignee_remind_before =
|
|
@@ -305,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
305
315
|
type: HostListener,
|
|
306
316
|
args: ['document:click', ['$event']]
|
|
307
317
|
}] } });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFVL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBS0QsWUFDVSxpQkFBZ0MsRUFDaEMsZ0JBQWtDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBeEM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixlQUFV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QiwwakJBRU0sVUFBVSw2QkM1QjdDLDhpWkFzVUE7OzRGRDVTYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzttSUFLQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUJuRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFNSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQW9RUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5cbmltcG9ydCB7XG4gIFJFUE9SVF9DQVNFLFxuICBIRUxQRVJfVEVYVCxcbiAgRU1BSUxfUkVNSU5ERVJTLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICAgIG1pbjogJycsXG4gIH07XG4gIGNvbW1vblNlcnZpY2U6IGFueTtcbiAgZHVlRGF0ZVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGhlbHBlclRleHQgPSBIRUxQRVJfVEVYVDtcbiAgYXNzaWduZWVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVEYXRhOiB7IFtrZXk6IG51bWJlcl06IGFueVtdIH0gPSB7fTtcbiAgY3VycmVudFN0YWdlSW5kZXg6IG51bWJlciA9IC0xO1xuICBhY3RpdmVBc3NpZ25lZTogYW55W10gPSBbXTtcbiAgZW1haWxSZW1pbmRlcjogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICBlc2NhbGF0aW9uRW1haWw6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbmVlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnk7XG4gIEBJbnB1dCgpIGR1ZURhdGU6IGFueTtcbiAgQElucHV0KCkgd29ya2Zsb3dEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cExpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgdGhpcy5lbWFpbFJlbWluZGVyID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmFzc2lnbmVlX3JlbWluZF9iZWZvcmU7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8ub3duZXJfcmVtaW5kX2JlZm9yZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVSZXNvbHV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb21tb25EYXRlU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2V0QXNzaWduZWVMaXN0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplRWRpdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRNb2RlKCkge1xuICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IGRlYWRsaW5lLmR1ZV9kYXRlID8gbmV3IERhdGUoZGVhZGxpbmUuZHVlX2RhdGUpIDogbnVsbDtcbiAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPVxuICAgICAgZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPVxuICAgICAgZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICBpZiAoIWRlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YWdlQXNzaWduZWVNYXAgPSB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoXG4gICAgICBkZWFkbGluZS5zdGFnZXNfYXNzaWduZWVzXG4gICAgKTtcbiAgICB0aGlzLm1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdGFnZUFzc2lnbmVlTWFwKHN0YWdlc0Fzc2lnbmVlczogYW55W10pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHN0YWdlc0Fzc2lnbmVlcy5tYXAoKHN0YWdlOiBhbnkpID0+IFtzdGFnZT8uc3RhZ2VfaWQsIHN0YWdlPy5hc3NpZ25lZV9pZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHdvcmtmbG93U3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gc3RhZ2VBc3NpZ25lZU1hcD8uZ2V0KHdvcmtmbG93U3RhZ2U/LnN0YWdlX2lkKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmFzc2lnbmVlTGlzdD8uZmluZChcbiAgICAgICAgICAoYXNzaWduZWU6IGFueSkgPT4gYXNzaWduZWU/Ll9pZCA9PT0gYXNzaWduZWVJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWUpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gPSBbYXNzaWduZWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXG4gICAqL1xuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG5cbiAgICBpZiAoIWV2dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXG4gICAgICAgICdKYW4nLFxuICAgICAgICAnRmViJyxcbiAgICAgICAgJ01hcicsXG4gICAgICAgICdBcHInLFxuICAgICAgICAnSnVuJyxcbiAgICAgICAgJ0p1bCcsXG4gICAgICAgICdBdWcnLFxuICAgICAgICAnU2VwJyxcbiAgICAgICAgJ09jdCcsXG4gICAgICAgICdOb3YnLFxuICAgICAgICAnRGVjJyxcbiAgICAgIF07XG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXREYXRlKCk7XG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRNb250aCgpXTtcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICB0aGlzLmR1ZURhdGUgPSBldnQ/LmRhdGU/LiRkO1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZUR1ZURhdGUoKSB7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbiwgc3RhZ2VJbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggPSBzdGFnZUluZGV4ID8/IC0xO1xuICAgICAgdGhpcy5hY3RpdmVBc3NpZ25lZSA9XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xXG4gICAgICAgICAgPyB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgc2V0QXNzaWduZWVMaXN0KCkge1xuICAgIGNvbnN0IGRpcmVjdEFzc2lnbmVlcyA9IHRoaXMuZ2V0QXNzaWduZWVzKCk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25lZXMgPSB0aGlzLmdldEdyb3VwQXNzaWduZWVzKCk7XG4gICAgdGhpcy5hc3NpZ25lZUxpc3QgPSB0aGlzLmdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXMsIGdyb3VwQXNzaWduZWVzKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcyB8fCBbXTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy51c2VyTGlzdFxuICAgICAgPy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gYXNzaWduZWVJZHMuaW5jbHVkZXModXNlcj8uX2lkKSlcbiAgICAgID8ubWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3Vwcyh1c2VyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9KSB8fCBbXTtcbiAgfVxuXG4gIGdldFVzZXJHcm91cHModXNlcjogYW55KTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwTGlzdD8uZmlsdGVyKChncm91cDogYW55KSA9PlxuICAgICAgdXNlcj8udXNlcmdyb3VwX2lkPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyb3VwQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwSWRzID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXNfZ3JvdXAgfHwgW107XG4gICAgXG4gICAgcmV0dXJuIGFzc2lnbmVlR3JvdXBJZHMuZmxhdE1hcCgoZ3JvdXBJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwQnlJZChncm91cElkKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cCk7XG4gICAgfSkgfHwgW107XG4gIH1cblxuICBmaW5kR3JvdXBCeUlkKGdyb3VwSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maW5kKChncm91cDogYW55KSA9PiBncm91cD8uX2lkID09PSBncm91cElkKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cDogYW55KTogYW55W10ge1xuICAgIHJldHVybiBncm91cD8uYXNzb2NpYXRlZFVzZXJzPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgY29uc3QgdXNlckZyb21MaXN0ID0gdGhpcy5maW5kVXNlckJ5SWQodXNlcj8udXNlcklkPy5faWQpO1xuICAgICAgaWYgKHVzZXJGcm9tTGlzdCkge1xuICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXJGcm9tTGlzdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udXNlckZyb21MaXN0LFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KS5maWx0ZXIoKHVzZXI6IGFueSkgPT4gdXNlciAhPT0gbnVsbCkgfHwgW107XG4gIH1cblxuICBmaW5kVXNlckJ5SWQodXNlcklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0Py5maW5kKCh1c2VyOiBhbnkpID0+IHVzZXI/Ll9pZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXM6IGFueVtdLCBncm91cEFzc2lnbmVlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIFsuLi5kaXJlY3RBc3NpZ25lZXMsIC4uLmdyb3VwQXNzaWduZWVzXS5yZWR1Y2UoKGFjYzogYW55W10sIHVzZXI6IGFueSkgPT4ge1xuICAgICAgaWYgKCFhY2Muc29tZSgodTogYW55KSA9PiB1Py5faWQgPT09IHVzZXI/Ll9pZCkpIHtcbiAgICAgICAgYWNjLnB1c2godXNlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHNlbGVjdGVkQXNzaWduZWUoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XSA9IGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKCkge1xuICAgIGlmICghdGhpcy5pc0R1ZURhdGVWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmVBc3NpZ25lZXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXlsb2FkKCk7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVSZXNvbHV0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIGlzRHVlRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHVlRGF0ZTtcbiAgfVxuXG4gIGFyZUFzc2lnbmVlc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZXZlcnkoXG4gICAgICAoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdICYmIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XT8ubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBmb3JtYXREdWVEYXRlKGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBzZXREZWFkbGluZVJlbWluZGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlcjtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsO1xuICB9XG5cbiAgc2V0U3RhZ2VzQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXNcbiAgICAgIC5tYXAoKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVEYXRhID0gdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdO1xuICAgICAgICByZXR1cm4gYXNzaWduZWVEYXRhXG4gICAgICAgICAgPyB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2UsIGFzc2lnbmVlRGF0YSlcbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2U6IGFueSwgYXNzaWduZWVEYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlX2lkOiBzdGFnZT8uc3RhZ2VfaWQgfHwgJycsXG4gICAgICBhc3NpZ25lZV9pZDogYXNzaWduZWVEYXRhWzBdPy5faWQgfHwgJycsXG4gICAgICBkdWVfZGF0ZTogc3RhZ2U/LmR1ZV9kYXRlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICBzZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdER1ZURhdGUodGhpcy5kdWVEYXRlKTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZWZmZWN0aXZlLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgU1BFQ0lGWSBUSEUgREVBRExJTkUgVE8gQ0xPU0UgVEhJUyBDQVNFXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtbWItM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgICAgICBkdWVEYXRlVGV4dHMuY2FzZV9kZXRhaWxzLmR1ZV9kYXRlLmRlYWRsaW5lX3BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIj5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dBc3NpZ25lZUVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3JNc2cgdngtZnMtMTEgdngtbGgtNCB2eC1tdC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkdWVEYXRlVGV4dHMuZXJyb3JNZXNzYWdlLnN0YWdlQXNzaWduZWUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgRU1BSUwgUkVNSU5ERVIgQ09ORklHVVJBVElPTlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyIHZ4LW1iLTJcIj48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBSRU1JTkRFUiBFTUFJTFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZW1haWwtY29uZmlndXJlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1wLTIgdngtcGwtMyB2eC1wci0zIHZ4LW1iLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1yLTFcIj5cbiAgICAgICAgICAgIFNlbmQgcmVndWxhciBlbWFpbCByZW1pbmRlcnMgdG8gdGhlIGFzc2lnbmVlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxSZW1pbmRlclwiXG4gICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5ICE9PSAnLidcIlxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbWwtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+ZGF5czwvc3Bhbj4gYmVmb3JlIHRoZSBzdGFnZSBkZWFkbGluZS5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgRVNDQUxBVElPTiBFTUFJTFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZW1haWwtY29uZmlndXJlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1wLTIgdngtcGwtMyB2eC1wci0zIHZ4LW1iLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1yLTFcIj5cbiAgICAgICAgICAgIFNlbmQgZW1haWwgZXNjYWxhdGlvbiB0byB0aGUgQ2FzZSBPd25lclxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVzY2FsYXRpb25FbWFpbFwiXG4gICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5ICE9PSAnLidcIlxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbWwtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+ZGF5czwvc3Bhbj4gYmVmb3JlIHRoZSBvdmVyYWxsIGNhc2VcbiAgICAgICAgICAgIGRlYWRsaW5lLCBpZiB0aGUgY2FzZSBpcyBzdGlsbCBvcGVuLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlRHVlRGF0ZSgpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cInNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKClcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48YXBwLWFzc2lnbmVlXG4gICpuZ0lmPVwiYXNzaWduZWVDbGlja2VkXCJcbiAgW3BheWxvYWRdPVwicGF5bG9hZFwiXG4gIFthc3NpZ25lZUxpc3RdPVwiYXNzaWduZWVMaXN0XCJcbiAgW2FjdGl2ZUFzc2lnbmVlXT1cImFjdGl2ZUFzc2lnbmVlXCJcbiAgKHNlbGVjdGVkQXNzaWduZWVFdmVudCk9XCJzZWxlY3RlZEFzc2lnbmVlKCRldmVudClcIlxuICAoY2xvc2VFdmVudCk9XCJhY3RpdmF0ZVNlbGVjdG9yKGZhbHNlKVwiXG4+PC9hcHAtYXNzaWduZWU+XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixXQUFXLEdBQ1osTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFVL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBS0QsWUFDVSxpQkFBZ0MsRUFDaEMsZ0JBQWtDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBeEM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztR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WTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQsIElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcblxuaW1wb3J0IHtcbiAgUkVQT1JUX0NBU0UsXG4gIEhFTFBFUl9URVhULFxuICBFTUFJTF9SRU1JTkRFUlMsXG4gIE1PTlRIX05BTUVTLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICAgIG1pbjogJycsXG4gIH07XG4gIGNvbW1vblNlcnZpY2U6IGFueTtcbiAgZHVlRGF0ZVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGhlbHBlclRleHQgPSBIRUxQRVJfVEVYVDtcbiAgYXNzaWduZWVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVEYXRhOiB7IFtrZXk6IG51bWJlcl06IGFueVtdIH0gPSB7fTtcbiAgY3VycmVudFN0YWdlSW5kZXg6IG51bWJlciA9IC0xO1xuICBhY3RpdmVBc3NpZ25lZTogYW55W10gPSBbXTtcbiAgZW1haWxSZW1pbmRlcjogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICBlc2NhbGF0aW9uRW1haWw6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbmVlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnk7XG4gIEBJbnB1dCgpIGR1ZURhdGU6IGFueTtcbiAgQElucHV0KCkgd29ya2Zsb3dEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cExpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgdGhpcy5lbWFpbFJlbWluZGVyID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmFzc2lnbmVlX3JlbWluZF9iZWZvcmU7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8ub3duZXJfcmVtaW5kX2JlZm9yZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVSZXNvbHV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb21tb25EYXRlU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2V0QXNzaWduZWVMaXN0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplRWRpdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRNb2RlKCkge1xuICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IGRlYWRsaW5lPy5kdWVfZGF0ZTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB1dGNEYXkgPSBkYXRlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgdXRjTW9udGggPSBNT05USF9OQU1FU1tkYXRlLmdldFVUQ01vbnRoKCldLnN1YnN0cmluZygwLCAzKTtcbiAgICBjb25zdCB1dGNZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHRoaXMuZHVlRGF0ZT0gYCR7dXRjRGF5fSAke3V0Y01vbnRofSAke3V0Y1llYXJ9YDtcbiAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPVxuICAgICAgZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPVxuICAgICAgZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICBpZiAoIWRlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YWdlQXNzaWduZWVNYXAgPSB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoXG4gICAgICBkZWFkbGluZS5zdGFnZXNfYXNzaWduZWVzXG4gICAgKTtcbiAgICB0aGlzLm1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdGFnZUFzc2lnbmVlTWFwKHN0YWdlc0Fzc2lnbmVlczogYW55W10pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHN0YWdlc0Fzc2lnbmVlcy5tYXAoKHN0YWdlOiBhbnkpID0+IFtzdGFnZT8uc3RhZ2VfaWQsIHN0YWdlPy5hc3NpZ25lZV9pZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHdvcmtmbG93U3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gc3RhZ2VBc3NpZ25lZU1hcD8uZ2V0KHdvcmtmbG93U3RhZ2U/LnN0YWdlX2lkKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmFzc2lnbmVlTGlzdD8uZmluZChcbiAgICAgICAgICAoYXNzaWduZWU6IGFueSkgPT4gYXNzaWduZWU/Ll9pZCA9PT0gYXNzaWduZWVJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWUpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gPSBbYXNzaWduZWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXG4gICAqL1xuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG5cbiAgICBpZiAoIWV2dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXG4gICAgICAgICdKYW4nLFxuICAgICAgICAnRmViJyxcbiAgICAgICAgJ01hcicsXG4gICAgICAgICdBcHInLFxuICAgICAgICAnSnVuJyxcbiAgICAgICAgJ0p1bCcsXG4gICAgICAgICdBdWcnLFxuICAgICAgICAnU2VwJyxcbiAgICAgICAgJ09jdCcsXG4gICAgICAgICdOb3YnLFxuICAgICAgICAnRGVjJyxcbiAgICAgIF07XG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXREYXRlKCk7XG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRNb250aCgpXTtcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICB0aGlzLmR1ZURhdGUgPSBuZXcgRGF0ZShldnQuZGF0ZS4kZCk7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcbiAgfVxuXG4gIGNsb3NlRHVlRGF0ZSgpIHtcbiAgICB0aGlzLmNsb3NlRHVlRGF0ZUV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGFjdGl2YXRlU2VsZWN0b3IoYWN0aXZlOiBib29sZWFuLCBzdGFnZUluZGV4PzogbnVtYmVyKSB7XG4gICAgdGhpcy5hc3NpZ25lZUNsaWNrZWQgPSBhY3RpdmU7XG4gICAgaWYgKGFjdGl2ZSkge1xuICAgICAgdGhpcy5jdXJyZW50U3RhZ2VJbmRleCA9IHN0YWdlSW5kZXggPz8gLTE7XG4gICAgICB0aGlzLmFjdGl2ZUFzc2lnbmVlID1cbiAgICAgICAgdGhpcy5jdXJyZW50U3RhZ2VJbmRleCAhPT0gLTFcbiAgICAgICAgICA/IHRoaXMuYXNzaWduZWVEYXRhW3RoaXMuY3VycmVudFN0YWdlSW5kZXhdXG4gICAgICAgICAgOiBbXTtcbiAgICB9XG4gIH1cblxuICBzZXRBc3NpZ25lZUxpc3QoKSB7XG4gICAgY29uc3QgZGlyZWN0QXNzaWduZWVzID0gdGhpcy5nZXRBc3NpZ25lZXMoKTtcbiAgICBjb25zdCBncm91cEFzc2lnbmVlcyA9IHRoaXMuZ2V0R3JvdXBBc3NpZ25lZXMoKTtcbiAgICB0aGlzLmFzc2lnbmVlTGlzdCA9IHRoaXMuZ2V0VW5pcXVlQXNzaWduZWVzKGRpcmVjdEFzc2lnbmVlcywgZ3JvdXBBc3NpZ25lZXMpO1xuICB9XG5cbiAgZ2V0QXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdz8uYXNzaWduZWVzIHx8IFtdO1xuICAgIFxuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0XG4gICAgICA/LmZpbHRlcigodXNlcjogYW55KSA9PiBhc3NpZ25lZUlkcy5pbmNsdWRlcyh1c2VyPy5faWQpKVxuICAgICAgPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgfTtcbiAgICAgIH0pIHx8IFtdO1xuICB9XG5cbiAgZ2V0VXNlckdyb3Vwcyh1c2VyOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XG4gICAgICB1c2VyPy51c2VyZ3JvdXBfaWQ/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICApO1xuICB9XG5cbiAgZ2V0R3JvdXBBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlc19ncm91cCB8fCBbXTtcbiAgICBcbiAgICByZXR1cm4gYXNzaWduZWVHcm91cElkcy5mbGF0TWFwKChncm91cElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5maW5kR3JvdXBCeUlkKGdyb3VwSWQpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwKTtcbiAgICB9KSB8fCBbXTtcbiAgfVxuXG4gIGZpbmRHcm91cEJ5SWQoZ3JvdXBJZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cExpc3Q/LmZpbmQoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5faWQgPT09IGdyb3VwSWQpO1xuICB9XG5cbiAgZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGdyb3VwPy5hc3NvY2lhdGVkVXNlcnM/Lm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICBjb25zdCB1c2VyRnJvbUxpc3QgPSB0aGlzLmZpbmRVc2VyQnlJZCh1c2VyPy51c2VySWQ/Ll9pZCk7XG4gICAgICBpZiAodXNlckZyb21MaXN0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJHcm91cHMgPSB0aGlzLmdldFVzZXJHcm91cHModXNlckZyb21MaXN0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi51c2VyRnJvbUxpc3QsXG4gICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pLmZpbHRlcigodXNlcjogYW55KSA9PiB1c2VyICE9PSBudWxsKSB8fCBbXTtcbiAgfVxuXG4gIGZpbmRVc2VyQnlJZCh1c2VySWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckxpc3Q/LmZpbmQoKHVzZXI6IGFueSkgPT4gdXNlcj8uX2lkID09PSB1c2VySWQpO1xuICB9XG5cbiAgZ2V0VW5pcXVlQXNzaWduZWVzKGRpcmVjdEFzc2lnbmVlczogYW55W10sIGdyb3VwQXNzaWduZWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gWy4uLmRpcmVjdEFzc2lnbmVlcywgLi4uZ3JvdXBBc3NpZ25lZXNdLnJlZHVjZSgoYWNjOiBhbnlbXSwgdXNlcjogYW55KSA9PiB7XG4gICAgICBpZiAoIWFjYy5zb21lKCh1OiBhbnkpID0+IHU/Ll9pZCA9PT0gdXNlcj8uX2lkKSkge1xuICAgICAgICBhY2MucHVzaCh1c2VyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgc2VsZWN0ZWRBc3NpZ25lZShldmVudDogYW55W10pIHtcbiAgICBpZiAodGhpcy5jdXJyZW50U3RhZ2VJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuYXNzaWduZWVEYXRhW3RoaXMuY3VycmVudFN0YWdlSW5kZXhdID0gZXZlbnQ7XG4gICAgfVxuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoKSB7XG4gICAgaWYgKCF0aGlzLmlzRHVlRGF0ZVZhbGlkKCkpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmFyZUFzc2lnbmVlc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMuc2hvd0Fzc2lnbmVlRXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3dFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0Fzc2lnbmVlRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNldFBheWxvYWQoKTtcbiAgICB0aGlzLmNsb3NlRHVlRGF0ZVJlc29sdXRpb24uZW1pdCgpO1xuICB9XG5cbiAgaXNEdWVEYXRlVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kdWVEYXRlO1xuICB9XG5cbiAgYXJlQXNzaWduZWVzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5ldmVyeShcbiAgICAgIChzdGFnZTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gJiYgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdPy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGZvcm1hdER1ZURhdGUoZGF0ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbERhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAvLyBBZGQgb25lIGRheSB0byB0aGUgZGF0ZVxuICAgIGxvY2FsRGF0ZS5zZXREYXRlKGxvY2FsRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAvLyBTZXQgdGltZSB0byBtaWRuaWdodFxuICAgIGxvY2FsRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gbG9jYWxEYXRlLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBzZXREZWFkbGluZVJlbWluZGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlcjtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsO1xuICB9XG5cbiAgc2V0U3RhZ2VzQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXNcbiAgICAgIC5tYXAoKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVEYXRhID0gdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdO1xuICAgICAgICByZXR1cm4gYXNzaWduZWVEYXRhXG4gICAgICAgICAgPyB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2UsIGFzc2lnbmVlRGF0YSlcbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2U6IGFueSwgYXNzaWduZWVEYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlX2lkOiBzdGFnZT8uc3RhZ2VfaWQgfHwgJycsXG4gICAgICBhc3NpZ25lZV9pZDogYXNzaWduZWVEYXRhWzBdPy5faWQgfHwgJycsXG4gICAgICBkdWVfZGF0ZTogc3RhZ2U/LmR1ZV9kYXRlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICBzZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdER1ZURhdGUodGhpcy5kdWVEYXRlKTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZWZmZWN0aXZlLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgU1BFQ0lGWSBUSEUgREVBRExJTkUgVE8gQ0xPU0UgVEhJUyBDQVNFXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtbWItM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgICAgICBkdWVEYXRlVGV4dHMuY2FzZV9kZXRhaWxzLmR1ZV9kYXRlLmRlYWRsaW5lX3BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIj5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dBc3NpZ25lZUVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3JNc2cgdngtZnMtMTEgdngtbGgtNCB2eC1tdC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkdWVEYXRlVGV4dHMuZXJyb3JNZXNzYWdlLnN0YWdlQXNzaWduZWUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgRU1BSUwgUkVNSU5ERVIgQ09ORklHVVJBVElPTlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyIHZ4LW1iLTJcIj48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBSRU1JTkRFUiBFTUFJTFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZW1haWwtY29uZmlndXJlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1wLTIgdngtcGwtMyB2eC1wci0zIHZ4LW1iLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1yLTFcIj5cbiAgICAgICAgICAgIFNlbmQgcmVndWxhciBlbWFpbCByZW1pbmRlcnMgdG8gdGhlIGFzc2lnbmVlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxSZW1pbmRlclwiXG4gICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5ICE9PSAnLidcIlxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbWwtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+ZGF5czwvc3Bhbj4gYmVmb3JlIHRoZSBzdGFnZSBkZWFkbGluZS5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgRVNDQUxBVElPTiBFTUFJTFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZW1haWwtY29uZmlndXJlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1wLTIgdngtcGwtMyB2eC1wci0zIHZ4LW1iLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1yLTFcIj5cbiAgICAgICAgICAgIFNlbmQgZW1haWwgZXNjYWxhdGlvbiB0byB0aGUgQ2FzZSBPd25lclxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVzY2FsYXRpb25FbWFpbFwiXG4gICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5ICE9PSAnLidcIlxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbWwtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+ZGF5czwvc3Bhbj4gYmVmb3JlIHRoZSBvdmVyYWxsIGNhc2VcbiAgICAgICAgICAgIGRlYWRsaW5lLCBpZiB0aGUgY2FzZSBpcyBzdGlsbCBvcGVuLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlRHVlRGF0ZSgpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cInNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKClcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48YXBwLWFzc2lnbmVlXG4gICpuZ0lmPVwiYXNzaWduZWVDbGlja2VkXCJcbiAgW3BheWxvYWRdPVwicGF5bG9hZFwiXG4gIFthc3NpZ25lZUxpc3RdPVwiYXNzaWduZWVMaXN0XCJcbiAgW2FjdGl2ZUFzc2lnbmVlXT1cImFjdGl2ZUFzc2lnbmVlXCJcbiAgKHNlbGVjdGVkQXNzaWduZWVFdmVudCk9XCJzZWxlY3RlZEFzc2lnbmVlKCRldmVudClcIlxuICAoY2xvc2VFdmVudCk9XCJhY3RpdmF0ZVNlbGVjdG9yKGZhbHNlKVwiXG4+PC9hcHAtYXNzaWduZWU+XG4iXX0=
|