@testgorilla/tgo-ui 2.17.5 → 2.17.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/autocomplete/autocomplete.component.d.ts +1 -1
- package/components/button/button.component.d.ts +1 -1
- package/components/checkbox/checkbox.component.d.ts +1 -1
- package/components/dialog/dialog.component.d.ts +1 -1
- package/components/divider/divider.component.d.ts +1 -1
- package/components/file-upload/file-upload.component.d.ts +1 -1
- package/components/progress-bar/progress-bar.component.d.ts +1 -1
- package/components/radial-progress/radial-progress.component.d.ts +1 -1
- package/components/radio-button/radio-button.component.d.ts +1 -1
- package/components/tabs/tab.directive.d.ts +2 -1
- package/components/tabs/tabs.component.d.ts +10 -2
- package/components/tabs/tabs.model.d.ts +1 -0
- package/esm2022/components/autocomplete/autocomplete.component.mjs +4 -2
- package/esm2022/components/button/button.component.mjs +1 -1
- package/esm2022/components/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/components/dialog/dialog.component.mjs +3 -3
- package/esm2022/components/divider/divider.component.mjs +1 -1
- package/esm2022/components/file-upload/file-upload.component.mjs +1 -1
- package/esm2022/components/navbar/navbar.component.mjs +3 -3
- package/esm2022/components/progress-bar/progress-bar.component.mjs +1 -1
- package/esm2022/components/radial-progress/radial-progress.component.mjs +1 -1
- package/esm2022/components/radio-button/radio-button.component.mjs +1 -1
- package/esm2022/components/tabs/tab.directive.mjs +7 -3
- package/esm2022/components/tabs/tabs.component.mjs +22 -4
- package/esm2022/components/tabs/tabs.model.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui.mjs +34 -10
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -139,7 +139,7 @@ export declare class AutocompleteComponent implements ControlValueAccessor, OnCh
|
|
|
139
139
|
* @type {string}
|
|
140
140
|
* @memberof AutocompleteComponent
|
|
141
141
|
*/
|
|
142
|
-
companyColor: string;
|
|
142
|
+
companyColor: string | null;
|
|
143
143
|
/**
|
|
144
144
|
* Hide in-build errors for Reactive Forms
|
|
145
145
|
*
|
|
@@ -114,7 +114,7 @@ export declare class ButtonComponent implements OnInit, AfterViewInit {
|
|
|
114
114
|
* @type {string}
|
|
115
115
|
* @memberof ButtonComponent
|
|
116
116
|
*/
|
|
117
|
-
companyColor: string;
|
|
117
|
+
companyColor: string | null;
|
|
118
118
|
/**
|
|
119
119
|
* Config for the button badge variation
|
|
120
120
|
* @type {ButtonBadgeConfig}
|
|
@@ -39,7 +39,7 @@ export declare class CheckboxComponent implements OnInit, ControlValueAccessor,
|
|
|
39
39
|
* @type {string}
|
|
40
40
|
* @memberof CheckboxComponent
|
|
41
41
|
*/
|
|
42
|
-
companyColor: string;
|
|
42
|
+
companyColor: string | null;
|
|
43
43
|
/**
|
|
44
44
|
* Name value will be applied to the input element if present.
|
|
45
45
|
*
|
|
@@ -5,6 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class TabDirective implements OnChanges {
|
|
6
6
|
private tabsComponent;
|
|
7
7
|
private template;
|
|
8
|
+
tabLabel: string;
|
|
8
9
|
tabName: string;
|
|
9
10
|
iconLeft: IconName;
|
|
10
11
|
iconRight: IconName;
|
|
@@ -13,6 +14,6 @@ export declare class TabDirective implements OnChanges {
|
|
|
13
14
|
ngOnChanges(): void;
|
|
14
15
|
private addTab;
|
|
15
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<TabDirective, [{ host: true; }, null]>;
|
|
16
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<TabDirective, "[uiTab]", never, { "tabName": { "alias": "tabName"; "required": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; }; "iconRight": { "alias": "iconRight"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
|
|
17
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TabDirective, "[uiTab]", never, { "tabLabel": { "alias": "tabLabel"; "required": true; }; "tabName": { "alias": "tabName"; "required": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; }; "iconRight": { "alias": "iconRight"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
|
|
17
18
|
static ngAcceptInputType_disabled: unknown;
|
|
18
19
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
1
2
|
import { Tab, TabsType } from "./tabs.model";
|
|
2
3
|
import { ApplicationTheme } from "../../models/application-theme.model";
|
|
3
4
|
import { Observable } from 'rxjs';
|
|
5
|
+
import { MatTabChangeEvent } from "@angular/material/tabs";
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
7
|
export declare class TabsComponent {
|
|
6
8
|
private readonly defaultAppTheme;
|
|
@@ -12,7 +14,7 @@ export declare class TabsComponent {
|
|
|
12
14
|
* @type {string}
|
|
13
15
|
* @memberof TabsComponent
|
|
14
16
|
*/
|
|
15
|
-
companyColor: string;
|
|
17
|
+
companyColor: string | null;
|
|
16
18
|
/**
|
|
17
19
|
* Type the Tabs.
|
|
18
20
|
* Defaults underlined.
|
|
@@ -49,11 +51,17 @@ export declare class TabsComponent {
|
|
|
49
51
|
* @memberof TabsComponent
|
|
50
52
|
*/
|
|
51
53
|
applicationTheme: ApplicationTheme;
|
|
54
|
+
selectedTabIndex: EventEmitter<number>;
|
|
55
|
+
selectedTab: EventEmitter<Tab>;
|
|
52
56
|
protected tabs: Tab[];
|
|
57
|
+
readonly tabIndex: import("@angular/core").WritableSignal<number>;
|
|
58
|
+
protected tabIndexMap: Record<string, number>;
|
|
53
59
|
constructor(defaultAppTheme: ApplicationTheme, isMobile$: Observable<boolean>);
|
|
54
60
|
addTab(tab: Tab): void;
|
|
61
|
+
onTabChange(ev: MatTabChangeEvent): void;
|
|
62
|
+
trackByTabName(index: number, tab: Tab): string;
|
|
55
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, [{ optional: true; }, null]>;
|
|
56
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "ui-tabs", never, { "companyColor": { "alias": "companyColor"; "required": false; }; "type": { "alias": "type"; "required": false; }; "animationDuration": { "alias": "animationDuration"; "required": false; }; "headerContentPadding": { "alias": "headerContentPadding"; "required": false; }; "dynamicHeight": { "alias": "dynamicHeight"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, {}, never, never, false, never>;
|
|
64
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "ui-tabs", never, { "companyColor": { "alias": "companyColor"; "required": false; }; "type": { "alias": "type"; "required": false; }; "animationDuration": { "alias": "animationDuration"; "required": false; }; "headerContentPadding": { "alias": "headerContentPadding"; "required": false; }; "dynamicHeight": { "alias": "dynamicHeight"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, { "selectedTabIndex": "selectedTabIndex"; "selectedTab": "selectedTab"; }, never, never, false, never>;
|
|
57
65
|
static ngAcceptInputType_headerContentPadding: number;
|
|
58
66
|
static ngAcceptInputType_dynamicHeight: unknown;
|
|
59
67
|
}
|
|
@@ -201,7 +201,9 @@ export class AutocompleteComponent {
|
|
|
201
201
|
this.filteredItemsList$ = this.inputValueSearch$.pipe(startWith(''), map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField) : null));
|
|
202
202
|
this.filteredSuggestionList$ = this.inputValueSearch$.pipe(map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null));
|
|
203
203
|
this.scrollEvent = (event) => {
|
|
204
|
-
const isNotAutocompleteScroll = !event.target
|
|
204
|
+
const isNotAutocompleteScroll = !event.target?.id?.includes('mat-autocomplete-') &&
|
|
205
|
+
!event.target?.parentElement?.id?.includes('mat-autocomplete-') &&
|
|
206
|
+
!event.target?.classList?.contains('mat-mdc-autocomplete-trigger');
|
|
205
207
|
if (this.autocomplete.panelOpen && isNotAutocompleteScroll) {
|
|
206
208
|
this.autocomplete.closePanel();
|
|
207
209
|
}
|
|
@@ -611,4 +613,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
611
613
|
type: ViewChild,
|
|
612
614
|
args: ['autocomplete']
|
|
613
615
|
}] } });
|
|
614
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFJVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixZQUFZLEVBRVosaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxPQUFPLEVBQ1IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNsRSxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLHFCQUFxQjtJQWtEaEM7Ozs7T0FJRztJQUNILElBQWEsU0FBUyxDQUFDLENBQU07UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxPQUFP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IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcywgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBtYXAsIFJlcGxheVN1YmplY3QsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9hdXRvY29tcGxldGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgQU1PVU5UX1RBR19XSURUSCxcbiAgQXV0b2NvbXBsZXRlLFxuICBBdXRvY29tcGxldGVUeXBlLFxuICBEcm9wZG93blZhcmlhdGlvbixcbiAgUGFkZGluZyxcbiAgVGltZW91dFxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgaXRlbXNMaXN0XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHN1Z2dlc3Rpb25zTGlzdFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzdWdnZXN0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBkaXNhYmxlZFxuICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgYXV0b2NvbXBsZXRlIGlzIGRpc2FibGVkLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgYWxsb3dBZGRcbiAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgYWxsb3dzIGFkZGluZyBuZXcgdmFsdWVzIHRvIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QWRkID0gdHJ1ZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHRleHRGaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXh0RmllbGQgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHZhbHVlRmllbGRcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBsYWJlbFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxhYmVsIGZvciB0aGUgYXV0b2NvbXBsZXRlIGlucHV0LlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWxlY3RlZCB2YWx1ZShzKSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHYpID8gdiA6IHYgPyBbdl0gOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdHlwZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIGF1dG9jb21wbGV0ZSAoJ3NpbmdsZScsICdtdWx0aScsIGV0Yy4pLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBBdXRvY29tcGxldGVUeXBlID0gJ211bHRpJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IG1pbkNoYXJhY3RlcnNTZWFyY2hcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBtaW5pbXVtIGNoYXJhY3RlcnMgdG8gdHJpZ2dlciBzZWFyY2guXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnNTZWFyY2ggPSAzO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFyaWFudFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhcmlhbnQgb2YgQXV0b2NvbXBsZXRlXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhcmlhbnQgPSBEcm9wZG93blZhcmlhdGlvbi5BVVRPQ09NUExFVEU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSB0byBiZSB1c2VkXG4gICAqIEBwcm9wZXJ0eSBsYW5ndWFnZVxuICAgKiBAdHlwZSB7TGFuZ3VhZ2V9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhbmd1YWdlID0gTGFuZ3VhZ2VTZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZTtcblxuICAvKipcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcbiAgICogQHByb3BlcnR5IHNob3dCb3R0b21Db250ZW50XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJldHVybiBmdWxsIG9iamVjdCBpZiB0cnVlXG4gICAqIEBwcm9wZXJ0eSB2YWx1ZVByaW1pdGl2ZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVQcmltaXRpdmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcbiAgICogQHByb3BlcnR5IGZ1bGxXaWR0aFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXdpZHRoJylcbiAgQElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogQXV0b2NvbXBsZXRlIGlzIHJlcXVpcmVkIG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGZpZWxkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2FmZUVycm9ycyA9IGVycm9ycz8uZmlsdGVyKEJvb2xlYW4pLm1hcChlcnJvciA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBvcHRpb24gaG92ZXIuXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb21wYW55Q29sb3IgPSAnI0ZGRjJGQyc7XG5cbiAgLyoqXG4gICAqIEhpZGUgaW4tYnVpbGQgZXJyb3JzIGZvciBSZWFjdGl2ZSBGb3Jtc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlQnVpbHRJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlTGFiZWxJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIGRyb3Bkb3duIGxpc3QgdG8gdmlydHVhbCBzY3JvbGwgbW9kZVxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGNvbXBhcmVXaXRoXG4gICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gY29tcGFyaXNvbiBsb2dpYyBmb3IgdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY29tcGFyZVdpdGg6IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGRyb3Bkb3duUGFuZWxDbGFzc1xuICAgKiBAZGVzY3JpcHRpb24gU2V0cyBjbGFzcyBvbiBhdXRvY29tcGxldGUgZHJvcGRvd25cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZHJvcGRvd25QYW5lbENsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBjbG9zZU9uU2Nyb2xsXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGlmIGRyb3Bkb3duIHNob3VsZCBiZSBjbG9zZWQgb24gcGFnZSBzY3JvbGxcbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGFnQ29udGFpbmVyJykgdGFnQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgbWF0QXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGU7XG4gIHByb3RlY3RlZCBzYWZlRXJyb3JzOiBTYWZlSHRtbFtdID0gW107XG4gIHByb3RlY3RlZCB2YWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgaW5wdXRWYWx1ZTogYW55ID0gJyc7XG4gIHByb3RlY3RlZCBpc0lucHV0Rm9jdXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGF1dG9jb21wbGV0ZVR5cGUgPSBBdXRvY29tcGxldGU7XG4gIHByb3RlY3RlZCBpc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc092ZXJsYXBDaGVja2luZyA9IHRydWU7XG4gIHByb3RlY3RlZCBvdmVybGFwSW5kZXggPSAwO1xuICBwcm90ZWN0ZWQgaW5wdXRPcGFjaXR5ID0gMTtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWVTZWFyY2gkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIHVzZXJJbnB1dCQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRJdGVtc0xpc3QkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5pdGVtc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBtYXAoaW5wdXRWYWx1ZSA9PlxuICAgICAgaW5wdXRWYWx1ZS5sZW5ndGggPyBBdXRvY29tcGxldGVVdGlscy5maWx0ZXJJdGVtcyh0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgaW5wdXRWYWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogbnVsbFxuICAgIClcbiAgKTtcblxuICBzY3JvbGxFdmVudCA9IChldmVudDogYW55KTogdm9pZCA9PiB7XG4gICAgY29uc3QgaXNOb3RBdXRvY29tcGxldGVTY3JvbGwgPSAhZXZlbnQudGFyZ2V0LmlkPy5pbmNsdWRlcygnbWF0LWF1dG9jb21wbGV0ZS0nKSAmJiAhZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQ/LmlkPy5pbmNsdWRlcygnbWF0LWF1dG9jb21wbGV0ZS0nKSAmJiAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdD8uY29udGFpbnMoJ21hdC1tZGMtYXV0b2NvbXBsZXRlLXRyaWdnZXInKTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZS5wYW5lbE9wZW4gJiYgaXNOb3RBdXRvY29tcGxldGVTY3JvbGwpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJvdGVjdGVkIHNlYXJjaFJlc3VsdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUobWFwKGlucHV0VmFsdWUgPT4gISFpbnB1dFZhbHVlLnRyaW0oKSkpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0FVVE9DT01QTEVURS4nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQXV0b2NvbXBsZXRlVXRpbHMgPSBBdXRvY29tcGxldGVVdGlscztcbiAgcHJpdmF0ZSByZWFkb25seSBpc1BsYXRmb3JtID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVyRGlzcGxheUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWFyayBjb21wb25lbnQgdmlldyBhcyBkaXJ0eSB3aGVuIHRvdWNoZWQgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG1hcmtBc1RvdWNoZWQvbWFya0FsbEFzVG91Y2hlZCBvciBlcnJvcnNcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gQXV0b2NvbXBsZXRlVXRpbHMuZXhjbHVkZVN1Z2dlc3Rpb25zKHRoaXMuaXRlbXNMaXN0LCB0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMuaXNQbGF0Zm9ybSAmJiBjaGFuZ2VzWydjb21wYW55Q29sb3InXSkge1xuICAgICAgdGhpcy5zZXRDb21wYW55Q29sb3JWYXJpYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSBBdXRvY29tcGxldGUuTEFSR0UpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKFRpbWVvdXQuVklFV19JTklUSUFMSVpFRF9DT01QT05FTlRfTE9BRCwgdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuaXNQbGF0Zm9ybSAmJiB0aGlzLnNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNjcm9sbCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRXZlbnQsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEV2ZW50LCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcbiAgb25Ub3VjaCA9ICgpID0+IHtcbiAgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlUHJpbWl0aXZlICYmIHRoaXMudGV4dEZpZWxkICYmIHRoaXMudmFsdWVGaWVsZCkge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQXV0b2NvbXBsZXRlLlNJTkdMRSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pdGVtc0xpc3QuZmluZChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFt0aGlzLml0ZW1zTGlzdC5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09PSB2YWx1ZSldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuaW5pdFZhbHVlKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuY3JlYXRlVmFsdWVJdGVtKGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgIHRoaXMuYWRkTmV3VmFsdWUoaXRlbVZhbHVlKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uT3B0aW9uUmVtb3ZlZChvcHRpb246IGFueSk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvY29tcGxldGUuY2xvc2VQYW5lbCgpLCAwKTtcbiAgICBjb25zdCBmb3VuZFZhbHVlID0gdGhpcy52YWx1ZS5maW5kKCh2OiBhbnkpID0+IHRoaXMuY29tcGFyZVdpdGggPyB0aGlzLmNvbXBhcmVXaXRoKHYsIG9wdGlvbikgOiB2ID09PSBvcHRpb24pO1xuXG4gICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB0aGlzLmNvbXBhcmVXaXRoID8gIXRoaXMuY29tcGFyZVdpdGgodiwgb3B0aW9uKSA6IHYgIT09IG9wdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KGlucHV0VmFsdWUpO1xuICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJhY3RlcnNTZWFyY2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dChpbnB1dFZhbHVlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZS5lbWl0KGlucHV0VmFsdWUpO1xuICAgICAgY29uc3QgZmluZFZhbHVlID0gWy4uLnRoaXMuc3VnZ2VzdGlvbnNMaXN0LCAuLi50aGlzLml0ZW1zTGlzdF0uZmluZCh2ID0+IGlucHV0VmFsdWUgPT09ICh0aGlzLnRleHRGaWVsZCA/IHZbdGhpcy50ZXh0RmllbGRdIDogdikpO1xuICAgICAgaWYgKGZpbmRWYWx1ZSkge1xuICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoeyBvcHRpb246IHsgdmFsdWU6IGZpbmRWYWx1ZSB9IH0gYXMgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgICB0aGlzLnVzZXJJbnB1dCQubmV4dCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSkgPyBbXSA6ICcnO1xuICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gMDtcbiAgICB0aGlzLm9uVXBkYXRlKCk7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGU/Lm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4gb3B0aW9uLmRlc2VsZWN0KCkpO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZmlsbElucHV0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmICF0aGlzLmlucHV0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW5wdXRWYWx1ZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyAnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0VmFsdWUgJiYgdGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFICYmIHRoaXMudmFsdWUgJiYgT2JqZWN0LmtleXModGhpcy52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSgoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLnZhbHVlKVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlWzBdXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUpLFxuICAgICAgICAgIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMudXNlcklucHV0JC5uZXh0KCcnKTtcbiAgICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnb3RvVXAoKSB7XG4gICAgaWYgKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSB7XG4gICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG5cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLmlucHV0VmFsdWUpID8gdGhpcy5pbnB1dFZhbHVlWzBdIDogdGhpcy5pbnB1dFZhbHVlO1xuXG4gICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKGlucHV0VmFsdWUpKSB7XG4gICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdudW1iZXInICYmIGlucHV0VmFsdWU/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS50cmltU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdPy5tYXRjaCgvXlxccysvZ20pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVybGFwKGRlbGF5ID0gVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0FGVEVSX0FDVElPTiwgaW5pdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5pc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IHRydWU7XG4gICAgdGhpcy5pbnB1dE9wYWNpdHkgPSAwO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5pbnB1dFdpZHRoO1xuICAgICAgY29uc3QgdGFncyA9IHRoaXMudGFnQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52YWx1ZS10YWcnKTtcbiAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgIGxldCB3aWR0aCA9IDA7XG4gICAgICAgIGxldCBmaXJzdFRhZ1dpZHRoID0gMDtcblxuICAgICAgICB0YWdzLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgd2lkdGggKz0gdGFnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgICAgaWYgKCFpbmRleCkge1xuICAgICAgICAgICAgZmlyc3RUYWdXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5pc092ZXJMYXBwaW5nICYmIHdpZHRoID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5pc092ZXJMYXBwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKChmaXJzdFRhZ1dpZHRoICsgQU1PVU5UX1RBR19XSURUSCkgPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXBJbmRleCA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlWzBdLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlucHV0T3BhY2l0eSA9IDE7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KCcnKTtcbiAgICBpZiAoIXRoaXMudmFsdWVQcmltaXRpdmUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IEF1dG9jb21wbGV0ZS5TSU5HTEUpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlLm1hcCgodjogYW55KSA9PiB2W3RoaXMudmFsdWVGaWVsZF0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUgJiYgdGhpcy52YXJpYW50ICE9PSBEcm9wZG93blZhcmlhdGlvbi5EUk9QRE9XTikge1xuICAgICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWVbMF0sIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUgPyBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhcmlhbnQgPT09IERyb3Bkb3duVmFyaWF0aW9uLkRST1BET1dOKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAhdGhpcy52YWx1ZVxuICAgICAgICA/ICcnXG4gICAgICAgIDogdGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFXG4gICAgICAgICAgPyBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUoKEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSlcbiAgICAgICAgICAgICAgPyB0aGlzLnZhbHVlWzBdXG4gICAgICAgICAgICAgIDogdGhpcy52YWx1ZSksXG4gICAgICAgICAgICB0aGlzLnRleHRGaWVsZClcbiAgICAgICAgICA6ICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuTVVMVEkpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGROZXdWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiAhdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kRHVwbGljYXRlID0gdGhpcy5jb21wYXJlV2l0aFxuICAgICAgPyB0aGlzLnZhbHVlLmZpbmQoKHY6IGFueSkgPT4gdGhpcy5jb21wYXJlV2l0aCh2LCBuZXdWYWx1ZSkpXG4gICAgICA6IEF1dG9jb21wbGV0ZVV0aWxzLmZpbmREdXBsaWNhdGUodGhpcy52YWx1ZSwgbmV3VmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmb3VuZER1cGxpY2F0ZSA/XG4gICAgICAgICh0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB0aGlzLmNvbXBhcmVXaXRoXG4gICAgICAgICAgPyAhdGhpcy5jb21wYXJlV2l0aCh2LCBmb3VuZER1cGxpY2F0ZSlcbiAgICAgICAgICA6IHYgIT09IGZvdW5kRHVwbGljYXRlKSlcbiAgICAgICAgOiBbLi4udGhpcy52YWx1ZSwgbmV3VmFsdWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpc0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09IERyb3Bkb3duVmFyaWF0aW9uLkRST1BET1dOO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hldnJvbkNsaWNrKGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlKTogdm9pZCB7XG4gICAgaWYgKGF1dG9jb21wbGV0ZS5pc09wZW4pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZVBhbmVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlucHV0V2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5mb3JtRmllbGRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC1cbiAgICAgICh0aGlzLmlzRHJvcGRvd24gPyBQYWRkaW5nLkRST1BET1dOX0NPTlRBSU5FUiA6IFBhZGRpbmcuQVVUT0NPTVBMRVRFX0NPTlRBSU5FUilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xuXG4gIC8qKlxuICAgKiBBZGRpbmcgY29tcGFueSBjb2xvciB2YXJpYWJsZSB0byB0aGUgYm9keSB0byBzdHlsZSBvdmVybGF5IGNvbnRhaW5lciB0aGF0J3Mgb3V0IG9mIHRoZSBjb21wb25lbnQgc2NvcGUuXG4gICAqL1xuICBwcml2YXRlIHNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIyLnNldFByb3BlcnR5KGRvY3VtZW50LmJvZHksICdzdHlsZScsIGAtLXVpLWF1dG9jb21wbGV0ZS1vcHRpb24tY29sb3I6ICR7dGhpcy5jb21wYW55Q29sb3J9O2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVyRGlzcGxheUNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhdXRvY29tcGxldGVIb3N0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5U3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGF1dG9jb21wbGV0ZUhvc3RFbGVtZW50KS5kaXNwbGF5O1xuICAgICAgICAgIGlmIChkaXNwbGF5U3R5bGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGF1dG9jb21wbGV0ZUhvc3RFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3N0eWxlJ10sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGgsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbY29sb3JdPVwiKHNhZmVFcnJvcnMubGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQgKSkgPyAnd2FybicgOiAnYWNjZW50J1wiXG4gICAgICBbYXBwZWFyYW5jZV09XCInb3V0bGluZSdcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnbGFyZ2Utc2l6ZSc6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UsICdoaWRlLWJvdHRvbS1jb250ZW50JzogIXNob3dCb3R0b21Db250ZW50IH1cIlxuICAgID5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiAjZm9ybUZpZWxkIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgICAjdGFnQ29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFICYmIHRoaXMudmFsdWUpIHx8XG4gICAgICAgICAgICAoIShpbnB1dFZhbHVlICYmIHRoaXMuaXNJbnB1dEZvY3VzKSAmJiB0aGlzLnZhbHVlICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktdGFnXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlLXRhZ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ3VpLXRhZy0nICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVJdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZUl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGRcIlxuICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSA/IGlucHV0T3BhY2l0eSA6IDFcIlxuICAgICAgICAgICAgW2FsbG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlckxhcHBpbmcgJiYgaSA+PSBvdmVybGFwSW5kZXggPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ292ZXJsYXAtdGFnJzogaXNPdmVybGFwQ2hlY2tpbmcgJiYgb3ZlcmxhcEluZGV4ICYmIGkgPj0gb3ZlcmxhcEluZGV4ICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTVVMVElcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsb3NlKT1cIm9uT3B0aW9uUmVtb3ZlZCh2YWx1ZUl0ZW0pXCJcbiAgICAgICAgICA+PC91aS10YWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3ZlckxhcHBpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb3ZlcmxhcEluZGV4OyBlbHNlIG92ZXJsYXBUYWdcIiBjbGFzcz1cIm92ZXJsYXAtY291bnRcIj5cbiAgICAgICAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRF9BTU9VTlQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgOiB7IG51bWJlclNlbGVjdGVkOiAodmFsdWUgfCBzbGljZTogb3ZlcmxhcEluZGV4KS5sZW5ndGggfSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI292ZXJsYXBUYWc+XG4gICAgICAgICAgICAgIDx1aS10YWcgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtyZWFkT25seV09XCJ0cnVlXCIgW2xhYmVsXT1cIicrJyArICh2YWx1ZSB8IHNsaWNlOiBvdmVybGFwSW5kZXgpLmxlbmd0aFwiPjwvdWktdGFnPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1bnNldC1tYXJnaW4nOiB0aGlzLnZhbHVlICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICAgKGJsdXIpPVwicmVmaWxsSW5wdXQoKVwiXG4gICAgICAgICAgKGZvY3VzaW4pPVwib25Gb2N1cygpXCJcbiAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLk1VTFRJID8gaW5wdXRPcGFjaXR5IDogMVwiXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx1aS1pY29uXG4gICAgICAgICpuZ0lmPVwidmFsdWUgJiYgKChBdXRvY29tcGxldGVVdGlscy5pc1ByaW1pdGl2ZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoKSB8fCAoIUF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKHZhbHVlKSAmJiAoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoIHx8ICFBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKSkpXCJcbiAgICAgICAgY2xhc3M9XCJyZW1vdmUtc2VsZWN0ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1pbnB1dC1pY29uJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKTskZXZlbnQucHJldmVudERlZmF1bHQoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgW2NvbG9yXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdpbmhlcml0JyA6ICdyZWJyYW5kLWJsYWNrJ1wiXG4gICAgICAgIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDbG9zZScgOiAnQ2xvc2UtaW4tbGluZSdcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPHVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhcnJvdy1zdGF0ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBhdXRvY29tcGxldGUuaXNPcGVuLCAnbGFyZ2UtaW5wdXQtaWNvbic6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICpuZ0lmPVwiaXNEcm9wZG93blwiXG4gICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyAnQXJyb3ctY2hldnJvbi1kb3duLWluLWxpbmUnIDogJ0Fycm93X2Rvd24nXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2hldnJvbkNsaWNrKGF1dG9jb21wbGV0ZSlcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG9jb21wbGV0ZVxuICAgICAgICBbY2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZSArICcgJyArIGRyb3Bkb3duUGFuZWxDbGFzc1wiXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJmYWxzZVwiXG4gICAgICAgIChvcGVuZWQpPVwiZ290b1VwKClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShzZWFyY2hSZXN1bHQkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Ryb3Bkb3duOyBlbHNlIGRyb3Bkb3duTGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfCB1cHBlcmNhc2VcIiAqbmdJZj1cInN1Z2dlc3Rpb25zTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT0kZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IHN1Z2dlc3RlZCB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3RlZCBvZiBzdWdnZXN0aW9uc0xpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWdnZXN0ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgc3VnZ2VzdGVkIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1vcHRncm91cD5cblxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwidmFsdWU/Lmxlbmd0aCAmJiB0eXBlICE9PSBhdXRvY29tcGxldGVUeXBlLlNJTkdMRVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWVcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJ2YWx1ZT8ubGVuZ3RoICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3NlbGVjdGVkLW9wdGlvbidcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyB2YWx1ZSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duTGlzdD5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsOyBlbHNlIGRlZmF1bHRWaWV3UG9ydFwiIFtpdGVtU2l6ZV09XCI0OFwiIFtzdHlsZS5oZWlnaHRdPVwiJzIwMHB4J1wiIGNsYXNzPVwidmlydHVhbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT0kZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgOiB2YWx1ZUZpZWxkIH1cIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Vmlld1BvcnQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRJdGVtc0xpc3RcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnU1VHR0VTVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGg7IGVsc2Ugc2hvd0l0ZW1MaXN0V2l0aEdyb3VwXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW1MaXN0V2l0aEdyb3VwPlxuICAgICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0FMTF9JVEVNUycpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkSXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoICYmICFmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aCAmJiBpbnB1dFZhbHVlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0FkZCAmJiAhaXNEcm9wZG93bjsgZWxzZSBub3RGb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAoJ0NPTU1PTi5BREQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZC1zdWdnZXN0aW9uXCI+XCJ7eyBpbnB1dFZhbHVlIH19XCI8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdEZvdW5kPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCInbm9uZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnTk9fUkVTVUxUU19GT1VORCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwic2FmZUVycm9ycy5sZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2FmZUVycm9ycy5sZW5ndGhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIHNhZmVFcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cIidFcnJvcidcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHVpLXZhbGlkYXRpb24tZXJyb3IgKm5nSWY9XCJuZ0NvbnRyb2wgJiYgIWhpZGVCdWlsdEluRXJyb3JzXCIgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIiBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogbGFiZWxcIiBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2VcIj48L3VpLXZhbGlkYXRpb24tZXJyb3I+XG5cbiAgICAgIDwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
616
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFJVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixZQUFZLEVBRVosaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxPQUFPLEVBQ1IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNsRSxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLHFCQUFxQjtJQWtEaEM7Ozs7T0FJRztJQUNILElBQWEsU0FBUyxDQUFDLENBQU07UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxPQUFP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aW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcywgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBtYXAsIFJlcGxheVN1YmplY3QsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9hdXRvY29tcGxldGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgQU1PVU5UX1RBR19XSURUSCxcbiAgQXV0b2NvbXBsZXRlLFxuICBBdXRvY29tcGxldGVUeXBlLFxuICBEcm9wZG93blZhcmlhdGlvbixcbiAgUGFkZGluZyxcbiAgVGltZW91dFxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgaXRlbXNMaXN0XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHN1Z2dlc3Rpb25zTGlzdFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzdWdnZXN0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBkaXNhYmxlZFxuICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgYXV0b2NvbXBsZXRlIGlzIGRpc2FibGVkLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgYWxsb3dBZGRcbiAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgYWxsb3dzIGFkZGluZyBuZXcgdmFsdWVzIHRvIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QWRkID0gdHJ1ZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHRleHRGaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXh0RmllbGQgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHZhbHVlRmllbGRcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBsYWJlbFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxhYmVsIGZvciB0aGUgYXV0b2NvbXBsZXRlIGlucHV0LlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWxlY3RlZCB2YWx1ZShzKSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHYpID8gdiA6IHYgPyBbdl0gOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdHlwZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIGF1dG9jb21wbGV0ZSAoJ3NpbmdsZScsICdtdWx0aScsIGV0Yy4pLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBBdXRvY29tcGxldGVUeXBlID0gJ211bHRpJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IG1pbkNoYXJhY3RlcnNTZWFyY2hcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBtaW5pbXVtIGNoYXJhY3RlcnMgdG8gdHJpZ2dlciBzZWFyY2guXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnNTZWFyY2ggPSAzO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFyaWFudFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhcmlhbnQgb2YgQXV0b2NvbXBsZXRlXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhcmlhbnQgPSBEcm9wZG93blZhcmlhdGlvbi5BVVRPQ09NUExFVEU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSB0byBiZSB1c2VkXG4gICAqIEBwcm9wZXJ0eSBsYW5ndWFnZVxuICAgKiBAdHlwZSB7TGFuZ3VhZ2V9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhbmd1YWdlID0gTGFuZ3VhZ2VTZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZTtcblxuICAvKipcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcbiAgICogQHByb3BlcnR5IHNob3dCb3R0b21Db250ZW50XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJldHVybiBmdWxsIG9iamVjdCBpZiB0cnVlXG4gICAqIEBwcm9wZXJ0eSB2YWx1ZVByaW1pdGl2ZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVQcmltaXRpdmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcbiAgICogQHByb3BlcnR5IGZ1bGxXaWR0aFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXdpZHRoJylcbiAgQElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogQXV0b2NvbXBsZXRlIGlzIHJlcXVpcmVkIG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGZpZWxkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2FmZUVycm9ycyA9IGVycm9ycz8uZmlsdGVyKEJvb2xlYW4pLm1hcChlcnJvciA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBvcHRpb24gaG92ZXIuXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb21wYW55Q29sb3I6IHN0cmluZyB8IG51bGwgPSAnI0ZGRjJGQyc7XG5cbiAgLyoqXG4gICAqIEhpZGUgaW4tYnVpbGQgZXJyb3JzIGZvciBSZWFjdGl2ZSBGb3Jtc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlQnVpbHRJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlTGFiZWxJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIGRyb3Bkb3duIGxpc3QgdG8gdmlydHVhbCBzY3JvbGwgbW9kZVxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGNvbXBhcmVXaXRoXG4gICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gY29tcGFyaXNvbiBsb2dpYyBmb3IgdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY29tcGFyZVdpdGg6IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGRyb3Bkb3duUGFuZWxDbGFzc1xuICAgKiBAZGVzY3JpcHRpb24gU2V0cyBjbGFzcyBvbiBhdXRvY29tcGxldGUgZHJvcGRvd25cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZHJvcGRvd25QYW5lbENsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBjbG9zZU9uU2Nyb2xsXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGlmIGRyb3Bkb3duIHNob3VsZCBiZSBjbG9zZWQgb24gcGFnZSBzY3JvbGxcbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGFnQ29udGFpbmVyJykgdGFnQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgbWF0QXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGU7XG4gIHByb3RlY3RlZCBzYWZlRXJyb3JzOiBTYWZlSHRtbFtdID0gW107XG4gIHByb3RlY3RlZCB2YWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgaW5wdXRWYWx1ZTogYW55ID0gJyc7XG4gIHByb3RlY3RlZCBpc0lucHV0Rm9jdXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGF1dG9jb21wbGV0ZVR5cGUgPSBBdXRvY29tcGxldGU7XG4gIHByb3RlY3RlZCBpc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc092ZXJsYXBDaGVja2luZyA9IHRydWU7XG4gIHByb3RlY3RlZCBvdmVybGFwSW5kZXggPSAwO1xuICBwcm90ZWN0ZWQgaW5wdXRPcGFjaXR5ID0gMTtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWVTZWFyY2gkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIHVzZXJJbnB1dCQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRJdGVtc0xpc3QkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5pdGVtc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBtYXAoaW5wdXRWYWx1ZSA9PlxuICAgICAgaW5wdXRWYWx1ZS5sZW5ndGggPyBBdXRvY29tcGxldGVVdGlscy5maWx0ZXJJdGVtcyh0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgaW5wdXRWYWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogbnVsbFxuICAgIClcbiAgKTtcblxuICBzY3JvbGxFdmVudCA9IChldmVudDogYW55KTogdm9pZCA9PiB7XG4gICAgY29uc3QgaXNOb3RBdXRvY29tcGxldGVTY3JvbGwgPVxuICAgICAgIWV2ZW50LnRhcmdldD8uaWQ/LmluY2x1ZGVzKCdtYXQtYXV0b2NvbXBsZXRlLScpICYmXG4gICAgICAhZXZlbnQudGFyZ2V0Py5wYXJlbnRFbGVtZW50Py5pZD8uaW5jbHVkZXMoJ21hdC1hdXRvY29tcGxldGUtJykgJiZcbiAgICAgICFldmVudC50YXJnZXQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ21hdC1tZGMtYXV0b2NvbXBsZXRlLXRyaWdnZXInKTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZS5wYW5lbE9wZW4gJiYgaXNOb3RBdXRvY29tcGxldGVTY3JvbGwpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJvdGVjdGVkIHNlYXJjaFJlc3VsdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUobWFwKGlucHV0VmFsdWUgPT4gISFpbnB1dFZhbHVlLnRyaW0oKSkpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0FVVE9DT01QTEVURS4nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQXV0b2NvbXBsZXRlVXRpbHMgPSBBdXRvY29tcGxldGVVdGlscztcbiAgcHJpdmF0ZSByZWFkb25seSBpc1BsYXRmb3JtID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVyRGlzcGxheUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWFyayBjb21wb25lbnQgdmlldyBhcyBkaXJ0eSB3aGVuIHRvdWNoZWQgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG1hcmtBc1RvdWNoZWQvbWFya0FsbEFzVG91Y2hlZCBvciBlcnJvcnNcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gQXV0b2NvbXBsZXRlVXRpbHMuZXhjbHVkZVN1Z2dlc3Rpb25zKHRoaXMuaXRlbXNMaXN0LCB0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMuaXNQbGF0Zm9ybSAmJiBjaGFuZ2VzWydjb21wYW55Q29sb3InXSkge1xuICAgICAgdGhpcy5zZXRDb21wYW55Q29sb3JWYXJpYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSBBdXRvY29tcGxldGUuTEFSR0UpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKFRpbWVvdXQuVklFV19JTklUSUFMSVpFRF9DT01QT05FTlRfTE9BRCwgdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuaXNQbGF0Zm9ybSAmJiB0aGlzLnNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNjcm9sbCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRXZlbnQsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEV2ZW50LCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcbiAgb25Ub3VjaCA9ICgpID0+IHtcbiAgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlUHJpbWl0aXZlICYmIHRoaXMudGV4dEZpZWxkICYmIHRoaXMudmFsdWVGaWVsZCkge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQXV0b2NvbXBsZXRlLlNJTkdMRSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pdGVtc0xpc3QuZmluZChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFt0aGlzLml0ZW1zTGlzdC5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09PSB2YWx1ZSldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuaW5pdFZhbHVlKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuY3JlYXRlVmFsdWVJdGVtKGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgIHRoaXMuYWRkTmV3VmFsdWUoaXRlbVZhbHVlKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uT3B0aW9uUmVtb3ZlZChvcHRpb246IGFueSk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvY29tcGxldGUuY2xvc2VQYW5lbCgpLCAwKTtcbiAgICBjb25zdCBmb3VuZFZhbHVlID0gdGhpcy52YWx1ZS5maW5kKCh2OiBhbnkpID0+IHRoaXMuY29tcGFyZVdpdGggPyB0aGlzLmNvbXBhcmVXaXRoKHYsIG9wdGlvbikgOiB2ID09PSBvcHRpb24pO1xuXG4gICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB0aGlzLmNvbXBhcmVXaXRoID8gIXRoaXMuY29tcGFyZVdpdGgodiwgb3B0aW9uKSA6IHYgIT09IG9wdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KGlucHV0VmFsdWUpO1xuICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJhY3RlcnNTZWFyY2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dChpbnB1dFZhbHVlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZS5lbWl0KGlucHV0VmFsdWUpO1xuICAgICAgY29uc3QgZmluZFZhbHVlID0gWy4uLnRoaXMuc3VnZ2VzdGlvbnNMaXN0LCAuLi50aGlzLml0ZW1zTGlzdF0uZmluZCh2ID0+IGlucHV0VmFsdWUgPT09ICh0aGlzLnRleHRGaWVsZCA/IHZbdGhpcy50ZXh0RmllbGRdIDogdikpO1xuICAgICAgaWYgKGZpbmRWYWx1ZSkge1xuICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoeyBvcHRpb246IHsgdmFsdWU6IGZpbmRWYWx1ZSB9IH0gYXMgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgICB0aGlzLnVzZXJJbnB1dCQubmV4dCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSkgPyBbXSA6ICcnO1xuICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gMDtcbiAgICB0aGlzLm9uVXBkYXRlKCk7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGU/Lm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4gb3B0aW9uLmRlc2VsZWN0KCkpO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZmlsbElucHV0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmICF0aGlzLmlucHV0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW5wdXRWYWx1ZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyAnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0VmFsdWUgJiYgdGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFICYmIHRoaXMudmFsdWUgJiYgT2JqZWN0LmtleXModGhpcy52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSgoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLnZhbHVlKVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlWzBdXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUpLFxuICAgICAgICAgIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMudXNlcklucHV0JC5uZXh0KCcnKTtcbiAgICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnb3RvVXAoKSB7XG4gICAgaWYgKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSB7XG4gICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG5cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLmlucHV0VmFsdWUpID8gdGhpcy5pbnB1dFZhbHVlWzBdIDogdGhpcy5pbnB1dFZhbHVlO1xuXG4gICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKGlucHV0VmFsdWUpKSB7XG4gICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdudW1iZXInICYmIGlucHV0VmFsdWU/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS50cmltU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdPy5tYXRjaCgvXlxccysvZ20pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVybGFwKGRlbGF5ID0gVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0FGVEVSX0FDVElPTiwgaW5pdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5pc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IHRydWU7XG4gICAgdGhpcy5pbnB1dE9wYWNpdHkgPSAwO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5pbnB1dFdpZHRoO1xuICAgICAgY29uc3QgdGFncyA9IHRoaXMudGFnQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52YWx1ZS10YWcnKTtcbiAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgIGxldCB3aWR0aCA9IDA7XG4gICAgICAgIGxldCBmaXJzdFRhZ1dpZHRoID0gMDtcblxuICAgICAgICB0YWdzLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgd2lkdGggKz0gdGFnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgICAgaWYgKCFpbmRleCkge1xuICAgICAgICAgICAgZmlyc3RUYWdXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5pc092ZXJMYXBwaW5nICYmIHdpZHRoID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5pc092ZXJMYXBwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKChmaXJzdFRhZ1dpZHRoICsgQU1PVU5UX1RBR19XSURUSCkgPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXBJbmRleCA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlWzBdLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlucHV0T3BhY2l0eSA9IDE7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KCcnKTtcbiAgICBpZiAoIXRoaXMudmFsdWVQcmltaXRpdmUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IEF1dG9jb21wbGV0ZS5TSU5HTEUpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlLm1hcCgodjogYW55KSA9PiB2W3RoaXMudmFsdWVGaWVsZF0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUgJiYgdGhpcy52YXJpYW50ICE9PSBEcm9wZG93blZhcmlhdGlvbi5EUk9QRE9XTikge1xuICAgICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWVbMF0sIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUgPyBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhcmlhbnQgPT09IERyb3Bkb3duVmFyaWF0aW9uLkRST1BET1dOKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAhdGhpcy52YWx1ZVxuICAgICAgICA/ICcnXG4gICAgICAgIDogdGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFXG4gICAgICAgICAgPyBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUoKEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSlcbiAgICAgICAgICAgICAgPyB0aGlzLnZhbHVlWzBdXG4gICAgICAgICAgICAgIDogdGhpcy52YWx1ZSksXG4gICAgICAgICAgICB0aGlzLnRleHRGaWVsZClcbiAgICAgICAgICA6ICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuTVVMVEkpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGROZXdWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiAhdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kRHVwbGljYXRlID0gdGhpcy5jb21wYXJlV2l0aFxuICAgICAgPyB0aGlzLnZhbHVlLmZpbmQoKHY6IGFueSkgPT4gdGhpcy5jb21wYXJlV2l0aCh2LCBuZXdWYWx1ZSkpXG4gICAgICA6IEF1dG9jb21wbGV0ZVV0aWxzLmZpbmREdXBsaWNhdGUodGhpcy52YWx1ZSwgbmV3VmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmb3VuZER1cGxpY2F0ZSA/XG4gICAgICAgICh0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB0aGlzLmNvbXBhcmVXaXRoXG4gICAgICAgICAgPyAhdGhpcy5jb21wYXJlV2l0aCh2LCBmb3VuZER1cGxpY2F0ZSlcbiAgICAgICAgICA6IHYgIT09IGZvdW5kRHVwbGljYXRlKSlcbiAgICAgICAgOiBbLi4udGhpcy52YWx1ZSwgbmV3VmFsdWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpc0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09IERyb3Bkb3duVmFyaWF0aW9uLkRST1BET1dOO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hldnJvbkNsaWNrKGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlKTogdm9pZCB7XG4gICAgaWYgKGF1dG9jb21wbGV0ZS5pc09wZW4pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZVBhbmVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlucHV0V2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5mb3JtRmllbGRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC1cbiAgICAgICh0aGlzLmlzRHJvcGRvd24gPyBQYWRkaW5nLkRST1BET1dOX0NPTlRBSU5FUiA6IFBhZGRpbmcuQVVUT0NPTVBMRVRFX0NPTlRBSU5FUilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xuXG4gIC8qKlxuICAgKiBBZGRpbmcgY29tcGFueSBjb2xvciB2YXJpYWJsZSB0byB0aGUgYm9keSB0byBzdHlsZSBvdmVybGF5IGNvbnRhaW5lciB0aGF0J3Mgb3V0IG9mIHRoZSBjb21wb25lbnQgc2NvcGUuXG4gICAqL1xuICBwcml2YXRlIHNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIyLnNldFByb3BlcnR5KGRvY3VtZW50LmJvZHksICdzdHlsZScsIGAtLXVpLWF1dG9jb21wbGV0ZS1vcHRpb24tY29sb3I6ICR7dGhpcy5jb21wYW55Q29sb3J9O2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVyRGlzcGxheUNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhdXRvY29tcGxldGVIb3N0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5U3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGF1dG9jb21wbGV0ZUhvc3RFbGVtZW50KS5kaXNwbGF5O1xuICAgICAgICAgIGlmIChkaXNwbGF5U3R5bGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGF1dG9jb21wbGV0ZUhvc3RFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3N0eWxlJ10sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGgsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbY29sb3JdPVwiKHNhZmVFcnJvcnMubGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQgKSkgPyAnd2FybicgOiAnYWNjZW50J1wiXG4gICAgICBbYXBwZWFyYW5jZV09XCInb3V0bGluZSdcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnbGFyZ2Utc2l6ZSc6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UsICdoaWRlLWJvdHRvbS1jb250ZW50JzogIXNob3dCb3R0b21Db250ZW50IH1cIlxuICAgID5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiAjZm9ybUZpZWxkIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgICAjdGFnQ29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFICYmIHRoaXMudmFsdWUpIHx8XG4gICAgICAgICAgICAoIShpbnB1dFZhbHVlICYmIHRoaXMuaXNJbnB1dEZvY3VzKSAmJiB0aGlzLnZhbHVlICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktdGFnXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlLXRhZ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ3VpLXRhZy0nICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVJdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZUl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGRcIlxuICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSA/IGlucHV0T3BhY2l0eSA6IDFcIlxuICAgICAgICAgICAgW2FsbG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlckxhcHBpbmcgJiYgaSA+PSBvdmVybGFwSW5kZXggPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ292ZXJsYXAtdGFnJzogaXNPdmVybGFwQ2hlY2tpbmcgJiYgb3ZlcmxhcEluZGV4ICYmIGkgPj0gb3ZlcmxhcEluZGV4ICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTVVMVElcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsb3NlKT1cIm9uT3B0aW9uUmVtb3ZlZCh2YWx1ZUl0ZW0pXCJcbiAgICAgICAgICA+PC91aS10YWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3ZlckxhcHBpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb3ZlcmxhcEluZGV4OyBlbHNlIG92ZXJsYXBUYWdcIiBjbGFzcz1cIm92ZXJsYXAtY291bnRcIj5cbiAgICAgICAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRF9BTU9VTlQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgOiB7IG51bWJlclNlbGVjdGVkOiAodmFsdWUgfCBzbGljZTogb3ZlcmxhcEluZGV4KS5sZW5ndGggfSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI292ZXJsYXBUYWc+XG4gICAgICAgICAgICAgIDx1aS10YWcgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtyZWFkT25seV09XCJ0cnVlXCIgW2xhYmVsXT1cIicrJyArICh2YWx1ZSB8IHNsaWNlOiBvdmVybGFwSW5kZXgpLmxlbmd0aFwiPjwvdWktdGFnPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1bnNldC1tYXJnaW4nOiB0aGlzLnZhbHVlICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICAgKGJsdXIpPVwicmVmaWxsSW5wdXQoKVwiXG4gICAgICAgICAgKGZvY3VzaW4pPVwib25Gb2N1cygpXCJcbiAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLk1VTFRJID8gaW5wdXRPcGFjaXR5IDogMVwiXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx1aS1pY29uXG4gICAgICAgICpuZ0lmPVwidmFsdWUgJiYgKChBdXRvY29tcGxldGVVdGlscy5pc1ByaW1pdGl2ZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoKSB8fCAoIUF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKHZhbHVlKSAmJiAoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoIHx8ICFBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKSkpXCJcbiAgICAgICAgY2xhc3M9XCJyZW1vdmUtc2VsZWN0ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1pbnB1dC1pY29uJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKTskZXZlbnQucHJldmVudERlZmF1bHQoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgW2NvbG9yXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdpbmhlcml0JyA6ICdyZWJyYW5kLWJsYWNrJ1wiXG4gICAgICAgIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDbG9zZScgOiAnQ2xvc2UtaW4tbGluZSdcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPHVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhcnJvdy1zdGF0ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBhdXRvY29tcGxldGUuaXNPcGVuLCAnbGFyZ2UtaW5wdXQtaWNvbic6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICpuZ0lmPVwiaXNEcm9wZG93blwiXG4gICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyAnQXJyb3ctY2hldnJvbi1kb3duLWluLWxpbmUnIDogJ0Fycm93X2Rvd24nXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2hldnJvbkNsaWNrKGF1dG9jb21wbGV0ZSlcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG9jb21wbGV0ZVxuICAgICAgICBbY2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZSArICcgJyArIGRyb3Bkb3duUGFuZWxDbGFzc1wiXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJmYWxzZVwiXG4gICAgICAgIChvcGVuZWQpPVwiZ290b1VwKClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShzZWFyY2hSZXN1bHQkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Ryb3Bkb3duOyBlbHNlIGRyb3Bkb3duTGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfCB1cHBlcmNhc2VcIiAqbmdJZj1cInN1Z2dlc3Rpb25zTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT0kZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IHN1Z2dlc3RlZCB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3RlZCBvZiBzdWdnZXN0aW9uc0xpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWdnZXN0ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgc3VnZ2VzdGVkIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1vcHRncm91cD5cblxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwidmFsdWU/Lmxlbmd0aCAmJiB0eXBlICE9PSBhdXRvY29tcGxldGVUeXBlLlNJTkdMRVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWVcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJ2YWx1ZT8ubGVuZ3RoICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3NlbGVjdGVkLW9wdGlvbidcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyB2YWx1ZSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duTGlzdD5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsOyBlbHNlIGRlZmF1bHRWaWV3UG9ydFwiIFtpdGVtU2l6ZV09XCI0OFwiIFtzdHlsZS5oZWlnaHRdPVwiJzIwMHB4J1wiIGNsYXNzPVwidmlydHVhbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT0kZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgOiB2YWx1ZUZpZWxkIH1cIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Vmlld1BvcnQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRJdGVtc0xpc3RcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnU1VHR0VTVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSA6IHZhbHVlRmllbGQgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGg7IGVsc2Ugc2hvd0l0ZW1MaXN0V2l0aEdyb3VwXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW1MaXN0V2l0aEdyb3VwPlxuICAgICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0FMTF9JVEVNUycpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIDogdmFsdWVGaWVsZCB9XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkSXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoICYmICFmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aCAmJiBpbnB1dFZhbHVlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0FkZCAmJiAhaXNEcm9wZG93bjsgZWxzZSBub3RGb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAoJ0NPTU1PTi5BREQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZC1zdWdnZXN0aW9uXCI+XCJ7eyBpbnB1dFZhbHVlIH19XCI8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdEZvdW5kPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCInbm9uZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnTk9fUkVTVUxUU19GT1VORCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwic2FmZUVycm9ycy5sZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2FmZUVycm9ycy5sZW5ndGhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIHNhZmVFcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cIidFcnJvcidcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHVpLXZhbGlkYXRpb24tZXJyb3IgKm5nSWY9XCJuZ0NvbnRyb2wgJiYgIWhpZGVCdWlsdEluRXJyb3JzXCIgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIiBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogbGFiZWxcIiBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2VcIj48L3VpLXZhbGlkYXRpb24tZXJyb3I+XG5cbiAgICAgIDwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|