@eui/components 18.0.0-rc.25 → 18.0.0-rc.26
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/docs/components/ChartComponent.html +10 -124
- package/docs/components/EuiEditorCountersComponent.html +15 -202
- package/docs/components/EuiNotificationItemComponent.html +5 -62
- package/docs/components/EuiNotificationItemV2Component.html +5 -62
- package/docs/components/EuiNotificationsComponent.html +40 -512
- package/docs/components/EuiNotificationsV2Component.html +40 -507
- package/docs/components/EuiPaginatorComponent.html +15 -209
- package/docs/components/EuiSelectComponent.html +0 -62
- package/docs/components/EuiTreeComponent.html +45 -558
- package/docs/components/EuiWizardComponent.html +15 -202
- package/docs/components/EuiWizardStepComponent.html +30 -388
- package/docs/components/QuillEditorComponent.html +20 -326
- package/docs/dependencies.html +1 -1
- package/docs/directives/AutoResizeDirective.html +5 -62
- package/docs/directives/EuiNgSelectOptionDirective.html +0 -62
- package/docs/js/menu-wc.js +3 -3
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-paginator/eui-paginator.component.mjs +12 -28
- package/esm2022/eui-select/eui-select-option.directive.mjs +6 -12
- package/esm2022/eui-select/eui-select.component.mjs +5 -10
- package/esm2022/eui-textarea/auto-resize.directive.mjs +7 -12
- package/esm2022/eui-tree/eui-tree.component.mjs +31 -78
- package/esm2022/eui-wizard/eui-wizard-step.component.mjs +21 -52
- package/esm2022/eui-wizard/eui-wizard.component.mjs +12 -28
- package/esm2022/externals/charts/chart/chart.component.mjs +9 -12
- package/esm2022/externals/eui-editor/counters/eui-editor-counters.component.mjs +12 -28
- package/esm2022/externals/quill/quill-editor.component.mjs +17 -43
- package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +6 -12
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +27 -68
- package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +6 -12
- package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +30 -77
- package/eui-paginator/eui-paginator.component.d.ts +6 -10
- package/eui-paginator/eui-paginator.component.d.ts.map +1 -1
- package/eui-select/eui-select-option.directive.d.ts +2 -4
- package/eui-select/eui-select-option.directive.d.ts.map +1 -1
- package/eui-select/eui-select.component.d.ts +2 -3
- package/eui-select/eui-select.component.d.ts.map +1 -1
- package/eui-textarea/auto-resize.directive.d.ts +3 -5
- package/eui-textarea/auto-resize.directive.d.ts.map +1 -1
- package/eui-tree/eui-tree.component.d.ts +18 -28
- package/eui-tree/eui-tree.component.d.ts.map +1 -1
- package/eui-wizard/eui-wizard-step.component.d.ts +12 -19
- package/eui-wizard/eui-wizard-step.component.d.ts.map +1 -1
- package/eui-wizard/eui-wizard.component.d.ts +6 -10
- package/eui-wizard/eui-wizard.component.d.ts.map +1 -1
- package/externals/charts/chart/chart.component.d.ts +4 -7
- package/externals/charts/chart/chart.component.d.ts.map +1 -1
- package/externals/eui-editor/counters/eui-editor-counters.component.d.ts +6 -10
- package/externals/eui-editor/counters/eui-editor-counters.component.d.ts.map +1 -1
- package/externals/quill/quill-editor.component.d.ts +10 -16
- package/externals/quill/quill-editor.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-paginator.mjs +11 -27
- package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2022/eui-components-eui-select.mjs +8 -18
- package/fesm2022/eui-components-eui-select.mjs.map +1 -1
- package/fesm2022/eui-components-eui-textarea.mjs +4 -9
- package/fesm2022/eui-components-eui-textarea.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +30 -77
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-eui-wizard.mjs +30 -76
- package/fesm2022/eui-components-eui-wizard.mjs.map +1 -1
- package/fesm2022/eui-components-externals-charts.mjs +8 -11
- package/fesm2022/eui-components-externals-charts.mjs.map +1 -1
- package/fesm2022/eui-components-externals-eui-editor.mjs +11 -26
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/fesm2022/eui-components-externals-quill.mjs +16 -42
- package/fesm2022/eui-components-externals-quill.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +61 -157
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/layout/eui-notifications/eui-notification-item.component.d.ts +2 -4
- package/layout/eui-notifications/eui-notification-item.component.d.ts.map +1 -1
- package/layout/eui-notifications/eui-notifications.component.d.ts +16 -25
- package/layout/eui-notifications/eui-notifications.component.d.ts.map +1 -1
- package/layout/eui-notifications-v2/eui-notification-item.component.d.ts +2 -4
- package/layout/eui-notifications-v2/eui-notification-item.component.d.ts.map +1 -1
- package/layout/eui-notifications-v2/eui-notifications.component.d.ts +16 -25
- package/layout/eui-notifications-v2/eui-notifications.component.d.ts.map +1 -1
- package/package.json +3 -3
@@ -1,10 +1,9 @@
|
|
1
1
|
import { isPlatformServer } from '@angular/common';
|
2
2
|
import { QUILL_CONFIG_TOKEN, } from './quill-editor.interfaces';
|
3
|
-
import { Component, EventEmitter, forwardRef, Inject, Input, Output, PLATFORM_ID, SecurityContext, ViewEncapsulation, } from '@angular/core';
|
3
|
+
import { booleanAttribute, Component, EventEmitter, forwardRef, Inject, Input, Output, PLATFORM_ID, SecurityContext, ViewEncapsulation, } from '@angular/core';
|
4
4
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
5
5
|
import { DOCUMENT } from '@angular/common';
|
6
6
|
import { defaultModules } from './quill-defaults';
|
7
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
8
7
|
import * as i0 from "@angular/core";
|
9
8
|
import * as i1 from "@angular/platform-browser";
|
10
9
|
import * as i2 from "./loader.service";
|
@@ -13,36 +12,6 @@ const getFormat = (format, configFormat) => {
|
|
13
12
|
return passedFormat || 'html';
|
14
13
|
};
|
15
14
|
export class QuillEditorComponent {
|
16
|
-
get readOnly() {
|
17
|
-
return this._readOnly;
|
18
|
-
}
|
19
|
-
set readOnly(value) {
|
20
|
-
this._readOnly = coerceBooleanProperty(value);
|
21
|
-
}
|
22
|
-
get required() {
|
23
|
-
return this._required;
|
24
|
-
}
|
25
|
-
set required(value) {
|
26
|
-
this._required = coerceBooleanProperty(value);
|
27
|
-
}
|
28
|
-
get sanitize() {
|
29
|
-
return this._sanitize;
|
30
|
-
}
|
31
|
-
set sanitize(value) {
|
32
|
-
this._sanitize = coerceBooleanProperty(value);
|
33
|
-
}
|
34
|
-
get strict() {
|
35
|
-
return this._strict;
|
36
|
-
}
|
37
|
-
set strict(value) {
|
38
|
-
this._strict = coerceBooleanProperty(value);
|
39
|
-
}
|
40
|
-
get preserveWhitespace() {
|
41
|
-
return this._preserveWhitespace;
|
42
|
-
}
|
43
|
-
set preserveWhitespace(value) {
|
44
|
-
this._preserveWhitespace = coerceBooleanProperty(value);
|
45
|
-
}
|
46
15
|
constructor(elementRef, domSanitizer, doc,
|
47
16
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
48
17
|
platformId, renderer, zone, config, loader) {
|
@@ -68,10 +37,10 @@ export class QuillEditorComponent {
|
|
68
37
|
this.onFocus = new EventEmitter();
|
69
38
|
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
70
39
|
this.onBlur = new EventEmitter();
|
71
|
-
this.
|
72
|
-
this.
|
73
|
-
this.
|
74
|
-
this.
|
40
|
+
this.required = false;
|
41
|
+
this.sanitize = false;
|
42
|
+
this.strict = true;
|
43
|
+
this.preserveWhitespace = false;
|
75
44
|
this.disabled = false; // used to store initial value before ViewInit
|
76
45
|
this.valueGetter = (quillEditor, editorElement) => {
|
77
46
|
let html = editorElement.querySelector('.ql-editor')?.innerHTML;
|
@@ -438,7 +407,7 @@ export class QuillEditorComponent {
|
|
438
407
|
QuillInstance.register('blots/scroll', Scroll, true);
|
439
408
|
}
|
440
409
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: QuillEditorComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: QUILL_CONFIG_TOKEN }, { token: i2.LoaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
441
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
410
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: QuillEditorComponent, selector: "quill-editor", inputs: { id: "id", format: "format", theme: "theme", modules: "modules", debug: "debug", placeholder: "placeholder", maxLength: "maxLength", minLength: "minLength", formats: "formats", customToolbarPosition: "customToolbarPosition", styles: "styles", scrollingContainer: "scrollingContainer", bounds: "bounds", customOptions: "customOptions", trackChanges: "trackChanges", hasImageFeature: "hasImageFeature", readOnly: ["readOnly", "readOnly", booleanAttribute], required: ["required", "required", booleanAttribute], sanitize: ["sanitize", "sanitize", booleanAttribute], strict: ["strict", "strict", booleanAttribute], preserveWhitespace: ["preserveWhitespace", "preserveWhitespace", booleanAttribute], valueGetter: "valueGetter", valueSetter: "valueSetter" }, outputs: { onEditorCreated: "onEditorCreated", onContentChanged: "onContentChanged", onSelectionChanged: "onSelectionChanged", onFocus: "onFocus", onBlur: "onBlur" }, providers: [
|
442
411
|
{
|
443
412
|
multi: true,
|
444
413
|
provide: NG_VALUE_ACCESSOR,
|
@@ -523,18 +492,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
523
492
|
}], onBlur: [{
|
524
493
|
type: Output
|
525
494
|
}], readOnly: [{
|
526
|
-
type: Input
|
495
|
+
type: Input,
|
496
|
+
args: [{ transform: booleanAttribute }]
|
527
497
|
}], required: [{
|
528
|
-
type: Input
|
498
|
+
type: Input,
|
499
|
+
args: [{ transform: booleanAttribute }]
|
529
500
|
}], sanitize: [{
|
530
|
-
type: Input
|
501
|
+
type: Input,
|
502
|
+
args: [{ transform: booleanAttribute }]
|
531
503
|
}], strict: [{
|
532
|
-
type: Input
|
504
|
+
type: Input,
|
505
|
+
args: [{ transform: booleanAttribute }]
|
533
506
|
}], preserveWhitespace: [{
|
534
|
-
type: Input
|
507
|
+
type: Input,
|
508
|
+
args: [{ transform: booleanAttribute }]
|
535
509
|
}], valueGetter: [{
|
536
510
|
type: Input
|
537
511
|
}], valueSetter: [{
|
538
512
|
type: Input
|
539
513
|
}] } });
|
540
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V4dGVybmFscy9xdWlsbC9xdWlsbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR25ELE9BQU8sRUFDSCxrQkFBa0IsR0FJckIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGVBQWUsRUFFZixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWdCNUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFvQixFQUFFLFlBQTBCLEVBQWUsRUFBRTtJQUNoRixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDO0lBQzVDLE9BQU8sWUFBWSxJQUFJLE1BQU0sQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFvQkYsTUFBTSxPQUFPLG9CQUFvQjtJQXdDN0IsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFtQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElB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RyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQU1ILFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLE1BQU07c0JBRFQsS0FBSztnQkFTRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBNkJOLFdBQVc7c0JBRFYsS0FBSztnQkF5Qk4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBRVUlMTF9DT05GSUdfVE9LRU4sXG4gICAgUXVpbGxDb25maWcsXG4gICAgUXVpbGxGb3JtYXQsXG4gICAgUXVpbGxNb2R1bGVzLFxufSBmcm9tICcuL3F1aWxsLWVkaXRvci5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlY3VyaXR5Q29udGV4dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBDb250ZW50Q2hhbmdlLCBFZGl0b3JDaGFuZ2VDb250ZW50LCBTZWxlY3Rpb25DaGFuZ2UsIFJhbmdlIH0gZnJvbSAnLi9tb2RlbHMvZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tICcuL2xvYWRlci5zZXJ2aWNlJztcblxuLy8gQmVjYXVzZSBxdWlsbCB1c2VzIGBkb2N1bWVudGAgZGlyZWN0bHksIHdlIGNhbm5vdCBgaW1wb3J0YCBkdXJpbmcgU1NSXG4vLyBpbnN0ZWFkLCB3ZSBsb2FkIGR5bmFtaWNhbGx5IHZpYSBgcmVxdWlyZSgncXVpbGwnKWAgaW4gYG5nQWZ0ZXJWaWV3SW5pdCgpYFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZhclxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZhclxuZGVjbGFyZSB2YXIgUXVpbGw6IGFueTtcbi8vIGxldCBRdWlsbDogYW55ID0gd2luZG93WydRdWlsbCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbU9wdGlvbiB7XG4gICAgaW1wb3J0OiBzdHJpbmc7XG4gICAgd2hpdGVsaXN0OiBhbnlbXTtcbn1cblxuY29uc3QgZ2V0Rm9ybWF0ID0gKGZvcm1hdD86IFF1aWxsRm9ybWF0LCBjb25maWdGb3JtYXQ/OiBRdWlsbEZvcm1hdCk6IFF1aWxsRm9ybWF0ID0+IHtcbiAgICBjb25zdCBwYXNzZWRGb3JtYXQgPSBmb3JtYXQgfHwgY29uZmlnRm9ybWF0O1xuICAgIHJldHVybiBwYXNzZWRGb3JtYXQgfHwgJ2h0bWwnO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFF1aWxsRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUXVpbGxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3F1aWxsLWVkaXRvcicsXG4gICAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3F1aWxsLWVkaXRvci10b29sYmFyXVwiPjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUXVpbGxFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XG4gICAgcXVpbGxFZGl0b3I6IGFueTtcbiAgICBlZGl0b3JFbGVtOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBjb250ZW50OiBhbnk7XG4gICAgcHJvdGVjdGVkIGxvYWRlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBmb3JtYXQ/OiAnb2JqZWN0JyB8ICdodG1sJyB8ICd0ZXh0JyB8ICdqc29uJztcbiAgICBASW5wdXQoKSB0aGVtZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBtb2R1bGVzPzogUXVpbGxNb2R1bGVzO1xuICAgIEBJbnB1dCgpIGRlYnVnPzogJ3dhcm4nIHwgJ2xvZycgfCAnZXJyb3InIHwgZmFsc2U7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgICBASW5wdXQoKSBmb3JtYXRzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIEBJbnB1dCgpIGN1c3RvbVRvb2xiYXJQb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyA9ICd0b3AnO1xuICAgIEBJbnB1dCgpIHN0eWxlczogYW55ID0gbnVsbDtcbiAgICBASW5wdXQoKSBzY3JvbGxpbmdDb250YWluZXI/OiBIVE1MRWxlbWVudCB8IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KCkgYm91bmRzPzogSFRNTEVsZW1lbnQgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgY3VzdG9tT3B0aW9uczogQ3VzdG9tT3B0aW9uW10gPSBbXTtcbiAgICBASW5wdXQoKSB0cmFja0NoYW5nZXM/OiAndXNlcicgfCAnYWxsJztcbiAgICBASW5wdXQoKSBoYXNJbWFnZUZlYXR1cmU6IGJvb2xlYW47XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25FZGl0b3JDcmVhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25Db250ZW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPENvbnRlbnRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25DaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBlZGl0b3I6IGFueTtcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZWRpdG9yOiBhbnk7XG4gICAgICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seTtcbiAgICB9XG4gICAgc2V0IHJlYWRPbmx5KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWFkT25seT86IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNhbml0aXplKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2FuaXRpemU7XG4gICAgfVxuICAgIHNldCBzYW5pdGl6ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3Nhbml0aXplID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2FuaXRpemUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzdHJpY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJpY3Q7XG4gICAgfVxuICAgIHNldCBzdHJpY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9zdHJpY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zdHJpY3QgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHByZXNlcnZlV2hpdGVzcGFjZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNlcnZlV2hpdGVzcGFjZTtcbiAgICB9XG4gICAgc2V0IHByZXNlcnZlV2hpdGVzcGFjZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3ByZXNlcnZlV2hpdGVzcGFjZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3ByZXNlcnZlV2hpdGVzcGFjZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkaXNhYmxlZCA9IGZhbHNlOyAvLyB1c2VkIHRvIHN0b3JlIGluaXRpYWwgdmFsdWUgYmVmb3JlIFZpZXdJbml0XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55LFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChRVUlMTF9DT05GSUdfVE9LRU4pIHByaXZhdGUgY29uZmlnOiBRdWlsbENvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBsb2FkZXI6IExvYWRlclNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LG5vLWVtcHR5LWZ1bmN0aW9uLEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXG4gICAgb25Nb2RlbENoYW5nZShfbW9kZWxWYWx1ZT86IGFueSkge31cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHksIG5vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIG9uTW9kZWxUb3VjaGVkKCkge31cblxuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVHZXR0ZXIgPSAocXVpbGxFZGl0b3I6IGFueSwgZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcgfCBhbnkgPT4ge1xuICAgICAgICBsZXQgaHRtbDogc3RyaW5nIHwgbnVsbCA9IGVkaXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcignLnFsLWVkaXRvcicpPy5pbm5lckhUTUw7XG4gICAgICAgIGlmIChodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8ZGl2Pjxicj48ZGl2PicpIHtcbiAgICAgICAgICAgIGh0bWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtb2RlbFZhbHVlID0gaHRtbDtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpO1xuXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBtb2RlbFZhbHVlID0gcXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBtb2RlbFZhbHVlID0gSlNPTi5zdHJpbmdpZnkocXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb2RlbFZhbHVlO1xuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU2V0dGVyID0gKHF1aWxsRWRpdG9yOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodG1sJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2FuaXRpemUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcXVpbGxFZGl0b3IuY2xpcGJvYXJkLmNvbnZlcnQoeyBodG1sOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGluc2VydDogdmFsdWUgfV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gY29uc3QgbG9hZGVyID0gbmV3IExvYWRlclNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5sb2FkZXIubG9hZCgpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHNldHVwIGtleWJvYXJkIGJpbmRpbmdzIGZyb20gQmV0dGVyVGFibGUgaWYgcHJlc2VudFxuICAgICAgICAgICAgICAgIGNvbnN0IFF1aWxsQmV0dGVyVGFibGUgPSB3aW5kb3dbJ3F1aWxsQmV0dGVyVGFibGUnXTtcbiAgICAgICAgICAgICAgICBpZihRdWlsbEJldHRlclRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgICAgICAgICAgICAgICAgICBpZighd2luZG93WydRdWlsbCddLmltcG9ydHMuaGFzT3duUHJvcGVydHkoJ21vZHVsZXMvYmV0dGVyLXRhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1snUXVpbGwnXS5yZWdpc3Rlcih7ICdtb2R1bGVzL2JldHRlci10YWJsZSc6IFF1aWxsQmV0dGVyVGFibGUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMuY29uZmlnLm1vZHVsZXMua2V5Ym9hcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm1vZHVsZXMua2V5Ym9hcmQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZ3M6IFF1aWxsQmV0dGVyVGFibGU/LmtleWJvYXJkQmluZGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghUXVpbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUXVpbGwgPSByZXF1aXJlKCdxdWlsbCcpXG4gICAgICAgICAgICAgICAgICAgIFF1aWxsID0gd2luZG93WydRdWlsbCddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlU2Nyb2xsQmVoYXZpb3IoUXVpbGwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbVRvb2xiYXJQb3NpdGlvbiA9PT0gJ3RvcCcgPyAnYmVmb3JlZW5kJyA6ICdhZnRlcmJlZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZVdoaXRlc3BhY2UgPyAnPHByZSBxdWlsbC1lZGl0b3ItZWxlbWVudD48L3ByZT4nIDogJzxkaXYgcXVpbGwtZWRpdG9yLWVsZW1lbnQ+PC9kaXY+J1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcXVpbGwtZWRpdG9yLWVsZW1lbnRdJyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0b29sYmFyRWxlbSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1txdWlsbC1lZGl0b3ItdG9vbGJhcl0nKTtcbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlcyA9IHRoaXMubW9kdWxlcyB8fCB0aGlzLmNvbmZpZy5tb2R1bGVzIHx8IGRlZmF1bHRNb2R1bGVzO1xuICAgICAgICAgICAgICAgIGlmIChtb2R1bGVzLnRvb2xiYXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLnRvb2xiYXIgPSBkZWZhdWx0TW9kdWxlcy50b29sYmFyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgIT09IHVuZGVmaW5lZCA/IHRoaXMucGxhY2Vob2xkZXIgOiB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2Vob2xkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlciA9ICdJbnNlcnQgdGV4dCBoZXJlIC4uLic7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRvb2xiYXJFbGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkb3Qtbm90YXRpb24sQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvblxuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzWyd0b29sYmFyJ10gPSB0b29sYmFyRWxlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzSW1hZ2VGZWF0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZXNbJ3VwbG9hZGVyJ10gPSB7IGhhbmRsZXI6ICgpID0+IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlc1sndXBsb2FkZXInXSA9IHsgbWltZXR5cGVzOiBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJ10gfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdHlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zdHlsZXMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWRpdG9yRWxlbSwga2V5LCB0aGlzLnN0eWxlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zLmZvckVhY2goKGN1c3RvbU9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDdXN0b21PcHRpb24gPSBRdWlsbC5pbXBvcnQoY3VzdG9tT3B0aW9uLmltcG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0N1c3RvbU9wdGlvbi53aGl0ZWxpc3QgPSBjdXN0b21PcHRpb24ud2hpdGVsaXN0O1xuICAgICAgICAgICAgICAgICAgICBRdWlsbC5yZWdpc3RlcihuZXdDdXN0b21PcHRpb24sIHRydWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHRoaXMuYm91bmRzICYmIHRoaXMuYm91bmRzID09PSAnc2VsZicgPyB0aGlzLmVkaXRvckVsZW0gOiB0aGlzLmJvdW5kcztcbiAgICAgICAgICAgICAgICBpZiAoIWJvdW5kcykge1xuICAgICAgICAgICAgICAgICAgICBib3VuZHMgPSB0aGlzLmNvbmZpZy5ib3VuZHMgPyB0aGlzLmNvbmZpZy5ib3VuZHMgOiB0aGlzLmRvYy5ib2R5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkZWJ1ZyA9IHRoaXMuZGVidWc7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWJ1ZyAmJiBkZWJ1ZyAhPT0gZmFsc2UgJiYgdGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcgPSB0aGlzLmNvbmZpZy5kZWJ1ZztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcmVhZE9ubHkgPSB0aGlzLnJlYWRPbmx5O1xuICAgICAgICAgICAgICAgIGlmICghcmVhZE9ubHkgJiYgdGhpcy5yZWFkT25seSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHkgPSB0aGlzLmNvbmZpZy5yZWFkT25seSAhPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcucmVhZE9ubHkgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsaW5nQ29udGFpbmVyID0gdGhpcy5zY3JvbGxpbmdDb250YWluZXI7XG4gICAgICAgICAgICAgICAgaWYgKCFzY3JvbGxpbmdDb250YWluZXIgJiYgdGhpcy5zY3JvbGxpbmdDb250YWluZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29udGFpbmVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNjcm9sbGluZ0NvbnRhaW5lciA9PT0gbnVsbCB8fCB0aGlzLmNvbmZpZy5zY3JvbGxpbmdDb250YWluZXIgPyB0aGlzLmNvbmZpZy5zY3JvbGxpbmdDb250YWluZXIgOiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBmb3JtYXRzID0gdGhpcy5mb3JtYXRzO1xuICAgICAgICAgICAgICAgIGlmICghZm9ybWF0cyAmJiBmb3JtYXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0cyA9IHRoaXMuY29uZmlnLmZvcm1hdHMgfHwgdGhpcy5jb25maWcuZm9ybWF0cyA9PT0gbnVsbCA/IHRoaXMuY29uZmlnLmZvcm1hdHMgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFF1aWxsLmZvcm1hdHMgPSB7IC4uLlF1aWxsLmZvcm1hdHMsIFt0aGlzLmlkXTogZm9ybWF0cyB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHMgJiYgZm9ybWF0cy5pbmRleE9mKCd0YWJsZScpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubW9kdWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiZXR0ZXItdGFibGUnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IgPSBuZXcgUXVpbGwodGhpcy5lZGl0b3JFbGVtLCB7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kcyxcbiAgICAgICAgICAgICAgICAgICAgZGVidWcsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHMsXG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZXMsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seSxcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICBzdHJpY3Q6IHRoaXMuc3RyaWN0LFxuICAgICAgICAgICAgICAgICAgICB0aGVtZTogdGhpcy50aGVtZSB8fCAodGhpcy5jb25maWcudGhlbWUgPyB0aGlzLmNvbmZpZy50aGVtZSA6ICdzbm93JyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5jb250YWluZXIuZmlyc3RDaGlsZC5pZCA9IHRoaXMuaWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZvcm1hdCh0aGlzLmZvcm1hdCwgdGhpcy5jb25maWcuZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHModGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0VGV4dCh0aGlzLmNvbnRlbnQsICdzaWxlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKEpTT04ucGFyc2UodGhpcy5jb250ZW50KSwgJ3NpbGVudCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0VGV4dCh0aGlzLmNvbnRlbnQsICdzaWxlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNhbml0aXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50cyA9IHRoaXMucXVpbGxFZGl0b3IuY2xpcGJvYXJkLmNvbnZlcnQodGhpcy5jb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY29udGVudHMsICdzaWxlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuaGlzdG9yeS5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgZGlzYWJsZWQgc3RhdHVzIGJhc2VkIG9uIHRoaXMuZGlzYWJsZWQgYXMgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbkVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLnF1aWxsRWRpdG9yKTtcblxuICAgICAgICAgICAgICAgIC8vIG1hcmsgbW9kZWwgYXMgdG91Y2hlZCBpZiBlZGl0b3IgbG9zdCBmb2N1c1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub24oJ3NlbGVjdGlvbi1jaGFuZ2UnLCB0aGlzLnNlbGVjdGlvbkNoYW5nZUhhbmRsZXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIG1vZGVsIGlmIHRleHQgY2hhbmdlc1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub24oJ3RleHQtY2hhbmdlJywgdGhpcy50ZXh0Q2hhbmdlSGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZUhhbmRsZXIgPSAocmFuZ2U6IFJhbmdlIHwgbnVsbCwgb2xkUmFuZ2U6IFJhbmdlIHwgbnVsbCwgc291cmNlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAocmFuZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLnF1aWxsRWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9sZFJhbmdlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMucXVpbGxFZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLnF1aWxsRWRpdG9yLFxuICAgICAgICAgICAgICAgIG9sZFJhbmdlLFxuICAgICAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIXJhbmdlICYmIHRoaXMub25Nb2RlbFRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0ZXh0Q2hhbmdlSGFuZGxlciA9IChkZWx0YTogYW55LCBvbGREZWx0YTogYW55LCBzb3VyY2U6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBvbmx5IGVtaXQgY2hhbmdlcyBlbWl0dGVkIGJ5IHVzZXIgaW50ZXJhY3Rpb25zXG5cbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucXVpbGxFZGl0b3IuZ2V0VGV4dCgpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5xdWlsbEVkaXRvci5nZXRDb250ZW50cygpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGxldCBodG1sOiBzdHJpbmcgfCBudWxsID0gdGhpcy5lZGl0b3JFbGVtIS5xdWVyeVNlbGVjdG9yKCcucWwtZWRpdG9yJykhLmlubmVySFRNTDtcbiAgICAgICAgaWYgKGh0bWwgPT09ICc8cD48YnI+PC9wPicgfHwgaHRtbCA9PT0gJzxkaXY+PGJyPjxkaXY+Jykge1xuICAgICAgICAgICAgaHRtbCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyYWNrQ2hhbmdlcyA9IHRoaXMudHJhY2tDaGFuZ2VzIHx8IHRoaXMuY29uZmlnLnRyYWNrQ2hhbmdlcztcbiAgICAgICAgICAgIGlmICgoc291cmNlID09PSBRdWlsbC5zb3VyY2VzLlVTRVIgfHwgKHRyYWNrQ2hhbmdlcyAmJiB0cmFja0NoYW5nZXMgPT09ICdhbGwnKSkgJiYgdGhpcy5vbk1vZGVsQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlR2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIHRoaXMuZWRpdG9yRWxlbSEpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZGVsdGEsXG4gICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLnF1aWxsRWRpdG9yLFxuICAgICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgICAgb2xkRGVsdGEsXG4gICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5vZmYoJ3NlbGVjdGlvbi1jaGFuZ2UnLCB0aGlzLnNlbGVjdGlvbkNoYW5nZUhhbmRsZXIpO1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5vZmYoJ3RleHQtY2hhbmdlJywgdGhpcy50ZXh0Q2hhbmdlSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmlkKSB7XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmNvbnRhaW5lci5maXJzdENoaWxkLmlkID0gY2hhbmdlcy5pZC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBRdWlsbC5mb3JtYXRzID0geyAuLi5RdWlsbC5mb3JtYXRzLCBbdGhpcy5pZF06IHRoaXMuZm9ybWF0cyB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydyZWFkT25seSddKSB7XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmVuYWJsZSghY2hhbmdlc1sncmVhZE9ubHknXS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydwbGFjZWhvbGRlciddKSB7XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnJvb3QuZGF0YXNldC5wbGFjZWhvbGRlciA9IGNoYW5nZXNbJ3BsYWNlaG9sZGVyJ10uY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydzdHlsZXMnXSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0eWxpbmcgPSBjaGFuZ2VzWydzdHlsZXMnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1N0eWxpbmcgPSBjaGFuZ2VzWydzdHlsZXMnXS5wcmV2aW91c1ZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocHJldmlvdXNTdHlsaW5nKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJldmlvdXNTdHlsaW5nKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZWRpdG9yRWxlbSwga2V5KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGluZykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRTdHlsaW5nKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWRpdG9yRWxlbSwga2V5LCB0aGlzLnN0eWxlc1trZXldKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1snZm9ybWF0cyddKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Rm9ybWF0cyA9IGNoYW5nZXNbJ2Zvcm1hdHMnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBRdWlsbC5mb3JtYXRzID0geyAuLi5RdWlsbC5mb3JtYXRzLCBbdGhpcy5pZF06IGN1cnJlbnRGb3JtYXRzIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKGN1cnJlbnRWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpO1xuXG4gICAgICAgIGlmICh0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0VGV4dChjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHModGhpcy52YWx1ZVNldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmNvbnRlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRUZXh0KCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRoaXMuZGlzYWJsZWQpOiB2b2lkIHtcbiAgICAgICAgLy8gc3RvcmUgaW5pdGlhbCB2YWx1ZSB0byBzZXQgYXBwcm9wcmlhdGUgZGlzYWJsZWQgc3RhdHVzIGFmdGVyIFZpZXdJbml0XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICBpZiAodGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmRpc2FibGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmVuYWJsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAobW9kZWxWYWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyOiB7XG4gICAgICAgICAgICBtaW5MZW5ndGhFcnJvcj86IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogbnVtYmVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG1heExlbmd0aEVycm9yPzoge1xuICAgICAgICAgICAgICAgIGdpdmVuOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVxdWlyZWRFcnJvcj86IHsgZW1wdHk6IGJvb2xlYW4gfTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSB0aGlzLnF1aWxsRWRpdG9yLmdldFRleHQoKS50cmltKCkubGVuZ3RoO1xuXG4gICAgICAgIGlmICh0aGlzLm1pbkxlbmd0aCAmJiB0ZXh0TGVuZ3RoICYmIHRleHRMZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICAgICAgZXJyLm1pbkxlbmd0aEVycm9yID0ge1xuICAgICAgICAgICAgICAgIGdpdmVuOiB0ZXh0TGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogdGhpcy5taW5MZW5ndGgsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRleHRMZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgZXJyLm1heExlbmd0aEVycm9yID0ge1xuICAgICAgICAgICAgICAgIGdpdmVuOiB0ZXh0TGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRleHRMZW5ndGgpIHtcbiAgICAgICAgICAgIGVyci5yZXF1aXJlZEVycm9yID0ge1xuICAgICAgICAgICAgICAgIGVtcHR5OiB0cnVlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgUXVpbGwgc2Nyb2xsIGJlaGF2aW9yIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBmb3JtYXRzIGFycmF5IGFuZCBza2lwIG5vbi1mb3VuZCBvbmVzLiBUaGVuXG4gICAgICogcmVnaXN0ZXJzIHRoZSBwbHVnaW4gdG8gdGhlIFF1aWxsIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBRdWlsbEluc3RhbmNlIFRoZSBRdWlsbCBjbGFzcyAobm90IHRoZSBpbnN0YW5jZSlcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgb3ZlcnJpZGVTY3JvbGxCZWhhdmlvcihRdWlsbEluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhlIEJ1aWx0LWluIFNjcm9sbCBDbGFzcyBpcyBub3QgZXhwb3J0ZWQsIHNvIHdlIG5lZWQgdG8gaW1wb3J0IGl0XG4gICAgICAgIGNvbnN0IEJ1aWx0aW5TY3JvbGwgPSBRdWlsbEluc3RhbmNlLmltcG9ydCgnYmxvdHMvc2Nyb2xsJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBRdWlsbCBzY3JvbGwgYmVoYXZpb3IgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIGZvcm1hdHMgYXJyYXkgYW5kIHNraXAgbm9uLWZvdW5kIG9uZXMuXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzcyBTY3JvbGwgZXh0ZW5kcyBCdWlsdGluU2Nyb2xsIHtcbiAgICAgICAgICAgIGZvcm1hdEF0KGluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBmb3JtYXQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IHRoaXMuZG9tTm9kZS5pZDtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZUZvcm1hdHMgPSBRdWlsbEluc3RhbmNlLmZvcm1hdHNbZWxlbWVudElkXTtcbiAgICAgICAgICAgICAgICAvLyBjaGVja3MgdGhlIGZvcm1hdHMgYXJyYXkgdG8gc2VlIGlmIHRoZSBmb3JtYXQgaXMgYmxhY2tsaXN0ZWRcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VGb3JtYXRzICYmIGluc3RhbmNlRm9ybWF0cy5maW5kKChmKSA9PiBmID09PSBmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY29udGludWUgd2l0aCBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgc3VwZXIuZm9ybWF0QXQoaW5kZXgsIGxlbmd0aCwgZm9ybWF0LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIHJlZ2lzdGVyIHRoZSBTY3JvbGwgb3ZlcnJpZGUgKi9cbiAgICAgICAgUXVpbGxJbnN0YW5jZS5yZWdpc3RlcignYmxvdHMvc2Nyb2xsJywgU2Nyb2xsLCB0cnVlKTtcbiAgICB9XG59XG4iXX0=
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V4dGVybmFscy9xdWlsbC9xdWlsbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR25ELE9BQU8sRUFDSCxrQkFBa0IsR0FJckIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFdBQVcsRUFFWCxlQUFlLEVBRWYsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQWlCbEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFvQixFQUFFLFlBQTBCLEVBQWUsRUFBRTtJQUNoRixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDO0lBQzVDLE9BQU8sWUFBWSxJQUFJLE1BQU0sQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFvQkYsTUFBTSxPQUFPLG9CQUFvQjtJQWdEN0IsWUFDWSxVQUFzQixFQUN0QixZQUEwQixFQUNSLEdBQVE7SUFDbEMsd0RBQXdEO0lBQzNCLFVBQWtCLEVBQ3ZDLFFBQW1CLEVBQ25CLElBQVksRUFDZ0IsTUFBbUIsRUFDL0MsTUFBcUI7UUFSckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFFTCxlQUFVLEdBQVYsVUFB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O3NCQUFWLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQUtpQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGtCQUFrQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFzQnRDLFdBQVc7c0JBRFYsS0FBSztnQkF5Qk4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBRVUlMTF9DT05GSUdfVE9LRU4sXG4gICAgUXVpbGxDb25maWcsXG4gICAgUXVpbGxGb3JtYXQsXG4gICAgUXVpbGxNb2R1bGVzLFxufSBmcm9tICcuL3F1aWxsLWVkaXRvci5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VjdXJpdHlDb250ZXh0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZGVmYXVsdE1vZHVsZXMgfSBmcm9tICcuL3F1aWxsLWRlZmF1bHRzJztcbmltcG9ydCB7IENvbnRlbnRDaGFuZ2UsIFNlbGVjdGlvbkNoYW5nZSwgUmFuZ2UgfSBmcm9tICcuL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbG9hZGVyLnNlcnZpY2UnO1xuXG4vLyBCZWNhdXNlIHF1aWxsIHVzZXMgYGRvY3VtZW50YCBkaXJlY3RseSwgd2UgY2Fubm90IGBpbXBvcnRgIGR1cmluZyBTU1Jcbi8vIGluc3RlYWQsIHdlIGxvYWQgZHluYW1pY2FsbHkgdmlhIGByZXF1aXJlKCdxdWlsbCcpYCBpbiBgbmdBZnRlclZpZXdJbml0KClgXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG5kZWNsYXJlIHZhciByZXF1aXJlOiBhbnk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG5kZWNsYXJlIHZhciBRdWlsbDogYW55O1xuLy8gbGV0IFF1aWxsOiBhbnkgPSB3aW5kb3dbJ1F1aWxsJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tT3B0aW9uIHtcbiAgICBpbXBvcnQ6IHN0cmluZztcbiAgICB3aGl0ZWxpc3Q6IGFueVtdO1xufVxuXG5jb25zdCBnZXRGb3JtYXQgPSAoZm9ybWF0PzogUXVpbGxGb3JtYXQsIGNvbmZpZ0Zvcm1hdD86IFF1aWxsRm9ybWF0KTogUXVpbGxGb3JtYXQgPT4ge1xuICAgIGNvbnN0IHBhc3NlZEZvcm1hdCA9IGZvcm1hdCB8fCBjb25maWdGb3JtYXQ7XG4gICAgcmV0dXJuIHBhc3NlZEZvcm1hdCB8fCAnaHRtbCc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUXVpbGxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRdWlsbEVkaXRvckNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAncXVpbGwtZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZTogYCA8bmctY29udGVudCBzZWxlY3Q9XCJbcXVpbGwtZWRpdG9yLXRvb2xiYXJdXCI+PC9uZy1jb250ZW50PiBgLFxufSlcbmV4cG9ydCBjbGFzcyBRdWlsbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcbiAgICBxdWlsbEVkaXRvcjogYW55O1xuICAgIGVkaXRvckVsZW06IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGNvbnRlbnQ6IGFueTtcbiAgICBwcm90ZWN0ZWQgbG9hZGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZvcm1hdD86ICdvYmplY3QnIHwgJ2h0bWwnIHwgJ3RleHQnIHwgJ2pzb24nO1xuICAgIEBJbnB1dCgpIHRoZW1lPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZHVsZXM/OiBRdWlsbE1vZHVsZXM7XG4gICAgQElucHV0KCkgZGVidWc/OiAnd2FybicgfCAnbG9nJyB8ICdlcnJvcicgfCBmYWxzZTtcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGZvcm1hdHM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgQElucHV0KCkgY3VzdG9tVG9vbGJhclBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nID0gJ3RvcCc7XG4gICAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSBudWxsO1xuICAgIEBJbnB1dCgpIHNjcm9sbGluZ0NvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKSBib3VuZHM/OiBIVE1MRWxlbWVudCB8IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXN0b21PcHRpb25zOiBDdXN0b21PcHRpb25bXSA9IFtdO1xuICAgIEBJbnB1dCgpIHRyYWNrQ2hhbmdlcz86ICd1c2VyJyB8ICdhbGwnO1xuICAgIEBJbnB1dCgpIGhhc0ltYWdlRmVhdHVyZTogYm9vbGVhbjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkNvbnRlbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29udGVudENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGVkaXRvcjogYW55O1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBlZGl0b3I6IGFueTtcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVhZE9ubHk/OiBib29sZWFuO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzYW5pdGl6ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdHJpY3QgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcmVzZXJ2ZVdoaXRlc3BhY2UgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGlzYWJsZWQgPSBmYWxzZTsgLy8gdXNlZCB0byBzdG9yZSBpbml0aWFsIHZhbHVlIGJlZm9yZSBWaWV3SW5pdFxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoUVVJTExfQ09ORklHX1RPS0VOKSBwcml2YXRlIGNvbmZpZzogUXVpbGxDb25maWcsXG4gICAgICAgIHByaXZhdGUgbG9hZGVyOiBMb2FkZXJTZXJ2aWNlLFxuICAgICkge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eSxuby1lbXB0eS1mdW5jdGlvbixAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIG9uTW9kZWxDaGFuZ2UoX21vZGVsVmFsdWU/OiBhbnkpIHt9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LCBuby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGVcbiAgICBvbk1vZGVsVG91Y2hlZCgpIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlR2V0dGVyID0gKHF1aWxsRWRpdG9yOiBhbnksIGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogc3RyaW5nIHwgYW55ID0+IHtcbiAgICAgICAgbGV0IGh0bWw6IHN0cmluZyB8IG51bGwgPSBlZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xbC1lZGl0b3InKT8uaW5uZXJIVE1MO1xuICAgICAgICBpZiAoaHRtbCA9PT0gJzxwPjxicj48L3A+JyB8fCBodG1sID09PSAnPGRpdj48YnI+PGRpdj4nKSB7XG4gICAgICAgICAgICBodG1sID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbW9kZWxWYWx1ZSA9IGh0bWw7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZvcm1hdCh0aGlzLmZvcm1hdCwgdGhpcy5jb25maWcuZm9ybWF0KTtcblxuICAgICAgICBpZiAoZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIG1vZGVsVmFsdWUgPSBxdWlsbEVkaXRvci5nZXRUZXh0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldENvbnRlbnRzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHF1aWxsRWRpdG9yLmdldENvbnRlbnRzKCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIG1vZGVsVmFsdWUgPSBxdWlsbEVkaXRvci5nZXRUZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9kZWxWYWx1ZTtcbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVNldHRlciA9IChxdWlsbEVkaXRvcjogYW55LCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHRtbCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNhbml0aXplKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHsgaHRtbDogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbeyBpbnNlcnQ6IHZhbHVlIH1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnN0IGxvYWRlciA9IG5ldyBMb2FkZXJTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubG9hZGVyLmxvYWQoKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBzZXR1cCBrZXlib2FyZCBiaW5kaW5ncyBmcm9tIEJldHRlclRhYmxlIGlmIHByZXNlbnRcbiAgICAgICAgICAgICAgICBjb25zdCBRdWlsbEJldHRlclRhYmxlID0gd2luZG93WydxdWlsbEJldHRlclRhYmxlJ107XG4gICAgICAgICAgICAgICAgaWYoUXVpbGxCZXR0ZXJUYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgaWYoIXdpbmRvd1snUXVpbGwnXS5pbXBvcnRzLmhhc093blByb3BlcnR5KCdtb2R1bGVzL2JldHRlci10YWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ1F1aWxsJ10ucmVnaXN0ZXIoeyAnbW9kdWxlcy9iZXR0ZXItdGFibGUnOiBRdWlsbEJldHRlclRhYmxlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLmNvbmZpZy5tb2R1bGVzLmtleWJvYXJkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5tb2R1bGVzLmtleWJvYXJkID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzOiBRdWlsbEJldHRlclRhYmxlPy5rZXlib2FyZEJpbmRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIVF1aWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFF1aWxsID0gcmVxdWlyZSgncXVpbGwnKVxuICAgICAgICAgICAgICAgICAgICBRdWlsbCA9IHdpbmRvd1snUXVpbGwnXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZVNjcm9sbEJlaGF2aW9yKFF1aWxsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50SFRNTChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Ub29sYmFyUG9zaXRpb24gPT09ICd0b3AnID8gJ2JlZm9yZWVuZCcgOiAnYWZ0ZXJiZWdpbicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmVXaGl0ZXNwYWNlID8gJzxwcmUgcXVpbGwtZWRpdG9yLWVsZW1lbnQ+PC9wcmU+JyA6ICc8ZGl2IHF1aWxsLWVkaXRvci1lbGVtZW50PjwvZGl2PidcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3F1aWxsLWVkaXRvci1lbGVtZW50XScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbGJhckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcXVpbGwtZWRpdG9yLXRvb2xiYXJdJyk7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZXMgPSB0aGlzLm1vZHVsZXMgfHwgdGhpcy5jb25maWcubW9kdWxlcyB8fCBkZWZhdWx0TW9kdWxlcztcbiAgICAgICAgICAgICAgICBpZiAobW9kdWxlcy50b29sYmFyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy50b29sYmFyID0gZGVmYXVsdE1vZHVsZXMudG9vbGJhcjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgPyB0aGlzLnBsYWNlaG9sZGVyIDogdGhpcy5jb25maWcucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSAnSW5zZXJ0IHRleHQgaGVyZSAuLi4nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0b29sYmFyRWxlbSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZG90LW5vdGF0aW9uLEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlc1sndG9vbGJhciddID0gdG9vbGJhckVsZW07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0ltYWdlRmVhdHVyZSkge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzWyd1cGxvYWRlciddID0geyBoYW5kbGVyOiAoKSA9PiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZXNbJ3VwbG9hZGVyJ10gPSB7IG1pbWV0eXBlczogWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZyddIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3R5bGVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSwgdGhpcy5zdHlsZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChjdXN0b21PcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q3VzdG9tT3B0aW9uID0gUXVpbGwuaW1wb3J0KGN1c3RvbU9wdGlvbi5pbXBvcnQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDdXN0b21PcHRpb24ud2hpdGVsaXN0ID0gY3VzdG9tT3B0aW9uLndoaXRlbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgUXVpbGwucmVnaXN0ZXIobmV3Q3VzdG9tT3B0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBib3VuZHMgPSB0aGlzLmJvdW5kcyAmJiB0aGlzLmJvdW5kcyA9PT0gJ3NlbGYnID8gdGhpcy5lZGl0b3JFbGVtIDogdGhpcy5ib3VuZHM7XG4gICAgICAgICAgICAgICAgaWYgKCFib3VuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYm91bmRzID0gdGhpcy5jb25maWcuYm91bmRzID8gdGhpcy5jb25maWcuYm91bmRzIDogdGhpcy5kb2MuYm9keTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVidWcgPSB0aGlzLmRlYnVnO1xuICAgICAgICAgICAgICAgIGlmICghZGVidWcgJiYgZGVidWcgIT09IGZhbHNlICYmIHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnID0gdGhpcy5jb25maWcuZGVidWc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHJlYWRPbmx5ID0gdGhpcy5yZWFkT25seTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlYWRPbmx5ICYmIHRoaXMucmVhZE9ubHkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5ID0gdGhpcy5jb25maWcucmVhZE9ubHkgIT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnJlYWRPbmx5IDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHNjcm9sbGluZ0NvbnRhaW5lciA9IHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGlmICghc2Nyb2xsaW5nQ29udGFpbmVyICYmIHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zY3JvbGxpbmdDb250YWluZXIgPT09IG51bGwgfHwgdGhpcy5jb25maWcuc2Nyb2xsaW5nQ29udGFpbmVyID8gdGhpcy5jb25maWcuc2Nyb2xsaW5nQ29udGFpbmVyIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZm9ybWF0cyA9IHRoaXMuZm9ybWF0cztcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdHMgJiYgZm9ybWF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHMgPSB0aGlzLmNvbmZpZy5mb3JtYXRzIHx8IHRoaXMuY29uZmlnLmZvcm1hdHMgPT09IG51bGwgPyB0aGlzLmNvbmZpZy5mb3JtYXRzIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBRdWlsbC5mb3JtYXRzID0geyAuLi5RdWlsbC5mb3JtYXRzLCBbdGhpcy5pZF06IGZvcm1hdHMgfTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3JtYXRzICYmIGZvcm1hdHMuaW5kZXhPZigndGFibGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1vZHVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmV0dGVyLXRhYmxlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yID0gbmV3IFF1aWxsKHRoaXMuZWRpdG9yRWxlbSwge1xuICAgICAgICAgICAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHksXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMudGhlbWUgfHwgKHRoaXMuY29uZmlnLnRoZW1lID8gdGhpcy5jb25maWcudGhlbWUgOiAnc25vdycpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuY29udGFpbmVyLmZpcnN0Q2hpbGQuaWQgPSB0aGlzLmlkO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKHRoaXMuY29udGVudCwgJ3NpbGVudCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQodGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRDb250ZW50cyhKU09OLnBhcnNlKHRoaXMuY29udGVudCksICdzaWxlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQodGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zYW5pdGl6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSB0aGlzLnF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKGNvbnRlbnRzLCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmhpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGRpc2FibGVkIHN0YXR1cyBiYXNlZCBvbiB0aGlzLmRpc2FibGVkIGFzIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25FZGl0b3JDcmVhdGVkLmVtaXQodGhpcy5xdWlsbEVkaXRvcik7XG5cbiAgICAgICAgICAgICAgICAvLyBtYXJrIG1vZGVsIGFzIHRvdWNoZWQgaWYgZWRpdG9yIGxvc3QgZm9jdXNcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcblxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBtb2RlbCBpZiB0ZXh0IGNoYW5nZXNcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCd0ZXh0LWNoYW5nZScsIHRoaXMudGV4dENoYW5nZUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VIYW5kbGVyID0gKHJhbmdlOiBSYW5nZSB8IG51bGwsIG9sZFJhbmdlOiBSYW5nZSB8IG51bGwsIHNvdXJjZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJhbmdlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkJsdXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvbGRSYW5nZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLnF1aWxsRWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICBvbGRSYW5nZSxcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFyYW5nZSAmJiB0aGlzLm9uTW9kZWxUb3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGV4dENoYW5nZUhhbmRsZXIgPSAoZGVsdGE6IGFueSwgb2xkRGVsdGE6IGFueSwgc291cmNlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gb25seSBlbWl0IGNoYW5nZXMgZW1pdHRlZCBieSB1c2VyIGludGVyYWN0aW9uc1xuXG4gICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLnF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBsZXQgaHRtbDogc3RyaW5nIHwgbnVsbCA9IHRoaXMuZWRpdG9yRWxlbSEucXVlcnlTZWxlY3RvcignLnFsLWVkaXRvcicpIS5pbm5lckhUTUw7XG4gICAgICAgIGlmIChodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8ZGl2Pjxicj48ZGl2PicpIHtcbiAgICAgICAgICAgIGh0bWwgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFja0NoYW5nZXMgPSB0aGlzLnRyYWNrQ2hhbmdlcyB8fCB0aGlzLmNvbmZpZy50cmFja0NoYW5nZXM7XG4gICAgICAgICAgICBpZiAoKHNvdXJjZSA9PT0gUXVpbGwuc291cmNlcy5VU0VSIHx8ICh0cmFja0NoYW5nZXMgJiYgdHJhY2tDaGFuZ2VzID09PSAnYWxsJykpICYmIHRoaXMub25Nb2RlbENoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUdldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmVkaXRvckVsZW0hKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgIGRlbHRhLFxuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICAgIG9sZERlbHRhLFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub2ZmKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub2ZmKCd0ZXh0LWNoYW5nZScsIHRoaXMudGV4dENoYW5nZUhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5jb250YWluZXIuZmlyc3RDaGlsZC5pZCA9IGNoYW5nZXMuaWQuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgUXVpbGwuZm9ybWF0cyA9IHsgLi4uUXVpbGwuZm9ybWF0cywgW3RoaXMuaWRdOiB0aGlzLmZvcm1hdHMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sncmVhZE9ubHknXSkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5lbmFibGUoIWNoYW5nZXNbJ3JlYWRPbmx5J10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sncGxhY2Vob2xkZXInXSkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5yb290LmRhdGFzZXQucGxhY2Vob2xkZXIgPSBjaGFuZ2VzWydwbGFjZWhvbGRlciddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1snc3R5bGVzJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsaW5nID0gY2hhbmdlc1snc3R5bGVzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNTdHlsaW5nID0gY2hhbmdlc1snc3R5bGVzJ10ucHJldmlvdXNWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzU3R5bGluZykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHByZXZpb3VzU3R5bGluZykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxpbmcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3R5bGluZykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSwgdGhpcy5zdHlsZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2Zvcm1hdHMnXSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZvcm1hdHMgPSBjaGFuZ2VzWydmb3JtYXRzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgUXVpbGwuZm9ybWF0cyA9IHsgLi4uUXVpbGwuZm9ybWF0cywgW3RoaXMuaWRdOiBjdXJyZW50Rm9ybWF0cyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShjdXJyZW50VmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZvcm1hdCh0aGlzLmZvcm1hdCwgdGhpcy5jb25maWcuZm9ybWF0KTtcblxuICAgICAgICBpZiAodGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQoY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKHRoaXMudmFsdWVTZXR0ZXIodGhpcy5xdWlsbEVkaXRvciwgdGhpcy5jb250ZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0VGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLmRpc2FibGVkKTogdm9pZCB7XG4gICAgICAgIC8vIHN0b3JlIGluaXRpYWwgdmFsdWUgdG8gc2V0IGFwcHJvcHJpYXRlIGRpc2FibGVkIHN0YXR1cyBhZnRlciBWaWV3SW5pdFxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG1vZGVsVmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycjoge1xuICAgICAgICAgICAgbWluTGVuZ3RoRXJyb3I/OiB7XG4gICAgICAgICAgICAgICAgZ2l2ZW46IG51bWJlcjtcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBtYXhMZW5ndGhFcnJvcj86IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG1heExlbmd0aDogbnVtYmVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlcXVpcmVkRXJyb3I/OiB7IGVtcHR5OiBib29sZWFuIH07XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCB0ZXh0TGVuZ3RoID0gdGhpcy5xdWlsbEVkaXRvci5nZXRUZXh0KCkudHJpbSgpLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5taW5MZW5ndGggJiYgdGV4dExlbmd0aCAmJiB0ZXh0TGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgICAgICAgIGVyci5taW5MZW5ndGhFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogdGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB0ZXh0TGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIGVyci5tYXhMZW5ndGhFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogdGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0ZXh0TGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIucmVxdWlyZWRFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBlbXB0eTogdHJ1ZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IFF1aWxsIHNjcm9sbCBiZWhhdmlvciB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgZm9ybWF0cyBhcnJheSBhbmQgc2tpcCBub24tZm91bmQgb25lcy4gVGhlblxuICAgICAqIHJlZ2lzdGVycyB0aGUgcGx1Z2luIHRvIHRoZSBRdWlsbCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gUXVpbGxJbnN0YW5jZSBUaGUgUXVpbGwgY2xhc3MgKG5vdCB0aGUgaW5zdGFuY2UpXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG92ZXJyaWRlU2Nyb2xsQmVoYXZpb3IoUXVpbGxJbnN0YW5jZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIHRoZSBCdWlsdC1pbiBTY3JvbGwgQ2xhc3MgaXMgbm90IGV4cG9ydGVkLCBzbyB3ZSBuZWVkIHRvIGltcG9ydCBpdFxuICAgICAgICBjb25zdCBCdWlsdGluU2Nyb2xsID0gUXVpbGxJbnN0YW5jZS5pbXBvcnQoJ2Jsb3RzL3Njcm9sbCcpO1xuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgUXVpbGwgc2Nyb2xsIGJlaGF2aW9yIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBmb3JtYXRzIGFycmF5IGFuZCBza2lwIG5vbi1mb3VuZCBvbmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3MgU2Nyb2xsIGV4dGVuZHMgQnVpbHRpblNjcm9sbCB7XG4gICAgICAgICAgICBmb3JtYXRBdChpbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50SWQgPSB0aGlzLmRvbU5vZGUuaWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2VGb3JtYXRzID0gUXVpbGxJbnN0YW5jZS5mb3JtYXRzW2VsZW1lbnRJZF07XG4gICAgICAgICAgICAgICAgLy8gY2hlY2tzIHRoZSBmb3JtYXRzIGFycmF5IHRvIHNlZSBpZiB0aGUgZm9ybWF0IGlzIGJsYWNrbGlzdGVkXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlRm9ybWF0cyAmJiBpbnN0YW5jZUZvcm1hdHMuZmluZCgoZikgPT4gZiA9PT0gZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIHN1cGVyLmZvcm1hdEF0KGluZGV4LCBsZW5ndGgsIGZvcm1hdCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKiByZWdpc3RlciB0aGUgU2Nyb2xsIG92ZXJyaWRlICovXG4gICAgICAgIFF1aWxsSW5zdGFuY2UucmVnaXN0ZXIoJ2Jsb3RzL3Njcm9sbCcsIFNjcm9sbCwgdHJ1ZSk7XG4gICAgfVxufVxuIl19
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
1
|
+
import { booleanAttribute, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
3
2
|
import { consumeEvent } from '@eui/core';
|
4
3
|
import * as i0 from "@angular/core";
|
5
4
|
import * as i1 from "@angular/common";
|
@@ -14,13 +13,7 @@ export class EuiNotificationItemComponent {
|
|
14
13
|
this.markAsReadLabel = null;
|
15
14
|
this.dateFormat = 'dd/MM/YYYY';
|
16
15
|
this.tooltipSize = 'auto';
|
17
|
-
this.
|
18
|
-
}
|
19
|
-
get isShowMarkAsRead() {
|
20
|
-
return this._isShowMarkAsRead;
|
21
|
-
}
|
22
|
-
set isShowMarkAsRead(value) {
|
23
|
-
this._isShowMarkAsRead = coerceBooleanProperty(value);
|
16
|
+
this.isShowMarkAsRead = true;
|
24
17
|
}
|
25
18
|
onItemClick() {
|
26
19
|
this.itemClick.emit(this.item);
|
@@ -36,7 +29,7 @@ export class EuiNotificationItemComponent {
|
|
36
29
|
return this.item.metadata?.read ? 'neutral-lightest' : 'neutral-light';
|
37
30
|
}
|
38
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiNotificationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: EuiNotificationItemComponent, selector: "eui-notification-item", inputs: { markAsReadLabel: "markAsReadLabel", item: "item", dateFormat: "dateFormat", isShowMarkAsRead: ["isShowMarkAsRead", "isShowMarkAsRead", booleanAttribute] }, outputs: { itemClick: "itemClick", itemMarkAsRead: "itemMarkAsRead" }, host: { properties: { "class": "this.string" } }, ngImport: i0, template: "<div\n class=\"eui-notification-item-content\"\n (click)=\"onItemClick()\"\n [ngClass]=\"{ 'eui-u-c-bg-white': item.metadata?.read || !item.metadata }\">\n <div class=\"eui-notification-item-content-top eui-u-f-s\">\n <div *ngIf=\"item.metadata?.date\" class=\"eui-notification-item-content-top__date\">\n <span class=\"eui-notification-item-content-top__date-icon eui-u-mr-s\">\n <eui-icon-svg icon=\"notifications:sharp\" size=\"m\" [fillColor]=\"iconColor\"></eui-icon-svg>\n <span\n *ngIf=\"item.metadata?.new\"\n class=\"eui-notification-item-content-top__date-dot eui-u-c-danger-light eui-u-f-s eui-icon eui-icon-circle\"></span>\n </span>\n <span>{{ item.metadata?.date | date: dateFormat }}</span>\n </div>\n <div *ngIf=\"item.metadata?.important\" class=\"eui-u-f-m-bold\">\n <eui-icon-svg icon=\"alert:sharp\" fillColor=\"danger\" class=\"eui-u-ml-xs\"></eui-icon-svg>\n </div>\n </div>\n <span class=\"eui-notification-item-content-middle eui-u-cursor-pointer\">\n <ng-template [ngIf]=\"item.metadata?.url\">\n <a class=\"eui-u-text-link\" href=\"{{ item.metadata.url }}\">\n <div\n class=\"eui-notification-item-content-middle__label\"\n [ngClass]=\"{ 'eui-u-f-m-bold': !item.metadata || (item.metadata && !item.metadata.read) }\">\n {{ item.label | translate | euiTruncate: 200 }}\n </div>\n <div\n *ngIf=\"item.subLabel\"\n class=\"eui-notification-item-content-middle__sub-label\"\n [innerHTML]=\"item.subLabel | translate | euiTruncate: 200\"></div>\n </a>\n </ng-template>\n\n <ng-template [ngIf]=\"item.metadata?.urlExternal\">\n <a class=\"eui-u-text-link-external\"\n href=\"{{ item.metadata.urlExternal }}\"\n [target]=\"!item.metadata.urlExternalTarget ? '_blank' : item.metadata.urlExternalTarget\">\n <div\n class=\"eui-notification-item-content-middle__label\"\n [ngClass]=\"{ 'eui-u-f-m-bold': !item.metadata || (item.metadata && !item.metadata.read) }\">\n {{ item.label | translate | euiTruncate: 200 }}\n </div>\n <div\n *ngIf=\"item.subLabel\"\n class=\"eui-notification-item-content-middle__sub-label\"\n [innerHTML]=\"item.subLabel | translate | euiTruncate: 200\"></div>\n </a>\n </ng-template>\n\n <ng-template [ngIf]=\"!item.metadata?.url && !item.metadata?.urlExternal\">\n <div\n class=\"eui-notification-item-content-middle__label\"\n [ngClass]=\"{ 'eui-u-f-m-bold': !item.metadata || (item.metadata && !item.metadata.read) }\">\n {{ item.label | translate | euiTruncate: 200 }}\n </div>\n <div\n *ngIf=\"item.subLabel\"\n class=\"eui-notification-item-content-middle__sub-label\"\n [innerHTML]=\"item.subLabel | translate | euiTruncate: 200\"></div>\n </ng-template>\n </span>\n <div class=\"eui-notification-item-content-bottom\">\n <a *ngIf=\"isShowMarkAsRead && item.metadata && !item.metadata.read\"\n href=\"javascript:void(0)\"\n class=\"eui-u-text-link\"\n (click)=\"onItemMarkAsRead($event)\">\n {{ markAsReadLabel ? markAsReadLabel : ('eui.NOTIFICATIONMARKASREAD' | translate) }}\n </a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.EuiTruncatePipe, name: "euiTruncate" }] }); }
|
40
33
|
}
|
41
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiNotificationItemComponent, decorators: [{
|
42
35
|
type: Component,
|
@@ -55,6 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
55
48
|
}], dateFormat: [{
|
56
49
|
type: Input
|
57
50
|
}], isShowMarkAsRead: [{
|
58
|
-
type: Input
|
51
|
+
type: Input,
|
52
|
+
args: [{ transform: booleanAttribute }]
|
59
53
|
}] } });
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xheW91dC9ldWktbm90aWZpY2F0aW9ucy9ldWktbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1ub3RpZmljYXRpb25zL2V1aS1ub3RpZmljYXRpb24taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFNekMsTUFBTSxPQUFPLDRCQUE0QjtJQUp6QztRQUswQixXQUFNLEdBQUcsdUJBQXVCLENBQUM7UUFDN0MsY0FBUyxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN6RSxtQkFBYyxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUMvRSxvQkFBZSxHQUFXLElBQUksQ0FBQztRQUkvQixlQUFVLEdBQUcsWUFBWSxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBQ2tCLHFCQUFnQixHQUFHLElBQUksQ0FBQztLQWtCbEU7SUFoQkcsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWTtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFDM0UsQ0FBQzs4R0ExQlEsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsc0xBVWpCLGdCQUFnQixzSkNsQnhDLHlwSEFzRUE7OzJGRDlEYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0ksdUJBQXVCOzhCQUlYLE1BQU07c0JBQTNCLFdBQVc7dUJBQUMsT0FBTztnQkFDVixTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsZ0JBQWdCO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVeExpbmtMZWdhY3kgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgY29uc3VtZUV2ZW50IH0gZnJvbSAnQGV1aS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktbm90aWZpY2F0aW9uLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlOb3RpZmljYXRpb25JdGVtQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgc3RyaW5nID0gJ2V1aS1ub3RpZmljYXRpb24taXRlbSc7XG4gICAgQE91dHB1dCgpIGl0ZW1DbGljazogRXZlbnRFbWl0dGVyPFV4TGlua0xlZ2FjeT4gPSBuZXcgRXZlbnRFbWl0dGVyPFV4TGlua0xlZ2FjeT4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbU1hcmtBc1JlYWQ6IEV2ZW50RW1pdHRlcjxVeExpbmtMZWdhY3k+ID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbmtMZWdhY3k+KCk7XG4gICAgQElucHV0KCkgbWFya0FzUmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcbiAgICBASW5wdXQoKSBkYXRlRm9ybWF0ID0gJ2RkL01NL1lZWVknO1xuICAgIHRvb2x0aXBTaXplID0gJ2F1dG8nO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KWlzU2hvd01hcmtBc1JlYWQgPSB0cnVlO1xuXG4gICAgb25JdGVtQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQodGhpcy5pdGVtKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1NYXJrQXNSZWFkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pdGVtLm1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW0ubWV0YWRhdGEucmVhZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtTWFya0FzUmVhZC5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGljb25Db2xvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtLm1ldGFkYXRhPy5yZWFkID8gJ25ldXRyYWwtbGlnaHRlc3QnIDogJ25ldXRyYWwtbGlnaHQnO1xuICAgIH1cblxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnRcIlxuICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdldWktdS1jLWJnLXdoaXRlJzogaXRlbS5tZXRhZGF0YT8ucmVhZCB8fCAhaXRlbS5tZXRhZGF0YSB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1ub3RpZmljYXRpb24taXRlbS1jb250ZW50LXRvcCBldWktdS1mLXNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubWV0YWRhdGE/LmRhdGVcIiBjbGFzcz1cImV1aS1ub3RpZmljYXRpb24taXRlbS1jb250ZW50LXRvcF9fZGF0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktbm90aWZpY2F0aW9uLWl0ZW0tY29udGVudC10b3BfX2RhdGUtaWNvbiBldWktdS1tci1zXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwibm90aWZpY2F0aW9uczpzaGFycFwiIHNpemU9XCJtXCIgW2ZpbGxDb2xvcl09XCJpY29uQ29sb3JcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ubWV0YWRhdGE/Lm5ld1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnQtdG9wX19kYXRlLWRvdCBldWktdS1jLWRhbmdlci1saWdodCBldWktdS1mLXMgZXVpLWljb24gZXVpLWljb24tY2lyY2xlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZXRhZGF0YT8uZGF0ZSB8IGRhdGU6IGRhdGVGb3JtYXQgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5tZXRhZGF0YT8uaW1wb3J0YW50XCIgY2xhc3M9XCJldWktdS1mLW0tYm9sZFwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiYWxlcnQ6c2hhcnBcIiBmaWxsQ29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImV1aS11LW1sLXhzXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnQtbWlkZGxlIGV1aS11LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpdGVtLm1ldGFkYXRhPy51cmxcIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZXVpLXUtdGV4dC1saW5rXCIgaHJlZj1cInt7IGl0ZW0ubWV0YWRhdGEudXJsIH19XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1ub3RpZmljYXRpb24taXRlbS1jb250ZW50LW1pZGRsZV9fbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldWktdS1mLW0tYm9sZCc6ICFpdGVtLm1ldGFkYXRhIHx8IChpdGVtLm1ldGFkYXRhICYmICFpdGVtLm1ldGFkYXRhLnJlYWQpIH1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB8IGV1aVRydW5jYXRlOiAyMDAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zdWJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnQtbWlkZGxlX19zdWItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uc3ViTGFiZWwgfCB0cmFuc2xhdGUgfCBldWlUcnVuY2F0ZTogMjAwXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIml0ZW0ubWV0YWRhdGE/LnVybEV4dGVybmFsXCI+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImV1aS11LXRleHQtbGluay1leHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgaHJlZj1cInt7IGl0ZW0ubWV0YWRhdGEudXJsRXh0ZXJuYWwgfX1cIlxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiIWl0ZW0ubWV0YWRhdGEudXJsRXh0ZXJuYWxUYXJnZXQgPyAnX2JsYW5rJyA6IGl0ZW0ubWV0YWRhdGEudXJsRXh0ZXJuYWxUYXJnZXRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnQtbWlkZGxlX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2V1aS11LWYtbS1ib2xkJzogIWl0ZW0ubWV0YWRhdGEgfHwgKGl0ZW0ubWV0YWRhdGEgJiYgIWl0ZW0ubWV0YWRhdGEucmVhZCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIHwgZXVpVHJ1bmNhdGU6IDIwMCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN1YkxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbm90aWZpY2F0aW9uLWl0ZW0tY29udGVudC1taWRkbGVfX3N1Yi1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5zdWJMYWJlbCB8IHRyYW5zbGF0ZSB8IGV1aVRydW5jYXRlOiAyMDBcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWl0ZW0ubWV0YWRhdGE/LnVybCAmJiAhaXRlbS5tZXRhZGF0YT8udXJsRXh0ZXJuYWxcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1ub3RpZmljYXRpb24taXRlbS1jb250ZW50LW1pZGRsZV9fbGFiZWxcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2V1aS11LWYtbS1ib2xkJzogIWl0ZW0ubWV0YWRhdGEgfHwgKGl0ZW0ubWV0YWRhdGEgJiYgIWl0ZW0ubWV0YWRhdGEucmVhZCkgfVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfCBldWlUcnVuY2F0ZTogMjAwIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc3ViTGFiZWxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbi1pdGVtLWNvbnRlbnQtbWlkZGxlX19zdWItbGFiZWxcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5zdWJMYWJlbCB8IHRyYW5zbGF0ZSB8IGV1aVRydW5jYXRlOiAyMDBcIj48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1ub3RpZmljYXRpb24taXRlbS1jb250ZW50LWJvdHRvbVwiPlxuICAgICAgICA8YSAqbmdJZj1cImlzU2hvd01hcmtBc1JlYWQgJiYgaXRlbS5tZXRhZGF0YSAmJiAhaXRlbS5tZXRhZGF0YS5yZWFkXCJcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgY2xhc3M9XCJldWktdS10ZXh0LWxpbmtcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbU1hcmtBc1JlYWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgbWFya0FzUmVhZExhYmVsID8gbWFya0FzUmVhZExhYmVsIDogKCdldWkuTk9USUZJQ0FUSU9OTUFSS0FTUkVBRCcgfCB0cmFuc2xhdGUpIH19XG4gICAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|