@ng-matero/extensions 12.9.2 → 12.10.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.
Files changed (53) hide show
  1. package/bundles/mtxCore.umd.js.map +1 -1
  2. package/bundles/mtxDatetimepicker.umd.js +5 -0
  3. package/bundles/mtxDatetimepicker.umd.js.map +1 -1
  4. package/bundles/mtxGrid.umd.js +24 -21
  5. package/bundles/mtxGrid.umd.js.map +1 -1
  6. package/bundles/mtxPopover.umd.js +997 -803
  7. package/bundles/mtxPopover.umd.js.map +1 -1
  8. package/bundles/mtxSelect.umd.js +237 -156
  9. package/bundles/mtxSelect.umd.js.map +1 -1
  10. package/core/datetime/datetime-formats.d.ts +2 -0
  11. package/esm2015/core/datetime/datetime-formats.js +1 -1
  12. package/esm2015/datetimepicker/datetimepicker-input.js +6 -1
  13. package/esm2015/grid/cell.component.js +7 -4
  14. package/esm2015/grid/column-menu.component.js +10 -14
  15. package/esm2015/grid/grid.component.js +10 -6
  16. package/esm2015/popover/popover-animations.js +10 -13
  17. package/esm2015/popover/popover-content.js +99 -0
  18. package/esm2015/popover/popover-interfaces.js +1 -1
  19. package/esm2015/popover/popover-module.js +7 -5
  20. package/esm2015/popover/popover-target.js +3 -3
  21. package/esm2015/popover/popover-trigger.js +210 -172
  22. package/esm2015/popover/popover-types.js +1 -1
  23. package/esm2015/popover/popover.js +173 -125
  24. package/esm2015/popover/public-api.js +2 -1
  25. package/esm2015/select/option.component.js +4 -6
  26. package/esm2015/select/select.component.js +111 -31
  27. package/fesm2015/mtxCore.js.map +1 -1
  28. package/fesm2015/mtxDatetimepicker.js +5 -0
  29. package/fesm2015/mtxDatetimepicker.js.map +1 -1
  30. package/fesm2015/mtxGrid.js +24 -21
  31. package/fesm2015/mtxGrid.js.map +1 -1
  32. package/fesm2015/mtxPopover.js +526 -351
  33. package/fesm2015/mtxPopover.js.map +1 -1
  34. package/fesm2015/mtxSelect.js +169 -92
  35. package/fesm2015/mtxSelect.js.map +1 -1
  36. package/grid/cell.component.d.ts +4 -2
  37. package/grid/column-menu.component.d.ts +3 -5
  38. package/grid/grid.component.d.ts +6 -4
  39. package/grid/mtxGrid.metadata.json +1 -1
  40. package/package.json +1 -1
  41. package/popover/mtxPopover.metadata.json +1 -1
  42. package/popover/popover-animations.d.ts +1 -1
  43. package/popover/popover-content.d.ts +38 -0
  44. package/popover/popover-interfaces.d.ts +37 -31
  45. package/popover/popover-target.d.ts +2 -2
  46. package/popover/popover-trigger.d.ts +65 -60
  47. package/popover/popover-types.d.ts +6 -1
  48. package/popover/popover.d.ts +97 -69
  49. package/popover/popover.scss +2 -0
  50. package/popover/public-api.d.ts +1 -0
  51. package/select/mtxSelect.metadata.json +1 -1
  52. package/select/option.component.d.ts +7 -6
  53. package/select/select.component.d.ts +59 -20
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wb3BvdmVyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBNdHhQb3BvdmVyUG9zaXRpb25TdGFydCA9ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2JlZm9yZScgfCAnYWZ0ZXInO1xuXG5leHBvcnQgdHlwZSBNdHhQb3BvdmVyUG9zaXRpb25FbmQgPSBNdHhQb3BvdmVyUG9zaXRpb25TdGFydCB8ICdjZW50ZXInO1xuXG5leHBvcnQgdHlwZSBNdHhQb3BvdmVyUG9zaXRpb24gPSBbTXR4UG9wb3ZlclBvc2l0aW9uU3RhcnQsIE10eFBvcG92ZXJQb3NpdGlvbkVuZF07XG5cbmV4cG9ydCB0eXBlIE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQgPSAnY2xpY2snIHwgJ2hvdmVyJyB8ICdub25lJztcblxuZXhwb3J0IHR5cGUgTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5ID0gJ25vb3AnIHwgJ2Nsb3NlJyB8ICdibG9jaycgfCAncmVwb3NpdGlvbic7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wb3BvdmVyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRmlyc3QgdmFsdWUgb2YgcG9wb3ZlcidzIHBvc2l0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTXR4UG9wb3ZlclBvc2l0aW9uU3RhcnQgPSAnYWJvdmUnIHwgJ2JlbG93JyB8ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuLyoqIFNlY29uZCB2YWx1ZSBvZiBwb3BvdmVyJ3MgcG9zaXRpb24uICovXG5leHBvcnQgdHlwZSBNdHhQb3BvdmVyUG9zaXRpb25FbmQgPSBNdHhQb3BvdmVyUG9zaXRpb25TdGFydCB8ICdjZW50ZXInO1xuXG4vKiogUG9wb3ZlcidzIHBvc2l0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTXR4UG9wb3ZlclBvc2l0aW9uID0gW010eFBvcG92ZXJQb3NpdGlvblN0YXJ0LCBNdHhQb3BvdmVyUG9zaXRpb25FbmRdO1xuXG4vKiogUG9wb3ZlcidzIHRyaWdnZXIgZXZlbnQuICovXG5leHBvcnQgdHlwZSBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50ID0gJ2NsaWNrJyB8ICdob3ZlcicgfCAnbm9uZSc7XG5cbi8qKiBSZWFzb24gd2h5IHRoZSBwb3BvdmVyIHdhcyBjbG9zZWQuICovXG5leHBvcnQgdHlwZSBQb3BvdmVyQ2xvc2VSZWFzb24gPSB2b2lkIHwgJ2NsaWNrJyB8ICdrZXlkb3duJyB8ICd0YWInO1xuIl19
@@ -1,166 +1,187 @@
1
- import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, ElementRef, ChangeDetectionStrategy, HostBinding, NgZone, Optional, } from '@angular/core';
2
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
- import { ESCAPE } from '@angular/cdk/keycodes';
4
- import { Directionality } from '@angular/cdk/bidi';
5
- import { throwMtxPopoverInvalidPositionStart, throwMtxPopoverInvalidPositionEnd, } from './popover-errors';
2
+ import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
3
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, Output, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
4
+ import { Subject } from 'rxjs';
6
5
  import { transformPopover } from './popover-animations';
6
+ import { MtxPopoverContent, MTX_POPOVER_CONTENT } from './popover-content';
7
+ import { throwMtxPopoverInvalidPositionEnd, throwMtxPopoverInvalidPositionStart, } from './popover-errors';
8
+ /** Injection token to be used to override the default options for `mtx-popover`. */
9
+ export const MTX_POPOVER_DEFAULT_OPTIONS = new InjectionToken('mtx-popover-default-options', {
10
+ providedIn: 'root',
11
+ factory: MTX_POPOVER_DEFAULT_OPTIONS_FACTORY,
12
+ });
13
+ /** @docs-private */
14
+ export function MTX_POPOVER_DEFAULT_OPTIONS_FACTORY() {
15
+ return {
16
+ backdropClass: 'cdk-overlay-transparent-backdrop',
17
+ };
18
+ }
19
+ let popoverPanelUid = 0;
7
20
  export class MtxPopover {
8
- constructor(_dir, _elementRef, zone) {
9
- this._dir = _dir;
21
+ constructor(_elementRef, _ngZone, _defaultOptions) {
22
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
10
23
  this._elementRef = _elementRef;
11
- this.zone = zone;
12
- this.role = 'dialog';
13
- /** Settings for popover, view setters and getters for more detail */
14
- this._position = ['below', 'after'];
15
- this._triggerEvent = 'hover';
16
- this._scrollStrategy = 'reposition';
17
- this._enterDelay = 100;
18
- this._leaveDelay = 100;
19
- this._panelOffsetX = 0;
20
- this._panelOffsetY = 0;
21
- this._closeOnPanelClick = false;
22
- this._closeOnBackdropClick = true;
23
- this._disableAnimation = false;
24
- this._focusTrapEnabled = true;
25
- this._focusTrapAutoCaptureEnabled = true;
26
- this._arrowOffsetX = 20;
27
- this._arrowOffsetY = 20;
28
- this._arrowWidth = 16;
29
- this._arrowHeight = 16;
30
- /** Config object to be passed into the popover's ngClass */
24
+ this._ngZone = _ngZone;
25
+ this._defaultOptions = _defaultOptions;
26
+ this._triggerEvent = (_a = this._defaultOptions.triggerEvent) !== null && _a !== void 0 ? _a : 'hover';
27
+ this._enterDelay = (_b = this._defaultOptions.enterDelay) !== null && _b !== void 0 ? _b : 100;
28
+ this._leaveDelay = (_c = this._defaultOptions.leaveDelay) !== null && _c !== void 0 ? _c : 100;
29
+ this._position = (_d = this._defaultOptions.position) !== null && _d !== void 0 ? _d : ['below', 'after'];
30
+ this._panelOffsetX = (_e = this._defaultOptions.xOffset) !== null && _e !== void 0 ? _e : 0;
31
+ this._panelOffsetY = (_f = this._defaultOptions.yOffset) !== null && _f !== void 0 ? _f : 0;
32
+ this._arrowWidth = (_g = this._defaultOptions.arrowWidth) !== null && _g !== void 0 ? _g : 16;
33
+ this._arrowHeight = (_h = this._defaultOptions.arrowHeight) !== null && _h !== void 0 ? _h : 16;
34
+ this._arrowOffsetX = (_j = this._defaultOptions.arrowOffsetX) !== null && _j !== void 0 ? _j : 20;
35
+ this._arrowOffsetY = (_k = this._defaultOptions.arrowOffsetY) !== null && _k !== void 0 ? _k : 20;
36
+ this._closeOnPanelClick = (_l = this._defaultOptions.closeOnPanelClick) !== null && _l !== void 0 ? _l : false;
37
+ this._closeOnBackdropClick = (_m = this._defaultOptions.closeOnBackdropClick) !== null && _m !== void 0 ? _m : true;
38
+ this._focusTrapEnabled = (_o = this._defaultOptions.focusTrapEnabled) !== null && _o !== void 0 ? _o : false;
39
+ this._focusTrapAutoCaptureEnabled = (_p = this._defaultOptions.focusTrapAutoCaptureEnabled) !== null && _p !== void 0 ? _p : false;
40
+ this._hasBackdrop = this._defaultOptions.hasBackdrop;
41
+ this._elevation = (_q = this._defaultOptions.elevation) !== null && _q !== void 0 ? _q : 8;
42
+ this._elevationPrefix = 'mat-elevation-z';
43
+ /** Config object to be passed into the popover's ngClass. */
31
44
  this._classList = {};
32
- /** Whether popover's `targetElement` is defined */
33
- this.containerPositioning = false;
45
+ /** Current state of the panel animation. */
46
+ this._panelAnimationState = 'void';
47
+ /** Emits whenever an animation on the popover completes. */
48
+ this._animationDone = new Subject();
49
+ /** Whether the popover is animating. */
50
+ this._isAnimating = false;
34
51
  /** Closing disabled on popover */
35
52
  this.closeDisabled = false;
36
- /** Emits the current animation state whenever it changes. */
37
- this._onAnimationStateChange = new EventEmitter();
53
+ /** Config object to be passed into the popover's arrow ngStyle */
54
+ this.arrowStyles = null;
55
+ /** Class or list of classes to be added to the overlay panel. */
56
+ this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';
57
+ /** Class to be added to the backdrop element. */
58
+ this.backdropClass = this._defaultOptions.backdropClass;
38
59
  /** Event emitted when the popover is closed. */
39
60
  this.closed = new EventEmitter();
40
- this.setPositionClasses();
41
- }
42
- /** Position of the popover. */
43
- get position() {
44
- return this._position;
45
- }
46
- set position(value) {
47
- if (!['before', 'after', 'above', 'below'].includes(value[0])) {
48
- throwMtxPopoverInvalidPositionStart();
49
- }
50
- if (!['before', 'after', 'above', 'below', 'center'].includes(value[1])) {
51
- throwMtxPopoverInvalidPositionEnd();
52
- }
53
- this._position = value;
54
- this.setPositionClasses();
61
+ this.panelId = `mtx-popover-panel-${popoverPanelUid++}`;
55
62
  }
56
- /** Popover trigger event */
63
+ /** Popover's trigger event. */
57
64
  get triggerEvent() {
58
65
  return this._triggerEvent;
59
66
  }
60
67
  set triggerEvent(value) {
61
68
  this._triggerEvent = value;
62
69
  }
63
- /** Popover scroll strategy */
64
- get scrollStrategy() {
65
- return this._scrollStrategy;
66
- }
67
- set scrollStrategy(value) {
68
- this._scrollStrategy = value;
69
- }
70
- /** Popover enter delay */
70
+ /** Popover's enter delay. */
71
71
  get enterDelay() {
72
72
  return this._enterDelay;
73
73
  }
74
74
  set enterDelay(value) {
75
75
  this._enterDelay = value;
76
76
  }
77
- /** Popover leave delay */
77
+ /** Popover's leave delay. */
78
78
  get leaveDelay() {
79
79
  return this._leaveDelay;
80
80
  }
81
81
  set leaveDelay(value) {
82
82
  this._leaveDelay = value;
83
83
  }
84
- /** Popover target offset x */
84
+ /** Popover's position. */
85
+ get position() {
86
+ return this._position;
87
+ }
88
+ set position(value) {
89
+ if (!['before', 'after', 'above', 'below'].includes(value[0])) {
90
+ throwMtxPopoverInvalidPositionStart();
91
+ }
92
+ if (!['before', 'after', 'above', 'below', 'center'].includes(value[1])) {
93
+ throwMtxPopoverInvalidPositionEnd();
94
+ }
95
+ this._position = value;
96
+ this.setPositionClasses();
97
+ }
98
+ /** Popover-panel's X offset. */
85
99
  get xOffset() {
86
100
  return this._panelOffsetX;
87
101
  }
88
102
  set xOffset(value) {
89
103
  this._panelOffsetX = value;
90
104
  }
91
- /** Popover target offset y */
105
+ /** Popover-panel's Y offset. */
92
106
  get yOffset() {
93
107
  return this._panelOffsetY;
94
108
  }
95
109
  set yOffset(value) {
96
110
  this._panelOffsetY = value;
97
111
  }
98
- /** Popover arrow offset x */
99
- get arrowOffsetX() {
100
- return this._arrowOffsetX;
101
- }
102
- set arrowOffsetX(value) {
103
- this._arrowOffsetX = value;
104
- }
105
- /** Popover arrow offset y */
106
- get arrowOffsetY() {
107
- return this._arrowOffsetY;
108
- }
109
- set arrowOffsetY(value) {
110
- this._arrowOffsetY = value;
111
- }
112
- /** Popover arrow width */
112
+ /** Popover-arrow's width. */
113
113
  get arrowWidth() {
114
114
  return this._arrowWidth;
115
115
  }
116
116
  set arrowWidth(value) {
117
117
  this._arrowWidth = value;
118
118
  }
119
- /** Popover arrow height */
119
+ /** Popover-arrow's height. */
120
120
  get arrowHeight() {
121
121
  return this._arrowHeight;
122
122
  }
123
123
  set arrowHeight(value) {
124
124
  this._arrowHeight = value;
125
125
  }
126
- /** Popover close on container click */
126
+ /** Popover-arrow's X offset. */
127
+ get arrowOffsetX() {
128
+ return this._arrowOffsetX;
129
+ }
130
+ set arrowOffsetX(value) {
131
+ this._arrowOffsetX = value;
132
+ }
133
+ /** Popover-arrow's Y offset. */
134
+ get arrowOffsetY() {
135
+ return this._arrowOffsetY;
136
+ }
137
+ set arrowOffsetY(value) {
138
+ this._arrowOffsetY = value;
139
+ }
140
+ /** Whether popover can be closed when click the popover-panel. */
127
141
  get closeOnPanelClick() {
128
142
  return this._closeOnPanelClick;
129
143
  }
130
144
  set closeOnPanelClick(value) {
131
145
  this._closeOnPanelClick = coerceBooleanProperty(value);
132
146
  }
133
- /** Popover close on backdrop click */
147
+ /** Whether popover can be closed when click the backdrop. */
134
148
  get closeOnBackdropClick() {
135
149
  return this._closeOnBackdropClick;
136
150
  }
137
151
  set closeOnBackdropClick(value) {
138
152
  this._closeOnBackdropClick = coerceBooleanProperty(value);
139
153
  }
140
- /** Disable animations of popover and all child elements */
141
- get disableAnimation() {
142
- return this._disableAnimation;
143
- }
144
- set disableAnimation(value) {
145
- this._disableAnimation = coerceBooleanProperty(value);
146
- }
147
- /** Popover focus trap using cdkTrapFocus */
154
+ /** Whether enable focus trap using `cdkTrapFocus`. */
148
155
  get focusTrapEnabled() {
149
156
  return this._focusTrapEnabled;
150
157
  }
151
158
  set focusTrapEnabled(value) {
152
159
  this._focusTrapEnabled = coerceBooleanProperty(value);
153
160
  }
154
- /** Popover focus trap auto capture using cdkTrapFocusAutoCapture */
161
+ /** Whether enable focus trap auto capture using `cdkTrapFocusAutoCapture`. */
155
162
  get focusTrapAutoCaptureEnabled() {
156
163
  return this._focusTrapAutoCaptureEnabled;
157
164
  }
158
165
  set focusTrapAutoCaptureEnabled(value) {
159
166
  this._focusTrapAutoCaptureEnabled = coerceBooleanProperty(value);
160
167
  }
168
+ /** Whether the popover has a backdrop. It will always be false if the trigger event is hover. */
169
+ get hasBackdrop() {
170
+ return this._hasBackdrop;
171
+ }
172
+ set hasBackdrop(value) {
173
+ this._hasBackdrop = coerceBooleanProperty(value);
174
+ }
175
+ /** Popover-panel's elevation (0~24). */
176
+ get elevation() {
177
+ return Math.max(0, Math.min(Math.round(this._elevation), 24));
178
+ }
179
+ set elevation(value) {
180
+ this._elevation = value;
181
+ }
161
182
  /**
162
183
  * This method takes classes set on the host md-popover element and applies them on the
163
- * popover template that displays in the overlay container. Otherwise, it's difficult
184
+ * popover template that displays in the overlay container. Otherwise, it's difficult
164
185
  * to style the containing popover from outside the component.
165
186
  * @param classes list of class names
166
187
  */
@@ -176,7 +197,7 @@ export class MtxPopover {
176
197
  }
177
198
  /**
178
199
  * This method takes classes set on the host md-popover element and applies them on the
179
- * popover template that displays in the overlay container. Otherwise, it's difficult
200
+ * popover template that displays in the overlay container. Otherwise, it's difficult
180
201
  * to style the containing popover from outside the component.
181
202
  * @deprecated Use `panelClass` instead.
182
203
  * @breaking-change 8.0.0
@@ -187,47 +208,46 @@ export class MtxPopover {
187
208
  set classList(classes) {
188
209
  this.panelClass = classes;
189
210
  }
211
+ ngOnInit() {
212
+ this.setPositionClasses();
213
+ }
190
214
  ngOnDestroy() {
191
- this._emitCloseEvent();
192
215
  this.closed.complete();
193
216
  }
194
217
  /** Handle a keyboard event from the popover, delegating to the appropriate action. */
195
218
  _handleKeydown(event) {
196
- switch (event.keyCode) {
219
+ const keyCode = event.keyCode;
220
+ switch (keyCode) {
197
221
  case ESCAPE:
198
- this._emitCloseEvent();
199
- return;
222
+ if (!hasModifierKey(event)) {
223
+ event.preventDefault();
224
+ this.closed.emit('keydown');
225
+ }
226
+ break;
200
227
  }
201
228
  }
202
- /**
203
- * This emits a close event to which the trigger is subscribed. When emitted, the
204
- * trigger will close the popover.
205
- */
206
- _emitCloseEvent() {
207
- this.closed.emit();
208
- }
209
- /** Close popover on click if closeOnPanelClick is true */
210
- onClick() {
229
+ /** Close popover on click if `closeOnPanelClick` is true. */
230
+ _handleClick() {
211
231
  if (this.closeOnPanelClick) {
212
- this._emitCloseEvent();
232
+ this.closed.emit('click');
213
233
  }
214
234
  }
215
- /** Disables close of popover when leaving trigger element and mouse over the popover */
216
- onMouseOver() {
235
+ /** Disables close of popover when leaving trigger element and mouse over the popover. */
236
+ _handleMouseOver() {
217
237
  if (this.triggerEvent === 'hover') {
218
238
  this.closeDisabled = true;
219
239
  }
220
240
  }
221
- /** Enables close of popover when mouse leaving popover element */
222
- onMouseLeave() {
241
+ /** Enables close of popover when mouse leaving popover element. */
242
+ _handleMouseLeave() {
223
243
  if (this.triggerEvent === 'hover') {
224
244
  setTimeout(() => {
225
245
  this.closeDisabled = false;
226
- this._emitCloseEvent();
246
+ this.closed.emit();
227
247
  }, this.leaveDelay);
228
248
  }
229
249
  }
230
- /** Sets the current styles for the popover to allow for dynamically changing settings */
250
+ /** Sets the current styles for the popover to allow for dynamically changing settings. */
231
251
  setCurrentStyles(pos = this.position) {
232
252
  const left = pos[1] === 'after'
233
253
  ? `${this.arrowOffsetX - this.arrowWidth / 2}px`
@@ -241,16 +261,13 @@ export class MtxPopover {
241
261
  ? `calc(50% - ${this.arrowHeight / 2}px)`
242
262
  : '';
243
263
  const top = pos[1] === 'below' ? `${this.arrowOffsetY - this.arrowHeight / 2}px` : '';
244
- this.popoverArrowStyles =
264
+ this.arrowStyles =
245
265
  pos[0] === 'above' || pos[0] === 'below'
246
266
  ? {
247
- left: this._dir.value === 'ltr' ? left : right,
248
- right: this._dir.value === 'ltr' ? right : left,
267
+ left: this.direction === 'ltr' ? left : right,
268
+ right: this.direction === 'ltr' ? right : left,
249
269
  }
250
- : {
251
- top,
252
- bottom,
253
- };
270
+ : { top, bottom };
254
271
  }
255
272
  /**
256
273
  * It's necessary to set position-based classes to ensure the popover panel animation
@@ -270,17 +287,44 @@ export class MtxPopover {
270
287
  this._classList['mtx-popover-below-center'] = pos[0] === 'below' && pos[1] === 'center';
271
288
  this._classList['mtx-popover-below-after'] = pos[0] === 'below' && pos[1] === 'after';
272
289
  }
290
+ /** Sets the popover-panel's elevation. */
291
+ setElevation() {
292
+ const newElevation = `${this._elevationPrefix}${this.elevation}`;
293
+ if (this._previousElevation) {
294
+ this._classList[this._previousElevation] = false;
295
+ }
296
+ this._classList[newElevation] = true;
297
+ this._previousElevation = newElevation;
298
+ }
299
+ /** Starts the enter animation. */
300
+ _startAnimation() {
301
+ // @breaking-change 8.0.0 Combine with _resetAnimation.
302
+ this._panelAnimationState = 'enter';
303
+ }
304
+ /** Resets the panel animation to its initial state. */
305
+ _resetAnimation() {
306
+ // @breaking-change 8.0.0 Combine with _startAnimation.
307
+ this._panelAnimationState = 'void';
308
+ }
309
+ /** Callback that is invoked when the panel animation completes. */
310
+ _onAnimationDone(event) {
311
+ this._animationDone.next(event);
312
+ this._isAnimating = false;
313
+ }
314
+ _onAnimationStart(event) {
315
+ this._isAnimating = true;
316
+ }
273
317
  }
274
318
  /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
275
319
  MtxPopover.decorators = [
276
320
  { type: Component, args: [{
277
321
  selector: 'mtx-popover',
278
- template: "<ng-template>\r\n <div class=\"mtx-popover-panel mat-elevation-z8\" role=\"dialog\"\r\n [ngClass]=\"_classList\"\r\n [ngStyle]=\"popoverPanelStyles\"\r\n (keydown)=\"_handleKeydown($event)\"\r\n (click)=\"onClick()\"\r\n (mouseover)=\"onMouseOver()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [@.disabled]=\"disableAnimation\"\r\n [@transformPopover]=\"'enter'\">\r\n <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"mtx-popover-content\"\r\n [ngStyle]=\"popoverContentStyles\"\r\n [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
322
+ template: "<ng-template>\r\n <div class=\"mtx-popover-panel\"\r\n [id]=\"panelId\"\r\n [ngClass]=\"_classList\"\r\n (keydown)=\"_handleKeydown($event)\"\r\n (click)=\"_handleClick()\"\r\n (mouseover)=\"_handleMouseOver()\"\r\n (mouseleave)=\"_handleMouseLeave()\"\r\n [@transformPopover]=\"_panelAnimationState\"\r\n (@transformPopover.start)=\"_onAnimationStart($event)\"\r\n (@transformPopover.done)=\"_onAnimationDone($event)\"\r\n tabindex=\"-1\"\r\n role=\"dialog\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\r\n [attr.aria-describedby]=\"ariaDescribedby || null\"\r\n [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <div class=\"mtx-popover-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"arrowStyles\"></div>\r\n </div>\r\n</ng-template>\r\n",
279
323
  changeDetection: ChangeDetectionStrategy.OnPush,
280
324
  encapsulation: ViewEncapsulation.None,
281
325
  animations: [transformPopover],
282
326
  exportAs: 'mtxPopover',
283
- styles: [".mtx-popover-panel{max-height:calc(100vh - 48px);padding:8px;border-radius:4px;font-size:16px}.mtx-popover-panel[class*=mtx-popover-below]{margin-top:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-above]{margin-bottom:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.mtx-popover-direction-arrow{position:absolute}.mtx-popover-direction-arrow:before,.mtx-popover-direction-arrow:after{position:absolute;display:inline-block;content:\"\";border-width:.5em;border-style:solid}.mtx-popover-direction-arrow:after{border-width:calc(.5em - 1px)}[class*=mtx-popover-below] .mtx-popover-direction-arrow,[class*=mtx-popover-above] .mtx-popover-direction-arrow{width:1em}[class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-above] .mtx-popover-direction-arrow:after{right:1px;left:auto}[class*=mtx-popover-below] .mtx-popover-direction-arrow{top:0}[class*=mtx-popover-below] .mtx-popover-direction-arrow:before,[class*=mtx-popover-below] .mtx-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow{bottom:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow:before,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow,[class*=mtx-popover-after] .mtx-popover-direction-arrow{height:1em}[class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{top:1px}[class*=mtx-popover-before] .mtx-popover-direction-arrow{right:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=mtx-popover-after] .mtx-popover-direction-arrow{left:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"]
327
+ styles: [".mtx-popover-panel{position:relative;max-height:calc(100vh - 48px);padding:8px;border-radius:4px;font-size:16px;outline:0}.mtx-popover-panel[class*=mtx-popover-below]{margin-top:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-above]{margin-bottom:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.mtx-popover-direction-arrow{position:absolute}.mtx-popover-direction-arrow:before,.mtx-popover-direction-arrow:after{position:absolute;display:inline-block;content:\"\";border-width:.5em;border-style:solid}.mtx-popover-direction-arrow:after{border-width:calc(.5em - 1px)}[class*=mtx-popover-below] .mtx-popover-direction-arrow,[class*=mtx-popover-above] .mtx-popover-direction-arrow{width:1em}[class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-above] .mtx-popover-direction-arrow:after{right:1px;left:auto}[class*=mtx-popover-below] .mtx-popover-direction-arrow{top:0}[class*=mtx-popover-below] .mtx-popover-direction-arrow:before,[class*=mtx-popover-below] .mtx-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow{bottom:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow:before,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow,[class*=mtx-popover-after] .mtx-popover-direction-arrow{height:1em}[class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{top:1px}[class*=mtx-popover-before] .mtx-popover-direction-arrow{right:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=mtx-popover-after] .mtx-popover-direction-arrow{left:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"]
284
328
  },] }
285
329
  ];
286
330
  /**
@@ -291,32 +335,36 @@ MtxPopover.decorators = [
291
335
  * @nocollapse
292
336
  */
293
337
  MtxPopover.ctorParameters = () => [
294
- { type: Directionality, decorators: [{ type: Optional }] },
295
338
  { type: ElementRef },
296
- { type: NgZone }
339
+ { type: NgZone },
340
+ { type: undefined, decorators: [{ type: Inject, args: [MTX_POPOVER_DEFAULT_OPTIONS,] }] }
297
341
  ];
298
342
  /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
299
343
  MtxPopover.propDecorators = {
300
- role: [{ type: HostBinding, args: ['attr.role',] }],
301
- position: [{ type: Input }],
344
+ backdropClass: [{ type: Input }],
345
+ ariaLabel: [{ type: Input, args: ['aria-label',] }],
346
+ ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],
347
+ ariaDescribedby: [{ type: Input, args: ['aria-describedby',] }],
302
348
  triggerEvent: [{ type: Input }],
303
- scrollStrategy: [{ type: Input }],
304
349
  enterDelay: [{ type: Input }],
305
350
  leaveDelay: [{ type: Input }],
351
+ position: [{ type: Input }],
306
352
  xOffset: [{ type: Input }],
307
353
  yOffset: [{ type: Input }],
308
- arrowOffsetX: [{ type: Input }],
309
- arrowOffsetY: [{ type: Input }],
310
354
  arrowWidth: [{ type: Input }],
311
355
  arrowHeight: [{ type: Input }],
356
+ arrowOffsetX: [{ type: Input }],
357
+ arrowOffsetY: [{ type: Input }],
312
358
  closeOnPanelClick: [{ type: Input }],
313
359
  closeOnBackdropClick: [{ type: Input }],
314
- disableAnimation: [{ type: Input }],
315
360
  focusTrapEnabled: [{ type: Input }],
316
361
  focusTrapAutoCaptureEnabled: [{ type: Input }],
362
+ hasBackdrop: [{ type: Input }],
363
+ elevation: [{ type: Input }],
317
364
  panelClass: [{ type: Input, args: ['class',] }],
318
365
  classList: [{ type: Input }],
319
366
  closed: [{ type: Output }],
320
- templateRef: [{ type: ViewChild, args: [TemplateRef,] }]
367
+ templateRef: [{ type: ViewChild, args: [TemplateRef,] }],
368
+ lazyContent: [{ type: ContentChild, args: [MTX_POPOVER_CONTENT,] }]
321
369
  };
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wb3BvdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU9uRCxPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLGlDQUFpQyxHQUNsQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3hELE1BQU0sT0FBTyxVQUFVO0lBd09yQixZQUNzQixJQUFvQixFQUNoQyxXQUF1QixFQUN4QixJQUFZO1FBRkMsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQTFPSyxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBRTFDLHFFQUFxRTtRQUM3RCxjQUFTLEdBQXVCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELGtCQUFhLEdBQTJCLE9BQU8sQ0FBQztRQUNoRCxvQkFBZSxHQUE2QixZQUFZLENBQUM7UUFDekQsZ0JBQVcsR0FBRyxHQUFHLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxHQUFHLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIs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TUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUM5QixRQUFRLEVBQUUsWUFBWTs7YUFDdkI7Ozs7Ozs7Ozs7WUF0QlEsY0FBYyx1QkFnUWxCLFFBQVE7WUF6UVgsVUFBVTtZQUdWLE1BQU07Ozs7bUJBOEJMLFdBQVcsU0FBQyxXQUFXO3VCQTBDdkIsS0FBSzsyQkFnQkwsS0FBSzs2QkFTTCxLQUFLO3lCQVNMLEtBQUs7eUJBU0wsS0FBSztzQkFTTCxLQUFLO3NCQVNMLEtBQUs7MkJBU0wsS0FBSzsyQkFTTCxLQUFLO3lCQVNMLEtBQUs7MEJBU0wsS0FBSztnQ0FTTCxLQUFLO21DQVNMLEtBQUs7K0JBU0wsS0FBSzsrQkFTTCxLQUFLOzBDQVNMLEtBQUs7eUJBY0wsS0FBSyxTQUFDLE9BQU87d0JBb0JiLEtBQUs7cUJBU0wsTUFBTTswQkFFTixTQUFTLFNBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEVTQ0FQRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcblxuaW1wb3J0IHtcbiAgTXR4UG9wb3ZlclRyaWdnZXJFdmVudCxcbiAgTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5LFxuICBNdHhQb3BvdmVyUG9zaXRpb24sXG59IGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XG5pbXBvcnQge1xuICB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25TdGFydCxcbiAgdGhyb3dNdHhQb3BvdmVySW52YWxpZFBvc2l0aW9uRW5kLFxufSBmcm9tICcuL3BvcG92ZXItZXJyb3JzJztcbmltcG9ydCB7IE10eFBvcG92ZXJQYW5lbCB9IGZyb20gJy4vcG9wb3Zlci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvcG92ZXIgfSBmcm9tICcuL3BvcG92ZXItYW5pbWF0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW3RyYW5zZm9ybVBvcG92ZXJdLFxuICBleHBvcnRBczogJ210eFBvcG92ZXInLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhQb3BvdmVyIGltcGxlbWVudHMgTXR4UG9wb3ZlclBhbmVsLCBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnZGlhbG9nJztcblxuICAvKiogU2V0dGluZ3MgZm9yIHBvcG92ZXIsIHZpZXcgc2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgbW9yZSBkZXRhaWwgKi9cbiAgcHJpdmF0ZSBfcG9zaXRpb246IE10eFBvcG92ZXJQb3NpdGlvbiA9IFsnYmVsb3cnLCAnYWZ0ZXInXTtcbiAgcHJpdmF0ZSBfdHJpZ2dlckV2ZW50OiBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50ID0gJ2hvdmVyJztcbiAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3k6IE10eFBvcG92ZXJTY3JvbGxTdHJhdGVneSA9ICdyZXBvc2l0aW9uJztcbiAgcHJpdmF0ZSBfZW50ZXJEZWxheSA9IDEwMDtcbiAgcHJpdmF0ZSBfbGVhdmVEZWxheSA9IDEwMDtcbiAgcHJpdmF0ZSBfcGFuZWxPZmZzZXRYID0gMDtcbiAgcHJpdmF0ZSBfcGFuZWxPZmZzZXRZID0gMDtcbiAgcHJpdmF0ZSBfY2xvc2VPblBhbmVsQ2xpY2sgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSB0cnVlO1xuICBwcml2YXRlIF9kaXNhYmxlQW5pbWF0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZvY3VzVHJhcEVuYWJsZWQgPSB0cnVlO1xuICBwcml2YXRlIF9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSB0cnVlO1xuICBwcml2YXRlIF9hcnJvd09mZnNldFggPSAyMDtcbiAgcHJpdmF0ZSBfYXJyb3dPZmZzZXRZID0gMjA7XG4gIHByaXZhdGUgX2Fycm93V2lkdGggPSAxNjtcbiAgcHJpdmF0ZSBfYXJyb3dIZWlnaHQgPSAxNjtcblxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIG5nQ2xhc3MgKi9cbiAgX2NsYXNzTGlzdDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvKiogV2hldGhlciBwb3BvdmVyJ3MgYHRhcmdldEVsZW1lbnRgIGlzIGRlZmluZWQgKi9cbiAgcHVibGljIGNvbnRhaW5lclBvc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgLyoqIENsb3NpbmcgZGlzYWJsZWQgb24gcG9wb3ZlciAqL1xuICBwdWJsaWMgY2xvc2VEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBwb3BvdmVyJ3MgYXJyb3cgbmdTdHlsZSAqL1xuICBwdWJsaWMgcG9wb3ZlclBhbmVsU3R5bGVzITogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBhcnJvdyBuZ1N0eWxlICovXG4gIHB1YmxpYyBwb3BvdmVyQXJyb3dTdHlsZXMhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGNvbnRlbnQgbmdTdHlsZSAqL1xuICBwdWJsaWMgcG9wb3ZlckNvbnRlbnRTdHlsZXMhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogRW1pdHMgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIHdoZW5ldmVyIGl0IGNoYW5nZXMuICovXG4gIF9vbkFuaW1hdGlvblN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcblxuICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIuICovXG4gIEBJbnB1dCgpXG4gIGdldCBwb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gIH1cbiAgc2V0IHBvc2l0aW9uKHZhbHVlOiBNdHhQb3BvdmVyUG9zaXRpb24pIHtcbiAgICBpZiAoIVsnYmVmb3JlJywgJ2FmdGVyJywgJ2Fib3ZlJywgJ2JlbG93J10uaW5jbHVkZXModmFsdWVbMF0pKSB7XG4gICAgICB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25TdGFydCgpO1xuICAgIH1cbiAgICBpZiAoIVsnYmVmb3JlJywgJ2FmdGVyJywgJ2Fib3ZlJywgJ2JlbG93JywgJ2NlbnRlciddLmluY2x1ZGVzKHZhbHVlWzFdKSkge1xuICAgICAgdGhyb3dNdHhQb3BvdmVySW52YWxpZFBvc2l0aW9uRW5kKCk7XG4gICAgfVxuICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIHRyaWdnZXIgZXZlbnQgKi9cbiAgQElucHV0KClcbiAgZ2V0IHRyaWdnZXJFdmVudCgpOiBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckV2ZW50O1xuICB9XG4gIHNldCB0cmlnZ2VyRXZlbnQodmFsdWU6IE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQpIHtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIHNjcm9sbCBzdHJhdGVneSAqL1xuICBASW5wdXQoKVxuICBnZXQgc2Nyb2xsU3RyYXRlZ3koKTogTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsU3RyYXRlZ3k7XG4gIH1cbiAgc2V0IHNjcm9sbFN0cmF0ZWd5KHZhbHVlOiBNdHhQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpIHtcbiAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXIgZW50ZXIgZGVsYXkgKi9cbiAgQElucHV0KClcbiAgZ2V0IGVudGVyRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZW50ZXJEZWxheTtcbiAgfVxuICBzZXQgZW50ZXJEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZW50ZXJEZWxheSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXIgbGVhdmUgZGVsYXkgKi9cbiAgQElucHV0KClcbiAgZ2V0IGxlYXZlRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhdmVEZWxheTtcbiAgfVxuICBzZXQgbGVhdmVEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGVhdmVEZWxheSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB4ICovXG4gIEBJbnB1dCgpXG4gIGdldCB4T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsT2Zmc2V0WDtcbiAgfVxuICBzZXQgeE9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFuZWxPZmZzZXRYID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cbiAgQElucHV0KClcbiAgZ2V0IHlPZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxPZmZzZXRZO1xuICB9XG4gIHNldCB5T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYW5lbE9mZnNldFkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIGFycm93IG9mZnNldCB4ICovXG4gIEBJbnB1dCgpXG4gIGdldCBhcnJvd09mZnNldFgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRYO1xuICB9XG4gIHNldCBhcnJvd09mZnNldFgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2Fycm93T2Zmc2V0WCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXIgYXJyb3cgb2Zmc2V0IHkgKi9cbiAgQElucHV0KClcbiAgZ2V0IGFycm93T2Zmc2V0WSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hcnJvd09mZnNldFk7XG4gIH1cbiAgc2V0IGFycm93T2Zmc2V0WSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fYXJyb3dPZmZzZXRZID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xuICBASW5wdXQoKVxuICBnZXQgYXJyb3dXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hcnJvd1dpZHRoO1xuICB9XG4gIHNldCBhcnJvd1dpZHRoKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hcnJvd1dpZHRoID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9wb3ZlciBhcnJvdyBoZWlnaHQgKi9cbiAgQElucHV0KClcbiAgZ2V0IGFycm93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Fycm93SGVpZ2h0O1xuICB9XG4gIHNldCBhcnJvd0hlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fYXJyb3dIZWlnaHQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIGNsb3NlIG9uIGNvbnRhaW5lciBjbGljayAqL1xuICBASW5wdXQoKVxuICBnZXQgY2xvc2VPblBhbmVsQ2xpY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25QYW5lbENsaWNrO1xuICB9XG4gIHNldCBjbG9zZU9uUGFuZWxDbGljayh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Nsb3NlT25QYW5lbENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIGNsb3NlIG9uIGJhY2tkcm9wIGNsaWNrICovXG4gIEBJbnB1dCgpXG4gIGdldCBjbG9zZU9uQmFja2Ryb3BDbGljaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2s7XG4gIH1cbiAgc2V0IGNsb3NlT25CYWNrZHJvcENsaWNrKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqIERpc2FibGUgYW5pbWF0aW9ucyBvZiBwb3BvdmVyIGFuZCBhbGwgY2hpbGQgZWxlbWVudHMgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVBbmltYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVBbmltYXRpb247XG4gIH1cbiAgc2V0IGRpc2FibGVBbmltYXRpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyIGZvY3VzIHRyYXAgdXNpbmcgY2RrVHJhcEZvY3VzICovXG4gIEBJbnB1dCgpXG4gIGdldCBmb2N1c1RyYXBFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c1RyYXBFbmFibGVkO1xuICB9XG4gIHNldCBmb2N1c1RyYXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZm9jdXNUcmFwRW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKiogUG9wb3ZlciBmb2N1cyB0cmFwIGF1dG8gY2FwdHVyZSB1c2luZyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQ7XG4gIH1cbiAgc2V0IGZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXG4gICAqIHBvcG92ZXIgdGVtcGxhdGUgdGhhdCBkaXNwbGF5cyBpbiB0aGUgb3ZlcmxheSBjb250YWluZXIuICBPdGhlcndpc2UsIGl0J3MgZGlmZmljdWx0XG4gICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIHBvcG92ZXIgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjbGFzc2VzIGxpc3Qgb2YgY2xhc3MgbmFtZXNcbiAgICovXG4gIEBJbnB1dCgnY2xhc3MnKVxuICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICBpZiAoY2xhc3NlcyAmJiBjbGFzc2VzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fY2xhc3NMaXN0ID0gY2xhc3Nlcy5zcGxpdCgnICcpLnJlZHVjZSgob2JqOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIG9ialtjbGFzc05hbWVdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICcnO1xuICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXG4gICAqIHBvcG92ZXIgdGVtcGxhdGUgdGhhdCBkaXNwbGF5cyBpbiB0aGUgb3ZlcmxheSBjb250YWluZXIuICBPdGhlcndpc2UsIGl0J3MgZGlmZmljdWx0XG4gICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIHBvcG92ZXIgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcGFuZWxDbGFzc2AgaW5zdGVhZC5cbiAgICogQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGNsYXNzTGlzdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhbmVsQ2xhc3M7XG4gIH1cbiAgc2V0IGNsYXNzTGlzdChjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBhbmVsQ2xhc3MgPSBjbGFzc2VzO1xuICB9XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQuICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGEga2V5Ym9hcmQgZXZlbnQgZnJvbSB0aGUgcG9wb3ZlciwgZGVsZWdhdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uLiAqL1xuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBFU0NBUEU6XG4gICAgICAgIHRoaXMuX2VtaXRDbG9zZUV2ZW50KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBlbWl0cyBhIGNsb3NlIGV2ZW50IHRvIHdoaWNoIHRoZSB0cmlnZ2VyIGlzIHN1YnNjcmliZWQuIFdoZW4gZW1pdHRlZCwgdGhlXG4gICAqIHRyaWdnZXIgd2lsbCBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICovXG4gIF9lbWl0Q2xvc2VFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKiogQ2xvc2UgcG9wb3ZlciBvbiBjbGljayBpZiBjbG9zZU9uUGFuZWxDbGljayBpcyB0cnVlICovXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VPblBhbmVsQ2xpY2spIHtcbiAgICAgIHRoaXMuX2VtaXRDbG9zZUV2ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERpc2FibGVzIGNsb3NlIG9mIHBvcG92ZXIgd2hlbiBsZWF2aW5nIHRyaWdnZXIgZWxlbWVudCBhbmQgbW91c2Ugb3ZlciB0aGUgcG9wb3ZlciAqL1xuICBvbk1vdXNlT3ZlcigpIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgIHRoaXMuY2xvc2VEaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVuYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIG1vdXNlIGxlYXZpbmcgcG9wb3ZlciBlbGVtZW50ICovXG4gIG9uTW91c2VMZWF2ZSgpIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZW1pdENsb3NlRXZlbnQoKTtcbiAgICAgIH0sIHRoaXMubGVhdmVEZWxheSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldHMgdGhlIGN1cnJlbnQgc3R5bGVzIGZvciB0aGUgcG9wb3ZlciB0byBhbGxvdyBmb3IgZHluYW1pY2FsbHkgY2hhbmdpbmcgc2V0dGluZ3MgKi9cbiAgc2V0Q3VycmVudFN0eWxlcyhwb3MgPSB0aGlzLnBvc2l0aW9uKSB7XG4gICAgY29uc3QgbGVmdCA9XG4gICAgICBwb3NbMV0gPT09ICdhZnRlcidcbiAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgXG4gICAgICAgIDogcG9zWzFdID09PSAnY2VudGVyJ1xuICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd1dpZHRoIC8gMn1weClgXG4gICAgICAgIDogJyc7XG4gICAgY29uc3QgcmlnaHQgPSBwb3NbMV0gPT09ICdiZWZvcmUnID8gYCR7dGhpcy5hcnJvd09mZnNldFggLSB0aGlzLmFycm93V2lkdGggLyAyfXB4YCA6ICcnO1xuXG4gICAgY29uc3QgYm90dG9tID1cbiAgICAgIHBvc1sxXSA9PT0gJ2Fib3ZlJ1xuICAgICAgICA/IGAke3RoaXMuYXJyb3dPZmZzZXRZIC0gdGhpcy5hcnJvd0hlaWdodCAvIDJ9cHhgXG4gICAgICAgIDogcG9zWzFdID09PSAnY2VudGVyJ1xuICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd0hlaWdodCAvIDJ9cHgpYFxuICAgICAgICA6ICcnO1xuICAgIGNvbnN0IHRvcCA9IHBvc1sxXSA9PT0gJ2JlbG93JyA/IGAke3RoaXMuYXJyb3dPZmZzZXRZIC0gdGhpcy5hcnJvd0hlaWdodCAvIDJ9cHhgIDogJyc7XG5cbiAgICB0aGlzLnBvcG92ZXJBcnJvd1N0eWxlcyA9XG4gICAgICBwb3NbMF0gPT09ICdhYm92ZScgfHwgcG9zWzBdID09PSAnYmVsb3cnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgbGVmdDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IGxlZnQgOiByaWdodCxcbiAgICAgICAgICAgIHJpZ2h0OiB0aGlzLl9kaXIudmFsdWUgPT09ICdsdHInID8gcmlnaHQgOiBsZWZ0LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCdzIG5lY2Vzc2FyeSB0byBzZXQgcG9zaXRpb24tYmFzZWQgY2xhc3NlcyB0byBlbnN1cmUgdGhlIHBvcG92ZXIgcGFuZWwgYW5pbWF0aW9uXG4gICAqIGZvbGRzIG91dCBmcm9tIHRoZSBjb3JyZWN0IGRpcmVjdGlvbi5cbiAgICovXG4gIHNldFBvc2l0aW9uQ2xhc3Nlcyhwb3MgPSB0aGlzLnBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWZvcmUtYWJvdmUnXSA9IHBvc1swXSA9PT0gJ2JlZm9yZScgJiYgcG9zWzFdID09PSAnYWJvdmUnO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYmVmb3JlLWNlbnRlciddID0gcG9zWzBdID09PSAnYmVmb3JlJyAmJiBwb3NbMV0gPT09ICdjZW50ZXInO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYmVmb3JlLWJlbG93J10gPSBwb3NbMF0gPT09ICdiZWZvcmUnICYmIHBvc1sxXSA9PT0gJ2JlbG93JztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWFmdGVyLWFib3ZlJ10gPSBwb3NbMF0gPT09ICdhZnRlcicgJiYgcG9zWzFdID09PSAnYWJvdmUnO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWZ0ZXItY2VudGVyJ10gPSBwb3NbMF0gPT09ICdhZnRlcicgJiYgcG9zWzFdID09PSAnY2VudGVyJztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWFmdGVyLWJlbG93J10gPSBwb3NbMF0gPT09ICdhZnRlcicgJiYgcG9zWzFdID09PSAnYmVsb3cnO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWJvdmUtYmVmb3JlJ10gPSBwb3NbMF0gPT09ICdhYm92ZScgJiYgcG9zWzFdID09PSAnYmVmb3JlJztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWFib3ZlLWNlbnRlciddID0gcG9zWzBdID09PSAnYWJvdmUnICYmIHBvc1sxXSA9PT0gJ2NlbnRlcic7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1hYm92ZS1hZnRlciddID0gcG9zWzBdID09PSAnYWJvdmUnICYmIHBvc1sxXSA9PT0gJ2FmdGVyJztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWJlbG93LWJlZm9yZSddID0gcG9zWzBdID09PSAnYmVsb3cnICYmIHBvc1sxXSA9PT0gJ2JlZm9yZSc7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWxvdy1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2JlbG93JyAmJiBwb3NbMV0gPT09ICdjZW50ZXInO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYmVsb3ctYWZ0ZXInXSA9IHBvc1swXSA9PT0gJ2JlbG93JyAmJiBwb3NbMV0gPT09ICdhZnRlcic7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPblBhbmVsQ2xpY2s6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Nsb3NlT25CYWNrZHJvcENsaWNrOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlQW5pbWF0aW9uOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mb2N1c1RyYXBFbmFibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wb3BvdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLG1DQUFtQyxHQUNwQyxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FDM0QsNkJBQTZCLEVBQzdCO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLG1DQUFtQztDQUM3QyxDQUNGLENBQUM7QUFFRixvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLG1DQUFtQztJQUNqRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLGtDQUFrQztLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQUVELElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztBQVd4QixNQUFNLE9BQU8sVUFBVTtJQWdRckIsWUFDVSxXQUF1QixFQUN2QixPQUFlLEVBQ3NCLGVBQXlDOztRQUY5RSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ3NCLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQWxRaEYsa0JBQWEsR0FBRyxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxtQ0FBSSxPQUFPLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxtQ0FBSSxHQUFHLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxtQ0FBSSxHQUFHLENBQUM7UUFDckQsY0FBUyxHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLG1DQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sbUNBQUksQ0FBQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sbUNBQUksQ0FBQyxDQUFDO1FBQ2xELGdCQUFXLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsbUNBQUksRUFBRSxDQUFDO1FBQ3BELGlCQUFZLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsbUNBQUksRUFBRSxDQUFDO1FBQ3RELGtCQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3hELGtCQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3hELHVCQUFrQixHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsbUNBQUksS0FBSyxDQUFDO1FBQ3JFLDBCQUFxQixHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsbUNBQUksSUFBSSxDQUFDO1FBQzFFLHNCQUFpQixHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsbUNBQUksS0FBSyxDQUFDO1FBQ25FLGlDQUE0QixHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsbUNBQUksS0FBSyxDQUFDO1FBQ3pGLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7UUFDaEQsZUFBVSxHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLG1DQUFJLENBQUMsQ0FBQztRQUdqRCxxQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztRQUU3Qyw2REFBNkQ7UUFDN0QsZUFBVSxHQUErQixFQUFFLENBQUM7UUFFNUMsNENBQTRDO1FBQzVDLHlCQUFvQixHQUFxQixNQUFNLENBQUM7UUFFaEQsNERBQTREO1FBQ25ELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFFeEQsd0NBQXdDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGtDQUFrQztRQUNsQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixrRUFBa0U7UUFDbEUsZ0JBQVcsR0FBbUMsSUFBSSxDQUFDO1FBS25ELGlFQUFpRTtRQUNqRSxzQkFBaUIsR0FBc0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFFcEYsaURBQWlEO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFvTTVELGdEQUFnRDtRQUN0QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFXakQsWUFBTyxHQUFHLHFCQUFxQixlQUFlLEVBQUUsRUFBRSxDQUFDO0lBTXpELENBQUM7SUEzTUosK0JBQStCO0lBQy9CLElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBNkI7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxtQ0FBbUMsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2RSxpQ0FBaUMsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQ0ksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsSUFDSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksZ0JBQWdCLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxJQUNJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSwyQkFBMkIsQ0FBQyxLQUFjO1FBQzVDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaUdBQWlHO0lBQ2pHLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBMEI7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQ0ksVUFBVSxDQUFDLE9BQWU7UUFDNUIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtnQkFDMUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDdEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFUCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsT0FBZTtRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBc0JELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHNGQUFzRjtJQUN0RixjQUFjLENBQUMsS0FBb0I7UUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUU5QixRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCx5RkFBeUY7SUFDekYsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsMEZBQTBGO0lBQzFGLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUTtRQUNsQyxNQUFNLElBQUksR0FDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTztZQUNoQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJO1lBQ2hELENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtnQkFDckIsQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUs7Z0JBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhGLE1BQU0sTUFBTSxHQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPO1lBQ2hCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUk7WUFDakQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO2dCQUNyQixDQUFDLENBQUMsY0FBYyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSztnQkFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFdEYsSUFBSSxDQUFDLFdBQVc7WUFDZCxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPO2dCQUN0QyxDQUFDLENBQUM7b0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7b0JBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUMvQztnQkFDSCxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUTtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDMUYsSUFBSSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztRQUN4RixJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztRQUN0RixJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztRQUN0RixJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztJQUN4RixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLFlBQVk7UUFDVixNQUFNLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsZUFBZTtRQUNiLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsZUFBZTtRQUNiLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsZ0JBQWdCLENBQUMsS0FBcUI7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQXFCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7Ozs7WUEzWUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QiwwZ0NBQTZCO2dCQUU3QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUM5QixRQUFRLEVBQUUsWUFBWTs7YUFDdkI7Ozs7Ozs7Ozs7WUFqREMsVUFBVTtZQUtWLE1BQU07NENBZ1RILE1BQU0sU0FBQywyQkFBMkI7Ozs7NEJBck5wQyxLQUFLO3dCQUdMLEtBQUssU0FBQyxZQUFZOzZCQUdsQixLQUFLLFNBQUMsaUJBQWlCOzhCQUd2QixLQUFLLFNBQUMsa0JBQWtCOzJCQUd4QixLQUFLO3lCQVNMLEtBQUs7eUJBU0wsS0FBSzt1QkFTTCxLQUFLO3NCQWdCTCxLQUFLO3NCQVNMLEtBQUs7eUJBU0wsS0FBSzswQkFTTCxLQUFLOzJCQVNMLEtBQUs7MkJBU0wsS0FBSztnQ0FTTCxLQUFLO21DQVNMLEtBQUs7K0JBU0wsS0FBSzswQ0FTTCxLQUFLOzBCQVNMLEtBQUs7d0JBU0wsS0FBSzt5QkFjTCxLQUFLLFNBQUMsT0FBTzt3QkFvQmIsS0FBSztxQkFTTCxNQUFNOzBCQUdOLFNBQVMsU0FBQyxXQUFXOzBCQU1yQixZQUFZLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEVTQ0FQRSwgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvcG92ZXIgfSBmcm9tICcuL3BvcG92ZXItYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBNdHhQb3BvdmVyQ29udGVudCwgTVRYX1BPUE9WRVJfQ09OVEVOVCB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50JztcbmltcG9ydCB7XG4gIHRocm93TXR4UG9wb3ZlckludmFsaWRQb3NpdGlvbkVuZCxcbiAgdGhyb3dNdHhQb3BvdmVySW52YWxpZFBvc2l0aW9uU3RhcnQsXG59IGZyb20gJy4vcG9wb3Zlci1lcnJvcnMnO1xuaW1wb3J0IHsgTXR4UG9wb3ZlckRlZmF1bHRPcHRpb25zLCBNdHhQb3BvdmVyUGFuZWwgfSBmcm9tICcuL3BvcG92ZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNdHhQb3BvdmVyUG9zaXRpb24sIE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQsIFBvcG92ZXJDbG9zZVJlYXNvbiB9IGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdG8gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBgbXR4LXBvcG92ZXJgLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9QT1BPVkVSX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNdHhQb3BvdmVyRGVmYXVsdE9wdGlvbnM+KFxuICAnbXR4LXBvcG92ZXItZGVmYXVsdC1vcHRpb25zJyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiBNVFhfUE9QT1ZFUl9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSxcbiAgfVxuKTtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBNVFhfUE9QT1ZFUl9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSgpOiBNdHhQb3BvdmVyRGVmYXVsdE9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gIH07XG59XG5cbmxldCBwb3BvdmVyUGFuZWxVaWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFt0cmFuc2Zvcm1Qb3BvdmVyXSxcbiAgZXhwb3J0QXM6ICdtdHhQb3BvdmVyJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4UG9wb3ZlciBpbXBsZW1lbnRzIE10eFBvcG92ZXJQYW5lbCwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF90cmlnZ2VyRXZlbnQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy50cmlnZ2VyRXZlbnQgPz8gJ2hvdmVyJztcbiAgcHJpdmF0ZSBfZW50ZXJEZWxheSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmVudGVyRGVsYXkgPz8gMTAwO1xuICBwcml2YXRlIF9sZWF2ZURlbGF5ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnMubGVhdmVEZWxheSA/PyAxMDA7XG4gIHByaXZhdGUgX3Bvc2l0aW9uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnMucG9zaXRpb24gPz8gWydiZWxvdycsICdhZnRlciddO1xuICBwcml2YXRlIF9wYW5lbE9mZnNldFggPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy54T2Zmc2V0ID8/IDA7XG4gIHByaXZhdGUgX3BhbmVsT2Zmc2V0WSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLnlPZmZzZXQgPz8gMDtcbiAgcHJpdmF0ZSBfYXJyb3dXaWR0aCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmFycm93V2lkdGggPz8gMTY7XG4gIHByaXZhdGUgX2Fycm93SGVpZ2h0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnMuYXJyb3dIZWlnaHQgPz8gMTY7XG4gIHByaXZhdGUgX2Fycm93T2Zmc2V0WCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmFycm93T2Zmc2V0WCA/PyAyMDtcbiAgcHJpdmF0ZSBfYXJyb3dPZmZzZXRZID0gdGhpcy5fZGVmYXVsdE9wdGlvbnMuYXJyb3dPZmZzZXRZID8/IDIwO1xuICBwcml2YXRlIF9jbG9zZU9uUGFuZWxDbGljayA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmNsb3NlT25QYW5lbENsaWNrID8/IGZhbHNlO1xuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmNsb3NlT25CYWNrZHJvcENsaWNrID8/IHRydWU7XG4gIHByaXZhdGUgX2ZvY3VzVHJhcEVuYWJsZWQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy5mb2N1c1RyYXBFbmFibGVkID8/IGZhbHNlO1xuICBwcml2YXRlIF9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy5mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPz8gZmFsc2U7XG4gIHByaXZhdGUgX2hhc0JhY2tkcm9wID0gdGhpcy5fZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3A7XG4gIHByaXZhdGUgX2VsZXZhdGlvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zLmVsZXZhdGlvbiA/PyA4O1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzRWxldmF0aW9uPzogc3RyaW5nO1xuICBwcml2YXRlIF9lbGV2YXRpb25QcmVmaXggPSAnbWF0LWVsZXZhdGlvbi16JztcblxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIG5nQ2xhc3MuICovXG4gIF9jbGFzc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgX3BhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIGFuIGFuaW1hdGlvbiBvbiB0aGUgcG9wb3ZlciBjb21wbGV0ZXMuICovXG4gIHJlYWRvbmx5IF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgYW5pbWF0aW5nLiAqL1xuICBfaXNBbmltYXRpbmcgPSBmYWxzZTtcblxuICAvKiogQ2xvc2luZyBkaXNhYmxlZCBvbiBwb3BvdmVyICovXG4gIGNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cbiAgYXJyb3dTdHlsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIHBvcG92ZXIuICovXG4gIGRpcmVjdGlvbj86IERpcmVjdGlvbjtcblxuICAvKiogQ2xhc3Mgb3IgbGlzdCBvZiBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBvdmVybGF5IHBhbmVsLiAqL1xuICBvdmVybGF5UGFuZWxDbGFzczogc3RyaW5nIHwgc3RyaW5nW10gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGF5UGFuZWxDbGFzcyB8fCAnJztcblxuICAvKiogQ2xhc3MgdG8gYmUgYWRkZWQgdG8gdGhlIGJhY2tkcm9wIGVsZW1lbnQuICovXG4gIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3MgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucy5iYWNrZHJvcENsYXNzO1xuXG4gIC8qKiBhcmlhLWxhYmVsIGZvciB0aGUgcG9wb3ZlciBwYW5lbC4gKi9cbiAgQElucHV0KCdhcmlhLWxhYmVsJykgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBhcmlhLWxhYmVsbGVkYnkgZm9yIHRoZSBwb3BvdmVyIHBhbmVsLiAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpIGFyaWFMYWJlbGxlZGJ5Pzogc3RyaW5nO1xuXG4gIC8qKiBhcmlhLWRlc2NyaWJlZGJ5IGZvciB0aGUgcG9wb3ZlciBwYW5lbC4gKi9cbiAgQElucHV0KCdhcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nO1xuXG4gIC8qKiBQb3BvdmVyJ3MgdHJpZ2dlciBldmVudC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHRyaWdnZXJFdmVudCgpOiBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckV2ZW50O1xuICB9XG4gIHNldCB0cmlnZ2VyRXZlbnQodmFsdWU6IE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQpIHtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyJ3MgZW50ZXIgZGVsYXkuICovXG4gIEBJbnB1dCgpXG4gIGdldCBlbnRlckRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGVyRGVsYXk7XG4gIH1cbiAgc2V0IGVudGVyRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2VudGVyRGVsYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyJ3MgbGVhdmUgZGVsYXkuICovXG4gIEBJbnB1dCgpXG4gIGdldCBsZWF2ZURlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xlYXZlRGVsYXk7XG4gIH1cbiAgc2V0IGxlYXZlRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2xlYXZlRGVsYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyJ3MgcG9zaXRpb24uICovXG4gIEBJbnB1dCgpXG4gIGdldCBwb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gIH1cbiAgc2V0IHBvc2l0aW9uKHZhbHVlOiBNdHhQb3BvdmVyUG9zaXRpb24pIHtcbiAgICBpZiAoIVsnYmVmb3JlJywgJ2FmdGVyJywgJ2Fib3ZlJywgJ2JlbG93J10uaW5jbHVkZXModmFsdWVbMF0pKSB7XG4gICAgICB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25TdGFydCgpO1xuICAgIH1cbiAgICBpZiAoIVsnYmVmb3JlJywgJ2FmdGVyJywgJ2Fib3ZlJywgJ2JlbG93JywgJ2NlbnRlciddLmluY2x1ZGVzKHZhbHVlWzFdKSkge1xuICAgICAgdGhyb3dNdHhQb3BvdmVySW52YWxpZFBvc2l0aW9uRW5kKCk7XG4gICAgfVxuICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyLXBhbmVsJ3MgWCBvZmZzZXQuICovXG4gIEBJbnB1dCgpXG4gIGdldCB4T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsT2Zmc2V0WDtcbiAgfVxuICBzZXQgeE9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFuZWxPZmZzZXRYID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9wb3Zlci1wYW5lbCdzIFkgb2Zmc2V0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgeU9mZnNldCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYW5lbE9mZnNldFk7XG4gIH1cbiAgc2V0IHlPZmZzZXQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhbmVsT2Zmc2V0WSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXItYXJyb3cncyB3aWR0aC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGFycm93V2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dXaWR0aDtcbiAgfVxuICBzZXQgYXJyb3dXaWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fYXJyb3dXaWR0aCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvcG92ZXItYXJyb3cncyBoZWlnaHQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBhcnJvd0hlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hcnJvd0hlaWdodDtcbiAgfVxuICBzZXQgYXJyb3dIZWlnaHQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2Fycm93SGVpZ2h0ID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9wb3Zlci1hcnJvdydzIFggb2Zmc2V0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgYXJyb3dPZmZzZXRYKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Fycm93T2Zmc2V0WDtcbiAgfVxuICBzZXQgYXJyb3dPZmZzZXRYKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hcnJvd09mZnNldFggPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBQb3BvdmVyLWFycm93J3MgWSBvZmZzZXQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBhcnJvd09mZnNldFkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRZO1xuICB9XG4gIHNldCBhcnJvd09mZnNldFkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2Fycm93T2Zmc2V0WSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgcG9wb3ZlciBjYW4gYmUgY2xvc2VkIHdoZW4gY2xpY2sgdGhlIHBvcG92ZXItcGFuZWwuICovXG4gIEBJbnB1dCgpXG4gIGdldCBjbG9zZU9uUGFuZWxDbGljaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VPblBhbmVsQ2xpY2s7XG4gIH1cbiAgc2V0IGNsb3NlT25QYW5lbENsaWNrKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xvc2VPblBhbmVsQ2xpY2sgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgcG9wb3ZlciBjYW4gYmUgY2xvc2VkIHdoZW4gY2xpY2sgdGhlIGJhY2tkcm9wLiAqL1xuICBASW5wdXQoKVxuICBnZXQgY2xvc2VPbkJhY2tkcm9wQ2xpY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrO1xuICB9XG4gIHNldCBjbG9zZU9uQmFja2Ryb3BDbGljayh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGVuYWJsZSBmb2N1cyB0cmFwIHVzaW5nIGBjZGtUcmFwRm9jdXNgLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9jdXNUcmFwRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNUcmFwRW5hYmxlZDtcbiAgfVxuICBzZXQgZm9jdXNUcmFwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2ZvY3VzVHJhcEVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgZW5hYmxlIGZvY3VzIHRyYXAgYXV0byBjYXB0dXJlIHVzaW5nIGBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZWAuICovXG4gIEBJbnB1dCgpXG4gIGdldCBmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZDtcbiAgfVxuICBzZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGhhcyBhIGJhY2tkcm9wLiBJdCB3aWxsIGFsd2F5cyBiZSBmYWxzZSBpZiB0aGUgdHJpZ2dlciBldmVudCBpcyBob3Zlci4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGhhc0JhY2tkcm9wKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9oYXNCYWNrZHJvcDtcbiAgfVxuICBzZXQgaGFzQmFja2Ryb3AodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9oYXNCYWNrZHJvcCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKiogUG9wb3Zlci1wYW5lbCdzIGVsZXZhdGlvbiAoMH4yNCkuICovXG4gIEBJbnB1dCgpXG4gIGdldCBlbGV2YXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oTWF0aC5yb3VuZCh0aGlzLl9lbGV2YXRpb24pLCAyNCkpO1xuICB9XG4gIHNldCBlbGV2YXRpb24odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2VsZXZhdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRha2VzIGNsYXNzZXMgc2V0IG9uIHRoZSBob3N0IG1kLXBvcG92ZXIgZWxlbWVudCBhbmQgYXBwbGllcyB0aGVtIG9uIHRoZVxuICAgKiBwb3BvdmVyIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiBPdGhlcndpc2UsIGl0J3MgZGlmZmljdWx0XG4gICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIHBvcG92ZXIgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjbGFzc2VzIGxpc3Qgb2YgY2xhc3MgbmFtZXNcbiAgICovXG4gIEBJbnB1dCgnY2xhc3MnKVxuICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICBpZiAoY2xhc3NlcyAmJiBjbGFzc2VzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fY2xhc3NMaXN0ID0gY2xhc3Nlcy5zcGxpdCgnICcpLnJlZHVjZSgob2JqOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIG9ialtjbGFzc05hbWVdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICcnO1xuICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXG4gICAqIHBvcG92ZXIgdGVtcGxhdGUgdGhhdCBkaXNwbGF5cyBpbiB0aGUgb3ZlcmxheSBjb250YWluZXIuIE90aGVyd2lzZSwgaXQncyBkaWZmaWN1bHRcbiAgICogdG8gc3R5bGUgdGhlIGNvbnRhaW5pbmcgcG9wb3ZlciBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBwYW5lbENsYXNzYCBpbnN0ZWFkLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgY2xhc3NMaXN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFuZWxDbGFzcztcbiAgfVxuICBzZXQgY2xhc3NMaXN0KGNsYXNzZXM6IHN0cmluZykge1xuICAgIHRoaXMucGFuZWxDbGFzcyA9IGNsYXNzZXM7XG4gIH1cblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UG9wb3ZlckNsb3NlUmVhc29uPigpO1xuXG4gIC8qKiBAZG9jcy1wcml2YXRlICovXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogUG9wb3ZlciBjb250ZW50IHRoYXQgd2lsbCBiZSByZW5kZXJlZCBsYXppbHkuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoTVRYX1BPUE9WRVJfQ09OVEVOVCkgbGF6eUNvbnRlbnQ/OiBNdHhQb3BvdmVyQ29udGVudDtcblxuICByZWFkb25seSBwYW5lbElkID0gYG10eC1wb3BvdmVyLXBhbmVsLSR7cG9wb3ZlclBhbmVsVWlkKyt9YDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTVRYX1BPUE9WRVJfREVGQVVMVF9PUFRJT05TKSBwcml2YXRlIF9kZWZhdWx0T3B0aW9uczogTXR4UG9wb3ZlckRlZmF1bHRPcHRpb25zXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmcm9tIHRoZSBwb3BvdmVyLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG5cbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSBwb3BvdmVyIG9uIGNsaWNrIGlmIGBjbG9zZU9uUGFuZWxDbGlja2AgaXMgdHJ1ZS4gKi9cbiAgX2hhbmRsZUNsaWNrKCkge1xuICAgIGlmICh0aGlzLmNsb3NlT25QYW5lbENsaWNrKSB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCdjbGljaycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEaXNhYmxlcyBjbG9zZSBvZiBwb3BvdmVyIHdoZW4gbGVhdmluZyB0cmlnZ2VyIGVsZW1lbnQgYW5kIG1vdXNlIG92ZXIgdGhlIHBvcG92ZXIuICovXG4gIF9oYW5kbGVNb3VzZU92ZXIoKSB7XG4gICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICB0aGlzLmNsb3NlRGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBFbmFibGVzIGNsb3NlIG9mIHBvcG92ZXIgd2hlbiBtb3VzZSBsZWF2aW5nIHBvcG92ZXIgZWxlbWVudC4gKi9cbiAgX2hhbmRsZU1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZURpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICAgIH0sIHRoaXMubGVhdmVEZWxheSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldHMgdGhlIGN1cnJlbnQgc3R5bGVzIGZvciB0aGUgcG9wb3ZlciB0byBhbGxvdyBmb3IgZHluYW1pY2FsbHkgY2hhbmdpbmcgc2V0dGluZ3MuICovXG4gIHNldEN1cnJlbnRTdHlsZXMocG9zID0gdGhpcy5wb3NpdGlvbikge1xuICAgIGNvbnN0IGxlZnQgPVxuICAgICAgcG9zWzFdID09PSAnYWZ0ZXInXG4gICAgICAgID8gYCR7dGhpcy5hcnJvd09mZnNldFggLSB0aGlzLmFycm93V2lkdGggLyAyfXB4YFxuICAgICAgICA6IHBvc1sxXSA9PT0gJ2NlbnRlcidcbiAgICAgICAgPyBgY2FsYyg1MCUgLSAke3RoaXMuYXJyb3dXaWR0aCAvIDJ9cHgpYFxuICAgICAgICA6ICcnO1xuICAgIGNvbnN0IHJpZ2h0ID0gcG9zWzFdID09PSAnYmVmb3JlJyA/IGAke3RoaXMuYXJyb3dPZmZzZXRYIC0gdGhpcy5hcnJvd1dpZHRoIC8gMn1weGAgOiAnJztcblxuICAgIGNvbnN0IGJvdHRvbSA9XG4gICAgICBwb3NbMV0gPT09ICdhYm92ZSdcbiAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WSAtIHRoaXMuYXJyb3dIZWlnaHQgLyAyfXB4YFxuICAgICAgICA6IHBvc1sxXSA9PT0gJ2NlbnRlcidcbiAgICAgICAgPyBgY2FsYyg1MCUgLSAke3RoaXMuYXJyb3dIZWlnaHQgLyAyfXB4KWBcbiAgICAgICAgOiAnJztcbiAgICBjb25zdCB0b3AgPSBwb3NbMV0gPT09ICdiZWxvdycgPyBgJHt0aGlzLmFycm93T2Zmc2V0WSAtIHRoaXMuYXJyb3dIZWlnaHQgLyAyfXB4YCA6ICcnO1xuXG4gICAgdGhpcy5hcnJvd1N0eWxlcyA9XG4gICAgICBwb3NbMF0gPT09ICdhYm92ZScgfHwgcG9zWzBdID09PSAnYmVsb3cnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgbGVmdDogdGhpcy5kaXJlY3Rpb24gPT09ICdsdHInID8gbGVmdCA6IHJpZ2h0LFxuICAgICAgICAgICAgcmlnaHQ6IHRoaXMuZGlyZWN0aW9uID09PSAnbHRyJyA/IHJpZ2h0IDogbGVmdCxcbiAgICAgICAgICB9XG4gICAgICAgIDogeyB0b3AsIGJvdHRvbSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEl0J3MgbmVjZXNzYXJ5IHRvIHNldCBwb3NpdGlvbi1iYXNlZCBjbGFzc2VzIHRvIGVuc3VyZSB0aGUgcG9wb3ZlciBwYW5lbCBhbmltYXRpb25cbiAgICogZm9sZHMgb3V0IGZyb20gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxuICAgKi9cbiAgc2V0UG9zaXRpb25DbGFzc2VzKHBvcyA9IHRoaXMucG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWJlZm9yZS1hYm92ZSddID0gcG9zWzBdID09PSAnYmVmb3JlJyAmJiBwb3NbMV0gPT09ICdhYm92ZSc7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWZvcmUtY2VudGVyJ10gPSBwb3NbMF0gPT09ICdiZWZvcmUnICYmIHBvc1sxXSA9PT0gJ2NlbnRlcic7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWZvcmUtYmVsb3cnXSA9IHBvc1swXSA9PT0gJ2JlZm9yZScgJiYgcG9zWzFdID09PSAnYmVsb3cnO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWZ0ZXItYWJvdmUnXSA9IHBvc1swXSA9PT0gJ2FmdGVyJyAmJiBwb3NbMV0gPT09ICdhYm92ZSc7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1hZnRlci1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2FmdGVyJyAmJiBwb3NbMV0gPT09ICdjZW50ZXInO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWZ0ZXItYmVsb3cnXSA9IHBvc1swXSA9PT0gJ2FmdGVyJyAmJiBwb3NbMV0gPT09ICdiZWxvdyc7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1hYm92ZS1iZWZvcmUnXSA9IHBvc1swXSA9PT0gJ2Fib3ZlJyAmJiBwb3NbMV0gPT09ICdiZWZvcmUnO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWJvdmUtY2VudGVyJ10gPSBwb3NbMF0gPT09ICdhYm92ZScgJiYgcG9zWzFdID09PSAnY2VudGVyJztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWFib3ZlLWFmdGVyJ10gPSBwb3NbMF0gPT09ICdhYm92ZScgJiYgcG9zWzFdID09PSAnYWZ0ZXInO1xuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYmVsb3ctYmVmb3JlJ10gPSBwb3NbMF0gPT09ICdiZWxvdycgJiYgcG9zWzFdID09PSAnYmVmb3JlJztcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWJlbG93LWNlbnRlciddID0gcG9zWzBdID09PSAnYmVsb3cnICYmIHBvc1sxXSA9PT0gJ2NlbnRlcic7XG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWxvdy1hZnRlciddID0gcG9zWzBdID09PSAnYmVsb3cnICYmIHBvc1sxXSA9PT0gJ2FmdGVyJztcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBwb3BvdmVyLXBhbmVsJ3MgZWxldmF0aW9uLiAqL1xuICBzZXRFbGV2YXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RWxldmF0aW9uID0gYCR7dGhpcy5fZWxldmF0aW9uUHJlZml4fSR7dGhpcy5lbGV2YXRpb259YDtcblxuICAgIGlmICh0aGlzLl9wcmV2aW91c0VsZXZhdGlvbikge1xuICAgICAgdGhpcy5fY2xhc3NMaXN0W3RoaXMuX3ByZXZpb3VzRWxldmF0aW9uXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX2NsYXNzTGlzdFtuZXdFbGV2YXRpb25dID0gdHJ1ZTtcbiAgICB0aGlzLl9wcmV2aW91c0VsZXZhdGlvbiA9IG5ld0VsZXZhdGlvbjtcbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGVudGVyIGFuaW1hdGlvbi4gKi9cbiAgX3N0YXJ0QW5pbWF0aW9uKCkge1xuICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgQ29tYmluZSB3aXRoIF9yZXNldEFuaW1hdGlvbi5cbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIHBhbmVsIGFuaW1hdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS4gKi9cbiAgX3Jlc2V0QW5pbWF0aW9uKCkge1xuICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgQ29tYmluZSB3aXRoIF9zdGFydEFuaW1hdGlvbi5cbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICB9XG5cbiAgLyoqIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBwYW5lbCBhbmltYXRpb24gY29tcGxldGVzLiAqL1xuICBfb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUubmV4dChldmVudCk7XG4gICAgdGhpcy5faXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIHRoaXMuX2lzQW5pbWF0aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jbG9zZU9uUGFuZWxDbGljazogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZvY3VzVHJhcEVuYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGFzQmFja2Ryb3A6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  export * from './popover-module';
2
2
  export * from './popover';
3
+ export * from './popover-content';
3
4
  export * from './popover-trigger';
4
5
  export * from './popover-target';
5
6
  export * from './popover-animations';
6
7
  export * from './popover-interfaces';
7
8
  export * from './popover-types';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLXRyaWdnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLXRhcmdldCc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItdHlwZXMnO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvcG9wb3Zlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvcG92ZXItbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlcic7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItY29udGVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItdHJpZ2dlcic7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItdGFyZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci1hbmltYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci1pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XG4iXX0=