@nova-design-system/nova-angular 3.22.0 → 3.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
1
  import { __decorate } from "tslib";
2
2
  /* tslint:disable */
3
3
  /* auto-generated angular directive proxies */
4
- import { ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
4
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
5
+ import { ProxyCmp } from './angular-component-lib/utils';
6
6
  import * as i0 from "@angular/core";
7
7
  let NvAccordion = class NvAccordion {
8
8
  constructor(c, r, z) {
9
9
  this.z = z;
10
+ this.openIndexesChanged = new EventEmitter();
10
11
  c.detach();
11
12
  this.el = r.nativeElement;
12
- proxyOutputs(this, this.el, ['openIndexesChanged']);
13
13
  }
14
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvAccordion, 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.9", type: NvAccordion, selector: "nv-accordion", inputs: { data: "data", mode: "mode", openIndexes: "openIndexes" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvAccordion, selector: "nv-accordion", inputs: { data: "data", mode: "mode", openIndexes: "openIndexes" }, outputs: { openIndexesChanged: "openIndexesChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
16
  };
17
17
  NvAccordion = __decorate([
18
18
  ProxyCmp({
@@ -29,18 +29,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
29
29
  template: '<ng-content></ng-content>',
30
30
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
31
31
  inputs: ['data', 'mode', 'openIndexes'],
32
+ outputs: ['openIndexesChanged'],
32
33
  standalone: false
33
34
  }]
34
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
35
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openIndexesChanged: [{
36
+ type: Output
37
+ }] } });
35
38
  let NvAccordionItem = class NvAccordionItem {
36
39
  constructor(c, r, z) {
37
40
  this.z = z;
41
+ this.itemToggle = new EventEmitter();
38
42
  c.detach();
39
43
  this.el = r.nativeElement;
40
- proxyOutputs(this, this.el, ['itemToggle']);
41
44
  }
42
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvAccordionItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvAccordionItem, selector: "nv-accordion-item", inputs: { disabled: "disabled", itemTitle: "itemTitle", maxContentHeight: "maxContentHeight", mode: "mode", open: "open", subtitle: "subtitle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvAccordionItem, selector: "nv-accordion-item", inputs: { disabled: "disabled", itemTitle: "itemTitle", maxContentHeight: "maxContentHeight", mode: "mode", open: "open", subtitle: "subtitle" }, outputs: { itemToggle: "itemToggle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
47
  };
45
48
  NvAccordionItem = __decorate([
46
49
  ProxyCmp({
@@ -57,18 +60,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
57
60
  template: '<ng-content></ng-content>',
58
61
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
59
62
  inputs: ['disabled', 'itemTitle', 'maxContentHeight', 'mode', 'open', 'subtitle'],
63
+ outputs: ['itemToggle'],
60
64
  standalone: false
61
65
  }]
62
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
66
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { itemToggle: [{
67
+ type: Output
68
+ }] } });
63
69
  let NvAlert = class NvAlert {
64
70
  constructor(c, r, z) {
65
71
  this.z = z;
72
+ this.hiddenChanged = new EventEmitter();
73
+ this.hiddenChangedComplete = new EventEmitter();
74
+ this.closeClicked = new EventEmitter();
66
75
  c.detach();
67
76
  this.el = r.nativeElement;
68
- proxyOutputs(this, this.el, ['hiddenChanged', 'hiddenChangedComplete', 'closeClicked']);
69
77
  }
70
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvAlert, selector: "nv-alert", inputs: { color: "color", dismissible: "dismissible", feedback: "feedback", hasNoAnimations: "hasNoAnimations", heading: "heading", hidden: "hidden", icon: "icon", message: "message", preventAutoClose: "preventAutoClose" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvAlert, selector: "nv-alert", inputs: { color: "color", dismissible: "dismissible", feedback: "feedback", hasNoAnimations: "hasNoAnimations", heading: "heading", hidden: "hidden", icon: "icon", message: "message", preventAutoClose: "preventAutoClose" }, outputs: { hiddenChanged: "hiddenChanged", hiddenChangedComplete: "hiddenChangedComplete", closeClicked: "closeClicked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
80
  };
73
81
  NvAlert = __decorate([
74
82
  ProxyCmp({
@@ -84,9 +92,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
84
92
  template: '<ng-content></ng-content>',
85
93
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
86
94
  inputs: ['color', 'dismissible', 'feedback', 'hasNoAnimations', 'heading', 'hidden', 'icon', 'message', 'preventAutoClose'],
95
+ outputs: ['hiddenChanged', 'hiddenChangedComplete', 'closeClicked'],
87
96
  standalone: false
88
97
  }]
89
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
98
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { hiddenChanged: [{
99
+ type: Output
100
+ }], hiddenChangedComplete: [{
101
+ type: Output
102
+ }], closeClicked: [{
103
+ type: Output
104
+ }] } });
90
105
  let NvAvatar = class NvAvatar {
91
106
  constructor(c, r, z) {
92
107
  this.z = z;
@@ -116,12 +131,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
116
131
  let NvBadge = class NvBadge {
117
132
  constructor(c, r, z) {
118
133
  this.z = z;
134
+ this.closeClicked = new EventEmitter();
135
+ this.hiddenChanged = new EventEmitter();
136
+ this.hiddenChangedComplete = new EventEmitter();
119
137
  c.detach();
120
138
  this.el = r.nativeElement;
121
- proxyOutputs(this, this.el, ['closeClicked', 'hiddenChanged', 'hiddenChangedComplete']);
122
139
  }
123
140
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvBadge, selector: "nv-badge", inputs: { color: "color", dismissal: "dismissal", dismissible: "dismissible", hidden: "hidden", icon: "icon", iconLocation: "iconLocation", isIconOnly: "isIconOnly", label: "label", leadIcon: "leadIcon", preventAutoClose: "preventAutoClose" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvBadge, selector: "nv-badge", inputs: { color: "color", dismissal: "dismissal", dismissible: "dismissible", hidden: "hidden", icon: "icon", iconLocation: "iconLocation", isIconOnly: "isIconOnly", label: "label", leadIcon: "leadIcon", preventAutoClose: "preventAutoClose" }, outputs: { closeClicked: "closeClicked", hiddenChanged: "hiddenChanged", hiddenChangedComplete: "hiddenChangedComplete" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
142
  };
126
143
  NvBadge = __decorate([
127
144
  ProxyCmp({
@@ -137,9 +154,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
137
154
  template: '<ng-content></ng-content>',
138
155
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
139
156
  inputs: ['color', 'dismissal', 'dismissible', 'hidden', 'icon', 'iconLocation', 'isIconOnly', 'label', 'leadIcon', 'preventAutoClose'],
157
+ outputs: ['closeClicked', 'hiddenChanged', 'hiddenChangedComplete'],
140
158
  standalone: false
141
159
  }]
142
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
160
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { closeClicked: [{
161
+ type: Output
162
+ }], hiddenChanged: [{
163
+ type: Output
164
+ }], hiddenChangedComplete: [{
165
+ type: Output
166
+ }] } });
143
167
  let NvBreadcrumb = class NvBreadcrumb {
144
168
  constructor(c, r, z) {
145
169
  this.z = z;
@@ -245,12 +269,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
245
269
  let NvCalendar = class NvCalendar {
246
270
  constructor(c, r, z) {
247
271
  this.z = z;
272
+ this.singleDateChange = new EventEmitter();
273
+ this.rangeDateChange = new EventEmitter();
274
+ this.valueChanged = new EventEmitter();
248
275
  c.detach();
249
276
  this.el = r.nativeElement;
250
- proxyOutputs(this, this.el, ['singleDateChange', 'rangeDateChange', 'valueChanged']);
251
277
  }
252
278
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvCalendar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvCalendar, selector: "nv-calendar", inputs: { cancelLabel: "cancelLabel", dateFormat: "dateFormat", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", max: "max", min: "min", numberOfCalendars: "numberOfCalendars", primaryLabel: "primaryLabel", rangeValue: "rangeValue", selectionType: "selectionType", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", singleValue: "singleValue", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
279
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvCalendar, selector: "nv-calendar", inputs: { cancelLabel: "cancelLabel", dateFormat: "dateFormat", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", max: "max", min: "min", numberOfCalendars: "numberOfCalendars", primaryLabel: "primaryLabel", rangeValue: "rangeValue", selectionType: "selectionType", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", singleValue: "singleValue", value: "value" }, outputs: { singleDateChange: "singleDateChange", rangeDateChange: "rangeDateChange", valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
280
  };
255
281
  NvCalendar = __decorate([
256
282
  ProxyCmp({
@@ -267,9 +293,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
267
293
  template: '<ng-content></ng-content>',
268
294
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
269
295
  inputs: ['cancelLabel', 'dateFormat', 'disabledDates', 'firstDayOfWeek', 'locale', 'max', 'min', 'numberOfCalendars', 'primaryLabel', 'rangeValue', 'selectionType', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'singleValue', 'value'],
296
+ outputs: ['singleDateChange', 'rangeDateChange', 'valueChanged'],
270
297
  standalone: false
271
298
  }]
272
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
299
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { singleDateChange: [{
300
+ type: Output
301
+ }], rangeDateChange: [{
302
+ type: Output
303
+ }], valueChanged: [{
304
+ type: Output
305
+ }] } });
273
306
  let NvCol = class NvCol {
274
307
  constructor(c, r, z) {
275
308
  this.z = z;
@@ -299,12 +332,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
299
332
  let NvDatagrid = class NvDatagrid {
300
333
  constructor(c, r, z) {
301
334
  this.z = z;
335
+ this.action = new EventEmitter();
336
+ this.selectedRows = new EventEmitter();
337
+ this.stateChanged = new EventEmitter();
302
338
  c.detach();
303
339
  this.el = r.nativeElement;
304
- proxyOutputs(this, this.el, ['action', 'selectedRows', 'stateChanged']);
305
340
  }
306
341
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDatagrid, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDatagrid, selector: "nv-datagrid", inputs: { autoGenerateColumns: "autoGenerateColumns", columns: "columns", data: "data", enableGlobalFilter: "enableGlobalFilter", enablePagination: "enablePagination", enableRowSelection: "enableRowSelection", enableSorting: "enableSorting", fallbackValue: "fallbackValue", globalFilterPosition: "globalFilterPosition", noColumnsNoDataMessage: "noColumnsNoDataMessage", noDataMessage: "noDataMessage", pageSize: "pageSize", pageSizes: "pageSizes", state: "state" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
342
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDatagrid, selector: "nv-datagrid", inputs: { autoGenerateColumns: "autoGenerateColumns", columns: "columns", data: "data", enableGlobalFilter: "enableGlobalFilter", enablePagination: "enablePagination", enableRowSelection: "enableRowSelection", enableSorting: "enableSorting", fallbackValue: "fallbackValue", globalFilterPosition: "globalFilterPosition", noColumnsNoDataMessage: "noColumnsNoDataMessage", noDataMessage: "noDataMessage", pageSize: "pageSize", pageSizes: "pageSizes", state: "state" }, outputs: { action: "action", selectedRows: "selectedRows", stateChanged: "stateChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
308
343
  };
309
344
  NvDatagrid = __decorate([
310
345
  ProxyCmp({
@@ -320,9 +355,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
320
355
  template: '<ng-content></ng-content>',
321
356
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
322
357
  inputs: ['autoGenerateColumns', 'columns', 'data', 'enableGlobalFilter', 'enablePagination', 'enableRowSelection', 'enableSorting', 'fallbackValue', 'globalFilterPosition', 'noColumnsNoDataMessage', 'noDataMessage', 'pageSize', 'pageSizes', 'state'],
358
+ outputs: ['action', 'selectedRows', 'stateChanged'],
323
359
  standalone: false
324
360
  }]
325
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
361
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { action: [{
362
+ type: Output
363
+ }], selectedRows: [{
364
+ type: Output
365
+ }], stateChanged: [{
366
+ type: Output
367
+ }] } });
326
368
  let NvDatagridcolumn = class NvDatagridcolumn {
327
369
  constructor(c, r, z) {
328
370
  this.z = z;
@@ -352,12 +394,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
352
394
  let NvDialog = class NvDialog {
353
395
  constructor(c, r, z) {
354
396
  this.z = z;
397
+ this.openChanged = new EventEmitter();
355
398
  c.detach();
356
399
  this.el = r.nativeElement;
357
- proxyOutputs(this, this.el, ['openChanged']);
358
400
  }
359
401
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
360
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDialog, selector: "nv-dialog", inputs: { autofocus: "autofocus", clickOutside: "clickOutside", controlled: "controlled", full: "full", open: "open", undismissable: "undismissable" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
402
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDialog, selector: "nv-dialog", inputs: { autofocus: "autofocus", clickOutside: "clickOutside", controlled: "controlled", full: "full", open: "open", undismissable: "undismissable" }, outputs: { openChanged: "openChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
361
403
  };
362
404
  NvDialog = __decorate([
363
405
  ProxyCmp({
@@ -374,18 +416,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
374
416
  template: '<ng-content></ng-content>',
375
417
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
376
418
  inputs: ['autofocus', 'clickOutside', 'controlled', 'full', 'open', 'undismissable'],
419
+ outputs: ['openChanged'],
377
420
  standalone: false
378
421
  }]
379
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
422
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openChanged: [{
423
+ type: Output
424
+ }] } });
380
425
  let NvDialogfooter = class NvDialogfooter {
381
426
  constructor(c, r, z) {
382
427
  this.z = z;
428
+ this.dialogCanceled = new EventEmitter();
429
+ this.dialogPrimaryClicked = new EventEmitter();
383
430
  c.detach();
384
431
  this.el = r.nativeElement;
385
- proxyOutputs(this, this.el, ['dialogCanceled', 'dialogPrimaryClicked']);
386
432
  }
387
433
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDialogfooter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
388
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDialogfooter, selector: "nv-dialogfooter", inputs: { cancelLabel: "cancelLabel", danger: "danger", disabled: "disabled", form: "form", leadingIcon: "leadingIcon", primaryButtonType: "primaryButtonType", primaryLabel: "primaryLabel", trailingIcon: "trailingIcon", undismissable: "undismissable" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
434
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDialogfooter, selector: "nv-dialogfooter", inputs: { cancelLabel: "cancelLabel", danger: "danger", disabled: "disabled", form: "form", leadingIcon: "leadingIcon", primaryButtonType: "primaryButtonType", primaryLabel: "primaryLabel", trailingIcon: "trailingIcon", undismissable: "undismissable" }, outputs: { dialogCanceled: "dialogCanceled", dialogPrimaryClicked: "dialogPrimaryClicked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
389
435
  };
390
436
  NvDialogfooter = __decorate([
391
437
  ProxyCmp({
@@ -401,9 +447,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
401
447
  template: '<ng-content></ng-content>',
402
448
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
403
449
  inputs: ['cancelLabel', 'danger', 'disabled', 'form', 'leadingIcon', 'primaryButtonType', 'primaryLabel', 'trailingIcon', 'undismissable'],
450
+ outputs: ['dialogCanceled', 'dialogPrimaryClicked'],
404
451
  standalone: false
405
452
  }]
406
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
453
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dialogCanceled: [{
454
+ type: Output
455
+ }], dialogPrimaryClicked: [{
456
+ type: Output
457
+ }] } });
407
458
  let NvDialogheader = class NvDialogheader {
408
459
  constructor(c, r, z) {
409
460
  this.z = z;
@@ -430,19 +481,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
430
481
  standalone: false
431
482
  }]
432
483
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
484
+ let NvDrawer = class NvDrawer {
485
+ constructor(c, r, z) {
486
+ this.z = z;
487
+ this.openChanged = new EventEmitter();
488
+ c.detach();
489
+ this.el = r.nativeElement;
490
+ }
491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
492
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDrawer, selector: "nv-drawer", inputs: { autofocus: "autofocus", clickOutside: "clickOutside", controlled: "controlled", open: "open", side: "side", size: "size", swipeToOpen: "swipeToOpen", undismissable: "undismissable", width: "width" }, outputs: { openChanged: "openChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
493
+ };
494
+ NvDrawer = __decorate([
495
+ ProxyCmp({
496
+ inputs: ['autofocus', 'clickOutside', 'controlled', 'open', 'side', 'size', 'swipeToOpen', 'undismissable', 'width'],
497
+ methods: ['show', 'close']
498
+ })
499
+ ], NvDrawer);
500
+ export { NvDrawer };
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawer, decorators: [{
502
+ type: Component,
503
+ args: [{
504
+ selector: 'nv-drawer',
505
+ changeDetection: ChangeDetectionStrategy.OnPush,
506
+ template: '<ng-content></ng-content>',
507
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
508
+ inputs: ['autofocus', 'clickOutside', 'controlled', 'open', 'side', 'size', 'swipeToOpen', 'undismissable', 'width'],
509
+ outputs: ['openChanged'],
510
+ standalone: false
511
+ }]
512
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openChanged: [{
513
+ type: Output
514
+ }] } });
515
+ let NvDrawerfooter = class NvDrawerfooter {
516
+ constructor(c, r, z) {
517
+ this.z = z;
518
+ this.drawerCanceled = new EventEmitter();
519
+ this.drawerPrimaryClicked = new EventEmitter();
520
+ c.detach();
521
+ this.el = r.nativeElement;
522
+ }
523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawerfooter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
524
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDrawerfooter, selector: "nv-drawerfooter", inputs: { cancelLabel: "cancelLabel", danger: "danger", disabled: "disabled", form: "form", leadingIcon: "leadingIcon", primaryButtonType: "primaryButtonType", primaryLabel: "primaryLabel", trailingIcon: "trailingIcon", undismissable: "undismissable" }, outputs: { drawerCanceled: "drawerCanceled", drawerPrimaryClicked: "drawerPrimaryClicked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
525
+ };
526
+ NvDrawerfooter = __decorate([
527
+ ProxyCmp({
528
+ inputs: ['cancelLabel', 'danger', 'disabled', 'form', 'leadingIcon', 'primaryButtonType', 'primaryLabel', 'trailingIcon', 'undismissable']
529
+ })
530
+ ], NvDrawerfooter);
531
+ export { NvDrawerfooter };
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawerfooter, decorators: [{
533
+ type: Component,
534
+ args: [{
535
+ selector: 'nv-drawerfooter',
536
+ changeDetection: ChangeDetectionStrategy.OnPush,
537
+ template: '<ng-content></ng-content>',
538
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
539
+ inputs: ['cancelLabel', 'danger', 'disabled', 'form', 'leadingIcon', 'primaryButtonType', 'primaryLabel', 'trailingIcon', 'undismissable'],
540
+ outputs: ['drawerCanceled', 'drawerPrimaryClicked'],
541
+ standalone: false
542
+ }]
543
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { drawerCanceled: [{
544
+ type: Output
545
+ }], drawerPrimaryClicked: [{
546
+ type: Output
547
+ }] } });
548
+ let NvDrawerheader = class NvDrawerheader {
549
+ constructor(c, r, z) {
550
+ this.z = z;
551
+ c.detach();
552
+ this.el = r.nativeElement;
553
+ }
554
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawerheader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
555
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvDrawerheader, selector: "nv-drawerheader", inputs: { heading: "heading", subheading: "subheading" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
556
+ };
557
+ NvDrawerheader = __decorate([
558
+ ProxyCmp({
559
+ inputs: ['heading', 'subheading']
560
+ })
561
+ ], NvDrawerheader);
562
+ export { NvDrawerheader };
563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDrawerheader, decorators: [{
564
+ type: Component,
565
+ args: [{
566
+ selector: 'nv-drawerheader',
567
+ changeDetection: ChangeDetectionStrategy.OnPush,
568
+ template: '<ng-content></ng-content>',
569
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
570
+ inputs: ['heading', 'subheading'],
571
+ standalone: false
572
+ }]
573
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
433
574
  let NvFieldcheckbox = class NvFieldcheckbox {
434
575
  constructor(c, r, z) {
435
576
  this.z = z;
577
+ this.checkedChanged = new EventEmitter();
436
578
  c.detach();
437
579
  this.el = r.nativeElement;
438
- proxyOutputs(this, this.el, ['checkedChanged']);
439
580
  }
440
581
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldcheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
441
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldcheckbox, selector: "nv-fieldcheckbox", inputs: { autofocus: "autofocus", checked: "checked", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", hideLabel: "hideLabel", indeterminate: "indeterminate", inputId: "inputId", label: "label", labelBefore: "labelBefore", labelPlacement: "labelPlacement", message: "message", name: "name", readonly: "readonly", required: "required", validation: "validation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldcheckbox, selector: "nv-fieldcheckbox", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", checked: "checked", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", hideLabel: "hideLabel", indeterminate: "indeterminate", inputId: "inputId", label: "label", labelBefore: "labelBefore", labelPlacement: "labelPlacement", message: "message", name: "name", readonly: "readonly", required: "required", validation: "validation", value: "value" }, outputs: { checkedChanged: "checkedChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
442
583
  };
443
584
  NvFieldcheckbox = __decorate([
444
585
  ProxyCmp({
445
- inputs: ['autofocus', 'checked', 'description', 'disabled', 'error', 'errorDescription', 'hideLabel', 'indeterminate', 'inputId', 'label', 'labelBefore', 'labelPlacement', 'message', 'name', 'readonly', 'required', 'validation', 'value']
586
+ inputs: ['ariaRequiredAttr', 'autofocus', 'checked', 'description', 'disabled', 'error', 'errorDescription', 'hideLabel', 'indeterminate', 'inputId', 'label', 'labelBefore', 'labelPlacement', 'message', 'name', 'readonly', 'required', 'validation', 'value']
446
587
  })
447
588
  ], NvFieldcheckbox);
448
589
  export { NvFieldcheckbox };
@@ -453,23 +594,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
453
594
  changeDetection: ChangeDetectionStrategy.OnPush,
454
595
  template: '<ng-content></ng-content>',
455
596
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
456
- inputs: ['autofocus', 'checked', 'description', 'disabled', 'error', 'errorDescription', 'hideLabel', 'indeterminate', 'inputId', 'label', 'labelBefore', 'labelPlacement', 'message', 'name', 'readonly', 'required', 'validation', 'value'],
597
+ inputs: ['ariaRequiredAttr', 'autofocus', 'checked', 'description', 'disabled', 'error', 'errorDescription', 'hideLabel', 'indeterminate', 'inputId', 'label', 'labelBefore', 'labelPlacement', 'message', 'name', 'readonly', 'required', 'validation', 'value'],
598
+ outputs: ['checkedChanged'],
457
599
  standalone: false
458
600
  }]
459
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
601
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { checkedChanged: [{
602
+ type: Output
603
+ }] } });
460
604
  let NvFielddate = class NvFielddate {
461
605
  constructor(c, r, z) {
462
606
  this.z = z;
607
+ this.valueChanged = new EventEmitter();
463
608
  c.detach();
464
609
  this.el = r.nativeElement;
465
- proxyOutputs(this, this.el, ['valueChanged']);
466
610
  }
467
611
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFielddate, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
468
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddate, selector: "nv-fielddate", inputs: { autofocus: "autofocus", dateFormat: "dateFormat", description: "description", disabled: "disabled", disabledDates: "disabledDates", error: "error", errorDescription: "errorDescription", firstDayOfWeek: "firstDayOfWeek", fluid: "fluid", inputId: "inputId", label: "label", locale: "locale", max: "max", min: "min", name: "name", numberOfCalendars: "numberOfCalendars", placeholder: "placeholder", readonly: "readonly", required: "required", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", success: "success", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
612
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddate, selector: "nv-fielddate", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", dateFormat: "dateFormat", description: "description", disabled: "disabled", disabledDates: "disabledDates", error: "error", errorDescription: "errorDescription", firstDayOfWeek: "firstDayOfWeek", fluid: "fluid", inputId: "inputId", label: "label", locale: "locale", max: "max", min: "min", name: "name", numberOfCalendars: "numberOfCalendars", placeholder: "placeholder", readonly: "readonly", required: "required", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", success: "success", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
469
613
  };
470
614
  NvFielddate = __decorate([
471
615
  ProxyCmp({
472
- inputs: ['autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'inputId', 'label', 'locale', 'max', 'min', 'name', 'numberOfCalendars', 'placeholder', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'success', 'value'],
616
+ inputs: ['ariaRequiredAttr', 'autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'inputId', 'label', 'locale', 'max', 'min', 'name', 'numberOfCalendars', 'placeholder', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'success', 'value'],
473
617
  methods: ['clear']
474
618
  })
475
619
  ], NvFielddate);
@@ -481,23 +625,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
481
625
  changeDetection: ChangeDetectionStrategy.OnPush,
482
626
  template: '<ng-content></ng-content>',
483
627
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
484
- inputs: ['autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'inputId', 'label', 'locale', 'max', 'min', 'name', 'numberOfCalendars', 'placeholder', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'success', 'value'],
628
+ inputs: ['ariaRequiredAttr', 'autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'inputId', 'label', 'locale', 'max', 'min', 'name', 'numberOfCalendars', 'placeholder', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'success', 'value'],
629
+ outputs: ['valueChanged'],
485
630
  standalone: false
486
631
  }]
487
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
632
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
633
+ type: Output
634
+ }] } });
488
635
  let NvFielddaterange = class NvFielddaterange {
489
636
  constructor(c, r, z) {
490
637
  this.z = z;
638
+ this.dateRangeChange = new EventEmitter();
639
+ this.valueChanged = new EventEmitter();
491
640
  c.detach();
492
641
  this.el = r.nativeElement;
493
- proxyOutputs(this, this.el, ['dateRangeChange', 'valueChanged']);
494
642
  }
495
643
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFielddaterange, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
496
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddaterange, selector: "nv-fielddaterange", inputs: { autofocus: "autofocus", dateFormat: "dateFormat", description: "description", disabled: "disabled", disabledDates: "disabledDates", endInputId: "endInputId", endName: "endName", endPlaceholder: "endPlaceholder", error: "error", errorDescription: "errorDescription", firstDayOfWeek: "firstDayOfWeek", fluid: "fluid", label: "label", locale: "locale", max: "max", min: "min", numberOfCalendars: "numberOfCalendars", readonly: "readonly", required: "required", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", startInputId: "startInputId", startName: "startName", startPlaceholder: "startPlaceholder", success: "success", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
644
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddaterange, selector: "nv-fielddaterange", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", dateFormat: "dateFormat", description: "description", disabled: "disabled", disabledDates: "disabledDates", endInputId: "endInputId", endName: "endName", endPlaceholder: "endPlaceholder", error: "error", errorDescription: "errorDescription", firstDayOfWeek: "firstDayOfWeek", fluid: "fluid", label: "label", locale: "locale", max: "max", min: "min", numberOfCalendars: "numberOfCalendars", readonly: "readonly", required: "required", shortcuts: "shortcuts", shortcutsPlacement: "shortcutsPlacement", showActions: "showActions", showWeekNumbers: "showWeekNumbers", startInputId: "startInputId", startName: "startName", startPlaceholder: "startPlaceholder", success: "success", value: "value" }, outputs: { dateRangeChange: "dateRangeChange", valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
497
645
  };
498
646
  NvFielddaterange = __decorate([
499
647
  ProxyCmp({
500
- inputs: ['autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'endInputId', 'endName', 'endPlaceholder', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'label', 'locale', 'max', 'min', 'numberOfCalendars', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'startInputId', 'startName', 'startPlaceholder', 'success', 'value'],
648
+ inputs: ['ariaRequiredAttr', 'autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'endInputId', 'endName', 'endPlaceholder', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'label', 'locale', 'max', 'min', 'numberOfCalendars', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'startInputId', 'startName', 'startPlaceholder', 'success', 'value'],
501
649
  methods: ['clear']
502
650
  })
503
651
  ], NvFielddaterange);
@@ -509,23 +657,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
509
657
  changeDetection: ChangeDetectionStrategy.OnPush,
510
658
  template: '<ng-content></ng-content>',
511
659
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
512
- inputs: ['autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'endInputId', 'endName', 'endPlaceholder', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'label', 'locale', 'max', 'min', 'numberOfCalendars', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'startInputId', 'startName', 'startPlaceholder', 'success', 'value'],
660
+ inputs: ['ariaRequiredAttr', 'autofocus', 'dateFormat', 'description', 'disabled', 'disabledDates', 'endInputId', 'endName', 'endPlaceholder', 'error', 'errorDescription', 'firstDayOfWeek', 'fluid', 'label', 'locale', 'max', 'min', 'numberOfCalendars', 'readonly', 'required', 'shortcuts', 'shortcutsPlacement', 'showActions', 'showWeekNumbers', 'startInputId', 'startName', 'startPlaceholder', 'success', 'value'],
661
+ outputs: ['dateRangeChange', 'valueChanged'],
513
662
  standalone: false
514
663
  }]
515
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
664
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dateRangeChange: [{
665
+ type: Output
666
+ }], valueChanged: [{
667
+ type: Output
668
+ }] } });
516
669
  let NvFielddropdown = class NvFielddropdown {
517
670
  constructor(c, r, z) {
518
671
  this.z = z;
672
+ this.valueChanged = new EventEmitter();
673
+ this.filterTextChanged = new EventEmitter();
674
+ this.openChanged = new EventEmitter();
675
+ this.dropdownItemSelected = new EventEmitter();
519
676
  c.detach();
520
677
  this.el = r.nativeElement;
521
- proxyOutputs(this, this.el, ['valueChanged', 'filterTextChanged', 'openChanged', 'dropdownItemSelected']);
522
678
  }
523
679
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFielddropdown, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdown, selector: "nv-fielddropdown", inputs: { autocomplete: "autocomplete", autofocus: "autofocus", controlledFilter: "controlledFilter", debounceDelay: "debounceDelay", description: "description", disabled: "disabled", emptyResult: "emptyResult", error: "error", errorDescription: "errorDescription", filterable: "filterable", fluid: "fluid", inputId: "inputId", label: "label", maxHeight: "maxHeight", name: "name", openOnSelect: "openOnSelect", options: "options", placeholder: "placeholder", readonly: "readonly", required: "required", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
680
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdown, selector: "nv-fielddropdown", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autocomplete: "autocomplete", autofocus: "autofocus", controlledFilter: "controlledFilter", debounceDelay: "debounceDelay", description: "description", disabled: "disabled", emptyResult: "emptyResult", error: "error", errorDescription: "errorDescription", filterMode: "filterMode", filterable: "filterable", fluid: "fluid", fuzzyThreshold: "fuzzyThreshold", inputId: "inputId", label: "label", locale: "locale", maxHeight: "maxHeight", maxResults: "maxResults", name: "name", openOnSelect: "openOnSelect", options: "options", placeholder: "placeholder", readonly: "readonly", required: "required", startFilterAt: "startFilterAt", truncatedResultsText: "truncatedResultsText", value: "value", workerThreshold: "workerThreshold" }, outputs: { valueChanged: "valueChanged", filterTextChanged: "filterTextChanged", openChanged: "openChanged", dropdownItemSelected: "dropdownItemSelected" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
525
681
  };
526
682
  NvFielddropdown = __decorate([
527
683
  ProxyCmp({
528
- inputs: ['autocomplete', 'autofocus', 'controlledFilter', 'debounceDelay', 'description', 'disabled', 'emptyResult', 'error', 'errorDescription', 'filterable', 'fluid', 'inputId', 'label', 'maxHeight', 'name', 'openOnSelect', 'options', 'placeholder', 'readonly', 'required', 'value'],
684
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'controlledFilter', 'debounceDelay', 'description', 'disabled', 'emptyResult', 'error', 'errorDescription', 'filterMode', 'filterable', 'fluid', 'fuzzyThreshold', 'inputId', 'label', 'locale', 'maxHeight', 'maxResults', 'name', 'openOnSelect', 'options', 'placeholder', 'readonly', 'required', 'startFilterAt', 'truncatedResultsText', 'value', 'workerThreshold'],
529
685
  methods: ['clearFilter', 'toggleDropdown']
530
686
  })
531
687
  ], NvFielddropdown);
@@ -537,19 +693,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
537
693
  changeDetection: ChangeDetectionStrategy.OnPush,
538
694
  template: '<ng-content></ng-content>',
539
695
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
540
- inputs: ['autocomplete', 'autofocus', 'controlledFilter', 'debounceDelay', 'description', 'disabled', 'emptyResult', 'error', 'errorDescription', 'filterable', 'fluid', 'inputId', 'label', 'maxHeight', 'name', 'openOnSelect', 'options', 'placeholder', 'readonly', 'required', 'value'],
696
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'controlledFilter', 'debounceDelay', 'description', 'disabled', 'emptyResult', 'error', 'errorDescription', 'filterMode', 'filterable', 'fluid', 'fuzzyThreshold', 'inputId', 'label', 'locale', 'maxHeight', 'maxResults', 'name', 'openOnSelect', 'options', 'placeholder', 'readonly', 'required', 'startFilterAt', 'truncatedResultsText', 'value', 'workerThreshold'],
697
+ outputs: ['valueChanged', 'filterTextChanged', 'openChanged', 'dropdownItemSelected'],
541
698
  standalone: false
542
699
  }]
543
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
700
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
701
+ type: Output
702
+ }], filterTextChanged: [{
703
+ type: Output
704
+ }], openChanged: [{
705
+ type: Output
706
+ }], dropdownItemSelected: [{
707
+ type: Output
708
+ }] } });
544
709
  let NvFielddropdownitem = class NvFielddropdownitem {
545
710
  constructor(c, r, z) {
546
711
  this.z = z;
712
+ this.dropdownItemSelected = new EventEmitter();
547
713
  c.detach();
548
714
  this.el = r.nativeElement;
549
- proxyOutputs(this, this.el, ['dropdownItemSelected']);
550
715
  }
551
716
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFielddropdownitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
552
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdownitem, selector: "nv-fielddropdownitem", inputs: { detached: "detached", disabled: "disabled", label: "label", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdownitem, selector: "nv-fielddropdownitem", inputs: { detached: "detached", disabled: "disabled", label: "label", selected: "selected", value: "value" }, outputs: { dropdownItemSelected: "dropdownItemSelected" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
553
718
  };
554
719
  NvFielddropdownitem = __decorate([
555
720
  ProxyCmp({
@@ -565,18 +730,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
565
730
  template: '<ng-content></ng-content>',
566
731
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
567
732
  inputs: ['detached', 'disabled', 'label', 'selected', 'value'],
733
+ outputs: ['dropdownItemSelected'],
568
734
  standalone: false
569
735
  }]
570
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
736
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dropdownItemSelected: [{
737
+ type: Output
738
+ }] } });
571
739
  let NvFielddropdownitemcheck = class NvFielddropdownitemcheck {
572
740
  constructor(c, r, z) {
573
741
  this.z = z;
742
+ this.itemChecked = new EventEmitter();
574
743
  c.detach();
575
744
  this.el = r.nativeElement;
576
- proxyOutputs(this, this.el, ['itemChecked']);
577
745
  }
578
746
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFielddropdownitemcheck, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdownitemcheck, selector: "nv-fielddropdownitemcheck", inputs: { checked: "checked", description: "description", disabled: "disabled", group: "group", label: "label", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
747
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFielddropdownitemcheck, selector: "nv-fielddropdownitemcheck", inputs: { checked: "checked", description: "description", disabled: "disabled", group: "group", label: "label", value: "value" }, outputs: { itemChecked: "itemChecked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
580
748
  };
581
749
  NvFielddropdownitemcheck = __decorate([
582
750
  ProxyCmp({
@@ -592,22 +760,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
592
760
  template: '<ng-content></ng-content>',
593
761
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
594
762
  inputs: ['checked', 'description', 'disabled', 'group', 'label', 'value'],
763
+ outputs: ['itemChecked'],
595
764
  standalone: false
596
765
  }]
597
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
766
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { itemChecked: [{
767
+ type: Output
768
+ }] } });
598
769
  let NvFieldmultiselect = class NvFieldmultiselect {
599
770
  constructor(c, r, z) {
600
771
  this.z = z;
772
+ this.valueChanged = new EventEmitter();
773
+ this.filterTextChanged = new EventEmitter();
601
774
  c.detach();
602
775
  this.el = r.nativeElement;
603
- proxyOutputs(this, this.el, ['valueChanged', 'filterTextChanged']);
604
776
  }
605
777
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldmultiselect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
606
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldmultiselect, selector: "nv-fieldmultiselect", inputs: { autocomplete: "autocomplete", autofocus: "autofocus", badgeLabel: "badgeLabel", debounceDelay: "debounceDelay", description: "description", deselectAllLabel: "deselectAllLabel", disabled: "disabled", emptyResult: "emptyResult", enableSelectAll: "enableSelectAll", error: "error", errorDescription: "errorDescription", filterText: "filterText", filterable: "filterable", fluid: "fluid", inputId: "inputId", label: "label", maxHeight: "maxHeight", name: "name", open: "open", options: "options", placeholder: "placeholder", readonly: "readonly", required: "required", selectAllLabel: "selectAllLabel", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
778
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldmultiselect, selector: "nv-fieldmultiselect", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autocomplete: "autocomplete", autofocus: "autofocus", badgeLabel: "badgeLabel", debounceDelay: "debounceDelay", description: "description", deselectAllLabel: "deselectAllLabel", disabled: "disabled", emptyResult: "emptyResult", enableSelectAll: "enableSelectAll", error: "error", errorDescription: "errorDescription", filterMode: "filterMode", filterText: "filterText", filterable: "filterable", fluid: "fluid", fuzzyThreshold: "fuzzyThreshold", inputId: "inputId", label: "label", locale: "locale", maxHeight: "maxHeight", maxResults: "maxResults", name: "name", open: "open", options: "options", placeholder: "placeholder", readonly: "readonly", required: "required", selectAllLabel: "selectAllLabel", startFilterAt: "startFilterAt", truncatedResultsText: "truncatedResultsText", value: "value", workerThreshold: "workerThreshold" }, outputs: { valueChanged: "valueChanged", filterTextChanged: "filterTextChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
607
779
  };
608
780
  NvFieldmultiselect = __decorate([
609
781
  ProxyCmp({
610
- inputs: ['autocomplete', 'autofocus', 'badgeLabel', 'debounceDelay', 'description', 'deselectAllLabel', 'disabled', 'emptyResult', 'enableSelectAll', 'error', 'errorDescription', 'filterText', 'filterable', 'fluid', 'inputId', 'label', 'maxHeight', 'name', 'open', 'options', 'placeholder', 'readonly', 'required', 'selectAllLabel', 'value'],
782
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'badgeLabel', 'debounceDelay', 'description', 'deselectAllLabel', 'disabled', 'emptyResult', 'enableSelectAll', 'error', 'errorDescription', 'filterMode', 'filterText', 'filterable', 'fluid', 'fuzzyThreshold', 'inputId', 'label', 'locale', 'maxHeight', 'maxResults', 'name', 'open', 'options', 'placeholder', 'readonly', 'required', 'selectAllLabel', 'startFilterAt', 'truncatedResultsText', 'value', 'workerThreshold'],
611
783
  methods: ['getFilterText', 'resetFilter', 'getSelectedValues', 'selectAll', 'deselectAll', 'toggleSelectAll']
612
784
  })
613
785
  ], NvFieldmultiselect);
@@ -619,23 +791,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
619
791
  changeDetection: ChangeDetectionStrategy.OnPush,
620
792
  template: '<ng-content></ng-content>',
621
793
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
622
- inputs: ['autocomplete', 'autofocus', 'badgeLabel', 'debounceDelay', 'description', 'deselectAllLabel', 'disabled', 'emptyResult', 'enableSelectAll', 'error', 'errorDescription', 'filterText', 'filterable', 'fluid', 'inputId', 'label', 'maxHeight', 'name', 'open', 'options', 'placeholder', 'readonly', 'required', 'selectAllLabel', 'value'],
794
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'badgeLabel', 'debounceDelay', 'description', 'deselectAllLabel', 'disabled', 'emptyResult', 'enableSelectAll', 'error', 'errorDescription', 'filterMode', 'filterText', 'filterable', 'fluid', 'fuzzyThreshold', 'inputId', 'label', 'locale', 'maxHeight', 'maxResults', 'name', 'open', 'options', 'placeholder', 'readonly', 'required', 'selectAllLabel', 'startFilterAt', 'truncatedResultsText', 'value', 'workerThreshold'],
795
+ outputs: ['valueChanged', 'filterTextChanged'],
623
796
  standalone: false
624
797
  }]
625
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
798
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
799
+ type: Output
800
+ }], filterTextChanged: [{
801
+ type: Output
802
+ }] } });
626
803
  let NvFieldnumber = class NvFieldnumber {
627
804
  constructor(c, r, z) {
628
805
  this.z = z;
806
+ this.valueChanged = new EventEmitter();
629
807
  c.detach();
630
808
  this.el = r.nativeElement;
631
- proxyOutputs(this, this.el, ['valueChanged']);
632
809
  }
633
810
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldnumber, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
634
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldnumber, selector: "nv-fieldnumber", inputs: { autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", max: "max", message: "message", min: "min", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", step: "step", success: "success", validation: "validation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
811
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldnumber, selector: "nv-fieldnumber", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", max: "max", message: "message", min: "min", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", step: "step", success: "success", validation: "validation", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
635
812
  };
636
813
  NvFieldnumber = __decorate([
637
814
  ProxyCmp({
638
- inputs: ['autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'max', 'message', 'min', 'name', 'placeholder', 'readonly', 'required', 'step', 'success', 'validation', 'value']
815
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'max', 'message', 'min', 'name', 'placeholder', 'readonly', 'required', 'step', 'success', 'validation', 'value']
639
816
  })
640
817
  ], NvFieldnumber);
641
818
  export { NvFieldnumber };
@@ -646,23 +823,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
646
823
  changeDetection: ChangeDetectionStrategy.OnPush,
647
824
  template: '<ng-content></ng-content>',
648
825
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
649
- inputs: ['autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'max', 'message', 'min', 'name', 'placeholder', 'readonly', 'required', 'step', 'success', 'validation', 'value'],
826
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'max', 'message', 'min', 'name', 'placeholder', 'readonly', 'required', 'step', 'success', 'validation', 'value'],
827
+ outputs: ['valueChanged'],
650
828
  standalone: false
651
829
  }]
652
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
830
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
831
+ type: Output
832
+ }] } });
653
833
  let NvFieldpassword = class NvFieldpassword {
654
834
  constructor(c, r, z) {
655
835
  this.z = z;
836
+ this.valueChanged = new EventEmitter();
656
837
  c.detach();
657
838
  this.el = r.nativeElement;
658
- proxyOutputs(this, this.el, ['valueChanged']);
659
839
  }
660
840
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldpassword, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
661
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldpassword, selector: "nv-fieldpassword", inputs: { autocomplete: "autocomplete", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", hidePasswordIcon: "hidePasswordIcon", inputId: "inputId", label: "label", maxlength: "maxlength", minlength: "minlength", mode: "mode", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", showPassword: "showPassword", success: "success", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
841
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldpassword, selector: "nv-fieldpassword", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autocomplete: "autocomplete", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", hidePasswordIcon: "hidePasswordIcon", inputId: "inputId", label: "label", maxlength: "maxlength", minlength: "minlength", mode: "mode", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", showPassword: "showPassword", success: "success", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
662
842
  };
663
843
  NvFieldpassword = __decorate([
664
844
  ProxyCmp({
665
- inputs: ['autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'hidePasswordIcon', 'inputId', 'label', 'maxlength', 'minlength', 'mode', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'showPassword', 'success', 'value']
845
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'hidePasswordIcon', 'inputId', 'label', 'maxlength', 'minlength', 'mode', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'showPassword', 'success', 'value']
666
846
  })
667
847
  ], NvFieldpassword);
668
848
  export { NvFieldpassword };
@@ -673,19 +853,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
673
853
  changeDetection: ChangeDetectionStrategy.OnPush,
674
854
  template: '<ng-content></ng-content>',
675
855
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
676
- inputs: ['autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'hidePasswordIcon', 'inputId', 'label', 'maxlength', 'minlength', 'mode', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'showPassword', 'success', 'value'],
856
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'hidePasswordIcon', 'inputId', 'label', 'maxlength', 'minlength', 'mode', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'showPassword', 'success', 'value'],
857
+ outputs: ['valueChanged'],
677
858
  standalone: false
678
859
  }]
679
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
860
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
861
+ type: Output
862
+ }] } });
680
863
  let NvFieldradio = class NvFieldradio {
681
864
  constructor(c, r, z) {
682
865
  this.z = z;
866
+ this.checkedChanged = new EventEmitter();
683
867
  c.detach();
684
868
  this.el = r.nativeElement;
685
- proxyOutputs(this, this.el, ['checkedChanged']);
686
869
  }
687
870
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldradio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldradio, selector: "nv-fieldradio", inputs: { autofocus: "autofocus", checked: "checked", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", inputId: "inputId", label: "label", labelBefore: "labelBefore", labelPlacement: "labelPlacement", message: "message", name: "name", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
871
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldradio, selector: "nv-fieldradio", inputs: { autofocus: "autofocus", checked: "checked", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", inputId: "inputId", label: "label", labelBefore: "labelBefore", labelPlacement: "labelPlacement", message: "message", name: "name", value: "value" }, outputs: { checkedChanged: "checkedChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
689
872
  };
690
873
  NvFieldradio = __decorate([
691
874
  ProxyCmp({
@@ -701,22 +884,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
701
884
  template: '<ng-content></ng-content>',
702
885
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
703
886
  inputs: ['autofocus', 'checked', 'description', 'disabled', 'error', 'errorDescription', 'inputId', 'label', 'labelBefore', 'labelPlacement', 'message', 'name', 'value'],
887
+ outputs: ['checkedChanged'],
704
888
  standalone: false
705
889
  }]
706
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
890
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { checkedChanged: [{
891
+ type: Output
892
+ }] } });
707
893
  let NvFieldselect = class NvFieldselect {
708
894
  constructor(c, r, z) {
709
895
  this.z = z;
896
+ this.valueChanged = new EventEmitter();
710
897
  c.detach();
711
898
  this.el = r.nativeElement;
712
- proxyOutputs(this, this.el, ['valueChanged']);
713
899
  }
714
900
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldselect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
715
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldselect, selector: "nv-fieldselect", inputs: { autofocus: "autofocus", description: "description", disabled: "disabled", displayValue: "displayValue", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", message: "message", multiple: "multiple", name: "name", options: "options", readonly: "readonly", required: "required", success: "success", validation: "validation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
901
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldselect, selector: "nv-fieldselect", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", description: "description", disabled: "disabled", displayValue: "displayValue", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", message: "message", multiple: "multiple", name: "name", options: "options", readonly: "readonly", required: "required", success: "success", validation: "validation", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
716
902
  };
717
903
  NvFieldselect = __decorate([
718
904
  ProxyCmp({
719
- inputs: ['autofocus', 'description', 'disabled', 'displayValue', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'message', 'multiple', 'name', 'options', 'readonly', 'required', 'success', 'validation', 'value']
905
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'displayValue', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'message', 'multiple', 'name', 'options', 'readonly', 'required', 'success', 'validation', 'value']
720
906
  })
721
907
  ], NvFieldselect);
722
908
  export { NvFieldselect };
@@ -727,19 +913,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
727
913
  changeDetection: ChangeDetectionStrategy.OnPush,
728
914
  template: '<ng-content></ng-content>',
729
915
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
730
- inputs: ['autofocus', 'description', 'disabled', 'displayValue', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'message', 'multiple', 'name', 'options', 'readonly', 'required', 'success', 'validation', 'value'],
916
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'displayValue', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'message', 'multiple', 'name', 'options', 'readonly', 'required', 'success', 'validation', 'value'],
917
+ outputs: ['valueChanged'],
731
918
  standalone: false
732
919
  }]
733
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
920
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
921
+ type: Output
922
+ }] } });
734
923
  let NvFieldslider = class NvFieldslider {
735
924
  constructor(c, r, z) {
736
925
  this.z = z;
926
+ this.valueChanged = new EventEmitter();
737
927
  c.detach();
738
928
  this.el = r.nativeElement;
739
- proxyOutputs(this, this.el, ['valueChanged']);
740
929
  }
741
930
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldslider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldslider, selector: "nv-fieldslider", inputs: { description: "description", disabled: "disabled", endInputId: "endInputId", endName: "endName", error: "error", errorDescription: "errorDescription", fluid: "fluid", hasField: "hasField", hideLabel: "hideLabel", label: "label", labelAfterValue: "labelAfterValue", labelBeforeValue: "labelBeforeValue", max: "max", min: "min", name: "name", range: "range", readonly: "readonly", showTicks: "showTicks", snap: "snap", snapTicks: "snapTicks", startInputId: "startInputId", step: "step", success: "success", ticks: "ticks", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
931
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldslider, selector: "nv-fieldslider", inputs: { description: "description", disabled: "disabled", endInputId: "endInputId", endName: "endName", error: "error", errorDescription: "errorDescription", fluid: "fluid", hasField: "hasField", hideLabel: "hideLabel", label: "label", labelAfterValue: "labelAfterValue", labelBeforeValue: "labelBeforeValue", max: "max", min: "min", name: "name", range: "range", readonly: "readonly", showTicks: "showTicks", snap: "snap", snapTicks: "snapTicks", startInputId: "startInputId", step: "step", success: "success", ticks: "ticks", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
743
932
  };
744
933
  NvFieldslider = __decorate([
745
934
  ProxyCmp({
@@ -755,22 +944,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
755
944
  template: '<ng-content></ng-content>',
756
945
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
757
946
  inputs: ['description', 'disabled', 'endInputId', 'endName', 'error', 'errorDescription', 'fluid', 'hasField', 'hideLabel', 'label', 'labelAfterValue', 'labelBeforeValue', 'max', 'min', 'name', 'range', 'readonly', 'showTicks', 'snap', 'snapTicks', 'startInputId', 'step', 'success', 'ticks', 'value'],
947
+ outputs: ['valueChanged'],
758
948
  standalone: false
759
949
  }]
760
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
950
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
951
+ type: Output
952
+ }] } });
761
953
  let NvFieldtext = class NvFieldtext {
762
954
  constructor(c, r, z) {
763
955
  this.z = z;
956
+ this.valueChanged = new EventEmitter();
764
957
  c.detach();
765
958
  this.el = r.nativeElement;
766
- proxyOutputs(this, this.el, ['valueChanged']);
767
959
  }
768
960
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldtext, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
769
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtext, selector: "nv-fieldtext", inputs: { autocomplete: "autocomplete", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", maxlength: "maxlength", message: "message", minlength: "minlength", multiple: "multiple", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", success: "success", textInputType: "textInputType", type: "type", validation: "validation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
961
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtext, selector: "nv-fieldtext", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autocomplete: "autocomplete", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", maxlength: "maxlength", message: "message", minlength: "minlength", multiple: "multiple", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", success: "success", textInputType: "textInputType", type: "type", validation: "validation", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
770
962
  };
771
963
  NvFieldtext = __decorate([
772
964
  ProxyCmp({
773
- inputs: ['autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'success', 'textInputType', 'type', 'validation', 'value']
965
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'success', 'textInputType', 'type', 'validation', 'value']
774
966
  })
775
967
  ], NvFieldtext);
776
968
  export { NvFieldtext };
@@ -781,23 +973,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
781
973
  changeDetection: ChangeDetectionStrategy.OnPush,
782
974
  template: '<ng-content></ng-content>',
783
975
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
784
- inputs: ['autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'success', 'textInputType', 'type', 'validation', 'value'],
976
+ inputs: ['ariaRequiredAttr', 'autocomplete', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'success', 'textInputType', 'type', 'validation', 'value'],
977
+ outputs: ['valueChanged'],
785
978
  standalone: false
786
979
  }]
787
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
980
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
981
+ type: Output
982
+ }] } });
788
983
  let NvFieldtextarea = class NvFieldtextarea {
789
984
  constructor(c, r, z) {
790
985
  this.z = z;
986
+ this.valueChanged = new EventEmitter();
791
987
  c.detach();
792
988
  this.el = r.nativeElement;
793
- proxyOutputs(this, this.el, ['valueChanged']);
794
989
  }
795
990
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldtextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
796
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtextarea, selector: "nv-fieldtextarea", inputs: { autofocus: "autofocus", autosize: "autosize", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", maxlength: "maxlength", message: "message", minlength: "minlength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", resize: "resize", rows: "rows", success: "success", validation: "validation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
991
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtextarea, selector: "nv-fieldtextarea", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", autosize: "autosize", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", fluid: "fluid", inputId: "inputId", label: "label", maxlength: "maxlength", message: "message", minlength: "minlength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", resize: "resize", rows: "rows", success: "success", validation: "validation", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
797
992
  };
798
993
  NvFieldtextarea = __decorate([
799
994
  ProxyCmp({
800
- inputs: ['autofocus', 'autosize', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'resize', 'rows', 'success', 'validation', 'value']
995
+ inputs: ['ariaRequiredAttr', 'autofocus', 'autosize', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'resize', 'rows', 'success', 'validation', 'value']
801
996
  })
802
997
  ], NvFieldtextarea);
803
998
  export { NvFieldtextarea };
@@ -808,23 +1003,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
808
1003
  changeDetection: ChangeDetectionStrategy.OnPush,
809
1004
  template: '<ng-content></ng-content>',
810
1005
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
811
- inputs: ['autofocus', 'autosize', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'resize', 'rows', 'success', 'validation', 'value'],
1006
+ inputs: ['ariaRequiredAttr', 'autofocus', 'autosize', 'description', 'disabled', 'error', 'errorDescription', 'fluid', 'inputId', 'label', 'maxlength', 'message', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'resize', 'rows', 'success', 'validation', 'value'],
1007
+ outputs: ['valueChanged'],
812
1008
  standalone: false
813
1009
  }]
814
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1010
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
1011
+ type: Output
1012
+ }] } });
815
1013
  let NvFieldtime = class NvFieldtime {
816
1014
  constructor(c, r, z) {
817
1015
  this.z = z;
1016
+ this.valueChanged = new EventEmitter();
818
1017
  c.detach();
819
1018
  this.el = r.nativeElement;
820
- proxyOutputs(this, this.el, ['valueChanged']);
821
1019
  }
822
1020
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvFieldtime, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtime, selector: "nv-fieldtime", inputs: { autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", format: "format", inputId: "inputId", label: "label", max: "max", min: "min", name: "name", open: "open", readonly: "readonly", required: "required", step: "step", success: "success", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1021
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvFieldtime, selector: "nv-fieldtime", inputs: { ariaRequiredAttr: "ariaRequiredAttr", autofocus: "autofocus", description: "description", disabled: "disabled", error: "error", errorDescription: "errorDescription", format: "format", inputId: "inputId", label: "label", max: "max", min: "min", name: "name", open: "open", readonly: "readonly", required: "required", step: "step", success: "success", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
824
1022
  };
825
1023
  NvFieldtime = __decorate([
826
1024
  ProxyCmp({
827
- inputs: ['autofocus', 'description', 'disabled', 'error', 'errorDescription', 'format', 'inputId', 'label', 'max', 'min', 'name', 'open', 'readonly', 'required', 'step', 'success', 'value']
1025
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'format', 'inputId', 'label', 'max', 'min', 'name', 'open', 'readonly', 'required', 'step', 'success', 'value']
828
1026
  })
829
1027
  ], NvFieldtime);
830
1028
  export { NvFieldtime };
@@ -835,10 +1033,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
835
1033
  changeDetection: ChangeDetectionStrategy.OnPush,
836
1034
  template: '<ng-content></ng-content>',
837
1035
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
838
- inputs: ['autofocus', 'description', 'disabled', 'error', 'errorDescription', 'format', 'inputId', 'label', 'max', 'min', 'name', 'open', 'readonly', 'required', 'step', 'success', 'value'],
1036
+ inputs: ['ariaRequiredAttr', 'autofocus', 'description', 'disabled', 'error', 'errorDescription', 'format', 'inputId', 'label', 'max', 'min', 'name', 'open', 'readonly', 'required', 'step', 'success', 'value'],
1037
+ outputs: ['valueChanged'],
839
1038
  standalone: false
840
1039
  }]
841
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1040
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
1041
+ type: Output
1042
+ }] } });
842
1043
  let NvIcon = class NvIcon {
843
1044
  constructor(c, r, z) {
844
1045
  this.z = z;
@@ -920,12 +1121,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
920
1121
  let NvMenu = class NvMenu {
921
1122
  constructor(c, r, z) {
922
1123
  this.z = z;
1124
+ this.menuitemSelected = new EventEmitter();
923
1125
  c.detach();
924
1126
  this.el = r.nativeElement;
925
- proxyOutputs(this, this.el, ['menuitemSelected']);
926
1127
  }
927
1128
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvMenu, selector: "nv-menu", inputs: { disableCloseOnSelect: "disableCloseOnSelect", items: "items", nested: "nested", open: "open", placement: "placement" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvMenu, selector: "nv-menu", inputs: { disableCloseOnSelect: "disableCloseOnSelect", items: "items", nested: "nested", open: "open", placement: "placement" }, outputs: { menuitemSelected: "menuitemSelected" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
929
1130
  };
930
1131
  NvMenu = __decorate([
931
1132
  ProxyCmp({
@@ -942,18 +1143,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
942
1143
  template: '<ng-content></ng-content>',
943
1144
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
944
1145
  inputs: ['disableCloseOnSelect', 'items', 'nested', 'open', 'placement'],
1146
+ outputs: ['menuitemSelected'],
945
1147
  standalone: false
946
1148
  }]
947
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1149
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { menuitemSelected: [{
1150
+ type: Output
1151
+ }] } });
948
1152
  let NvMenuitem = class NvMenuitem {
949
1153
  constructor(c, r, z) {
950
1154
  this.z = z;
1155
+ this.menuitemSelected = new EventEmitter();
951
1156
  c.detach();
952
1157
  this.el = r.nativeElement;
953
- proxyOutputs(this, this.el, ['menuitemSelected']);
954
1158
  }
955
1159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvMenuitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
956
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvMenuitem, selector: "nv-menuitem", inputs: { disabled: "disabled", hasSubmenu: "hasSubmenu", icon: "icon", label: "label", name: "name", shortcut: "shortcut" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvMenuitem, selector: "nv-menuitem", inputs: { disabled: "disabled", hasSubmenu: "hasSubmenu", icon: "icon", label: "label", name: "name", shortcut: "shortcut" }, outputs: { menuitemSelected: "menuitemSelected" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
957
1161
  };
958
1162
  NvMenuitem = __decorate([
959
1163
  ProxyCmp({
@@ -969,18 +1173,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
969
1173
  template: '<ng-content></ng-content>',
970
1174
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
971
1175
  inputs: ['disabled', 'hasSubmenu', 'icon', 'label', 'name', 'shortcut'],
1176
+ outputs: ['menuitemSelected'],
972
1177
  standalone: false
973
1178
  }]
974
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1179
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { menuitemSelected: [{
1180
+ type: Output
1181
+ }] } });
975
1182
  let NvNotification = class NvNotification {
976
1183
  constructor(c, r, z) {
977
1184
  this.z = z;
1185
+ this.hiddenChanged = new EventEmitter();
978
1186
  c.detach();
979
1187
  this.el = r.nativeElement;
980
- proxyOutputs(this, this.el, ['hiddenChanged']);
981
1188
  }
982
1189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvNotification, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
983
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvNotification, selector: "nv-notification", inputs: { dismissible: "dismissible", emphasis: "emphasis", feedback: "feedback", heading: "heading", hidden: "hidden", icon: "icon", initiallyHidden: "initiallyHidden", message: "message", uid: "uid" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvNotification, selector: "nv-notification", inputs: { dismissible: "dismissible", emphasis: "emphasis", feedback: "feedback", heading: "heading", hidden: "hidden", icon: "icon", initiallyHidden: "initiallyHidden", message: "message", uid: "uid" }, outputs: { hiddenChanged: "hiddenChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
984
1191
  };
985
1192
  NvNotification = __decorate([
986
1193
  ProxyCmp({
@@ -997,6 +1204,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
997
1204
  template: '<ng-content></ng-content>',
998
1205
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
999
1206
  inputs: ['dismissible', 'emphasis', 'feedback', 'heading', 'hidden', 'icon', 'initiallyHidden', 'message', 'uid'],
1207
+ outputs: ['hiddenChanged'],
1208
+ standalone: false
1209
+ }]
1210
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { hiddenChanged: [{
1211
+ type: Output
1212
+ }] } });
1213
+ let NvNotificationBullet = class NvNotificationBullet {
1214
+ constructor(c, r, z) {
1215
+ this.z = z;
1216
+ c.detach();
1217
+ this.el = r.nativeElement;
1218
+ }
1219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvNotificationBullet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1220
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvNotificationBullet, selector: "nv-notification-bullet", inputs: { contrastingBorder: "contrastingBorder", count: "count", emphasis: "emphasis", intention: "intention", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1221
+ };
1222
+ NvNotificationBullet = __decorate([
1223
+ ProxyCmp({
1224
+ inputs: ['contrastingBorder', 'count', 'emphasis', 'intention', 'size']
1225
+ })
1226
+ ], NvNotificationBullet);
1227
+ export { NvNotificationBullet };
1228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvNotificationBullet, decorators: [{
1229
+ type: Component,
1230
+ args: [{
1231
+ selector: 'nv-notification-bullet',
1232
+ changeDetection: ChangeDetectionStrategy.OnPush,
1233
+ template: '<ng-content></ng-content>',
1234
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1235
+ inputs: ['contrastingBorder', 'count', 'emphasis', 'intention', 'size'],
1000
1236
  standalone: false
1001
1237
  }]
1002
1238
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
@@ -1029,12 +1265,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1029
1265
  let NvPopover = class NvPopover {
1030
1266
  constructor(c, r, z) {
1031
1267
  this.z = z;
1268
+ this.openChanged = new EventEmitter();
1032
1269
  c.detach();
1033
1270
  this.el = r.nativeElement;
1034
- proxyOutputs(this, this.el, ['openChanged']);
1035
1271
  }
1036
1272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1037
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvPopover, selector: "nv-popover", inputs: { disableFlip: "disableFlip", enterDelay: "enterDelay", groupName: "groupName", hasArrow: "hasArrow", nested: "nested", offset: "offset", open: "open", placement: "placement", shiftPadding: "shiftPadding", strategy: "strategy", triggerMode: "triggerMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1273
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvPopover, selector: "nv-popover", inputs: { disableFlip: "disableFlip", enterDelay: "enterDelay", groupName: "groupName", hasArrow: "hasArrow", nested: "nested", offset: "offset", open: "open", placement: "placement", shiftPadding: "shiftPadding", strategy: "strategy", triggerMode: "triggerMode" }, outputs: { openChanged: "openChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1038
1274
  };
1039
1275
  NvPopover = __decorate([
1040
1276
  ProxyCmp({
@@ -1051,9 +1287,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1051
1287
  template: '<ng-content></ng-content>',
1052
1288
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1053
1289
  inputs: ['disableFlip', 'enterDelay', 'groupName', 'hasArrow', 'nested', 'offset', 'open', 'placement', 'shiftPadding', 'strategy', 'triggerMode'],
1290
+ outputs: ['openChanged'],
1054
1291
  standalone: false
1055
1292
  }]
1056
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1293
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openChanged: [{
1294
+ type: Output
1295
+ }] } });
1057
1296
  let NvRow = class NvRow {
1058
1297
  constructor(c, r, z) {
1059
1298
  this.z = z;
@@ -1078,15 +1317,245 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1078
1317
  standalone: false
1079
1318
  }]
1080
1319
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1320
+ let NvSidebar = class NvSidebar {
1321
+ constructor(c, r, z) {
1322
+ this.z = z;
1323
+ this.openChanged = new EventEmitter();
1324
+ c.detach();
1325
+ this.el = r.nativeElement;
1326
+ }
1327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebar, selector: "nv-sidebar", inputs: { activePath: "activePath", notificationEmphasis: "notificationEmphasis", notificationIntention: "notificationIntention", open: "open", type: "type" }, outputs: { openChanged: "openChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1329
+ };
1330
+ NvSidebar = __decorate([
1331
+ ProxyCmp({
1332
+ inputs: ['activePath', 'notificationEmphasis', 'notificationIntention', 'open', 'type']
1333
+ })
1334
+ ], NvSidebar);
1335
+ export { NvSidebar };
1336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebar, decorators: [{
1337
+ type: Component,
1338
+ args: [{
1339
+ selector: 'nv-sidebar',
1340
+ changeDetection: ChangeDetectionStrategy.OnPush,
1341
+ template: '<ng-content></ng-content>',
1342
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1343
+ inputs: ['activePath', 'notificationEmphasis', 'notificationIntention', 'open', 'type'],
1344
+ outputs: ['openChanged'],
1345
+ standalone: false
1346
+ }]
1347
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openChanged: [{
1348
+ type: Output
1349
+ }] } });
1350
+ let NvSidebarcontent = class NvSidebarcontent {
1351
+ constructor(c, r, z) {
1352
+ this.z = z;
1353
+ c.detach();
1354
+ this.el = r.nativeElement;
1355
+ }
1356
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarcontent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1357
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarcontent, selector: "nv-sidebarcontent", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1358
+ };
1359
+ NvSidebarcontent = __decorate([
1360
+ ProxyCmp({})
1361
+ ], NvSidebarcontent);
1362
+ export { NvSidebarcontent };
1363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarcontent, decorators: [{
1364
+ type: Component,
1365
+ args: [{
1366
+ selector: 'nv-sidebarcontent',
1367
+ changeDetection: ChangeDetectionStrategy.OnPush,
1368
+ template: '<ng-content></ng-content>',
1369
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1370
+ inputs: [],
1371
+ standalone: false
1372
+ }]
1373
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1374
+ let NvSidebardivider = class NvSidebardivider {
1375
+ constructor(c, r, z) {
1376
+ this.z = z;
1377
+ c.detach();
1378
+ this.el = r.nativeElement;
1379
+ }
1380
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebardivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1381
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebardivider, selector: "nv-sidebardivider", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1382
+ };
1383
+ NvSidebardivider = __decorate([
1384
+ ProxyCmp({})
1385
+ ], NvSidebardivider);
1386
+ export { NvSidebardivider };
1387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebardivider, decorators: [{
1388
+ type: Component,
1389
+ args: [{
1390
+ selector: 'nv-sidebardivider',
1391
+ changeDetection: ChangeDetectionStrategy.OnPush,
1392
+ template: '<ng-content></ng-content>',
1393
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1394
+ inputs: [],
1395
+ standalone: false
1396
+ }]
1397
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1398
+ let NvSidebarfooter = class NvSidebarfooter {
1399
+ constructor(c, r, z) {
1400
+ this.z = z;
1401
+ c.detach();
1402
+ this.el = r.nativeElement;
1403
+ }
1404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarfooter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1405
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarfooter, selector: "nv-sidebarfooter", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1406
+ };
1407
+ NvSidebarfooter = __decorate([
1408
+ ProxyCmp({})
1409
+ ], NvSidebarfooter);
1410
+ export { NvSidebarfooter };
1411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarfooter, decorators: [{
1412
+ type: Component,
1413
+ args: [{
1414
+ selector: 'nv-sidebarfooter',
1415
+ changeDetection: ChangeDetectionStrategy.OnPush,
1416
+ template: '<ng-content></ng-content>',
1417
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1418
+ inputs: [],
1419
+ standalone: false
1420
+ }]
1421
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1422
+ let NvSidebargroup = class NvSidebargroup {
1423
+ constructor(c, r, z) {
1424
+ this.z = z;
1425
+ c.detach();
1426
+ this.el = r.nativeElement;
1427
+ }
1428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebargroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebargroup, selector: "nv-sidebargroup", inputs: { label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1430
+ };
1431
+ NvSidebargroup = __decorate([
1432
+ ProxyCmp({
1433
+ inputs: ['label']
1434
+ })
1435
+ ], NvSidebargroup);
1436
+ export { NvSidebargroup };
1437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebargroup, decorators: [{
1438
+ type: Component,
1439
+ args: [{
1440
+ selector: 'nv-sidebargroup',
1441
+ changeDetection: ChangeDetectionStrategy.OnPush,
1442
+ template: '<ng-content></ng-content>',
1443
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1444
+ inputs: ['label'],
1445
+ standalone: false
1446
+ }]
1447
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1448
+ let NvSidebarheader = class NvSidebarheader {
1449
+ constructor(c, r, z) {
1450
+ this.z = z;
1451
+ c.detach();
1452
+ this.el = r.nativeElement;
1453
+ }
1454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarheader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarheader, selector: "nv-sidebarheader", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1456
+ };
1457
+ NvSidebarheader = __decorate([
1458
+ ProxyCmp({})
1459
+ ], NvSidebarheader);
1460
+ export { NvSidebarheader };
1461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarheader, decorators: [{
1462
+ type: Component,
1463
+ args: [{
1464
+ selector: 'nv-sidebarheader',
1465
+ changeDetection: ChangeDetectionStrategy.OnPush,
1466
+ template: '<ng-content></ng-content>',
1467
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1468
+ inputs: [],
1469
+ standalone: false
1470
+ }]
1471
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1472
+ let NvSidebarlogo = class NvSidebarlogo {
1473
+ constructor(c, r, z) {
1474
+ this.z = z;
1475
+ c.detach();
1476
+ this.el = r.nativeElement;
1477
+ }
1478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarlogo, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1479
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarlogo, selector: "nv-sidebarlogo", inputs: { collapsedLogo: "collapsedLogo", label: "label", logo: "logo" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1480
+ };
1481
+ NvSidebarlogo = __decorate([
1482
+ ProxyCmp({
1483
+ inputs: ['collapsedLogo', 'label', 'logo']
1484
+ })
1485
+ ], NvSidebarlogo);
1486
+ export { NvSidebarlogo };
1487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarlogo, decorators: [{
1488
+ type: Component,
1489
+ args: [{
1490
+ selector: 'nv-sidebarlogo',
1491
+ changeDetection: ChangeDetectionStrategy.OnPush,
1492
+ template: '<ng-content></ng-content>',
1493
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1494
+ inputs: ['collapsedLogo', 'label', 'logo'],
1495
+ standalone: false
1496
+ }]
1497
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1498
+ let NvSidebarnavitem = class NvSidebarnavitem {
1499
+ constructor(c, r, z) {
1500
+ this.z = z;
1501
+ c.detach();
1502
+ this.el = r.nativeElement;
1503
+ }
1504
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarnavitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1505
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarnavitem, selector: "nv-sidebarnavitem", inputs: { active: "active", collapsible: "collapsible", icon: "icon", notificationCount: "notificationCount", open: "open" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1506
+ };
1507
+ NvSidebarnavitem = __decorate([
1508
+ ProxyCmp({
1509
+ inputs: ['active', 'collapsible', 'icon', 'notificationCount', 'open']
1510
+ })
1511
+ ], NvSidebarnavitem);
1512
+ export { NvSidebarnavitem };
1513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarnavitem, decorators: [{
1514
+ type: Component,
1515
+ args: [{
1516
+ selector: 'nv-sidebarnavitem',
1517
+ changeDetection: ChangeDetectionStrategy.OnPush,
1518
+ template: '<ng-content></ng-content>',
1519
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1520
+ inputs: ['active', 'collapsible', 'icon', 'notificationCount', 'open'],
1521
+ standalone: false
1522
+ }]
1523
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1524
+ let NvSidebarnavsubitem = class NvSidebarnavsubitem {
1525
+ constructor(c, r, z) {
1526
+ this.z = z;
1527
+ c.detach();
1528
+ this.el = r.nativeElement;
1529
+ }
1530
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarnavsubitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1531
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSidebarnavsubitem, selector: "nv-sidebarnavsubitem", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1532
+ };
1533
+ NvSidebarnavsubitem = __decorate([
1534
+ ProxyCmp({
1535
+ inputs: ['active']
1536
+ })
1537
+ ], NvSidebarnavsubitem);
1538
+ export { NvSidebarnavsubitem };
1539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSidebarnavsubitem, decorators: [{
1540
+ type: Component,
1541
+ args: [{
1542
+ selector: 'nv-sidebarnavsubitem',
1543
+ changeDetection: ChangeDetectionStrategy.OnPush,
1544
+ template: '<ng-content></ng-content>',
1545
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1546
+ inputs: ['active'],
1547
+ standalone: false
1548
+ }]
1549
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1081
1550
  let NvSplit = class NvSplit {
1082
1551
  constructor(c, r, z) {
1083
1552
  this.z = z;
1553
+ this.sizesChanged = new EventEmitter();
1084
1554
  c.detach();
1085
1555
  this.el = r.nativeElement;
1086
- proxyOutputs(this, this.el, ['sizesChanged']);
1087
1556
  }
1088
1557
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvSplit, 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.9", type: NvSplit, selector: "nv-split", inputs: { direction: "direction", gutterSize: "gutterSize", minSizes: "minSizes", sizes: "sizes" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvSplit, selector: "nv-split", inputs: { direction: "direction", gutterSize: "gutterSize", minSizes: "minSizes", sizes: "sizes" }, outputs: { sizesChanged: "sizesChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1090
1559
  };
1091
1560
  NvSplit = __decorate([
1092
1561
  ProxyCmp({
@@ -1103,9 +1572,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1103
1572
  template: '<ng-content></ng-content>',
1104
1573
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1105
1574
  inputs: ['direction', 'gutterSize', 'minSizes', 'sizes'],
1575
+ outputs: ['sizesChanged'],
1106
1576
  standalone: false
1107
1577
  }]
1108
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1578
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { sizesChanged: [{
1579
+ type: Output
1580
+ }] } });
1109
1581
  let NvStack = class NvStack {
1110
1582
  constructor(c, r, z) {
1111
1583
  this.z = z;
@@ -1159,12 +1631,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1159
1631
  let NvTableheader = class NvTableheader {
1160
1632
  constructor(c, r, z) {
1161
1633
  this.z = z;
1634
+ this.sortDirectionChanged = new EventEmitter();
1162
1635
  c.detach();
1163
1636
  this.el = r.nativeElement;
1164
- proxyOutputs(this, this.el, ['sortDirectionChanged']);
1165
1637
  }
1166
1638
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvTableheader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTableheader, selector: "nv-tableheader", inputs: { sortDirection: "sortDirection", sortable: "sortable" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1639
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTableheader, selector: "nv-tableheader", inputs: { sortDirection: "sortDirection", sortable: "sortable" }, outputs: { sortDirectionChanged: "sortDirectionChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1168
1640
  };
1169
1641
  NvTableheader = __decorate([
1170
1642
  ProxyCmp({
@@ -1180,18 +1652,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1180
1652
  template: '<ng-content></ng-content>',
1181
1653
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1182
1654
  inputs: ['sortDirection', 'sortable'],
1655
+ outputs: ['sortDirectionChanged'],
1183
1656
  standalone: false
1184
1657
  }]
1185
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1658
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { sortDirectionChanged: [{
1659
+ type: Output
1660
+ }] } });
1186
1661
  let NvToggle = class NvToggle {
1187
1662
  constructor(c, r, z) {
1188
1663
  this.z = z;
1664
+ this.checkedChanged = new EventEmitter();
1189
1665
  c.detach();
1190
1666
  this.el = r.nativeElement;
1191
- proxyOutputs(this, this.el, ['checkedChanged']);
1192
1667
  }
1193
1668
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvToggle, selector: "nv-toggle", inputs: { checked: "checked", description: "description", disabled: "disabled", hideLabel: "hideLabel", inputId: "inputId", label: "label", labelPlacement: "labelPlacement", name: "name", readonly: "readonly", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1669
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvToggle, selector: "nv-toggle", inputs: { checked: "checked", description: "description", disabled: "disabled", hideLabel: "hideLabel", inputId: "inputId", label: "label", labelPlacement: "labelPlacement", name: "name", readonly: "readonly", value: "value" }, outputs: { checkedChanged: "checkedChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1195
1670
  };
1196
1671
  NvToggle = __decorate([
1197
1672
  ProxyCmp({
@@ -1207,18 +1682,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1207
1682
  template: '<ng-content></ng-content>',
1208
1683
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1209
1684
  inputs: ['checked', 'description', 'disabled', 'hideLabel', 'inputId', 'label', 'labelPlacement', 'name', 'readonly', 'value'],
1685
+ outputs: ['checkedChanged'],
1210
1686
  standalone: false
1211
1687
  }]
1212
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1688
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { checkedChanged: [{
1689
+ type: Output
1690
+ }] } });
1213
1691
  let NvTogglebutton = class NvTogglebutton {
1214
1692
  constructor(c, r, z) {
1215
1693
  this.z = z;
1694
+ this.toggled = new EventEmitter();
1216
1695
  c.detach();
1217
1696
  this.el = r.nativeElement;
1218
- proxyOutputs(this, this.el, ['toggled']);
1219
1697
  }
1220
1698
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvTogglebutton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTogglebutton, selector: "nv-togglebutton", inputs: { active: "active", disabled: "disabled", emphasis: "emphasis", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1699
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTogglebutton, selector: "nv-togglebutton", inputs: { active: "active", disabled: "disabled", emphasis: "emphasis", size: "size", value: "value" }, outputs: { toggled: "toggled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1222
1700
  };
1223
1701
  NvTogglebutton = __decorate([
1224
1702
  ProxyCmp({
@@ -1234,18 +1712,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1234
1712
  template: '<ng-content></ng-content>',
1235
1713
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1236
1714
  inputs: ['active', 'disabled', 'emphasis', 'size', 'value'],
1715
+ outputs: ['toggled'],
1237
1716
  standalone: false
1238
1717
  }]
1239
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1718
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { toggled: [{
1719
+ type: Output
1720
+ }] } });
1240
1721
  let NvTogglebuttongroup = class NvTogglebuttongroup {
1241
1722
  constructor(c, r, z) {
1242
1723
  this.z = z;
1724
+ this.valueChanged = new EventEmitter();
1243
1725
  c.detach();
1244
1726
  this.el = r.nativeElement;
1245
- proxyOutputs(this, this.el, ['valueChanged']);
1246
1727
  }
1247
1728
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvTogglebuttongroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1248
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTogglebuttongroup, selector: "nv-togglebuttongroup", inputs: { emphasis: "emphasis", enforceValue: "enforceValue", exclusive: "exclusive", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTogglebuttongroup, selector: "nv-togglebuttongroup", inputs: { emphasis: "emphasis", enforceValue: "enforceValue", exclusive: "exclusive", size: "size", value: "value" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1249
1730
  };
1250
1731
  NvTogglebuttongroup = __decorate([
1251
1732
  ProxyCmp({
@@ -1261,18 +1742,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1261
1742
  template: '<ng-content></ng-content>',
1262
1743
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1263
1744
  inputs: ['emphasis', 'enforceValue', 'exclusive', 'size', 'value'],
1745
+ outputs: ['valueChanged'],
1264
1746
  standalone: false
1265
1747
  }]
1266
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1748
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { valueChanged: [{
1749
+ type: Output
1750
+ }] } });
1267
1751
  let NvTooltip = class NvTooltip {
1268
1752
  constructor(c, r, z) {
1269
1753
  this.z = z;
1754
+ this.openChanged = new EventEmitter();
1270
1755
  c.detach();
1271
1756
  this.el = r.nativeElement;
1272
- proxyOutputs(this, this.el, ['openChanged']);
1273
1757
  }
1274
1758
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1275
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTooltip, selector: "nv-tooltip", inputs: { enterDelay: "enterDelay", message: "message", placement: "placement", strategy: "strategy" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1759
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: NvTooltip, selector: "nv-tooltip", inputs: { enterDelay: "enterDelay", message: "message", placement: "placement", strategy: "strategy" }, outputs: { openChanged: "openChanged" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1276
1760
  };
1277
1761
  NvTooltip = __decorate([
1278
1762
  ProxyCmp({
@@ -1288,7 +1772,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1288
1772
  template: '<ng-content></ng-content>',
1289
1773
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1290
1774
  inputs: ['enterDelay', 'message', 'placement', 'strategy'],
1775
+ outputs: ['openChanged'],
1291
1776
  standalone: false
1292
1777
  }]
1293
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2NvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBaUJoRSxJQUFNLFdBQVcsR0FBakIsTUFBTSxXQUFXO0lBRXRCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQU5VLFdBQVc7a0dBQVgsV0FBVyx3SEFMWiwyQkFBMkI7O0FBSzFCLFdBQVc7SUFadkIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztLQUMzQixDQUFDO0dBU1csV0FBVyxDQU92Qjs7MkZBUFksV0FBVztrQkFSdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0s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QixZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMxQixZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBTlUsU0FBUztrR0FBVCxTQUFTLDBKQUxWLDJCQUEyQjs7QUFLMUIsU0FBUztJQVhyQixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7S0FDM0QsQ0FBQztHQVNXLFNBQVMsQ0FPckI7OzJGQVBZLFNBQVM7a0JBUnJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztvQkFDMUQsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGF1dG8tZ2VuZXJhdGVkIGFuZ3VsYXIgZGlyZWN0aXZlIHByb3hpZXMgKi9cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQcm94eUNtcCwgcHJveHlPdXRwdXRzIH0gZnJvbSAnLi9hbmd1bGFyLWNvbXBvbmVudC1saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRzIH0gZnJvbSAnQG5vdmEtZGVzaWduLXN5c3RlbS9ub3ZhLXdlYmNvbXBvbmVudHMnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkYXRhJywgJ21vZGUnLCAnb3BlbkluZGV4ZXMnXSxcbiAgbWV0aG9kczogWydvcGVuJywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RhdGEnLCAnbW9kZScsICdvcGVuSW5kZXhlcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkFjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QWNjb3JkaW9uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnb3BlbkluZGV4ZXNDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5OdkFjY29yZGlvbiB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSdzIG9wZW4gc3RhdGUgY2hhbmdlcyBAYmluZCBvcGVuSW5kZXhlc1xuICAgKi9cbiAgb3BlbkluZGV4ZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaXRlbVRpdGxlJywgJ21heENvbnRlbnRIZWlnaHQnLCAnbW9kZScsICdvcGVuJywgJ3N1YnRpdGxlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaXRlbVRpdGxlJywgJ21heENvbnRlbnRIZWlnaHQnLCAnbW9kZScsICdvcGVuJywgJ3N1YnRpdGxlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QWNjb3JkaW9uSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QWNjb3JkaW9uSXRlbUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2l0ZW1Ub2dnbGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZBY2NvcmRpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5OdkFjY29yZGlvbkl0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBvbiB0b2dnbGUgKGhlYWRlciBjbGljayBvciBwcm9ncmFtbWF0aWMgY2hhbmdlKVxuICAgKi9cbiAgaXRlbVRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzbWlzc2libGUnLCAnZmVlZGJhY2snLCAnaGFzTm9BbmltYXRpb25zJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnbWVzc2FnZScsICdwcmV2ZW50QXV0b0Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzbWlzc2libGUnLCAnZmVlZGJhY2snLCAnaGFzTm9BbmltYXRpb25zJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnbWVzc2FnZScsICdwcmV2ZW50QXV0b0Nsb3NlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QWxlcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkFsZXJ0RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaGlkZGVuQ2hhbmdlZCcsICdoaWRkZW5DaGFuZ2VkQ29tcGxldGUnLCAnY2xvc2VDbGlja2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QWxlcnQgZXh0ZW5kcyBDb21wb25lbnRzLk52QWxlcnQge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgJ2hpZGRlbicgcHJvcCBjaGFuZ2VzLCByZWZsZWN0aW5nIGEgY2hhbmdlIGluIHZpc2liaWxpdHkuXG5QYXNzZXMgaGlkZGVuIHZhbHVlIHRvIHRoZSBkZXRhaWwuIEBiaW5kIGhpZGRlblxuICAgKi9cbiAgaGlkZGVuQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgYW5pbWF0aW9ucyBjb21wbGV0ZSwgZGV0YWlsIGluY2x1ZGVzIHRoZSBoaWRkZW4gdmFsdWUuXG4gICAqL1xuICBoaWRkZW5DaGFuZ2VkQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNsb3NlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2xvc2VDbGlja2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHQnLCAnY29sb3InLCAnaW5pdGlhbHMnLCAnbGFyZ2UnLCAnbWVkaXVtJywgJ3NpemUnLCAnc21hbGwnLCAnc3JjJywgJ3RleHQnLCAndXJsJywgJ3hsYXJnZScsICd4c21hbGwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWF2YXRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yJywgJ2luaXRpYWxzJywgJ2xhcmdlJywgJ21lZGl1bScsICdzaXplJywgJ3NtYWxsJywgJ3NyYycsICd0ZXh0JywgJ3VybCcsICd4bGFyZ2UnLCAneHNtYWxsJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QXZhdGFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZBdmF0YXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkF2YXRhciBleHRlbmRzIENvbXBvbmVudHMuTnZBdmF0YXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzbWlzc2FsJywgJ2Rpc21pc3NpYmxlJywgJ2hpZGRlbicsICdpY29uJywgJ2ljb25Mb2NhdGlvbicsICdpc0ljb25Pbmx5JywgJ2xhYmVsJywgJ2xlYWRJY29uJywgJ3ByZXZlbnRBdXRvQ2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkaXNtaXNzYWwnLCAnZGlzbWlzc2libGUnLCAnaGlkZGVuJywgJ2ljb24nLCAnaWNvbkxvY2F0aW9uJywgJ2lzSWNvbk9ubHknLCAnbGFiZWwnLCAnbGVhZEljb24nLCAncHJldmVudEF1dG9DbG9zZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkJhZGdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZCYWRnZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2Nsb3NlQ2xpY2tlZCcsICdoaWRkZW5DaGFuZ2VkJywgJ2hpZGRlbkNoYW5nZWRDb21wbGV0ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkJhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5OdkJhZGdlIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgYmFkZ2UgaXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgY2xvc2VDbGlja2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgJ2hpZGRlbicgcHJvcCBjaGFuZ2VzLCByZWZsZWN0aW5nIGEgY2hhbmdlIGluIHZpc2liaWxpdHkuXG5QYXNzZXMgaGlkZGVuIHZhbHVlIHRvIHRoZSBkZXRhaWwuXG4gICAqL1xuICBoaWRkZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBhbmltYXRpb25zIGNvbXBsZXRlLCBkZXRhaWwgaW5jbHVkZXMgdGhlIGhpZGRlbiB2YWx1ZS5cbiAgICovXG4gIGhpZGRlbkNoYW5nZWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VycmVudCcsICd0b29sdGlwJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWJyZWFkY3J1bWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAndG9vbHRpcCcsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QnJlYWRjcnVtYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QnJlYWRjcnVtYkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QnJlYWRjcnVtYiBleHRlbmRzIENvbXBvbmVudHMuTnZCcmVhZGNydW1iIHt9XG5cblxuQFByb3h5Q21wKHtcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1icmVhZGNydW1icycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkJyZWFkY3J1bWJzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZCcmVhZGNydW1ic0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QnJlYWRjcnVtYnMgZXh0ZW5kcyBDb21wb25lbnRzLk52QnJlYWRjcnVtYnMge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2RhbmdlcicsICdkaXNhYmxlVGFiaW5kZXgnLCAnZGlzYWJsZWQnLCAnZW1waGFzaXMnLCAnZmx1aWQnLCAnZm9ybScsICdsb2FkaW5nJywgJ3NpemUnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnZGFuZ2VyJywgJ2Rpc2FibGVUYWJpbmRleCcsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdmbHVpZCcsICdmb3JtJywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZCdXR0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuTnZCdXR0b24ge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZW1waGFzaXMnLCAnZmx1aWQnLCAnb3JpZW50YXRpb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtYnV0dG9uZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2VtcGhhc2lzJywgJ2ZsdWlkJywgJ29yaWVudGF0aW9uJywgJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZCdXR0b25ncm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QnV0dG9uZ3JvdXBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkJ1dHRvbmdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5OdkJ1dHRvbmdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NhbmNlbExhYmVsJywgJ2RhdGVGb3JtYXQnLCAnZGlzYWJsZWREYXRlcycsICdmaXJzdERheU9mV2VlaycsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdudW1iZXJPZkNhbGVuZGFycycsICdwcmltYXJ5TGFiZWwnLCAncmFuZ2VWYWx1ZScsICdzZWxlY3Rpb25UeXBlJywgJ3Nob3J0Y3V0cycsICdzaG9ydGN1dHNQbGFjZW1lbnQnLCAnc2hvd0FjdGlvbnMnLCAnc2hvd1dlZWtOdW1iZXJzJywgJ3NpbmdsZVZhbHVlJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWNhbGVuZGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdkYXRlRm9ybWF0JywgJ2Rpc2FibGVkRGF0ZXMnLCAnZmlyc3REYXlPZldlZWsnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbnVtYmVyT2ZDYWxlbmRhcnMnLCAncHJpbWFyeUxhYmVsJywgJ3JhbmdlVmFsdWUnLCAnc2VsZWN0aW9uVHlwZScsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzaW5nbGVWYWx1ZScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkNhbGVuZGFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZDYWxlbmRhckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3NpbmdsZURhdGVDaGFuZ2UnLCAncmFuZ2VEYXRlQ2hhbmdlJywgJ3ZhbHVlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkNhbGVuZGFyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkNhbGVuZGFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIHNpbmdsZSBkYXRlIGlzIHNlbGVjdGVkXG4gICAqL1xuICBzaW5nbGVEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBkYXRlIHJhbmdlIGlzIHNlbGVjdGVkXG4gICAqL1xuICByYW5nZURhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZDYWxlbmRhckVsZW1lbnRbJ3JhbmdlVmFsdWUnXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1bmlmaWVkIHZhbHVlIGNoYW5nZXMgQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1jb2wnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZDb2wge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkNvbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52Q29sIGV4dGVuZHMgQ29tcG9uZW50cy5OdkNvbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvR2VuZXJhdGVDb2x1bW5zJywgJ2NvbHVtbnMnLCAnZGF0YScsICdlbmFibGVHbG9iYWxGaWx0ZXInLCAnZW5hYmxlUGFnaW5hdGlvbicsICdlbmFibGVSb3dTZWxlY3Rpb24nLCAnZW5hYmxlU29ydGluZycsICdmYWxsYmFja1ZhbHVlJywgJ2dsb2JhbEZpbHRlclBvc2l0aW9uJywgJ25vQ29sdW1uc05vRGF0YU1lc3NhZ2UnLCAnbm9EYXRhTWVzc2FnZScsICdwYWdlU2l6ZScsICdwYWdlU2l6ZXMnLCAnc3RhdGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRhdGFncmlkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvR2VuZXJhdGVDb2x1bW5zJywgJ2NvbHVtbnMnLCAnZGF0YScsICdlbmFibGVHbG9iYWxGaWx0ZXInLCAnZW5hYmxlUGFnaW5hdGlvbicsICdlbmFibGVSb3dTZWxlY3Rpb24nLCAnZW5hYmxlU29ydGluZycsICdmYWxsYmFja1ZhbHVlJywgJ2dsb2JhbEZpbHRlclBvc2l0aW9uJywgJ25vQ29sdW1uc05vRGF0YU1lc3NhZ2UnLCAnbm9EYXRhTWVzc2FnZScsICdwYWdlU2l6ZScsICdwYWdlU2l6ZXMnLCAnc3RhdGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZEYXRhZ3JpZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RGF0YWdyaWRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydhY3Rpb24nLCAnc2VsZWN0ZWRSb3dzJywgJ3N0YXRlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRhdGFncmlkIGV4dGVuZHMgQ29tcG9uZW50cy5OdkRhdGFncmlkIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBhY3Rpb24gaXMgdHJpZ2dlcmVkIG9uIGEgY2VsbC5cbiAgICovXG4gIGFjdGlvbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqICogS2V5IGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgKi8ga2V5QWN0aW9uOiBzdHJpbmc7IC8qKiAqIERldGFpbHMgb2YgdGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgKi8gZGV0YWlsczogYW55OyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBvZiB0aGUgcm93cyBhcmUgY2hhbmdlZC5cbiAgICovXG4gIHNlbGVjdGVkUm93czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueVtdPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHN0YXRlIGlzIGNoYW5nZWQgQGJpbmQgc3RhdGVcbiAgICovXG4gIHN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqICogR2xvYmFsIGZpbHRlciBzZWFyY2ggdGVybSAqLyBnbG9iYWxGaWx0ZXJTZWFyY2hUZXJtOiBzdHJpbmc7IC8qKiAqIFBhZ2luYXRpb24gU3RhdGUgKi8gcGFnaW5hdGlvblN0YXRlOiB7IC8qKiAqIFBhZ2UgSW5kZXggKi8gcGFnZUluZGV4OiBudW1iZXI7IC8qKiAqIFBhZ2UgU2l6ZSAqLyBwYWdlU2l6ZTogbnVtYmVyOyB9OyAvKiogKiBTb3J0aW5nIHRoZSBjb2x1bW5zICovIHNvcnRpbmdTdGF0ZTogeyAvKiogKiBEZXNjZW5kaW5nICovIGRlc2M6IGJvb2xlYW47IC8qKiAqIENvbHVtbiBJZCAqLyBpZDogc3RyaW5nOyB9W107IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWNjZXNzb3InLCAnZ3JvdXAnLCAnaGVhZGVyJywgJ3JlcGVhdFRlbXBsYXRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kYXRhZ3JpZGNvbHVtbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFt7IG5hbWU6ICdhY2Nlc3NvcicsIHJlcXVpcmVkOiB0cnVlIH0sICdncm91cCcsICdoZWFkZXInLCAncmVwZWF0VGVtcGxhdGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZEYXRhZ3JpZGNvbHVtbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RGF0YWdyaWRjb2x1bW5FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRhdGFncmlkY29sdW1uIGV4dGVuZHMgQ29tcG9uZW50cy5OdkRhdGFncmlkY29sdW1uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGlja091dHNpZGUnLCAnY29udHJvbGxlZCcsICdmdWxsJywgJ29wZW4nLCAndW5kaXNtaXNzYWJsZSddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRpYWxvZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsaWNrT3V0c2lkZScsICdjb250cm9sbGVkJywgJ2Z1bGwnLCAnb3BlbicsICd1bmRpc21pc3NhYmxlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZEaWFsb2dFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydvcGVuQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRpYWxvZyBleHRlbmRzIENvbXBvbmVudHMuTnZEaWFsb2cge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2luZyBpbiBvcmRlciB0byBhbGxvdyBmb3IgY2xlYW51cCwgZGF0YS1jYXB0dXJlLCBldGMuIEBiaW5kIG9wZW5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnZm9ybScsICdsZWFkaW5nSWNvbicsICdwcmltYXJ5QnV0dG9uVHlwZScsICdwcmltYXJ5TGFiZWwnLCAndHJhaWxpbmdJY29uJywgJ3VuZGlzbWlzc2FibGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRpYWxvZ2Zvb3RlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FuY2VsTGFiZWwnLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2Zvcm0nLCAnbGVhZGluZ0ljb24nLCAncHJpbWFyeUJ1dHRvblR5cGUnLCAncHJpbWFyeUxhYmVsJywgJ3RyYWlsaW5nSWNvbicsICd1bmRpc21pc3NhYmxlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RGlhbG9nZm9vdGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZEaWFsb2dmb290ZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydkaWFsb2dDYW5jZWxlZCcsICdkaWFsb2dQcmltYXJ5Q2xpY2tlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRpYWxvZ2Zvb3RlciBleHRlbmRzIENvbXBvbmVudHMuTnZEaWFsb2dmb290ZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBjYW5jZWwgYnV0dG9uIGlzIGNsaWNrZWQuIFRoaXMgd2lsbCBjbG9zZSB0aGUgZGlhbG9nLlxuICAgKi9cbiAgZGlhbG9nQ2FuY2VsZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHByaW1hcnkgYnV0dG9uIGlzIGNsaWNrZWQuIFRoaXMgYWxsb3dzIHRvIGhhbmRsZSB0aGVcbnByaW1hcnkgYWN0aW9uIGFuZCBwb3RlbnRpYWwgZGF0YSBjYXB0dXJlIGJlZm9yZSBjbG9zaW5nIHRoZSBkaWFsb2cuXG4gICAqL1xuICBkaWFsb2dQcmltYXJ5Q2xpY2tlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaGVhZGluZycsICdzdWJoZWFkaW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kaWFsb2doZWFkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2hlYWRpbmcnLCAnc3ViaGVhZGluZyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkRpYWxvZ2hlYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RGlhbG9naGVhZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZEaWFsb2doZWFkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52RGlhbG9naGVhZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjaGVja2VkJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnaGlkZUxhYmVsJywgJ2luZGV0ZXJtaW5hdGUnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsYWJlbEJlZm9yZScsICdsYWJlbFBsYWNlbWVudCcsICdtZXNzYWdlJywgJ25hbWUnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRjaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdoaWRlTGFiZWwnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xhYmVsQmVmb3JlJywgJ2xhYmVsUGxhY2VtZW50JywgJ21lc3NhZ2UnLCAnbmFtZScsICdyZWFkb25seScsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRjaGVja2JveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RmllbGRjaGVja2JveEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2NoZWNrZWRDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRjaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZGNoZWNrYm94IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy4gQGJpbmQgY2hlY2tlZFxuICAgKi9cbiAgY2hlY2tlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdkYXRlRm9ybWF0JywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkRGF0ZXMnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbnVtYmVyT2ZDYWxlbmRhcnMnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2hvcnRjdXRzJywgJ3Nob3J0Y3V0c1BsYWNlbWVudCcsICdzaG93QWN0aW9ucycsICdzaG93V2Vla051bWJlcnMnLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRhdGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdkYXRlRm9ybWF0JywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkRGF0ZXMnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbnVtYmVyT2ZDYWxlbmRhcnMnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2hvcnRjdXRzJywgJ3Nob3J0Y3V0c1BsYWNlbWVudCcsICdzaG93QWN0aW9ucycsICdzaG93V2Vla051bWJlcnMnLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZGF0ZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RmllbGRkYXRlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmFsdWVDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRkYXRlIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkZGF0ZSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgKHVuaWZpZWQgdmFsdWUgYmluZGluZykuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2RhdGVGb3JtYXQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWREYXRlcycsICdlbmRJbnB1dElkJywgJ2VuZE5hbWUnLCAnZW5kUGxhY2Vob2xkZXInLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdudW1iZXJPZkNhbGVuZGFycycsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdGFydElucHV0SWQnLCAnc3RhcnROYW1lJywgJ3N0YXJ0UGxhY2Vob2xkZXInLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRhdGVyYW5nZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2RhdGVGb3JtYXQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWREYXRlcycsICdlbmRJbnB1dElkJywgJ2VuZE5hbWUnLCAnZW5kUGxhY2Vob2xkZXInLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdudW1iZXJPZkNhbGVuZGFycycsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdGFydElucHV0SWQnLCAnc3RhcnROYW1lJywgJ3N0YXJ0UGxhY2Vob2xkZXInLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZGF0ZXJhbmdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRhdGVyYW5nZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2RhdGVSYW5nZUNoYW5nZScsICd2YWx1ZUNoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZGRhdGVyYW5nZSBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZGRhdGVyYW5nZSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGRhdGUgcmFuZ2UgY2hhbmdlcy5cbiAgICovXG4gIGRhdGVSYW5nZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxOdkNhbGVuZGFyRWxlbWVudEV2ZW50TWFwWydyYW5nZURhdGVDaGFuZ2UnXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1bmlmaWVkIHZhbHVlIGNoYW5nZXMgQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2NvbnRyb2xsZWRGaWx0ZXInLCAnZGVib3VuY2VEZWxheScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlbXB0eVJlc3VsdCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpbHRlcmFibGUnLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhIZWlnaHQnLCAnbmFtZScsICdvcGVuT25TZWxlY3QnLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyRmlsdGVyJywgJ3RvZ2dsZURyb3Bkb3duJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRyb3Bkb3duJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2NvbnRyb2xsZWRGaWx0ZXInLCAnZGVib3VuY2VEZWxheScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlbXB0eVJlc3VsdCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpbHRlcmFibGUnLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhIZWlnaHQnLCAnbmFtZScsICdvcGVuT25TZWxlY3QnLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkZHJvcGRvd25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2YWx1ZUNoYW5nZWQnLCAnZmlsdGVyVGV4dENoYW5nZWQnLCAnb3BlbkNoYW5nZWQnLCAnZHJvcGRvd25JdGVtU2VsZWN0ZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZGRyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkZHJvcGRvd24ge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZpbHRlciBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgZmlsdGVyVGV4dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZHJvcGRvd24gb3BlbmVkIG9yIGNsb3NlZC5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTE52UG9wb3ZlckVsZW1lbnRFdmVudE1hcFsnb3BlbkNoYW5nZWQnXT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgY2xpY2tlZC5cbiAgICovXG4gIGRyb3Bkb3duSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTE52RmllbGRkcm9wZG93bml0ZW1FbGVtZW50RXZlbnRNYXBbJ2Ryb3Bkb3duSXRlbVNlbGVjdGVkJ10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGV0YWNoZWQnLCAnZGlzYWJsZWQnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkZHJvcGRvd25pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZXRhY2hlZCcsICdkaXNhYmxlZCcsICdsYWJlbCcsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZHJvcGRvd25pdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRyb3Bkb3duaXRlbUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2Ryb3Bkb3duSXRlbVNlbGVjdGVkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRkcm9wZG93bml0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRkcm9wZG93bml0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgZHJvcGRvd25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLiAqLyBsYWJlbD86IHN0cmluZzsgLyoqIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uICovIHZhbHVlOiBzdHJpbmc7IC8qKiBJcyB0aGUgaXRlbSBkZXRhY2hlZD8gKi8gZGV0YWNoZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZ3JvdXAnLCAnbGFiZWwnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkZHJvcGRvd25pdGVtY2hlY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZ3JvdXAnLCAnbGFiZWwnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZGRyb3Bkb3duaXRlbWNoZWNrIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRyb3Bkb3duaXRlbWNoZWNrRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaXRlbUNoZWNrZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZGRyb3Bkb3duaXRlbWNoZWNrIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkZHJvcGRvd25pdGVtY2hlY2sge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCBpcyB0b2dnbGVkLlxuSXQgcHJvdmlkZXMgZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgaXRlbS5cbiAgICovXG4gIGl0ZW1DaGVja2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyAvKiogKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbSAqLyB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvKiogKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjdXJyZW50bHkgY2hlY2tlZCAqLyBjaGVja2VkOiBib29sZWFuOyAvKiogKiBUaGUgZ3JvdXAgdGhpcyBpdGVtIGJlbG9uZ3MgdG8sIGlmIGFueSAqLyBncm91cD86IHN0cmluZyB8IHVuZGVmaW5lZDsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2JhZGdlTGFiZWwnLCAnZGVib3VuY2VEZWxheScsICdkZXNjcmlwdGlvbicsICdkZXNlbGVjdEFsbExhYmVsJywgJ2Rpc2FibGVkJywgJ2VtcHR5UmVzdWx0JywgJ2VuYWJsZVNlbGVjdEFsbCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpbHRlclRleHQnLCAnZmlsdGVyYWJsZScsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heEhlaWdodCcsICduYW1lJywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzZWxlY3RBbGxMYWJlbCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2dldEZpbHRlclRleHQnLCAncmVzZXRGaWx0ZXInLCAnZ2V0U2VsZWN0ZWRWYWx1ZXMnLCAnc2VsZWN0QWxsJywgJ2Rlc2VsZWN0QWxsJywgJ3RvZ2dsZVNlbGVjdEFsbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRtdWx0aXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdiYWRnZUxhYmVsJywgJ2RlYm91bmNlRGVsYXknLCAnZGVzY3JpcHRpb24nLCAnZGVzZWxlY3RBbGxMYWJlbCcsICdkaXNhYmxlZCcsICdlbXB0eVJlc3VsdCcsICdlbmFibGVTZWxlY3RBbGwnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaWx0ZXJUZXh0JywgJ2ZpbHRlcmFibGUnLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhIZWlnaHQnLCAnbmFtZScsICdvcGVuJywgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2VsZWN0QWxsTGFiZWwnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZG11bHRpc2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZG11bHRpc2VsZWN0RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmFsdWVDaGFuZ2VkJywgJ2ZpbHRlclRleHRDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRtdWx0aXNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZG11bHRpc2VsZWN0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWVzIGNoYW5nZS4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGZpbHRlciB0ZXh0IGNoYW5nZXMuXG4gICAqL1xuICBmaWx0ZXJUZXh0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heCcsICdtZXNzYWdlJywgJ21pbicsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAnc3VjY2VzcycsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZG51bWJlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXgnLCAnbWVzc2FnZScsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGVwJywgJ3N1Y2Nlc3MnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkbnVtYmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZG51bWJlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZhbHVlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkbnVtYmVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkbnVtYmVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlciB8IG51bGw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2hpZGVQYXNzd29yZEljb24nLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhsZW5ndGgnLCAnbWlubGVuZ3RoJywgJ21vZGUnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dQYXNzd29yZCcsICdzdWNjZXNzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZHBhc3N3b3JkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaGlkZVBhc3N3b3JkSWNvbicsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heGxlbmd0aCcsICdtaW5sZW5ndGgnLCAnbW9kZScsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2hvd1Bhc3N3b3JkJywgJ3N1Y2Nlc3MnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZHBhc3N3b3JkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHBhc3N3b3JkRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmFsdWVDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRwYXNzd29yZCBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHBhc3N3b3JkIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2hlY2tlZCcsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbGFiZWxCZWZvcmUnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbWVzc2FnZScsICduYW1lJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZHJhZGlvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2hlY2tlZCcsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbGFiZWxCZWZvcmUnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbWVzc2FnZScsICduYW1lJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRyYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RmllbGRyYWRpb0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2NoZWNrZWRDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRyYWRpbyBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHJhZGlvIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy4gQGJpbmQgY2hlY2tlZFxuICAgKi9cbiAgY2hlY2tlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdkaXNwbGF5VmFsdWUnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21lc3NhZ2UnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N1Y2Nlc3MnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRzZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdkaXNwbGF5VmFsdWUnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21lc3NhZ2UnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N1Y2Nlc3MnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkc2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHNlbGVjdEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZhbHVlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkc2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkc2VsZWN0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcy4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlbmRJbnB1dElkJywgJ2VuZE5hbWUnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdoYXNGaWVsZCcsICdoaWRlTGFiZWwnLCAnbGFiZWwnLCAnbGFiZWxBZnRlclZhbHVlJywgJ2xhYmVsQmVmb3JlVmFsdWUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JhbmdlJywgJ3JlYWRvbmx5JywgJ3Nob3dUaWNrcycsICdzbmFwJywgJ3NuYXBUaWNrcycsICdzdGFydElucHV0SWQnLCAnc3RlcCcsICdzdWNjZXNzJywgJ3RpY2tzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZHNsaWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZW5kSW5wdXRJZCcsICdlbmROYW1lJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaGFzRmllbGQnLCAnaGlkZUxhYmVsJywgJ2xhYmVsJywgJ2xhYmVsQWZ0ZXJWYWx1ZScsICdsYWJlbEJlZm9yZVZhbHVlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyYW5nZScsICdyZWFkb25seScsICdzaG93VGlja3MnLCAnc25hcCcsICdzbmFwVGlja3MnLCAnc3RhcnRJbnB1dElkJywgJ3N0ZXAnLCAnc3VjY2VzcycsICd0aWNrcycsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkc2xpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHNsaWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZhbHVlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkc2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkc2xpZGVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2xpZGVyIHZhbHVlcyBjaGFuZ2UuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXJbXT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhsZW5ndGgnLCAnbWVzc2FnZScsICdtaW5sZW5ndGgnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N1Y2Nlc3MnLCAndGV4dElucHV0VHlwZScsICd0eXBlJywgJ3ZhbGlkYXRpb24nLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkdGV4dCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4bGVuZ3RoJywgJ21lc3NhZ2UnLCAnbWlubGVuZ3RoJywgJ211bHRpcGxlJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdWNjZXNzJywgJ3RleHRJbnB1dFR5cGUnLCAndHlwZScsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGR0ZXh0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRleHRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2YWx1ZUNoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZHRleHQgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGR0ZXh0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnYXV0b3NpemUnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heGxlbmd0aCcsICdtZXNzYWdlJywgJ21pbmxlbmd0aCcsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2l6ZScsICdyb3dzJywgJ3N1Y2Nlc3MnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGR0ZXh0YXJlYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2F1dG9zaXplJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhsZW5ndGgnLCAnbWVzc2FnZScsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyZXNpemUnLCAncm93cycsICdzdWNjZXNzJywgJ3ZhbGlkYXRpb24nLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZHRleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRleHRhcmVhRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmFsdWVDaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGR0ZXh0YXJlYSBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHRleHRhcmVhIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgdmFsdWUgY2hhbmdlcy4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmb3JtYXQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnb3BlbicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGVwJywgJ3N1Y2Nlc3MnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkdGltZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZm9ybWF0JywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ29wZW4nLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3RlcCcsICdzdWNjZXNzJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGR0aW1lIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRpbWVFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2YWx1ZUNoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZHRpbWUgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGR0aW1lIHtcbiAgLyoqXG4gICAqIEVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgdGltZSB2YWx1ZSBjaGFuZ2VzLlxuVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgbmV3IHRpbWUgdmFsdWUgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBwcm9wZXJ0eS4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdsYXJnZScsICdtZWRpdW0nLCAnbmFtZScsICdzaXplJywgJ3NtYWxsJywgJ3hsYXJnZScsICd4c21hbGwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhcmdlJywgJ21lZGl1bScsICduYW1lJywgJ3NpemUnLCAnc21hbGwnLCAneGxhcmdlJywgJ3hzbWFsbCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkljb25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkljb24gZXh0ZW5kcyBDb21wb25lbnRzLk52SWNvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnZGlzYWJsZVRhYmluZGV4JywgJ2Rpc2FibGVkJywgJ2VtcGhhc2lzJywgJ2xvYWRpbmcnLCAnbmFtZScsICdzaGFwZScsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWljb25idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlVGFiaW5kZXgnLCAnZGlzYWJsZWQnLCAnZW1waGFzaXMnLCAnbG9hZGluZycsICduYW1lJywgJ3NoYXBlJywgJ3NpemUnLCAndHlwZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkljb25idXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkljb25idXR0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkljb25idXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk52SWNvbmJ1dHRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1sb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZMb2FkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkxvYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52TG9hZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkxvYWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdpdGVtcycsICduZXN0ZWQnLCAnb3BlbicsICdwbGFjZW1lbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdpdGVtcycsICduZXN0ZWQnLCAnb3BlbicsICdwbGFjZW1lbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZNZW51RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWVudWl0ZW1TZWxlY3RlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdk1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk52TWVudSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGZyb20gbnYtbWVudWl0ZW0gZWxlbWVudHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBpZCBhbmQgbmFtZSB3aGVuXG5zZWxlY3RlZCAodmlhIGNsaWNrIG9yIGtleWJvYXJkKS4gVGhpcyBldmVudCBsaXN0ZW5lciBjYW4gYmUgYXR0YWNoZWQgdG9cbmVpdGhlciB0aGUgbnYtbWVudSBvciB0aGUgbnYtbWVudWl0ZW0gZWxlbWVudC5cbiAgICovXG4gIG1lbnVpdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZNZW51aXRlbUVsZW1lbnRFdmVudE1hcFsnbWVudWl0ZW1TZWxlY3RlZCddPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hhc1N1Ym1lbnUnLCAnaWNvbicsICdsYWJlbCcsICduYW1lJywgJ3Nob3J0Y3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1tZW51aXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGFzU3VibWVudScsICdpY29uJywgJ2xhYmVsJywgJ25hbWUnLCAnc2hvcnRjdXQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZNZW51aXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52TWVudWl0ZW1FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZW51aXRlbVNlbGVjdGVkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52TWVudWl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk52TWVudWl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBpdGVtIGlzIHNlbGVjdGVkIChjbGljayBvciBrZXlwcmVzcykuIFdpbGwgaW5jbHVkZSB0aGVcbmlkIGFuZCBuYW1lIG9mIHRoZSBtZW51IGl0ZW0uXG4gICAqL1xuICBtZW51aXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyAvKiogKiBUaGUgaWQgb2YgdGhlIG1lbnUgaXRlbSB0aGF0IHdhcyBzZWxlY3RlZC4gKi8gaWQ/OiBIVE1MRWxlbWVudFsnaWQnXTsgLyoqICogVGhlIG5hbWUgb2YgdGhlIG1lbnUgaXRlbSB0aGF0IHdhcyBzZWxlY3RlZC4gKi8gbmFtZT86IHN0cmluZzsgLyoqICogSW5kaWNhdGVzIGlmIHRoZSBtZW51IGl0ZW0gaGFzIGEgbmVzdGVkIHN1Ym1lbnUuICovIGhhc1N1Ym1lbnU/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc21pc3NpYmxlJywgJ2VtcGhhc2lzJywgJ2ZlZWRiYWNrJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnaW5pdGlhbGx5SGlkZGVuJywgJ21lc3NhZ2UnLCAndWlkJ10sXG4gIG1ldGhvZHM6IFsnZGlzbWlzcycsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1ub3RpZmljYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc21pc3NpYmxlJywgJ2VtcGhhc2lzJywgJ2ZlZWRiYWNrJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnaW5pdGlhbGx5SGlkZGVuJywgJ21lc3NhZ2UnLCAndWlkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52Tm90aWZpY2F0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZOb3RpZmljYXRpb25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydoaWRkZW5DaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52Tm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5Odk5vdGlmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSAnaGlkZGVuJyBwcm9wIGNoYW5nZXMsIHJlZmxlY3RpbmcgYSBjaGFuZ2UgaW4gdmlzaWJpbGl0eS5cblBhc3NlcyBoaWRkZW4gdmFsdWUgdG8gdGhlIGRldGFpbC4gQGJpbmQgaGlkZGVuXG4gICAqL1xuICBoaWRkZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydwb3NpdGlvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtbm90aWZpY2F0aW9uY29udGFpbmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydwb3NpdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdk5vdGlmaWNhdGlvbmNvbnRhaW5lciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52Tm90aWZpY2F0aW9uY29udGFpbmVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZOb3RpZmljYXRpb25jb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52Tm90aWZpY2F0aW9uY29udGFpbmVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVGbGlwJywgJ2VudGVyRGVsYXknLCAnZ3JvdXBOYW1lJywgJ2hhc0Fycm93JywgJ25lc3RlZCcsICdvZmZzZXQnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2hpZnRQYWRkaW5nJywgJ3N0cmF0ZWd5JywgJ3RyaWdnZXJNb2RlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtcG9wb3ZlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZUZsaXAnLCAnZW50ZXJEZWxheScsICdncm91cE5hbWUnLCAnaGFzQXJyb3cnLCAnbmVzdGVkJywgJ29mZnNldCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdzaGlmdFBhZGRpbmcnLCAnc3RyYXRlZ3knLCAndHJpZ2dlck1vZGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZQb3BvdmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZQb3BvdmVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnb3BlbkNoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZQb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdlBvcG92ZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIHRvZ2dsZWQuIEBiaW5kIG9wZW5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52Um93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZSb3dFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlJvdyBleHRlbmRzIENvbXBvbmVudHMuTnZSb3cge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlyZWN0aW9uJywgJ2d1dHRlclNpemUnLCAnbWluU2l6ZXMnLCAnc2l6ZXMnXSxcbiAgbWV0aG9kczogWydzZXRTaXplcycsICdnZXRTaXplcycsICdjb2xsYXBzZScsICdkZXN0cm95J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1zcGxpdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlyZWN0aW9uJywgJ2d1dHRlclNpemUnLCAnbWluU2l6ZXMnLCAnc2l6ZXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZTcGxpdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52U3BsaXRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydzaXplc0NoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZTcGxpdCBleHRlbmRzIENvbXBvbmVudHMuTnZTcGxpdCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gcGFuZSBzaXplcyBhcmUgdXBkYXRlZCAoZWl0aGVyIHZpYSBkcmFnZ2luZyBvciBwcm9ncmFtbWF0aWNhbGx5KS4gQGJpbmQgc2l6ZXNcbiAgICovXG4gIHNpemVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcltdPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2ZpbGwnLCAnZmxleCcsICdmdWxsJywgJ2d1dHRlcicsICd2ZXJ0aWNhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc3RhY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2ZpbGwnLCAnZmxleCcsICdmdWxsJywgJ2d1dHRlcicsICd2ZXJ0aWNhbCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlN0YWNrIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZTdGFja0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U3RhY2sgZXh0ZW5kcyBDb21wb25lbnRzLk52U3RhY2sge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52VGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlRhYmxlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTnZUYWJsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzb3J0RGlyZWN0aW9uJywgJ3NvcnRhYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10YWJsZWhlYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc29ydERpcmVjdGlvbicsICdzb3J0YWJsZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRhYmxlaGVhZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZUYWJsZWhlYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3NvcnREaXJlY3Rpb25DaGFuZ2VkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52VGFibGVoZWFkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52VGFibGVoZWFkZXIge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzb3J0IGRpcmVjdGlvbiBjaGFuZ2VzLiBQYXlsb2FkIGlzIHRoZSBuZXcgc29ydFxuZGlyZWN0aW9uLlxuICAgKi9cbiAgc29ydERpcmVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdoaWRlTGFiZWwnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsYWJlbFBsYWNlbWVudCcsICduYW1lJywgJ3JlYWRvbmx5JywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10b2dnbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnaGlkZUxhYmVsJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbmFtZScsICdyZWFkb25seScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52VG9nZ2xlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnY2hlY2tlZENoYW5nZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk52VG9nZ2xlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy4gQGJpbmQgY2hlY2tlZFxuICAgKi9cbiAgY2hlY2tlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10b2dnbGVidXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdzaXplJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52VG9nZ2xlYnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZUb2dnbGVidXR0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd0b2dnbGVkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52VG9nZ2xlYnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5OdlRvZ2dsZWJ1dHRvbiB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyB0b2dnbGVkLlxuICAgKi9cbiAgdG9nZ2xlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbi4gKi8gdmFsdWU6IHN0cmluZzsgLyoqIElmIHRoZSBidXR0b24gaXMgYWN0aXZlIHdoZW4gY2xpY2tlZC4gKi8gYWN0aXZlOiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2VtcGhhc2lzJywgJ2VuZm9yY2VWYWx1ZScsICdleGNsdXNpdmUnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtdG9nZ2xlYnV0dG9uZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2VtcGhhc2lzJywgJ2VuZm9yY2VWYWx1ZScsICdleGNsdXNpdmUnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRvZ2dsZWJ1dHRvbmdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZUb2dnbGVidXR0b25ncm91cEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZhbHVlQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlRvZ2dsZWJ1dHRvbmdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5OdlRvZ2dsZWJ1dHRvbmdyb3VwIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdG9nZ2xlIGJ1dHRvbnMgY2hhbmdlLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZW50ZXJEZWxheScsICdtZXNzYWdlJywgJ3BsYWNlbWVudCcsICdzdHJhdGVneSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtdG9vbHRpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZW50ZXJEZWxheScsICdtZXNzYWdlJywgJ3BsYWNlbWVudCcsICdzdHJhdGVneSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlRvb2x0aXBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydvcGVuQ2hhbmdlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlRvb2x0aXAgZXh0ZW5kcyBDb21wb25lbnRzLk52VG9vbHRpcCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHRvb2x0aXAgaXMgb3BlbmVkIG9yIGNsb3NlZC4gQnViYmxlcyB1cCBmcm9tIHRoZSBwb3BvdmVyXG5lbGVtZW50LlxuICAgKi9cbiAgb3BlbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuIl19
1778
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { openChanged: [{
1779
+ type: Output
1780
+ }] } });
1781
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2NvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVoSSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBa0JsRCxJQUFNLFdBQVcsR0FBakIsTUFBTSxXQUFXO0lBR3RCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFEMUQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFdkUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7OEdBTlUsV0FBVztrR0FBWCxXQUFXLCtLQU5aLDJCQUEyQjs7QUFNMUIsV0FBVztJQWJ2QixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0tBQzNCLENBQUM7R0FVVyxXQUFXLENBT3ZCOzsyRkFQWSxXQUFXO2tCQVR2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsdUVBQXVFO29CQUN2RSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQztvQkFDdkMsT0FB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QjtvQkFDckMsdUVBQXVFO29CQUN2RSxNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7b0JBQzFELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO29JQUdXLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogYXV0by1nZW5lcmF0ZWQgYW5ndWxhciBkaXJlY3RpdmUgcHJveGllcyAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAbm92YS1kZXNpZ24tc3lzdGVtL25vdmEtd2ViY29tcG9uZW50cyc7XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RhdGEnLCAnbW9kZScsICdvcGVuSW5kZXhlcyddLFxuICBtZXRob2RzOiBbJ29wZW4nLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWFjY29yZGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGF0YScsICdtb2RlJywgJ29wZW5JbmRleGVzJ10sXG4gIG91dHB1dHM6IFsnb3BlbkluZGV4ZXNDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZBY2NvcmRpb25FbGVtZW50O1xuICBAT3V0cHV0KCkgb3BlbkluZGV4ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXJbXT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5OdkFjY29yZGlvbiB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSdzIG9wZW4gc3RhdGUgY2hhbmdlcyBAYmluZCBvcGVuSW5kZXhlc1xuICAgKi9cbiAgb3BlbkluZGV4ZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaXRlbVRpdGxlJywgJ21heENvbnRlbnRIZWlnaHQnLCAnbW9kZScsICdvcGVuJywgJ3N1YnRpdGxlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaXRlbVRpdGxlJywgJ21heENvbnRlbnRIZWlnaHQnLCAnbW9kZScsICdvcGVuJywgJ3N1YnRpdGxlJ10sXG4gIG91dHB1dHM6IFsnaXRlbVRvZ2dsZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkFjY29yZGlvbkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkFjY29yZGlvbkl0ZW1FbGVtZW50O1xuICBAT3V0cHV0KCkgaXRlbVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52QWNjb3JkaW9uSXRlbSBleHRlbmRzIENvbXBvbmVudHMuTnZBY2NvcmRpb25JdGVtIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgb24gdG9nZ2xlIChoZWFkZXIgY2xpY2sgb3IgcHJvZ3JhbW1hdGljIGNoYW5nZSlcbiAgICovXG4gIGl0ZW1Ub2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc21pc3NpYmxlJywgJ2ZlZWRiYWNrJywgJ2hhc05vQW5pbWF0aW9ucycsICdoZWFkaW5nJywgJ2hpZGRlbicsICdpY29uJywgJ21lc3NhZ2UnLCAncHJldmVudEF1dG9DbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtYWxlcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc21pc3NpYmxlJywgJ2ZlZWRiYWNrJywgJ2hhc05vQW5pbWF0aW9ucycsICdoZWFkaW5nJywgJ2hpZGRlbicsICdpY29uJywgJ21lc3NhZ2UnLCAncHJldmVudEF1dG9DbG9zZSddLFxuICBvdXRwdXRzOiBbJ2hpZGRlbkNoYW5nZWQnLCAnaGlkZGVuQ2hhbmdlZENvbXBsZXRlJywgJ2Nsb3NlQ2xpY2tlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkFsZXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZBbGVydEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBoaWRkZW5DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIGhpZGRlbkNoYW5nZWRDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkFsZXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5OdkFsZXJ0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlICdoaWRkZW4nIHByb3AgY2hhbmdlcywgcmVmbGVjdGluZyBhIGNoYW5nZSBpbiB2aXNpYmlsaXR5LlxuUGFzc2VzIGhpZGRlbiB2YWx1ZSB0byB0aGUgZGV0YWlsLiBAYmluZCBoaWRkZW5cbiAgICovXG4gIGhpZGRlbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGFuaW1hdGlvbnMgY29tcGxldGUsIGRldGFpbCBpbmNsdWRlcyB0aGUgaGlkZGVuIHZhbHVlLlxuICAgKi9cbiAgaGlkZGVuQ2hhbmdlZENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBjbG9zZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIGNsb3NlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yJywgJ2luaXRpYWxzJywgJ2xhcmdlJywgJ21lZGl1bScsICdzaXplJywgJ3NtYWxsJywgJ3NyYycsICd0ZXh0JywgJ3VybCcsICd4bGFyZ2UnLCAneHNtYWxsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1hdmF0YXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsdCcsICdjb2xvcicsICdpbml0aWFscycsICdsYXJnZScsICdtZWRpdW0nLCAnc2l6ZScsICdzbWFsbCcsICdzcmMnLCAndGV4dCcsICd1cmwnLCAneGxhcmdlJywgJ3hzbWFsbCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QXZhdGFyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZBdmF0YXIgZXh0ZW5kcyBDb21wb25lbnRzLk52QXZhdGFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc21pc3NhbCcsICdkaXNtaXNzaWJsZScsICdoaWRkZW4nLCAnaWNvbicsICdpY29uTG9jYXRpb24nLCAnaXNJY29uT25seScsICdsYWJlbCcsICdsZWFkSWNvbicsICdwcmV2ZW50QXV0b0Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzbWlzc2FsJywgJ2Rpc21pc3NpYmxlJywgJ2hpZGRlbicsICdpY29uJywgJ2ljb25Mb2NhdGlvbicsICdpc0ljb25Pbmx5JywgJ2xhYmVsJywgJ2xlYWRJY29uJywgJ3ByZXZlbnRBdXRvQ2xvc2UnXSxcbiAgb3V0cHV0czogWydjbG9zZUNsaWNrZWQnLCAnaGlkZGVuQ2hhbmdlZCcsICdoaWRkZW5DaGFuZ2VkQ29tcGxldGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QmFkZ2VFbGVtZW50O1xuICBAT3V0cHV0KCkgY2xvc2VDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGhpZGRlbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgaGlkZGVuQ2hhbmdlZENvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuTnZCYWRnZSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGJhZGdlIGlzIGRpc21pc3NlZC5cbiAgICovXG4gIGNsb3NlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlICdoaWRkZW4nIHByb3AgY2hhbmdlcywgcmVmbGVjdGluZyBhIGNoYW5nZSBpbiB2aXNpYmlsaXR5LlxuUGFzc2VzIGhpZGRlbiB2YWx1ZSB0byB0aGUgZGV0YWlsLlxuICAgKi9cbiAgaGlkZGVuQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgYW5pbWF0aW9ucyBjb21wbGV0ZSwgZGV0YWlsIGluY2x1ZGVzIHRoZSBoaWRkZW4gdmFsdWUuXG4gICAqL1xuICBoaWRkZW5DaGFuZ2VkQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAndG9vbHRpcCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1icmVhZGNydW1iJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXJyZW50JywgJ3Rvb2x0aXAnLCAndHlwZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkJyZWFkY3J1bWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkJyZWFkY3J1bWJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkJyZWFkY3J1bWIgZXh0ZW5kcyBDb21wb25lbnRzLk52QnJlYWRjcnVtYiB7fVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtYnJlYWRjcnVtYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZCcmVhZGNydW1icyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QnJlYWRjcnVtYnNFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkJyZWFkY3J1bWJzIGV4dGVuZHMgQ29tcG9uZW50cy5OdkJyZWFkY3J1bWJzIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkYW5nZXInLCAnZGlzYWJsZVRhYmluZGV4JywgJ2Rpc2FibGVkJywgJ2VtcGhhc2lzJywgJ2ZsdWlkJywgJ2Zvcm0nLCAnbG9hZGluZycsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2RhbmdlcicsICdkaXNhYmxlVGFiaW5kZXgnLCAnZGlzYWJsZWQnLCAnZW1waGFzaXMnLCAnZmx1aWQnLCAnZm9ybScsICdsb2FkaW5nJywgJ3NpemUnLCAndHlwZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52QnV0dG9uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk52QnV0dG9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2VtcGhhc2lzJywgJ2ZsdWlkJywgJ29yaWVudGF0aW9uJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWJ1dHRvbmdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydlbXBoYXNpcycsICdmbHVpZCcsICdvcmllbnRhdGlvbicsICdzaXplJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52QnV0dG9uZ3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkJ1dHRvbmdyb3VwRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZCdXR0b25ncm91cCBleHRlbmRzIENvbXBvbmVudHMuTnZCdXR0b25ncm91cCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdkYXRlRm9ybWF0JywgJ2Rpc2FibGVkRGF0ZXMnLCAnZmlyc3REYXlPZldlZWsnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbnVtYmVyT2ZDYWxlbmRhcnMnLCAncHJpbWFyeUxhYmVsJywgJ3JhbmdlVmFsdWUnLCAnc2VsZWN0aW9uVHlwZScsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzaW5nbGVWYWx1ZScsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1jYWxlbmRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FuY2VsTGFiZWwnLCAnZGF0ZUZvcm1hdCcsICdkaXNhYmxlZERhdGVzJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ251bWJlck9mQ2FsZW5kYXJzJywgJ3ByaW1hcnlMYWJlbCcsICdyYW5nZVZhbHVlJywgJ3NlbGVjdGlvblR5cGUnLCAnc2hvcnRjdXRzJywgJ3Nob3J0Y3V0c1BsYWNlbWVudCcsICdzaG93QWN0aW9ucycsICdzaG93V2Vla051bWJlcnMnLCAnc2luZ2xlVmFsdWUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydzaW5nbGVEYXRlQ2hhbmdlJywgJ3JhbmdlRGF0ZUNoYW5nZScsICd2YWx1ZUNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZDYWxlbmRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52Q2FsZW5kYXJFbGVtZW50O1xuICBAT3V0cHV0KCkgc2luZ2xlRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHJhbmdlRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTE52Q2FsZW5kYXJFbGVtZW50WydyYW5nZVZhbHVlJ10+PigpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkNhbGVuZGFyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkNhbGVuZGFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIHNpbmdsZSBkYXRlIGlzIHNlbGVjdGVkXG4gICAqL1xuICBzaW5nbGVEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBkYXRlIHJhbmdlIGlzIHNlbGVjdGVkXG4gICAqL1xuICByYW5nZURhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZDYWxlbmRhckVsZW1lbnRbJ3JhbmdlVmFsdWUnXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1bmlmaWVkIHZhbHVlIGNoYW5nZXMgQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1jb2wnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZDb2wge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkNvbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52Q29sIGV4dGVuZHMgQ29tcG9uZW50cy5OdkNvbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvR2VuZXJhdGVDb2x1bW5zJywgJ2NvbHVtbnMnLCAnZGF0YScsICdlbmFibGVHbG9iYWxGaWx0ZXInLCAnZW5hYmxlUGFnaW5hdGlvbicsICdlbmFibGVSb3dTZWxlY3Rpb24nLCAnZW5hYmxlU29ydGluZycsICdmYWxsYmFja1ZhbHVlJywgJ2dsb2JhbEZpbHRlclBvc2l0aW9uJywgJ25vQ29sdW1uc05vRGF0YU1lc3NhZ2UnLCAnbm9EYXRhTWVzc2FnZScsICdwYWdlU2l6ZScsICdwYWdlU2l6ZXMnLCAnc3RhdGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRhdGFncmlkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvR2VuZXJhdGVDb2x1bW5zJywgJ2NvbHVtbnMnLCAnZGF0YScsICdlbmFibGVHbG9iYWxGaWx0ZXInLCAnZW5hYmxlUGFnaW5hdGlvbicsICdlbmFibGVSb3dTZWxlY3Rpb24nLCAnZW5hYmxlU29ydGluZycsICdmYWxsYmFja1ZhbHVlJywgJ2dsb2JhbEZpbHRlclBvc2l0aW9uJywgJ25vQ29sdW1uc05vRGF0YU1lc3NhZ2UnLCAnbm9EYXRhTWVzc2FnZScsICdwYWdlU2l6ZScsICdwYWdlU2l6ZXMnLCAnc3RhdGUnXSxcbiAgb3V0cHV0czogWydhY3Rpb24nLCAnc2VsZWN0ZWRSb3dzJywgJ3N0YXRlQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkRhdGFncmlkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZEYXRhZ3JpZEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqICogS2V5IGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgKi8ga2V5QWN0aW9uOiBzdHJpbmc7IC8qKiAqIERldGFpbHMgb2YgdGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgKi8gZGV0YWlsczogYW55OyB9Pj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55W10+PigpO1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiAqIEdsb2JhbCBmaWx0ZXIgc2VhcmNoIHRlcm0gKi8gZ2xvYmFsRmlsdGVyU2VhcmNoVGVybTogc3RyaW5nOyAvKiogKiBQYWdpbmF0aW9uIFN0YXRlICovIHBhZ2luYXRpb25TdGF0ZTogeyAvKiogKiBQYWdlIEluZGV4ICovIHBhZ2VJbmRleDogbnVtYmVyOyAvKiogKiBQYWdlIFNpemUgKi8gcGFnZVNpemU6IG51bWJlcjsgfTsgLyoqICogU29ydGluZyB0aGUgY29sdW1ucyAqLyBzb3J0aW5nU3RhdGU6IHsgLyoqICogRGVzY2VuZGluZyAqLyBkZXNjOiBib29sZWFuOyAvKiogKiBDb2x1bW4gSWQgKi8gaWQ6IHN0cmluZzsgfVtdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZEYXRhZ3JpZCBleHRlbmRzIENvbXBvbmVudHMuTnZEYXRhZ3JpZCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIHRyaWdnZXJlZCBvbiBhIGNlbGwuXG4gICAqL1xuICBhY3Rpb246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiAqIEtleSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkICovIGtleUFjdGlvbjogc3RyaW5nOyAvKiogKiBEZXRhaWxzIG9mIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkICovIGRldGFpbHM6IGFueTsgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gb2YgdGhlIHJvd3MgYXJlIGNoYW5nZWQuXG4gICAqL1xuICBzZWxlY3RlZFJvd3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnlbXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzdGF0ZSBpcyBjaGFuZ2VkIEBiaW5kIHN0YXRlXG4gICAqL1xuICBzdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiAqIEdsb2JhbCBmaWx0ZXIgc2VhcmNoIHRlcm0gKi8gZ2xvYmFsRmlsdGVyU2VhcmNoVGVybTogc3RyaW5nOyAvKiogKiBQYWdpbmF0aW9uIFN0YXRlICovIHBhZ2luYXRpb25TdGF0ZTogeyAvKiogKiBQYWdlIEluZGV4ICovIHBhZ2VJbmRleDogbnVtYmVyOyAvKiogKiBQYWdlIFNpemUgKi8gcGFnZVNpemU6IG51bWJlcjsgfTsgLyoqICogU29ydGluZyB0aGUgY29sdW1ucyAqLyBzb3J0aW5nU3RhdGU6IHsgLyoqICogRGVzY2VuZGluZyAqLyBkZXNjOiBib29sZWFuOyAvKiogKiBDb2x1bW4gSWQgKi8gaWQ6IHN0cmluZzsgfVtdOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjY2Vzc29yJywgJ2dyb3VwJywgJ2hlYWRlcicsICdyZXBlYXRUZW1wbGF0ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZGF0YWdyaWRjb2x1bW4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbeyBuYW1lOiAnYWNjZXNzb3InLCByZXF1aXJlZDogdHJ1ZSB9LCAnZ3JvdXAnLCAnaGVhZGVyJywgJ3JlcGVhdFRlbXBsYXRlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RGF0YWdyaWRjb2x1bW4ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkRhdGFncmlkY29sdW1uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZEYXRhZ3JpZGNvbHVtbiBleHRlbmRzIENvbXBvbmVudHMuTnZEYXRhZ3JpZGNvbHVtbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xpY2tPdXRzaWRlJywgJ2NvbnRyb2xsZWQnLCAnZnVsbCcsICdvcGVuJywgJ3VuZGlzbWlzc2FibGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGlja091dHNpZGUnLCAnY29udHJvbGxlZCcsICdmdWxsJywgJ29wZW4nLCAndW5kaXNtaXNzYWJsZSddLFxuICBvdXRwdXRzOiBbJ29wZW5DaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZEaWFsb2dFbGVtZW50O1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRpYWxvZyBleHRlbmRzIENvbXBvbmVudHMuTnZEaWFsb2cge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2luZyBpbiBvcmRlciB0byBhbGxvdyBmb3IgY2xlYW51cCwgZGF0YS1jYXB0dXJlLCBldGMuIEBiaW5kIG9wZW5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnZm9ybScsICdsZWFkaW5nSWNvbicsICdwcmltYXJ5QnV0dG9uVHlwZScsICdwcmltYXJ5TGFiZWwnLCAndHJhaWxpbmdJY29uJywgJ3VuZGlzbWlzc2FibGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRpYWxvZ2Zvb3RlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FuY2VsTGFiZWwnLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2Zvcm0nLCAnbGVhZGluZ0ljb24nLCAncHJpbWFyeUJ1dHRvblR5cGUnLCAncHJpbWFyeUxhYmVsJywgJ3RyYWlsaW5nSWNvbicsICd1bmRpc21pc3NhYmxlJ10sXG4gIG91dHB1dHM6IFsnZGlhbG9nQ2FuY2VsZWQnLCAnZGlhbG9nUHJpbWFyeUNsaWNrZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZEaWFsb2dmb290ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkRpYWxvZ2Zvb3RlckVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBkaWFsb2dDYW5jZWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIEBPdXRwdXQoKSBkaWFsb2dQcmltYXJ5Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RGlhbG9nZm9vdGVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkRpYWxvZ2Zvb3RlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNhbmNlbCBidXR0b24gaXMgY2xpY2tlZC4gVGhpcyB3aWxsIGNsb3NlIHRoZSBkaWFsb2cuXG4gICAqL1xuICBkaWFsb2dDYW5jZWxlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcHJpbWFyeSBidXR0b24gaXMgY2xpY2tlZC4gVGhpcyBhbGxvd3MgdG8gaGFuZGxlIHRoZVxucHJpbWFyeSBhY3Rpb24gYW5kIHBvdGVudGlhbCBkYXRhIGNhcHR1cmUgYmVmb3JlIGNsb3NpbmcgdGhlIGRpYWxvZy5cbiAgICovXG4gIGRpYWxvZ1ByaW1hcnlDbGlja2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydoZWFkaW5nJywgJ3N1YmhlYWRpbmcnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWRpYWxvZ2hlYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaGVhZGluZycsICdzdWJoZWFkaW5nJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RGlhbG9naGVhZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZEaWFsb2doZWFkZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkRpYWxvZ2hlYWRlciBleHRlbmRzIENvbXBvbmVudHMuTnZEaWFsb2doZWFkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsaWNrT3V0c2lkZScsICdjb250cm9sbGVkJywgJ29wZW4nLCAnc2lkZScsICdzaXplJywgJ3N3aXBlVG9PcGVuJywgJ3VuZGlzbWlzc2FibGUnLCAnd2lkdGgnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kcmF3ZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGlja091dHNpZGUnLCAnY29udHJvbGxlZCcsICdvcGVuJywgJ3NpZGUnLCAnc2l6ZScsICdzd2lwZVRvT3BlbicsICd1bmRpc21pc3NhYmxlJywgJ3dpZHRoJ10sXG4gIG91dHB1dHM6IFsnb3BlbkNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZEcmF3ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkRyYXdlckVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RHJhd2VyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkRyYXdlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGRyYXdlciBpcyBjbG9zaW5nIGluIG9yZGVyIHRvIGFsbG93IGZvciBjbGVhbnVwLCBkYXRhLWNhcHR1cmUsIGV0Yy4gQGJpbmQgb3BlblxuICAgKi9cbiAgb3BlbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NhbmNlbExhYmVsJywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdmb3JtJywgJ2xlYWRpbmdJY29uJywgJ3ByaW1hcnlCdXR0b25UeXBlJywgJ3ByaW1hcnlMYWJlbCcsICd0cmFpbGluZ0ljb24nLCAndW5kaXNtaXNzYWJsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZHJhd2VyZm9vdGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnZm9ybScsICdsZWFkaW5nSWNvbicsICdwcmltYXJ5QnV0dG9uVHlwZScsICdwcmltYXJ5TGFiZWwnLCAndHJhaWxpbmdJY29uJywgJ3VuZGlzbWlzc2FibGUnXSxcbiAgb3V0cHV0czogWydkcmF3ZXJDYW5jZWxlZCcsICdkcmF3ZXJQcmltYXJ5Q2xpY2tlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkRyYXdlcmZvb3RlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RHJhd2VyZm9vdGVyRWxlbWVudDtcbiAgQE91dHB1dCgpIGRyYXdlckNhbmNlbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGRyYXdlclByaW1hcnlDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZEcmF3ZXJmb290ZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52RHJhd2VyZm9vdGVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBjbGlja2VkLiBUaGlzIHdpbGwgY2xvc2UgdGhlIGRyYXdlci5cbiAgICovXG4gIGRyYXdlckNhbmNlbGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwcmltYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLiBUaGlzIGFsbG93cyB0byBoYW5kbGUgdGhlXG5wcmltYXJ5IGFjdGlvbiBhbmQgcG90ZW50aWFsIGRhdGEgY2FwdHVyZSBiZWZvcmUgY2xvc2luZyB0aGUgZHJhd2VyLlxuICAgKi9cbiAgZHJhd2VyUHJpbWFyeUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2hlYWRpbmcnLCAnc3ViaGVhZGluZyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZHJhd2VyaGVhZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydoZWFkaW5nJywgJ3N1YmhlYWRpbmcnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZEcmF3ZXJoZWFkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkRyYXdlcmhlYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RHJhd2VyaGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdkRyYXdlcmhlYWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhUmVxdWlyZWRBdHRyJywgJ2F1dG9mb2N1cycsICdjaGVja2VkJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnaGlkZUxhYmVsJywgJ2luZGV0ZXJtaW5hdGUnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsYWJlbEJlZm9yZScsICdsYWJlbFBsYWNlbWVudCcsICdtZXNzYWdlJywgJ25hbWUnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRjaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvZm9jdXMnLCAnY2hlY2tlZCcsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2hpZGVMYWJlbCcsICdpbmRldGVybWluYXRlJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbGFiZWxCZWZvcmUnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbWVzc2FnZScsICduYW1lJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydjaGVja2VkQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkY2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkY2hlY2tib3hFbGVtZW50O1xuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkY2hlY2tib3ggZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRjaGVja2JveCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjaGVja2VkIHN0YXRlIGNoYW5nZXMuIEBiaW5kIGNoZWNrZWRcbiAgICovXG4gIGNoZWNrZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhUmVxdWlyZWRBdHRyJywgJ2F1dG9mb2N1cycsICdkYXRlRm9ybWF0JywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkRGF0ZXMnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbnVtYmVyT2ZDYWxlbmRhcnMnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2hvcnRjdXRzJywgJ3Nob3J0Y3V0c1BsYWNlbWVudCcsICdzaG93QWN0aW9ucycsICdzaG93V2Vla051bWJlcnMnLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRhdGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2RhdGVGb3JtYXQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWREYXRlcycsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2ZsdWlkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdudW1iZXJPZkNhbGVuZGFycycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdWNjZXNzJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRkYXRlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRhdGVFbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkZGF0ZSBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZGRhdGUge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzICh1bmlmaWVkIHZhbHVlIGJpbmRpbmcpLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2RhdGVGb3JtYXQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWREYXRlcycsICdlbmRJbnB1dElkJywgJ2VuZE5hbWUnLCAnZW5kUGxhY2Vob2xkZXInLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaXJzdERheU9mV2VlaycsICdmbHVpZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdudW1iZXJPZkNhbGVuZGFycycsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzaG9ydGN1dHMnLCAnc2hvcnRjdXRzUGxhY2VtZW50JywgJ3Nob3dBY3Rpb25zJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdGFydElucHV0SWQnLCAnc3RhcnROYW1lJywgJ3N0YXJ0UGxhY2Vob2xkZXInLCAnc3VjY2VzcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRhdGVyYW5nZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvZm9jdXMnLCAnZGF0ZUZvcm1hdCcsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdkaXNhYmxlZERhdGVzJywgJ2VuZElucHV0SWQnLCAnZW5kTmFtZScsICdlbmRQbGFjZWhvbGRlcicsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2ZsdWlkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ251bWJlck9mQ2FsZW5kYXJzJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3J0Y3V0cycsICdzaG9ydGN1dHNQbGFjZW1lbnQnLCAnc2hvd0FjdGlvbnMnLCAnc2hvd1dlZWtOdW1iZXJzJywgJ3N0YXJ0SW5wdXRJZCcsICdzdGFydE5hbWUnLCAnc3RhcnRQbGFjZWhvbGRlcicsICdzdWNjZXNzJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnZGF0ZVJhbmdlQ2hhbmdlJywgJ3ZhbHVlQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZGF0ZXJhbmdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRhdGVyYW5nZUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBkYXRlUmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxOdkNhbGVuZGFyRWxlbWVudEV2ZW50TWFwWydyYW5nZURhdGVDaGFuZ2UnXT4+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRkYXRlcmFuZ2UgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRkYXRlcmFuZ2Uge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkYXRlIHJhbmdlIGNoYW5nZXMuXG4gICAqL1xuICBkYXRlUmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZDYWxlbmRhckVsZW1lbnRFdmVudE1hcFsncmFuZ2VEYXRlQ2hhbmdlJ10+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdW5pZmllZCB2YWx1ZSBjaGFuZ2VzIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2NvbnRyb2xsZWRGaWx0ZXInLCAnZGVib3VuY2VEZWxheScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlbXB0eVJlc3VsdCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdmbHVpZCcsICdmdXp6eVRocmVzaG9sZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXhIZWlnaHQnLCAnbWF4UmVzdWx0cycsICduYW1lJywgJ29wZW5PblNlbGVjdCcsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0YXJ0RmlsdGVyQXQnLCAndHJ1bmNhdGVkUmVzdWx0c1RleHQnLCAndmFsdWUnLCAnd29ya2VyVGhyZXNob2xkJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXJGaWx0ZXInLCAndG9nZ2xlRHJvcGRvd24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkZHJvcGRvd24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdjb250cm9sbGVkRmlsdGVyJywgJ2RlYm91bmNlRGVsYXknLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZW1wdHlSZXN1bHQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZmx1aWQnLCAnZnV6enlUaHJlc2hvbGQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4SGVpZ2h0JywgJ21heFJlc3VsdHMnLCAnbmFtZScsICdvcGVuT25TZWxlY3QnLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGFydEZpbHRlckF0JywgJ3RydW5jYXRlZFJlc3VsdHNUZXh0JywgJ3ZhbHVlJywgJ3dvcmtlclRocmVzaG9sZCddLFxuICBvdXRwdXRzOiBbJ3ZhbHVlQ2hhbmdlZCcsICdmaWx0ZXJUZXh0Q2hhbmdlZCcsICdvcGVuQ2hhbmdlZCcsICdkcm9wZG93bkl0ZW1TZWxlY3RlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkZHJvcGRvd25FbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgZmlsdGVyVGV4dENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTE52UG9wb3ZlckVsZW1lbnRFdmVudE1hcFsnb3BlbkNoYW5nZWQnXT4+KCk7XG4gIEBPdXRwdXQoKSBkcm9wZG93bkl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTE52RmllbGRkcm9wZG93bml0ZW1FbGVtZW50RXZlbnRNYXBbJ2Ryb3Bkb3duSXRlbVNlbGVjdGVkJ10+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkZHJvcGRvd24gZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRkcm9wZG93biB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZmlsdGVyIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBmaWx0ZXJUZXh0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBvcGVuZWQgb3IgY2xvc2VkLlxuICAgKi9cbiAgb3BlbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZQb3BvdmVyRWxlbWVudEV2ZW50TWFwWydvcGVuQ2hhbmdlZCddPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkLiBQcm9wYWdhdGlvbiBwcmV2ZW50ZWQgaW4gbGlzdGVuZXIuXG4gICAqL1xuICBkcm9wZG93bkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxOdkZpZWxkZHJvcGRvd25pdGVtRWxlbWVudEV2ZW50TWFwWydkcm9wZG93bkl0ZW1TZWxlY3RlZCddPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RldGFjaGVkJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZGRyb3Bkb3duaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGV0YWNoZWQnLCAnZGlzYWJsZWQnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydkcm9wZG93bkl0ZW1TZWxlY3RlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZHJvcGRvd25pdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZGRyb3Bkb3duaXRlbUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBkcm9wZG93bkl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyAvKiogVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlbS4gKi8gbGFiZWw/OiBzdHJpbmc7IC8qKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLiAqLyB2YWx1ZTogc3RyaW5nOyAvKiogSXMgdGhlIGl0ZW0gZGV0YWNoZWQ/ICovIGRldGFjaGVkPzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRkcm9wZG93bml0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRkcm9wZG93bml0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgZHJvcGRvd25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLiAqLyBsYWJlbD86IHN0cmluZzsgLyoqIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uICovIHZhbHVlOiBzdHJpbmc7IC8qKiBJcyB0aGUgaXRlbSBkZXRhY2hlZD8gKi8gZGV0YWNoZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZ3JvdXAnLCAnbGFiZWwnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkZHJvcGRvd25pdGVtY2hlY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZ3JvdXAnLCAnbGFiZWwnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpdGVtQ2hlY2tlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkZHJvcGRvd25pdGVtY2hlY2sge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkZHJvcGRvd25pdGVtY2hlY2tFbGVtZW50O1xuICBAT3V0cHV0KCkgaXRlbUNoZWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqICogVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0gKi8gdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDsgLyoqICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgY3VycmVudGx5IGNoZWNrZWQgKi8gY2hlY2tlZDogYm9vbGVhbjsgLyoqICogVGhlIGdyb3VwIHRoaXMgaXRlbSBiZWxvbmdzIHRvLCBpZiBhbnkgKi8gZ3JvdXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkZHJvcGRvd25pdGVtY2hlY2sgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRkcm9wZG93bml0ZW1jaGVjayB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIHRvZ2dsZWQuXG5JdCBwcm92aWRlcyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBpdGVtLlxuICAgKi9cbiAgaXRlbUNoZWNrZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiAqIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtICovIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8qKiAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGN1cnJlbnRseSBjaGVja2VkICovIGNoZWNrZWQ6IGJvb2xlYW47IC8qKiAqIFRoZSBncm91cCB0aGlzIGl0ZW0gYmVsb25ncyB0bywgaWYgYW55ICovIGdyb3VwPzogc3RyaW5nIHwgdW5kZWZpbmVkOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdiYWRnZUxhYmVsJywgJ2RlYm91bmNlRGVsYXknLCAnZGVzY3JpcHRpb24nLCAnZGVzZWxlY3RBbGxMYWJlbCcsICdkaXNhYmxlZCcsICdlbXB0eVJlc3VsdCcsICdlbmFibGVTZWxlY3RBbGwnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlclRleHQnLCAnZmlsdGVyYWJsZScsICdmbHVpZCcsICdmdXp6eVRocmVzaG9sZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXhIZWlnaHQnLCAnbWF4UmVzdWx0cycsICduYW1lJywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzZWxlY3RBbGxMYWJlbCcsICdzdGFydEZpbHRlckF0JywgJ3RydW5jYXRlZFJlc3VsdHNUZXh0JywgJ3ZhbHVlJywgJ3dvcmtlclRocmVzaG9sZCddLFxuICBtZXRob2RzOiBbJ2dldEZpbHRlclRleHQnLCAncmVzZXRGaWx0ZXInLCAnZ2V0U2VsZWN0ZWRWYWx1ZXMnLCAnc2VsZWN0QWxsJywgJ2Rlc2VsZWN0QWxsJywgJ3RvZ2dsZVNlbGVjdEFsbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRtdWx0aXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2JhZGdlTGFiZWwnLCAnZGVib3VuY2VEZWxheScsICdkZXNjcmlwdGlvbicsICdkZXNlbGVjdEFsbExhYmVsJywgJ2Rpc2FibGVkJywgJ2VtcHR5UmVzdWx0JywgJ2VuYWJsZVNlbGVjdEFsbCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyVGV4dCcsICdmaWx0ZXJhYmxlJywgJ2ZsdWlkJywgJ2Z1enp5VGhyZXNob2xkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heEhlaWdodCcsICdtYXhSZXN1bHRzJywgJ25hbWUnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3NlbGVjdEFsbExhYmVsJywgJ3N0YXJ0RmlsdGVyQXQnLCAndHJ1bmNhdGVkUmVzdWx0c1RleHQnLCAndmFsdWUnLCAnd29ya2VyVGhyZXNob2xkJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJywgJ2ZpbHRlclRleHRDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRtdWx0aXNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RmllbGRtdWx0aXNlbGVjdEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj4oKTtcbiAgQE91dHB1dCgpIGZpbHRlclRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkbXVsdGlzZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRtdWx0aXNlbGVjdCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlcyBjaGFuZ2UuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBmaWx0ZXIgdGV4dCBjaGFuZ2VzLlxuICAgKi9cbiAgZmlsdGVyVGV4dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvZm9jdXMnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heCcsICdtZXNzYWdlJywgJ21pbicsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAnc3VjY2VzcycsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZG51bWJlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvZm9jdXMnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heCcsICdtZXNzYWdlJywgJ21pbicsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAnc3VjY2VzcycsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRudW1iZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkbnVtYmVyRWxlbWVudDtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyIHwgbnVsbD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRudW1iZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRudW1iZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyIHwgbnVsbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhUmVxdWlyZWRBdHRyJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvZm9jdXMnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdoaWRlUGFzc3dvcmRJY29uJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4bGVuZ3RoJywgJ21pbmxlbmd0aCcsICdtb2RlJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzaG93UGFzc3dvcmQnLCAnc3VjY2VzcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRwYXNzd29yZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYVJlcXVpcmVkQXR0cicsICdhdXRvY29tcGxldGUnLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaGlkZVBhc3N3b3JkSWNvbicsICdpbnB1dElkJywgJ2xhYmVsJywgJ21heGxlbmd0aCcsICdtaW5sZW5ndGgnLCAnbW9kZScsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2hvd1Bhc3N3b3JkJywgJ3N1Y2Nlc3MnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWyd2YWx1ZUNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZHBhc3N3b3JkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHBhc3N3b3JkRWxlbWVudDtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZHBhc3N3b3JkIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkcGFzc3dvcmQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjaGVja2VkJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsYWJlbEJlZm9yZScsICdsYWJlbFBsYWNlbWVudCcsICdtZXNzYWdlJywgJ25hbWUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjaGVja2VkJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnaW5wdXRJZCcsICdsYWJlbCcsICdsYWJlbEJlZm9yZScsICdsYWJlbFBsYWNlbWVudCcsICdtZXNzYWdlJywgJ25hbWUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydjaGVja2VkQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkZpZWxkcmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkcmFkaW9FbGVtZW50O1xuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkcmFkaW8gZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRyYWRpbyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjaGVja2VkIHN0YXRlIGNoYW5nZXMuIEBiaW5kIGNoZWNrZWRcbiAgICovXG4gIGNoZWNrZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhUmVxdWlyZWRBdHRyJywgJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdkaXNwbGF5VmFsdWUnLCAnZXJyb3InLCAnZXJyb3JEZXNjcmlwdGlvbicsICdmbHVpZCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ21lc3NhZ2UnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N1Y2Nlc3MnLCAndmFsaWRhdGlvbicsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRzZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Rpc3BsYXlWYWx1ZScsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWVzc2FnZScsICdtdWx0aXBsZScsICduYW1lJywgJ29wdGlvbnMnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3VjY2VzcycsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGRzZWxlY3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdkZpZWxkc2VsZWN0RWxlbWVudDtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZHNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHNlbGVjdCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZW5kSW5wdXRJZCcsICdlbmROYW1lJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaGFzRmllbGQnLCAnaGlkZUxhYmVsJywgJ2xhYmVsJywgJ2xhYmVsQWZ0ZXJWYWx1ZScsICdsYWJlbEJlZm9yZVZhbHVlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyYW5nZScsICdyZWFkb25seScsICdzaG93VGlja3MnLCAnc25hcCcsICdzbmFwVGlja3MnLCAnc3RhcnRJbnB1dElkJywgJ3N0ZXAnLCAnc3VjY2VzcycsICd0aWNrcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZmllbGRzbGlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2VuZElucHV0SWQnLCAnZW5kTmFtZScsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2hhc0ZpZWxkJywgJ2hpZGVMYWJlbCcsICdsYWJlbCcsICdsYWJlbEFmdGVyVmFsdWUnLCAnbGFiZWxCZWZvcmVWYWx1ZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmFuZ2UnLCAncmVhZG9ubHknLCAnc2hvd1RpY2tzJywgJ3NuYXAnLCAnc25hcFRpY2tzJywgJ3N0YXJ0SW5wdXRJZCcsICdzdGVwJywgJ3N1Y2Nlc3MnLCAndGlja3MnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWyd2YWx1ZUNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZHNsaWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52RmllbGRzbGlkZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXJbXT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52RmllbGRzbGlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52RmllbGRzbGlkZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzbGlkZXIgdmFsdWVzIGNoYW5nZS4gQGJpbmQgdmFsdWVcbiAgICovXG4gIHZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcltdPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4bGVuZ3RoJywgJ21lc3NhZ2UnLCAnbWlubGVuZ3RoJywgJ211bHRpcGxlJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdWNjZXNzJywgJ3RleHRJbnB1dFR5cGUnLCAndHlwZScsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZHRleHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9mb2N1cycsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvckRlc2NyaXB0aW9uJywgJ2ZsdWlkJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4bGVuZ3RoJywgJ21lc3NhZ2UnLCAnbWlubGVuZ3RoJywgJ211bHRpcGxlJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdWNjZXNzJywgJ3RleHRJbnB1dFR5cGUnLCAndHlwZScsICd2YWxpZGF0aW9uJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGR0ZXh0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRleHRFbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkdGV4dCBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHRleHQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2F1dG9zaXplJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhsZW5ndGgnLCAnbWVzc2FnZScsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyZXNpemUnLCAncm93cycsICdzdWNjZXNzJywgJ3ZhbGlkYXRpb24nLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWZpZWxkdGV4dGFyZWEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2F1dG9zaXplJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZmx1aWQnLCAnaW5wdXRJZCcsICdsYWJlbCcsICdtYXhsZW5ndGgnLCAnbWVzc2FnZScsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyZXNpemUnLCAncm93cycsICdzdWNjZXNzJywgJ3ZhbGlkYXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWyd2YWx1ZUNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZGaWVsZHRleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRleHRhcmVhRWxlbWVudDtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZGaWVsZHRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5OdkZpZWxkdGV4dGFyZWEge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSB2YWx1ZSBjaGFuZ2VzLiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZm9ybWF0JywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ29wZW4nLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3RlcCcsICdzdWNjZXNzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1maWVsZHRpbWUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FyaWFSZXF1aXJlZEF0dHInLCAnYXV0b2ZvY3VzJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yRGVzY3JpcHRpb24nLCAnZm9ybWF0JywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ29wZW4nLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3RlcCcsICdzdWNjZXNzJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52RmllbGR0aW1lIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZGaWVsZHRpbWVFbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdkZpZWxkdGltZSBleHRlbmRzIENvbXBvbmVudHMuTnZGaWVsZHRpbWUge1xuICAvKipcbiAgICogRW1pdCBhbiBldmVudCB3aGVuIHRoZSB0aW1lIHZhbHVlIGNoYW5nZXMuXG5UaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIHRoZSBuZXcgdGltZSB2YWx1ZSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IHByb3BlcnR5LiBAYmluZCB2YWx1ZVxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhcmdlJywgJ21lZGl1bScsICduYW1lJywgJ3NpemUnLCAnc21hbGwnLCAneGxhcmdlJywgJ3hzbWFsbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbGFyZ2UnLCAnbWVkaXVtJywgJ25hbWUnLCAnc2l6ZScsICdzbWFsbCcsICd4bGFyZ2UnLCAneHNtYWxsJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52SWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52SWNvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52SWNvbiBleHRlbmRzIENvbXBvbmVudHMuTnZJY29uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlVGFiaW5kZXgnLCAnZGlzYWJsZWQnLCAnZW1waGFzaXMnLCAnbG9hZGluZycsICduYW1lJywgJ3NoYXBlJywgJ3NpemUnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtaWNvbmJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2Rpc2FibGVUYWJpbmRleCcsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdsb2FkaW5nJywgJ25hbWUnLCAnc2hhcGUnLCAnc2l6ZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52SWNvbmJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52SWNvbmJ1dHRvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52SWNvbmJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuTnZJY29uYnV0dG9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LWxvYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnc2l6ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdkxvYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52TG9hZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZMb2FkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52TG9hZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVDbG9zZU9uU2VsZWN0JywgJ2l0ZW1zJywgJ25lc3RlZCcsICdvcGVuJywgJ3BsYWNlbWVudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVDbG9zZU9uU2VsZWN0JywgJ2l0ZW1zJywgJ25lc3RlZCcsICdvcGVuJywgJ3BsYWNlbWVudCddLFxuICBvdXRwdXRzOiBbJ21lbnVpdGVtU2VsZWN0ZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIG1lbnVpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxOdk1lbnVpdGVtRWxlbWVudEV2ZW50TWFwWydtZW51aXRlbVNlbGVjdGVkJ10+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdk1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk52TWVudSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGZyb20gbnYtbWVudWl0ZW0gZWxlbWVudHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBpZCBhbmQgbmFtZSB3aGVuXG5zZWxlY3RlZCAodmlhIGNsaWNrIG9yIGtleWJvYXJkKS4gVGhpcyBldmVudCBsaXN0ZW5lciBjYW4gYmUgYXR0YWNoZWQgdG9cbmVpdGhlciB0aGUgbnYtbWVudSBvciB0aGUgbnYtbWVudWl0ZW0gZWxlbWVudC5cbiAgICovXG4gIG1lbnVpdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MTnZNZW51aXRlbUVsZW1lbnRFdmVudE1hcFsnbWVudWl0ZW1TZWxlY3RlZCddPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hhc1N1Ym1lbnUnLCAnaWNvbicsICdsYWJlbCcsICduYW1lJywgJ3Nob3J0Y3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1tZW51aXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGFzU3VibWVudScsICdpY29uJywgJ2xhYmVsJywgJ25hbWUnLCAnc2hvcnRjdXQnXSxcbiAgb3V0cHV0czogWydtZW51aXRlbVNlbGVjdGVkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52TWVudWl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdk1lbnVpdGVtRWxlbWVudDtcbiAgQE91dHB1dCgpIG1lbnVpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqICogVGhlIGlkIG9mIHRoZSBtZW51IGl0ZW0gdGhhdCB3YXMgc2VsZWN0ZWQuICovIGlkPzogSFRNTEVsZW1lbnRbJ2lkJ107IC8qKiAqIFRoZSBuYW1lIG9mIHRoZSBtZW51IGl0ZW0gdGhhdCB3YXMgc2VsZWN0ZWQuICovIG5hbWU/OiBzdHJpbmc7IC8qKiAqIEluZGljYXRlcyBpZiB0aGUgbWVudSBpdGVtIGhhcyBhIG5lc3RlZCBzdWJtZW51LiAqLyBoYXNTdWJtZW51PzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52TWVudWl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk52TWVudWl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBpdGVtIGlzIHNlbGVjdGVkIChjbGljayBvciBrZXlwcmVzcykuIFdpbGwgaW5jbHVkZSB0aGVcbmlkIGFuZCBuYW1lIG9mIHRoZSBtZW51IGl0ZW0uXG4gICAqL1xuICBtZW51aXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyAvKiogKiBUaGUgaWQgb2YgdGhlIG1lbnUgaXRlbSB0aGF0IHdhcyBzZWxlY3RlZC4gKi8gaWQ/OiBIVE1MRWxlbWVudFsnaWQnXTsgLyoqICogVGhlIG5hbWUgb2YgdGhlIG1lbnUgaXRlbSB0aGF0IHdhcyBzZWxlY3RlZC4gKi8gbmFtZT86IHN0cmluZzsgLyoqICogSW5kaWNhdGVzIGlmIHRoZSBtZW51IGl0ZW0gaGFzIGEgbmVzdGVkIHN1Ym1lbnUuICovIGhhc1N1Ym1lbnU/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc21pc3NpYmxlJywgJ2VtcGhhc2lzJywgJ2ZlZWRiYWNrJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnaW5pdGlhbGx5SGlkZGVuJywgJ21lc3NhZ2UnLCAndWlkJ10sXG4gIG1ldGhvZHM6IFsnZGlzbWlzcycsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1ub3RpZmljYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc21pc3NpYmxlJywgJ2VtcGhhc2lzJywgJ2ZlZWRiYWNrJywgJ2hlYWRpbmcnLCAnaGlkZGVuJywgJ2ljb24nLCAnaW5pdGlhbGx5SGlkZGVuJywgJ21lc3NhZ2UnLCAndWlkJ10sXG4gIG91dHB1dHM6IFsnaGlkZGVuQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdk5vdGlmaWNhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52Tm90aWZpY2F0aW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGhpZGRlbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdk5vdGlmaWNhdGlvbiBleHRlbmRzIENvbXBvbmVudHMuTnZOb3RpZmljYXRpb24ge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgJ2hpZGRlbicgcHJvcCBjaGFuZ2VzLCByZWZsZWN0aW5nIGEgY2hhbmdlIGluIHZpc2liaWxpdHkuXG5QYXNzZXMgaGlkZGVuIHZhbHVlIHRvIHRoZSBkZXRhaWwuIEBiaW5kIGhpZGRlblxuICAgKi9cbiAgaGlkZGVuQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29udHJhc3RpbmdCb3JkZXInLCAnY291bnQnLCAnZW1waGFzaXMnLCAnaW50ZW50aW9uJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LW5vdGlmaWNhdGlvbi1idWxsZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRyYXN0aW5nQm9yZGVyJywgJ2NvdW50JywgJ2VtcGhhc2lzJywgJ2ludGVudGlvbicsICdzaXplJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52Tm90aWZpY2F0aW9uQnVsbGV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZOb3RpZmljYXRpb25CdWxsZXRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdk5vdGlmaWNhdGlvbkJ1bGxldCBleHRlbmRzIENvbXBvbmVudHMuTnZOb3RpZmljYXRpb25CdWxsZXQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsncG9zaXRpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LW5vdGlmaWNhdGlvbmNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsncG9zaXRpb24nXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZOb3RpZmljYXRpb25jb250YWluZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdk5vdGlmaWNhdGlvbmNvbnRhaW5lckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52Tm90aWZpY2F0aW9uY29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50cy5Odk5vdGlmaWNhdGlvbmNvbnRhaW5lciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXNhYmxlRmxpcCcsICdlbnRlckRlbGF5JywgJ2dyb3VwTmFtZScsICdoYXNBcnJvdycsICduZXN0ZWQnLCAnb2Zmc2V0JywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3NoaWZ0UGFkZGluZycsICdzdHJhdGVneScsICd0cmlnZ2VyTW9kZSddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZScsICd0b2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LXBvcG92ZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVGbGlwJywgJ2VudGVyRGVsYXknLCAnZ3JvdXBOYW1lJywgJ2hhc0Fycm93JywgJ25lc3RlZCcsICdvZmZzZXQnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2hpZnRQYWRkaW5nJywgJ3N0cmF0ZWd5JywgJ3RyaWdnZXJNb2RlJ10sXG4gIG91dHB1dHM6IFsnb3BlbkNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZQb3BvdmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZQb3BvdmVyRWxlbWVudDtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZQb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdlBvcG92ZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIHRvZ2dsZWQuIEBiaW5kIG9wZW5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52Um93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZSb3dFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlJvdyBleHRlbmRzIENvbXBvbmVudHMuTnZSb3cge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlUGF0aCcsICdub3RpZmljYXRpb25FbXBoYXNpcycsICdub3RpZmljYXRpb25JbnRlbnRpb24nLCAnb3BlbicsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1zaWRlYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVQYXRoJywgJ25vdGlmaWNhdGlvbkVtcGhhc2lzJywgJ25vdGlmaWNhdGlvbkludGVudGlvbicsICdvcGVuJywgJ3R5cGUnXSxcbiAgb3V0cHV0czogWydvcGVuQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlNpZGViYXJFbGVtZW50O1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlNpZGViYXIgZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIG9wZW4gc3RhdGUgY2hhbmdlcy4gQGJpbmQgb3BlblxuICAgKi9cbiAgb3BlbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1zaWRlYmFyY29udGVudCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXJjb250ZW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZTaWRlYmFyY29udGVudEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U2lkZWJhcmNvbnRlbnQgZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhcmNvbnRlbnQge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LXNpZGViYXJkaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52U2lkZWJhcmRpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlNpZGViYXJkaXZpZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZTaWRlYmFyZGl2aWRlciBleHRlbmRzIENvbXBvbmVudHMuTnZTaWRlYmFyZGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc2lkZWJhcmZvb3RlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXJmb290ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlNpZGViYXJmb290ZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlNpZGViYXJmb290ZXIgZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhcmZvb3RlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc2lkZWJhcmdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydsYWJlbCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXJncm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52U2lkZWJhcmdyb3VwRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZTaWRlYmFyZ3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhcmdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1zaWRlYmFyaGVhZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52U2lkZWJhcmhlYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52U2lkZWJhcmhlYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U2lkZWJhcmhlYWRlciBleHRlbmRzIENvbXBvbmVudHMuTnZTaWRlYmFyaGVhZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZExvZ28nLCAnbGFiZWwnLCAnbG9nbyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc2lkZWJhcmxvZ28nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZExvZ28nLCAnbGFiZWwnLCAnbG9nbyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXJsb2dvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZTaWRlYmFybG9nb0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U2lkZWJhcmxvZ28gZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhcmxvZ28ge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNpYmxlJywgJ2ljb24nLCAnbm90aWZpY2F0aW9uQ291bnQnLCAnb3BlbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc2lkZWJhcm5hdml0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2xsYXBzaWJsZScsICdpY29uJywgJ25vdGlmaWNhdGlvbkNvdW50JywgJ29wZW4nXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZTaWRlYmFybmF2aXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52U2lkZWJhcm5hdml0ZW1FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlNpZGViYXJuYXZpdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5OdlNpZGViYXJuYXZpdGVtIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc2lkZWJhcm5hdnN1Yml0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlNpZGViYXJuYXZzdWJpdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZTaWRlYmFybmF2c3ViaXRlbUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U2lkZWJhcm5hdnN1Yml0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk52U2lkZWJhcm5hdnN1Yml0ZW0ge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlyZWN0aW9uJywgJ2d1dHRlclNpemUnLCAnbWluU2l6ZXMnLCAnc2l6ZXMnXSxcbiAgbWV0aG9kczogWydzZXRTaXplcycsICdnZXRTaXplcycsICdjb2xsYXBzZScsICdkZXN0cm95J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1zcGxpdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlyZWN0aW9uJywgJ2d1dHRlclNpemUnLCAnbWluU2l6ZXMnLCAnc2l6ZXMnXSxcbiAgb3V0cHV0czogWydzaXplc0NoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZTcGxpdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52U3BsaXRFbGVtZW50O1xuICBAT3V0cHV0KCkgc2l6ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXJbXT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U3BsaXQgZXh0ZW5kcyBDb21wb25lbnRzLk52U3BsaXQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHBhbmUgc2l6ZXMgYXJlIHVwZGF0ZWQgKGRyYWcgc3RhcnQvc3RvcCBvciBwcm9ncmFtbWF0aWNhbGx5KS4gQGJpbmQgc2l6ZXNcbiAgICovXG4gIHNpemVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcltdPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2ZpbGwnLCAnZmxleCcsICdmdWxsJywgJ2d1dHRlcicsICd2ZXJ0aWNhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtc3RhY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2ZpbGwnLCAnZmxleCcsICdmdWxsJywgJ2d1dHRlcicsICd2ZXJ0aWNhbCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlN0YWNrIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZTdGFja0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52U3RhY2sgZXh0ZW5kcyBDb21wb25lbnRzLk52U3RhY2sge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52VGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlRhYmxlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTnZUYWJsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzb3J0RGlyZWN0aW9uJywgJ3NvcnRhYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10YWJsZWhlYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc29ydERpcmVjdGlvbicsICdzb3J0YWJsZSddLFxuICBvdXRwdXRzOiBbJ3NvcnREaXJlY3Rpb25DaGFuZ2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE52VGFibGVoZWFkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxOdlRhYmxlaGVhZGVyRWxlbWVudDtcbiAgQE91dHB1dCgpIHNvcnREaXJlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBOdlRhYmxlaGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5OdlRhYmxlaGVhZGVyIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc29ydCBkaXJlY3Rpb24gY2hhbmdlcy4gUGF5bG9hZCBpcyB0aGUgbmV3IHNvcnRcbmRpcmVjdGlvbi5cbiAgICovXG4gIHNvcnREaXJlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnaGlkZUxhYmVsJywgJ2lucHV0SWQnLCAnbGFiZWwnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbmFtZScsICdyZWFkb25seScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rlc2NyaXB0aW9uJywgJ2Rpc2FibGVkJywgJ2hpZGVMYWJlbCcsICdpbnB1dElkJywgJ2xhYmVsJywgJ2xhYmVsUGxhY2VtZW50JywgJ25hbWUnLCAncmVhZG9ubHknLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydjaGVja2VkQ2hhbmdlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52VG9nZ2xlRWxlbWVudDtcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk52VG9nZ2xlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy4gQGJpbmQgY2hlY2tlZFxuICAgKi9cbiAgY2hlY2tlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10b2dnbGVidXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCcsICdlbXBoYXNpcycsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsndG9nZ2xlZCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBOdlRvZ2dsZWJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52VG9nZ2xlYnV0dG9uRWxlbWVudDtcbiAgQE91dHB1dCgpIHRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgLyoqIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbi4gKi8gdmFsdWU6IHN0cmluZzsgLyoqIElmIHRoZSBidXR0b24gaXMgYWN0aXZlIHdoZW4gY2xpY2tlZC4gKi8gYWN0aXZlOiBib29sZWFuOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUb2dnbGVidXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk52VG9nZ2xlYnV0dG9uIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIHRvZ2dsZWQuIFdpbGwgYnViYmxlIHVwIHNvIHRoYXQgdGhlXG5udi10b2dnbGVidXR0b25ncm91cCBjYW4gdXBkYXRlIHRoZSBzdGF0ZS5cbiAgICovXG4gIHRvZ2dsZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IC8qKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBidXR0b24uICovIHZhbHVlOiBzdHJpbmc7IC8qKiBJZiB0aGUgYnV0dG9uIGlzIGFjdGl2ZSB3aGVuIGNsaWNrZWQuICovIGFjdGl2ZTogYm9vbGVhbjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydlbXBoYXNpcycsICdlbmZvcmNlVmFsdWUnLCAnZXhjbHVzaXZlJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ252LXRvZ2dsZWJ1dHRvbmdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydlbXBoYXNpcycsICdlbmZvcmNlVmFsdWUnLCAnZXhjbHVzaXZlJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWyd2YWx1ZUNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZUb2dnbGVidXR0b25ncm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE52VG9nZ2xlYnV0dG9uZ3JvdXBFbGVtZW50O1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE52VG9nZ2xlYnV0dG9uZ3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLk52VG9nZ2xlYnV0dG9uZ3JvdXAge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCB0b2dnbGUgYnV0dG9ucyBjaGFuZ2UuIEBiaW5kIHZhbHVlXG4gICAqL1xuICB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydlbnRlckRlbGF5JywgJ21lc3NhZ2UnLCAncGxhY2VtZW50JywgJ3N0cmF0ZWd5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydlbnRlckRlbGF5JywgJ21lc3NhZ2UnLCAncGxhY2VtZW50JywgJ3N0cmF0ZWd5J10sXG4gIG91dHB1dHM6IFsnb3BlbkNoYW5nZWQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnZUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTnZUb29sdGlwRWxlbWVudDtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTnZUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5OdlRvb2x0aXAge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB0b29sdGlwIGlzIG9wZW5lZCBvciBjbG9zZWQuIEJ1YmJsZXMgdXAgZnJvbSB0aGUgcG9wb3ZlclxuZWxlbWVudC5cbiAgICovXG4gIG9wZW5DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xufVxuXG5cbiJdfQ==