@acorex/components 5.0.60 → 5.1.2

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.
Files changed (47) hide show
  1. package/esm2020/lib/base/events.class.mjs +7 -1
  2. package/esm2020/lib/base/mixin/base-menu-mixin.class.mjs +135 -0
  3. package/esm2020/lib/base/mixin/mixin.class.mjs +4 -3
  4. package/esm2020/lib/calendar/calendar.class.mjs +16 -4
  5. package/esm2020/lib/calendar/calendar.component.mjs +33 -13
  6. package/esm2020/lib/carousel/carousel-arrows.component.mjs +11 -10
  7. package/esm2020/lib/carousel/carousel-pager.component.mjs +5 -5
  8. package/esm2020/lib/carousel/carousel-splidejs.class.mjs +11 -5
  9. package/esm2020/lib/carousel/carousel.class.mjs +1 -1
  10. package/esm2020/lib/carousel/carousel.component.mjs +164 -13
  11. package/esm2020/lib/carousel/carousel.module.mjs +1 -1
  12. package/esm2020/lib/datepicker/datepicker.component.mjs +20 -9
  13. package/esm2020/lib/menu/menu.component.mjs +39 -27
  14. package/esm2020/lib/menu/menu.module.mjs +6 -4
  15. package/esm2020/lib/picker/index.mjs +3 -0
  16. package/esm2020/lib/picker/picker.component.mjs +24 -0
  17. package/esm2020/lib/picker/picker.module.mjs +20 -0
  18. package/esm2020/lib/result/index.mjs +1 -1
  19. package/esm2020/lib/tabs/tab-item.component.mjs +7 -4
  20. package/esm2020/lib/tabs/tabs.component.mjs +4 -3
  21. package/esm2020/public-api.mjs +2 -1
  22. package/fesm2015/acorex-components.mjs +470 -86
  23. package/fesm2015/acorex-components.mjs.map +1 -1
  24. package/fesm2020/acorex-components.mjs +467 -84
  25. package/fesm2020/acorex-components.mjs.map +1 -1
  26. package/lib/base/events.class.d.ts +14 -0
  27. package/lib/base/mixin/base-menu-mixin.class.d.ts +51 -0
  28. package/lib/base/mixin/datalist-component.class.d.ts +8 -8
  29. package/lib/base/mixin/interactive-mixin.class.d.ts +2 -2
  30. package/lib/base/mixin/mixin.class.d.ts +72 -26
  31. package/lib/base/mixin/value-mixin.class.d.ts +8 -8
  32. package/lib/button/button-item.component.d.ts +2 -2
  33. package/lib/calendar/calendar.class.d.ts +9 -1
  34. package/lib/calendar/calendar.component.d.ts +4 -4
  35. package/lib/carousel/carousel-arrows.component.d.ts +1 -1
  36. package/lib/carousel/carousel.class.d.ts +20 -2
  37. package/lib/carousel/carousel.component.d.ts +41 -5
  38. package/lib/datepicker/datepicker.component.d.ts +22 -19
  39. package/lib/menu/menu.component.d.ts +9 -12
  40. package/lib/menu/menu.module.d.ts +3 -1
  41. package/lib/picker/index.d.ts +2 -0
  42. package/lib/picker/picker.component.d.ts +18 -0
  43. package/lib/picker/picker.module.d.ts +9 -0
  44. package/lib/tabs/tab-item.component.d.ts +1 -1
  45. package/lib/tabs/tabs.component.d.ts +1 -0
  46. package/package.json +2 -2
  47. package/public-api.d.ts +1 -0
@@ -12,11 +12,29 @@ export class AXCarouselComponent extends AXBaseComponentMixin {
12
12
  this.core = core;
13
13
  this.onOptionsChanged = new EventEmitter();
14
14
  this.onSlideChanged = new EventEmitter();
15
- this.pageSizeChange = new EventEmitter();
16
- this._pageSize = 1;
15
+ this.perMoveChange = new EventEmitter();
16
+ this._perMove = 1;
17
+ this.focusChange = new EventEmitter();
18
+ this._focus = 0;
19
+ this.heightRatioChange = new EventEmitter();
20
+ this._heightRatio = 0;
21
+ this.heightChange = new EventEmitter();
22
+ this._height = 'auto';
23
+ this.widthChange = new EventEmitter();
24
+ this._width = 'fit-content';
25
+ this.perPageChange = new EventEmitter();
26
+ this._perPage = 1;
17
27
  this.gap = 10;
18
28
  this.autoplayChange = new EventEmitter();
19
29
  this._autoplay = false;
30
+ this.snapChange = new EventEmitter();
31
+ this._snap = false;
32
+ this.autoWidthChange = new EventEmitter();
33
+ this._autoWidth = true;
34
+ this.dragChange = new EventEmitter();
35
+ this._drag = true;
36
+ this.wheelChange = new EventEmitter();
37
+ this._wheel = false;
20
38
  this.intervalChange = new EventEmitter();
21
39
  this._interval = 3000;
22
40
  this.paddingChange = new EventEmitter();
@@ -33,17 +51,70 @@ export class AXCarouselComponent extends AXBaseComponentMixin {
33
51
  this.onItemsChanged = new EventEmitter();
34
52
  this._items = [];
35
53
  }
36
- get pageSize() {
37
- return this._pageSize;
54
+ get perMove() {
55
+ return this._perMove;
38
56
  }
39
- set pageSize(v) {
57
+ set perMove(v) {
40
58
  const val = Math.max(1, coerceNumberProperty(v));
41
- if (val != this._pageSize) {
42
- this._pageSize = val;
43
- if (this._pageSize > 1) {
59
+ if (val != this._perMove) {
60
+ this._perMove = val;
61
+ if (this._perMove > 1) {
44
62
  this._vertical = false;
45
63
  }
46
- this.pageSizeChange.emit(this.pageSize);
64
+ this.perMoveChange.emit(this.perMove);
65
+ this.onOptionsChanged.emit();
66
+ }
67
+ }
68
+ get focus() {
69
+ return this._focus;
70
+ }
71
+ set focus(v) {
72
+ if (v != this._focus) {
73
+ this._focus = v;
74
+ this.paddingChange.emit(v);
75
+ this.onOptionsChanged.emit();
76
+ }
77
+ }
78
+ get heightRatio() {
79
+ return this._heightRatio;
80
+ }
81
+ set heightRatio(v) {
82
+ if (v != this._heightRatio) {
83
+ this._heightRatio = v;
84
+ this.paddingChange.emit(v);
85
+ this.onOptionsChanged.emit();
86
+ }
87
+ }
88
+ get height() {
89
+ return this._height;
90
+ }
91
+ set height(v) {
92
+ const val = v;
93
+ if (val != this._height) {
94
+ this._height = val;
95
+ this.heightChange.emit(this.height);
96
+ this.onOptionsChanged.emit();
97
+ }
98
+ }
99
+ get width() {
100
+ return this._width;
101
+ }
102
+ set width(v) {
103
+ const val = v;
104
+ if (val != this._width) {
105
+ this._width = val;
106
+ this.widthChange.emit(this.width);
107
+ this.onOptionsChanged.emit();
108
+ }
109
+ }
110
+ get perPage() {
111
+ return this._perPage;
112
+ }
113
+ set perPage(v) {
114
+ const val = v;
115
+ if (val != this._perPage) {
116
+ this._perPage = val;
117
+ this.perPageChange.emit(this.perPage);
47
118
  this.onOptionsChanged.emit();
48
119
  }
49
120
  }
@@ -58,6 +129,50 @@ export class AXCarouselComponent extends AXBaseComponentMixin {
58
129
  this.onOptionsChanged.emit();
59
130
  }
60
131
  }
132
+ get snap() {
133
+ return this._snap;
134
+ }
135
+ set snap(v) {
136
+ const val = coerceBooleanProperty(v);
137
+ if (val != this._snap) {
138
+ this._snap = val;
139
+ this.snapChange.emit(this.snap);
140
+ this.onOptionsChanged.emit();
141
+ }
142
+ }
143
+ get autoWidth() {
144
+ return this._autoWidth;
145
+ }
146
+ set autoWidth(v) {
147
+ const val = coerceBooleanProperty(v);
148
+ if (val != this._autoWidth) {
149
+ this._autoWidth = val;
150
+ this.autoWidthChange.emit(this.autoWidth);
151
+ this.onOptionsChanged.emit();
152
+ }
153
+ }
154
+ get drag() {
155
+ return this._drag;
156
+ }
157
+ set drag(v) {
158
+ const val = v;
159
+ if (val != this._drag) {
160
+ this._drag = val;
161
+ this.dragChange.emit(this.drag);
162
+ this.onOptionsChanged.emit();
163
+ }
164
+ }
165
+ get wheel() {
166
+ return this._wheel;
167
+ }
168
+ set wheel(v) {
169
+ const val = coerceBooleanProperty(v);
170
+ if (val != this._wheel) {
171
+ this._wheel = val;
172
+ this.wheelChange.emit(this.wheel);
173
+ this.onOptionsChanged.emit();
174
+ }
175
+ }
61
176
  get interval() {
62
177
  return this._interval;
63
178
  }
@@ -184,7 +299,7 @@ export class AXCarouselComponent extends AXBaseComponentMixin {
184
299
  }
185
300
  }
186
301
  AXCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXCarouselComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.AXCarouselCore }], target: i0.ɵɵFactoryTarget.Component });
187
- AXCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXCarouselComponent, selector: "ax-carousel", inputs: { pageSize: "pageSize", gap: "gap", autoplay: "autoplay", interval: "interval", padding: "padding", centered: "centered", vertical: "vertical", loop: "loop", rewind: "rewind" }, outputs: { onOptionsChanged: "onOptionsChanged", onSlideChanged: "onSlideChanged", pageSizeChange: "pageSizeChange", autoplayChange: "autoplayChange", intervalChange: "intervalChange", paddingChange: "paddingChange", centeredChange: "centeredChange", verticalChange: "verticalChange", loopChange: "loopChange", rewindChange: "rewindChange", onItemsChanged: "onItemsChanged" }, host: { classAttribute: "ax-carousel" }, providers: [{
302
+ AXCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXCarouselComponent, selector: "ax-carousel", inputs: { perMove: "perMove", focus: "focus", heightRatio: "heightRatio", height: "height", width: "width", perPage: "perPage", gap: "gap", autoplay: "autoplay", snap: "snap", autoWidth: "autoWidth", drag: "drag", wheel: "wheel", interval: "interval", padding: "padding", centered: "centered", vertical: "vertical", loop: "loop", rewind: "rewind" }, outputs: { onOptionsChanged: "onOptionsChanged", onSlideChanged: "onSlideChanged", perMoveChange: "perMoveChange", focusChange: "focusChange", heightRatioChange: "heightRatioChange", heightChange: "heightChange", widthChange: "widthChange", perPageChange: "perPageChange", autoplayChange: "autoplayChange", snapChange: "snapChange", autoWidthChange: "autoWidthChange", dragChange: "dragChange", wheelChange: "wheelChange", intervalChange: "intervalChange", paddingChange: "paddingChange", centeredChange: "centeredChange", verticalChange: "verticalChange", loopChange: "loopChange", rewindChange: "rewindChange", onItemsChanged: "onItemsChanged" }, host: { classAttribute: "ax-carousel" }, providers: [{
188
303
  provide: AXCarouselCore,
189
304
  useClass: AXCarouselSplideJS
190
305
  }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-carousel-list-container\">\r\n <div class=\"ax-carousel-list\">\r\n <ng-content select=\"ax-carousel-item\">\r\n </ng-content>\r\n </div>\r\n <ng-content select=\"ax-carousel-arrows\">\r\n </ng-content>\r\n</div>\r\n\r\n<ng-content select=\"ax-carousel-pager\">\r\n</ng-content>", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -198,9 +313,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
198
313
  type: Output
199
314
  }], onSlideChanged: [{
200
315
  type: Output
201
- }], pageSizeChange: [{
316
+ }], perMoveChange: [{
317
+ type: Output
318
+ }], perMove: [{
319
+ type: Input
320
+ }], focusChange: [{
321
+ type: Output
322
+ }], focus: [{
323
+ type: Input
324
+ }], heightRatioChange: [{
202
325
  type: Output
203
- }], pageSize: [{
326
+ }], heightRatio: [{
327
+ type: Input
328
+ }], heightChange: [{
329
+ type: Output
330
+ }], height: [{
331
+ type: Input
332
+ }], widthChange: [{
333
+ type: Output
334
+ }], width: [{
335
+ type: Input
336
+ }], perPageChange: [{
337
+ type: Output
338
+ }], perPage: [{
204
339
  type: Input
205
340
  }], gap: [{
206
341
  type: Input
@@ -208,6 +343,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
208
343
  type: Output
209
344
  }], autoplay: [{
210
345
  type: Input
346
+ }], snapChange: [{
347
+ type: Output
348
+ }], snap: [{
349
+ type: Input
350
+ }], autoWidthChange: [{
351
+ type: Output
352
+ }], autoWidth: [{
353
+ type: Input
354
+ }], dragChange: [{
355
+ type: Output
356
+ }], drag: [{
357
+ type: Input
358
+ }], wheelChange: [{
359
+ type: Output
360
+ }], wheel: [{
361
+ type: Input
211
362
  }], intervalChange: [{
212
363
  type: Output
213
364
  }], interval: [{
@@ -235,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
235
386
  }], onItemsChanged: [{
236
387
  type: Output
237
388
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQTZELEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvTSxPQUFPLEVBQUUsb0JBQW9CLEVBQXVCLE1BQU0sU0FBUyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWEvRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsb0JBQW9CO0lBR3pELFlBQ0ksVUFBc0IsRUFDZCxJQUFZLEVBQ3BCLEdBQXNCLEVBQ2QsSUFBb0I7UUFFNUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUpmLFNBQUksR0FBSixJQUFJLENBQVE7UUFFWixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQU9oQyxxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd6RCxtQkFBYyxHQUE4QyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUc1RyxtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpFLGNBQVMsR0FBVyxDQUFDLENBQUE7UUFvQjdCLFFBQUcsR0FBVyxFQUFFLENB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QUFVO3NCQURoQixNQUFNO2dCQUtJLElBQUk7c0JBRGQsS0FBSztnQkFrQkMsWUFBWTtzQkFEbEIsTUFBTTtnQkFLSSxNQUFNO3NCQURoQixLQUFLO2dCQWtDQyxjQUFjO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudE1peGluLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vYmFzZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlQ3NzUGl4ZWxWYWx1ZSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBBWENhcm91c2VsLCBBWENhcm91c2VsQ29yZSB9IGZyb20gJy4vY2Fyb3VzZWwuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWENhcm91c2VsU3BsaWRlSlMgfSBmcm9tICcuL2Nhcm91c2VsLXNwbGlkZWpzLmNsYXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdheC1jYXJvdXNlbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgaG9zdDogeyBjbGFzczogJ2F4LWNhcm91c2VsJyB9LFxyXG4gICAgcHJvdmlkZXJzOlt7XHJcbiAgICAgICAgcHJvdmlkZTogQVhDYXJvdXNlbENvcmUsXHJcbiAgICAgICAgdXNlQ2xhc3M6IEFYQ2Fyb3VzZWxTcGxpZGVKU1xyXG4gICAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFYQ2Fyb3VzZWxDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnRNaXhpbiBpbXBsZW1lbnRzIEFYQ2Fyb3VzZWwge1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBjb3JlOiBBWENhcm91c2VsQ29yZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgb25PcHRpb25zQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9uU2xpZGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHBhZ2VTaXplQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIHByaXZhdGUgX3BhZ2VTaXplOiBudW1iZXIgPSAxXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlU2l6ZTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgcGFnZVNpemUodjogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gTWF0aC5tYXgoMSwgY29lcmNlTnVtYmVyUHJvcGVydHkodikpO1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fcGFnZVNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFnZVNpemUgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wYWdlU2l6ZSA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wYWdlU2l6ZUNoYW5nZS5lbWl0KHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnYXA6IG51bWJlciA9IDEwO1xyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhdXRvcGxheUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2F1dG9wbGF5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBhdXRvcGxheSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b3BsYXk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGF1dG9wbGF5KHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9hdXRvcGxheSkge1xyXG4gICAgICAgICAgICB0aGlzLl9hdXRvcGxheSA9IHZhbDtcclxuICAgICAgICAgICAgdGhpcy5hdXRvcGxheUNoYW5nZS5lbWl0KHRoaXMuYXV0b3BsYXkpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBpbnRlcnZhbENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pbnRlcnZhbDogbnVtYmVyID0gMzAwMFxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgaW50ZXJ2YWwoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGludGVydmFsKHY6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpO1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5faW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFkZGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZz4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9wYWRkaW5nOiBudW1iZXIgfCBzdHJpbmcgPSAwXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBwYWRkaW5nKCk6IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZGRpbmc7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IHBhZGRpbmcodjogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHYgIT0gdGhpcy5fcGFkZGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9wYWRkaW5nPXY7XHJcbiAgICAgICAgICAgIHRoaXMucGFkZGluZ0NoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNlbnRlcmVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY2VudGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGNlbnRlcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jZW50ZXJlZDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgY2VudGVyZWQodjogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX2NlbnRlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NlbnRlcmVkID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY2VudGVyZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Jld2luZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2VudGVyZWRDaGFuZ2UuZW1pdCh0aGlzLmNlbnRlcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5yZXdpbmRDaGFuZ2UuZW1pdCh0aGlzLnJld2luZCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHZlcnRpY2FsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgdmVydGljYWwodjogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsQ2hhbmdlLmVtaXQodGhpcy52ZXJ0aWNhbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxvb3BDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9sb29wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBsb29wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb29wO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBsb29wKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9sb29wKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvb3AgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9sb29wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXdpbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvb3BDaGFuZ2UuZW1pdCh0aGlzLmxvb3ApO1xyXG4gICAgICAgICAgICB0aGlzLnJld2luZENoYW5nZS5lbWl0KHRoaXMucmV3aW5kKTtcclxuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmV3aW5kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcmV3aW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCByZXdpbmQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jld2luZDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgcmV3aW5kKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9yZXdpbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmV3aW5kID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fcmV3aW5kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb29wID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jZW50ZXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmV3aW5kQ2hhbmdlLmVtaXQodGhpcy5yZXdpbmQpO1xyXG4gICAgICAgICAgICB0aGlzLmxvb3BDaGFuZ2UuZW1pdCh0aGlzLmxvb3ApO1xyXG4gICAgICAgICAgICB0aGlzLmNlbnRlcmVkQ2hhbmdlLmVtaXQodGhpcy5jZW50ZXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgXHJcbiAgICBwcml2YXRlIF92aXNpYmxlSW5kZXggOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGdldCB2aXNpYmxlSW5kZXgoKSA6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJbmRleDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZUluZGV4KHYgOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl92aXNpYmxlSW5kZXggPSB2O1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBvbkl0ZW1zQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8SFRNTERpdkVsZW1lbnRbXT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PEhUTUxEaXZFbGVtZW50W10+PigpO1xyXG5cclxuICAgIHByaXZhdGUgX2l0ZW1zOiBIVE1MRGl2RWxlbWVudFtdID0gW107XHJcbiAgICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IEhUTUxEaXZFbGVtZW50W10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcyA/PyBbXTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgaXRlbXModjogSFRNTERpdkVsZW1lbnRbXSkge1xyXG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5pdGVtcy5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdjtcclxuICAgICAgICB0aGlzLm9uSXRlbXNDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZSxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuaXRlbXNcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvblZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29yZS5tb3VudCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgIFxyXG5cclxuICBcclxuICAgIG5leHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb3JlLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsYXN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29yZS5sYXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvcmUucHJldigpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcnN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29yZS5maXJzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdvVG9TbGlkZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb3JlLmdvVG9TbGlkZShpbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ29Ub1BhZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29yZS5nb1RvUGFnZShpbmRleCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldCBob3N0KCk6SFRNTERpdkVsZW1lbnRcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb25EZXN0cm95KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmNvcmUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJheC1jYXJvdXNlbC1saXN0LWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhcm91c2VsLWxpc3RcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jYXJvdXNlbC1pdGVtXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jYXJvdXNlbC1hcnJvd3NcIj5cclxuICAgIDwvbmctY29udGVudD5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGVudCBzZWxlY3Q9XCJheC1jYXJvdXNlbC1wYWdlclwiPlxyXG48L25nLWNvbnRlbnQ+Il19
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQTZELEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvTSxPQUFPLEVBQUUsb0JBQW9CLEVBQXVCLE1BQU0sU0FBUyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWEvRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsb0JBQW9CO0lBR3pELFlBQ0ksVUFBc0IsRUFDZCxJQUFZLEVBQ3BCLEdBQXNCLEVBQ2QsSUFBb0I7UUFFNUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUpmLFNBQUksR0FBSixJQUFJLENBQVE7UUFFWixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQU9oQyxxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd6RCxtQkFBYyxHQUE4QyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUs1RyxrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhFLGFBQVEsR0FBVyxDQUFDLENBQUE7UUFrQnJCLGdCQUFXLEdBQXlCLElBQUks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YTtzQkFEbkIsTUFBTTtnQkFLSSxPQUFPO3NCQURqQixLQUFLO2dCQWVDLGNBQWM7c0JBRHBCLE1BQU07Z0JBS0ksUUFBUTtzQkFEbEIsS0FBSztnQkFrQkMsY0FBYztzQkFEcEIsTUFBTTtnQkFLSSxRQUFRO3NCQURsQixLQUFLO2dCQWNDLFVBQVU7c0JBRGhCLE1BQU07Z0JBS0ksSUFBSTtzQkFEZCxLQUFLO2dCQWtCQyxZQUFZO3NCQURsQixNQUFNO2dCQUtJLE1BQU07c0JBRGhCLEtBQUs7Z0JBZ0NDLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBJbnB1dCwgTmdab25lLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50TWl4aW4sIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VDc3NQaXhlbFZhbHVlLCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWwsIEFYQ2Fyb3VzZWxDb3JlIH0gZnJvbSAnLi9jYXJvdXNlbC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxTcGxpZGVKUyB9IGZyb20gJy4vY2Fyb3VzZWwtc3BsaWRlanMuY2xhc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F4LWNhcm91c2VsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBob3N0OiB7IGNsYXNzOiAnYXgtY2Fyb3VzZWwnIH0sXHJcbiAgICBwcm92aWRlcnM6W3tcclxuICAgICAgICBwcm92aWRlOiBBWENhcm91c2VsQ29yZSxcclxuICAgICAgICB1c2VDbGFzczogQVhDYXJvdXNlbFNwbGlkZUpTXHJcbiAgICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhDYXJvdXNlbENvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudE1peGluIGltcGxlbWVudHMgQVhDYXJvdXNlbCB7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIGNvcmU6IEFYQ2Fyb3VzZWxDb3JlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBvbk9wdGlvbnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb25TbGlkZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XHJcblxyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBwZXJNb3ZlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIHByaXZhdGUgX3Blck1vdmU6IG51bWJlciA9IDFcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHBlck1vdmUoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGVyTW92ZTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgcGVyTW92ZSh2OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBNYXRoLm1heCgxLCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KSk7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9wZXJNb3ZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Blck1vdmUgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wZXJNb3ZlID4gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBlck1vdmVDaGFuZ2UuZW1pdCh0aGlzLnBlck1vdmUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBmb2N1c0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9mb2N1czogbnVtYmVyID0gMDtcclxuICAgIFxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgZm9jdXMoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXM7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGZvY3VzKHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9IHRoaXMuX2ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzPXY7XHJcbiAgICAgICAgICAgIHRoaXMucGFkZGluZ0NoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgaGVpZ2h0UmF0aW9DaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaGVpZ2h0UmF0aW86IG51bWJlciA9IDA7XHJcbiAgICBcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGhlaWdodFJhdGlvKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodFJhdGlvO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBoZWlnaHRSYXRpbyh2OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodiAhPSB0aGlzLl9oZWlnaHRSYXRpbykge1xyXG4gICAgICAgICAgICB0aGlzLl9oZWlnaHRSYXRpbz12O1xyXG4gICAgICAgICAgICB0aGlzLnBhZGRpbmdDaGFuZ2UuZW1pdCh2KTtcclxuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGhlaWdodENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9oZWlnaHQ6IHN0cmluZyA9ICdhdXRvJ1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgaGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgaGVpZ2h0KHY6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IHY7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9oZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhpcy5faGVpZ2h0ID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLmhlaWdodENoYW5nZS5lbWl0KHRoaXMuaGVpZ2h0KTtcclxuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgd2lkdGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfd2lkdGg6IHN0cmluZyA9ICdmaXQtY29udGVudCdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHdpZHRoKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCB3aWR0aCh2OiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSB2O1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fd2lkdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB2YWw7XHJcbiAgICAgICAgICAgIHRoaXMud2lkdGhDaGFuZ2UuZW1pdCh0aGlzLndpZHRoKTtcclxuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGVyUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9wZXJQYWdlOiBudW1iZXIgPSAxO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgcGVyUGFnZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJQYWdlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBwZXJQYWdlKHY6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IHY7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9wZXJQYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BlclBhZ2UgPSB2YWw7XHJcbiAgICAgICAgICAgIHRoaXMucGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMucGVyUGFnZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2FwOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhdXRvcGxheUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2F1dG9wbGF5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBhdXRvcGxheSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b3BsYXk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGF1dG9wbGF5KHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9hdXRvcGxheSkge1xyXG4gICAgICAgICAgICB0aGlzLl9hdXRvcGxheSA9IHZhbDtcclxuICAgICAgICAgICAgdGhpcy5hdXRvcGxheUNoYW5nZS5lbWl0KHRoaXMuYXV0b3BsYXkpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBzbmFwQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfc25hcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgc25hcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc25hcDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgc25hcCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fc25hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zbmFwID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBDaGFuZ2UuZW1pdCh0aGlzLnNuYXApO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhdXRvV2lkdGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9hdXRvV2lkdGg6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgYXV0b1dpZHRoKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvV2lkdGg7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGF1dG9XaWR0aCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fYXV0b1dpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2F1dG9XaWR0aCA9IHZhbDtcclxuICAgICAgICAgICAgdGhpcy5hdXRvV2lkdGhDaGFuZ2UuZW1pdCh0aGlzLmF1dG9XaWR0aCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGRyYWdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfZHJhZzogYW55ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGRyYWcoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHJhZztcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgZHJhZyh2OiBhbnkpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSB2O1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fZHJhZykge1xyXG4gICAgICAgICAgICB0aGlzLl9kcmFnID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdDaGFuZ2UuZW1pdCh0aGlzLmRyYWcpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aGVlbENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIHByaXZhdGUgX3doZWVsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCB3aGVlbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fd2hlZWw7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IHdoZWVsKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl93aGVlbCkge1xyXG4gICAgICAgICAgICB0aGlzLl93aGVlbCA9IHZhbDtcclxuICAgICAgICAgICAgdGhpcy53aGVlbENoYW5nZS5lbWl0KHRoaXMud2hlZWwpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBpbnRlcnZhbENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pbnRlcnZhbDogbnVtYmVyID0gMzAwMFxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgaW50ZXJ2YWwoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGludGVydmFsKHY6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpO1xyXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5faW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFkZGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZz4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9wYWRkaW5nOiBudW1iZXIgfCBzdHJpbmcgPSAwXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBwYWRkaW5nKCk6IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZGRpbmc7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IHBhZGRpbmcodjogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHYgIT0gdGhpcy5fcGFkZGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9wYWRkaW5nPXY7XHJcbiAgICAgICAgICAgIHRoaXMucGFkZGluZ0NoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNlbnRlcmVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY2VudGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGNlbnRlcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jZW50ZXJlZDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgY2VudGVyZWQodjogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX2NlbnRlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NlbnRlcmVkID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY2VudGVyZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Jld2luZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2VudGVyZWRDaGFuZ2UuZW1pdCh0aGlzLmNlbnRlcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5yZXdpbmRDaGFuZ2UuZW1pdCh0aGlzLnJld2luZCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHZlcnRpY2FsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgdmVydGljYWwodjogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsQ2hhbmdlLmVtaXQodGhpcy52ZXJ0aWNhbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxvb3BDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9sb29wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBsb29wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb29wO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBsb29wKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9sb29wKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvb3AgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9sb29wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXdpbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvb3BDaGFuZ2UuZW1pdCh0aGlzLmxvb3ApO1xyXG4gICAgICAgICAgICB0aGlzLnJld2luZENoYW5nZS5lbWl0KHRoaXMucmV3aW5kKTtcclxuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmV3aW5kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcmV3aW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCByZXdpbmQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jld2luZDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgcmV3aW5kKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHZhbCAhPSB0aGlzLl9yZXdpbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmV3aW5kID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fcmV3aW5kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb29wID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jZW50ZXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmV3aW5kQ2hhbmdlLmVtaXQodGhpcy5yZXdpbmQpO1xyXG4gICAgICAgICAgICB0aGlzLmxvb3BDaGFuZ2UuZW1pdCh0aGlzLmxvb3ApO1xyXG4gICAgICAgICAgICB0aGlzLmNlbnRlcmVkQ2hhbmdlLmVtaXQodGhpcy5jZW50ZXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuICAgIHByaXZhdGUgX3Zpc2libGVJbmRleCA6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgZ2V0IHZpc2libGVJbmRleCgpIDogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUluZGV4O1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCB2aXNpYmxlSW5kZXgodiA6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3Zpc2libGVJbmRleCA9IHY7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb25JdGVtc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PEhUTUxEaXZFbGVtZW50W10+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxIVE1MRGl2RWxlbWVudFtdPj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pdGVtczogSFRNTERpdkVsZW1lbnRbXSA9IFtdO1xyXG4gICAgcHVibGljIGdldCBpdGVtcygpOiBIVE1MRGl2RWxlbWVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMgPz8gW107XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IGl0ZW1zKHY6IEhUTUxEaXZFbGVtZW50W10pIHtcclxuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcclxuICAgICAgICB0aGlzLl9pdGVtcyA9IHY7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1zQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSxcclxuICAgICAgICAgICAgb2xkVmFsdWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLml0ZW1zXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgb25WaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvcmUubW91bnQodGhpcyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBuZXh0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29yZS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGFzdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvcmUubGFzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXYoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb3JlLnByZXYoKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJzdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvcmUuZmlyc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBnb1RvU2xpZGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29yZS5nb1RvU2xpZGUoaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdvVG9QYWdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvcmUuZ29Ub1BhZ2UoaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXQgaG9zdCgpOkhUTUxEaXZFbGVtZW50XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEhvc3RFbGVtZW50KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uRGVzdHJveSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5jb3JlLmRlc3Ryb3koKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXgtY2Fyb3VzZWwtbGlzdC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1jYXJvdXNlbC1saXN0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY2Fyb3VzZWwtaXRlbVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY2Fyb3VzZWwtYXJyb3dzXCI+XHJcbiAgICA8L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY2Fyb3VzZWwtcGFnZXJcIj5cclxuPC9uZy1jb250ZW50PiJdfQ==
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
21
21
  providers: [],
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBSXRFLE1BQU0sU0FBUyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUN0SCxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBUS9CLE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkFUVixtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsYUFDbkcsWUFBWSxhQURWLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3Qjs4R0FTdkcsZ0JBQWdCLGFBRmQsRUFBRSxZQUZKLENBQUMsR0FBRyxPQUFPLENBQUM7MkZBSVosZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxBcnJvd3NDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLWFycm93cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWENhcm91c2VsUGFnZXJDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLXBhZ2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxTcGxpZGVKUyB9IGZyb20gJy4vY2Fyb3VzZWwtc3BsaWRlanMuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWENhcm91c2VsLCBBWENhcm91c2VsQ29yZSB9IGZyb20gJy4vY2Fyb3VzZWwuY2xhc3MnO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UID0gW0FYQ2Fyb3VzZWxDb21wb25lbnQsIEFYQ2Fyb3VzZWxJdGVtQ29tcG9uZW50LCBBWENhcm91c2VsQXJyb3dzQ29tcG9uZW50LCBBWENhcm91c2VsUGFnZXJDb21wb25lbnRdO1xyXG5jb25zdCBNT0RVTEVTID0gW0NvbW1vbk1vZHVsZV07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UXSxcclxuICAgIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcclxuICAgIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxyXG4gICAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYQ2Fyb3VzZWxNb2R1bGUgeyB9XHJcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXRFLE1BQU0sU0FBUyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUN0SCxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBUS9CLE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkFUVixtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsYUFDbkcsWUFBWSxhQURWLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3Qjs4R0FTdkcsZ0JBQWdCLGFBRmQsRUFBRSxZQUZKLENBQUMsR0FBRyxPQUFPLENBQUM7MkZBSVosZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxBcnJvd3NDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLWFycm93cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWENhcm91c2VsUGFnZXJDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLXBhZ2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ2Fyb3VzZWxTcGxpZGVKUyB9IGZyb20gJy4vY2Fyb3VzZWwtc3BsaWRlanMuY2xhc3MnO1xyXG5jb25zdCBDT01QT05FTlQgPSBbQVhDYXJvdXNlbENvbXBvbmVudCwgQVhDYXJvdXNlbEl0ZW1Db21wb25lbnQsIEFYQ2Fyb3VzZWxBcnJvd3NDb21wb25lbnQsIEFYQ2Fyb3VzZWxQYWdlckNvbXBvbmVudF07XHJcbmNvbnN0IE1PRFVMRVMgPSBbQ29tbW9uTW9kdWxlXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRdLFxyXG4gICAgaW1wb3J0czogWy4uLk1PRFVMRVNdLFxyXG4gICAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhDYXJvdXNlbE1vZHVsZSB7IH1cclxuIl19
@@ -36,20 +36,28 @@ export class AXDatePickerComponent extends AXBaseDatePickerMixin {
36
36
  value: v
37
37
  });
38
38
  }
39
- onViewInit() {
40
- super.onViewInit();
39
+ onInit() {
41
40
  this._popoverTitle = this.placeholder || AXTranslator.get('datepicker.popover.title');
42
- this.popover.onOpened.subscribe(() => {
43
- this._calendar.focus();
44
- });
41
+ }
42
+ _updateDisplayText() {
43
+ this.displayText = this.value ? AXDateTime.convert(this.value, this.type).format(this._format) : null;
44
+ }
45
+ _handlePopoverOpened(e) {
46
+ this._calendar.navTo(this.value || new AXDateTime(new Date(), this.type));
45
47
  }
46
48
  _handleArrowClickEvent(e) {
47
49
  this.toggle();
48
50
  }
49
51
  _onValueChanged(oldValue, newValue) {
50
- this.displayText = newValue ? AXDateTime.convert(newValue, this.type).format(this._format) : null;
52
+ this._updateDisplayText();
51
53
  this.close();
52
54
  }
55
+ _onOptionChanged(option) {
56
+ super._onOptionChanged(option);
57
+ if (option.name == 'type') {
58
+ this._updateDisplayText();
59
+ }
60
+ }
53
61
  _handleOnKeydownEvent(e) {
54
62
  const ignore = () => {
55
63
  e.preventDefault();
@@ -141,16 +149,19 @@ export class AXDatePickerComponent extends AXBaseDatePickerMixin {
141
149
  e.preventDefault();
142
150
  e.stopPropagation();
143
151
  }
152
+ _handleOnNavigate(e) {
153
+ this.onNavigate.emit(e);
154
+ }
144
155
  _highlightPart(input, pos) {
145
156
  const { start, end } = AXStringUtil.getWordBoundsAtPosition(input.value, pos != null ? pos : input.selectionStart);
146
157
  input.setSelectionRange(start, end);
147
158
  }
148
159
  }
149
160
  AXDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXDatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.AXPlatform }], target: i0.ɵɵFactoryTarget.Component });
150
- AXDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { isOpen: "isOpen", fitParent: "fitParent", dropdownWidth: "dropdownWidth", position: "position", disabled: "disabled", tabIndex: "tabIndex", readonly: "readonly", allowNull: "allowNull", value: "value", debounceTime: "debounceTime", name: "name", checked: "checked", placeholder: "placeholder", maxLength: "maxLength", type: "type", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", format: "format" }, outputs: { onOpened: "onOpened", onClosed: "onClosed", onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged", depthChange: "depthChange", typeChange: "typeChange", disabledDates: "disabledDates", holidayDates: "holidayDates", formatChange: "formatChange" }, host: { classAttribute: "ax-editor-container ax-drop-down" }, viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, static: true }, { propertyName: "_calendar", first: true, predicate: AXCalendarComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\">\r\n <input class=\"ax-input\" type=\"text\" [attr.placeholder]=\"placeholder\" [class.ax-state-disabled]=\"disabled\"\r\n [class.ax-state-readonly]=\"readonly\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n [ngModel]=\"displayText\" (focus)=\"_emitOnFocusEvent($event)\" (mouseup)=\"_handleOnInputClickEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\" (keydown)=\"_handleOnKeydownEvent($event)\">\r\n</div>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n</ax-button>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\">\r\n <div class=\"ax-overlay-pane ax-w-72\">\r\n <div *ngIf=\"_isMobile\" class=\"ax-overlay-pane-header\">\r\n <span >{{placeholder || 'Choose a date'}}</span>\r\n <i class=\"ax-ic ax-ic-close \"\r\n (click)=\"close()\" tabindex=\"1\"></i>\r\n </div>\r\n <ax-calendar #calendar [disabled]=\"disabled\" [readonly]=\"readonly\" [(value)]=\"value\" [min]=\"min\" [max]=\"max\"\r\n [disabledDates]=\"disabledDates\" [holidayDates]=\"holidayDates\" [depth]=\"depth\" [type]=\"type\">\r\n </ax-calendar>\r\n </div>\r\n</ax-popover>", components: [{ type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "color", "look", "text", "submitBehavior", "cancelBehavior", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }, { type: i3.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i4.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass"], outputs: ["onOpened", "onClosed"] }, { type: i5.AXCalendarComponent, selector: "ax-calendar", inputs: ["readonly", "allowNull", "value", "debounceTime", "name", "checked", "disabled", "tabIndex", "depth", "activeView", "min", "max", "disabledDates", "type", "holidayDates"], outputs: ["valueChange", "onValueChanged", "onBlur", "onFocus", "depthChange", "typeChange", "disabledDates", "holidayDates", "onSlotClick"] }], directives: [{ type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
161
+ AXDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { isOpen: "isOpen", fitParent: "fitParent", dropdownWidth: "dropdownWidth", position: "position", disabled: "disabled", tabIndex: "tabIndex", readonly: "readonly", allowNull: "allowNull", value: "value", debounceTime: "debounceTime", name: "name", checked: "checked", placeholder: "placeholder", maxLength: "maxLength", type: "type", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", format: "format" }, outputs: { onOpened: "onOpened", onClosed: "onClosed", onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged", depthChange: "depthChange", typeChange: "typeChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", formatChange: "formatChange" }, host: { classAttribute: "ax-editor-container ax-drop-down" }, viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, static: true }, { propertyName: "_calendar", first: true, predicate: AXCalendarComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\">\r\n <input class=\"ax-input\" type=\"text\" [attr.placeholder]=\"placeholder\" [class.ax-state-disabled]=\"disabled\"\r\n [class.ax-state-readonly]=\"readonly\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n [ngModel]=\"displayText\" (focus)=\"_emitOnFocusEvent($event)\" (mouseup)=\"_handleOnInputClickEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\" (keydown)=\"_handleOnKeydownEvent($event)\">\r\n</div>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n</ax-button>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-calendar-options\">\r\n\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\" (onOpened)=\"_handlePopoverOpened($event)\">\r\n <div class=\"ax-overlay-pane ax-w-80\">\r\n <div *ngIf=\"_isMobile\" class=\"ax-overlay-pane-header\">\r\n <span >{{placeholder || 'Choose a date'}}</span>\r\n <i class=\"ax-ic ax-ic-close \"\r\n (click)=\"close()\" tabindex=\"1\"></i>\r\n </div>\r\n <ax-calendar #calendar [disabled]=\"disabled\" [readonly]=\"readonly\" \r\n [(value)]=\"value\" \r\n [min]=\"min\" \r\n [max]=\"max\"\r\n [disabledDates]=\"disabledDates\" \r\n [holidayDates]=\"holidayDates\" \r\n [depth]=\"depth\" \r\n (onNavigate)=\"_handleOnNavigate($event)\"\r\n [type]=\"type\">\r\n </ax-calendar>\r\n </div>\r\n</ax-popover>", components: [{ type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "color", "look", "text", "submitBehavior", "cancelBehavior", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }, { type: i3.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i4.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass"], outputs: ["onOpened", "onClosed"] }, { type: i5.AXCalendarComponent, selector: "ax-calendar", inputs: ["readonly", "allowNull", "value", "debounceTime", "name", "checked", "disabled", "tabIndex", "depth", "activeView", "min", "max", "disabledDates", "type", "holidayDates"], outputs: ["valueChange", "onValueChanged", "onBlur", "onFocus", "depthChange", "typeChange", "disabledDatesChange", "holidayDatesChange", "onNavigate"] }], directives: [{ type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
151
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXDatePickerComponent, decorators: [{
152
163
  type: Component,
153
- args: [{ selector: 'ax-date-picker', inputs: [...DROPDOWN_INPUTS, ...INTERACTIVE_INPUTS, ...VALUE_INPUTS, ...TEXTBOX_INPUTS, ...CALENDAR_INPUTS], outputs: [...DROPDOWN_OUTPUT, ...INTERACTIVE_OUTPUT, ...VALUE_OUTPUT, ...TEXTBOX_OUTPUT, ...CALENDAR_OUTPUTS], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ax-editor-container ax-drop-down' }, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\">\r\n <input class=\"ax-input\" type=\"text\" [attr.placeholder]=\"placeholder\" [class.ax-state-disabled]=\"disabled\"\r\n [class.ax-state-readonly]=\"readonly\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n [ngModel]=\"displayText\" (focus)=\"_emitOnFocusEvent($event)\" (mouseup)=\"_handleOnInputClickEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\" (keydown)=\"_handleOnKeydownEvent($event)\">\r\n</div>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n</ax-button>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\">\r\n <div class=\"ax-overlay-pane ax-w-72\">\r\n <div *ngIf=\"_isMobile\" class=\"ax-overlay-pane-header\">\r\n <span >{{placeholder || 'Choose a date'}}</span>\r\n <i class=\"ax-ic ax-ic-close \"\r\n (click)=\"close()\" tabindex=\"1\"></i>\r\n </div>\r\n <ax-calendar #calendar [disabled]=\"disabled\" [readonly]=\"readonly\" [(value)]=\"value\" [min]=\"min\" [max]=\"max\"\r\n [disabledDates]=\"disabledDates\" [holidayDates]=\"holidayDates\" [depth]=\"depth\" [type]=\"type\">\r\n </ax-calendar>\r\n </div>\r\n</ax-popover>" }]
164
+ args: [{ selector: 'ax-date-picker', inputs: [...DROPDOWN_INPUTS, ...INTERACTIVE_INPUTS, ...VALUE_INPUTS, ...TEXTBOX_INPUTS, ...CALENDAR_INPUTS], outputs: [...DROPDOWN_OUTPUT, ...INTERACTIVE_OUTPUT, ...VALUE_OUTPUT, ...TEXTBOX_OUTPUT, ...CALENDAR_OUTPUTS], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ax-editor-container ax-drop-down' }, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\">\r\n <input class=\"ax-input\" type=\"text\" [attr.placeholder]=\"placeholder\" [class.ax-state-disabled]=\"disabled\"\r\n [class.ax-state-readonly]=\"readonly\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n [ngModel]=\"displayText\" (focus)=\"_emitOnFocusEvent($event)\" (mouseup)=\"_handleOnInputClickEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\" (keydown)=\"_handleOnKeydownEvent($event)\">\r\n</div>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n</ax-button>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-calendar-options\">\r\n\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\" (onOpened)=\"_handlePopoverOpened($event)\">\r\n <div class=\"ax-overlay-pane ax-w-80\">\r\n <div *ngIf=\"_isMobile\" class=\"ax-overlay-pane-header\">\r\n <span >{{placeholder || 'Choose a date'}}</span>\r\n <i class=\"ax-ic ax-ic-close \"\r\n (click)=\"close()\" tabindex=\"1\"></i>\r\n </div>\r\n <ax-calendar #calendar [disabled]=\"disabled\" [readonly]=\"readonly\" \r\n [(value)]=\"value\" \r\n [min]=\"min\" \r\n [max]=\"max\"\r\n [disabledDates]=\"disabledDates\" \r\n [holidayDates]=\"holidayDates\" \r\n [depth]=\"depth\" \r\n (onNavigate)=\"_handleOnNavigate($event)\"\r\n [type]=\"type\">\r\n </ax-calendar>\r\n </div>\r\n</ax-popover>" }]
154
165
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.AXPlatform }]; }, propDecorators: { popover: [{
155
166
  type: ViewChild,
156
167
  args: [AXPopoverComponent, { static: true }]
@@ -164,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
164
175
  }], placeholder: [{
165
176
  type: Input
166
177
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBR3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTVILE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUEyQixNQUFNLG1DQUFtQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7O0FBR2xFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQywyQkFB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QUFFLElBQUksRUFBRTtnQkFhaEQsWUFBWTtzQkFEWCxNQUFNO2dCQUtJLE1BQU07c0JBRGhCLEtBQUs7Z0JBYU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhQbGF0Zm9ybSwgQVhTdHJpbmdVdGlsLCBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEJhc2VDb21wb25lbnQsIEFYQ2xpY2tFdmVudCB9IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBEUk9QRE9XTl9JTlBVVFMsIERST1BET1dOX09VVFBVVCwgX0Ryb3Bkb3duQ29tcG9uZW5ldE1peGluIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9kcm9wZG93bi1taXhpbi5jbGFzcyc7XHJcbmltcG9ydCB7IElOVEVSQUNUSVZFX0lOUFVUUywgSU5URVJBQ1RJVkVfT1VUUFVULCBfSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlL21peGluL2ludGVyYWN0aXZlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgX1NpemFibGVDb21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlL21peGluL3NpemFibGUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBURVhUQk9YX0lOUFVUUywgVEVYVEJPWF9PVVRQVVQsIF9UZXh0Ym94Q29tcG9uZW5ldE1peGluIH0gZnJvbSAnLi4vYmFzZS9taXhpbi90ZXh0Ym94LW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQsIF9WYWx1ZUNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vdmFsdWUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBBWENhbGVuZGFyQmFzZUNvbXBvbmVudCwgQ0FMRU5EQVJfSU5QVVRTLCBDQUxFTkRBUl9PVVRQVVRTIH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXIuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgQVhCYXNlRGF0ZVBpY2tlck1peGluID1cclxuICBfSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4oXHJcbiAgICBfRHJvcGRvd25Db21wb25lbmV0TWl4aW4oXHJcbiAgICAgIF9WYWx1ZUNvbXBvbmVuZXRNaXhpbihcclxuICAgICAgICBBWENhbGVuZGFyQmFzZUNvbXBvbmVudFxyXG4gICAgICApXHJcbiAgICApXHJcbiAgKTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW5wdXRzOiBbLi4uRFJPUERPV05fSU5QVVRTLCAuLi5JTlRFUkFDVElWRV9JTlBVVFMsIC4uLlZBTFVFX0lOUFVUUywgLi4uVEVYVEJPWF9JTlBVVFMsIC4uLkNBTEVOREFSX0lOUFVUU10sXHJcbiAgb3V0cHV0czogWy4uLkRST1BET1dOX09VVFBVVCwgLi4uSU5URVJBQ1RJVkVfT1VUUFVULCAuLi5WQUxVRV9PVVRQVVQsIC4uLlRFWFRCT1hfT1VUUFVULCAuLi5DQUxFTkRBUl9PVVRQVVRTXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdheC1lZGl0b3ItY29udGFpbmVyIGF4LWRyb3AtZG93bicgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhEYXRlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlRGF0ZVBpY2tlck1peGluIHtcclxuXHJcbiAgQFZpZXdDaGlsZChBWFBvcG92ZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcG9wb3ZlcjogQVhQb3BvdmVyQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKEFYQ2FsZW5kYXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgX2NhbGVuZGFyOiBBWENhbGVuZGFyQ29tcG9uZW50O1xyXG5cclxuICBfdGFyZ2V0OiBIVE1MRGl2RWxlbWVudDtcclxuICBkaXNwbGF5VGV4dDogc3RyaW5nO1xyXG4gIF9jYWxlbmRhclZhbHVlOiBEYXRlO1xyXG4gIF9jdXJzb3JQb3M6IG51bWJlciA9IDA7XHJcbiAgX2lzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX3BvcG92ZXJUaXRsZTogc3RyaW5nO1xyXG4gIF9wb3BvdmVyV2lkdGg6IG51bWJlcjtcclxuXHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZvcm1hdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIFxyXG4gIHByaXZhdGUgX2Zvcm1hdDogc3RyaW5nID0gJ1lZWVktTU0tZGQnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBmb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZm9ybWF0KHY6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2V0T3B0aW9uKHtcclxuICAgICAgbmFtZTogJ2Zvcm1hdCcsXHJcbiAgICAgIHZhbHVlOiB2XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyOnN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfcGxhdGZvcm06IEFYUGxhdGZvcm0sXHJcbiAgKSB7XHJcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgX2Nkcik7XHJcbiAgICB0aGlzLl90YXJnZXQgPSB0aGlzLl9nZXRIb3N0RWxlbWVudCgpO1xyXG4gICAgdGhpcy5faXNNb2JpbGUgPSB0aGlzLl9wbGF0Zm9ybS5pcygnTW9iaWxlJyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25WaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuICAgIHRoaXMuX3BvcG92ZXJUaXRsZSA9IHRoaXMucGxhY2Vob2xkZXIgfHwgQVhUcmFuc2xhdG9yLmdldCgnZGF0ZXBpY2tlci5wb3BvdmVyLnRpdGxlJylcclxuICAgIHRoaXMucG9wb3Zlci5vbk9wZW5lZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jYWxlbmRhci5mb2N1cygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBfaGFuZGxlQXJyb3dDbGlja0V2ZW50KGU6IEFYQ2xpY2tFdmVudCkge1xyXG4gICAgdGhpcy50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIF9vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZT86IGFueSwgbmV3VmFsdWU/OiBhbnkpIHtcclxuICAgIHRoaXMuZGlzcGxheVRleHQgPSBuZXdWYWx1ZSA/IEFYRGF0ZVRpbWUuY29udmVydChuZXdWYWx1ZSx0aGlzLnR5cGUpLmZvcm1hdCh0aGlzLl9mb3JtYXQpIDogbnVsbDtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG5cclxuICBfaGFuZGxlT25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgaWdub3JlID0gKCkgPT4ge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG51bXM6IHN0cmluZ1tdID0gQXJyYXkoMTApLmZpbGwoMCkubWFwKCh2LCBpKSA9PiBpLnRvU3RyaW5nKCkpO1xyXG4gICAgY29uc3QgY2hhcnM6IHN0cmluZ1tdID0gWydCYWNrc3BhY2UnLCAnQXJyb3dEb3duJywgJ0Fycm93VXAnLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnVGFiJywgJ0VudGVyJ107XHJcbiAgICBjb25zdCBpbnB1dCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KTtcclxuICAgIGNvbnN0IGtleSA9IChlLmtleSk7XHJcbiAgICBjb25zdCB2YWxTdHIgPSBpbnB1dC52YWx1ZTtcclxuICAgIGNvbnN0IHNTdGFydCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgY29uc3Qgc0VuZCA9IGlucHV0LnNlbGVjdGlvbkVuZDtcclxuICAgIGNvbnN0IGRhdGVWYWwgPSBuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlKTtcclxuICAgIC8vXHJcbiAgICBjb25zdCByZSA9IC9bYS16QS1aMC05XSsvaWc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IEFycmF5LmZyb20odGhpcy5mb3JtYXQubWF0Y2hBbGwocmUpKTtcclxuICAgIGNvbnN0IHdvcmQgPSB2YWxTdHIuc3Vic3RyaW5nKHNTdGFydCwgc0VuZCk7XHJcbiAgICBjb25zdCBwYXJ0ID0gcGFydHMuZmluZChjID0+IGMuaW5kZXggPj0gc1N0YXJ0KTtcclxuICAgIC8vXHJcbiAgICAvL1xyXG4gICAgaWYgKFsuLi5udW1zXS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgIGlmIChwYXJ0KSB7XHJcbiAgICAgICAgc3dpdGNoIChwYXJ0WzBdKSB7XHJcbiAgICAgICAgICBjYXNlICdkZCc6XHJcbiAgICAgICAgICBjYXNlICdERCc6XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IE1hdGgubWF4KDEsIE1hdGgubWluKDMxLCBOdW1iZXIod29yZCArIGUua2V5KSkpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZVZhbC5zZXQoJ2RheScsIG5ld1ZhbCkuZGF0ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtbSc6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAneXknOlxyXG4gICAgICAgICAgY2FzZSAnWVlZWSc6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFBhcnQoaW5wdXQsIHNTdGFydCk7XHJcbiAgICAgICAgfSwgTWF0aC5tYXgoMTAsIHRoaXMuZGVib3VuY2VUaW1lKSk7XHJcbiAgICAgICAgaWdub3JlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSB7XHJcbiAgICAgIGNvbnN0IG5leHQgPSBBcnJheS5mcm9tKHZhbFN0ci5zdWJzdHIoc0VuZCkubWF0Y2hBbGwocmUpKTtcclxuICAgICAgY29uc3QgcHJldiA9IEFycmF5LmZyb20odmFsU3RyLnN1YnN0cmluZygwLCBzU3RhcnQpLm1hdGNoQWxsKHJlKSk7XHJcbiAgICAgIGlnbm9yZSgpO1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRQYXJ0KGlucHV0LCAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IChzRW5kICsgKG5leHRbMF0/LmluZGV4IHx8IDApKSA6IChwcmV2W3ByZXYubGVuZ3RoIC0gMV0/LmluZGV4KSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgaWYgKGUuY3RybEtleSAmJiBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzaWduID0gZS5rZXkgPT09ICdBcnJvd1VwJyA/ICsxIDogLTE7XHJcbiAgICAgICAgaWYgKHBhcnQpIHtcclxuICAgICAgICAgIHN3aXRjaCAocGFydFswXSkge1xyXG4gICAgICAgICAgICBjYXNlICdkZCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ0REJzpcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZVZhbC5hZGQoJ2RheScsIHNpZ24pLmRhdGU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcclxuICAgICAgICAgICAgY2FzZSAnTU1NJzpcclxuICAgICAgICAgICAgY2FzZSAnTU1NTSc6XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGVWYWwuYWRkKCdtb250aCcsIHNpZ24pLmRhdGU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcclxuICAgICAgICAgICAgY2FzZSAnWVlZWSc6XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGVWYWwuYWRkKCd5ZWFyJywgc2lnbikuZGF0ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRQYXJ0KGlucHV0LCBzU3RhcnQpO1xyXG4gICAgICAgICAgfSwgTWF0aC5tYXgoMTAsIHRoaXMuZGVib3VuY2VUaW1lKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlnbm9yZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZS5rZXkgPT0gJ0JhY2tzcGFjZScpIHtcclxuICAgICAgaWYgKHRoaXMuYWxsb3dOdWxsKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWdub3JlKCk7XHJcbiAgICB9XHJcbiAgICAvLyBlbHNlIGlmIChudW1zLmluY2x1ZGVzKGtleSkpIHtcclxuXHJcbiAgICAvLyB9XHJcbiAgICAvLyBzdXBlci5fZW1pdE9uS2V5ZG93bkV2ZW50KGUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBfaGFuZGxlT25JbnB1dENsaWNrRXZlbnQoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk7XHJcbiAgICB0aGlzLl9oaWdobGlnaHRQYXJ0KGlucHV0KTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0UGFydChpbnB1dDogSFRNTElucHV0RWxlbWVudCwgcG9zPzogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IEFYU3RyaW5nVXRpbC5nZXRXb3JkQm91bmRzQXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgcG9zICE9IG51bGwgPyBwb3MgOiBpbnB1dC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcHJlZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPGRpdiBjbGFzcz1cImF4LWRyb3Bkb3duLWNvbnRlbnRcIj5cclxuICAgIDxpbnB1dCBjbGFzcz1cImF4LWlucHV0XCIgdHlwZT1cInRleHRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2NsYXNzLmF4LXN0YXRlLXJlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VGV4dFwiIChmb2N1cyk9XCJfZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCIgKG1vdXNldXApPVwiX2hhbmRsZU9uSW5wdXRDbGlja0V2ZW50KCRldmVudClcIlxyXG4gICAgICAgIChibHVyKT1cIl9lbWl0T25CbHVyRXZlbnQoJGV2ZW50KVwiIChrZXlkb3duKT1cIl9oYW5kbGVPbktleWRvd25FdmVudCgkZXZlbnQpXCI+XHJcbjwvZGl2PlxyXG48YXgtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt0YWJJbmRleF09XCItMVwiIGNvbG9yPVwibGlnaHRcIiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJfaGFuZGxlQXJyb3dDbGlja0V2ZW50KCRldmVudClcIj5cclxuICAgIDxheC1pY29uIGljb249XCJheC1pYyBheC1pYy1jaGV2cm9uIGF4LXRyYW5zZm9ybSBheC0tcm90YXRlLTkwXCI+PC9heC1pY29uPlxyXG48L2F4LWJ1dHRvbj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+XHJcbjwvbmctY29udGVudD5cclxuPGF4LXBvcG92ZXIgW3RhcmdldF09XCJfdGFyZ2V0XCIgW3Bvc2l0aW9uXT1cInBvc2l0aW9uXCIgW29wZW5UcmlnZ2VyXT1cIidtYW51YWwnXCIgW2Nsb3NlVHJpZ2dlcl09XCInY2xpY2tvdXQnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lIGF4LXctNzJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2lzTW9iaWxlXCIgY2xhc3M9XCJheC1vdmVybGF5LXBhbmUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuID57e3BsYWNlaG9sZGVyIHx8ICdDaG9vc2UgYSBkYXRlJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljIGF4LWljLWNsb3NlIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiIHRhYmluZGV4PVwiMVwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXgtY2FsZW5kYXIgI2NhbGVuZGFyIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFsodmFsdWUpXT1cInZhbHVlXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIiBbaG9saWRheURhdGVzXT1cImhvbGlkYXlEYXRlc1wiIFtkZXB0aF09XCJkZXB0aFwiIFt0eXBlXT1cInR5cGVcIj5cclxuICAgICAgICA8L2F4LWNhbGVuZGFyPlxyXG4gICAgPC9kaXY+XHJcbjwvYXgtcG9wb3Zlcj4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBR3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTVILE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUEyQixNQUFNLG1DQUFtQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBMkIsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQUdsRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FDaEMsMkJB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QUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsZUFBZSxDQUFDLFdBQ2xHLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLGdCQUFnQixDQUFDLG1CQUM1Rix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFOzBKQU1uRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFhaEQsWUFBWTtzQkFEWCxNQUFNO2dCQUtJLE1BQU07c0JBRGhCLEtBQUs7Z0JBYU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhQbGF0Zm9ybSwgQVhTdHJpbmdVdGlsLCBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT3V0cHV0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhDbGlja0V2ZW50LCBBWENvbXBvbmVudE9wdGlvbkNoYW5nZWQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgRFJPUERPV05fSU5QVVRTLCBEUk9QRE9XTl9PVVRQVVQsIF9Ecm9wZG93bkNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vZHJvcGRvd24tbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBJTlRFUkFDVElWRV9JTlBVVFMsIElOVEVSQUNUSVZFX09VVFBVVCwgX0ludGVyYWN0aXZlQ29tcG9uZW5ldE1peGluIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9pbnRlcmFjdGl2ZS1taXhpbi5jbGFzcyc7XHJcbmltcG9ydCB7IF9TaXphYmxlQ29tcG9uZW5ldE1peGluIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9zaXphYmxlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgVEVYVEJPWF9JTlBVVFMsIFRFWFRCT1hfT1VUUFVULCBfVGV4dGJveENvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vdGV4dGJveC1taXhpbi5jbGFzcyc7XHJcbmltcG9ydCB7IFZBTFVFX0lOUFVUUywgVkFMVUVfT1VUUFVULCBfVmFsdWVDb21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlL21peGluL3ZhbHVlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgQVhDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgQVhDYWxlbmRhckJhc2VDb21wb25lbnQsIEFYQ2FsZW5kYXJOYXZpZ2F0ZUV2ZW50LCBDQUxFTkRBUl9JTlBVVFMsIENBTEVOREFSX09VVFBVVFMgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jbGFzcyc7XHJcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBBWEJhc2VEYXRlUGlja2VyTWl4aW4gPVxyXG4gIF9JbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbihcclxuICAgIF9Ecm9wZG93bkNvbXBvbmVuZXRNaXhpbihcclxuICAgICAgX1ZhbHVlQ29tcG9uZW5ldE1peGluKFxyXG4gICAgICAgIEFYQ2FsZW5kYXJCYXNlQ29tcG9uZW50XHJcbiAgICAgIClcclxuICAgIClcclxuICApO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBpbnB1dHM6IFsuLi5EUk9QRE9XTl9JTlBVVFMsIC4uLklOVEVSQUNUSVZFX0lOUFVUUywgLi4uVkFMVUVfSU5QVVRTLCAuLi5URVhUQk9YX0lOUFVUUywgLi4uQ0FMRU5EQVJfSU5QVVRTXSxcclxuICBvdXRwdXRzOiBbLi4uRFJPUERPV05fT1VUUFVULCAuLi5JTlRFUkFDVElWRV9PVVRQVVQsIC4uLlZBTFVFX09VVFBVVCwgLi4uVEVYVEJPWF9PVVRQVVQsIC4uLkNBTEVOREFSX09VVFBVVFNdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgaG9zdDogeyBjbGFzczogJ2F4LWVkaXRvci1jb250YWluZXIgYXgtZHJvcC1kb3duJyB9LFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEFYRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURhdGVQaWNrZXJNaXhpbiB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoQVhQb3BvdmVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHBvcG92ZXI6IEFYUG9wb3ZlckNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChBWENhbGVuZGFyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NhbGVuZGFyOiBBWENhbGVuZGFyQ29tcG9uZW50O1xyXG5cclxuICBfdGFyZ2V0OiBIVE1MRGl2RWxlbWVudDtcclxuICBkaXNwbGF5VGV4dDogc3RyaW5nO1xyXG4gIF9jYWxlbmRhclZhbHVlOiBEYXRlO1xyXG4gIF9jdXJzb3JQb3M6IG51bWJlciA9IDA7XHJcbiAgX2lzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX3BvcG92ZXJUaXRsZTogc3RyaW5nO1xyXG4gIF9wb3BvdmVyV2lkdGg6IG51bWJlcjtcclxuXHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZvcm1hdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBwcml2YXRlIF9mb3JtYXQ6IHN0cmluZyA9ICdZWVlZLU1NLWRkJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0O1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGZvcm1hdCh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NldE9wdGlvbih7XHJcbiAgICAgIG5hbWU6ICdmb3JtYXQnLFxyXG4gICAgICB2YWx1ZTogdlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9wbGF0Zm9ybTogQVhQbGF0Zm9ybSxcclxuICApIHtcclxuICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICAgIHRoaXMuX3RhcmdldCA9IHRoaXMuX2dldEhvc3RFbGVtZW50KCk7XHJcbiAgICB0aGlzLl9pc01vYmlsZSA9IHRoaXMuX3BsYXRmb3JtLmlzKCdNb2JpbGUnKTtcclxuICB9XHJcblxyXG5cclxuICBvbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3BvdmVyVGl0bGUgPSB0aGlzLnBsYWNlaG9sZGVyIHx8IEFYVHJhbnNsYXRvci5nZXQoJ2RhdGVwaWNrZXIucG9wb3Zlci50aXRsZScpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVEaXNwbGF5VGV4dCgpIHtcclxuICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnZhbHVlID8gQVhEYXRlVGltZS5jb252ZXJ0KHRoaXMudmFsdWUsIHRoaXMudHlwZSkuZm9ybWF0KHRoaXMuX2Zvcm1hdCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2hhbmRsZVBvcG92ZXJPcGVuZWQoZSkge1xyXG4gICAgdGhpcy5fY2FsZW5kYXIubmF2VG8odGhpcy52YWx1ZSB8fCBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLHRoaXMudHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgX2hhbmRsZUFycm93Q2xpY2tFdmVudChlOiBBWENsaWNrRXZlbnQpIHtcclxuICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBfb25WYWx1ZUNoYW5nZWQob2xkVmFsdWU/OiBhbnksIG5ld1ZhbHVlPzogYW55KSB7XHJcbiAgICB0aGlzLl91cGRhdGVEaXNwbGF5VGV4dCgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgX29uT3B0aW9uQ2hhbmdlZChvcHRpb246IEFYQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCk6IHZvaWQge1xyXG4gICAgc3VwZXIuX29uT3B0aW9uQ2hhbmdlZChvcHRpb24pO1xyXG4gICAgaWYgKG9wdGlvbi5uYW1lID09ICd0eXBlJykge1xyXG4gICAgICB0aGlzLl91cGRhdGVEaXNwbGF5VGV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBpZ25vcmUgPSAoKSA9PiB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbnVtczogc3RyaW5nW10gPSBBcnJheSgxMCkuZmlsbCgwKS5tYXAoKHYsIGkpID0+IGkudG9TdHJpbmcoKSk7XHJcbiAgICBjb25zdCBjaGFyczogc3RyaW5nW10gPSBbJ0JhY2tzcGFjZScsICdBcnJvd0Rvd24nLCAnQXJyb3dVcCcsICdBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdUYWInLCAnRW50ZXInXTtcclxuICAgIGNvbnN0IGlucHV0ID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpO1xyXG4gICAgY29uc3Qga2V5ID0gKGUua2V5KTtcclxuICAgIGNvbnN0IHZhbFN0ciA9IGlucHV0LnZhbHVlO1xyXG4gICAgY29uc3Qgc1N0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCBzRW5kID0gaW5wdXQuc2VsZWN0aW9uRW5kO1xyXG4gICAgY29uc3QgZGF0ZVZhbCA9IG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUpO1xyXG4gICAgLy9cclxuICAgIGNvbnN0IHJlID0gL1thLXpBLVowLTldKy9pZztcclxuICAgIGNvbnN0IHBhcnRzID0gQXJyYXkuZnJvbSh0aGlzLmZvcm1hdC5tYXRjaEFsbChyZSkpO1xyXG4gICAgY29uc3Qgd29yZCA9IHZhbFN0ci5zdWJzdHJpbmcoc1N0YXJ0LCBzRW5kKTtcclxuICAgIGNvbnN0IHBhcnQgPSBwYXJ0cy5maW5kKGMgPT4gYy5pbmRleCA+PSBzU3RhcnQpO1xyXG4gICAgLy9cclxuICAgIC8vXHJcbiAgICBpZiAoWy4uLm51bXNdLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgaWYgKHBhcnQpIHtcclxuICAgICAgICBzd2l0Y2ggKHBhcnRbMF0pIHtcclxuICAgICAgICAgIGNhc2UgJ2RkJzpcclxuICAgICAgICAgIGNhc2UgJ0REJzpcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oMzEsIE51bWJlcih3b3JkICsgZS5rZXkpKSk7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlVmFsLnNldCgnZGF5JywgbmV3VmFsKS5kYXRlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21tJzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICd5eSc6XHJcbiAgICAgICAgICBjYXNlICdZWVlZJzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UGFydChpbnB1dCwgc1N0YXJ0KTtcclxuICAgICAgICB9LCBNYXRoLm1heCgxMCwgdGhpcy5kZWJvdW5jZVRpbWUpKTtcclxuICAgICAgICBpZ25vcmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcclxuICAgICAgY29uc3QgbmV4dCA9IEFycmF5LmZyb20odmFsU3RyLnN1YnN0cihzRW5kKS5tYXRjaEFsbChyZSkpO1xyXG4gICAgICBjb25zdCBwcmV2ID0gQXJyYXkuZnJvbSh2YWxTdHIuc3Vic3RyaW5nKDAsIHNTdGFydCkubWF0Y2hBbGwocmUpKTtcclxuICAgICAgaWdub3JlKCk7XHJcbiAgICAgIHRoaXMuX2hpZ2hsaWdodFBhcnQoaW5wdXQsIChlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gKHNFbmQgKyAobmV4dFswXT8uaW5kZXggfHwgMCkpIDogKHByZXZbcHJldi5sZW5ndGggLSAxXT8uaW5kZXgpKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICBpZiAoZS5jdHJsS2V5ICYmIGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNpZ24gPSBlLmtleSA9PT0gJ0Fycm93VXAnID8gKzEgOiAtMTtcclxuICAgICAgICBpZiAocGFydCkge1xyXG4gICAgICAgICAgc3dpdGNoIChwYXJ0WzBdKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcclxuICAgICAgICAgICAgY2FzZSAnREQnOlxyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlVmFsLmFkZCgnZGF5Jywgc2lnbikuZGF0ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnbW0nOlxyXG4gICAgICAgICAgICBjYXNlICdNTU0nOlxyXG4gICAgICAgICAgICBjYXNlICdNTU1NJzpcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZVZhbC5hZGQoJ21vbnRoJywgc2lnbikuZGF0ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAneXknOlxyXG4gICAgICAgICAgICBjYXNlICdZWVlZJzpcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZVZhbC5hZGQoJ3llYXInLCBzaWduKS5kYXRlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFBhcnQoaW5wdXQsIHNTdGFydCk7XHJcbiAgICAgICAgICB9LCBNYXRoLm1heCgxMCwgdGhpcy5kZWJvdW5jZVRpbWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWdub3JlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChlLmtleSA9PSAnQmFja3NwYWNlJykge1xyXG4gICAgICBpZiAodGhpcy5hbGxvd051bGwpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBpZ25vcmUoKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKG51bXMuaW5jbHVkZXMoa2V5KSkge1xyXG5cclxuICAgIC8vIH1cclxuICAgIC8vIHN1cGVyLl9lbWl0T25LZXlkb3duRXZlbnQoZSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIF9oYW5kbGVPbklucHV0Q2xpY2tFdmVudChlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KTtcclxuICAgIHRoaXMuX2hpZ2hsaWdodFBhcnQoaW5wdXQpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIF9oYW5kbGVPbk5hdmlnYXRlKGU6IEFYQ2FsZW5kYXJOYXZpZ2F0ZUV2ZW50KSB7XHJcbiAgICB0aGlzLm9uTmF2aWdhdGUuZW1pdChlKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9oaWdobGlnaHRQYXJ0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50LCBwb3M/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gQVhTdHJpbmdVdGlsLmdldFdvcmRCb3VuZHNBdFBvc2l0aW9uKGlucHV0LnZhbHVlLCBwb3MgIT0gbnVsbCA/IHBvcyA6IGlucHV0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj5cclxuPC9uZy1jb250ZW50PlxyXG48ZGl2IGNsYXNzPVwiYXgtZHJvcGRvd24tY29udGVudFwiPlxyXG4gICAgPGlucHV0IGNsYXNzPVwiYXgtaW5wdXRcIiB0eXBlPVwidGV4dFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlUZXh0XCIgKGZvY3VzKT1cIl9lbWl0T25Gb2N1c0V2ZW50KCRldmVudClcIiAobW91c2V1cCk9XCJfaGFuZGxlT25JbnB1dENsaWNrRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwiX2VtaXRPbkJsdXJFdmVudCgkZXZlbnQpXCIgKGtleWRvd24pPVwiX2hhbmRsZU9uS2V5ZG93bkV2ZW50KCRldmVudClcIj5cclxuPC9kaXY+XHJcbjxheC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3RhYkluZGV4XT1cIi0xXCIgY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIl9oYW5kbGVBcnJvd0NsaWNrRXZlbnQoJGV2ZW50KVwiPlxyXG4gICAgPGF4LWljb24gaWNvbj1cImF4LWljIGF4LWljLWNoZXZyb24gYXgtdHJhbnNmb3JtIGF4LS1yb3RhdGUtOTBcIj48L2F4LWljb24+XHJcbjwvYXgtYnV0dG9uPlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj5cclxuPC9uZy1jb250ZW50PlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj5cclxuPC9uZy1jb250ZW50PlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJheC1jYWxlbmRhci1vcHRpb25zXCI+XHJcblxyXG48L25nLWNvbnRlbnQ+XHJcbjxheC1wb3BvdmVyIFt0YXJnZXRdPVwiX3RhcmdldFwiIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiIFtvcGVuVHJpZ2dlcl09XCInbWFudWFsJ1wiIFtjbG9zZVRyaWdnZXJdPVwiJ2NsaWNrb3V0J1wiIChvbk9wZW5lZCk9XCJfaGFuZGxlUG9wb3Zlck9wZW5lZCgkZXZlbnQpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lIGF4LXctODBcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2lzTW9iaWxlXCIgY2xhc3M9XCJheC1vdmVybGF5LXBhbmUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuID57e3BsYWNlaG9sZGVyIHx8ICdDaG9vc2UgYSBkYXRlJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljIGF4LWljLWNsb3NlIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiIHRhYmluZGV4PVwiMVwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXgtY2FsZW5kYXIgI2NhbGVuZGFyIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFxyXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJ2YWx1ZVwiIFxyXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiIFxyXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIiBcclxuICAgICAgICAgICAgW2hvbGlkYXlEYXRlc109XCJob2xpZGF5RGF0ZXNcIiBcclxuICAgICAgICAgICAgW2RlcHRoXT1cImRlcHRoXCIgXHJcbiAgICAgICAgICAgIChvbk5hdmlnYXRlKT1cIl9oYW5kbGVPbk5hdmlnYXRlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCI+XHJcbiAgICAgICAgPC9heC1jYWxlbmRhcj5cclxuICAgIDwvZGl2PlxyXG48L2F4LXBvcG92ZXI+Il19