cps-ui-kit 0.139.0 → 0.141.0
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/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +137 -4
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +55 -2
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +63 -2
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +50 -1
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +34 -1
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +78 -1
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +51 -1
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +17 -1
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +29 -1
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +131 -1
- package/esm2020/lib/components/cps-loader/cps-loader.component.mjs +21 -1
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +58 -2
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +38 -1
- package/esm2020/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +5 -1
- package/esm2020/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +17 -1
- package/esm2020/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +29 -1
- package/esm2020/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +5 -1
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +18 -1
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +50 -1
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +137 -4
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +21 -1
- package/esm2020/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +41 -1
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +32 -2
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +67 -3
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +31 -3
- package/esm2020/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +51 -0
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +312 -8
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +67 -3
- package/esm2020/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +9 -1
- package/esm2020/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +5 -1
- package/esm2020/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +5 -1
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +35 -2
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +101 -1
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +17 -1
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +13 -1
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +319 -9
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +63 -3
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +9 -1
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +5 -1
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +5 -1
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +5 -1
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +118 -1
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +37 -1
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +2 -2
- package/fesm2015/cps-ui-kit.mjs +2317 -39
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +2317 -39
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +133 -0
- package/lib/components/cps-button/cps-button.component.d.ts +53 -0
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +61 -0
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +49 -0
- package/lib/components/cps-chip/cps-chip.component.d.ts +33 -0
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +85 -0
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +50 -0
- package/lib/components/cps-icon/cps-icon.component.d.ts +16 -0
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +28 -0
- package/lib/components/cps-input/cps-input.component.d.ts +130 -0
- package/lib/components/cps-loader/cps-loader.component.d.ts +20 -0
- package/lib/components/cps-menu/cps-menu.component.d.ts +56 -0
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +37 -0
- package/lib/components/cps-paginator/pipes/cps-paginate.pipe.d.ts +4 -0
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +16 -0
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +28 -0
- package/lib/components/cps-radio-group/cps-radio/cps-radio.component.d.ts +8 -0
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +21 -0
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +49 -0
- package/lib/components/cps-select/cps-select.component.d.ts +133 -0
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +21 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +40 -0
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +30 -0
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +68 -0
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +36 -0
- package/lib/components/cps-table/{table-row-menu → components/internal/table-row-menu}/table-row-menu.component.d.ts +15 -1
- package/lib/components/cps-table/cps-table.component.d.ts +304 -0
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +68 -0
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +8 -0
- package/lib/components/cps-table/directives/cps-table-header-selectable.directive.d.ts +4 -0
- package/lib/components/cps-table/directives/cps-table-row-selectable.directive.d.ts +8 -0
- package/lib/components/cps-tag/cps-tag.component.d.ts +33 -0
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +100 -0
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +16 -0
- package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +12 -0
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +307 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +64 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +8 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.d.ts +4 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.d.ts +8 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +8 -0
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +117 -0
- package/lib/directives/cps-tooltip.directive.d.ts +40 -0
- package/lib/services/cps-dialog/cps-dialog.service.d.ts +1 -1
- package/package.json +1 -1
- package/esm2020/lib/components/cps-table/table-row-menu/table-row-menu.component.mjs +0 -37
|
@@ -18,6 +18,10 @@ import * as i2 from "../../pipes/internal/label-by-value.pipe";
|
|
|
18
18
|
import * as i3 from "@angular/common";
|
|
19
19
|
import * as i4 from "primeng/virtualscroller";
|
|
20
20
|
import * as i5 from "primeng/api";
|
|
21
|
+
/**
|
|
22
|
+
* CpsAutocompleteComponent is an input component that provides real-time suggestions when being typed.
|
|
23
|
+
* @group Components
|
|
24
|
+
*/
|
|
21
25
|
export class CpsAutocompleteComponent {
|
|
22
26
|
get value() {
|
|
23
27
|
return this._value;
|
|
@@ -29,37 +33,166 @@ export class CpsAutocompleteComponent {
|
|
|
29
33
|
constructor(_control, _labelByValue) {
|
|
30
34
|
this._control = _control;
|
|
31
35
|
this._labelByValue = _labelByValue;
|
|
36
|
+
/**
|
|
37
|
+
* Label of the input element.
|
|
38
|
+
* @group Props
|
|
39
|
+
*/
|
|
32
40
|
this.label = '';
|
|
41
|
+
/**
|
|
42
|
+
* Placeholder text.
|
|
43
|
+
* @group Props
|
|
44
|
+
*/
|
|
33
45
|
this.placeholder = 'Please enter';
|
|
46
|
+
/**
|
|
47
|
+
* Bottom hint text.
|
|
48
|
+
* @group Props
|
|
49
|
+
*/
|
|
34
50
|
this.hint = '';
|
|
35
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Returns the object directly rather than the value specified with optionValue.
|
|
53
|
+
* @group Props
|
|
54
|
+
*/
|
|
55
|
+
this.returnObject = true;
|
|
56
|
+
/**
|
|
57
|
+
* Specifies if multiple values can be selected.
|
|
58
|
+
* @group Props
|
|
59
|
+
*/
|
|
36
60
|
this.multiple = false;
|
|
61
|
+
/**
|
|
62
|
+
* Whether autocomplete is disabled.
|
|
63
|
+
* @group Props
|
|
64
|
+
*/
|
|
37
65
|
this.disabled = false;
|
|
66
|
+
/**
|
|
67
|
+
* Width of the input field, a number denoting pixels or a string.
|
|
68
|
+
* @group Props
|
|
69
|
+
*/
|
|
38
70
|
this.width = '100%';
|
|
39
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Option for selecting all elements. Doesn't work with virtual scroll.
|
|
73
|
+
* @group Props
|
|
74
|
+
*/
|
|
75
|
+
this.selectAll = true;
|
|
76
|
+
/**
|
|
77
|
+
* When selecting elements, they will appear in a form of a chip.
|
|
78
|
+
* @group Props
|
|
79
|
+
*/
|
|
40
80
|
this.chips = true;
|
|
81
|
+
/**
|
|
82
|
+
* Whether the chips can be directly removed.
|
|
83
|
+
* @group Props
|
|
84
|
+
*/
|
|
41
85
|
this.closableChips = true;
|
|
86
|
+
/**
|
|
87
|
+
* When enabled, a clear icon is displayed to clear the value.
|
|
88
|
+
* @group Props
|
|
89
|
+
*/
|
|
42
90
|
this.clearable = false;
|
|
91
|
+
/**
|
|
92
|
+
* Whether the dropdown list should open on clear.
|
|
93
|
+
* @group Props
|
|
94
|
+
*/
|
|
43
95
|
this.openOnClear = true;
|
|
96
|
+
/**
|
|
97
|
+
* An array of options.
|
|
98
|
+
* @group Props
|
|
99
|
+
*/
|
|
44
100
|
this.options = [];
|
|
101
|
+
/**
|
|
102
|
+
* Name of the label field of an option.
|
|
103
|
+
* @group Props
|
|
104
|
+
*/
|
|
45
105
|
this.optionLabel = 'label';
|
|
46
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Name of the value field of an option. Needed only if returnObject prop is false.
|
|
108
|
+
* @group Props
|
|
109
|
+
*/
|
|
110
|
+
this.optionValue = 'value';
|
|
111
|
+
/**
|
|
112
|
+
* Name of the info field of an option, shows the additional information text.
|
|
113
|
+
* @group Props
|
|
114
|
+
*/
|
|
47
115
|
this.optionInfo = 'info';
|
|
116
|
+
/**
|
|
117
|
+
* Hides hint and validation errors.
|
|
118
|
+
* @group Props
|
|
119
|
+
*/
|
|
48
120
|
this.hideDetails = false;
|
|
121
|
+
/**
|
|
122
|
+
* Whether the component should have persistent clear icon.
|
|
123
|
+
* @group Props
|
|
124
|
+
*/
|
|
49
125
|
this.persistentClear = false;
|
|
126
|
+
/**
|
|
127
|
+
* Icon before input value.
|
|
128
|
+
* @group Props
|
|
129
|
+
*/
|
|
50
130
|
this.prefixIcon = '';
|
|
131
|
+
/**
|
|
132
|
+
* Size of icon before input value, of type number or string or 'fill' or 'xsmall' or 'small' or 'normal' or 'large'.
|
|
133
|
+
* @group Props
|
|
134
|
+
*/
|
|
51
135
|
this.prefixIconSize = '18px';
|
|
136
|
+
/**
|
|
137
|
+
* When enabled, a loading bar is displayed.
|
|
138
|
+
* @group Props
|
|
139
|
+
*/
|
|
52
140
|
this.loading = false;
|
|
141
|
+
/**
|
|
142
|
+
* Text to display when there is no data. Defaults to 'No results found'.
|
|
143
|
+
* @group Props
|
|
144
|
+
*/
|
|
53
145
|
this.emptyMessage = 'No results found';
|
|
146
|
+
/**
|
|
147
|
+
* Whether only the elements within scrollable area should be added into the DOM.
|
|
148
|
+
* @group Props
|
|
149
|
+
*/
|
|
54
150
|
this.virtualScroll = false;
|
|
151
|
+
/**
|
|
152
|
+
* Determines how many additional elements to add to the DOM outside of the view.
|
|
153
|
+
* @group Props
|
|
154
|
+
*/
|
|
55
155
|
this.numToleratedItems = 10;
|
|
156
|
+
/**
|
|
157
|
+
* When it is not an empty string, an info icon is displayed to show text for more info.
|
|
158
|
+
* @group Props
|
|
159
|
+
*/
|
|
56
160
|
this.infoTooltip = '';
|
|
161
|
+
/**
|
|
162
|
+
* Info tooltip class for styling.
|
|
163
|
+
* @group Props
|
|
164
|
+
*/
|
|
57
165
|
this.infoTooltipClass = 'cps-tooltip-content';
|
|
166
|
+
/**
|
|
167
|
+
* Max width of infoTooltip of type number denoting pixels or string.
|
|
168
|
+
* @group Props
|
|
169
|
+
*/
|
|
58
170
|
this.infoTooltipMaxWidth = '100%';
|
|
171
|
+
/**
|
|
172
|
+
* Whether the infoTooltip is persistent.
|
|
173
|
+
* @group Props
|
|
174
|
+
*/
|
|
59
175
|
this.infoTooltipPersistent = false;
|
|
176
|
+
/**
|
|
177
|
+
* Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.
|
|
178
|
+
* @group Props
|
|
179
|
+
*/
|
|
60
180
|
this.infoTooltipPosition = 'top';
|
|
181
|
+
/**
|
|
182
|
+
* Styling appearance of autocomplete input, it could be 'outlined', 'underlined' or 'borderless'.
|
|
183
|
+
* @group Props
|
|
184
|
+
*/
|
|
61
185
|
this.appearance = 'outlined';
|
|
186
|
+
/**
|
|
187
|
+
* Value of the autocomplete.
|
|
188
|
+
* @group Props
|
|
189
|
+
*/
|
|
62
190
|
this._value = undefined;
|
|
191
|
+
/**
|
|
192
|
+
* Callback to invoke on value change.
|
|
193
|
+
* @param {any} any - value changed.
|
|
194
|
+
* @group Emits
|
|
195
|
+
*/
|
|
63
196
|
this.valueChanged = new EventEmitter();
|
|
64
197
|
this._statusChangesSubscription = new Subscription();
|
|
65
198
|
this.error = '';
|
|
@@ -583,4 +716,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
583
716
|
type: ViewChild,
|
|
584
717
|
args: ['optionsList']
|
|
585
718
|
}] } });
|
|
586
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtYXV0b2NvbXBsZXRlL2Nwcy1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWF1dG9jb21wbGV0ZS9jcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUdqQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0s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ekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFXSixZQUFZO3NCQUFyQixNQUFNO2dCQUdQLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSTVCLHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBSWxDLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQUl4QixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFJeEIsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQge1xuICBDcHNJY29uQ29tcG9uZW50LFxuICBJY29uVHlwZSxcbiAgaWNvblNpemVUeXBlXG59IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWNoaXAvY3BzLWNoaXAuY29tcG9uZW50JztcbmltcG9ydCB7IENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXByb2dyZXNzLWxpbmVhci9jcHMtcHJvZ3Jlc3MtbGluZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxCeVZhbHVlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ludGVybmFsL2xhYmVsLWJ5LXZhbHVlLnBpcGUnO1xuaW1wb3J0IHsgQ2hlY2tPcHRpb25TZWxlY3RlZFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9pbnRlcm5hbC9jaGVjay1vcHRpb24tc2VsZWN0ZWQucGlwZSc7XG5pbXBvcnQgeyBmaW5kLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIFZpcnR1YWxTY3JvbGxlcixcbiAgVmlydHVhbFNjcm9sbGVyTW9kdWxlXG59IGZyb20gJ3ByaW1lbmcvdmlydHVhbHNjcm9sbGVyJztcbmltcG9ydCB7IENwc1Rvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBDcHNBdXRvY29tcGxldGVBcHBlYXJhbmNlVHlwZSA9XG4gIHwgJ291dGxpbmVkJ1xuICB8ICd1bmRlcmxpbmVkJ1xuICB8ICdib3JkZXJsZXNzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNDaGlwQ29tcG9uZW50LFxuICAgIENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50LFxuICAgIENwc0luZm9DaXJjbGVDb21wb25lbnQsXG4gICAgTGFiZWxCeVZhbHVlUGlwZSxcbiAgICBDaGVja09wdGlvblNlbGVjdGVkUGlwZSxcbiAgICBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUsXG4gICAgQ3BzTWVudUNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtMYWJlbEJ5VmFsdWVQaXBlLCBDaGVja09wdGlvblNlbGVjdGVkUGlwZV0sXG4gIHNlbGVjdG9yOiAnY3BzLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdQbGVhc2UgZW50ZXInO1xuICBASW5wdXQoKSBoaW50ID0gJyc7XG4gIEBJbnB1dCgpIHJldHVybk9iamVjdCA9IHRydWU7IC8vIGlmIGZhbHNlLCB2YWx1ZSB3aWxsIGJlIG9wdGlvbltvcHRpb25WYWx1ZV1cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGg6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcbiAgQElucHV0KCkgc2VsZWN0QWxsID0gdHJ1ZTsgLy8gZG9lc24ndCB3b3JrIHdpdGggdmlydHVhbCBzY3JvbGxcbiAgQElucHV0KCkgY2hpcHMgPSB0cnVlO1xuICBASW5wdXQoKSBjbG9zYWJsZUNoaXBzID0gdHJ1ZTtcbiAgQElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wZW5PbkNsZWFyID0gdHJ1ZTtcbiAgQElucHV0KCkgb3B0aW9ucyA9IFtdIGFzIGFueVtdO1xuICBASW5wdXQoKSBvcHRpb25MYWJlbCA9ICdsYWJlbCc7XG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gJ3ZhbHVlJzsgLy8gbmVlZGVkIG9ubHkgaWYgcmV0dXJuT2JqZWN0ID09PSBmYWxzZVxuICBASW5wdXQoKSBvcHRpb25JbmZvID0gJ2luZm8nO1xuICBASW5wdXQoKSBoaWRlRGV0YWlscyA9IGZhbHNlO1xuICBASW5wdXQoKSBwZXJzaXN0ZW50Q2xlYXIgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJlZml4SWNvbjogSWNvblR5cGUgPSAnJztcbiAgQElucHV0KCkgcHJlZml4SWNvblNpemU6IGljb25TaXplVHlwZSA9ICcxOHB4JztcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgbnVtVG9sZXJhdGVkSXRlbXMgPSAxMDtcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXAgPSAnJztcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQb3NpdGlvbjogQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCc7XG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IENwc0F1dG9jb21wbGV0ZUFwcGVhcmFuY2VUeXBlID0gJ291dGxpbmVkJztcblxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUJveCcpXG4gIGF1dG9jb21wbGV0ZUJveCE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29udGFpbmVyJylcbiAgYXV0b2NvbXBsZXRlQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd2aXJ0dWFsTGlzdCcpXG4gIHZpcnR1YWxMaXN0ITogVmlydHVhbFNjcm9sbGVyO1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNZW51JylcbiAgb3B0aW9uc01lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNMaXN0JylcbiAgb3B0aW9uc0xpc3QhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBlcnJvciA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuICBpc09wZW5lZCA9IGZhbHNlO1xuICBpbnB1dFRleHQgPSAnJztcbiAgZmlsdGVyZWRPcHRpb25zID0gW10gYXMgYW55W107XG4gIGJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gIGFjdGl2ZVNpbmdsZSA9IGZhbHNlO1xuICBvcHRpb25IaWdobGlnaHRlZEluZGV4ID0gLTE7XG5cbiAgdmlydHVhbExpc3RIZWlnaHQgPSAyNDA7XG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDQyO1xuXG4gIGF1dG9jb21wbGV0ZUJveFdpZHRoID0gMDtcbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgX2xhYmVsQnlWYWx1ZTogTGFiZWxCeVZhbHVlUGlwZVxuICApIHtcbiAgICBpZiAodGhpcy5fY29udHJvbCkge1xuICAgICAgdGhpcy5fY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoZW50cnk/LnRhcmdldClcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUJveFdpZHRoID0gKGVudHJ5LnRhcmdldCBhcyBhbnkpLm9mZnNldFdpZHRoO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLmN2dFdpZHRoID0gY29udmVydFNpemUodGhpcy53aWR0aCk7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIXRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLl9jb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gICAgICB9XG4gICAgKSBhcyBTdWJzY3JpcHRpb247XG5cbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYXV0b2NvbXBsZXRlQm94Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBzZWxlY3Qob3B0aW9uOiBhbnksIGJ5VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhhcnJheTogYW55W10sIHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyYXkgPyAhIWZpbmQoYXJyYXksIChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIHZhbCkpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuICAgIGNvbnN0IHZhbCA9IGJ5VmFsdWVcbiAgICAgID8gb3B0aW9uXG4gICAgICA6IHRoaXMucmV0dXJuT2JqZWN0XG4gICAgICA/IG9wdGlvblxuICAgICAgOiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV07XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XG4gICAgICBpZiAoaW5jbHVkZXModGhpcy52YWx1ZSwgdmFsKSkge1xuICAgICAgICByZXMgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiAhaXNFcXVhbCh2LCB2YWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3YgPSB0aGlzLnJldHVybk9iamVjdCA/IG8gOiBvW3RoaXMub3B0aW9uVmFsdWVdO1xuICAgICAgICAgIGlmICh0aGlzLnZhbHVlLnNvbWUoKHY6IGFueSkgPT4gaXNFcXVhbCh2LCBvdikpIHx8IGlzRXF1YWwodmFsLCBvdikpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG92KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShyZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgfVxuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgb25PcHRpb25DbGljayhvcHRpb246IGFueSkge1xuICAgIHRoaXMuX2NsaWNrT3B0aW9uKG9wdGlvbik7XG4gIH1cblxuICB0b2dnbGVBbGwoKSB7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnJldHVybk9iamVjdCkge1xuICAgICAgICByZXMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgIHJlcy5wdXNoKG9bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZShyZXMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBmaWx0ZXJPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuICAgIGNvbnN0IHNlYXJjaFZhbCA9IChldmVudD8udGFyZ2V0Py52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigobzogYW55KSA9PlxuICAgICAgb1t0aGlzLm9wdGlvbkxhYmVsXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbClcbiAgICApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBjbGVhcihldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIXRoaXMubXVsdGlwbGUgJiYgdGhpcy52YWx1ZSkgfHxcbiAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMudmFsdWU/Lmxlbmd0aCA+IDApXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5vcGVuT25DbGVhcikge1xuICAgICAgICB0aGlzLl90b2dnbGVPcHRpb25zKHRydWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogdGhpcy5yZXR1cm5PYmplY3QgPyB1bmRlZmluZWQgOiAnJztcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fY29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBvbkJlZm9yZU9wdGlvbnNIaWRkZW4oKSB7XG4gICAgdGhpcy5fY2xvc2VBbmRDbGVhcigpO1xuICB9XG5cbiAgb25Cb3hDbGljaygpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2luZ2xlID0gdHJ1ZTtcbiAgICAgIGlmICghdGhpcy5pbnB1dFRleHQpIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fZ2V0VmFsdWVMYWJlbCgpO1xuICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICB9XG4gICAgdGhpcy5mb2N1cygpO1xuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gIH1cblxuICBvbkNvbnRhaW5lcktleURvd24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIC8vIGVzY2FwZVxuICAgIGlmIChjb2RlID09PSAyNykge1xuICAgICAgdGhpcy5fY2xvc2VBbmRDbGVhcigpO1xuICAgIH1cbiAgICAvLyBlbnRlclxuICAgIGVsc2UgaWYgKGNvZGUgPT09IDEzKSB7XG4gICAgICBsZXQgaWR4ID0gdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4O1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm11bHRpcGxlICYmXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsICYmXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy52aXJ0dWFsU2Nyb2xsXG4gICAgICApIHtcbiAgICAgICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQWxsKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWR4LS07XG4gICAgICB9XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpZHhdO1xuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aClcbiAgICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24oKTtcbiAgICAgIHRoaXMuX2NsaWNrT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuICAgIC8vIHZlcnRpY2FsIGFycm93c1xuICAgIGVsc2UgaWYgKFszOCwgNDBdLmluY2x1ZGVzKGNvZGUpKSB7XG4gICAgICAvLyBBcnJvd3MgbmF2aWdhdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCB2aXJ0dWFsIHNjcm9sbFxuICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHRoaXMuX25hdmlnYXRlT3B0aW9uc0J5QXJyb3dzKGNvZGUgPT09IDM4KTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0S2V5RG93bihldmVudDogYW55KSB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgLy8gYmFja3NwYWNlXG4gICAgaWYgKGNvZGUgPT09IDgpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUxhc3RWYWx1ZSgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIC8vIGVudGVyXG4gICAgZWxzZSBpZiAoY29kZSA9PT0gMTMpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpcm1JbnB1dChldmVudD8udGFyZ2V0Py52YWx1ZSB8fCAnJyk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoWzM4LCA0MF0uaW5jbHVkZXMoY29kZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGV2cm9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkJveENsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignaW5wdXQnKT8uZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gIH1cblxuICByZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW4gPSB0aGlzLmZpbHRlcmVkT3B0aW9ucz8ubGVuZ3RoIHx8IDA7XG4gICAgdGhpcy52aXJ0dWFsTGlzdEhlaWdodCA9IE1hdGgubWluKFxuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgKiBjdXJyZW50TGVuLFxuICAgICAgMjQwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wdGlvbnMoc2hvdz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3BlbmVkID09PSBzaG93KSByZXR1cm47XG5cbiAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBzaG93ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMub3B0aW9uc01lbnUuc2hvdyh7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLmF1dG9jb21wbGV0ZUJveC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUudG9nZ2xlKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmF1dG9jb21wbGV0ZUJveC5uYXRpdmVFbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbmVkID0gdGhpcy5vcHRpb25zTWVudS5pc1Zpc2libGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuZWQgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgIHRoaXMub3B0aW9uc0xpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgc2VsZWN0ZWQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICdpbnN0YW50JyxcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBsZXQgdjogYW55O1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHYgPSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB2ID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IGlzRXF1YWwobywgdikpO1xuICAgICAgICAgIGlmIChpZHggPj0gMCkgdGhpcy52aXJ0dWFsTGlzdC5zY3JvbGxUb0luZGV4KGlkeCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrT3B0aW9uKG9wdGlvbjogYW55KSB7XG4gICAgdGhpcy5zZWxlY3Qob3B0aW9uLCBmYWxzZSk7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLl9jb250cm9sPy5lcnJvcnM7XG5cbiAgICBpZiAoIXRoaXMuX2NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgIWVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncmVxdWlyZWQnIGluIGVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICdGaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyQXJyID0gT2JqZWN0LnZhbHVlcyhlcnJvcnMpO1xuICAgIGlmIChlcnJBcnIubGVuZ3RoIDwgMSkge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gZXJyQXJyLmZpbmQoKG1zZykgPT4gdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpO1xuXG4gICAgdGhpcy5lcnJvciA9IG1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFZhbHVlTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVcbiAgICAgID8gdGhpcy5yZXR1cm5PYmplY3RcbiAgICAgICAgPyB0aGlzLnZhbHVlW3RoaXMub3B0aW9uTGFiZWxdXG4gICAgICAgIDogdGhpcy5fbGFiZWxCeVZhbHVlLnRyYW5zZm9ybShcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLm9wdGlvblZhbHVlLFxuICAgICAgICAgICAgdGhpcy5vcHRpb25MYWJlbFxuICAgICAgICAgIClcbiAgICAgIDogJyc7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhcklucHV0KCkge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgdGhpcy5hY3RpdmVTaW5nbGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZUFuZENsZWFyKCkge1xuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SFRNTE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnNMaXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICcuY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbidcbiAgICApIHx8IFtdKSBhcyBhbnk7XG4gIH1cblxuICBwcml2YXRlIF9kZWhpZ2hsaWdodE9wdGlvbihlbD86IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKGVsKSBlbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHRlbicpO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA8IDApIHJldHVybjtcbiAgICAgIGNvbnN0IG9wdGlvbkl0ZW1zID0gdGhpcy5fZ2V0SFRNTE9wdGlvbnMoKTtcbiAgICAgIG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0uY2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0ZW4nKTtcbiAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbihlbDogSFRNTEVsZW1lbnQpIHtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlbicpO1xuICAgIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChlbFJlY3QudG9wIDwgcGFyZW50UmVjdC50b3AgfHwgZWxSZWN0LmJvdHRvbSA+IHBhcmVudFJlY3QuYm90dG9tKSB7XG4gICAgICBlbC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX25hdmlnYXRlT3B0aW9uc0J5QXJyb3dzKHVwOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKSByZXR1cm47XG5cbiAgICBjb25zdCBvcHRpb25JdGVtcyA9IHRoaXMuX2dldEhUTUxPcHRpb25zKCk7XG4gICAgY29uc3QgbGVuID0gb3B0aW9uSXRlbXMubGVuZ3RoO1xuICAgIGlmIChsZW4gPCAxKSByZXR1cm47XG5cbiAgICBpZiAobGVuID09PSAxKSB7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPSAwO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zWzBdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXApIHtcbiAgICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ID1cbiAgICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4IDwgMVxuICAgICAgICAgID8gbGVuIC0gMVxuICAgICAgICAgIDogdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4IC0gMTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XSk7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPSBbLTEsIGxlbiAtIDFdLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhcbiAgICAgIClcbiAgICAgICAgPyAwXG4gICAgICAgIDogdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ICsgMTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25maXJtSW5wdXQoc2VhcmNoVmFsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcbiAgICBzZWFyY2hWYWwgPSBzZWFyY2hWYWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXNlYXJjaFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHJldHVybjtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMucmV0dXJuT2JqZWN0ID8gdW5kZWZpbmVkIDogJyc7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgICB0aGlzLl9jbG9zZUFuZENsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kKFxuICAgICAgKG86IGFueSkgPT4gb1t0aGlzLm9wdGlvbkxhYmVsXS50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2hWYWxcbiAgICApO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgdGhpcy5zZWxlY3QoZm91bmQsIGZhbHNlKTtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModGhpcy5tdWx0aXBsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuX2dldFZhbHVlTGFiZWwoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVMYXN0VmFsdWUoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuaW5wdXRUZXh0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgIHRoaXMudmFsdWUuZmlsdGVyKFxuICAgICAgICAgICAgKHY6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggIT09IHRoaXMudmFsdWUubGVuZ3RoIC0gMVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IHRydWU7XG4gICAgfSBlbHNlIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS1jeS1pZD1cImNwcy1hdXRvY29tcGxldGVcIlxuICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjdnRXaWR0aCB9XCJcbiAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlXCJcbiAgdGFiaW5kZXg9XCIxXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZWQsIGVycm9yOiBlcnJvciwgYWN0aXZlOiBpc09wZW5lZCB9XCJcbiAgI2F1dG9jb21wbGV0ZUNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtbGFiZWxcIiAqbmdJZj1cImxhYmVsXCI+XG4gICAgPGxhYmVsPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8Y3BzLWluZm8tY2lyY2xlXG4gICAgICAqbmdJZj1cImluZm9Ub29sdGlwXCJcbiAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1sYWJlbC1pbmZvLWNpcmNsZVwiXG4gICAgICBzaXplPVwieHNtYWxsXCJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiaW5mb1Rvb2x0aXBQb3NpdGlvblwiXG4gICAgICBbdG9vbHRpcENvbnRlbnRDbGFzc109XCJpbmZvVG9vbHRpcENsYXNzXCJcbiAgICAgIFt0b29sdGlwTWF4V2lkdGhdPVwiaW5mb1Rvb2x0aXBNYXhXaWR0aFwiXG4gICAgICBbdG9vbHRpcFBlcnNpc3RlbnRdPVwiaW5mb1Rvb2x0aXBQZXJzaXN0ZW50XCJcbiAgICAgIFt0b29sdGlwVGV4dF09XCJpbmZvVG9vbHRpcFwiPlxuICAgIDwvY3BzLWluZm8tY2lyY2xlPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIChrZXlkb3duKT1cIm9uQ29udGFpbmVyS2V5RG93bigkZXZlbnQpXCJcbiAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJpc09wZW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BlcnNpc3RlbnQtY2xlYXInOiBwZXJzaXN0ZW50Q2xlYXIsXG4gICAgICBib3JkZXJsZXNzOiBhcHBlYXJhbmNlID09PSAnYm9yZGVybGVzcycsXG4gICAgICB1bmRlcmxpbmVkOiBhcHBlYXJhbmNlID09PSAndW5kZXJsaW5lZCdcbiAgICB9XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveFwiXG4gICAgICAjYXV0b2NvbXBsZXRlQm94XG4gICAgICAobW91c2Vkb3duKT1cIm9uQm94Q2xpY2soKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtYm94LWFyZWFcIj5cbiAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbaWNvbl09XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGlzYWJsZWQgPyAnIzlhOTU5NScgOiBudWxsXCJcbiAgICAgICAgICBbc2l6ZV09XCJwcmVmaXhJY29uU2l6ZVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmVmaXgtaWNvblwiPlxuICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1pdGVtc1wiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh2YWx1ZSAmJiAhbXVsdGlwbGUpIHx8ICh2YWx1ZT8ubGVuZ3RoID4gMCAmJiBtdWx0aXBsZSk7XG4gICAgICAgICAgICBlbHNlIGF1dG9jb21wbGV0ZUlucHV0XG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbXVsdGlwbGVcIiBjbGFzcz1cInNpbmdsZS1pdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWl0ZW0tc2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5vcGFjaXR5XT1cImFjdGl2ZVNpbmdsZSA/IDAgOiAxXCI+e3tcbiAgICAgICAgICAgICAgICByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgICAgID8gdmFsdWVbb3B0aW9uTGFiZWxdXG4gICAgICAgICAgICAgICAgICA6ICh2YWx1ZSB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZUlucHV0O1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGlucHV0Q2xhc3M6ICdzaW5nbGUtaXRlbS1pbnB1dCcsXG4gICAgICAgICAgICAgICAgICBpbnB1dFN0eWxlOiBhY3RpdmVTaW5nbGUgPyAnb3BhY2l0eTogMScgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZSAmJiAhY2hpcHNcIiBjbGFzcz1cInRleHQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbCBvZiB2YWx1ZTsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdyb3VwLWl0ZW1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhYm91dC10by1yZW1vdmUnOiBsYXN0ICYmIGJhY2tzcGFjZUNsaWNrZWRPbmNlIH1cIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgICAgID8gdmFsW29wdGlvbkxhYmVsXVxuICAgICAgICAgICAgICAgICAgOiAodmFsIHwgbGFiZWxCeVZhbHVlIDogb3B0aW9ucyA6IG9wdGlvblZhbHVlIDogb3B0aW9uTGFiZWwpXG4gICAgICAgICAgICAgIH19e3sgIWxhc3QgPyAnLCcgOiAnJyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ211bHRpLWl0ZW0taW5wdXQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZSAmJiBjaGlwc1wiIGNsYXNzPVwiY2hpcHMtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxjcHMtY2hpcFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsIG9mIHZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xvc2FibGVdPVwiY2xvc2FibGVDaGlwc1wiXG4gICAgICAgICAgICAgIChjbG9zZWQpPVwic2VsZWN0KHZhbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhYm91dC10by1yZW1vdmUnOiBsYXN0ICYmIGJhY2tzcGFjZUNsaWNrZWRPbmNlIH1cIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0XG4gICAgICAgICAgICAgICAgICA/IHZhbFtvcHRpb25MYWJlbF1cbiAgICAgICAgICAgICAgICAgIDogKHZhbCB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvY3BzLWNoaXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ211bHRpLWNoaXAtaW5wdXQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1ib3gtaWNvbnNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIlxuICAgICAgICAgICAgICBwZXJzaXN0ZW50Q2xlYXIgfHxcbiAgICAgICAgICAgICAgKCFwZXJzaXN0ZW50Q2xlYXIgJiZcbiAgICAgICAgICAgICAgICAoKG11bHRpcGxlICYmIHZhbHVlPy5sZW5ndGgpIHx8ICghbXVsdGlwbGUgJiYgdmFsdWUpKSlcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtYm94LWNsZWFyLWljb25cIj5cbiAgICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIj48L2Nwcy1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1jaGV2cm9uXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25DaGV2cm9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiZGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAndGV4dC1kYXJrJ1wiPjwvY3BzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxjcHMtbWVudVxuICAgICAgI29wdGlvbnNNZW51XG4gICAgICBbd2l0aEFycm93XT1cImZhbHNlXCJcbiAgICAgIChiZWZvcmVNZW51SGlkZGVuKT1cIm9uQmVmb3JlT3B0aW9uc0hpZGRlbigpXCJcbiAgICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucz1cIjBzIGxpbmVhclwiXG4gICAgICBjb250YWluZXJDbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1tZW51XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICNvcHRpb25zTGlzdFxuICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9uc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICB3aWR0aDogYXV0b2NvbXBsZXRlQm94V2lkdGggKyAncHgnXG4gICAgICAgIH1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA8IDFcIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLWVtcHR5XCI+XG4gICAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1vcHRpb24gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLmFsbHNlbGVjdGVkXT1cInZhbHVlPy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG11bHRpcGxlICYmXG4gICAgICAgICAgICAgIHNlbGVjdEFsbCAmJlxuICAgICAgICAgICAgICBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSBvcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgICBvcHRpb25zLmxlbmd0aCA+IDFcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uLWNoZWNrXCI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uLWxhYmVsXCJcbiAgICAgICAgICAgICAgICA+U2VsZWN0IGFsbDwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgIDxwLXZpcnR1YWxTY3JvbGxlclxuICAgICAgICAgICAgI3ZpcnR1YWxMaXN0XG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgIFtkZWxheV09XCIwXCJcbiAgICAgICAgICAgIFtzY3JvbGxIZWlnaHRdPVwidmlydHVhbExpc3RIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInsgbnVtVG9sZXJhdGVkSXRlbXM6IG51bVRvbGVyYXRlZEl0ZW1zIH1cIlxuICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9wLXZpcnR1YWxTY3JvbGxlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nwcy1tZW51PlxuICAgIDxjcHMtcHJvZ3Jlc3MtbGluZWFyXG4gICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgaGVpZ2h0PVwiM1wiXG4gICAgICByYWRpdXM9XCI0XCJcbiAgICAgIG9wYWNpdHk9XCIwLjNcIlxuICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtcHJvZ3Jlc3MtYmFyXCJcbiAgICAgIGJnQ29sb3I9XCJ0cmFuc3BhcmVudFwiPlxuICAgIDwvY3BzLXByb2dyZXNzLWxpbmVhcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWVycm9yXCI+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICNhdXRvY29tcGxldGVJbnB1dFxuICBsZXQtaW5wdXRDbGFzcz1cImlucHV0Q2xhc3NcIlxuICBsZXQtaW5wdXRTdHlsZT1cImlucHV0U3R5bGVcIj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1pbnB1dFwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgW3N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICghdmFsdWUgJiYgIW11bHRpcGxlKSB8fCAodmFsdWU/Lmxlbmd0aCA8IDEgJiYgbXVsdGlwbGUpXG4gICAgICAgID8gcGxhY2Vob2xkZXJcbiAgICAgICAgOiAnJ1xuICAgIFwiXG4gICAgKGlucHV0KT1cImZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25JbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uXCJcbiAgICAoY2xpY2spPVwib25PcHRpb25DbGljayhpdGVtKVwiXG4gICAgW2NsYXNzLnNlbGVjdGVkXT1cIlxuICAgICAgaXRlbSB8IGNoZWNrT3B0aW9uU2VsZWN0ZWQgOiB2YWx1ZSA6IG11bHRpcGxlIDogcmV0dXJuT2JqZWN0IDogb3B0aW9uVmFsdWVcbiAgICBcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1vcHRpb24tbGVmdFwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aXBsZVwiIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1jaGVja1wiPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS1jeS1pZD1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9uc1wiXG4gICAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1sYWJlbFwiXG4gICAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgPnt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1yaWdodFwiXG4gICAgICBbY2xhc3MudmlydHVhbC1yb3ddPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICA+e3sgaXRlbVtvcHRpb25JbmZvXSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
719
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtYXV0b2NvbXBsZXRlL2Nwcy1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWF1dG9jb21wbGV0ZS9jcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUdqQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0s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S0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNVSxNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBZ0JKLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJNUIscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJbEMsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQUl4QixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7XG4gIENwc0ljb25Db21wb25lbnQsXG4gIEljb25UeXBlLFxuICBpY29uU2l6ZVR5cGVcbn0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc0NoaXBDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtY2hpcC9jcHMtY2hpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzUHJvZ3Jlc3NMaW5lYXJDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtcHJvZ3Jlc3MtbGluZWFyL2Nwcy1wcm9ncmVzcy1saW5lYXIuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0luZm9DaXJjbGVDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtaW5mby1jaXJjbGUvY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYWJlbEJ5VmFsdWVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvaW50ZXJuYWwvbGFiZWwtYnktdmFsdWUucGlwZSc7XG5pbXBvcnQgeyBDaGVja09wdGlvblNlbGVjdGVkUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ludGVybmFsL2NoZWNrLW9wdGlvbi1zZWxlY3RlZC5waXBlJztcbmltcG9ydCB7IGZpbmQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgVmlydHVhbFNjcm9sbGVyLFxuICBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGVcbn0gZnJvbSAncHJpbWVuZy92aXJ0dWFsc2Nyb2xsZXInO1xuaW1wb3J0IHsgQ3BzVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jcHMtdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ3BzTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1tZW51L2Nwcy1tZW51LmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIENwc0F1dG9jb21wbGV0ZUFwcGVhcmFuY2VUeXBlID1cbiAgfCAnb3V0bGluZWQnXG4gIHwgJ3VuZGVybGluZWQnXG4gIHwgJ2JvcmRlcmxlc3MnO1xuXG4vKipcbiAqIENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudCBpcyBhbiBpbnB1dCBjb21wb25lbnQgdGhhdCBwcm92aWRlcyByZWFsLXRpbWUgc3VnZ2VzdGlvbnMgd2hlbiBiZWluZyB0eXBlZC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzQ2hpcENvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50LFxuICAgIExhYmVsQnlWYWx1ZVBpcGUsXG4gICAgQ2hlY2tPcHRpb25TZWxlY3RlZFBpcGUsXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLFxuICAgIENwc01lbnVDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTGFiZWxCeVZhbHVlUGlwZSwgQ2hlY2tPcHRpb25TZWxlY3RlZFBpcGVdLFxuICBzZWxlY3RvcjogJ2Nwcy1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNBdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIExhYmVsIG9mIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGxlYXNlIGVudGVyJztcblxuICAvKipcbiAgICogQm90dG9tIGhpbnQgdGV4dC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoaW50ID0gJyc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9iamVjdCBkaXJlY3RseSByYXRoZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIHdpdGggb3B0aW9uVmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcmV0dXJuT2JqZWN0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIG11bHRpcGxlIHZhbHVlcyBjYW4gYmUgc2VsZWN0ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciBhdXRvY29tcGxldGUgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGlucHV0IGZpZWxkLCBhIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3IgYSBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgd2lkdGg6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICAvKipcbiAgICogT3B0aW9uIGZvciBzZWxlY3RpbmcgYWxsIGVsZW1lbnRzLiBEb2Vzbid0IHdvcmsgd2l0aCB2aXJ0dWFsIHNjcm9sbC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3RBbGwgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNlbGVjdGluZyBlbGVtZW50cywgdGhleSB3aWxsIGFwcGVhciBpbiBhIGZvcm0gb2YgYSBjaGlwLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNoaXBzID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hpcHMgY2FuIGJlIGRpcmVjdGx5IHJlbW92ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2xvc2FibGVDaGlwcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBjbGVhciBpY29uIGlzIGRpc3BsYXllZCB0byBjbGVhciB0aGUgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGxpc3Qgc2hvdWxkIG9wZW4gb24gY2xlYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgb3Blbk9uQ2xlYXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBvcHRpb25zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnMgPSBbXSBhcyBhbnlbXTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsID0gJ2xhYmVsJztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3B0aW9uLiBOZWVkZWQgb25seSBpZiByZXR1cm5PYmplY3QgcHJvcCBpcyBmYWxzZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZSA9ICd2YWx1ZSc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGluZm8gZmllbGQgb2YgYW4gb3B0aW9uLCBzaG93cyB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0ZXh0LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkluZm8gPSAnaW5mbyc7XG5cbiAgLyoqXG4gICAqIEhpZGVzIGhpbnQgYW5kIHZhbGlkYXRpb24gZXJyb3JzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVEZXRhaWxzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgaGF2ZSBwZXJzaXN0ZW50IGNsZWFyIGljb24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGVyc2lzdGVudENsZWFyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEljb24gYmVmb3JlIGlucHV0IHZhbHVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHByZWZpeEljb246IEljb25UeXBlID0gJyc7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgaWNvbiBiZWZvcmUgaW5wdXQgdmFsdWUsIG9mIHR5cGUgbnVtYmVyIG9yIHN0cmluZyBvciAnZmlsbCcgb3IgJ3hzbWFsbCcgb3IgJ3NtYWxsJyBvciAnbm9ybWFsJyBvciAnbGFyZ2UnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHByZWZpeEljb25TaXplOiBpY29uU2l6ZVR5cGUgPSAnMThweCc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBsb2FkaW5nIGJhciBpcyBkaXNwbGF5ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGVyZSBpcyBubyBkYXRhLiBEZWZhdWx0cyB0byAnTm8gcmVzdWx0cyBmb3VuZCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9ubHkgdGhlIGVsZW1lbnRzIHdpdGhpbiBzY3JvbGxhYmxlIGFyZWEgc2hvdWxkIGJlIGFkZGVkIGludG8gdGhlIERPTS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IG1hbnkgYWRkaXRpb25hbCBlbGVtZW50cyB0byBhZGQgdG8gdGhlIERPTSBvdXRzaWRlIG9mIHRoZSB2aWV3LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgLyoqXG4gICAqIFdoZW4gaXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZywgYW4gaW5mbyBpY29uIGlzIGRpc3BsYXllZCB0byBzaG93IHRleHQgZm9yIG1vcmUgaW5mby5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmZvIHRvb2x0aXAgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIGluZm9Ub29sdGlwIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbmZvVG9vbHRpcCBpcyBwZXJzaXN0ZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBpbmZvVG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQb3NpdGlvbjogQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCc7XG5cbiAgLyoqXG4gICAqIFN0eWxpbmcgYXBwZWFyYW5jZSBvZiBhdXRvY29tcGxldGUgaW5wdXQsIGl0IGNvdWxkIGJlICdvdXRsaW5lZCcsICd1bmRlcmxpbmVkJyBvciAnYm9yZGVybGVzcycuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYXBwZWFyYW5jZTogQ3BzQXV0b2NvbXBsZXRlQXBwZWFyYW5jZVR5cGUgPSAnb3V0bGluZWQnO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWU6IGFueSA9IHVuZGVmaW5lZDtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZhbHVlIGNoYW5nZS5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIHZhbHVlIGNoYW5nZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUJveCcpXG4gIGF1dG9jb21wbGV0ZUJveCE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29udGFpbmVyJylcbiAgYXV0b2NvbXBsZXRlQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd2aXJ0dWFsTGlzdCcpXG4gIHZpcnR1YWxMaXN0ITogVmlydHVhbFNjcm9sbGVyO1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNZW51JylcbiAgb3B0aW9uc01lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNMaXN0JylcbiAgb3B0aW9uc0xpc3QhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBlcnJvciA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuICBpc09wZW5lZCA9IGZhbHNlO1xuICBpbnB1dFRleHQgPSAnJztcbiAgZmlsdGVyZWRPcHRpb25zID0gW10gYXMgYW55W107XG4gIGJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gIGFjdGl2ZVNpbmdsZSA9IGZhbHNlO1xuICBvcHRpb25IaWdobGlnaHRlZEluZGV4ID0gLTE7XG5cbiAgdmlydHVhbExpc3RIZWlnaHQgPSAyNDA7XG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDQyO1xuXG4gIGF1dG9jb21wbGV0ZUJveFdpZHRoID0gMDtcbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgX2xhYmVsQnlWYWx1ZTogTGFiZWxCeVZhbHVlUGlwZVxuICApIHtcbiAgICBpZiAodGhpcy5fY29udHJvbCkge1xuICAgICAgdGhpcy5fY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoZW50cnk/LnRhcmdldClcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUJveFdpZHRoID0gKGVudHJ5LnRhcmdldCBhcyBhbnkpLm9mZnNldFdpZHRoO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLmN2dFdpZHRoID0gY29udmVydFNpemUodGhpcy53aWR0aCk7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIXRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLl9jb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gICAgICB9XG4gICAgKSBhcyBTdWJzY3JpcHRpb247XG5cbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYXV0b2NvbXBsZXRlQm94Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBzZWxlY3Qob3B0aW9uOiBhbnksIGJ5VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhhcnJheTogYW55W10sIHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyYXkgPyAhIWZpbmQoYXJyYXksIChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIHZhbCkpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuICAgIGNvbnN0IHZhbCA9IGJ5VmFsdWVcbiAgICAgID8gb3B0aW9uXG4gICAgICA6IHRoaXMucmV0dXJuT2JqZWN0XG4gICAgICA/IG9wdGlvblxuICAgICAgOiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV07XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XG4gICAgICBpZiAoaW5jbHVkZXModGhpcy52YWx1ZSwgdmFsKSkge1xuICAgICAgICByZXMgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiAhaXNFcXVhbCh2LCB2YWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3YgPSB0aGlzLnJldHVybk9iamVjdCA/IG8gOiBvW3RoaXMub3B0aW9uVmFsdWVdO1xuICAgICAgICAgIGlmICh0aGlzLnZhbHVlLnNvbWUoKHY6IGFueSkgPT4gaXNFcXVhbCh2LCBvdikpIHx8IGlzRXF1YWwodmFsLCBvdikpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG92KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShyZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgfVxuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgb25PcHRpb25DbGljayhvcHRpb246IGFueSkge1xuICAgIHRoaXMuX2NsaWNrT3B0aW9uKG9wdGlvbik7XG4gIH1cblxuICB0b2dnbGVBbGwoKSB7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnJldHVybk9iamVjdCkge1xuICAgICAgICByZXMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgIHJlcy5wdXNoKG9bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZShyZXMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBmaWx0ZXJPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gICAgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IGZhbHNlO1xuICAgIGNvbnN0IHNlYXJjaFZhbCA9IChldmVudD8udGFyZ2V0Py52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigobzogYW55KSA9PlxuICAgICAgb1t0aGlzLm9wdGlvbkxhYmVsXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbClcbiAgICApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBjbGVhcihldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIXRoaXMubXVsdGlwbGUgJiYgdGhpcy52YWx1ZSkgfHxcbiAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMudmFsdWU/Lmxlbmd0aCA+IDApXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5vcGVuT25DbGVhcikge1xuICAgICAgICB0aGlzLl90b2dnbGVPcHRpb25zKHRydWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogdGhpcy5yZXR1cm5PYmplY3QgPyB1bmRlZmluZWQgOiAnJztcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gICAgdGhpcy5fY2xlYXJJbnB1dCgpO1xuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fY29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBvbkJlZm9yZU9wdGlvbnNIaWRkZW4oKSB7XG4gICAgdGhpcy5fY2xvc2VBbmRDbGVhcigpO1xuICB9XG5cbiAgb25Cb3hDbGljaygpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2luZ2xlID0gdHJ1ZTtcbiAgICAgIGlmICghdGhpcy5pbnB1dFRleHQpIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fZ2V0VmFsdWVMYWJlbCgpO1xuICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICB9XG4gICAgdGhpcy5mb2N1cygpO1xuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gIH1cblxuICBvbkNvbnRhaW5lcktleURvd24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIC8vIGVzY2FwZVxuICAgIGlmIChjb2RlID09PSAyNykge1xuICAgICAgdGhpcy5fY2xvc2VBbmRDbGVhcigpO1xuICAgIH1cbiAgICAvLyBlbnRlclxuICAgIGVsc2UgaWYgKGNvZGUgPT09IDEzKSB7XG4gICAgICBsZXQgaWR4ID0gdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4O1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm11bHRpcGxlICYmXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsICYmXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy52aXJ0dWFsU2Nyb2xsXG4gICAgICApIHtcbiAgICAgICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQWxsKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWR4LS07XG4gICAgICB9XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpZHhdO1xuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aClcbiAgICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24oKTtcbiAgICAgIHRoaXMuX2NsaWNrT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuICAgIC8vIHZlcnRpY2FsIGFycm93c1xuICAgIGVsc2UgaWYgKFszOCwgNDBdLmluY2x1ZGVzKGNvZGUpKSB7XG4gICAgICAvLyBBcnJvd3MgbmF2aWdhdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCB2aXJ0dWFsIHNjcm9sbFxuICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHRoaXMuX25hdmlnYXRlT3B0aW9uc0J5QXJyb3dzKGNvZGUgPT09IDM4KTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0S2V5RG93bihldmVudDogYW55KSB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgLy8gYmFja3NwYWNlXG4gICAgaWYgKGNvZGUgPT09IDgpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUxhc3RWYWx1ZSgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIC8vIGVudGVyXG4gICAgZWxzZSBpZiAoY29kZSA9PT0gMTMpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpcm1JbnB1dChldmVudD8udGFyZ2V0Py52YWx1ZSB8fCAnJyk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoWzM4LCA0MF0uaW5jbHVkZXMoY29kZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGV2cm9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQW5kQ2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkJveENsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignaW5wdXQnKT8uZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gIH1cblxuICByZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW4gPSB0aGlzLmZpbHRlcmVkT3B0aW9ucz8ubGVuZ3RoIHx8IDA7XG4gICAgdGhpcy52aXJ0dWFsTGlzdEhlaWdodCA9IE1hdGgubWluKFxuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgKiBjdXJyZW50TGVuLFxuICAgICAgMjQwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wdGlvbnMoc2hvdz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3BlbmVkID09PSBzaG93KSByZXR1cm47XG5cbiAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBzaG93ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMub3B0aW9uc01lbnUuc2hvdyh7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLmF1dG9jb21wbGV0ZUJveC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUudG9nZ2xlKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmF1dG9jb21wbGV0ZUJveC5uYXRpdmVFbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbmVkID0gdGhpcy5vcHRpb25zTWVudS5pc1Zpc2libGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuZWQgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgIHRoaXMub3B0aW9uc0xpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgc2VsZWN0ZWQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICdpbnN0YW50JyxcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBsZXQgdjogYW55O1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHYgPSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB2ID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IGlzRXF1YWwobywgdikpO1xuICAgICAgICAgIGlmIChpZHggPj0gMCkgdGhpcy52aXJ0dWFsTGlzdC5zY3JvbGxUb0luZGV4KGlkeCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrT3B0aW9uKG9wdGlvbjogYW55KSB7XG4gICAgdGhpcy5zZWxlY3Qob3B0aW9uLCBmYWxzZSk7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLl9jb250cm9sPy5lcnJvcnM7XG5cbiAgICBpZiAoIXRoaXMuX2NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgIWVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncmVxdWlyZWQnIGluIGVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICdGaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyQXJyID0gT2JqZWN0LnZhbHVlcyhlcnJvcnMpO1xuICAgIGlmIChlcnJBcnIubGVuZ3RoIDwgMSkge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gZXJyQXJyLmZpbmQoKG1zZykgPT4gdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpO1xuXG4gICAgdGhpcy5lcnJvciA9IG1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFZhbHVlTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVcbiAgICAgID8gdGhpcy5yZXR1cm5PYmplY3RcbiAgICAgICAgPyB0aGlzLnZhbHVlW3RoaXMub3B0aW9uTGFiZWxdXG4gICAgICAgIDogdGhpcy5fbGFiZWxCeVZhbHVlLnRyYW5zZm9ybShcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLm9wdGlvblZhbHVlLFxuICAgICAgICAgICAgdGhpcy5vcHRpb25MYWJlbFxuICAgICAgICAgIClcbiAgICAgIDogJyc7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhcklucHV0KCkge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgdGhpcy5hY3RpdmVTaW5nbGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZUFuZENsZWFyKCkge1xuICAgIHRoaXMuX2NsZWFySW5wdXQoKTtcbiAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SFRNTE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnNMaXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICcuY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbidcbiAgICApIHx8IFtdKSBhcyBhbnk7XG4gIH1cblxuICBwcml2YXRlIF9kZWhpZ2hsaWdodE9wdGlvbihlbD86IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKGVsKSBlbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHRlbicpO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA8IDApIHJldHVybjtcbiAgICAgIGNvbnN0IG9wdGlvbkl0ZW1zID0gdGhpcy5fZ2V0SFRNTE9wdGlvbnMoKTtcbiAgICAgIG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0uY2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0ZW4nKTtcbiAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbihlbDogSFRNTEVsZW1lbnQpIHtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlbicpO1xuICAgIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChlbFJlY3QudG9wIDwgcGFyZW50UmVjdC50b3AgfHwgZWxSZWN0LmJvdHRvbSA+IHBhcmVudFJlY3QuYm90dG9tKSB7XG4gICAgICBlbC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX25hdmlnYXRlT3B0aW9uc0J5QXJyb3dzKHVwOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKSByZXR1cm47XG5cbiAgICBjb25zdCBvcHRpb25JdGVtcyA9IHRoaXMuX2dldEhUTUxPcHRpb25zKCk7XG4gICAgY29uc3QgbGVuID0gb3B0aW9uSXRlbXMubGVuZ3RoO1xuICAgIGlmIChsZW4gPCAxKSByZXR1cm47XG5cbiAgICBpZiAobGVuID09PSAxKSB7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPSAwO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zWzBdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXApIHtcbiAgICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ID1cbiAgICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4IDwgMVxuICAgICAgICAgID8gbGVuIC0gMVxuICAgICAgICAgIDogdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4IC0gMTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XSk7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPSBbLTEsIGxlbiAtIDFdLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhcbiAgICAgIClcbiAgICAgICAgPyAwXG4gICAgICAgIDogdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ICsgMTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25maXJtSW5wdXQoc2VhcmNoVmFsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcbiAgICBzZWFyY2hWYWwgPSBzZWFyY2hWYWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXNlYXJjaFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHJldHVybjtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMucmV0dXJuT2JqZWN0ID8gdW5kZWZpbmVkIDogJyc7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgICB0aGlzLl9jbG9zZUFuZENsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kKFxuICAgICAgKG86IGFueSkgPT4gb1t0aGlzLm9wdGlvbkxhYmVsXS50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2hWYWxcbiAgICApO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgdGhpcy5zZWxlY3QoZm91bmQsIGZhbHNlKTtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModGhpcy5tdWx0aXBsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuX2dldFZhbHVlTGFiZWwoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVMYXN0VmFsdWUoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuaW5wdXRUZXh0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgIHRoaXMudmFsdWUuZmlsdGVyKFxuICAgICAgICAgICAgKHY6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggIT09IHRoaXMudmFsdWUubGVuZ3RoIC0gMVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmJhY2tzcGFjZUNsaWNrZWRPbmNlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgdGhpcy5iYWNrc3BhY2VDbGlja2VkT25jZSA9IHRydWU7XG4gICAgfSBlbHNlIHRoaXMuYmFja3NwYWNlQ2xpY2tlZE9uY2UgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS1jeS1pZD1cImNwcy1hdXRvY29tcGxldGVcIlxuICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjdnRXaWR0aCB9XCJcbiAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlXCJcbiAgdGFiaW5kZXg9XCIxXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZWQsIGVycm9yOiBlcnJvciwgYWN0aXZlOiBpc09wZW5lZCB9XCJcbiAgI2F1dG9jb21wbGV0ZUNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtbGFiZWxcIiAqbmdJZj1cImxhYmVsXCI+XG4gICAgPGxhYmVsPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8Y3BzLWluZm8tY2lyY2xlXG4gICAgICAqbmdJZj1cImluZm9Ub29sdGlwXCJcbiAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1sYWJlbC1pbmZvLWNpcmNsZVwiXG4gICAgICBzaXplPVwieHNtYWxsXCJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiaW5mb1Rvb2x0aXBQb3NpdGlvblwiXG4gICAgICBbdG9vbHRpcENvbnRlbnRDbGFzc109XCJpbmZvVG9vbHRpcENsYXNzXCJcbiAgICAgIFt0b29sdGlwTWF4V2lkdGhdPVwiaW5mb1Rvb2x0aXBNYXhXaWR0aFwiXG4gICAgICBbdG9vbHRpcFBlcnNpc3RlbnRdPVwiaW5mb1Rvb2x0aXBQZXJzaXN0ZW50XCJcbiAgICAgIFt0b29sdGlwVGV4dF09XCJpbmZvVG9vbHRpcFwiPlxuICAgIDwvY3BzLWluZm8tY2lyY2xlPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIChrZXlkb3duKT1cIm9uQ29udGFpbmVyS2V5RG93bigkZXZlbnQpXCJcbiAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJpc09wZW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BlcnNpc3RlbnQtY2xlYXInOiBwZXJzaXN0ZW50Q2xlYXIsXG4gICAgICBib3JkZXJsZXNzOiBhcHBlYXJhbmNlID09PSAnYm9yZGVybGVzcycsXG4gICAgICB1bmRlcmxpbmVkOiBhcHBlYXJhbmNlID09PSAndW5kZXJsaW5lZCdcbiAgICB9XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveFwiXG4gICAgICAjYXV0b2NvbXBsZXRlQm94XG4gICAgICAobW91c2Vkb3duKT1cIm9uQm94Q2xpY2soKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtYm94LWFyZWFcIj5cbiAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbaWNvbl09XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGlzYWJsZWQgPyAnIzlhOTU5NScgOiBudWxsXCJcbiAgICAgICAgICBbc2l6ZV09XCJwcmVmaXhJY29uU2l6ZVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmVmaXgtaWNvblwiPlxuICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1pdGVtc1wiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh2YWx1ZSAmJiAhbXVsdGlwbGUpIHx8ICh2YWx1ZT8ubGVuZ3RoID4gMCAmJiBtdWx0aXBsZSk7XG4gICAgICAgICAgICBlbHNlIGF1dG9jb21wbGV0ZUlucHV0XG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbXVsdGlwbGVcIiBjbGFzcz1cInNpbmdsZS1pdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWl0ZW0tc2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5vcGFjaXR5XT1cImFjdGl2ZVNpbmdsZSA/IDAgOiAxXCI+e3tcbiAgICAgICAgICAgICAgICByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgICAgID8gdmFsdWVbb3B0aW9uTGFiZWxdXG4gICAgICAgICAgICAgICAgICA6ICh2YWx1ZSB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZUlucHV0O1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGlucHV0Q2xhc3M6ICdzaW5nbGUtaXRlbS1pbnB1dCcsXG4gICAgICAgICAgICAgICAgICBpbnB1dFN0eWxlOiBhY3RpdmVTaW5nbGUgPyAnb3BhY2l0eTogMScgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZSAmJiAhY2hpcHNcIiBjbGFzcz1cInRleHQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbCBvZiB2YWx1ZTsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdyb3VwLWl0ZW1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhYm91dC10by1yZW1vdmUnOiBsYXN0ICYmIGJhY2tzcGFjZUNsaWNrZWRPbmNlIH1cIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgICAgID8gdmFsW29wdGlvbkxhYmVsXVxuICAgICAgICAgICAgICAgICAgOiAodmFsIHwgbGFiZWxCeVZhbHVlIDogb3B0aW9ucyA6IG9wdGlvblZhbHVlIDogb3B0aW9uTGFiZWwpXG4gICAgICAgICAgICAgIH19e3sgIWxhc3QgPyAnLCcgOiAnJyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ211bHRpLWl0ZW0taW5wdXQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZSAmJiBjaGlwc1wiIGNsYXNzPVwiY2hpcHMtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxjcHMtY2hpcFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsIG9mIHZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xvc2FibGVdPVwiY2xvc2FibGVDaGlwc1wiXG4gICAgICAgICAgICAgIChjbG9zZWQpPVwic2VsZWN0KHZhbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhYm91dC10by1yZW1vdmUnOiBsYXN0ICYmIGJhY2tzcGFjZUNsaWNrZWRPbmNlIH1cIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0XG4gICAgICAgICAgICAgICAgICA/IHZhbFtvcHRpb25MYWJlbF1cbiAgICAgICAgICAgICAgICAgIDogKHZhbCB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvY3BzLWNoaXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlSW5wdXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaW5wdXRDbGFzczogJ211bHRpLWNoaXAtaW5wdXQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1ib3gtaWNvbnNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIlxuICAgICAgICAgICAgICBwZXJzaXN0ZW50Q2xlYXIgfHxcbiAgICAgICAgICAgICAgKCFwZXJzaXN0ZW50Q2xlYXIgJiZcbiAgICAgICAgICAgICAgICAoKG11bHRpcGxlICYmIHZhbHVlPy5sZW5ndGgpIHx8ICghbXVsdGlwbGUgJiYgdmFsdWUpKSlcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtYm94LWNsZWFyLWljb25cIj5cbiAgICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIj48L2Nwcy1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1jaGV2cm9uXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25DaGV2cm9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiZGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAndGV4dC1kYXJrJ1wiPjwvY3BzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxjcHMtbWVudVxuICAgICAgI29wdGlvbnNNZW51XG4gICAgICBbd2l0aEFycm93XT1cImZhbHNlXCJcbiAgICAgIChiZWZvcmVNZW51SGlkZGVuKT1cIm9uQmVmb3JlT3B0aW9uc0hpZGRlbigpXCJcbiAgICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucz1cIjBzIGxpbmVhclwiXG4gICAgICBjb250YWluZXJDbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1tZW51XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICNvcHRpb25zTGlzdFxuICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9uc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICB3aWR0aDogYXV0b2NvbXBsZXRlQm94V2lkdGggKyAncHgnXG4gICAgICAgIH1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA8IDFcIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLWVtcHR5XCI+XG4gICAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1vcHRpb24gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLmFsbHNlbGVjdGVkXT1cInZhbHVlPy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG11bHRpcGxlICYmXG4gICAgICAgICAgICAgIHNlbGVjdEFsbCAmJlxuICAgICAgICAgICAgICBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSBvcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgICBvcHRpb25zLmxlbmd0aCA+IDFcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uLWNoZWNrXCI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uLWxhYmVsXCJcbiAgICAgICAgICAgICAgICA+U2VsZWN0IGFsbDwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgIDxwLXZpcnR1YWxTY3JvbGxlclxuICAgICAgICAgICAgI3ZpcnR1YWxMaXN0XG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgIFtkZWxheV09XCIwXCJcbiAgICAgICAgICAgIFtzY3JvbGxIZWlnaHRdPVwidmlydHVhbExpc3RIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInsgbnVtVG9sZXJhdGVkSXRlbXM6IG51bVRvbGVyYXRlZEl0ZW1zIH1cIlxuICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9wLXZpcnR1YWxTY3JvbGxlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nwcy1tZW51PlxuICAgIDxjcHMtcHJvZ3Jlc3MtbGluZWFyXG4gICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgaGVpZ2h0PVwiM1wiXG4gICAgICByYWRpdXM9XCI0XCJcbiAgICAgIG9wYWNpdHk9XCIwLjNcIlxuICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtcHJvZ3Jlc3MtYmFyXCJcbiAgICAgIGJnQ29sb3I9XCJ0cmFuc3BhcmVudFwiPlxuICAgIDwvY3BzLXByb2dyZXNzLWxpbmVhcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWVycm9yXCI+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICNhdXRvY29tcGxldGVJbnB1dFxuICBsZXQtaW5wdXRDbGFzcz1cImlucHV0Q2xhc3NcIlxuICBsZXQtaW5wdXRTdHlsZT1cImlucHV0U3R5bGVcIj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLWJveC1pbnB1dFwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgW3N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICghdmFsdWUgJiYgIW11bHRpcGxlKSB8fCAodmFsdWU/Lmxlbmd0aCA8IDEgJiYgbXVsdGlwbGUpXG4gICAgICAgID8gcGxhY2Vob2xkZXJcbiAgICAgICAgOiAnJ1xuICAgIFwiXG4gICAgKGlucHV0KT1cImZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25JbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtYXV0b2NvbXBsZXRlLW9wdGlvbnMtb3B0aW9uXCJcbiAgICAoY2xpY2spPVwib25PcHRpb25DbGljayhpdGVtKVwiXG4gICAgW2NsYXNzLnNlbGVjdGVkXT1cIlxuICAgICAgaXRlbSB8IGNoZWNrT3B0aW9uU2VsZWN0ZWQgOiB2YWx1ZSA6IG11bHRpcGxlIDogcmV0dXJuT2JqZWN0IDogb3B0aW9uVmFsdWVcbiAgICBcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9ucy1vcHRpb24tbGVmdFwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aXBsZVwiIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1jaGVja1wiPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS1jeS1pZD1cImNwcy1hdXRvY29tcGxldGUtb3B0aW9uc1wiXG4gICAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1sYWJlbFwiXG4gICAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgPnt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY3BzLWF1dG9jb21wbGV0ZS1vcHRpb25zLW9wdGlvbi1yaWdodFwiXG4gICAgICBbY2xhc3MudmlydHVhbC1yb3ddPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICA+e3sgaXRlbVtvcHRpb25JbmZvXSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -6,19 +6,72 @@ import { CpsProgressCircularComponent } from '../cps-progress-circular/cps-progr
|
|
|
6
6
|
import { convertSize, parseSize } from '../../utils/internal/size-utils';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common";
|
|
9
|
+
/**
|
|
10
|
+
* CpsButtonComponent is a button element.
|
|
11
|
+
* @group Components
|
|
12
|
+
*/
|
|
9
13
|
export class CpsButtonComponent {
|
|
10
14
|
constructor() {
|
|
15
|
+
/**
|
|
16
|
+
* Color of the button.
|
|
17
|
+
* @group Props
|
|
18
|
+
*/
|
|
11
19
|
this.color = 'calm';
|
|
12
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Color of content on the button. Works only with 'solid' type.
|
|
22
|
+
* @group Props
|
|
23
|
+
*/
|
|
24
|
+
this.contentColor = 'white';
|
|
25
|
+
/**
|
|
26
|
+
* Type of the button in terms of appearance, it can be 'solid' or 'outlined' or 'borderless'.
|
|
27
|
+
* @group Props
|
|
28
|
+
*/
|
|
13
29
|
this.type = 'solid';
|
|
30
|
+
/**
|
|
31
|
+
* Label or text on the button.
|
|
32
|
+
* @group Props
|
|
33
|
+
*/
|
|
14
34
|
this.label = '';
|
|
35
|
+
/**
|
|
36
|
+
* Name of the icon on the button.
|
|
37
|
+
* @group Props
|
|
38
|
+
*/
|
|
15
39
|
this.icon = '';
|
|
40
|
+
/**
|
|
41
|
+
* Position of the icon on the button, it can be 'before' or 'after'.
|
|
42
|
+
* @group Props
|
|
43
|
+
*/
|
|
16
44
|
this.iconPosition = 'before';
|
|
45
|
+
/**
|
|
46
|
+
* Size on the button, it can be 'xsmall', 'small', 'normal' or 'large'.
|
|
47
|
+
* @group Props
|
|
48
|
+
*/
|
|
17
49
|
this.size = 'normal';
|
|
50
|
+
/**
|
|
51
|
+
* Width on the button, of type number denoting pixels or string.
|
|
52
|
+
* @group Props
|
|
53
|
+
*/
|
|
18
54
|
this.width = 0;
|
|
55
|
+
/**
|
|
56
|
+
* Height on the button, of type number denoting pixels or string.
|
|
57
|
+
* @group Props
|
|
58
|
+
*/
|
|
19
59
|
this.height = 0;
|
|
60
|
+
/**
|
|
61
|
+
* When present, it specifies that the component should be disabled.
|
|
62
|
+
* @group Props
|
|
63
|
+
*/
|
|
20
64
|
this.disabled = false;
|
|
65
|
+
/**
|
|
66
|
+
* When enabled, a cps-progress-circular bar is displayed.
|
|
67
|
+
* @group Props
|
|
68
|
+
*/
|
|
21
69
|
this.loading = false;
|
|
70
|
+
/**
|
|
71
|
+
* Callback to execute when button is clicked.
|
|
72
|
+
* @param {any} any - button clicked.
|
|
73
|
+
* @group Emits
|
|
74
|
+
*/
|
|
22
75
|
this.clicked = new EventEmitter();
|
|
23
76
|
this.buttonColor = '';
|
|
24
77
|
this.textColor = '';
|
|
@@ -134,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
134
187
|
type: HostBinding,
|
|
135
188
|
args: ['style.width']
|
|
136
189
|
}] } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtYnV0dG9uL2Nwcy1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWJ1dHRvbi9jcHMtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBU3pFLE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRVyxVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsaUJBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyw2QkFBNkI7UUFDckQsU0FBSSxHQUF3QyxPQUFPLENBQUM7UUFDcEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFNBQUksR0FBYSxFQUFFLENBQUM7UUFDcEIsaUJBQVksR0FBdUIsUUFBUSxDQUFDO1FBQzVDLFNBQUksR0FBNEMsUUFBUSxDQUFDO1FBQ3pELFVBQUssR0FBb0IsQ0FBQyxDQUFDO1FBQzNCLFdBQU0sR0FBb0IsQ0FBQyxDQUFDO1FBQzVCLGFBQVEsR0FBRyxLQUFLLENB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YixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQU1QLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0Q1NTQ29sb3IgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcnMtdXRpbHMnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCwgSWNvblR5cGUgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzUHJvZ3Jlc3NDaXJjdWxhckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1wcm9ncmVzcy1jaXJjdWxhci9jcHMtcHJvZ3Jlc3MtY2lyY3VsYXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbnZlcnRTaXplLCBwYXJzZVNpemUgfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENwc0ljb25Db21wb25lbnQsIENwc1Byb2dyZXNzQ2lyY3VsYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2Nwcy1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy1idXR0b24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb2xvciA9ICdjYWxtJztcbiAgQElucHV0KCkgY29udGVudENvbG9yID0gJ3doaXRlJzsgLy8gd29ya3Mgb25seSB3aXRoIHNvbGlkIHR5cGVcbiAgQElucHV0KCkgdHlwZTogJ3NvbGlkJyB8ICdvdXRsaW5lZCcgfCAnYm9yZGVybGVzcycgPSAnc29saWQnO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBpY29uOiBJY29uVHlwZSA9ICcnO1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdiZWZvcmUnO1xuICBASW5wdXQoKSBzaXplOiAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZScgPSAnbm9ybWFsJztcbiAgQElucHV0KCkgd2lkdGg6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIEBJbnB1dCgpIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGJ1dHRvbkNvbG9yID0gJyc7XG4gIHRleHRDb2xvciA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxuICBjdnRXaWR0aCA9ICcnO1xuXG4gIGN2dEhlaWdodCA9ICcnO1xuICBjdnRGb250U2l6ZSA9ICcnO1xuICBjdnRJY29uU2l6ZSA9ICcnO1xuXG4gIGNsYXNzZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnV0dG9uQ29sb3IgPSBnZXRDU1NDb2xvcih0aGlzLmNvbG9yKTtcbiAgICB0aGlzLnRleHRDb2xvciA9XG4gICAgICB0aGlzLnR5cGUgPT09ICdzb2xpZCcgPyBnZXRDU1NDb2xvcih0aGlzLmNvbnRlbnRDb2xvcikgOiB0aGlzLmJ1dHRvbkNvbG9yO1xuICAgIHRoaXMuc2V0Q2xhc3NlcygpO1xuICB9XG5cbiAgc2V0Q2xhc3NlcygpIHtcbiAgICB0aGlzLmNsYXNzZXNMaXN0ID0gWydjcHMtYnV0dG9uJ107XG5cbiAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5jdnRIZWlnaHQgPSBjb252ZXJ0U2l6ZSh0aGlzLmhlaWdodCk7XG4gICAgICBpZiAodGhpcy5jdnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkSGVpZ2h0ID0gcGFyc2VTaXplKHRoaXMuY3Z0SGVpZ2h0KTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHBhcnNlZEhlaWdodC51bml0O1xuICAgICAgICBjb25zdCBzaXplID0gcGFyc2VkSGVpZ2h0LnZhbHVlICogMC40O1xuICAgICAgICBjb25zdCBpc1B4ID0gdW5pdCA9PT0gJ3B4JztcblxuICAgICAgICB0aGlzLmN2dEZvbnRTaXplID0gYCR7aXNQeCA/IE1hdGguZmxvb3Ioc2l6ZSkgOiBzaXplfSR7dW5pdH1gO1xuICAgICAgICB0aGlzLmN2dEljb25TaXplID0gYCR7aXNQeCA/IE1hdGguY2VpbChzaXplKSA6IHNpemV9JHt1bml0fWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICAgIGNhc2UgJ25vcm1hbCc6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLW5vcm1hbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2xhcmdlJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tbGFyZ2UnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzbWFsbCc6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLXNtYWxsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAneHNtYWxsJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0teHNtYWxsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSAnc29saWQnOiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tc29saWQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdvdXRsaW5lZCc6IHtcbiAgICAgICAgdGhpcy5jbGFzc2VzTGlzdC5wdXNoKCdjcHMtYnV0dG9uLS1vdXRsaW5lZCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2JvcmRlcmxlc3MnOiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tYm9yZGVybGVzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pY29uICYmIHRoaXMubGFiZWwpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgY2FzZSAnYmVmb3JlJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0taWNvbi1iZWZvcmUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhZnRlcic6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLWljb24tYWZ0ZXInKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3Nlc0xpc3RcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2FkaW5nXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgJ2JhY2tncm91bmQtY29sb3InOiB0eXBlPT09J3NvbGlkJyA/IGJ1dHRvbkNvbG9yIDogJ3RyYW5zcGFyZW50JyxcbiAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgIGhlaWdodDogY3Z0SGVpZ2h0IHx8ICdub25lJyxcbiAgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtYnV0dG9uX19zcGlubmVyXCI+XG4gICAgICA8Y3BzLXByb2dyZXNzLWNpcmN1bGFyXG4gICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgIGNvbG9yPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgW2RpYW1ldGVyXT1cImN2dEljb25TaXplXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCI+XG4gICAgICA8L2Nwcy1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNwcy1idXR0b25fX2NvbnRlbnRcIlxuICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICdoaWRkZW4nIDogbnVsbFwiPlxuICAgICAgPGNwcy1pY29uXG4gICAgICAgICpuZ0lmPVwiaWNvblwiXG4gICAgICAgIGNsYXNzPVwiY3BzLWJ1dHRvbl9faWNvblwiXG4gICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICBbY29sb3JdPVwiZGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiB0ZXh0Q29sb3JcIlxuICAgICAgICBbc2l6ZV09XCJjdnRJY29uU2l6ZVwiPlxuICAgICAgPC9jcHMtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiY3BzLWJ1dHRvbl9fdGV4dFwiXG4gICAgICAgICpuZ0lmPVwibGFiZWxcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7ICdmb250LXNpemUnOiBjdnRGb250U2l6ZSB8fCBudWxsIH1cIlxuICAgICAgICA+e3sgbGFiZWwgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtYnV0dG9uL2Nwcy1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWJ1dHRvbi9jcHMtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBRXpFOzs7R0FHRztBQVFILE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRRTs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsTUFBTSxDQUFDO1FBRXhCOzs7V0FHRztRQUNNLGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBRWhDOzs7V0FHRztRQUNNLFNBQUksR0FBd0MsT0FBTyxDQUFDO1FBRTdEOzs7V0FHRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFcEI7OztXQUdHO1FBQ00sU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUU3Qjs7O1dBR0c7UUFDTSxpQkFBWSxHQUF1QixRQUFRLENBQUM7UUFFckQ7OztXQUdHO1FBQ00sU0FBSSxHQUE0QyxR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QkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0ksT0FBTztzQkFBaEIsTUFBTTtnQkFNUCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldENTU0NvbG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLXV0aWxzJztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQsIEljb25UeXBlIH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc1Byb2dyZXNzQ2lyY3VsYXJDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtcHJvZ3Jlc3MtY2lyY3VsYXIvY3BzLXByb2dyZXNzLWNpcmN1bGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSwgcGFyc2VTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5cbi8qKlxuICogQ3BzQnV0dG9uQ29tcG9uZW50IGlzIGEgYnV0dG9uIGVsZW1lbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ3BzSWNvbkNvbXBvbmVudCwgQ3BzUHJvZ3Jlc3NDaXJjdWxhckNvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnY3BzLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yID0gJ2NhbG0nO1xuXG4gIC8qKlxuICAgKiBDb2xvciBvZiBjb250ZW50IG9uIHRoZSBidXR0b24uIFdvcmtzIG9ubHkgd2l0aCAnc29saWQnIHR5cGUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29udGVudENvbG9yID0gJ3doaXRlJztcblxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgYnV0dG9uIGluIHRlcm1zIG9mIGFwcGVhcmFuY2UsIGl0IGNhbiBiZSAnc29saWQnIG9yICdvdXRsaW5lZCcgb3IgJ2JvcmRlcmxlc3MnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6ICdzb2xpZCcgfCAnb3V0bGluZWQnIHwgJ2JvcmRlcmxlc3MnID0gJ3NvbGlkJztcblxuICAvKipcbiAgICogTGFiZWwgb3IgdGV4dCBvbiB0aGUgYnV0dG9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGljb24gb24gdGhlIGJ1dHRvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBJY29uVHlwZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgaWNvbiBvbiB0aGUgYnV0dG9uLCBpdCBjYW4gYmUgJ2JlZm9yZScgb3IgJ2FmdGVyJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdiZWZvcmUnO1xuXG4gIC8qKlxuICAgKiBTaXplIG9uIHRoZSBidXR0b24sIGl0IGNhbiBiZSAneHNtYWxsJywgJ3NtYWxsJywgJ25vcm1hbCcgb3IgJ2xhcmdlJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZScgPSAnbm9ybWFsJztcblxuICAvKipcbiAgICogV2lkdGggb24gdGhlIGJ1dHRvbiwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyIHwgc3RyaW5nID0gMDtcblxuICAvKipcbiAgICogSGVpZ2h0IG9uIHRoZSBidXR0b24sIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuXG4gIC8qKlxuICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBjcHMtcHJvZ3Jlc3MtY2lyY3VsYXIgYmFyIGlzIGRpc3BsYXllZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIGJ1dHRvbiBjbGlja2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGJ1dHRvbkNvbG9yID0gJyc7XG4gIHRleHRDb2xvciA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxuICBjdnRXaWR0aCA9ICcnO1xuXG4gIGN2dEhlaWdodCA9ICcnO1xuICBjdnRGb250U2l6ZSA9ICcnO1xuICBjdnRJY29uU2l6ZSA9ICcnO1xuXG4gIGNsYXNzZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnV0dG9uQ29sb3IgPSBnZXRDU1NDb2xvcih0aGlzLmNvbG9yKTtcbiAgICB0aGlzLnRleHRDb2xvciA9XG4gICAgICB0aGlzLnR5cGUgPT09ICdzb2xpZCcgPyBnZXRDU1NDb2xvcih0aGlzLmNvbnRlbnRDb2xvcikgOiB0aGlzLmJ1dHRvbkNvbG9yO1xuICAgIHRoaXMuc2V0Q2xhc3NlcygpO1xuICB9XG5cbiAgc2V0Q2xhc3NlcygpIHtcbiAgICB0aGlzLmNsYXNzZXNMaXN0ID0gWydjcHMtYnV0dG9uJ107XG5cbiAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5jdnRIZWlnaHQgPSBjb252ZXJ0U2l6ZSh0aGlzLmhlaWdodCk7XG4gICAgICBpZiAodGhpcy5jdnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkSGVpZ2h0ID0gcGFyc2VTaXplKHRoaXMuY3Z0SGVpZ2h0KTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHBhcnNlZEhlaWdodC51bml0O1xuICAgICAgICBjb25zdCBzaXplID0gcGFyc2VkSGVpZ2h0LnZhbHVlICogMC40O1xuICAgICAgICBjb25zdCBpc1B4ID0gdW5pdCA9PT0gJ3B4JztcblxuICAgICAgICB0aGlzLmN2dEZvbnRTaXplID0gYCR7aXNQeCA/IE1hdGguZmxvb3Ioc2l6ZSkgOiBzaXplfSR7dW5pdH1gO1xuICAgICAgICB0aGlzLmN2dEljb25TaXplID0gYCR7aXNQeCA/IE1hdGguY2VpbChzaXplKSA6IHNpemV9JHt1bml0fWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICAgIGNhc2UgJ25vcm1hbCc6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLW5vcm1hbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2xhcmdlJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tbGFyZ2UnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzbWFsbCc6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLXNtYWxsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAneHNtYWxsJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0teHNtYWxsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSAnc29saWQnOiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tc29saWQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdvdXRsaW5lZCc6IHtcbiAgICAgICAgdGhpcy5jbGFzc2VzTGlzdC5wdXNoKCdjcHMtYnV0dG9uLS1vdXRsaW5lZCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2JvcmRlcmxlc3MnOiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0tYm9yZGVybGVzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pY29uICYmIHRoaXMubGFiZWwpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgY2FzZSAnYmVmb3JlJzoge1xuICAgICAgICAgIHRoaXMuY2xhc3Nlc0xpc3QucHVzaCgnY3BzLWJ1dHRvbi0taWNvbi1iZWZvcmUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhZnRlcic6IHtcbiAgICAgICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy1idXR0b24tLWljb24tYWZ0ZXInKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3Nlc0xpc3RcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2FkaW5nXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgJ2JhY2tncm91bmQtY29sb3InOiB0eXBlPT09J3NvbGlkJyA/IGJ1dHRvbkNvbG9yIDogJ3RyYW5zcGFyZW50JyxcbiAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgIGhlaWdodDogY3Z0SGVpZ2h0IHx8ICdub25lJyxcbiAgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtYnV0dG9uX19zcGlubmVyXCI+XG4gICAgICA8Y3BzLXByb2dyZXNzLWNpcmN1bGFyXG4gICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgIGNvbG9yPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgW2RpYW1ldGVyXT1cImN2dEljb25TaXplXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCI+XG4gICAgICA8L2Nwcy1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNwcy1idXR0b25fX2NvbnRlbnRcIlxuICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICdoaWRkZW4nIDogbnVsbFwiPlxuICAgICAgPGNwcy1pY29uXG4gICAgICAgICpuZ0lmPVwiaWNvblwiXG4gICAgICAgIGNsYXNzPVwiY3BzLWJ1dHRvbl9faWNvblwiXG4gICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICBbY29sb3JdPVwiZGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiB0ZXh0Q29sb3JcIlxuICAgICAgICBbc2l6ZV09XCJjdnRJY29uU2l6ZVwiPlxuICAgICAgPC9jcHMtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiY3BzLWJ1dHRvbl9fdGV4dFwiXG4gICAgICAgICpuZ0lmPVwibGFiZWxcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7ICdmb250LXNpemUnOiBjdnRGb250U2l6ZSB8fCBudWxsIH1cIlxuICAgICAgICA+e3sgbGFiZWwgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|