@trimble-oss/moduswebcomponents-angular 1.11.0-ng17 → 1.11.0-ng18

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.
@@ -5,14 +5,16 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angul
5
5
  import { ProxyCmp } from './angular-component-lib/utils';
6
6
  import * as i0 from "@angular/core";
7
7
  let ModusWcAccordion = class ModusWcAccordion {
8
+ z;
9
+ el;
10
+ expandedChange = new EventEmitter();
8
11
  constructor(c, r, z) {
9
12
  this.z = z;
10
- this.expandedChange = new EventEmitter();
11
13
  c.detach();
12
14
  this.el = r.nativeElement;
13
15
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAccordion, selector: "modus-wc-accordion", inputs: { customClass: "customClass" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcAccordion, selector: "modus-wc-accordion", inputs: { customClass: "customClass" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
18
  };
17
19
  ModusWcAccordion = __decorate([
18
20
  ProxyCmp({
@@ -20,7 +22,7 @@ ModusWcAccordion = __decorate([
20
22
  })
21
23
  ], ModusWcAccordion);
22
24
  export { ModusWcAccordion };
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAccordion, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAccordion, decorators: [{
24
26
  type: Component,
25
27
  args: [{
26
28
  selector: 'modus-wc-accordion',
@@ -35,14 +37,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
35
37
  type: Output
36
38
  }] } });
37
39
  let ModusWcAlert = class ModusWcAlert {
40
+ z;
41
+ el;
42
+ dismissClick = new EventEmitter();
38
43
  constructor(c, r, z) {
39
44
  this.z = z;
40
- this.dismissClick = new EventEmitter();
41
45
  c.detach();
42
46
  this.el = r.nativeElement;
43
47
  }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAlert, selector: "modus-wc-alert", inputs: { alertDescription: "alertDescription", alertTitle: "alertTitle", customClass: "customClass", delay: "delay", disableIcon: "disableIcon", dismissible: "dismissible", icon: "icon", variant: "variant" }, outputs: { dismissClick: "dismissClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcAlert, selector: "modus-wc-alert", inputs: { alertDescription: "alertDescription", alertTitle: "alertTitle", customClass: "customClass", delay: "delay", disableIcon: "disableIcon", dismissible: "dismissible", icon: "icon", variant: "variant" }, outputs: { dismissClick: "dismissClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
50
  };
47
51
  ModusWcAlert = __decorate([
48
52
  ProxyCmp({
@@ -50,7 +54,7 @@ ModusWcAlert = __decorate([
50
54
  })
51
55
  ], ModusWcAlert);
52
56
  export { ModusWcAlert };
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAlert, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAlert, decorators: [{
54
58
  type: Component,
55
59
  args: [{
56
60
  selector: 'modus-wc-alert',
@@ -65,16 +69,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
65
69
  type: Output
66
70
  }] } });
67
71
  let ModusWcAppMenu = class ModusWcAppMenu {
72
+ z;
73
+ el;
74
+ layoutChange = new EventEmitter();
75
+ itemsOrderChange = new EventEmitter();
76
+ itemClick = new EventEmitter();
68
77
  constructor(c, r, z) {
69
78
  this.z = z;
70
- this.layoutChange = new EventEmitter();
71
- this.itemsOrderChange = new EventEmitter();
72
- this.itemClick = new EventEmitter();
73
79
  c.detach();
74
80
  this.el = r.nativeElement;
75
81
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAppMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAppMenu, selector: "modus-wc-app-menu", inputs: { apps: "apps", customClass: "customClass", layout: "layout" }, outputs: { layoutChange: "layoutChange", itemsOrderChange: "itemsOrderChange", itemClick: "itemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAppMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcAppMenu, selector: "modus-wc-app-menu", inputs: { apps: "apps", customClass: "customClass", layout: "layout" }, outputs: { layoutChange: "layoutChange", itemsOrderChange: "itemsOrderChange", itemClick: "itemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
78
84
  };
79
85
  ModusWcAppMenu = __decorate([
80
86
  ProxyCmp({
@@ -82,7 +88,7 @@ ModusWcAppMenu = __decorate([
82
88
  })
83
89
  ], ModusWcAppMenu);
84
90
  export { ModusWcAppMenu };
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAppMenu, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAppMenu, decorators: [{
86
92
  type: Component,
87
93
  args: [{
88
94
  selector: 'modus-wc-app-menu',
@@ -101,20 +107,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
101
107
  type: Output
102
108
  }] } });
103
109
  let ModusWcAutocomplete = class ModusWcAutocomplete {
110
+ z;
111
+ el;
112
+ chipRemove = new EventEmitter();
113
+ chipsExpansionChange = new EventEmitter();
114
+ clearClick = new EventEmitter();
115
+ inputBlur = new EventEmitter();
116
+ inputChange = new EventEmitter();
117
+ inputFocus = new EventEmitter();
118
+ itemSelect = new EventEmitter();
104
119
  constructor(c, r, z) {
105
120
  this.z = z;
106
- this.chipRemove = new EventEmitter();
107
- this.chipsExpansionChange = new EventEmitter();
108
- this.clearClick = new EventEmitter();
109
- this.inputBlur = new EventEmitter();
110
- this.inputChange = new EventEmitter();
111
- this.inputFocus = new EventEmitter();
112
- this.itemSelect = new EventEmitter();
113
121
  c.detach();
114
122
  this.el = r.nativeElement;
115
123
  }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAutocomplete, selector: "modus-wc-autocomplete", inputs: { autoComplete: "autoComplete", bordered: "bordered", customBlur: "customBlur", customClass: "customClass", customInputChange: "customInputChange", customItemSelect: "customItemSelect", customKeyDown: "customKeyDown", debounceMs: "debounceMs", disabled: "disabled", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", items: "items", label: "label", leaveMenuOpen: "leaveMenuOpen", maxChips: "maxChips", minChars: "minChars", minInputWidth: "minInputWidth", multiSelect: "multiSelect", name: "name", noResults: "noResults", placeholder: "placeholder", readOnly: "readOnly", required: "required", showMenuOnFocus: "showMenuOnFocus", showSpinner: "showSpinner", size: "size", value: "value" }, outputs: { chipRemove: "chipRemove", chipsExpansionChange: "chipsExpansionChange", clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
125
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcAutocomplete, selector: "modus-wc-autocomplete", inputs: { autoComplete: "autoComplete", bordered: "bordered", customBlur: "customBlur", customClass: "customClass", customInputChange: "customInputChange", customItemSelect: "customItemSelect", customKeyDown: "customKeyDown", debounceMs: "debounceMs", disabled: "disabled", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", items: "items", label: "label", leaveMenuOpen: "leaveMenuOpen", maxChips: "maxChips", minChars: "minChars", minInputWidth: "minInputWidth", multiSelect: "multiSelect", name: "name", noResults: "noResults", placeholder: "placeholder", readOnly: "readOnly", required: "required", showMenuOnFocus: "showMenuOnFocus", showSpinner: "showSpinner", size: "size", value: "value" }, outputs: { chipRemove: "chipRemove", chipsExpansionChange: "chipsExpansionChange", clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
118
126
  };
119
127
  ModusWcAutocomplete = __decorate([
120
128
  ProxyCmp({
@@ -123,7 +131,7 @@ ModusWcAutocomplete = __decorate([
123
131
  })
124
132
  ], ModusWcAutocomplete);
125
133
  export { ModusWcAutocomplete };
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAutocomplete, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAutocomplete, decorators: [{
127
135
  type: Component,
128
136
  args: [{
129
137
  selector: 'modus-wc-autocomplete',
@@ -150,14 +158,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
150
158
  type: Output
151
159
  }] } });
152
160
  let ModusWcAvatar = class ModusWcAvatar {
161
+ z;
162
+ el;
163
+ imageLoadError = new EventEmitter();
153
164
  constructor(c, r, z) {
154
165
  this.z = z;
155
- this.imageLoadError = new EventEmitter();
156
166
  c.detach();
157
167
  this.el = r.nativeElement;
158
168
  }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAvatar, selector: "modus-wc-avatar", inputs: { alt: "alt", customClass: "customClass", imgSrc: "imgSrc", initials: "initials", shape: "shape", size: "size" }, outputs: { imageLoadError: "imageLoadError" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcAvatar, selector: "modus-wc-avatar", inputs: { alt: "alt", customClass: "customClass", imgSrc: "imgSrc", initials: "initials", shape: "shape", size: "size" }, outputs: { imageLoadError: "imageLoadError" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
161
171
  };
162
172
  ModusWcAvatar = __decorate([
163
173
  ProxyCmp({
@@ -165,7 +175,7 @@ ModusWcAvatar = __decorate([
165
175
  })
166
176
  ], ModusWcAvatar);
167
177
  export { ModusWcAvatar };
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAvatar, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcAvatar, decorators: [{
169
179
  type: Component,
170
180
  args: [{
171
181
  selector: 'modus-wc-avatar',
@@ -180,13 +190,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
180
190
  type: Output
181
191
  }] } });
182
192
  let ModusWcBadge = class ModusWcBadge {
193
+ z;
194
+ el;
183
195
  constructor(c, r, z) {
184
196
  this.z = z;
185
197
  c.detach();
186
198
  this.el = r.nativeElement;
187
199
  }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBadge, selector: "modus-wc-badge", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
200
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
201
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcBadge, selector: "modus-wc-badge", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
190
202
  };
191
203
  ModusWcBadge = __decorate([
192
204
  ProxyCmp({
@@ -194,7 +206,7 @@ ModusWcBadge = __decorate([
194
206
  })
195
207
  ], ModusWcBadge);
196
208
  export { ModusWcBadge };
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBadge, decorators: [{
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBadge, decorators: [{
198
210
  type: Component,
199
211
  args: [{
200
212
  selector: 'modus-wc-badge',
@@ -206,17 +218,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
206
218
  }]
207
219
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
208
220
  let ModusWcBottomSheet = class ModusWcBottomSheet {
221
+ z;
222
+ el;
223
+ sheetVisibilityChange = new EventEmitter();
224
+ displayModeChange = new EventEmitter();
225
+ headerBackClick = new EventEmitter();
226
+ headerCloseClick = new EventEmitter();
209
227
  constructor(c, r, z) {
210
228
  this.z = z;
211
- this.sheetVisibilityChange = new EventEmitter();
212
- this.displayModeChange = new EventEmitter();
213
- this.headerBackClick = new EventEmitter();
214
- this.headerCloseClick = new EventEmitter();
215
229
  c.detach();
216
230
  this.el = r.nativeElement;
217
231
  }
218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
219
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBottomSheet, selector: "modus-wc-bottom-sheet", inputs: { customClass: "customClass", displayMode: "displayMode", dragStepThreshold: "dragStepThreshold", header: "header", visible: "visible" }, outputs: { sheetVisibilityChange: "sheetVisibilityChange", displayModeChange: "displayModeChange", headerBackClick: "headerBackClick", headerCloseClick: "headerCloseClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
232
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
233
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcBottomSheet, selector: "modus-wc-bottom-sheet", inputs: { customClass: "customClass", displayMode: "displayMode", dragStepThreshold: "dragStepThreshold", header: "header", visible: "visible" }, outputs: { sheetVisibilityChange: "sheetVisibilityChange", displayModeChange: "displayModeChange", headerBackClick: "headerBackClick", headerCloseClick: "headerCloseClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
220
234
  };
221
235
  ModusWcBottomSheet = __decorate([
222
236
  ProxyCmp({
@@ -224,7 +238,7 @@ ModusWcBottomSheet = __decorate([
224
238
  })
225
239
  ], ModusWcBottomSheet);
226
240
  export { ModusWcBottomSheet };
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBottomSheet, decorators: [{
241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBottomSheet, decorators: [{
228
242
  type: Component,
229
243
  args: [{
230
244
  selector: 'modus-wc-bottom-sheet',
@@ -245,14 +259,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
245
259
  type: Output
246
260
  }] } });
247
261
  let ModusWcBreadcrumbs = class ModusWcBreadcrumbs {
262
+ z;
263
+ el;
264
+ breadcrumbClick = new EventEmitter();
248
265
  constructor(c, r, z) {
249
266
  this.z = z;
250
- this.breadcrumbClick = new EventEmitter();
251
267
  c.detach();
252
268
  this.el = r.nativeElement;
253
269
  }
254
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
255
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBreadcrumbs, selector: "modus-wc-breadcrumbs", inputs: { customClass: "customClass", items: "items", size: "size" }, outputs: { breadcrumbClick: "breadcrumbClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcBreadcrumbs, selector: "modus-wc-breadcrumbs", inputs: { customClass: "customClass", items: "items", size: "size" }, outputs: { breadcrumbClick: "breadcrumbClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
256
272
  };
257
273
  ModusWcBreadcrumbs = __decorate([
258
274
  ProxyCmp({
@@ -260,7 +276,7 @@ ModusWcBreadcrumbs = __decorate([
260
276
  })
261
277
  ], ModusWcBreadcrumbs);
262
278
  export { ModusWcBreadcrumbs };
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBreadcrumbs, decorators: [{
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcBreadcrumbs, decorators: [{
264
280
  type: Component,
265
281
  args: [{
266
282
  selector: 'modus-wc-breadcrumbs',
@@ -275,14 +291,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
275
291
  type: Output
276
292
  }] } });
277
293
  let ModusWcButton = class ModusWcButton {
294
+ z;
295
+ el;
296
+ buttonClick = new EventEmitter();
278
297
  constructor(c, r, z) {
279
298
  this.z = z;
280
- this.buttonClick = new EventEmitter();
281
299
  c.detach();
282
300
  this.el = r.nativeElement;
283
301
  }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
285
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcButton, selector: "modus-wc-button", inputs: { color: "color", customClass: "customClass", disabled: "disabled", fullWidth: "fullWidth", pressed: "pressed", shape: "shape", size: "size", type: "type", variant: "variant" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
302
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
303
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcButton, selector: "modus-wc-button", inputs: { color: "color", customClass: "customClass", disabled: "disabled", fullWidth: "fullWidth", pressed: "pressed", shape: "shape", size: "size", type: "type", variant: "variant" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
286
304
  };
287
305
  ModusWcButton = __decorate([
288
306
  ProxyCmp({
@@ -290,7 +308,7 @@ ModusWcButton = __decorate([
290
308
  })
291
309
  ], ModusWcButton);
292
310
  export { ModusWcButton };
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButton, decorators: [{
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcButton, decorators: [{
294
312
  type: Component,
295
313
  args: [{
296
314
  selector: 'modus-wc-button',
@@ -305,15 +323,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
305
323
  type: Output
306
324
  }] } });
307
325
  let ModusWcButtonGroup = class ModusWcButtonGroup {
326
+ z;
327
+ el;
328
+ buttonGroupClick = new EventEmitter();
329
+ buttonSelectionChange = new EventEmitter();
308
330
  constructor(c, r, z) {
309
331
  this.z = z;
310
- this.buttonGroupClick = new EventEmitter();
311
- this.buttonSelectionChange = new EventEmitter();
312
332
  c.detach();
313
333
  this.el = r.nativeElement;
314
334
  }
315
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
316
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcButtonGroup, selector: "modus-wc-button-group", inputs: { color: "color", disabled: "disabled", orientation: "orientation", selectionType: "selectionType", variant: "variant" }, outputs: { buttonGroupClick: "buttonGroupClick", buttonSelectionChange: "buttonSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
336
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcButtonGroup, selector: "modus-wc-button-group", inputs: { color: "color", disabled: "disabled", orientation: "orientation", selectionType: "selectionType", variant: "variant" }, outputs: { buttonGroupClick: "buttonGroupClick", buttonSelectionChange: "buttonSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
317
337
  };
318
338
  ModusWcButtonGroup = __decorate([
319
339
  ProxyCmp({
@@ -321,7 +341,7 @@ ModusWcButtonGroup = __decorate([
321
341
  })
322
342
  ], ModusWcButtonGroup);
323
343
  export { ModusWcButtonGroup };
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButtonGroup, decorators: [{
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcButtonGroup, decorators: [{
325
345
  type: Component,
326
346
  args: [{
327
347
  selector: 'modus-wc-button-group',
@@ -338,13 +358,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
338
358
  type: Output
339
359
  }] } });
340
360
  let ModusWcCard = class ModusWcCard {
361
+ z;
362
+ el;
341
363
  constructor(c, r, z) {
342
364
  this.z = z;
343
365
  c.detach();
344
366
  this.el = r.nativeElement;
345
367
  }
346
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
347
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCard, selector: "modus-wc-card", inputs: { backgroundFigure: "backgroundFigure", bordered: "bordered", customClass: "customClass", layout: "layout", padding: "padding" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
368
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
369
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcCard, selector: "modus-wc-card", inputs: { backgroundFigure: "backgroundFigure", bordered: "bordered", customClass: "customClass", layout: "layout", padding: "padding" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
348
370
  };
349
371
  ModusWcCard = __decorate([
350
372
  ProxyCmp({
@@ -352,7 +374,7 @@ ModusWcCard = __decorate([
352
374
  })
353
375
  ], ModusWcCard);
354
376
  export { ModusWcCard };
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCard, decorators: [{
377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCard, decorators: [{
356
378
  type: Component,
357
379
  args: [{
358
380
  selector: 'modus-wc-card',
@@ -364,16 +386,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
364
386
  }]
365
387
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
366
388
  let ModusWcCheckbox = class ModusWcCheckbox {
389
+ z;
390
+ el;
391
+ inputBlur = new EventEmitter();
392
+ inputChange = new EventEmitter();
393
+ inputFocus = new EventEmitter();
367
394
  constructor(c, r, z) {
368
395
  this.z = z;
369
- this.inputBlur = new EventEmitter();
370
- this.inputChange = new EventEmitter();
371
- this.inputFocus = new EventEmitter();
372
396
  c.detach();
373
397
  this.el = r.nativeElement;
374
398
  }
375
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCheckbox, selector: "modus-wc-checkbox", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
399
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
400
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcCheckbox, selector: "modus-wc-checkbox", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
377
401
  };
378
402
  ModusWcCheckbox = __decorate([
379
403
  ProxyCmp({
@@ -381,7 +405,7 @@ ModusWcCheckbox = __decorate([
381
405
  })
382
406
  ], ModusWcCheckbox);
383
407
  export { ModusWcCheckbox };
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCheckbox, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCheckbox, decorators: [{
385
409
  type: Component,
386
410
  args: [{
387
411
  selector: 'modus-wc-checkbox',
@@ -400,15 +424,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
400
424
  type: Output
401
425
  }] } });
402
426
  let ModusWcChip = class ModusWcChip {
427
+ z;
428
+ el;
429
+ chipClick = new EventEmitter();
430
+ chipRemove = new EventEmitter();
403
431
  constructor(c, r, z) {
404
432
  this.z = z;
405
- this.chipClick = new EventEmitter();
406
- this.chipRemove = new EventEmitter();
407
433
  c.detach();
408
434
  this.el = r.nativeElement;
409
435
  }
410
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
411
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcChip, selector: "modus-wc-chip", inputs: { active: "active", customClass: "customClass", disabled: "disabled", hasError: "hasError", label: "label", multiline: "multiline", shape: "shape", showRemove: "showRemove", size: "size", variant: "variant" }, outputs: { chipClick: "chipClick", chipRemove: "chipRemove" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
436
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
437
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcChip, selector: "modus-wc-chip", inputs: { active: "active", customClass: "customClass", disabled: "disabled", hasError: "hasError", label: "label", multiline: "multiline", shape: "shape", showRemove: "showRemove", size: "size", variant: "variant" }, outputs: { chipClick: "chipClick", chipRemove: "chipRemove" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
412
438
  };
413
439
  ModusWcChip = __decorate([
414
440
  ProxyCmp({
@@ -416,7 +442,7 @@ ModusWcChip = __decorate([
416
442
  })
417
443
  ], ModusWcChip);
418
444
  export { ModusWcChip };
419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcChip, decorators: [{
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcChip, decorators: [{
420
446
  type: Component,
421
447
  args: [{
422
448
  selector: 'modus-wc-chip',
@@ -433,14 +459,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
433
459
  type: Output
434
460
  }] } });
435
461
  let ModusWcCollapse = class ModusWcCollapse {
462
+ z;
463
+ el;
464
+ expandedChange = new EventEmitter();
436
465
  constructor(c, r, z) {
437
466
  this.z = z;
438
- this.expandedChange = new EventEmitter();
439
467
  c.detach();
440
468
  this.el = r.nativeElement;
441
469
  }
442
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCollapse, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
443
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCollapse, selector: "modus-wc-collapse", inputs: { bordered: "bordered", chevronPosition: "chevronPosition", collapseId: "collapseId", customClass: "customClass", expanded: "expanded", options: "options" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
470
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCollapse, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
471
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcCollapse, selector: "modus-wc-collapse", inputs: { bordered: "bordered", chevronPosition: "chevronPosition", collapseId: "collapseId", customClass: "customClass", expanded: "expanded", options: "options" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
444
472
  };
445
473
  ModusWcCollapse = __decorate([
446
474
  ProxyCmp({
@@ -448,7 +476,7 @@ ModusWcCollapse = __decorate([
448
476
  })
449
477
  ], ModusWcCollapse);
450
478
  export { ModusWcCollapse };
451
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCollapse, decorators: [{
479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcCollapse, decorators: [{
452
480
  type: Component,
453
481
  args: [{
454
482
  selector: 'modus-wc-collapse',
@@ -463,27 +491,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
463
491
  type: Output
464
492
  }] } });
465
493
  let ModusWcContentTree = class ModusWcContentTree {
494
+ z;
495
+ el;
496
+ nodeSelect = new EventEmitter();
497
+ nodeExpandChange = new EventEmitter();
498
+ nodeCheckChange = new EventEmitter();
499
+ nodeEdit = new EventEmitter();
500
+ nodeDuplicate = new EventEmitter();
501
+ nodeAdd = new EventEmitter();
502
+ nodeDelete = new EventEmitter();
503
+ nodeRename = new EventEmitter();
504
+ nodeEditCancel = new EventEmitter();
505
+ nodeMove = new EventEmitter();
506
+ nodeLoadChildren = new EventEmitter();
507
+ expandAllChange = new EventEmitter();
508
+ nodesDelete = new EventEmitter();
509
+ nodeVisibilityChange = new EventEmitter();
466
510
  constructor(c, r, z) {
467
511
  this.z = z;
468
- this.nodeSelect = new EventEmitter();
469
- this.nodeExpandChange = new EventEmitter();
470
- this.nodeCheckChange = new EventEmitter();
471
- this.nodeEdit = new EventEmitter();
472
- this.nodeDuplicate = new EventEmitter();
473
- this.nodeAdd = new EventEmitter();
474
- this.nodeDelete = new EventEmitter();
475
- this.nodeRename = new EventEmitter();
476
- this.nodeEditCancel = new EventEmitter();
477
- this.nodeMove = new EventEmitter();
478
- this.nodeLoadChildren = new EventEmitter();
479
- this.expandAllChange = new EventEmitter();
480
- this.nodesDelete = new EventEmitter();
481
- this.nodeVisibilityChange = new EventEmitter();
482
512
  c.detach();
483
513
  this.el = r.nativeElement;
484
514
  }
485
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcContentTree, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcContentTree, selector: "modus-wc-content-tree", inputs: { allowDragDrop: "allowDragDrop", bordered: "bordered", checkedNodeIds: "checkedNodeIds", customClass: "customClass", editingNodeId: "editingNodeId", expandedNodeIds: "expandedNodeIds", filter: "filter", nodes: "nodes", searchable: "searchable", selectedNodeId: "selectedNodeId", selectionMode: "selectionMode", size: "size", toolbar: "toolbar" }, outputs: { nodeSelect: "nodeSelect", nodeExpandChange: "nodeExpandChange", nodeCheckChange: "nodeCheckChange", nodeEdit: "nodeEdit", nodeDuplicate: "nodeDuplicate", nodeAdd: "nodeAdd", nodeDelete: "nodeDelete", nodeRename: "nodeRename", nodeEditCancel: "nodeEditCancel", nodeMove: "nodeMove", nodeLoadChildren: "nodeLoadChildren", expandAllChange: "expandAllChange", nodesDelete: "nodesDelete", nodeVisibilityChange: "nodeVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
515
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcContentTree, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
516
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcContentTree, selector: "modus-wc-content-tree", inputs: { allowDragDrop: "allowDragDrop", bordered: "bordered", checkedNodeIds: "checkedNodeIds", customClass: "customClass", editingNodeId: "editingNodeId", expandedNodeIds: "expandedNodeIds", filter: "filter", nodes: "nodes", searchable: "searchable", selectedNodeId: "selectedNodeId", selectionMode: "selectionMode", size: "size", toolbar: "toolbar" }, outputs: { nodeSelect: "nodeSelect", nodeExpandChange: "nodeExpandChange", nodeCheckChange: "nodeCheckChange", nodeEdit: "nodeEdit", nodeDuplicate: "nodeDuplicate", nodeAdd: "nodeAdd", nodeDelete: "nodeDelete", nodeRename: "nodeRename", nodeEditCancel: "nodeEditCancel", nodeMove: "nodeMove", nodeLoadChildren: "nodeLoadChildren", expandAllChange: "expandAllChange", nodesDelete: "nodesDelete", nodeVisibilityChange: "nodeVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
487
517
  };
488
518
  ModusWcContentTree = __decorate([
489
519
  ProxyCmp({
@@ -491,7 +521,7 @@ ModusWcContentTree = __decorate([
491
521
  })
492
522
  ], ModusWcContentTree);
493
523
  export { ModusWcContentTree };
494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcContentTree, decorators: [{
524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcContentTree, decorators: [{
495
525
  type: Component,
496
526
  args: [{
497
527
  selector: 'modus-wc-content-tree',
@@ -532,21 +562,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
532
562
  type: Output
533
563
  }] } });
534
564
  let ModusWcDate = class ModusWcDate {
565
+ z;
566
+ el;
567
+ inputBlur = new EventEmitter();
568
+ inputChange = new EventEmitter();
569
+ inputFocus = new EventEmitter();
570
+ calendarMonthChange = new EventEmitter();
571
+ calendarYearChange = new EventEmitter();
572
+ endCalendarMonthChange = new EventEmitter();
573
+ endCalendarYearChange = new EventEmitter();
574
+ rangeChange = new EventEmitter();
535
575
  constructor(c, r, z) {
536
576
  this.z = z;
537
- this.inputBlur = new EventEmitter();
538
- this.inputChange = new EventEmitter();
539
- this.inputFocus = new EventEmitter();
540
- this.calendarMonthChange = new EventEmitter();
541
- this.calendarYearChange = new EventEmitter();
542
- this.endCalendarMonthChange = new EventEmitter();
543
- this.endCalendarYearChange = new EventEmitter();
544
- this.rangeChange = new EventEmitter();
545
577
  c.detach();
546
578
  this.el = r.nativeElement;
547
579
  }
548
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDate, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDate, selector: "modus-wc-date", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", endValue: "endValue", feedback: "feedback", format: "format", hideOverflowDates: "hideOverflowDates", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showWeekNumbers: "showWeekNumbers", size: "size", type: "type", value: "value", weekStartDay: "weekStartDay" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", calendarMonthChange: "calendarMonthChange", calendarYearChange: "calendarYearChange", endCalendarMonthChange: "endCalendarMonthChange", endCalendarYearChange: "endCalendarYearChange", rangeChange: "rangeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
580
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDate, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
581
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcDate, selector: "modus-wc-date", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", endValue: "endValue", feedback: "feedback", format: "format", hideOverflowDates: "hideOverflowDates", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showWeekNumbers: "showWeekNumbers", size: "size", type: "type", value: "value", weekStartDay: "weekStartDay" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", calendarMonthChange: "calendarMonthChange", calendarYearChange: "calendarYearChange", endCalendarMonthChange: "endCalendarMonthChange", endCalendarYearChange: "endCalendarYearChange", rangeChange: "rangeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
550
582
  };
551
583
  ModusWcDate = __decorate([
552
584
  ProxyCmp({
@@ -554,7 +586,7 @@ ModusWcDate = __decorate([
554
586
  })
555
587
  ], ModusWcDate);
556
588
  export { ModusWcDate };
557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDate, decorators: [{
589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDate, decorators: [{
558
590
  type: Component,
559
591
  args: [{
560
592
  selector: 'modus-wc-date',
@@ -583,13 +615,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
583
615
  type: Output
584
616
  }] } });
585
617
  let ModusWcDivider = class ModusWcDivider {
618
+ z;
619
+ el;
586
620
  constructor(c, r, z) {
587
621
  this.z = z;
588
622
  c.detach();
589
623
  this.el = r.nativeElement;
590
624
  }
591
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
592
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDivider, selector: "modus-wc-divider", inputs: { color: "color", content: "content", customClass: "customClass", orientation: "orientation", position: "position", responsive: "responsive" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
625
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
626
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcDivider, selector: "modus-wc-divider", inputs: { color: "color", content: "content", customClass: "customClass", orientation: "orientation", position: "position", responsive: "responsive" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
593
627
  };
594
628
  ModusWcDivider = __decorate([
595
629
  ProxyCmp({
@@ -597,7 +631,7 @@ ModusWcDivider = __decorate([
597
631
  })
598
632
  ], ModusWcDivider);
599
633
  export { ModusWcDivider };
600
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDivider, decorators: [{
634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDivider, decorators: [{
601
635
  type: Component,
602
636
  args: [{
603
637
  selector: 'modus-wc-divider',
@@ -609,14 +643,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
609
643
  }]
610
644
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
611
645
  let ModusWcDropdownMenu = class ModusWcDropdownMenu {
646
+ z;
647
+ el;
648
+ menuVisibilityChange = new EventEmitter();
612
649
  constructor(c, r, z) {
613
650
  this.z = z;
614
- this.menuVisibilityChange = new EventEmitter();
615
651
  c.detach();
616
652
  this.el = r.nativeElement;
617
653
  }
618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDropdownMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
619
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDropdownMenu, selector: "modus-wc-dropdown-menu", inputs: { buttonAriaLabel: "buttonAriaLabel", buttonColor: "buttonColor", buttonShape: "buttonShape", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", disabled: "disabled", menuBordered: "menuBordered", menuOffset: "menuOffset", menuPlacement: "menuPlacement", menuSize: "menuSize", menuStrategy: "menuStrategy", menuVisible: "menuVisible" }, outputs: { menuVisibilityChange: "menuVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
654
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDropdownMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
655
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcDropdownMenu, selector: "modus-wc-dropdown-menu", inputs: { buttonAriaLabel: "buttonAriaLabel", buttonColor: "buttonColor", buttonShape: "buttonShape", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", disabled: "disabled", menuBordered: "menuBordered", menuOffset: "menuOffset", menuPlacement: "menuPlacement", menuSize: "menuSize", menuStrategy: "menuStrategy", menuVisible: "menuVisible" }, outputs: { menuVisibilityChange: "menuVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
620
656
  };
621
657
  ModusWcDropdownMenu = __decorate([
622
658
  ProxyCmp({
@@ -624,7 +660,7 @@ ModusWcDropdownMenu = __decorate([
624
660
  })
625
661
  ], ModusWcDropdownMenu);
626
662
  export { ModusWcDropdownMenu };
627
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDropdownMenu, decorators: [{
663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcDropdownMenu, decorators: [{
628
664
  type: Component,
629
665
  args: [{
630
666
  selector: 'modus-wc-dropdown-menu',
@@ -639,14 +675,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
639
675
  type: Output
640
676
  }] } });
641
677
  let ModusWcFileDropzone = class ModusWcFileDropzone {
678
+ z;
679
+ el;
680
+ fileSelect = new EventEmitter();
642
681
  constructor(c, r, z) {
643
682
  this.z = z;
644
- this.fileSelect = new EventEmitter();
645
683
  c.detach();
646
684
  this.el = r.nativeElement;
647
685
  }
648
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcFileDropzone, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
649
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcFileDropzone, selector: "modus-wc-file-dropzone", inputs: { acceptFileTypes: "acceptFileTypes", customClass: "customClass", disabled: "disabled", feedback: "feedback", fileDraggedOverInstructions: "fileDraggedOverInstructions", includeStateIcon: "includeStateIcon", instructions: "instructions", invalidFileTypeMessage: "invalidFileTypeMessage", maxFileCount: "maxFileCount", maxFileNameLength: "maxFileNameLength", maxTotalFileSizeBytes: "maxTotalFileSizeBytes", multiple: "multiple", successMessage: "successMessage" }, outputs: { fileSelect: "fileSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
686
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcFileDropzone, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
687
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcFileDropzone, selector: "modus-wc-file-dropzone", inputs: { acceptFileTypes: "acceptFileTypes", customClass: "customClass", disabled: "disabled", feedback: "feedback", fileDraggedOverInstructions: "fileDraggedOverInstructions", includeStateIcon: "includeStateIcon", instructions: "instructions", invalidFileTypeMessage: "invalidFileTypeMessage", maxFileCount: "maxFileCount", maxFileNameLength: "maxFileNameLength", maxTotalFileSizeBytes: "maxTotalFileSizeBytes", multiple: "multiple", successMessage: "successMessage" }, outputs: { fileSelect: "fileSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
650
688
  };
651
689
  ModusWcFileDropzone = __decorate([
652
690
  ProxyCmp({
@@ -655,7 +693,7 @@ ModusWcFileDropzone = __decorate([
655
693
  })
656
694
  ], ModusWcFileDropzone);
657
695
  export { ModusWcFileDropzone };
658
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcFileDropzone, decorators: [{
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcFileDropzone, decorators: [{
659
697
  type: Component,
660
698
  args: [{
661
699
  selector: 'modus-wc-file-dropzone',
@@ -670,13 +708,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
670
708
  type: Output
671
709
  }] } });
672
710
  let ModusWcHandle = class ModusWcHandle {
711
+ z;
712
+ el;
673
713
  constructor(c, r, z) {
674
714
  this.z = z;
675
715
  c.detach();
676
716
  this.el = r.nativeElement;
677
717
  }
678
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcHandle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
679
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcHandle, selector: "modus-wc-handle", inputs: { buttonColor: "buttonColor", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", defaultSplit: "defaultSplit", density: "density", leftTarget: "leftTarget", orientation: "orientation", rightTarget: "rightTarget", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
718
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcHandle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
719
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcHandle, selector: "modus-wc-handle", inputs: { buttonColor: "buttonColor", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", defaultSplit: "defaultSplit", density: "density", leftTarget: "leftTarget", orientation: "orientation", rightTarget: "rightTarget", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
680
720
  };
681
721
  ModusWcHandle = __decorate([
682
722
  ProxyCmp({
@@ -684,7 +724,7 @@ ModusWcHandle = __decorate([
684
724
  })
685
725
  ], ModusWcHandle);
686
726
  export { ModusWcHandle };
687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcHandle, decorators: [{
727
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcHandle, decorators: [{
688
728
  type: Component,
689
729
  args: [{
690
730
  selector: 'modus-wc-handle',
@@ -696,13 +736,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
696
736
  }]
697
737
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
698
738
  let ModusWcIcon = class ModusWcIcon {
739
+ z;
740
+ el;
699
741
  constructor(c, r, z) {
700
742
  this.z = z;
701
743
  c.detach();
702
744
  this.el = r.nativeElement;
703
745
  }
704
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcIcon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
705
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcIcon, selector: "modus-wc-icon", inputs: { customClass: "customClass", decorative: "decorative", name: "name", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
746
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcIcon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
747
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcIcon, selector: "modus-wc-icon", inputs: { customClass: "customClass", decorative: "decorative", name: "name", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
706
748
  };
707
749
  ModusWcIcon = __decorate([
708
750
  ProxyCmp({
@@ -710,7 +752,7 @@ ModusWcIcon = __decorate([
710
752
  })
711
753
  ], ModusWcIcon);
712
754
  export { ModusWcIcon };
713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcIcon, decorators: [{
755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcIcon, decorators: [{
714
756
  type: Component,
715
757
  args: [{
716
758
  selector: 'modus-wc-icon',
@@ -722,13 +764,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
722
764
  }]
723
765
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
724
766
  let ModusWcInputFeedback = class ModusWcInputFeedback {
767
+ z;
768
+ el;
725
769
  constructor(c, r, z) {
726
770
  this.z = z;
727
771
  c.detach();
728
772
  this.el = r.nativeElement;
729
773
  }
730
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputFeedback, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
731
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcInputFeedback, selector: "modus-wc-input-feedback", inputs: { customClass: "customClass", icon: "icon", level: "level", message: "message", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
774
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcInputFeedback, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
775
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcInputFeedback, selector: "modus-wc-input-feedback", inputs: { customClass: "customClass", icon: "icon", level: "level", message: "message", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
732
776
  };
733
777
  ModusWcInputFeedback = __decorate([
734
778
  ProxyCmp({
@@ -736,7 +780,7 @@ ModusWcInputFeedback = __decorate([
736
780
  })
737
781
  ], ModusWcInputFeedback);
738
782
  export { ModusWcInputFeedback };
739
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputFeedback, decorators: [{
783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcInputFeedback, decorators: [{
740
784
  type: Component,
741
785
  args: [{
742
786
  selector: 'modus-wc-input-feedback',
@@ -748,13 +792,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
748
792
  }]
749
793
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
750
794
  let ModusWcInputLabel = class ModusWcInputLabel {
795
+ z;
796
+ el;
751
797
  constructor(c, r, z) {
752
798
  this.z = z;
753
799
  c.detach();
754
800
  this.el = r.nativeElement;
755
801
  }
756
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
757
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcInputLabel, selector: "modus-wc-input-label", inputs: { customClass: "customClass", forId: "forId", labelText: "labelText", required: "required", size: "size", subLabelText: "subLabelText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
802
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcInputLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
803
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcInputLabel, selector: "modus-wc-input-label", inputs: { customClass: "customClass", forId: "forId", labelText: "labelText", required: "required", size: "size", subLabelText: "subLabelText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
758
804
  };
759
805
  ModusWcInputLabel = __decorate([
760
806
  ProxyCmp({
@@ -762,7 +808,7 @@ ModusWcInputLabel = __decorate([
762
808
  })
763
809
  ], ModusWcInputLabel);
764
810
  export { ModusWcInputLabel };
765
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputLabel, decorators: [{
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcInputLabel, decorators: [{
766
812
  type: Component,
767
813
  args: [{
768
814
  selector: 'modus-wc-input-label',
@@ -774,13 +820,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
774
820
  }]
775
821
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
776
822
  let ModusWcLink = class ModusWcLink {
823
+ z;
824
+ el;
777
825
  constructor(c, r, z) {
778
826
  this.z = z;
779
827
  c.detach();
780
828
  this.el = r.nativeElement;
781
829
  }
782
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLink, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
783
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLink, selector: "modus-wc-link", inputs: { color: "color", customClass: "customClass", href: "href", rel: "rel", target: "target", underline: "underline" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
830
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLink, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
831
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcLink, selector: "modus-wc-link", inputs: { color: "color", customClass: "customClass", href: "href", rel: "rel", target: "target", underline: "underline" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
784
832
  };
785
833
  ModusWcLink = __decorate([
786
834
  ProxyCmp({
@@ -788,7 +836,7 @@ ModusWcLink = __decorate([
788
836
  })
789
837
  ], ModusWcLink);
790
838
  export { ModusWcLink };
791
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLink, decorators: [{
839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLink, decorators: [{
792
840
  type: Component,
793
841
  args: [{
794
842
  selector: 'modus-wc-link',
@@ -800,13 +848,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
800
848
  }]
801
849
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
802
850
  let ModusWcLoader = class ModusWcLoader {
851
+ z;
852
+ el;
803
853
  constructor(c, r, z) {
804
854
  this.z = z;
805
855
  c.detach();
806
856
  this.el = r.nativeElement;
807
857
  }
808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLoader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
809
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLoader, selector: "modus-wc-loader", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
858
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLoader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
859
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcLoader, selector: "modus-wc-loader", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
810
860
  };
811
861
  ModusWcLoader = __decorate([
812
862
  ProxyCmp({
@@ -814,7 +864,7 @@ ModusWcLoader = __decorate([
814
864
  })
815
865
  ], ModusWcLoader);
816
866
  export { ModusWcLoader };
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLoader, decorators: [{
867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLoader, decorators: [{
818
868
  type: Component,
819
869
  args: [{
820
870
  selector: 'modus-wc-loader',
@@ -826,13 +876,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
826
876
  }]
827
877
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
828
878
  let ModusWcLogo = class ModusWcLogo {
879
+ z;
880
+ el;
829
881
  constructor(c, r, z) {
830
882
  this.z = z;
831
883
  c.detach();
832
884
  this.el = r.nativeElement;
833
885
  }
834
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLogo, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
835
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLogo, selector: "modus-wc-logo", inputs: { alt: "alt", customClass: "customClass", emblem: "emblem", name: "name" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
886
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLogo, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
887
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcLogo, selector: "modus-wc-logo", inputs: { alt: "alt", customClass: "customClass", emblem: "emblem", name: "name" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
836
888
  };
837
889
  ModusWcLogo = __decorate([
838
890
  ProxyCmp({
@@ -840,7 +892,7 @@ ModusWcLogo = __decorate([
840
892
  })
841
893
  ], ModusWcLogo);
842
894
  export { ModusWcLogo };
843
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLogo, decorators: [{
895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcLogo, decorators: [{
844
896
  type: Component,
845
897
  args: [{
846
898
  selector: 'modus-wc-logo',
@@ -852,15 +904,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
852
904
  }]
853
905
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
854
906
  let ModusWcMenu = class ModusWcMenu {
907
+ z;
908
+ el;
909
+ menuFocusout = new EventEmitter();
910
+ menuSelectionChange = new EventEmitter();
855
911
  constructor(c, r, z) {
856
912
  this.z = z;
857
- this.menuFocusout = new EventEmitter();
858
- this.menuSelectionChange = new EventEmitter();
859
913
  c.detach();
860
914
  this.el = r.nativeElement;
861
915
  }
862
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
863
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcMenu, selector: "modus-wc-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
916
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
917
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcMenu, selector: "modus-wc-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
864
918
  };
865
919
  ModusWcMenu = __decorate([
866
920
  ProxyCmp({
@@ -868,7 +922,7 @@ ModusWcMenu = __decorate([
868
922
  })
869
923
  ], ModusWcMenu);
870
924
  export { ModusWcMenu };
871
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenu, decorators: [{
925
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcMenu, decorators: [{
872
926
  type: Component,
873
927
  args: [{
874
928
  selector: 'modus-wc-menu',
@@ -885,14 +939,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
885
939
  type: Output
886
940
  }] } });
887
941
  let ModusWcMenuItem = class ModusWcMenuItem {
942
+ z;
943
+ el;
944
+ itemSelect = new EventEmitter();
888
945
  constructor(c, r, z) {
889
946
  this.z = z;
890
- this.itemSelect = new EventEmitter();
891
947
  c.detach();
892
948
  this.el = r.nativeElement;
893
949
  }
894
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
895
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcMenuItem, selector: "modus-wc-menu-item", inputs: { bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
950
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
951
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcMenuItem, selector: "modus-wc-menu-item", inputs: { bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
896
952
  };
897
953
  ModusWcMenuItem = __decorate([
898
954
  ProxyCmp({
@@ -901,7 +957,7 @@ ModusWcMenuItem = __decorate([
901
957
  })
902
958
  ], ModusWcMenuItem);
903
959
  export { ModusWcMenuItem };
904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenuItem, decorators: [{
960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcMenuItem, decorators: [{
905
961
  type: Component,
906
962
  args: [{
907
963
  selector: 'modus-wc-menu-item',
@@ -916,13 +972,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
916
972
  type: Output
917
973
  }] } });
918
974
  let ModusWcModal = class ModusWcModal {
975
+ z;
976
+ el;
919
977
  constructor(c, r, z) {
920
978
  this.z = z;
921
979
  c.detach();
922
980
  this.el = r.nativeElement;
923
981
  }
924
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
925
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcModal, selector: "modus-wc-modal", inputs: { backdrop: "backdrop", customClass: "customClass", fullscreen: "fullscreen", modalId: "modalId", position: "position", showClose: "showClose", showFullscreenToggle: "showFullscreenToggle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
982
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
983
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcModal, selector: "modus-wc-modal", inputs: { backdrop: "backdrop", customClass: "customClass", fullscreen: "fullscreen", modalId: "modalId", position: "position", showClose: "showClose", showFullscreenToggle: "showFullscreenToggle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
926
984
  };
927
985
  ModusWcModal = __decorate([
928
986
  ProxyCmp({
@@ -930,7 +988,7 @@ ModusWcModal = __decorate([
930
988
  })
931
989
  ], ModusWcModal);
932
990
  export { ModusWcModal };
933
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcModal, decorators: [{
991
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcModal, decorators: [{
934
992
  type: Component,
935
993
  args: [{
936
994
  selector: 'modus-wc-modal',
@@ -942,28 +1000,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
942
1000
  }]
943
1001
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
944
1002
  let ModusWcNavbar = class ModusWcNavbar {
1003
+ z;
1004
+ el;
1005
+ aiClick = new EventEmitter();
1006
+ appsClick = new EventEmitter();
1007
+ appsMenuOpenChange = new EventEmitter();
1008
+ condensedMenuOpenChange = new EventEmitter();
1009
+ helpClick = new EventEmitter();
1010
+ mainMenuOpenChange = new EventEmitter();
1011
+ myTrimbleClick = new EventEmitter();
1012
+ notificationsClick = new EventEmitter();
1013
+ notificationsMenuOpenChange = new EventEmitter();
1014
+ searchChange = new EventEmitter();
1015
+ searchClick = new EventEmitter();
1016
+ searchInputOpenChange = new EventEmitter();
1017
+ signOutClick = new EventEmitter();
1018
+ trimbleLogoClick = new EventEmitter();
1019
+ userMenuOpenChange = new EventEmitter();
945
1020
  constructor(c, r, z) {
946
1021
  this.z = z;
947
- this.aiClick = new EventEmitter();
948
- this.appsClick = new EventEmitter();
949
- this.appsMenuOpenChange = new EventEmitter();
950
- this.condensedMenuOpenChange = new EventEmitter();
951
- this.helpClick = new EventEmitter();
952
- this.mainMenuOpenChange = new EventEmitter();
953
- this.myTrimbleClick = new EventEmitter();
954
- this.notificationsClick = new EventEmitter();
955
- this.notificationsMenuOpenChange = new EventEmitter();
956
- this.searchChange = new EventEmitter();
957
- this.searchClick = new EventEmitter();
958
- this.searchInputOpenChange = new EventEmitter();
959
- this.signOutClick = new EventEmitter();
960
- this.trimbleLogoClick = new EventEmitter();
961
- this.userMenuOpenChange = new EventEmitter();
962
1022
  c.detach();
963
1023
  this.el = r.nativeElement;
964
1024
  }
965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNavbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcNavbar, selector: "modus-wc-navbar", inputs: { appsMenuOpen: "appsMenuOpen", condensed: "condensed", condensedMenuOpen: "condensedMenuOpen", customClass: "customClass", logoName: "logoName", mainMenuOpen: "mainMenuOpen", notificationsMenuOpen: "notificationsMenuOpen", searchDebounceMs: "searchDebounceMs", searchInputOpen: "searchInputOpen", textOverrides: "textOverrides", userCard: "userCard", userMenuOpen: "userMenuOpen", visibility: "visibility" }, outputs: { aiClick: "aiClick", appsClick: "appsClick", appsMenuOpenChange: "appsMenuOpenChange", condensedMenuOpenChange: "condensedMenuOpenChange", helpClick: "helpClick", mainMenuOpenChange: "mainMenuOpenChange", myTrimbleClick: "myTrimbleClick", notificationsClick: "notificationsClick", notificationsMenuOpenChange: "notificationsMenuOpenChange", searchChange: "searchChange", searchClick: "searchClick", searchInputOpenChange: "searchInputOpenChange", signOutClick: "signOutClick", trimbleLogoClick: "trimbleLogoClick", userMenuOpenChange: "userMenuOpenChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1025
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcNavbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1026
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcNavbar, selector: "modus-wc-navbar", inputs: { appsMenuOpen: "appsMenuOpen", condensed: "condensed", condensedMenuOpen: "condensedMenuOpen", customClass: "customClass", logoName: "logoName", mainMenuOpen: "mainMenuOpen", notificationsMenuOpen: "notificationsMenuOpen", searchDebounceMs: "searchDebounceMs", searchInputOpen: "searchInputOpen", textOverrides: "textOverrides", userCard: "userCard", userMenuOpen: "userMenuOpen", visibility: "visibility" }, outputs: { aiClick: "aiClick", appsClick: "appsClick", appsMenuOpenChange: "appsMenuOpenChange", condensedMenuOpenChange: "condensedMenuOpenChange", helpClick: "helpClick", mainMenuOpenChange: "mainMenuOpenChange", myTrimbleClick: "myTrimbleClick", notificationsClick: "notificationsClick", notificationsMenuOpenChange: "notificationsMenuOpenChange", searchChange: "searchChange", searchClick: "searchClick", searchInputOpenChange: "searchInputOpenChange", signOutClick: "signOutClick", trimbleLogoClick: "trimbleLogoClick", userMenuOpenChange: "userMenuOpenChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
967
1027
  };
968
1028
  ModusWcNavbar = __decorate([
969
1029
  ProxyCmp({
@@ -971,7 +1031,7 @@ ModusWcNavbar = __decorate([
971
1031
  })
972
1032
  ], ModusWcNavbar);
973
1033
  export { ModusWcNavbar };
974
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNavbar, decorators: [{
1034
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcNavbar, decorators: [{
975
1035
  type: Component,
976
1036
  args: [{
977
1037
  selector: 'modus-wc-navbar',
@@ -1014,16 +1074,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1014
1074
  type: Output
1015
1075
  }] } });
1016
1076
  let ModusWcNumberInput = class ModusWcNumberInput {
1077
+ z;
1078
+ el;
1079
+ inputBlur = new EventEmitter();
1080
+ inputChange = new EventEmitter();
1081
+ inputFocus = new EventEmitter();
1017
1082
  constructor(c, r, z) {
1018
1083
  this.z = z;
1019
- this.inputBlur = new EventEmitter();
1020
- this.inputChange = new EventEmitter();
1021
- this.inputFocus = new EventEmitter();
1022
1084
  c.detach();
1023
1085
  this.el = r.nativeElement;
1024
1086
  }
1025
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNumberInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1026
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcNumberInput, selector: "modus-wc-number-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", currencySymbol: "currencySymbol", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", step: "step", type: "type", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1087
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcNumberInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1088
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcNumberInput, selector: "modus-wc-number-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", currencySymbol: "currencySymbol", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", step: "step", type: "type", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1027
1089
  };
1028
1090
  ModusWcNumberInput = __decorate([
1029
1091
  ProxyCmp({
@@ -1031,7 +1093,7 @@ ModusWcNumberInput = __decorate([
1031
1093
  })
1032
1094
  ], ModusWcNumberInput);
1033
1095
  export { ModusWcNumberInput };
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNumberInput, decorators: [{
1096
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcNumberInput, decorators: [{
1035
1097
  type: Component,
1036
1098
  args: [{
1037
1099
  selector: 'modus-wc-number-input',
@@ -1050,14 +1112,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1050
1112
  type: Output
1051
1113
  }] } });
1052
1114
  let ModusWcPagination = class ModusWcPagination {
1115
+ z;
1116
+ el;
1117
+ pageChange = new EventEmitter();
1053
1118
  constructor(c, r, z) {
1054
1119
  this.z = z;
1055
- this.pageChange = new EventEmitter();
1056
1120
  c.detach();
1057
1121
  this.el = r.nativeElement;
1058
1122
  }
1059
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1060
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcPagination, selector: "modus-wc-pagination", inputs: { ariaLabelValues: "ariaLabelValues", count: "count", customClass: "customClass", nextButtonText: "nextButtonText", page: "page", prevButtonText: "prevButtonText", size: "size" }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1123
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcPagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1124
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcPagination, selector: "modus-wc-pagination", inputs: { ariaLabelValues: "ariaLabelValues", count: "count", customClass: "customClass", nextButtonText: "nextButtonText", page: "page", prevButtonText: "prevButtonText", size: "size" }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1061
1125
  };
1062
1126
  ModusWcPagination = __decorate([
1063
1127
  ProxyCmp({
@@ -1065,7 +1129,7 @@ ModusWcPagination = __decorate([
1065
1129
  })
1066
1130
  ], ModusWcPagination);
1067
1131
  export { ModusWcPagination };
1068
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPagination, decorators: [{
1132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcPagination, decorators: [{
1069
1133
  type: Component,
1070
1134
  args: [{
1071
1135
  selector: 'modus-wc-pagination',
@@ -1080,13 +1144,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1080
1144
  type: Output
1081
1145
  }] } });
1082
1146
  let ModusWcPanel = class ModusWcPanel {
1147
+ z;
1148
+ el;
1083
1149
  constructor(c, r, z) {
1084
1150
  this.z = z;
1085
1151
  c.detach();
1086
1152
  this.el = r.nativeElement;
1087
1153
  }
1088
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1089
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcPanel, selector: "modus-wc-panel", inputs: { customClass: "customClass", floating: "floating", height: "height", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1155
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcPanel, selector: "modus-wc-panel", inputs: { customClass: "customClass", floating: "floating", height: "height", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1090
1156
  };
1091
1157
  ModusWcPanel = __decorate([
1092
1158
  ProxyCmp({
@@ -1094,7 +1160,7 @@ ModusWcPanel = __decorate([
1094
1160
  })
1095
1161
  ], ModusWcPanel);
1096
1162
  export { ModusWcPanel };
1097
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPanel, decorators: [{
1163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcPanel, decorators: [{
1098
1164
  type: Component,
1099
1165
  args: [{
1100
1166
  selector: 'modus-wc-panel',
@@ -1106,15 +1172,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1106
1172
  }]
1107
1173
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1108
1174
  let ModusWcProfileMenu = class ModusWcProfileMenu {
1175
+ z;
1176
+ el;
1177
+ signOutClick = new EventEmitter();
1178
+ menuItemClick = new EventEmitter();
1109
1179
  constructor(c, r, z) {
1110
1180
  this.z = z;
1111
- this.signOutClick = new EventEmitter();
1112
- this.menuItemClick = new EventEmitter();
1113
1181
  c.detach();
1114
1182
  this.el = r.nativeElement;
1115
1183
  }
1116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProfileMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcProfileMenu, selector: "modus-wc-profile-menu", inputs: { mainMenu: "mainMenu", menuOne: "menuOne", menuTwo: "menuTwo", profileProps: "profileProps", showSignOut: "showSignOut" }, outputs: { signOutClick: "signOutClick", menuItemClick: "menuItemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcProfileMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcProfileMenu, selector: "modus-wc-profile-menu", inputs: { mainMenu: "mainMenu", menuOne: "menuOne", menuTwo: "menuTwo", profileProps: "profileProps", showSignOut: "showSignOut" }, outputs: { signOutClick: "signOutClick", menuItemClick: "menuItemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1118
1186
  };
1119
1187
  ModusWcProfileMenu = __decorate([
1120
1188
  ProxyCmp({
@@ -1122,7 +1190,7 @@ ModusWcProfileMenu = __decorate([
1122
1190
  })
1123
1191
  ], ModusWcProfileMenu);
1124
1192
  export { ModusWcProfileMenu };
1125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProfileMenu, decorators: [{
1193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcProfileMenu, decorators: [{
1126
1194
  type: Component,
1127
1195
  args: [{
1128
1196
  selector: 'modus-wc-profile-menu',
@@ -1139,13 +1207,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1139
1207
  type: Output
1140
1208
  }] } });
1141
1209
  let ModusWcProgress = class ModusWcProgress {
1210
+ z;
1211
+ el;
1142
1212
  constructor(c, r, z) {
1143
1213
  this.z = z;
1144
1214
  c.detach();
1145
1215
  this.el = r.nativeElement;
1146
1216
  }
1147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProgress, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1148
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcProgress, selector: "modus-wc-progress", inputs: { customClass: "customClass", indeterminate: "indeterminate", label: "label", max: "max", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcProgress, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1218
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcProgress, selector: "modus-wc-progress", inputs: { customClass: "customClass", indeterminate: "indeterminate", label: "label", max: "max", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1149
1219
  };
1150
1220
  ModusWcProgress = __decorate([
1151
1221
  ProxyCmp({
@@ -1153,7 +1223,7 @@ ModusWcProgress = __decorate([
1153
1223
  })
1154
1224
  ], ModusWcProgress);
1155
1225
  export { ModusWcProgress };
1156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProgress, decorators: [{
1226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcProgress, decorators: [{
1157
1227
  type: Component,
1158
1228
  args: [{
1159
1229
  selector: 'modus-wc-progress',
@@ -1165,16 +1235,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1165
1235
  }]
1166
1236
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1167
1237
  let ModusWcRadio = class ModusWcRadio {
1238
+ z;
1239
+ el;
1240
+ inputBlur = new EventEmitter();
1241
+ inputChange = new EventEmitter();
1242
+ inputFocus = new EventEmitter();
1168
1243
  constructor(c, r, z) {
1169
1244
  this.z = z;
1170
- this.inputBlur = new EventEmitter();
1171
- this.inputChange = new EventEmitter();
1172
- this.inputFocus = new EventEmitter();
1173
1245
  c.detach();
1174
1246
  this.el = r.nativeElement;
1175
1247
  }
1176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcRadio, selector: "modus-wc-radio", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1248
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1249
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcRadio, selector: "modus-wc-radio", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1178
1250
  };
1179
1251
  ModusWcRadio = __decorate([
1180
1252
  ProxyCmp({
@@ -1182,7 +1254,7 @@ ModusWcRadio = __decorate([
1182
1254
  })
1183
1255
  ], ModusWcRadio);
1184
1256
  export { ModusWcRadio };
1185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRadio, decorators: [{
1257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcRadio, decorators: [{
1186
1258
  type: Component,
1187
1259
  args: [{
1188
1260
  selector: 'modus-wc-radio',
@@ -1201,14 +1273,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1201
1273
  type: Output
1202
1274
  }] } });
1203
1275
  let ModusWcRating = class ModusWcRating {
1276
+ z;
1277
+ el;
1278
+ ratingChange = new EventEmitter();
1204
1279
  constructor(c, r, z) {
1205
1280
  this.z = z;
1206
- this.ratingChange = new EventEmitter();
1207
1281
  c.detach();
1208
1282
  this.el = r.nativeElement;
1209
1283
  }
1210
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcRating, selector: "modus-wc-rating", inputs: { allowHalf: "allowHalf", count: "count", customClass: "customClass", disabled: "disabled", getAriaLabelText: "getAriaLabelText", size: "size", value: "value", variant: "variant" }, outputs: { ratingChange: "ratingChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1284
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1285
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcRating, selector: "modus-wc-rating", inputs: { allowHalf: "allowHalf", count: "count", customClass: "customClass", disabled: "disabled", getAriaLabelText: "getAriaLabelText", size: "size", value: "value", variant: "variant" }, outputs: { ratingChange: "ratingChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1212
1286
  };
1213
1287
  ModusWcRating = __decorate([
1214
1288
  ProxyCmp({
@@ -1216,7 +1290,7 @@ ModusWcRating = __decorate([
1216
1290
  })
1217
1291
  ], ModusWcRating);
1218
1292
  export { ModusWcRating };
1219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRating, decorators: [{
1293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcRating, decorators: [{
1220
1294
  type: Component,
1221
1295
  args: [{
1222
1296
  selector: 'modus-wc-rating',
@@ -1231,16 +1305,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1231
1305
  type: Output
1232
1306
  }] } });
1233
1307
  let ModusWcSelect = class ModusWcSelect {
1308
+ z;
1309
+ el;
1310
+ inputBlur = new EventEmitter();
1311
+ inputChange = new EventEmitter();
1312
+ inputFocus = new EventEmitter();
1234
1313
  constructor(c, r, z) {
1235
1314
  this.z = z;
1236
- this.inputBlur = new EventEmitter();
1237
- this.inputChange = new EventEmitter();
1238
- this.inputFocus = new EventEmitter();
1239
1315
  c.detach();
1240
1316
  this.el = r.nativeElement;
1241
1317
  }
1242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSelect, selector: "modus-wc-select", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", options: "options", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1318
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1319
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcSelect, selector: "modus-wc-select", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", options: "options", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1244
1320
  };
1245
1321
  ModusWcSelect = __decorate([
1246
1322
  ProxyCmp({
@@ -1248,7 +1324,7 @@ ModusWcSelect = __decorate([
1248
1324
  })
1249
1325
  ], ModusWcSelect);
1250
1326
  export { ModusWcSelect };
1251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSelect, decorators: [{
1327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSelect, decorators: [{
1252
1328
  type: Component,
1253
1329
  args: [{
1254
1330
  selector: 'modus-wc-select',
@@ -1267,14 +1343,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1267
1343
  type: Output
1268
1344
  }] } });
1269
1345
  let ModusWcSideNavigation = class ModusWcSideNavigation {
1346
+ z;
1347
+ el;
1348
+ expandedChange = new EventEmitter();
1270
1349
  constructor(c, r, z) {
1271
1350
  this.z = z;
1272
- this.expandedChange = new EventEmitter();
1273
1351
  c.detach();
1274
1352
  this.el = r.nativeElement;
1275
1353
  }
1276
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSideNavigation, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1277
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSideNavigation, selector: "modus-wc-side-navigation", inputs: { collapseOnClickOutside: "collapseOnClickOutside", customClass: "customClass", expanded: "expanded", maxWidth: "maxWidth", mode: "mode", targetContent: "targetContent" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1354
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSideNavigation, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1355
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcSideNavigation, selector: "modus-wc-side-navigation", inputs: { collapseOnClickOutside: "collapseOnClickOutside", customClass: "customClass", expanded: "expanded", maxWidth: "maxWidth", mode: "mode", targetContent: "targetContent" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1278
1356
  };
1279
1357
  ModusWcSideNavigation = __decorate([
1280
1358
  ProxyCmp({
@@ -1282,7 +1360,7 @@ ModusWcSideNavigation = __decorate([
1282
1360
  })
1283
1361
  ], ModusWcSideNavigation);
1284
1362
  export { ModusWcSideNavigation };
1285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSideNavigation, decorators: [{
1363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSideNavigation, decorators: [{
1286
1364
  type: Component,
1287
1365
  args: [{
1288
1366
  selector: 'modus-wc-side-navigation',
@@ -1297,13 +1375,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1297
1375
  type: Output
1298
1376
  }] } });
1299
1377
  let ModusWcSkeleton = class ModusWcSkeleton {
1378
+ z;
1379
+ el;
1300
1380
  constructor(c, r, z) {
1301
1381
  this.z = z;
1302
1382
  c.detach();
1303
1383
  this.el = r.nativeElement;
1304
1384
  }
1305
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1306
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSkeleton, selector: "modus-wc-skeleton", inputs: { customClass: "customClass", height: "height", shape: "shape", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1385
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1386
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcSkeleton, selector: "modus-wc-skeleton", inputs: { customClass: "customClass", height: "height", shape: "shape", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1307
1387
  };
1308
1388
  ModusWcSkeleton = __decorate([
1309
1389
  ProxyCmp({
@@ -1311,7 +1391,7 @@ ModusWcSkeleton = __decorate([
1311
1391
  })
1312
1392
  ], ModusWcSkeleton);
1313
1393
  export { ModusWcSkeleton };
1314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSkeleton, decorators: [{
1394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSkeleton, decorators: [{
1315
1395
  type: Component,
1316
1396
  args: [{
1317
1397
  selector: 'modus-wc-skeleton',
@@ -1323,16 +1403,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1323
1403
  }]
1324
1404
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1325
1405
  let ModusWcSlider = class ModusWcSlider {
1406
+ z;
1407
+ el;
1408
+ inputBlur = new EventEmitter();
1409
+ inputChange = new EventEmitter();
1410
+ inputFocus = new EventEmitter();
1326
1411
  constructor(c, r, z) {
1327
1412
  this.z = z;
1328
- this.inputBlur = new EventEmitter();
1329
- this.inputChange = new EventEmitter();
1330
- this.inputFocus = new EventEmitter();
1331
1413
  c.detach();
1332
1414
  this.el = r.nativeElement;
1333
1415
  }
1334
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSlider, selector: "modus-wc-slider", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", required: "required", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1416
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1417
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcSlider, selector: "modus-wc-slider", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", required: "required", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1336
1418
  };
1337
1419
  ModusWcSlider = __decorate([
1338
1420
  ProxyCmp({
@@ -1340,7 +1422,7 @@ ModusWcSlider = __decorate([
1340
1422
  })
1341
1423
  ], ModusWcSlider);
1342
1424
  export { ModusWcSlider };
1343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSlider, decorators: [{
1425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSlider, decorators: [{
1344
1426
  type: Component,
1345
1427
  args: [{
1346
1428
  selector: 'modus-wc-slider',
@@ -1359,14 +1441,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1359
1441
  type: Output
1360
1442
  }] } });
1361
1443
  let ModusWcStepper = class ModusWcStepper {
1444
+ z;
1445
+ el;
1446
+ stepClick = new EventEmitter();
1362
1447
  constructor(c, r, z) {
1363
1448
  this.z = z;
1364
- this.stepClick = new EventEmitter();
1365
1449
  c.detach();
1366
1450
  this.el = r.nativeElement;
1367
1451
  }
1368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1369
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcStepper, selector: "modus-wc-stepper", inputs: { customClass: "customClass", interactive: "interactive", orientation: "orientation", steps: "steps" }, outputs: { stepClick: "stepClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1452
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1453
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcStepper, selector: "modus-wc-stepper", inputs: { customClass: "customClass", interactive: "interactive", orientation: "orientation", steps: "steps" }, outputs: { stepClick: "stepClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1370
1454
  };
1371
1455
  ModusWcStepper = __decorate([
1372
1456
  ProxyCmp({
@@ -1374,7 +1458,7 @@ ModusWcStepper = __decorate([
1374
1458
  })
1375
1459
  ], ModusWcStepper);
1376
1460
  export { ModusWcStepper };
1377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcStepper, decorators: [{
1461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcStepper, decorators: [{
1378
1462
  type: Component,
1379
1463
  args: [{
1380
1464
  selector: 'modus-wc-stepper',
@@ -1389,16 +1473,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1389
1473
  type: Output
1390
1474
  }] } });
1391
1475
  let ModusWcSwitch = class ModusWcSwitch {
1476
+ z;
1477
+ el;
1478
+ inputBlur = new EventEmitter();
1479
+ inputChange = new EventEmitter();
1480
+ inputFocus = new EventEmitter();
1392
1481
  constructor(c, r, z) {
1393
1482
  this.z = z;
1394
- this.inputBlur = new EventEmitter();
1395
- this.inputChange = new EventEmitter();
1396
- this.inputFocus = new EventEmitter();
1397
1483
  c.detach();
1398
1484
  this.el = r.nativeElement;
1399
1485
  }
1400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1401
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSwitch, selector: "modus-wc-switch", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1486
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1487
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcSwitch, selector: "modus-wc-switch", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1402
1488
  };
1403
1489
  ModusWcSwitch = __decorate([
1404
1490
  ProxyCmp({
@@ -1406,7 +1492,7 @@ ModusWcSwitch = __decorate([
1406
1492
  })
1407
1493
  ], ModusWcSwitch);
1408
1494
  export { ModusWcSwitch };
1409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSwitch, decorators: [{
1495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcSwitch, decorators: [{
1410
1496
  type: Component,
1411
1497
  args: [{
1412
1498
  selector: 'modus-wc-switch',
@@ -1425,19 +1511,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1425
1511
  type: Output
1426
1512
  }] } });
1427
1513
  let ModusWcTable = class ModusWcTable {
1514
+ z;
1515
+ el;
1516
+ cellEditStart = new EventEmitter();
1517
+ cellEditCommit = new EventEmitter();
1518
+ rowClick = new EventEmitter();
1519
+ sortChange = new EventEmitter();
1520
+ paginationChange = new EventEmitter();
1521
+ rowSelectionChange = new EventEmitter();
1428
1522
  constructor(c, r, z) {
1429
1523
  this.z = z;
1430
- this.cellEditStart = new EventEmitter();
1431
- this.cellEditCommit = new EventEmitter();
1432
- this.rowClick = new EventEmitter();
1433
- this.sortChange = new EventEmitter();
1434
- this.paginationChange = new EventEmitter();
1435
- this.rowSelectionChange = new EventEmitter();
1436
1524
  c.detach();
1437
1525
  this.el = r.nativeElement;
1438
1526
  }
1439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1440
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTable, selector: "modus-wc-table", inputs: { caption: "caption", columns: "columns", currentPage: "currentPage", customClass: "customClass", data: "data", density: "density", editable: "editable", hover: "hover", isRowSelectable: "isRowSelectable", pageSizeOptions: "pageSizeOptions", paginated: "paginated", selectable: "selectable", selectedRowIds: "selectedRowIds", showPageSizeSelector: "showPageSizeSelector", sortable: "sortable", zebra: "zebra" }, outputs: { cellEditStart: "cellEditStart", cellEditCommit: "cellEditCommit", rowClick: "rowClick", sortChange: "sortChange", paginationChange: "paginationChange", rowSelectionChange: "rowSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1527
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1528
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTable, selector: "modus-wc-table", inputs: { caption: "caption", columns: "columns", currentPage: "currentPage", customClass: "customClass", data: "data", density: "density", editable: "editable", hover: "hover", isRowSelectable: "isRowSelectable", pageSizeOptions: "pageSizeOptions", paginated: "paginated", selectable: "selectable", selectedRowIds: "selectedRowIds", showPageSizeSelector: "showPageSizeSelector", sortable: "sortable", zebra: "zebra" }, outputs: { cellEditStart: "cellEditStart", cellEditCommit: "cellEditCommit", rowClick: "rowClick", sortChange: "sortChange", paginationChange: "paginationChange", rowSelectionChange: "rowSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1441
1529
  };
1442
1530
  ModusWcTable = __decorate([
1443
1531
  ProxyCmp({
@@ -1445,7 +1533,7 @@ ModusWcTable = __decorate([
1445
1533
  })
1446
1534
  ], ModusWcTable);
1447
1535
  export { ModusWcTable };
1448
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTable, decorators: [{
1536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTable, decorators: [{
1449
1537
  type: Component,
1450
1538
  args: [{
1451
1539
  selector: 'modus-wc-table',
@@ -1470,14 +1558,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1470
1558
  type: Output
1471
1559
  }] } });
1472
1560
  let ModusWcTabs = class ModusWcTabs {
1561
+ z;
1562
+ el;
1563
+ tabChange = new EventEmitter();
1473
1564
  constructor(c, r, z) {
1474
1565
  this.z = z;
1475
- this.tabChange = new EventEmitter();
1476
1566
  c.detach();
1477
1567
  this.el = r.nativeElement;
1478
1568
  }
1479
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTabs, selector: "modus-wc-tabs", inputs: { activeTabIndex: "activeTabIndex", customClass: "customClass", size: "size", tabStyle: "tabStyle", tabs: "tabs" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1569
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1570
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTabs, selector: "modus-wc-tabs", inputs: { activeTabIndex: "activeTabIndex", customClass: "customClass", size: "size", tabStyle: "tabStyle", tabs: "tabs" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1481
1571
  };
1482
1572
  ModusWcTabs = __decorate([
1483
1573
  ProxyCmp({
@@ -1485,7 +1575,7 @@ ModusWcTabs = __decorate([
1485
1575
  })
1486
1576
  ], ModusWcTabs);
1487
1577
  export { ModusWcTabs };
1488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTabs, decorators: [{
1578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTabs, decorators: [{
1489
1579
  type: Component,
1490
1580
  args: [{
1491
1581
  selector: 'modus-wc-tabs',
@@ -1500,17 +1590,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1500
1590
  type: Output
1501
1591
  }] } });
1502
1592
  let ModusWcTextInput = class ModusWcTextInput {
1593
+ z;
1594
+ el;
1595
+ clearClick = new EventEmitter();
1596
+ inputBlur = new EventEmitter();
1597
+ inputChange = new EventEmitter();
1598
+ inputFocus = new EventEmitter();
1503
1599
  constructor(c, r, z) {
1504
1600
  this.z = z;
1505
- this.clearClick = new EventEmitter();
1506
- this.inputBlur = new EventEmitter();
1507
- this.inputChange = new EventEmitter();
1508
- this.inputFocus = new EventEmitter();
1509
1601
  c.detach();
1510
1602
  this.el = r.nativeElement;
1511
1603
  }
1512
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1513
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTextInput, selector: "modus-wc-text-input", inputs: { autoCapitalize: "autoCapitalize", autoComplete: "autoComplete", autoCorrect: "autoCorrect", bordered: "bordered", clearAriaLabel: "clearAriaLabel", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", pattern: "pattern", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", type: "type", value: "value" }, outputs: { clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1604
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTextInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1605
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTextInput, selector: "modus-wc-text-input", inputs: { autoCapitalize: "autoCapitalize", autoComplete: "autoComplete", autoCorrect: "autoCorrect", bordered: "bordered", clearAriaLabel: "clearAriaLabel", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", pattern: "pattern", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", type: "type", value: "value" }, outputs: { clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1514
1606
  };
1515
1607
  ModusWcTextInput = __decorate([
1516
1608
  ProxyCmp({
@@ -1518,7 +1610,7 @@ ModusWcTextInput = __decorate([
1518
1610
  })
1519
1611
  ], ModusWcTextInput);
1520
1612
  export { ModusWcTextInput };
1521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextInput, decorators: [{
1613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTextInput, decorators: [{
1522
1614
  type: Component,
1523
1615
  args: [{
1524
1616
  selector: 'modus-wc-text-input',
@@ -1539,16 +1631,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1539
1631
  type: Output
1540
1632
  }] } });
1541
1633
  let ModusWcTextarea = class ModusWcTextarea {
1634
+ z;
1635
+ el;
1636
+ inputBlur = new EventEmitter();
1637
+ inputChange = new EventEmitter();
1638
+ inputFocus = new EventEmitter();
1542
1639
  constructor(c, r, z) {
1543
1640
  this.z = z;
1544
- this.inputBlur = new EventEmitter();
1545
- this.inputChange = new EventEmitter();
1546
- this.inputFocus = new EventEmitter();
1547
1641
  c.detach();
1548
1642
  this.el = r.nativeElement;
1549
1643
  }
1550
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1551
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTextarea, selector: "modus-wc-textarea", inputs: { autoCorrect: "autoCorrect", bordered: "bordered", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", rows: "rows", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1644
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1645
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTextarea, selector: "modus-wc-textarea", inputs: { autoCorrect: "autoCorrect", bordered: "bordered", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", rows: "rows", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1552
1646
  };
1553
1647
  ModusWcTextarea = __decorate([
1554
1648
  ProxyCmp({
@@ -1556,7 +1650,7 @@ ModusWcTextarea = __decorate([
1556
1650
  })
1557
1651
  ], ModusWcTextarea);
1558
1652
  export { ModusWcTextarea };
1559
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextarea, decorators: [{
1653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTextarea, decorators: [{
1560
1654
  type: Component,
1561
1655
  args: [{
1562
1656
  selector: 'modus-wc-textarea',
@@ -1575,13 +1669,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1575
1669
  type: Output
1576
1670
  }] } });
1577
1671
  let ModusWcThemeProvider = class ModusWcThemeProvider {
1672
+ z;
1673
+ el;
1578
1674
  constructor(c, r, z) {
1579
1675
  this.z = z;
1580
1676
  c.detach();
1581
1677
  this.el = r.nativeElement;
1582
1678
  }
1583
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeProvider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1584
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcThemeProvider, selector: "modus-wc-theme-provider", inputs: { initialTheme: "initialTheme" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1679
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcThemeProvider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1680
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcThemeProvider, selector: "modus-wc-theme-provider", inputs: { initialTheme: "initialTheme" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1585
1681
  };
1586
1682
  ModusWcThemeProvider = __decorate([
1587
1683
  ProxyCmp({
@@ -1589,7 +1685,7 @@ ModusWcThemeProvider = __decorate([
1589
1685
  })
1590
1686
  ], ModusWcThemeProvider);
1591
1687
  export { ModusWcThemeProvider };
1592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeProvider, decorators: [{
1688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcThemeProvider, decorators: [{
1593
1689
  type: Component,
1594
1690
  args: [{
1595
1691
  selector: 'modus-wc-theme-provider',
@@ -1601,14 +1697,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1601
1697
  }]
1602
1698
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1603
1699
  let ModusWcThemeSwitcher = class ModusWcThemeSwitcher {
1700
+ z;
1701
+ el;
1702
+ themeChange = new EventEmitter();
1604
1703
  constructor(c, r, z) {
1605
1704
  this.z = z;
1606
- this.themeChange = new EventEmitter();
1607
1705
  c.detach();
1608
1706
  this.el = r.nativeElement;
1609
1707
  }
1610
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeSwitcher, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1611
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcThemeSwitcher, selector: "modus-wc-theme-switcher", inputs: { customClass: "customClass" }, outputs: { themeChange: "themeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1708
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcThemeSwitcher, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1709
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcThemeSwitcher, selector: "modus-wc-theme-switcher", inputs: { customClass: "customClass" }, outputs: { themeChange: "themeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1612
1710
  };
1613
1711
  ModusWcThemeSwitcher = __decorate([
1614
1712
  ProxyCmp({
@@ -1616,7 +1714,7 @@ ModusWcThemeSwitcher = __decorate([
1616
1714
  })
1617
1715
  ], ModusWcThemeSwitcher);
1618
1716
  export { ModusWcThemeSwitcher };
1619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeSwitcher, decorators: [{
1717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcThemeSwitcher, decorators: [{
1620
1718
  type: Component,
1621
1719
  args: [{
1622
1720
  selector: 'modus-wc-theme-switcher',
@@ -1631,16 +1729,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1631
1729
  type: Output
1632
1730
  }] } });
1633
1731
  let ModusWcTimeInput = class ModusWcTimeInput {
1732
+ z;
1733
+ el;
1734
+ inputBlur = new EventEmitter();
1735
+ inputChange = new EventEmitter();
1736
+ inputFocus = new EventEmitter();
1634
1737
  constructor(c, r, z) {
1635
1738
  this.z = z;
1636
- this.inputBlur = new EventEmitter();
1637
- this.inputChange = new EventEmitter();
1638
- this.inputFocus = new EventEmitter();
1639
1739
  c.detach();
1640
1740
  this.el = r.nativeElement;
1641
1741
  }
1642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTimeInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTimeInput, selector: "modus-wc-time-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", customClass: "customClass", datalistId: "datalistId", datalistOptions: "datalistOptions", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showSeconds: "showSeconds", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1742
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTimeInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1743
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTimeInput, selector: "modus-wc-time-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", customClass: "customClass", datalistId: "datalistId", datalistOptions: "datalistOptions", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showSeconds: "showSeconds", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1644
1744
  };
1645
1745
  ModusWcTimeInput = __decorate([
1646
1746
  ProxyCmp({
@@ -1648,7 +1748,7 @@ ModusWcTimeInput = __decorate([
1648
1748
  })
1649
1749
  ], ModusWcTimeInput);
1650
1750
  export { ModusWcTimeInput };
1651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTimeInput, decorators: [{
1751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTimeInput, decorators: [{
1652
1752
  type: Component,
1653
1753
  args: [{
1654
1754
  selector: 'modus-wc-time-input',
@@ -1667,13 +1767,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1667
1767
  type: Output
1668
1768
  }] } });
1669
1769
  let ModusWcToast = class ModusWcToast {
1770
+ z;
1771
+ el;
1670
1772
  constructor(c, r, z) {
1671
1773
  this.z = z;
1672
1774
  c.detach();
1673
1775
  this.el = r.nativeElement;
1674
1776
  }
1675
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1676
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcToast, selector: "modus-wc-toast", inputs: { customClass: "customClass", delay: "delay", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1777
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1778
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcToast, selector: "modus-wc-toast", inputs: { customClass: "customClass", delay: "delay", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1677
1779
  };
1678
1780
  ModusWcToast = __decorate([
1679
1781
  ProxyCmp({
@@ -1681,7 +1783,7 @@ ModusWcToast = __decorate([
1681
1783
  })
1682
1784
  ], ModusWcToast);
1683
1785
  export { ModusWcToast };
1684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToast, decorators: [{
1786
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcToast, decorators: [{
1685
1787
  type: Component,
1686
1788
  args: [{
1687
1789
  selector: 'modus-wc-toast',
@@ -1693,13 +1795,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1693
1795
  }]
1694
1796
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1695
1797
  let ModusWcToolbar = class ModusWcToolbar {
1798
+ z;
1799
+ el;
1696
1800
  constructor(c, r, z) {
1697
1801
  this.z = z;
1698
1802
  c.detach();
1699
1803
  this.el = r.nativeElement;
1700
1804
  }
1701
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1702
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcToolbar, selector: "modus-wc-toolbar", inputs: { customClass: "customClass" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1805
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1806
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcToolbar, selector: "modus-wc-toolbar", inputs: { customClass: "customClass" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1703
1807
  };
1704
1808
  ModusWcToolbar = __decorate([
1705
1809
  ProxyCmp({
@@ -1707,7 +1811,7 @@ ModusWcToolbar = __decorate([
1707
1811
  })
1708
1812
  ], ModusWcToolbar);
1709
1813
  export { ModusWcToolbar };
1710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToolbar, decorators: [{
1814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcToolbar, decorators: [{
1711
1815
  type: Component,
1712
1816
  args: [{
1713
1817
  selector: 'modus-wc-toolbar',
@@ -1719,14 +1823,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1719
1823
  }]
1720
1824
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1721
1825
  let ModusWcTooltip = class ModusWcTooltip {
1826
+ z;
1827
+ el;
1828
+ dismissEscape = new EventEmitter();
1722
1829
  constructor(c, r, z) {
1723
1830
  this.z = z;
1724
- this.dismissEscape = new EventEmitter();
1725
1831
  c.detach();
1726
1832
  this.el = r.nativeElement;
1727
1833
  }
1728
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1729
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTooltip, selector: "modus-wc-tooltip", inputs: { content: "content", contentElement: "contentElement", customClass: "customClass", disabled: "disabled", forceOpen: "forceOpen", position: "position", tooltipId: "tooltipId" }, outputs: { dismissEscape: "dismissEscape" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1834
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1835
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTooltip, selector: "modus-wc-tooltip", inputs: { content: "content", contentElement: "contentElement", customClass: "customClass", disabled: "disabled", forceOpen: "forceOpen", position: "position", tooltipId: "tooltipId" }, outputs: { dismissEscape: "dismissEscape" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1730
1836
  };
1731
1837
  ModusWcTooltip = __decorate([
1732
1838
  ProxyCmp({
@@ -1734,7 +1840,7 @@ ModusWcTooltip = __decorate([
1734
1840
  })
1735
1841
  ], ModusWcTooltip);
1736
1842
  export { ModusWcTooltip };
1737
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTooltip, decorators: [{
1843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTooltip, decorators: [{
1738
1844
  type: Component,
1739
1845
  args: [{
1740
1846
  selector: 'modus-wc-tooltip',
@@ -1749,14 +1855,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1749
1855
  type: Output
1750
1856
  }] } });
1751
1857
  let ModusWcTreeItem = class ModusWcTreeItem {
1858
+ z;
1859
+ el;
1860
+ itemSelect = new EventEmitter();
1752
1861
  constructor(c, r, z) {
1753
1862
  this.z = z;
1754
- this.itemSelect = new EventEmitter();
1755
1863
  c.detach();
1756
1864
  this.el = r.nativeElement;
1757
1865
  }
1758
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTreeItem, selector: "modus-wc-tree-item", inputs: { blockExpand: "blockExpand", bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1866
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTreeItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1867
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTreeItem, selector: "modus-wc-tree-item", inputs: { blockExpand: "blockExpand", bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1760
1868
  };
1761
1869
  ModusWcTreeItem = __decorate([
1762
1870
  ProxyCmp({
@@ -1765,7 +1873,7 @@ ModusWcTreeItem = __decorate([
1765
1873
  })
1766
1874
  ], ModusWcTreeItem);
1767
1875
  export { ModusWcTreeItem };
1768
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeItem, decorators: [{
1876
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTreeItem, decorators: [{
1769
1877
  type: Component,
1770
1878
  args: [{
1771
1879
  selector: 'modus-wc-tree-item',
@@ -1780,15 +1888,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1780
1888
  type: Output
1781
1889
  }] } });
1782
1890
  let ModusWcTreeMenu = class ModusWcTreeMenu {
1891
+ z;
1892
+ el;
1893
+ menuFocusout = new EventEmitter();
1894
+ menuSelectionChange = new EventEmitter();
1783
1895
  constructor(c, r, z) {
1784
1896
  this.z = z;
1785
- this.menuFocusout = new EventEmitter();
1786
- this.menuSelectionChange = new EventEmitter();
1787
1897
  c.detach();
1788
1898
  this.el = r.nativeElement;
1789
1899
  }
1790
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1791
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTreeMenu, selector: "modus-wc-tree-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1900
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTreeMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1901
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTreeMenu, selector: "modus-wc-tree-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1792
1902
  };
1793
1903
  ModusWcTreeMenu = __decorate([
1794
1904
  ProxyCmp({
@@ -1796,7 +1906,7 @@ ModusWcTreeMenu = __decorate([
1796
1906
  })
1797
1907
  ], ModusWcTreeMenu);
1798
1908
  export { ModusWcTreeMenu };
1799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeMenu, decorators: [{
1909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTreeMenu, decorators: [{
1800
1910
  type: Component,
1801
1911
  args: [{
1802
1912
  selector: 'modus-wc-tree-menu',
@@ -1813,13 +1923,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1813
1923
  type: Output
1814
1924
  }] } });
1815
1925
  let ModusWcTypography = class ModusWcTypography {
1926
+ z;
1927
+ el;
1816
1928
  constructor(c, r, z) {
1817
1929
  this.z = z;
1818
1930
  c.detach();
1819
1931
  this.el = r.nativeElement;
1820
1932
  }
1821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTypography, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1822
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTypography, selector: "modus-wc-typography", inputs: { customClass: "customClass", hierarchy: "hierarchy", label: "label", size: "size", weight: "weight" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1933
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTypography, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1934
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcTypography, selector: "modus-wc-typography", inputs: { customClass: "customClass", hierarchy: "hierarchy", label: "label", size: "size", weight: "weight" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1823
1935
  };
1824
1936
  ModusWcTypography = __decorate([
1825
1937
  ProxyCmp({
@@ -1827,7 +1939,7 @@ ModusWcTypography = __decorate([
1827
1939
  })
1828
1940
  ], ModusWcTypography);
1829
1941
  export { ModusWcTypography };
1830
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTypography, decorators: [{
1942
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcTypography, decorators: [{
1831
1943
  type: Component,
1832
1944
  args: [{
1833
1945
  selector: 'modus-wc-typography',
@@ -1839,15 +1951,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1839
1951
  }]
1840
1952
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1841
1953
  let ModusWcUtilityPanel = class ModusWcUtilityPanel {
1954
+ z;
1955
+ el;
1956
+ panelOpened = new EventEmitter();
1957
+ panelClosed = new EventEmitter();
1842
1958
  constructor(c, r, z) {
1843
1959
  this.z = z;
1844
- this.panelOpened = new EventEmitter();
1845
- this.panelClosed = new EventEmitter();
1846
1960
  c.detach();
1847
1961
  this.el = r.nativeElement;
1848
1962
  }
1849
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcUtilityPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1850
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcUtilityPanel, selector: "modus-wc-utility-panel", inputs: { customClass: "customClass", expanded: "expanded", pushContent: "pushContent", targetElement: "targetElement" }, outputs: { panelOpened: "panelOpened", panelClosed: "panelClosed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1963
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcUtilityPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1964
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ModusWcUtilityPanel, selector: "modus-wc-utility-panel", inputs: { customClass: "customClass", expanded: "expanded", pushContent: "pushContent", targetElement: "targetElement" }, outputs: { panelOpened: "panelOpened", panelClosed: "panelClosed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1851
1965
  };
1852
1966
  ModusWcUtilityPanel = __decorate([
1853
1967
  ProxyCmp({
@@ -1855,7 +1969,7 @@ ModusWcUtilityPanel = __decorate([
1855
1969
  })
1856
1970
  ], ModusWcUtilityPanel);
1857
1971
  export { ModusWcUtilityPanel };
1858
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcUtilityPanel, decorators: [{
1972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ModusWcUtilityPanel, decorators: [{
1859
1973
  type: Component,
1860
1974
  args: [{
1861
1975
  selector: 'modus-wc-utility-panel',
@@ -1871,4 +1985,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1871
1985
  }], panelClosed: [{
1872
1986
  type: Output
1873
1987
  }] } });
1874
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cy1hbmd1bGFyL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWhJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFpQmxELElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBRzNCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFEMUQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBc0UsQ0FBQztRQUVoSCxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQzsrR0FOVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixpSkFOakIsMkJBQTJCOztBQU0xQixnQkFBZ0I7SUFaNUIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQ3hCLENBQUM7R0FVVyxnQkFBZ0IsQ0FPNUI7OzRGQVBZLGdCQUFnQjtrQkFUNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsdUVBQXVFO29CQUN2RSxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixVQUFVLEVB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TSIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQcm94eUNtcCB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddLFxuICBvdXRwdXRzOiBbJ2V4cGFuZGVkQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQWNjb3JkaW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQWNjb3JkaW9uQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbjsgaW5kZXg6IG51bWJlcjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQWNjb3JkaW9uQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NBY2NvcmRpb24ge1xuICAvKipcbiAgICogV2hlbiBhIGNvbGxhcHNlIGV4cGFuZGVkIHN0YXRlIGlzIGNoYW5nZWQsIHRoaXMgZXZlbnQgb3V0cHV0cyB0aGUgcmVsZXZhbnQgaW5kZXggYW5kIHN0YXRlXG4gICAqL1xuICBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBY2NvcmRpb25DdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuOyBpbmRleDogbnVtYmVyOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsZXJ0RGVzY3JpcHRpb24nLCAnYWxlcnRUaXRsZScsICdjdXN0b21DbGFzcycsICdkZWxheScsICdkaXNhYmxlSWNvbicsICdkaXNtaXNzaWJsZScsICdpY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWFsZXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGVydERlc2NyaXB0aW9uJywgeyBuYW1lOiAnYWxlcnRUaXRsZScsIHJlcXVpcmVkOiB0cnVlIH0sICdjdXN0b21DbGFzcycsICdkZWxheScsICdkaXNhYmxlSWNvbicsICdkaXNtaXNzaWJsZScsICdpY29uJywgJ3ZhcmlhbnQnXSxcbiAgb3V0cHV0czogWydkaXNtaXNzQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0FsZXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0FsZXJ0RWxlbWVudDtcbiAgQE91dHB1dCgpIGRpc21pc3NDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0FsZXJ0Q3VzdG9tRXZlbnQ8YW55Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NBbGVydEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQWxlcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NBbGVydCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IGZpcmVzIHdoZW4gdGhlIGFsZXJ0IGlzIGRpc21pc3NlZFxuICAgKi9cbiAgZGlzbWlzc0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FsZXJ0Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FwcHMnLCAnY3VzdG9tQ2xhc3MnLCAnbGF5b3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1hcHAtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwcycsICdjdXN0b21DbGFzcycsICdsYXlvdXQnXSxcbiAgb3V0cHV0czogWydsYXlvdXRDaGFuZ2UnLCAnaXRlbXNPcmRlckNoYW5nZScsICdpdGVtQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0FwcE1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXBwTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBsYXlvdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBcHBNZW51Q3VzdG9tRXZlbnQ8eyBsYXlvdXQ6ICdsaXN0JyB8ICdncmlkJzsgfT4+KCk7XG4gIEBPdXRwdXQoKSBpdGVtc09yZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PElNb2R1c1djQXBwTWVudUlBcHBNZW51SXRlbVtdPj4oKTtcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGFwcE5hbWU6IElNb2R1c1djQXBwTWVudUFwcE5hbWUgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElBcHBNZW51SXRlbSBhcyBJTW9kdXNXY0FwcE1lbnVJQXBwTWVudUl0ZW0gfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgQXBwTmFtZSBhcyBJTW9kdXNXY0FwcE1lbnVBcHBOYW1lIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQXBwTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0FwcE1lbnUge1xuICAvKipcbiAgICogRW1pdCBldmVudCB3aGVuIHRoZSBsYXlvdXQgY2hhbmdlc1xuICAgKi9cbiAgbGF5b3V0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGxheW91dDogJ2xpc3QnIHwgJ2dyaWQnOyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gcmVvcmRlcmluZyBpcyBjb25maXJtZWQgdmlhIFwiRG9uZVwiIGFuZCB0aGUgb3JkZXIgZGlmZmVycyBmcm9tIHdoZW4gZWRpdCBzdGFydGVkXG4gICAqL1xuICBpdGVtc09yZGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDxJTW9kdXNXY0FwcE1lbnVJQXBwTWVudUl0ZW1bXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGFwcE5hbWU6IElNb2R1c1djQXBwTWVudUFwcE5hbWUgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQmx1cicsICdjdXN0b21DbGFzcycsICdjdXN0b21JbnB1dENoYW5nZScsICdjdXN0b21JdGVtU2VsZWN0JywgJ2N1c3RvbUtleURvd24nLCAnZGVib3VuY2VNcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbmNsdWRlQ2xlYXInLCAnaW5jbHVkZVNlYXJjaCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnaXRlbXMnLCAnbGFiZWwnLCAnbGVhdmVNZW51T3BlbicsICdtYXhDaGlwcycsICdtaW5DaGFycycsICdtaW5JbnB1dFdpZHRoJywgJ211bHRpU2VsZWN0JywgJ25hbWUnLCAnbm9SZXN1bHRzJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dNZW51T25Gb2N1cycsICdzaG93U3Bpbm5lcicsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnc2VsZWN0SXRlbScsICdvcGVuTWVudScsICdjbG9zZU1lbnUnLCAndG9nZ2xlTWVudScsICdmb2N1c0lucHV0JywgJ2NsZWFySW5wdXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWF1dG9jb21wbGV0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUJsdXInLCAnY3VzdG9tQ2xhc3MnLCAnY3VzdG9tSW5wdXRDaGFuZ2UnLCAnY3VzdG9tSXRlbVNlbGVjdCcsICdjdXN0b21LZXlEb3duJywgJ2RlYm91bmNlTXMnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5jbHVkZUNsZWFyJywgJ2luY2x1ZGVTZWFyY2gnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2l0ZW1zJywgJ2xhYmVsJywgJ2xlYXZlTWVudU9wZW4nLCAnbWF4Q2hpcHMnLCAnbWluQ2hhcnMnLCAnbWluSW5wdXRXaWR0aCcsICdtdWx0aVNlbGVjdCcsICduYW1lJywgJ25vUmVzdWx0cycsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93TWVudU9uRm9jdXMnLCAnc2hvd1NwaW5uZXInLCAnc2l6ZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2NoaXBSZW1vdmUnLCAnY2hpcHNFeHBhbnNpb25DaGFuZ2UnLCAnY2xlYXJDbGljaycsICdpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cycsICdpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBdXRvY29tcGxldGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXV0b2NvbXBsZXRlRWxlbWVudDtcbiAgQE91dHB1dCgpIGNoaXBSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj4oKTtcbiAgQE91dHB1dCgpIGNoaXBzRXhwYW5zaW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIGNsZWFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSUF1dG9jb21wbGV0ZUl0ZW0gYXMgSU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0F1dG9jb21wbGV0ZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0F1dG9jb21wbGV0ZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBzZWxlY3RlZCBpdGVtIGNoaXAgaXMgcmVtb3ZlZC5cbiAgICovXG4gIGNoaXBSZW1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGNoaXBzIGV4cGFuc2lvbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgY2hpcHNFeHBhbnNpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2xlYXJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblRoaXMgZXZlbnQgaXMgZGVib3VuY2VkIGJhc2VkIG9uIHRoZSBkZWJvdW5jZU1zIHByb3AuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsdCcsICdjdXN0b21DbGFzcycsICdpbWdTcmMnLCAnaW5pdGlhbHMnLCAnc2hhcGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYXZhdGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW3sgbmFtZTogJ2FsdCcsIHJlcXVpcmVkOiB0cnVlIH0sICdjdXN0b21DbGFzcycsICdpbWdTcmMnLCAnaW5pdGlhbHMnLCAnc2hhcGUnLCAnc2l6ZSddLFxuICBvdXRwdXRzOiBbJ2ltYWdlTG9hZEVycm9yJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBdmF0YXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXZhdGFyRWxlbWVudDtcbiAgQE91dHB1dCgpIGltYWdlTG9hZEVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXZhdGFyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdmF0YXJJQXZhdGFySW1hZ2VMb2FkRXJyb3I+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0F2YXRhckN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElBdmF0YXJJbWFnZUxvYWRFcnJvciBhcyBJTW9kdXNXY0F2YXRhcklBdmF0YXJJbWFnZUxvYWRFcnJvciB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0F2YXRhciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0F2YXRhciB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGF2YXRhciBpbWFnZSBmYWlscyB0byBsb2FkLlxuICAgKi9cbiAgaW1hZ2VMb2FkRXJyb3I6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXZhdGFyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdmF0YXJJQXZhdGFySW1hZ2VMb2FkRXJyb3I+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCYWRnZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0JhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc3BsYXlNb2RlJywgJ2RyYWdTdGVwVGhyZXNob2xkJywgJ2hlYWRlcicsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1ib3R0b20tc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc3BsYXlNb2RlJywgJ2RyYWdTdGVwVGhyZXNob2xkJywgJ2hlYWRlcicsICd2aXNpYmxlJ10sXG4gIG91dHB1dHM6IFsnc2hlZXRWaXNpYmlsaXR5Q2hhbmdlJywgJ2Rpc3BsYXlNb2RlQ2hhbmdlJywgJ2hlYWRlckJhY2tDbGljaycsICdoZWFkZXJDbG9zZUNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCb3R0b21TaGVldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCb3R0b21TaGVldEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBzaGVldFZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHsgdmlzaWJsZTogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIGRpc3BsYXlNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx7IGRpc3BsYXlNb2RlOiBJTW9kdXNXY0JvdHRvbVNoZWV0VEJvdHRvbVNoZWV0RGlzcGxheU1vZGU7IH0+PigpO1xuICBAT3V0cHV0KCkgaGVhZGVyQmFja0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGhlYWRlckNsb3NlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgVEJvdHRvbVNoZWV0RGlzcGxheU1vZGUgYXMgSU1vZHVzV2NCb3R0b21TaGVldFRCb3R0b21TaGVldERpc3BsYXlNb2RlIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQm90dG9tU2hlZXQgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NCb3R0b21TaGVldCB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlIGJvdHRvbSBzaGVldCBjaGFuZ2VzLlxuICAgKi9cbiAgc2hlZXRWaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheSBtb2RlIGNoYW5nZXMsIHdoZXRoZXIgZnJvbSBhIGRyYWcva2V5Ym9hcmRcbmludGVyYWN0aW9uIG9yIGZyb20gc2V0dGluZyB0aGUgYGRpc3BsYXlNb2RlYCBwcm9wLiBUaGUgbmV3IG1vZGUgaXMgaW5cbmBkZXRhaWwuZGlzcGxheU1vZGVgLlxuICAgKi9cbiAgZGlzcGxheU1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx7IGRpc3BsYXlNb2RlOiBJTW9kdXNXY0JvdHRvbVNoZWV0VEJvdHRvbVNoZWV0RGlzcGxheU1vZGU7IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVhZGVyIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuIERvZXMgbm90IGNoYW5nZSBzaGVldCBzdGF0ZS5cbiAgICovXG4gIGhlYWRlckJhY2tDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVhZGVyIGRpc21pc3MgYnV0dG9uIGlzIGNsaWNrZWQuXG5UaGUgc2hlZXQgaXMgYWxzbyBjbG9zZWQgYXV0b21hdGljYWxseSAoYHZpc2libGVgIGlzIHNldCB0byBgZmFsc2VgKS5cbiAgICovXG4gIGhlYWRlckNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2l0ZW1zJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWJyZWFkY3J1bWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpdGVtcycsICdzaXplJ10sXG4gIG91dHB1dHM6IFsnYnJlYWRjcnVtYkNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCcmVhZGNydW1icyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCcmVhZGNydW1ic0VsZW1lbnQ7XG4gIEBPdXRwdXQoKSBicmVhZGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCcmVhZGNydW1ic0N1c3RvbUV2ZW50PElNb2R1c1djQnJlYWRjcnVtYnNJQnJlYWRjcnVtYj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQnJlYWRjcnVtYnNDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJQnJlYWRjcnVtYiBhcyBJTW9kdXNXY0JyZWFkY3J1bWJzSUJyZWFkY3J1bWIgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCcmVhZGNydW1icyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0JyZWFkY3J1bWJzIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGJyZWFkY3J1bWIgaXMgY2xpY2tlZC5cbiAgICovXG4gIGJyZWFkY3J1bWJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NCcmVhZGNydW1ic0N1c3RvbUV2ZW50PElNb2R1c1djQnJlYWRjcnVtYnNJQnJlYWRjcnVtYj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAncHJlc3NlZCcsICdzaGFwZScsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAncHJlc3NlZCcsICdzaGFwZScsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2J1dHRvbkNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQnV0dG9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0J1dHRvbkN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQnV0dG9uIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvblR5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkaXNhYmxlZCcsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25UeXBlJywgJ3ZhcmlhbnQnXSxcbiAgb3V0cHV0czogWydidXR0b25Hcm91cENsaWNrJywgJ2J1dHRvblNlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQnV0dG9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQnV0dG9uR3JvdXBFbGVtZW50O1xuICBAT3V0cHV0KCkgYnV0dG9uR3JvdXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBidXR0b246IEhUTUxFbGVtZW50OyBpc1NlbGVjdGVkOiBib29sZWFuOyB9Pj4oKTtcbiAgQE91dHB1dCgpIGJ1dHRvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEJ1dHRvbnM6IEhUTUxFbGVtZW50W107IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0J1dHRvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbnkgYnV0dG9uIGluIHRoZSBncm91cCBpcyBjbGlja2VkXG4gICAqL1xuICBidXR0b25Hcm91cENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBidXR0b246IEhUTUxFbGVtZW50OyBpc1NlbGVjdGVkOiBib29sZWFuOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYnV0dG9uIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAqL1xuICBidXR0b25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudDx7IHNlbGVjdGVkQnV0dG9uczogSFRNTEVsZW1lbnRbXTsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kRmlndXJlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2xheW91dCcsICdwYWRkaW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kRmlndXJlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2xheW91dCcsICdwYWRkaW5nJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NDYXJkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NhcmRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NhcmQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NoZWNrYm94RWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ2hlY2tib3ggZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NDaGVja2JveCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2hhc0Vycm9yJywgJ2xhYmVsJywgJ211bHRpbGluZScsICdzaGFwZScsICdzaG93UmVtb3ZlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2hhc0Vycm9yJywgJ2xhYmVsJywgJ211bHRpbGluZScsICdzaGFwZScsICdzaG93UmVtb3ZlJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2NoaXBDbGljaycsICdjaGlwUmVtb3ZlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NDaGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NoaXBFbGVtZW50O1xuICBAT3V0cHV0KCkgY2hpcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGNoaXBSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGlwQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0NoaXBDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0NoaXAgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NDaGlwIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hpcCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBjaGlwQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsb3NlIGNoaXAgaWNvbiBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIGNoaXBSZW1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZXZyb25Qb3NpdGlvbicsICdjb2xsYXBzZUlkJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ29wdGlvbnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWNvbGxhcHNlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjaGV2cm9uUG9zaXRpb24nLCAnY29sbGFwc2VJZCcsICdjdXN0b21DbGFzcycsICdleHBhbmRlZCcsICdvcHRpb25zJ10sXG4gIG91dHB1dHM6IFsnZXhwYW5kZWRDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NvbGxhcHNlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NvbGxhcHNlRWxlbWVudDtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29sbGFwc2VDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0NvbGxhcHNlQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NDb2xsYXBzZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NvbGxhcHNlIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZXhwYW5kZWQgcHJvcCBpcyBpbnRlcm5hbGx5IGNoYW5nZWQuXG4gICAqL1xuICBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb2xsYXBzZUN1c3RvbUV2ZW50PHsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbGxvd0RyYWdEcm9wJywgJ2JvcmRlcmVkJywgJ2NoZWNrZWROb2RlSWRzJywgJ2N1c3RvbUNsYXNzJywgJ2VkaXRpbmdOb2RlSWQnLCAnZXhwYW5kZWROb2RlSWRzJywgJ2ZpbHRlcicsICdub2RlcycsICdzZWFyY2hhYmxlJywgJ3NlbGVjdGVkTm9kZUlkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZScsICd0b29sYmFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jb250ZW50LXRyZWUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsbG93RHJhZ0Ryb3AnLCAnYm9yZGVyZWQnLCAnY2hlY2tlZE5vZGVJZHMnLCAnY3VzdG9tQ2xhc3MnLCAnZWRpdGluZ05vZGVJZCcsICdleHBhbmRlZE5vZGVJZHMnLCAnZmlsdGVyJywgJ25vZGVzJywgJ3NlYXJjaGFibGUnLCAnc2VsZWN0ZWROb2RlSWQnLCAnc2VsZWN0aW9uTW9kZScsICdzaXplJywgJ3Rvb2xiYXInXSxcbiAgb3V0cHV0czogWydub2RlU2VsZWN0JywgJ25vZGVFeHBhbmRDaGFuZ2UnLCAnbm9kZUNoZWNrQ2hhbmdlJywgJ25vZGVFZGl0JywgJ25vZGVEdXBsaWNhdGUnLCAnbm9kZUFkZCcsICdub2RlRGVsZXRlJywgJ25vZGVSZW5hbWUnLCAnbm9kZUVkaXRDYW5jZWwnLCAnbm9kZU1vdmUnLCAnbm9kZUxvYWRDaGlsZHJlbicsICdleHBhbmRBbGxDaGFuZ2UnLCAnbm9kZXNEZWxldGUnLCAnbm9kZVZpc2liaWxpdHlDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NvbnRlbnRUcmVlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NvbnRlbnRUcmVlRWxlbWVudDtcbiAgQE91dHB1dCgpIG5vZGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVFeHBhbmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW47IH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUNoZWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW47IH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVEdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgcmVmZXJlbmNlSWQ6IHN0cmluZzsgcG9zaXRpb246ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2NoaWxkJzsgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlUmVuYW1lID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlRWRpdENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZU1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgdGFyZ2V0SWQ6IHN0cmluZzsgcG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdpbnNpZGUnOyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVMb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZEFsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVzRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkczogc3RyaW5nW10gfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlVmlzaWJpbGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBkaXNhYmxlZDogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0NvbnRlbnRUcmVlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQ29udGVudFRyZWUge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC4gVGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBzaG91bGQgdXBkYXRlIGBzZWxlY3RlZE5vZGVJZGAuXG4gICAqL1xuICBub2RlU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5vZGUncyBleHBhbnNpb24gaXMgdG9nZ2xlZC4gVGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBzaG91bGQgdXBkYXRlIGBleHBhbmRlZE5vZGVJZHNgLlxuICAgKi9cbiAgbm9kZUV4cGFuZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW47IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGNoZWNrYm94IGlzIHRvZ2dsZWQgKG11bHRpLXNlbGVjdCkuIFRoZSBjb25zdW1pbmcgYXBwbGljYXRpb24gc2hvdWxkIHVwZGF0ZSBgY2hlY2tlZE5vZGVJZHNgLlxuICAgKi9cbiAgbm9kZUNoZWNrQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBjaGVja2VkOiBib29sZWFuOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gXCJFZGl0IG5hbWVcIiBpcyBjaG9zZW4uIFRoZSBhcHAgc2hvdWxkIHNldCBgZWRpdGluZ05vZGVJZGAgdG8gdGhpcyBpZC5cbiAgICovXG4gIG5vZGVFZGl0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcIkR1cGxpY2F0ZVwiIGlzIGNob3Nlbi4gVGhlIGFwcCBzaG91bGQgY2xvbmUgdGhlIG5vZGUgYmVsb3cgaXQgYW5kIHNldCBgZWRpdGluZ05vZGVJZGAgdG8gdGhlIG5ldyBpZC5cbiAgICovXG4gIG5vZGVEdXBsaWNhdGU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIFwiQWRkIE5ldyBBYm92ZS9CZWxvd1wiIG9yIFwiQWRkIENoaWxkIE5vZGVcIiBpcyBjaG9zZW4uIFRoZSBhcHAgc2hvdWxkIGluc2VydCBhIG5vZGUgYXQgdGhlIHJlcXVlc3RlZCBwb3NpdGlvbiBhbmQgc2V0IGBlZGl0aW5nTm9kZUlkYCB0byB0aGUgbmV3IGlkLlxuICAgKi9cbiAgbm9kZUFkZDogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgcmVmZXJlbmNlSWQ6IHN0cmluZzsgcG9zaXRpb246ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2NoaWxkJzsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyBkZWxldGlvbi4gVGhlIGFwcCBzaG91bGQgcmVtb3ZlIHRoZSBub2RlIGZyb20gYG5vZGVzYC5cbiAgICovXG4gIG5vZGVEZWxldGU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGlubGluZSBlZGl0IGlzIGNvbW1pdHRlZCB3aXRoIGFuIGVmZmVjdGl2ZSBsYWJlbCBjaGFuZ2UgKHZpYSBFbnRlciBvciBsb3NpbmcgZm9jdXMpLiBUaGUgYXBwIHNob3VsZCBhcHBseSB0aGUgbmV3IGxhYmVsIGFuZCBjbGVhciBgZWRpdGluZ05vZGVJZGAuXG4gICAqL1xuICBub2RlUmVuYW1lOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpbmxpbmUgZWRpdCBlbmRzIHdpdGhvdXQgYW4gZWZmZWN0aXZlIGNoYW5nZSDigJQgdmlhIEVzY2FwZSwgb3IgRW50ZXIvYmx1ciB3aGlsZSB0aGUgZHJhZnQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgbGFiZWwuIFRoZSBhcHAgc2hvdWxkIGNsZWFyIGBlZGl0aW5nTm9kZUlkYCAoYW5kIGRpc2NhcmQgYSBmcmVzaGx5IGFkZGVkIG5vZGUgaWYgaXRzIG5hbWUgaXMgc3RpbGwgZW1wdHkpLlxuICAgKi9cbiAgbm9kZUVkaXRDYW5jZWw6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgZHJhZy1hbmQtZHJvcCwgb25jZSB0aGUgZ2VzdHVyZSBlbmRzIChgZHJhZ2VuZGApLiBFbWl0dGluZyBvbiBgZHJhZ2VuZGAgKG5vdCBgZHJvcGApIGtlZXBzIHRoZSBkcmFnIHNvdXJjZSBpbiB0aGUgRE9NIHVudGlsIHRoZSBicm93c2VyIGZpbmlzaGVzIHRoZSBnZXN0dXJlLCBzbyBhcHBseWluZyB0aGUgbW92ZSAoZS5nLiB2aWEgYG1vdmVOb2RlUmVsYXRpdmVgKSBjYW5ub3QgdGVhciBkb3duIHRoZSBoYW5kbGUgbWlkLWRyYWcuIGBwb3NpdGlvbmAgaXMgcmVsYXRpdmUgdG8gYHRhcmdldElkYDogYGJlZm9yZWAvYGFmdGVyYCByZW9yZGVyIGFtb25nIHRoZSB0YXJnZXQncyBzaWJsaW5nczsgYGluc2lkZWAgbmVzdHMgdGhlIG5vZGUgYXMgdGhlIHRhcmdldCdzIGZpcnN0IGNoaWxkLlxuICAgKi9cbiAgbm9kZU1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IHRhcmdldElkOiBzdHJpbmc7IHBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCAnaW5zaWRlJzsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB0aGUgZmlyc3QgdGltZSBhIGxhenkgbm9kZSAoYGhhc0NoaWxkcmVuOiB0cnVlYCB3aXRoIG5vIGBjaGlsZHJlbmAgeWV0KSBpcyBleHBhbmRlZC4gVGhlIGFwcCBzaG91bGQgZmV0Y2ggdGhlIG5vZGUncyBjaGlsZHJlbiBhbmQgYXNzaWduIHRoZW0gdG8gYG5vZGVzYCAodXNlIGBbXWAgd2hlbiB0aGVyZSBhcmUgbm9uZSk7IHRoZSBjb21wb25lbnQgc2hvd3MgYSBzcGlubmVyIHVudGlsIGBjaGlsZHJlbmAgaXMgZGVmaW5lZC5cbiAgICovXG4gIG5vZGVMb2FkQ2hpbGRyZW46IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0b29sYmFyJ3MgZXhwYW5kLWFsbCAvIGNvbGxhcHNlLWFsbCB0b2dnbGUgaXMgY2xpY2tlZC4gVGhlIGFwcCBzaG91bGQgc2V0IGBleHBhbmRlZE5vZGVJZHNgIHRvIGV2ZXJ5IGV4cGFuZGFibGUgaWQgKGUuZy4gdmlhIGBnZXRFeHBhbmRhYmxlTm9kZUlkc2ApIHdoZW4gYGV4cGFuZGVkYCBpcyBgdHJ1ZWAsIG9yIHRvIGBbXWAgd2hlbiBgZmFsc2VgLlxuICAgKi9cbiAgZXhwYW5kQWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRvb2xiYXIncyBkZWxldGUgYnV0dG9uIGlzIGNvbmZpcm1lZC4gYGlkc2AgYXJlIHRoZSB0b3AtbW9zdCBjaGVja2VkIG5vZGVzOyB0aGUgYXBwIHNob3VsZCByZW1vdmUgdGhlbSAoZS5nLiB2aWEgYGRlbGV0ZU5vZGVzYCkuXG4gICAqL1xuICBub2Rlc0RlbGV0ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWRzOiBzdHJpbmdbXSB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBub2RlJ3MgdmlzaWJpbGl0eSAoZXllKSB0b2dnbGUgaXMgY2xpY2tlZC4gYGRpc2FibGVkYCBpcyB0aGUgbmV3IHN0YXRlLiBUaGUgYXBwIHNob3VsZCB1cGRhdGUgdGhlIG5vZGUncyBvd24gYGRpc2FibGVkYCBzdGF0ZSAoZS5nLiB2aWEgYHNldE5vZGVEaXNhYmxlZGApOyBkZXNjZW5kYW50cyBiZWNvbWUgZWZmZWN0aXZlbHkgZGlzYWJsZWQgdmlhIGFuY2VzdG9yIGluaGVyaXRhbmNlLlxuICAgKi9cbiAgbm9kZVZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGRpc2FibGVkOiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2VuZFZhbHVlJywgJ2ZlZWRiYWNrJywgJ2Zvcm1hdCcsICdoaWRlT3ZlcmZsb3dEYXRlcycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dXZWVrTnVtYmVycycsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnLCAnd2Vla1N0YXJ0RGF5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kYXRlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdlbmRWYWx1ZScsICdmZWVkYmFjaycsICdmb3JtYXQnLCAnaGlkZU92ZXJmbG93RGF0ZXMnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93V2Vla051bWJlcnMnLCAnc2l6ZScsICd0eXBlJywgJ3ZhbHVlJywgJ3dlZWtTdGFydERheSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJywgJ2NhbGVuZGFyTW9udGhDaGFuZ2UnLCAnY2FsZW5kYXJZZWFyQ2hhbmdlJywgJ2VuZENhbGVuZGFyTW9udGhDaGFuZ2UnLCAnZW5kQ2FsZW5kYXJZZWFyQ2hhbmdlJywgJ3JhbmdlQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NEYXRlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0RhdGVFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJNb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJZZWFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+KCk7XG4gIEBPdXRwdXQoKSBlbmRDYWxlbmRhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+KCk7XG4gIEBPdXRwdXQoKSBlbmRDYWxlbmRhclllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElNb2R1c1djRGF0ZUlEYXRlUmFuZ2U+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0RhdGVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJRGF0ZVJhbmdlIGFzIElNb2R1c1djRGF0ZUlEYXRlUmFuZ2UgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NEYXRlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djRGF0ZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLiBJbiByYW5nZSBtb2RlLCBgZGV0YWlsLmZpZWxkYCBpcyBgJ3N0YXJ0J2Agb3IgYCdlbmQnYC5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBgdGFyZ2V0LnZhbHVlYCBpcyBhbHdheXMgSVNPIDg2MDEgKFlZWVktTU0tREQpLCBvciBlbXB0eSBzdHJpbmcgd2hlbiBpbmNvbXBsZXRlIG9yIGludmFsaWQuIEluIHJhbmdlIG1vZGUsIGBkZXRhaWwuZmllbGRgIGlzIGAnc3RhcnQnYCBvciBgJ2VuZCdgLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuIEluIHJhbmdlIG1vZGUsIGBkZXRhaWwuZmllbGRgIGlzIGAnc3RhcnQnYCBvciBgJ2VuZCdgLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzdGFydCAob3Igc2luZ2xlLW1vZGUpIGNhbGVuZGFyIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgY2FsZW5kYXJNb250aENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHN0YXJ0IChvciBzaW5nbGUtbW9kZSkgY2FsZW5kYXIgeWVhciBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIGNhbGVuZGFyWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVuZCBjYWxlbmRhciBtb250aCBzZWxlY3Rpb24gY2hhbmdlcyBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgZW5kQ2FsZW5kYXJNb250aENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVuZCBjYWxlbmRhciB5ZWFyIHNlbGVjdGlvbiBjaGFuZ2VzIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRDYWxlbmRhclllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY29tcGxldGUgZGF0ZSByYW5nZSBpcyBzZWxlY3RlZCBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgcmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElNb2R1c1djRGF0ZUlEYXRlUmFuZ2U+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY29udGVudCcsICdjdXN0b21DbGFzcycsICdvcmllbnRhdGlvbicsICdwb3NpdGlvbicsICdyZXNwb25zaXZlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjb250ZW50JywgJ2N1c3RvbUNsYXNzJywgJ29yaWVudGF0aW9uJywgJ3Bvc2l0aW9uJywgJ3Jlc3BvbnNpdmUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0RpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djRGl2aWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydidXR0b25BcmlhTGFiZWwnLCAnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2hhcGUnLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ21lbnVCb3JkZXJlZCcsICdtZW51T2Zmc2V0JywgJ21lbnVQbGFjZW1lbnQnLCAnbWVudVNpemUnLCAnbWVudVN0cmF0ZWd5JywgJ21lbnVWaXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kcm9wZG93bi1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b25BcmlhTGFiZWwnLCAnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2hhcGUnLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ21lbnVCb3JkZXJlZCcsICdtZW51T2Zmc2V0JywgJ21lbnVQbGFjZW1lbnQnLCAnbWVudVNpemUnLCAnbWVudVN0cmF0ZWd5JywgJ21lbnVWaXNpYmxlJ10sXG4gIG91dHB1dHM6IFsnbWVudVZpc2liaWxpdHlDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0Ryb3Bkb3duTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NEcm9wZG93bk1lbnVFbGVtZW50O1xuICBAT3V0cHV0KCkgbWVudVZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEcm9wZG93bk1lbnVDdXN0b21FdmVudDx7IGlzVmlzaWJsZTogYm9vbGVhbiB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NEcm9wZG93bk1lbnVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0Ryb3Bkb3duTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0Ryb3Bkb3duTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnVWaXNpYmxlIHByb3AgY2hhbmdlcy5cbiAgICovXG4gIG1lbnVWaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0Ryb3Bkb3duTWVudUN1c3RvbUV2ZW50PHsgaXNWaXNpYmxlOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWNjZXB0RmlsZVR5cGVzJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2ZpbGVEcmFnZ2VkT3Zlckluc3RydWN0aW9ucycsICdpbmNsdWRlU3RhdGVJY29uJywgJ2luc3RydWN0aW9ucycsICdpbnZhbGlkRmlsZVR5cGVNZXNzYWdlJywgJ21heEZpbGVDb3VudCcsICdtYXhGaWxlTmFtZUxlbmd0aCcsICdtYXhUb3RhbEZpbGVTaXplQnl0ZXMnLCAnbXVsdGlwbGUnLCAnc3VjY2Vzc01lc3NhZ2UnXSxcbiAgbWV0aG9kczogWydyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtZmlsZS1kcm9wem9uZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWNjZXB0RmlsZVR5cGVzJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2ZpbGVEcmFnZ2VkT3Zlckluc3RydWN0aW9ucycsICdpbmNsdWRlU3RhdGVJY29uJywgJ2luc3RydWN0aW9ucycsICdpbnZhbGlkRmlsZVR5cGVNZXNzYWdlJywgJ21heEZpbGVDb3VudCcsICdtYXhGaWxlTmFtZUxlbmd0aCcsICdtYXhUb3RhbEZpbGVTaXplQnl0ZXMnLCAnbXVsdGlwbGUnLCAnc3VjY2Vzc01lc3NhZ2UnXSxcbiAgb3V0cHV0czogWydmaWxlU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NGaWxlRHJvcHpvbmUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djRmlsZURyb3B6b25lRWxlbWVudDtcbiAgQE91dHB1dCgpIGZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NGaWxlRHJvcHpvbmVDdXN0b21FdmVudDxGaWxlTGlzdD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djRmlsZURyb3B6b25lQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NGaWxlRHJvcHpvbmUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NGaWxlRHJvcHpvbmUge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGZpbGVzIGFyZSBzZWxlY3RlZFxuICAgKi9cbiAgZmlsZVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NGaWxlRHJvcHpvbmVDdXN0b21FdmVudDxGaWxlTGlzdD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydidXR0b25Db2xvcicsICdidXR0b25TaXplJywgJ2J1dHRvblZhcmlhbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGVmYXVsdFNwbGl0JywgJ2RlbnNpdHknLCAnbGVmdFRhcmdldCcsICdvcmllbnRhdGlvbicsICdyaWdodFRhcmdldCcsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWhhbmRsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2RlZmF1bHRTcGxpdCcsICdkZW5zaXR5JywgJ2xlZnRUYXJnZXQnLCAnb3JpZW50YXRpb24nLCAncmlnaHRUYXJnZXQnLCAnc2l6ZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NIYW5kbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSGFuZGxlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0hhbmRsZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0hhbmRsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWNvcmF0aXZlJywgJ25hbWUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1pY29uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWNvcmF0aXZlJywgeyBuYW1lOiAnbmFtZScsIHJlcXVpcmVkOiB0cnVlIH0sICdzaXplJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0ljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSWNvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJY29uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSWNvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpY29uJywgJ2xldmVsJywgJ21lc3NhZ2UnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtaW5wdXQtZmVlZGJhY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ljb24nLCB7IG5hbWU6ICdsZXZlbCcsIHJlcXVpcmVkOiB0cnVlIH0sICdtZXNzYWdlJywgJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0lucHV0RmVlZGJhY2sge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSW5wdXRGZWVkYmFja0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJbnB1dEZlZWRiYWNrIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSW5wdXRGZWVkYmFjayB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdmb3JJZCcsICdsYWJlbFRleHQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdWJMYWJlbFRleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWlucHV0LWxhYmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdmb3JJZCcsICdsYWJlbFRleHQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdWJMYWJlbFRleHQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0lucHV0TGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSW5wdXRMYWJlbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJbnB1dExhYmVsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSW5wdXRMYWJlbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdocmVmJywgJ3JlbCcsICd0YXJnZXQnLCAndW5kZXJsaW5lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1saW5rJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdocmVmJywgJ3JlbCcsICd0YXJnZXQnLCAndW5kZXJsaW5lJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0xpbmtFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djTGluayBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0xpbmsge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1sb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTG9hZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0xvYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NMb2FkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NMb2FkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0JywgJ2N1c3RvbUNsYXNzJywgJ2VtYmxlbScsICduYW1lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1sb2dvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHQnLCAnY3VzdG9tQ2xhc3MnLCAnZW1ibGVtJywgeyBuYW1lOiAnbmFtZScsIHJlcXVpcmVkOiB0cnVlIH1dLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTG9nbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NMb2dvRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0xvZ28gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NMb2dvIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXSxcbiAgb3V0cHV0czogWydtZW51Rm9jdXNvdXQnLCAnbWVudVNlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIG1lbnVGb2N1c291dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY01lbnVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG1lbnVTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnUgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBtZW51Rm9jdXNvdXQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuIEVtaXRzIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgbWVudSBpdGVtIGVsZW1lbnRzLlxuICAgKi9cbiAgbWVudVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NvbGxhcHNlU3VibWVudSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjaGVja2JveCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmb2N1c2VkJywgJ2hhc1N1Ym1lbnUnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICdzdWJMYWJlbCcsICd0b29sdGlwQ29udGVudCcsICd0b29sdGlwUG9zaXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NNZW51SXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NNZW51SXRlbUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTWVudUl0ZW1DdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkPzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djTWVudUl0ZW1DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY01lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTWVudUl0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51SXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhY2tkcm9wJywgJ2N1c3RvbUNsYXNzJywgJ2Z1bGxzY3JlZW4nLCAnbW9kYWxJZCcsICdwb3NpdGlvbicsICdzaG93Q2xvc2UnLCAnc2hvd0Z1bGxzY3JlZW5Ub2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW1vZGFsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZHJvcCcsICdjdXN0b21DbGFzcycsICdmdWxsc2NyZWVuJywgeyBuYW1lOiAnbW9kYWxJZCcsIHJlcXVpcmVkOiB0cnVlIH0sICdwb3NpdGlvbicsICdzaG93Q2xvc2UnLCAnc2hvd0Z1bGxzY3JlZW5Ub2dnbGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY01vZGFsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY01vZGFsRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY01vZGFsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTW9kYWwge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwc01lbnVPcGVuJywgJ2NvbmRlbnNlZCcsICdjb25kZW5zZWRNZW51T3BlbicsICdjdXN0b21DbGFzcycsICdsb2dvTmFtZScsICdtYWluTWVudU9wZW4nLCAnbm90aWZpY2F0aW9uc01lbnVPcGVuJywgJ3NlYXJjaERlYm91bmNlTXMnLCAnc2VhcmNoSW5wdXRPcGVuJywgJ3RleHRPdmVycmlkZXMnLCAndXNlckNhcmQnLCAndXNlck1lbnVPcGVuJywgJ3Zpc2liaWxpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW5hdmJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwc01lbnVPcGVuJywgJ2NvbmRlbnNlZCcsICdjb25kZW5zZWRNZW51T3BlbicsICdjdXN0b21DbGFzcycsICdsb2dvTmFtZScsICdtYWluTWVudU9wZW4nLCAnbm90aWZpY2F0aW9uc01lbnVPcGVuJywgJ3NlYXJjaERlYm91bmNlTXMnLCAnc2VhcmNoSW5wdXRPcGVuJywgJ3RleHRPdmVycmlkZXMnLCB7IG5hbWU6ICd1c2VyQ2FyZCcsIHJlcXVpcmVkOiB0cnVlIH0sICd1c2VyTWVudU9wZW4nLCAndmlzaWJpbGl0eSddLFxuICBvdXRwdXRzOiBbJ2FpQ2xpY2snLCAnYXBwc0NsaWNrJywgJ2FwcHNNZW51T3BlbkNoYW5nZScsICdjb25kZW5zZWRNZW51T3BlbkNoYW5nZScsICdoZWxwQ2xpY2snLCAnbWFpbk1lbnVPcGVuQ2hhbmdlJywgJ215VHJpbWJsZUNsaWNrJywgJ25vdGlmaWNhdGlvbnNDbGljaycsICdub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2UnLCAnc2VhcmNoQ2hhbmdlJywgJ3NlYXJjaENsaWNrJywgJ3NlYXJjaElucHV0T3BlbkNoYW5nZScsICdzaWduT3V0Q2xpY2snLCAndHJpbWJsZUxvZ29DbGljaycsICd1c2VyTWVudU9wZW5DaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY05hdmJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NOYXZiYXJFbGVtZW50O1xuICBAT3V0cHV0KCkgYWlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGFwcHNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGFwcHNNZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgY29uZGVuc2VkTWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIGhlbHBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG1haW5NZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgbXlUcmltYmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoSW5wdXRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIEBPdXRwdXQoKSBzaWduT3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSB0cmltYmxlTG9nb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgdXNlck1lbnVPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NOYXZiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NOYXZiYXIge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBBSSBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgYWlDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhcHBzIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBhcHBzQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXBwcyBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIGFwcHNNZW51T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbmRlbnNlZCBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIGNvbmRlbnNlZE1lbnVPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVscCBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgaGVscENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1haW4gbWVudSBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBtYWluTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByb2ZpbGUgQWNjZXNzIE15VHJpbWJsZSBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgbXlUcmltYmxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9ucyBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgbm90aWZpY2F0aW9uc0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbnMgbWVudSBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICovXG4gIHNlYXJjaENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIHNlYXJjaENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBzZWFyY2hJbnB1dE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByb2ZpbGUgc2lnbiBvdXQgYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIHNpZ25PdXRDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBsb2dvIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQscmVnYXJkbGVzcyBvZiB0aGUgYGxvZ29OYW1lYCBwcm9wIHZhbHVlLlxuICAgKi9cbiAgdHJpbWJsZUxvZ29DbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIG1lbnUgb3BlbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgdXNlck1lbnVPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1cnJlbmN5U3ltYm9sJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3R5cGUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW51bWJlci1pbnB1dCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1cnJlbmN5U3ltYm9sJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3R5cGUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTnVtYmVySW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djTnVtYmVySW5wdXRFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NOdW1iZXJJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY051bWJlcklucHV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWxWYWx1ZXMnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnbmV4dEJ1dHRvblRleHQnLCAncGFnZScsICdwcmV2QnV0dG9uVGV4dCcsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wYWdpbmF0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxWYWx1ZXMnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnbmV4dEJ1dHRvblRleHQnLCAncGFnZScsICdwcmV2QnV0dG9uVGV4dCcsICdzaXplJ10sXG4gIG91dHB1dHM6IFsncGFnZUNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NQYWdpbmF0aW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ8SU1vZHVzV2NQYWdpbmF0aW9uSVBhZ2VDaGFuZ2U+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1BhZ2luYXRpb25DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJUGFnZUNoYW5nZSBhcyBJTW9kdXNXY1BhZ2luYXRpb25JUGFnZUNoYW5nZSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1BhZ2luYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQYWdpbmF0aW9uIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBwYWdlIGNoYW5nZXNcbiAgICovXG4gIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djUGFnaW5hdGlvbkN1c3RvbUV2ZW50PElNb2R1c1djUGFnaW5hdGlvbklQYWdlQ2hhbmdlPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Zsb2F0aW5nJywgJ2hlaWdodCcsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Zsb2F0aW5nJywgJ2hlaWdodCcsICd3aWR0aCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUGFuZWxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQYW5lbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydtYWluTWVudScsICdtZW51T25lJywgJ21lbnVUd28nLCAncHJvZmlsZVByb3BzJywgJ3Nob3dTaWduT3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wcm9maWxlLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ21haW5NZW51JywgJ21lbnVPbmUnLCAnbWVudVR3bycsIHsgbmFtZTogJ3Byb2ZpbGVQcm9wcycsIHJlcXVpcmVkOiB0cnVlIH0sICdzaG93U2lnbk91dCddLFxuICBvdXRwdXRzOiBbJ3NpZ25PdXRDbGljaycsICdtZW51SXRlbUNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NQcm9maWxlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NQcm9maWxlTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBzaWduT3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1Byb2ZpbGVNZW51Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUHJvZmlsZU1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQcm9maWxlTWVudSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIFNpZ24gT3V0IG1lbnUgaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBzaWduT3V0Q2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djUHJvZmlsZU1lbnVDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW55IG1lbnUgaXRlbSBpcyBjbGlja2VkLCBwYXNzaW5nIGJhY2sgdGhlIGl0ZW0gdmFsdWUgb3IgbGFiZWxcbiAgICovXG4gIG1lbnVJdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djUHJvZmlsZU1lbnVDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcHJvZ3Jlc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Byb2dyZXNzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1Byb2dyZXNzRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1Byb2dyZXNzIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djUHJvZ3Jlc3Mge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUmFkaW9FbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1JhZGlvIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbGxvd0hhbGYnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZ2V0QXJpYUxhYmVsVGV4dCcsICdzaXplJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxsb3dIYWxmJywgJ2NvdW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2dldEFyaWFMYWJlbFRleHQnLCAnc2l6ZScsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG91dHB1dHM6IFsncmF0aW5nQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NSYXRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUmF0aW5nRWxlbWVudDtcbiAgQE91dHB1dCgpIHJhdGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhdGluZ0N1c3RvbUV2ZW50PElNb2R1c1djUmF0aW5nSVJhdGluZ0NoYW5nZT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djUmF0aW5nQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVJhdGluZ0NoYW5nZSBhcyBJTW9kdXNXY1JhdGluZ0lSYXRpbmdDaGFuZ2UgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NSYXRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NSYXRpbmcge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSByYXRpbmcgY2hhbmdlc1xuICAgKi9cbiAgcmF0aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhdGluZ0N1c3RvbUV2ZW50PElNb2R1c1djUmF0aW5nSVJhdGluZ0NoYW5nZT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9ucycsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1NlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTZWxlY3RFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU2VsZWN0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xsYXBzZU9uQ2xpY2tPdXRzaWRlJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ21heFdpZHRoJywgJ21vZGUnLCAndGFyZ2V0Q29udGVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2lkZS1uYXZpZ2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xsYXBzZU9uQ2xpY2tPdXRzaWRlJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ21heFdpZHRoJywgJ21vZGUnLCAndGFyZ2V0Q29udGVudCddLFxuICBvdXRwdXRzOiBbJ2V4cGFuZGVkQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTaWRlTmF2aWdhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTaWRlTmF2aWdhdGlvbkVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBleHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NpZGVOYXZpZ2F0aW9uQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djU2lkZU5hdmlnYXRpb25DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1NpZGVOYXZpZ2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU2lkZU5hdmlnYXRpb24ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBleHBhbmRlZCBzdGF0ZSBjaGFuZ2VzIChleHBhbmRlZC9jb2xsYXBzZWQpLlxuICAgKi9cbiAgZXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2lkZU5hdmlnYXRpb25DdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hlaWdodCcsICdzaGFwZScsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2tlbGV0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hlaWdodCcsICdzaGFwZScsICd3aWR0aCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djU2tlbGV0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU2tlbGV0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2tlbGV0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc3RlcCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc3RlcCcsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTbGlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU2xpZGVyRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1NsaWRlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1NsaWRlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW50ZXJhY3RpdmUnLCAnb3JpZW50YXRpb24nLCAnc3RlcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXN0ZXBwZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ludGVyYWN0aXZlJywgJ29yaWVudGF0aW9uJywgJ3N0ZXBzJ10sXG4gIG91dHB1dHM6IFsnc3RlcENsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1N0ZXBwZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgc3RlcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU3RlcHBlckN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTdGVwcGVyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NTdGVwcGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU3RlcHBlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdpdGggdGhlIDAtYmFzZWQgc3RlcCBpbmRleCB3aGVuIGEgc3RlcCBpcyBhY3RpdmF0ZWQgYW5kIGBpbnRlcmFjdGl2ZWAgaXMgdHJ1ZS5cbiAgICovXG4gIHN0ZXBDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NTdGVwcGVyQ3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2luZGV0ZXJtaW5hdGUnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU3dpdGNoRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1N3aXRjaCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1N3aXRjaCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2FwdGlvbicsICdjb2x1bW5zJywgJ2N1cnJlbnRQYWdlJywgJ2N1c3RvbUNsYXNzJywgJ2RhdGEnLCAnZGVuc2l0eScsICdlZGl0YWJsZScsICdob3ZlcicsICdpc1Jvd1NlbGVjdGFibGUnLCAncGFnZVNpemVPcHRpb25zJywgJ3BhZ2luYXRlZCcsICdzZWxlY3RhYmxlJywgJ3NlbGVjdGVkUm93SWRzJywgJ3Nob3dQYWdlU2l6ZVNlbGVjdG9yJywgJ3NvcnRhYmxlJywgJ3plYnJhJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10YWJsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FwdGlvbicsIHsgbmFtZTogJ2NvbHVtbnMnLCByZXF1aXJlZDogdHJ1ZSB9LCAnY3VycmVudFBhZ2UnLCAnY3VzdG9tQ2xhc3MnLCB7IG5hbWU6ICdkYXRhJywgcmVxdWlyZWQ6IHRydWUgfSwgJ2RlbnNpdHknLCAnZWRpdGFibGUnLCAnaG92ZXInLCAnaXNSb3dTZWxlY3RhYmxlJywgJ3BhZ2VTaXplT3B0aW9ucycsICdwYWdpbmF0ZWQnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZFJvd0lkcycsICdzaG93UGFnZVNpemVTZWxlY3RvcicsICdzb3J0YWJsZScsICd6ZWJyYSddLFxuICBvdXRwdXRzOiBbJ2NlbGxFZGl0U3RhcnQnLCAnY2VsbEVkaXRDb21taXQnLCAncm93Q2xpY2snLCAnc29ydENoYW5nZScsICdwYWdpbmF0aW9uQ2hhbmdlJywgJ3Jvd1NlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGFibGVFbGVtZW50O1xuICBAT3V0cHV0KCkgY2VsbEVkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3dJbmRleDogbnVtYmVyOyBjb2xJZDogc3RyaW5nOyB9Pj4oKTtcbiAgQE91dHB1dCgpIGNlbGxFZGl0Q29tbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvd0luZGV4OiBudW1iZXI7IGNvbElkOiBzdHJpbmc7IG5ld1ZhbHVlOiB1bmtub3duOyB1cGRhdGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgfT4+KCk7XG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyBpbmRleDogbnVtYmVyOyB9Pj4oKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PElNb2R1c1djVGFibGVTb3J0aW5nU3RhdGU+PigpO1xuICBAT3V0cHV0KCkgcGFnaW5hdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWw+PigpO1xuICBAT3V0cHV0KCkgcm93U2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHNlbGVjdGVkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTsgc2VsZWN0ZWRSb3dJZHM6IHN0cmluZ1tdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IFNvcnRpbmdTdGF0ZSBhcyBJTW9kdXNXY1RhYmxlU29ydGluZ1N0YXRlIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWwgYXMgSU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWwgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RhYmxlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2VsbCBlZGl0aW5nIHN0YXJ0cy5cbiAgICovXG4gIGNlbGxFZGl0U3RhcnQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvd0luZGV4OiBudW1iZXI7IGNvbElkOiBzdHJpbmc7IH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2VsbCBlZGl0aW5nIGlzIGNvbW1pdHRlZCB3aXRoIHRoZSBuZXcgdmFsdWUuXG4gICAqL1xuICBjZWxsRWRpdENvbW1pdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93SW5kZXg6IG51bWJlcjsgY29sSWQ6IHN0cmluZzsgbmV3VmFsdWU6IHVua25vd247IHVwZGF0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqL1xuICByb3dDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgaW5kZXg6IG51bWJlcjsgfT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBzb3J0aW5nIGNoYW5nZXMgd2l0aCB0aGUgbmV3IHNvcnRpbmcgc3RhdGUuXG4gICAqL1xuICBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZVNvcnRpbmdTdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBwYWdpbmF0aW9uIGNoYW5nZXMgd2l0aCB0aGUgbmV3IHBhZ2luYXRpb24gc3RhdGUuXG4gICAqL1xuICBwYWdpbmF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gcm93IHNlbGVjdGlvbiBjaGFuZ2VzIHdpdGggdGhlIHNlbGVjdGVkIHJvd3MgYW5kIHRoZWlyIElEcy5cbiAgICovXG4gIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdOyBzZWxlY3RlZFJvd0lkczogc3RyaW5nW107IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlVGFiSW5kZXgnLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd0YWJTdHlsZScsICd0YWJzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10YWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3RhYlN0eWxlJywgJ3RhYnMnXSxcbiAgb3V0cHV0czogWyd0YWJDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RhYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGFic0VsZW1lbnQ7XG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJzQ3VzdG9tRXZlbnQ8eyBwcmV2aW91c1RhYjogbnVtYmVyOyBuZXdUYWI6IG51bWJlcjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVGFic0N1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGFicyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RhYnMge1xuICAvKipcbiAgICogV2hlbiBhIHRhYiBpcyBzd2l0Y2hlZCB0bywgdGhpcyBldmVudCBvdXRwdXRzIHRoZSByZWxldmFudCBpbmRpY2VzXG4gICAqL1xuICB0YWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFic0N1c3RvbUV2ZW50PHsgcHJldmlvdXNUYWI6IG51bWJlcjsgbmV3VGFiOiBudW1iZXI7IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NhcGl0YWxpemUnLCAnYXV0b0NvbXBsZXRlJywgJ2F1dG9Db3JyZWN0JywgJ2JvcmRlcmVkJywgJ2NsZWFyQXJpYUxhYmVsJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2VudGVya2V5aGludCcsICdmZWVkYmFjaycsICdpbmNsdWRlQ2xlYXInLCAnaW5jbHVkZVNlYXJjaCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICd0eXBlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10ZXh0LWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ2FwaXRhbGl6ZScsICdhdXRvQ29tcGxldGUnLCAnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY2xlYXJBcmlhTGFiZWwnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2luY2x1ZGVDbGVhcicsICdpbmNsdWRlU2VhcmNoJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydjbGVhckNsaWNrJywgJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUZXh0SW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGV4dElucHV0RWxlbWVudDtcbiAgQE91dHB1dCgpIGNsZWFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RleHRJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RleHRJbnB1dCB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2xlYXJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10ZXh0YXJlYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RleHRhcmVhRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGV4dGFyZWEgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUZXh0YXJlYSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaW5pdGlhbFRoZW1lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10aGVtZS1wcm92aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5pdGlhbFRoZW1lJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUaGVtZVByb3ZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RoZW1lUHJvdmlkZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGhlbWVQcm92aWRlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RoZW1lUHJvdmlkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRoZW1lLXN3aXRjaGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddLFxuICBvdXRwdXRzOiBbJ3RoZW1lQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUaGVtZVN3aXRjaGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RoZW1lU3dpdGNoZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgdGhlbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUaGVtZVN3aXRjaGVyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUaGVtZVN3aXRjaGVySVRoZW1lQ29uZmlnPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUaGVtZVN3aXRjaGVyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVRoZW1lQ29uZmlnIGFzIElNb2R1c1djVGhlbWVTd2l0Y2hlcklUaGVtZUNvbmZpZyB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RoZW1lU3dpdGNoZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUaGVtZVN3aXRjaGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiB0aGUgdGhlbWUgaXMgY2hhbmdlZC5cbiAgICovXG4gIHRoZW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RoZW1lU3dpdGNoZXJDdXN0b21FdmVudDxJTW9kdXNXY1RoZW1lU3dpdGNoZXJJVGhlbWVDb25maWc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2RhdGFsaXN0SWQnLCAnZGF0YWxpc3RPcHRpb25zJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd1NlY29uZHMnLCAnc2l6ZScsICdzdGVwJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10aW1lLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGF0YWxpc3RJZCcsICdkYXRhbGlzdE9wdGlvbnMnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93U2Vjb25kcycsICdzaXplJywgJ3N0ZXAnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGltZUlucHV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RpbWVJbnB1dEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUaW1lSW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGltZUlucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGltZUlucHV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGVsYXknLCAncG9zaXRpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRvYXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWxheScsICdwb3NpdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVG9hc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9hc3RFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUb2FzdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdG9vbGJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Rvb2xiYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9vbGJhckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVG9vbGJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb250ZW50JywgJ2NvbnRlbnRFbGVtZW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvcmNlT3BlbicsICdwb3NpdGlvbicsICd0b29sdGlwSWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRlbnQnLCAnY29udGVudEVsZW1lbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZm9yY2VPcGVuJywgJ3Bvc2l0aW9uJywgJ3Rvb2x0aXBJZCddLFxuICBvdXRwdXRzOiBbJ2Rpc21pc3NFc2NhcGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Rvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9vbHRpcEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBkaXNtaXNzRXNjYXBlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVG9vbHRpcEN1c3RvbUV2ZW50PGFueT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVG9vbHRpcEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVG9vbHRpcCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1Rvb2x0aXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSB0b29sdGlwIGlzIGRpc21pc3NlZCB2aWEgRXNjYXBlIGtleVxuICAgKi9cbiAgZGlzbWlzc0VzY2FwZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUb29sdGlwQ3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Jsb2NrRXhwYW5kJywgJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NvbGxhcHNlU3VibWVudSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdHJlZS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydibG9ja0V4cGFuZCcsICdib3JkZXJlZCcsICdjaGVja2JveCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmb2N1c2VkJywgJ2hhc1N1Ym1lbnUnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICdzdWJMYWJlbCcsICd0b29sdGlwQ29udGVudCcsICd0b29sdGlwUG9zaXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUcmVlSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUcmVlSXRlbUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVHJlZUl0ZW1DdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkPzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVHJlZUl0ZW1DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RyZWVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVHJlZUl0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgdHJlZSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlSXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRyZWUtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnaXNTdWJNZW51JywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZSddLFxuICBvdXRwdXRzOiBbJ21lbnVGb2N1c291dCcsICdtZW51U2VsZWN0aW9uQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUcmVlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUcmVlTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBtZW51Rm9jdXNvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgbWVudVNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVHJlZU1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUcmVlTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRyZWUgbWVudSBsb3NlcyBmb2N1cy5cbiAgICovXG4gIG1lbnVGb2N1c291dDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuIEVtaXRzIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgdHJlZSBpdGVtIGVsZW1lbnRzLlxuICAgKi9cbiAgbWVudVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRJdGVtczogSFRNTEVsZW1lbnRbXTsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdoaWVyYXJjaHknLCAnbGFiZWwnLCAnc2l6ZScsICd3ZWlnaHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXR5cG9ncmFwaHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hpZXJhcmNoeScsIHsgbmFtZTogJ2xhYmVsJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3NpemUnLCAnd2VpZ2h0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUeXBvZ3JhcGh5IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1R5cG9ncmFwaHlFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVHlwb2dyYXBoeSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1R5cG9ncmFwaHkge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAncHVzaENvbnRlbnQnLCAndGFyZ2V0RWxlbWVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdXRpbGl0eS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAncHVzaENvbnRlbnQnLCAndGFyZ2V0RWxlbWVudCddLFxuICBvdXRwdXRzOiBbJ3BhbmVsT3BlbmVkJywgJ3BhbmVsQ2xvc2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NVdGlsaXR5UGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVXRpbGl0eVBhbmVsRWxlbWVudDtcbiAgQE91dHB1dCgpIHBhbmVsT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIEBPdXRwdXQoKSBwYW5lbENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1V0aWxpdHlQYW5lbEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1V0aWxpdHlQYW5lbEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVXRpbGl0eVBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVXRpbGl0eVBhbmVsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiB0aGUgcGFuZWwgaXMgb3BlbmVkLlxuICAgKi9cbiAgcGFuZWxPcGVuZWQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSBwYW5lbCBpcyBjbG9zZWQuXG4gICAqL1xuICBwYW5lbENsb3NlZDogRXZlbnRFbWl0dGVyPE1vZHVzV2NVdGlsaXR5UGFuZWxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuIl19
1988
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cy1hbmd1bGFyL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWhJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFpQmxELElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBR2dDO0lBRmpELEVBQUUsQ0FBOEI7SUFDaEMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFzRSxDQUFDO0lBQ2xILFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7dUdBTlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsaUpBTmpCLDJCQUEyQjs7QUFNMUIsZ0JBQWdCO0lBWjVCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUN4QixDQUFDO0dBVVcsZ0JBQWdCLENBTzVCOzsyRkFQWSxnQkFBZ0I7a0JBVDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxnQkFB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QWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQztLQUNwRSxDQUFDO0dBVVcsbUJBQW1CLENBUS9COzsyRkFSWSxtQkFBbUI7a0JBVC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDO29CQUNuRSxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO29CQUN2QyxVQUFVLEVBQUUsS0FBSztpQkFDbEI7b0lBR1csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGF1dG8tZ2VuZXJhdGVkIGFuZ3VsYXIgZGlyZWN0aXZlIHByb3hpZXMgKi9cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb3h5Q21wIH0gZnJvbSAnLi9hbmd1bGFyLWNvbXBvbmVudC1saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRzIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJ10sXG4gIG91dHB1dHM6IFsnZXhwYW5kZWRDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0FjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NBY2NvcmRpb25FbGVtZW50O1xuICBAT3V0cHV0KCkgZXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBY2NvcmRpb25DdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuOyBpbmRleDogbnVtYmVyOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NBY2NvcmRpb25DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0FjY29yZGlvbiBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0FjY29yZGlvbiB7XG4gIC8qKlxuICAgKiBXaGVuIGEgY29sbGFwc2UgZXhwYW5kZWQgc3RhdGUgaXMgY2hhbmdlZCwgdGhpcyBldmVudCBvdXRwdXRzIHRoZSByZWxldmFudCBpbmRleCBhbmQgc3RhdGVcbiAgICovXG4gIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FjY29yZGlvbkN1c3RvbUV2ZW50PHsgZXhwYW5kZWQ6IGJvb2xlYW47IGluZGV4OiBudW1iZXI7IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWxlcnREZXNjcmlwdGlvbicsICdhbGVydFRpdGxlJywgJ2N1c3RvbUNsYXNzJywgJ2RlbGF5JywgJ2Rpc2FibGVJY29uJywgJ2Rpc21pc3NpYmxlJywgJ2ljb24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYWxlcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsZXJ0RGVzY3JpcHRpb24nLCB7IG5hbWU6ICdhbGVydFRpdGxlJywgcmVxdWlyZWQ6IHRydWUgfSwgJ2N1c3RvbUNsYXNzJywgJ2RlbGF5JywgJ2Rpc2FibGVJY29uJywgJ2Rpc21pc3NpYmxlJywgJ2ljb24nLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2Rpc21pc3NDbGljayddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQWxlcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQWxlcnRFbGVtZW50O1xuICBAT3V0cHV0KCkgZGlzbWlzc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQWxlcnRDdXN0b21FdmVudDxhbnk+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0FsZXJ0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NBbGVydCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0FsZXJ0IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiB0aGUgYWxlcnQgaXMgZGlzbWlzc2VkXG4gICAqL1xuICBkaXNtaXNzQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQWxlcnRDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwcycsICdjdXN0b21DbGFzcycsICdsYXlvdXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWFwcC1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBzJywgJ2N1c3RvbUNsYXNzJywgJ2xheW91dCddLFxuICBvdXRwdXRzOiBbJ2xheW91dENoYW5nZScsICdpdGVtc09yZGVyQ2hhbmdlJywgJ2l0ZW1DbGljayddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQXBwTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NBcHBNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIGxheW91dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGxheW91dDogJ2xpc3QnIHwgJ2dyaWQnOyB9Pj4oKTtcbiAgQE91dHB1dCgpIGl0ZW1zT3JkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBcHBNZW51Q3VzdG9tRXZlbnQ8SU1vZHVzV2NBcHBNZW51SUFwcE1lbnVJdGVtW10+PigpO1xuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PHsgYXBwTmFtZTogSU1vZHVzV2NBcHBNZW51QXBwTmFtZSB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NBcHBNZW51Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSUFwcE1lbnVJdGVtIGFzIElNb2R1c1djQXBwTWVudUlBcHBNZW51SXRlbSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBBcHBOYW1lIGFzIElNb2R1c1djQXBwTWVudUFwcE5hbWUgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NBcHBNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQXBwTWVudSB7XG4gIC8qKlxuICAgKiBFbWl0IGV2ZW50IHdoZW4gdGhlIGxheW91dCBjaGFuZ2VzXG4gICAqL1xuICBsYXlvdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PHsgbGF5b3V0OiAnbGlzdCcgfCAnZ3JpZCc7IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiByZW9yZGVyaW5nIGlzIGNvbmZpcm1lZCB2aWEgXCJEb25lXCIgYW5kIHRoZSBvcmRlciBkaWZmZXJzIGZyb20gd2hlbiBlZGl0IHN0YXJ0ZWRcbiAgICovXG4gIGl0ZW1zT3JkZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PElNb2R1c1djQXBwTWVudUlBcHBNZW51SXRlbVtdPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBpdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PHsgYXBwTmFtZTogSU1vZHVzV2NBcHBNZW51QXBwTmFtZSB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Db21wbGV0ZScsICdib3JkZXJlZCcsICdjdXN0b21CbHVyJywgJ2N1c3RvbUNsYXNzJywgJ2N1c3RvbUlucHV0Q2hhbmdlJywgJ2N1c3RvbUl0ZW1TZWxlY3QnLCAnY3VzdG9tS2V5RG93bicsICdkZWJvdW5jZU1zJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2luY2x1ZGVDbGVhcicsICdpbmNsdWRlU2VhcmNoJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdpdGVtcycsICdsYWJlbCcsICdsZWF2ZU1lbnVPcGVuJywgJ21heENoaXBzJywgJ21pbkNoYXJzJywgJ21pbklucHV0V2lkdGgnLCAnbXVsdGlTZWxlY3QnLCAnbmFtZScsICdub1Jlc3VsdHMnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd01lbnVPbkZvY3VzJywgJ3Nob3dTcGlubmVyJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydzZWxlY3RJdGVtJywgJ29wZW5NZW51JywgJ2Nsb3NlTWVudScsICd0b2dnbGVNZW51JywgJ2ZvY3VzSW5wdXQnLCAnY2xlYXJJbnB1dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYXV0b2NvbXBsZXRlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQmx1cicsICdjdXN0b21DbGFzcycsICdjdXN0b21JbnB1dENoYW5nZScsICdjdXN0b21JdGVtU2VsZWN0JywgJ2N1c3RvbUtleURvd24nLCAnZGVib3VuY2VNcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbmNsdWRlQ2xlYXInLCAnaW5jbHVkZVNlYXJjaCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnaXRlbXMnLCAnbGFiZWwnLCAnbGVhdmVNZW51T3BlbicsICdtYXhDaGlwcycsICdtaW5DaGFycycsICdtaW5JbnB1dFdpZHRoJywgJ211bHRpU2VsZWN0JywgJ25hbWUnLCAnbm9SZXN1bHRzJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dNZW51T25Gb2N1cycsICdzaG93U3Bpbm5lcicsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnY2hpcFJlbW92ZScsICdjaGlwc0V4cGFuc2lvbkNoYW5nZScsICdjbGVhckNsaWNrJywgJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJywgJ2l0ZW1TZWxlY3QnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0F1dG9jb21wbGV0ZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NBdXRvY29tcGxldGVFbGVtZW50O1xuICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PElNb2R1c1djQXV0b2NvbXBsZXRlSUF1dG9jb21wbGV0ZUl0ZW0+PigpO1xuICBAT3V0cHV0KCkgY2hpcHNFeHBhbnNpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PigpO1xuICBAT3V0cHV0KCkgY2xlYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJQXV0b2NvbXBsZXRlSXRlbSBhcyBJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQXV0b2NvbXBsZXRlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQXV0b2NvbXBsZXRlIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHNlbGVjdGVkIGl0ZW0gY2hpcCBpcyByZW1vdmVkLlxuICAgKi9cbiAgY2hpcFJlbW92ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gY2hpcHMgZXhwYW5zaW9uIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBjaGlwc0V4cGFuc2lvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2xlYXIgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBjbGVhckNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuVGhpcyBldmVudCBpcyBkZWJvdW5jZWQgYmFzZWQgb24gdGhlIGRlYm91bmNlTXMgcHJvcC5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBpdGVtU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PElNb2R1c1djQXV0b2NvbXBsZXRlSUF1dG9jb21wbGV0ZUl0ZW0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0JywgJ2N1c3RvbUNsYXNzJywgJ2ltZ1NyYycsICdpbml0aWFscycsICdzaGFwZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1hdmF0YXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbeyBuYW1lOiAnYWx0JywgcmVxdWlyZWQ6IHRydWUgfSwgJ2N1c3RvbUNsYXNzJywgJ2ltZ1NyYycsICdpbml0aWFscycsICdzaGFwZScsICdzaXplJ10sXG4gIG91dHB1dHM6IFsnaW1hZ2VMb2FkRXJyb3InXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0F2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NBdmF0YXJFbGVtZW50O1xuICBAT3V0cHV0KCkgaW1hZ2VMb2FkRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdmF0YXJDdXN0b21FdmVudDxJTW9kdXNXY0F2YXRhcklBdmF0YXJJbWFnZUxvYWRFcnJvcj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQXZhdGFyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSUF2YXRhckltYWdlTG9hZEVycm9yIGFzIElNb2R1c1djQXZhdGFySUF2YXRhckltYWdlTG9hZEVycm9yIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQXZhdGFyIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXZhdGFyIGltYWdlIGZhaWxzIHRvIGxvYWQuXG4gICAqL1xuICBpbWFnZUxvYWRFcnJvcjogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdmF0YXJDdXN0b21FdmVudDxJTW9kdXNXY0F2YXRhcklBdmF0YXJJbWFnZUxvYWRFcnJvcj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0JhZGdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0JhZGdlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0JhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQmFkZ2Uge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzcGxheU1vZGUnLCAnZHJhZ1N0ZXBUaHJlc2hvbGQnLCAnaGVhZGVyJywgJ3Zpc2libGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWJvdHRvbS1zaGVldCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzcGxheU1vZGUnLCAnZHJhZ1N0ZXBUaHJlc2hvbGQnLCAnaGVhZGVyJywgJ3Zpc2libGUnXSxcbiAgb3V0cHV0czogWydzaGVldFZpc2liaWxpdHlDaGFuZ2UnLCAnZGlzcGxheU1vZGVDaGFuZ2UnLCAnaGVhZGVyQmFja0NsaWNrJywgJ2hlYWRlckNsb3NlQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0JvdHRvbVNoZWV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0JvdHRvbVNoZWV0RWxlbWVudDtcbiAgQE91dHB1dCgpIHNoZWV0VmlzaWJpbGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0+PigpO1xuICBAT3V0cHV0KCkgZGlzcGxheU1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHsgZGlzcGxheU1vZGU6IElNb2R1c1djQm90dG9tU2hlZXRUQm90dG9tU2hlZXREaXNwbGF5TW9kZTsgfT4+KCk7XG4gIEBPdXRwdXQoKSBoZWFkZXJCYWNrQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBAT3V0cHV0KCkgaGVhZGVyQ2xvc2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBUQm90dG9tU2hlZXREaXNwbGF5TW9kZSBhcyBJTW9kdXNXY0JvdHRvbVNoZWV0VEJvdHRvbVNoZWV0RGlzcGxheU1vZGUgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCb3R0b21TaGVldCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0JvdHRvbVNoZWV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgYm90dG9tIHNoZWV0IGNoYW5nZXMuXG4gICAqL1xuICBzaGVldFZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx7IHZpc2libGU6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkaXNwbGF5IG1vZGUgY2hhbmdlcywgd2hldGhlciBmcm9tIGEgZHJhZy9rZXlib2FyZFxuaW50ZXJhY3Rpb24gb3IgZnJvbSBzZXR0aW5nIHRoZSBgZGlzcGxheU1vZGVgIHByb3AuIFRoZSBuZXcgbW9kZSBpcyBpblxuYGRldGFpbC5kaXNwbGF5TW9kZWAuXG4gICAqL1xuICBkaXNwbGF5TW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHsgZGlzcGxheU1vZGU6IElNb2R1c1djQm90dG9tU2hlZXRUQm90dG9tU2hlZXREaXNwbGF5TW9kZTsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBoZWFkZXIgYmFjayBidXR0b24gaXMgY2xpY2tlZC4gRG9lcyBub3QgY2hhbmdlIHNoZWV0IHN0YXRlLlxuICAgKi9cbiAgaGVhZGVyQmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBoZWFkZXIgZGlzbWlzcyBidXR0b24gaXMgY2xpY2tlZC5cblRoZSBzaGVldCBpcyBhbHNvIGNsb3NlZCBhdXRvbWF0aWNhbGx5IChgdmlzaWJsZWAgaXMgc2V0IHRvIGBmYWxzZWApLlxuICAgKi9cbiAgaGVhZGVyQ2xvc2VDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaXRlbXMnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYnJlYWRjcnVtYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2l0ZW1zJywgJ3NpemUnXSxcbiAgb3V0cHV0czogWydicmVhZGNydW1iQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0JyZWFkY3J1bWJzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0JyZWFkY3J1bWJzRWxlbWVudDtcbiAgQE91dHB1dCgpIGJyZWFkY3J1bWJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0JyZWFkY3J1bWJzQ3VzdG9tRXZlbnQ8SU1vZHVzV2NCcmVhZGNydW1ic0lCcmVhZGNydW1iPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NCcmVhZGNydW1ic0N1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElCcmVhZGNydW1iIGFzIElNb2R1c1djQnJlYWRjcnVtYnNJQnJlYWRjcnVtYiB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0JyZWFkY3J1bWJzIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQnJlYWRjcnVtYnMge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgYnJlYWRjcnVtYiBpcyBjbGlja2VkLlxuICAgKi9cbiAgYnJlYWRjcnVtYkNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0JyZWFkY3J1bWJzQ3VzdG9tRXZlbnQ8SU1vZHVzV2NCcmVhZGNydW1ic0lCcmVhZGNydW1iPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdwcmVzc2VkJywgJ3NoYXBlJywgJ3NpemUnLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdwcmVzc2VkJywgJ3NoYXBlJywgJ3NpemUnLCAndHlwZScsICd2YXJpYW50J10sXG4gIG91dHB1dHM6IFsnYnV0dG9uQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0J1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCdXR0b25FbGVtZW50O1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCdXR0b25DdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQnV0dG9uQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NCdXR0b24ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnb3JpZW50YXRpb24nLCAnc2VsZWN0aW9uVHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1idXR0b24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvblR5cGUnLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2J1dHRvbkdyb3VwQ2xpY2snLCAnYnV0dG9uU2VsZWN0aW9uQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCdXR0b25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCdXR0b25Hcm91cEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBidXR0b25Hcm91cENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudDx7IGJ1dHRvbjogSFRNTEVsZW1lbnQ7IGlzU2VsZWN0ZWQ6IGJvb2xlYW47IH0+PigpO1xuICBAT3V0cHV0KCkgYnV0dG9uU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudDx7IHNlbGVjdGVkQnV0dG9uczogSFRNTEVsZW1lbnRbXTsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0J1dHRvbkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQnV0dG9uR3JvdXAge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFueSBidXR0b24gaW4gdGhlIGdyb3VwIGlzIGNsaWNrZWRcbiAgICovXG4gIGJ1dHRvbkdyb3VwQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudDx7IGJ1dHRvbjogSFRNTEVsZW1lbnQ7IGlzU2VsZWN0ZWQ6IGJvb2xlYW47IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBidXR0b24gc2VsZWN0aW9uIGNoYW5nZXNcbiAgICovXG4gIGJ1dHRvblNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NCdXR0b25Hcm91cEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRCdXR0b25zOiBIVE1MRWxlbWVudFtdOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRGaWd1cmUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnbGF5b3V0JywgJ3BhZGRpbmcnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRGaWd1cmUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnbGF5b3V0JywgJ3BhZGRpbmcnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NhcmQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQ2FyZEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQ2FyZCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbmRldGVybWluYXRlJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWNoZWNrYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbmRldGVybWluYXRlJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQ2hlY2tib3hFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NoZWNrYm94IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaGFzRXJyb3InLCAnbGFiZWwnLCAnbXVsdGlsaW5lJywgJ3NoYXBlJywgJ3Nob3dSZW1vdmUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jaGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaGFzRXJyb3InLCAnbGFiZWwnLCAnbXVsdGlsaW5lJywgJ3NoYXBlJywgJ3Nob3dSZW1vdmUnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIG91dHB1dHM6IFsnY2hpcENsaWNrJywgJ2NoaXBSZW1vdmUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQ2hpcEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBjaGlwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGlwQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoaXBDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQ2hpcEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NoaXAge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGlwIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIGNoaXBDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGlwQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2xvc2UgY2hpcCBpY29uIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2hpcFJlbW92ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGlwQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY2hldnJvblBvc2l0aW9uJywgJ2NvbGxhcHNlSWQnLCAnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAnb3B0aW9ucyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtY29sbGFwc2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZXZyb25Qb3NpdGlvbicsICdjb2xsYXBzZUlkJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ29wdGlvbnMnXSxcbiAgb3V0cHV0czogWydleHBhbmRlZENoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQ29sbGFwc2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQ29sbGFwc2VFbGVtZW50O1xuICBAT3V0cHV0KCkgZXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb2xsYXBzZUN1c3RvbUV2ZW50PHsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQ29sbGFwc2VDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0NvbGxhcHNlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQ29sbGFwc2Uge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBleHBhbmRlZCBwcm9wIGlzIGludGVybmFsbHkgY2hhbmdlZC5cbiAgICovXG4gIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbGxhcHNlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsbG93RHJhZ0Ryb3AnLCAnYm9yZGVyZWQnLCAnY2hlY2tlZE5vZGVJZHMnLCAnY3VzdG9tQ2xhc3MnLCAnZWRpdGluZ05vZGVJZCcsICdleHBhbmRlZE5vZGVJZHMnLCAnZmlsdGVyJywgJ25vZGVzJywgJ3NlYXJjaGFibGUnLCAnc2VsZWN0ZWROb2RlSWQnLCAnc2VsZWN0aW9uTW9kZScsICdzaXplJywgJ3Rvb2xiYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWNvbnRlbnQtdHJlZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxsb3dEcmFnRHJvcCcsICdib3JkZXJlZCcsICdjaGVja2VkTm9kZUlkcycsICdjdXN0b21DbGFzcycsICdlZGl0aW5nTm9kZUlkJywgJ2V4cGFuZGVkTm9kZUlkcycsICdmaWx0ZXInLCAnbm9kZXMnLCAnc2VhcmNoYWJsZScsICdzZWxlY3RlZE5vZGVJZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnLCAndG9vbGJhciddLFxuICBvdXRwdXRzOiBbJ25vZGVTZWxlY3QnLCAnbm9kZUV4cGFuZENoYW5nZScsICdub2RlQ2hlY2tDaGFuZ2UnLCAnbm9kZUVkaXQnLCAnbm9kZUR1cGxpY2F0ZScsICdub2RlQWRkJywgJ25vZGVEZWxldGUnLCAnbm9kZVJlbmFtZScsICdub2RlRWRpdENhbmNlbCcsICdub2RlTW92ZScsICdub2RlTG9hZENoaWxkcmVuJywgJ2V4cGFuZEFsbENoYW5nZScsICdub2Rlc0RlbGV0ZScsICdub2RlVmlzaWJpbGl0eUNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQ29udGVudFRyZWUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQ29udGVudFRyZWVFbGVtZW50O1xuICBAT3V0cHV0KCkgbm9kZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUV4cGFuZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBleHBhbmRlZDogYm9vbGVhbjsgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlQ2hlY2tDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgY2hlY2tlZDogYm9vbGVhbjsgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUR1cGxpY2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUFkZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyByZWZlcmVuY2VJZDogc3RyaW5nOyBwb3NpdGlvbjogJ2Fib3ZlJyB8ICdiZWxvdycgfCAnY2hpbGQnOyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVSZW5hbWUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVFZGl0Q2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyB0YXJnZXRJZDogc3RyaW5nOyBwb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2luc2lkZSc7IH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUxvYWRDaGlsZHJlbiA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgZXhwYW5kQWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZXNEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWRzOiBzdHJpbmdbXSB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVWaXNpYmlsaXR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGRpc2FibGVkOiBib29sZWFuOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ29udGVudFRyZWUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NDb250ZW50VHJlZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBUaGUgY29uc3VtaW5nIGFwcGxpY2F0aW9uIHNob3VsZCB1cGRhdGUgYHNlbGVjdGVkTm9kZUlkYC5cbiAgICovXG4gIG5vZGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbm9kZSdzIGV4cGFuc2lvbiBpcyB0b2dnbGVkLiBUaGUgY29uc3VtaW5nIGFwcGxpY2F0aW9uIHNob3VsZCB1cGRhdGUgYGV4cGFuZGVkTm9kZUlkc2AuXG4gICAqL1xuICBub2RlRXhwYW5kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBleHBhbmRlZDogYm9vbGVhbjsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY2hlY2tib3ggaXMgdG9nZ2xlZCAobXVsdGktc2VsZWN0KS4gVGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBzaG91bGQgdXBkYXRlIGBjaGVja2VkTm9kZUlkc2AuXG4gICAqL1xuICBub2RlQ2hlY2tDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW47IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcIkVkaXQgbmFtZVwiIGlzIGNob3Nlbi4gVGhlIGFwcCBzaG91bGQgc2V0IGBlZGl0aW5nTm9kZUlkYCB0byB0aGlzIGlkLlxuICAgKi9cbiAgbm9kZUVkaXQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIFwiRHVwbGljYXRlXCIgaXMgY2hvc2VuLiBUaGUgYXBwIHNob3VsZCBjbG9uZSB0aGUgbm9kZSBiZWxvdyBpdCBhbmQgc2V0IGBlZGl0aW5nTm9kZUlkYCB0byB0aGUgbmV3IGlkLlxuICAgKi9cbiAgbm9kZUR1cGxpY2F0ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gXCJBZGQgTmV3IEFib3ZlL0JlbG93XCIgb3IgXCJBZGQgQ2hpbGQgTm9kZVwiIGlzIGNob3Nlbi4gVGhlIGFwcCBzaG91bGQgaW5zZXJ0IGEgbm9kZSBhdCB0aGUgcmVxdWVzdGVkIHBvc2l0aW9uIGFuZCBzZXQgYGVkaXRpbmdOb2RlSWRgIHRvIHRoZSBuZXcgaWQuXG4gICAqL1xuICBub2RlQWRkOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyByZWZlcmVuY2VJZDogc3RyaW5nOyBwb3NpdGlvbjogJ2Fib3ZlJyB8ICdiZWxvdycgfCAnY2hpbGQnOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIHRoZSB1c2VyIGNvbmZpcm1zIGRlbGV0aW9uLiBUaGUgYXBwIHNob3VsZCByZW1vdmUgdGhlIG5vZGUgZnJvbSBgbm9kZXNgLlxuICAgKi9cbiAgbm9kZURlbGV0ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaW5saW5lIGVkaXQgaXMgY29tbWl0dGVkIHdpdGggYW4gZWZmZWN0aXZlIGxhYmVsIGNoYW5nZSAodmlhIEVudGVyIG9yIGxvc2luZyBmb2N1cykuIFRoZSBhcHAgc2hvdWxkIGFwcGx5IHRoZSBuZXcgbGFiZWwgYW5kIGNsZWFyIGBlZGl0aW5nTm9kZUlkYC5cbiAgICovXG4gIG5vZGVSZW5hbWU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGlubGluZSBlZGl0IGVuZHMgd2l0aG91dCBhbiBlZmZlY3RpdmUgY2hhbmdlIOKAlCB2aWEgRXNjYXBlLCBvciBFbnRlci9ibHVyIHdoaWxlIHRoZSBkcmFmdCBtYXRjaGVzIHRoZSBvcmlnaW5hbCBsYWJlbC4gVGhlIGFwcCBzaG91bGQgY2xlYXIgYGVkaXRpbmdOb2RlSWRgIChhbmQgZGlzY2FyZCBhIGZyZXNobHkgYWRkZWQgbm9kZSBpZiBpdHMgbmFtZSBpcyBzdGlsbCBlbXB0eSkuXG4gICAqL1xuICBub2RlRWRpdENhbmNlbDogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkcmFnLWFuZC1kcm9wLCBvbmNlIHRoZSBnZXN0dXJlIGVuZHMgKGBkcmFnZW5kYCkuIEVtaXR0aW5nIG9uIGBkcmFnZW5kYCAobm90IGBkcm9wYCkga2VlcHMgdGhlIGRyYWcgc291cmNlIGluIHRoZSBET00gdW50aWwgdGhlIGJyb3dzZXIgZmluaXNoZXMgdGhlIGdlc3R1cmUsIHNvIGFwcGx5aW5nIHRoZSBtb3ZlIChlLmcuIHZpYSBgbW92ZU5vZGVSZWxhdGl2ZWApIGNhbm5vdCB0ZWFyIGRvd24gdGhlIGhhbmRsZSBtaWQtZHJhZy4gYHBvc2l0aW9uYCBpcyByZWxhdGl2ZSB0byBgdGFyZ2V0SWRgOiBgYmVmb3JlYC9gYWZ0ZXJgIHJlb3JkZXIgYW1vbmcgdGhlIHRhcmdldCdzIHNpYmxpbmdzOyBgaW5zaWRlYCBuZXN0cyB0aGUgbm9kZSBhcyB0aGUgdGFyZ2V0J3MgZmlyc3QgY2hpbGQuXG4gICAqL1xuICBub2RlTW92ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgdGFyZ2V0SWQ6IHN0cmluZzsgcG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdpbnNpZGUnOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHRoZSBmaXJzdCB0aW1lIGEgbGF6eSBub2RlIChgaGFzQ2hpbGRyZW46IHRydWVgIHdpdGggbm8gYGNoaWxkcmVuYCB5ZXQpIGlzIGV4cGFuZGVkLiBUaGUgYXBwIHNob3VsZCBmZXRjaCB0aGUgbm9kZSdzIGNoaWxkcmVuIGFuZCBhc3NpZ24gdGhlbSB0byBgbm9kZXNgICh1c2UgYFtdYCB3aGVuIHRoZXJlIGFyZSBub25lKTsgdGhlIGNvbXBvbmVudCBzaG93cyBhIHNwaW5uZXIgdW50aWwgYGNoaWxkcmVuYCBpcyBkZWZpbmVkLlxuICAgKi9cbiAgbm9kZUxvYWRDaGlsZHJlbjogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRvb2xiYXIncyBleHBhbmQtYWxsIC8gY29sbGFwc2UtYWxsIHRvZ2dsZSBpcyBjbGlja2VkLiBUaGUgYXBwIHNob3VsZCBzZXQgYGV4cGFuZGVkTm9kZUlkc2AgdG8gZXZlcnkgZXhwYW5kYWJsZSBpZCAoZS5nLiB2aWEgYGdldEV4cGFuZGFibGVOb2RlSWRzYCkgd2hlbiBgZXhwYW5kZWRgIGlzIGB0cnVlYCwgb3IgdG8gYFtdYCB3aGVuIGBmYWxzZWAuXG4gICAqL1xuICBleHBhbmRBbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdG9vbGJhcidzIGRlbGV0ZSBidXR0b24gaXMgY29uZmlybWVkLiBgaWRzYCBhcmUgdGhlIHRvcC1tb3N0IGNoZWNrZWQgbm9kZXM7IHRoZSBhcHAgc2hvdWxkIHJlbW92ZSB0aGVtIChlLmcuIHZpYSBgZGVsZXRlTm9kZXNgKS5cbiAgICovXG4gIG5vZGVzRGVsZXRlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZHM6IHN0cmluZ1tdIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5vZGUncyB2aXNpYmlsaXR5IChleWUpIHRvZ2dsZSBpcyBjbGlja2VkLiBgZGlzYWJsZWRgIGlzIHRoZSBuZXcgc3RhdGUuIFRoZSBhcHAgc2hvdWxkIHVwZGF0ZSB0aGUgbm9kZSdzIG93biBgZGlzYWJsZWRgIHN0YXRlIChlLmcuIHZpYSBgc2V0Tm9kZURpc2FibGVkYCk7IGRlc2NlbmRhbnRzIGJlY29tZSBlZmZlY3RpdmVseSBkaXNhYmxlZCB2aWEgYW5jZXN0b3IgaW5oZXJpdGFuY2UuXG4gICAqL1xuICBub2RlVmlzaWJpbGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgZGlzYWJsZWQ6IGJvb2xlYW47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW5kVmFsdWUnLCAnZmVlZGJhY2snLCAnZm9ybWF0JywgJ2hpZGVPdmVyZmxvd0RhdGVzJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd1dlZWtOdW1iZXJzJywgJ3NpemUnLCAndHlwZScsICd2YWx1ZScsICd3ZWVrU3RhcnREYXknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWRhdGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2VuZFZhbHVlJywgJ2ZlZWRiYWNrJywgJ2Zvcm1hdCcsICdoaWRlT3ZlcmZsb3dEYXRlcycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dXZWVrTnVtYmVycycsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnLCAnd2Vla1N0YXJ0RGF5J10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnLCAnY2FsZW5kYXJNb250aENoYW5nZScsICdjYWxlbmRhclllYXJDaGFuZ2UnLCAnZW5kQ2FsZW5kYXJNb250aENoYW5nZScsICdlbmRDYWxlbmRhclllYXJDaGFuZ2UnLCAncmFuZ2VDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0RhdGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djRGF0ZUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBjYWxlbmRhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+KCk7XG4gIEBPdXRwdXQoKSBjYWxlbmRhclllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIGVuZENhbGVuZGFyTW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIGVuZENhbGVuZGFyWWVhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PigpO1xuICBAT3V0cHV0KCkgcmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NEYXRlSURhdGVSYW5nZT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djRGF0ZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElEYXRlUmFuZ2UgYXMgSU1vZHVzV2NEYXRlSURhdGVSYW5nZSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0RhdGUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NEYXRlIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuIEluIHJhbmdlIG1vZGUsIGBkZXRhaWwuZmllbGRgIGlzIGAnc3RhcnQnYCBvciBgJ2VuZCdgLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuIGB0YXJnZXQudmFsdWVgIGlzIGFsd2F5cyBJU08gODYwMSAoWVlZWS1NTS1ERCksIG9yIGVtcHR5IHN0cmluZyB3aGVuIGluY29tcGxldGUgb3IgaW52YWxpZC4gSW4gcmFuZ2UgbW9kZSwgYGRldGFpbC5maWVsZGAgaXMgYCdzdGFydCdgIG9yIGAnZW5kJ2AuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy4gSW4gcmFuZ2UgbW9kZSwgYGRldGFpbC5maWVsZGAgaXMgYCdzdGFydCdgIG9yIGAnZW5kJ2AuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHN0YXJ0IChvciBzaW5nbGUtbW9kZSkgY2FsZW5kYXIgbW9udGggc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBjYWxlbmRhck1vbnRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RhcnQgKG9yIHNpbmdsZS1tb2RlKSBjYWxlbmRhciB5ZWFyIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgY2FsZW5kYXJZZWFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW5kIGNhbGVuZGFyIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VzIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRDYWxlbmRhck1vbnRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW5kIGNhbGVuZGFyIHllYXIgc2VsZWN0aW9uIGNoYW5nZXMgaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIGVuZENhbGVuZGFyWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBjb21wbGV0ZSBkYXRlIHJhbmdlIGlzIHNlbGVjdGVkIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICByYW5nZUNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NEYXRlSURhdGVSYW5nZT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjb250ZW50JywgJ2N1c3RvbUNsYXNzJywgJ29yaWVudGF0aW9uJywgJ3Bvc2l0aW9uJywgJ3Jlc3BvbnNpdmUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWRpdmlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2NvbnRlbnQnLCAnY3VzdG9tQ2xhc3MnLCAnb3JpZW50YXRpb24nLCAncG9zaXRpb24nLCAncmVzcG9uc2l2ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NEaXZpZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0RpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NEaXZpZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2J1dHRvbkFyaWFMYWJlbCcsICdidXR0b25Db2xvcicsICdidXR0b25TaGFwZScsICdidXR0b25TaXplJywgJ2J1dHRvblZhcmlhbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnbWVudUJvcmRlcmVkJywgJ21lbnVPZmZzZXQnLCAnbWVudVBsYWNlbWVudCcsICdtZW51U2l6ZScsICdtZW51U3RyYXRlZ3knLCAnbWVudVZpc2libGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWRyb3Bkb3duLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbkFyaWFMYWJlbCcsICdidXR0b25Db2xvcicsICdidXR0b25TaGFwZScsICdidXR0b25TaXplJywgJ2J1dHRvblZhcmlhbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnbWVudUJvcmRlcmVkJywgJ21lbnVPZmZzZXQnLCAnbWVudVBsYWNlbWVudCcsICdtZW51U2l6ZScsICdtZW51U3RyYXRlZ3knLCAnbWVudVZpc2libGUnXSxcbiAgb3V0cHV0czogWydtZW51VmlzaWJpbGl0eUNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djRHJvcGRvd25NZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0Ryb3Bkb3duTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBtZW51VmlzaWJpbGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0Ryb3Bkb3duTWVudUN1c3RvbUV2ZW50PHsgaXNWaXNpYmxlOiBib29sZWFuIH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0Ryb3Bkb3duTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djRHJvcGRvd25NZW51IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djRHJvcGRvd25NZW51IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbWVudVZpc2libGUgcHJvcCBjaGFuZ2VzLlxuICAgKi9cbiAgbWVudVZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRHJvcGRvd25NZW51Q3VzdG9tRXZlbnQ8eyBpc1Zpc2libGU6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY2NlcHRGaWxlVHlwZXMnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnZmlsZURyYWdnZWRPdmVySW5zdHJ1Y3Rpb25zJywgJ2luY2x1ZGVTdGF0ZUljb24nLCAnaW5zdHJ1Y3Rpb25zJywgJ2ludmFsaWRGaWxlVHlwZU1lc3NhZ2UnLCAnbWF4RmlsZUNvdW50JywgJ21heEZpbGVOYW1lTGVuZ3RoJywgJ21heFRvdGFsRmlsZVNpemVCeXRlcycsICdtdWx0aXBsZScsICdzdWNjZXNzTWVzc2FnZSddLFxuICBtZXRob2RzOiBbJ3Jlc2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1maWxlLWRyb3B6b25lJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY2NlcHRGaWxlVHlwZXMnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnZmlsZURyYWdnZWRPdmVySW5zdHJ1Y3Rpb25zJywgJ2luY2x1ZGVTdGF0ZUljb24nLCAnaW5zdHJ1Y3Rpb25zJywgJ2ludmFsaWRGaWxlVHlwZU1lc3NhZ2UnLCAnbWF4RmlsZUNvdW50JywgJ21heEZpbGVOYW1lTGVuZ3RoJywgJ21heFRvdGFsRmlsZVNpemVCeXRlcycsICdtdWx0aXBsZScsICdzdWNjZXNzTWVzc2FnZSddLFxuICBvdXRwdXRzOiBbJ2ZpbGVTZWxlY3QnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0ZpbGVEcm9wem9uZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NGaWxlRHJvcHpvbmVFbGVtZW50O1xuICBAT3V0cHV0KCkgZmlsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0ZpbGVEcm9wem9uZUN1c3RvbUV2ZW50PEZpbGVMaXN0Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NGaWxlRHJvcHpvbmVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0ZpbGVEcm9wem9uZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0ZpbGVEcm9wem9uZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gZmlsZXMgYXJlIHNlbGVjdGVkXG4gICAqL1xuICBmaWxlU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0ZpbGVEcm9wem9uZUN1c3RvbUV2ZW50PEZpbGVMaXN0Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2J1dHRvbkNvbG9yJywgJ2J1dHRvblNpemUnLCAnYnV0dG9uVmFyaWFudCcsICdjdXN0b21DbGFzcycsICdkZWZhdWx0U3BsaXQnLCAnZGVuc2l0eScsICdsZWZ0VGFyZ2V0JywgJ29yaWVudGF0aW9uJywgJ3JpZ2h0VGFyZ2V0JywgJ3NpemUnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtaGFuZGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b25Db2xvcicsICdidXR0b25TaXplJywgJ2J1dHRvblZhcmlhbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGVmYXVsdFNwbGl0JywgJ2RlbnNpdHknLCAnbGVmdFRhcmdldCcsICdvcmllbnRhdGlvbicsICdyaWdodFRhcmdldCcsICdzaXplJywgJ3R5cGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0hhbmRsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NIYW5kbGVFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djSGFuZGxlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSGFuZGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2RlY29yYXRpdmUnLCAnbmFtZScsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2RlY29yYXRpdmUnLCB7IG5hbWU6ICduYW1lJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3NpemUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NJY29uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0ljb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NJY29uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ljb24nLCAnbGV2ZWwnLCAnbWVzc2FnZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1pbnB1dC1mZWVkYmFjaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaWNvbicsIHsgbmFtZTogJ2xldmVsJywgcmVxdWlyZWQ6IHRydWUgfSwgJ21lc3NhZ2UnLCAnc2l6ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djSW5wdXRGZWVkYmFjayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NJbnB1dEZlZWRiYWNrRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0lucHV0RmVlZGJhY2sgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NJbnB1dEZlZWRiYWNrIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ZvcklkJywgJ2xhYmVsVGV4dCcsICdyZXF1aXJlZCcsICdzaXplJywgJ3N1YkxhYmVsVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtaW5wdXQtbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ZvcklkJywgJ2xhYmVsVGV4dCcsICdyZXF1aXJlZCcsICdzaXplJywgJ3N1YkxhYmVsVGV4dCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djSW5wdXRMYWJlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NJbnB1dExhYmVsRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0lucHV0TGFiZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NJbnB1dExhYmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ2hyZWYnLCAncmVsJywgJ3RhcmdldCcsICd1bmRlcmxpbmUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWxpbmsnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ2hyZWYnLCAncmVsJywgJ3RhcmdldCcsICd1bmRlcmxpbmUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0xpbmsge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djTGlua0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NMaW5rIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTGluayB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWxvYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NMb2FkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djTG9hZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0xvYWRlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0xvYWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHQnLCAnY3VzdG9tQ2xhc3MnLCAnZW1ibGVtJywgJ25hbWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWxvZ28nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsdCcsICdjdXN0b21DbGFzcycsICdlbWJsZW0nLCB7IG5hbWU6ICduYW1lJywgcmVxdWlyZWQ6IHRydWUgfV0sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NMb2dvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0xvZ29FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djTG9nbyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0xvZ28ge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnaXNTdWJNZW51JywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnaXNTdWJNZW51JywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZSddLFxuICBvdXRwdXRzOiBbJ21lbnVGb2N1c291dCcsICdtZW51U2VsZWN0aW9uQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY01lbnVFbGVtZW50O1xuICBAT3V0cHV0KCkgbWVudUZvY3Vzb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgbWVudVNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY01lbnVDdXN0b21FdmVudDx7IHNlbGVjdGVkSXRlbXM6IEhUTUxFbGVtZW50W107IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY01lbnVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY01lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NNZW51IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbWVudSBsb3NlcyBmb2N1cy5cbiAgICovXG4gIG1lbnVGb2N1c291dDogRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcyBpbiBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZS4gRW1pdHMgdGhlIGFycmF5IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBtZW51IGl0ZW0gZWxlbWVudHMuXG4gICAqL1xuICBtZW51U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY01lbnVDdXN0b21FdmVudDx7IHNlbGVjdGVkSXRlbXM6IEhUTUxFbGVtZW50W107IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY2hlY2tib3gnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZm9jdXNlZCcsICdoYXNTdWJtZW51JywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAnc3ViTGFiZWwnLCAndG9vbHRpcENvbnRlbnQnLCAndG9vbHRpcFBvc2l0aW9uJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY29sbGFwc2VTdWJtZW51J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1tZW51LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2l0ZW1TZWxlY3QnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY01lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY01lbnVJdGVtRWxlbWVudDtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51SXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NNZW51SXRlbUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NNZW51SXRlbSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBpdGVtU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY01lbnVJdGVtQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBzZWxlY3RlZD86IGJvb2xlYW47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2Ryb3AnLCAnY3VzdG9tQ2xhc3MnLCAnZnVsbHNjcmVlbicsICdtb2RhbElkJywgJ3Bvc2l0aW9uJywgJ3Nob3dDbG9zZScsICdzaG93RnVsbHNjcmVlblRvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbW9kYWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tkcm9wJywgJ2N1c3RvbUNsYXNzJywgJ2Z1bGxzY3JlZW4nLCB7IG5hbWU6ICdtb2RhbElkJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3Bvc2l0aW9uJywgJ3Nob3dDbG9zZScsICdzaG93RnVsbHNjcmVlblRvZ2dsZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTW9kYWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djTW9kYWxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NNb2RhbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBzTWVudU9wZW4nLCAnY29uZGVuc2VkJywgJ2NvbmRlbnNlZE1lbnVPcGVuJywgJ2N1c3RvbUNsYXNzJywgJ2xvZ29OYW1lJywgJ21haW5NZW51T3BlbicsICdub3RpZmljYXRpb25zTWVudU9wZW4nLCAnc2VhcmNoRGVib3VuY2VNcycsICdzZWFyY2hJbnB1dE9wZW4nLCAndGV4dE92ZXJyaWRlcycsICd1c2VyQ2FyZCcsICd1c2VyTWVudU9wZW4nLCAndmlzaWJpbGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbmF2YmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBzTWVudU9wZW4nLCAnY29uZGVuc2VkJywgJ2NvbmRlbnNlZE1lbnVPcGVuJywgJ2N1c3RvbUNsYXNzJywgJ2xvZ29OYW1lJywgJ21haW5NZW51T3BlbicsICdub3RpZmljYXRpb25zTWVudU9wZW4nLCAnc2VhcmNoRGVib3VuY2VNcycsICdzZWFyY2hJbnB1dE9wZW4nLCAndGV4dE92ZXJyaWRlcycsIHsgbmFtZTogJ3VzZXJDYXJkJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3VzZXJNZW51T3BlbicsICd2aXNpYmlsaXR5J10sXG4gIG91dHB1dHM6IFsnYWlDbGljaycsICdhcHBzQ2xpY2snLCAnYXBwc01lbnVPcGVuQ2hhbmdlJywgJ2NvbmRlbnNlZE1lbnVPcGVuQ2hhbmdlJywgJ2hlbHBDbGljaycsICdtYWluTWVudU9wZW5DaGFuZ2UnLCAnbXlUcmltYmxlQ2xpY2snLCAnbm90aWZpY2F0aW9uc0NsaWNrJywgJ25vdGlmaWNhdGlvbnNNZW51T3BlbkNoYW5nZScsICdzZWFyY2hDaGFuZ2UnLCAnc2VhcmNoQ2xpY2snLCAnc2VhcmNoSW5wdXRPcGVuQ2hhbmdlJywgJ3NpZ25PdXRDbGljaycsICd0cmltYmxlTG9nb0NsaWNrJywgJ3VzZXJNZW51T3BlbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTmF2YmFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY05hdmJhckVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBhaUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgYXBwc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgYXBwc01lbnVPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIEBPdXRwdXQoKSBjb25kZW5zZWRNZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgaGVscENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgbWFpbk1lbnVPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIEBPdXRwdXQoKSBteVRyaW1ibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbnNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbnNNZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hJbnB1dE9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIHNpZ25PdXRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIHRyaW1ibGVMb2dvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSB1c2VyTWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY05hdmJhciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY05hdmJhciB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEFJIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBhaUNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFwcHMgYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIGFwcHNDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhcHBzIG1lbnUgb3BlbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgYXBwc01lbnVPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY29uZGVuc2VkIG1lbnUgb3BlbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgY29uZGVuc2VkTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBoZWxwIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBoZWxwQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbWFpbiBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG1haW5NZW51T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgcHJvZmlsZSBBY2Nlc3MgTXlUcmltYmxlIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBteVRyaW1ibGVDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBub3RpZmljYXRpb25zIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBub3RpZmljYXRpb25zQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9ucyBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG5vdGlmaWNhdGlvbnNNZW51T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCB2YWx1ZSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgc2VhcmNoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgc2VhcmNoQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VhcmNoIGlucHV0IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIHNlYXJjaElucHV0T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgcHJvZmlsZSBzaWduIG91dCBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgc2lnbk91dENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGxvZ28gYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZCxyZWdhcmRsZXNzIG9mIHRoZSBgbG9nb05hbWVgIHByb3AgdmFsdWUuXG4gICAqL1xuICB0cmltYmxlTG9nb0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgbWVudSBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICB1c2VyTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VycmVuY3lTeW1ib2wnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaXplJywgJ3N0ZXAnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbnVtYmVyLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VycmVuY3lTeW1ib2wnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaXplJywgJ3N0ZXAnLCAndHlwZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NOdW1iZXJJbnB1dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NOdW1iZXJJbnB1dEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY051bWJlcklucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTnVtYmVySW5wdXQge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFMYWJlbFZhbHVlcycsICdjb3VudCcsICdjdXN0b21DbGFzcycsICduZXh0QnV0dG9uVGV4dCcsICdwYWdlJywgJ3ByZXZCdXR0b25UZXh0JywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFMYWJlbFZhbHVlcycsICdjb3VudCcsICdjdXN0b21DbGFzcycsICduZXh0QnV0dG9uVGV4dCcsICdwYWdlJywgJ3ByZXZCdXR0b25UZXh0JywgJ3NpemUnXSxcbiAgb3V0cHV0czogWydwYWdlQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NQYWdpbmF0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1BhZ2luYXRpb25FbGVtZW50O1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1BhZ2luYXRpb25DdXN0b21FdmVudDxJTW9kdXNXY1BhZ2luYXRpb25JUGFnZUNoYW5nZT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djUGFnaW5hdGlvbkN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElQYWdlQ2hhbmdlIGFzIElNb2R1c1djUGFnaW5hdGlvbklQYWdlQ2hhbmdlIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUGFnaW5hdGlvbiBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1BhZ2luYXRpb24ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHBhZ2UgY2hhbmdlc1xuICAgKi9cbiAgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ8SU1vZHVzV2NQYWdpbmF0aW9uSVBhZ2VDaGFuZ2U+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZmxvYXRpbmcnLCAnaGVpZ2h0JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZmxvYXRpbmcnLCAnaGVpZ2h0JywgJ3dpZHRoJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NQYW5lbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1BhbmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ21haW5NZW51JywgJ21lbnVPbmUnLCAnbWVudVR3bycsICdwcm9maWxlUHJvcHMnLCAnc2hvd1NpZ25PdXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXByb2ZpbGUtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnbWFpbk1lbnUnLCAnbWVudU9uZScsICdtZW51VHdvJywgeyBuYW1lOiAncHJvZmlsZVByb3BzJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3Nob3dTaWduT3V0J10sXG4gIG91dHB1dHM6IFsnc2lnbk91dENsaWNrJywgJ21lbnVJdGVtQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Byb2ZpbGVNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1Byb2ZpbGVNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIHNpZ25PdXRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1Byb2ZpbGVNZW51Q3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIEBPdXRwdXQoKSBtZW51SXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUHJvZmlsZU1lbnVDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1Byb2ZpbGVNZW51Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NQcm9maWxlTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1Byb2ZpbGVNZW51IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgU2lnbiBPdXQgbWVudSBpdGVtIGlzIGNsaWNrZWRcbiAgICovXG4gIHNpZ25PdXRDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbnkgbWVudSBpdGVtIGlzIGNsaWNrZWQsIHBhc3NpbmcgYmFjayB0aGUgaXRlbSB2YWx1ZSBvciBsYWJlbFxuICAgKi9cbiAgbWVudUl0ZW1DbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpbmRldGVybWluYXRlJywgJ2xhYmVsJywgJ21heCcsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wcm9ncmVzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAndmFsdWUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUHJvZ3Jlc3Mge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUHJvZ3Jlc3NFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUHJvZ3Jlc3MgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQcm9ncmVzcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1yYWRpbycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NSYWRpb0VsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djUmFkaW9DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1JhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djUmFkaW8ge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsbG93SGFsZicsICdjb3VudCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdnZXRBcmlhTGFiZWxUZXh0JywgJ3NpemUnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcmF0aW5nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGxvd0hhbGYnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZ2V0QXJpYUxhYmVsVGV4dCcsICdzaXplJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgb3V0cHV0czogWydyYXRpbmdDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1JhdGluZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NSYXRpbmdFbGVtZW50O1xuICBAT3V0cHV0KCkgcmF0aW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUmF0aW5nQ3VzdG9tRXZlbnQ8SU1vZHVzV2NSYXRpbmdJUmF0aW5nQ2hhbmdlPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NSYXRpbmdDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJUmF0aW5nQ2hhbmdlIGFzIElNb2R1c1djUmF0aW5nSVJhdGluZ0NoYW5nZSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1JhdGluZyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1JhdGluZyB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHJhdGluZyBjaGFuZ2VzXG4gICAqL1xuICByYXRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djUmF0aW5nQ3VzdG9tRXZlbnQ8SU1vZHVzV2NSYXRpbmdJUmF0aW5nQ2hhbmdlPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbnMnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2VsZWN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1NlbGVjdEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTZWxlY3RDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NTZWxlY3Qge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NTZWxlY3RDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NTZWxlY3RDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NTZWxlY3RDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlT25DbGlja091dHNpZGUnLCAnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAnbWF4V2lkdGgnLCAnbW9kZScsICd0YXJnZXRDb250ZW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1zaWRlLW5hdmlnYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlT25DbGlja091dHNpZGUnLCAnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAnbWF4V2lkdGgnLCAnbW9kZScsICd0YXJnZXRDb250ZW50J10sXG4gIG91dHB1dHM6IFsnZXhwYW5kZWRDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1NpZGVOYXZpZ2F0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1NpZGVOYXZpZ2F0aW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2lkZU5hdmlnYXRpb25DdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTaWRlTmF2aWdhdGlvbkN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2lkZU5hdmlnYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NTaWRlTmF2aWdhdGlvbiB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGV4cGFuZGVkIHN0YXRlIGNoYW5nZXMgKGV4cGFuZGVkL2NvbGxhcHNlZCkuXG4gICAqL1xuICBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NTaWRlTmF2aWdhdGlvbkN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaGVpZ2h0JywgJ3NoYXBlJywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1za2VsZXRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaGVpZ2h0JywgJ3NoYXBlJywgJ3dpZHRoJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTa2VsZXRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTa2VsZXRvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NTa2VsZXRvbiBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1NrZWxldG9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1zbGlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1NsaWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTbGlkZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2xpZGVyQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU2xpZGVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2xpZGVyQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2xpZGVyQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2xpZGVyQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpbnRlcmFjdGl2ZScsICdvcmllbnRhdGlvbicsICdzdGVwcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW50ZXJhY3RpdmUnLCAnb3JpZW50YXRpb24nLCAnc3RlcHMnXSxcbiAgb3V0cHV0czogWydzdGVwQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1N0ZXBwZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU3RlcHBlckVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBzdGVwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTdGVwcGVyQ3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1N0ZXBwZXJDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1N0ZXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2l0aCB0aGUgMC1iYXNlZCBzdGVwIGluZGV4IHdoZW4gYSBzdGVwIGlzIGFjdGl2YXRlZCBhbmQgYGludGVyYWN0aXZlYCBpcyB0cnVlLlxuICAgKi9cbiAgc3RlcENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N0ZXBwZXJDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbmRldGVybWluYXRlJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXN3aXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1N3aXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTd2l0Y2hFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU3dpdGNoQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU3dpdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU3dpdGNoIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djU3dpdGNoQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU3dpdGNoQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djU3dpdGNoQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtbnMnLCAnY3VycmVudFBhZ2UnLCAnY3VzdG9tQ2xhc3MnLCAnZGF0YScsICdkZW5zaXR5JywgJ2VkaXRhYmxlJywgJ2hvdmVyJywgJ2lzUm93U2VsZWN0YWJsZScsICdwYWdlU2l6ZU9wdGlvbnMnLCAncGFnaW5hdGVkJywgJ3NlbGVjdGFibGUnLCAnc2VsZWN0ZWRSb3dJZHMnLCAnc2hvd1BhZ2VTaXplU2VsZWN0b3InLCAnc29ydGFibGUnLCAnemVicmEnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYXB0aW9uJywgeyBuYW1lOiAnY29sdW1ucycsIHJlcXVpcmVkOiB0cnVlIH0sICdjdXJyZW50UGFnZScsICdjdXN0b21DbGFzcycsIHsgbmFtZTogJ2RhdGEnLCByZXF1aXJlZDogdHJ1ZSB9LCAnZGVuc2l0eScsICdlZGl0YWJsZScsICdob3ZlcicsICdpc1Jvd1NlbGVjdGFibGUnLCAncGFnZVNpemVPcHRpb25zJywgJ3BhZ2luYXRlZCcsICdzZWxlY3RhYmxlJywgJ3NlbGVjdGVkUm93SWRzJywgJ3Nob3dQYWdlU2l6ZVNlbGVjdG9yJywgJ3NvcnRhYmxlJywgJ3plYnJhJ10sXG4gIG91dHB1dHM6IFsnY2VsbEVkaXRTdGFydCcsICdjZWxsRWRpdENvbW1pdCcsICdyb3dDbGljaycsICdzb3J0Q2hhbmdlJywgJ3BhZ2luYXRpb25DaGFuZ2UnLCAncm93U2VsZWN0aW9uQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUYWJsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUYWJsZUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBjZWxsRWRpdFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvd0luZGV4OiBudW1iZXI7IGNvbElkOiBzdHJpbmc7IH0+PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXRDb21taXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93SW5kZXg6IG51bWJlcjsgY29sSWQ6IHN0cmluZzsgbmV3VmFsdWU6IHVua25vd247IHVwZGF0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyB9Pj4oKTtcbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGluZGV4OiBudW1iZXI7IH0+PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZVNvcnRpbmdTdGF0ZT4+KCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDxJTW9kdXNXY1RhYmxlSVBhZ2luYXRpb25DaGFuZ2VFdmVudERldGFpbD4+KCk7XG4gIEBPdXRwdXQoKSByb3dTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdOyBzZWxlY3RlZFJvd0lkczogc3RyaW5nW107IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgU29ydGluZ1N0YXRlIGFzIElNb2R1c1djVGFibGVTb3J0aW5nU3RhdGUgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVBhZ2luYXRpb25DaGFuZ2VFdmVudERldGFpbCBhcyBJTW9kdXNXY1RhYmxlSVBhZ2luYXRpb25DaGFuZ2VFdmVudERldGFpbCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RhYmxlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGFibGUge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBjZWxsIGVkaXRpbmcgc3RhcnRzLlxuICAgKi9cbiAgY2VsbEVkaXRTdGFydDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93SW5kZXg6IG51bWJlcjsgY29sSWQ6IHN0cmluZzsgfT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBjZWxsIGVkaXRpbmcgaXMgY29tbWl0dGVkIHdpdGggdGhlIG5ldyB2YWx1ZS5cbiAgICovXG4gIGNlbGxFZGl0Q29tbWl0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3dJbmRleDogbnVtYmVyOyBjb2xJZDogc3RyaW5nOyBuZXdWYWx1ZTogdW5rbm93bjsgdXBkYXRlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByb3cgaXMgY2xpY2tlZC5cbiAgICovXG4gIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyBpbmRleDogbnVtYmVyOyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHNvcnRpbmcgY2hhbmdlcyB3aXRoIHRoZSBuZXcgc29ydGluZyBzdGF0ZS5cbiAgICovXG4gIHNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDxJTW9kdXNXY1RhYmxlU29ydGluZ1N0YXRlPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHBhZ2luYXRpb24gY2hhbmdlcyB3aXRoIHRoZSBuZXcgcGFnaW5hdGlvbiBzdGF0ZS5cbiAgICovXG4gIHBhZ2luYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDxJTW9kdXNXY1RhYmxlSVBhZ2luYXRpb25DaGFuZ2VFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiByb3cgc2VsZWN0aW9uIGNoYW5nZXMgd2l0aCB0aGUgc2VsZWN0ZWQgcm93cyBhbmQgdGhlaXIgSURzLlxuICAgKi9cbiAgcm93U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyBzZWxlY3RlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107IHNlbGVjdGVkUm93SWRzOiBzdHJpbmdbXTsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3RhYlN0eWxlJywgJ3RhYnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRhYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZVRhYkluZGV4JywgJ2N1c3RvbUNsYXNzJywgJ3NpemUnLCAndGFiU3R5bGUnLCAndGFicyddLFxuICBvdXRwdXRzOiBbJ3RhYkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGFicyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUYWJzRWxlbWVudDtcbiAgQE91dHB1dCgpIHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYnNDdXN0b21FdmVudDx7IHByZXZpb3VzVGFiOiBudW1iZXI7IG5ld1RhYjogbnVtYmVyOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUYWJzQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUYWJzIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGFicyB7XG4gIC8qKlxuICAgKiBXaGVuIGEgdGFiIGlzIHN3aXRjaGVkIHRvLCB0aGlzIGV2ZW50IG91dHB1dHMgdGhlIHJlbGV2YW50IGluZGljZXNcbiAgICovXG4gIHRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJzQ3VzdG9tRXZlbnQ8eyBwcmV2aW91c1RhYjogbnVtYmVyOyBuZXdUYWI6IG51bWJlcjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ2FwaXRhbGl6ZScsICdhdXRvQ29tcGxldGUnLCAnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY2xlYXJBcmlhTGFiZWwnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2luY2x1ZGVDbGVhcicsICdpbmNsdWRlU2VhcmNoJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRleHQtaW5wdXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9DYXBpdGFsaXplJywgJ2F1dG9Db21wbGV0ZScsICdhdXRvQ29ycmVjdCcsICdib3JkZXJlZCcsICdjbGVhckFyaWFMYWJlbCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdlbnRlcmtleWhpbnQnLCAnZmVlZGJhY2snLCAnaW5jbHVkZUNsZWFyJywgJ2luY2x1ZGVTZWFyY2gnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndHlwZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2NsZWFyQ2xpY2snLCAnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RleHRJbnB1dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUZXh0SW5wdXRFbGVtZW50O1xuICBAT3V0cHV0KCkgY2xlYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dElucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGV4dElucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGV4dElucHV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2xlYXIgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBjbGVhckNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dElucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dElucHV0Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dElucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ29ycmVjdCcsICdib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdlbnRlcmtleWhpbnQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRleHRhcmVhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ29ycmVjdCcsICdib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdlbnRlcmtleWhpbnQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGV4dGFyZWEge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGV4dGFyZWFFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUZXh0YXJlYSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RleHRhcmVhIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydpbml0aWFsVGhlbWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRoZW1lLXByb3ZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydpbml0aWFsVGhlbWUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RoZW1lUHJvdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGhlbWVQcm92aWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUaGVtZVByb3ZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGhlbWVQcm92aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdGhlbWUtc3dpdGNoZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJ10sXG4gIG91dHB1dHM6IFsndGhlbWVDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RoZW1lU3dpdGNoZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGhlbWVTd2l0Y2hlckVsZW1lbnQ7XG4gIEBPdXRwdXQoKSB0aGVtZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RoZW1lU3dpdGNoZXJDdXN0b21FdmVudDxJTW9kdXNXY1RoZW1lU3dpdGNoZXJJVGhlbWVDb25maWc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RoZW1lU3dpdGNoZXJDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJVGhlbWVDb25maWcgYXMgSU1vZHVzV2NUaGVtZVN3aXRjaGVySVRoZW1lQ29uZmlnIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGhlbWVTd2l0Y2hlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RoZW1lU3dpdGNoZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSB0aGVtZSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgdGhlbWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGhlbWVTd2l0Y2hlckN1c3RvbUV2ZW50PElNb2R1c1djVGhlbWVTd2l0Y2hlcklUaGVtZUNvbmZpZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGF0YWxpc3RJZCcsICdkYXRhbGlzdE9wdGlvbnMnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93U2Vjb25kcycsICdzaXplJywgJ3N0ZXAnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRpbWUtaW5wdXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Db21wbGV0ZScsICdib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkYXRhbGlzdElkJywgJ2RhdGFsaXN0T3B0aW9ucycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dTZWNvbmRzJywgJ3NpemUnLCAnc3RlcCcsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUaW1lSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGltZUlucHV0RWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUaW1lSW5wdXRDdXN0b21FdmVudDxFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUaW1lSW5wdXQgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUaW1lSW5wdXQge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NUaW1lSW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUaW1lSW5wdXRDdXN0b21FdmVudDxFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWxheScsICdwb3NpdGlvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdG9hc3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2RlbGF5JywgJ3Bvc2l0aW9uJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUb2FzdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUb2FzdEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUb2FzdCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RvYXN0IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10b29sYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUb29sYmFyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1Rvb2xiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUb29sYmFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbnRlbnQnLCAnY29udGVudEVsZW1lbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZm9yY2VPcGVuJywgJ3Bvc2l0aW9uJywgJ3Rvb2x0aXBJZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdG9vbHRpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29udGVudCcsICdjb250ZW50RWxlbWVudCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmb3JjZU9wZW4nLCAncG9zaXRpb24nLCAndG9vbHRpcElkJ10sXG4gIG91dHB1dHM6IFsnZGlzbWlzc0VzY2FwZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVG9vbHRpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUb29sdGlwRWxlbWVudDtcbiAgQE91dHB1dCgpIGRpc21pc3NFc2NhcGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUb29sdGlwQ3VzdG9tRXZlbnQ8YW55Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUb29sdGlwQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVG9vbHRpcCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IGZpcmVzIHdoZW4gdGhlIHRvb2x0aXAgaXMgZGlzbWlzc2VkIHZpYSBFc2NhcGUga2V5XG4gICAqL1xuICBkaXNtaXNzRXNjYXBlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1Rvb2x0aXBDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmxvY2tFeHBhbmQnLCAnYm9yZGVyZWQnLCAnY2hlY2tib3gnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZm9jdXNlZCcsICdoYXNTdWJtZW51JywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAnc3ViTGFiZWwnLCAndG9vbHRpcENvbnRlbnQnLCAndG9vbHRpcFBvc2l0aW9uJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY29sbGFwc2VTdWJtZW51J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10cmVlLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Jsb2NrRXhwYW5kJywgJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2l0ZW1TZWxlY3QnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RyZWVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RyZWVJdGVtRWxlbWVudDtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlSXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUcmVlSXRlbUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVHJlZUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUcmVlSXRlbSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSB0cmVlIGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBpdGVtU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVJdGVtQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBzZWxlY3RlZD86IGJvb2xlYW47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnaXNTdWJNZW51JywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdHJlZS1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdpc1N1Yk1lbnUnLCAnb3JpZW50YXRpb24nLCAnc2VsZWN0aW9uTW9kZScsICdzaXplJ10sXG4gIG91dHB1dHM6IFsnbWVudUZvY3Vzb3V0JywgJ21lbnVTZWxlY3Rpb25DaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RyZWVNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RyZWVNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIG1lbnVGb2N1c291dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBtZW51U2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVHJlZU1lbnVDdXN0b21FdmVudDx7IHNlbGVjdGVkSXRlbXM6IEhUTUxFbGVtZW50W107IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUcmVlTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RyZWVNZW51IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdHJlZSBtZW51IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgbWVudUZvY3Vzb3V0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcyBpbiBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZS4gRW1pdHMgdGhlIGFycmF5IG9mIGN1cnJlbnRseSBzZWxlY3RlZCB0cmVlIGl0ZW0gZWxlbWVudHMuXG4gICAqL1xuICBtZW51U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hpZXJhcmNoeScsICdsYWJlbCcsICdzaXplJywgJ3dlaWdodCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdHlwb2dyYXBoeScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaGllcmFyY2h5JywgeyBuYW1lOiAnbGFiZWwnLCByZXF1aXJlZDogdHJ1ZSB9LCAnc2l6ZScsICd3ZWlnaHQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1R5cG9ncmFwaHkge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVHlwb2dyYXBoeUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUeXBvZ3JhcGh5IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVHlwb2dyYXBoeSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdleHBhbmRlZCcsICdwdXNoQ29udGVudCcsICd0YXJnZXRFbGVtZW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy11dGlsaXR5LXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdleHBhbmRlZCcsICdwdXNoQ29udGVudCcsICd0YXJnZXRFbGVtZW50J10sXG4gIG91dHB1dHM6IFsncGFuZWxPcGVuZWQnLCAncGFuZWxDbG9zZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1V0aWxpdHlQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NVdGlsaXR5UGFuZWxFbGVtZW50O1xuICBAT3V0cHV0KCkgcGFuZWxPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NVdGlsaXR5UGFuZWxDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIHBhbmVsQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NVdGlsaXR5UGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NVdGlsaXR5UGFuZWwge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSBwYW5lbCBpcyBvcGVuZWQuXG4gICAqL1xuICBwYW5lbE9wZW5lZDogRXZlbnRFbWl0dGVyPE1vZHVzV2NVdGlsaXR5UGFuZWxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IGZpcmVzIHdoZW4gdGhlIHBhbmVsIGlzIGNsb3NlZC5cbiAgICovXG4gIHBhbmVsQ2xvc2VkOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1V0aWxpdHlQYW5lbEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG4iXX0=