ng-virtual-list 14.7.6 β†’ 14.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  πŸš€ High-performance virtual scrolling for Angular apps. Render 100,000+ items in Angular without breaking a sweat. Smooth, customizable, and developer-friendly.
4
4
 
5
- Flexible, and actively maintained Angular library that excels with high-performance, feature-rich virtualized listsβ€”including grouping, sticky headers, snapping, animations, single and multiple selection of elements and both scroll directions. Whether you're rendering millions of items or building interactive list components, it delivers scalability and customization. Angular (14–20) compatibility.
5
+ Flexible, and actively maintained Angular library that excels with high-performance, feature-rich virtualized listsβ€”including grouping, sticky headers, snapping, animations, collapsing group elements, single and multiple selection of elements and both scroll directions. Whether you're rendering millions of items or building interactive list components, it delivers scalability and customization. Angular (14–20) compatibility.
6
6
 
7
7
  <img width="1033" height="171" alt="logo" src="https://github.com/user-attachments/assets/b559cfde-405a-4361-b71b-6715478d997d" />
8
8
 
@@ -26,8 +26,9 @@ Flexible, and actively maintained Angular library that excels with high-performa
26
26
  πŸ“± Works everywhere β€” smooth on desktop & mobile.<br/>
27
27
  πŸ”€ Flexible layouts β€” vertical, horizontal, grouped lists, sticky headers.<br/>
28
28
  πŸ“ Dynamic sizes β€” handles items of varying height/width.<br/>
29
- 🎯 Precise control β€” scroll to an ID, or snap to positions.<br/>
30
- πŸ”Œ Angular-friendly β€” simple inputs/outputs, trackBy support.<br/>
29
+ πŸ” Precise control β€” scroll to an ID, or snap to positions.<br/>
30
+ βœ… Selecting elements β€” ability to work in Select and MultiSelect modes.<br/>
31
+ 🧩 Collapsing group elements β€” ability to collapse group elements (elements with the "stickiness" parameter).<br/>
31
32
 
32
33
  <br/>
33
34
 
@@ -48,6 +49,8 @@ Flexible, and actively maintained Angular library that excels with high-performa
48
49
  - Multiple selection
49
50
  - Performance tuning
50
51
  - bufferSize and maxBufferSize for fine-grained control
52
+ - Collapsing groups
53
+ - collapse group elements
51
54
 
52
55
  <br/>
53
56
 
@@ -74,6 +77,8 @@ Single and multiple selection of elements
74
77
 
75
78
  Navigating with the keyboard
76
79
 
80
+ Collapsing groups
81
+
77
82
  Support for element animation
78
83
 
79
84
  <br/>
@@ -563,6 +568,7 @@ Inputs
563
568
  | itemRenderer | TemplateRef | Rendering element template. |
564
569
  | methodForSelecting | [MethodForSelecting](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/enums/method-for-selecting.ts) | Method for selecting list items. Default value is 'none'. 'select' - List items are selected one by one. 'multi-select' - Multiple selection of list items. 'none' - List items are not selectable. |
565
570
  | itemConfigMap | [IVirtualListItemConfigMap?](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/models/item-config-map.model.ts) | Sets `sticky` position and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied. If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end. Default value is `0`. `selectable` determines whether an element can be selected or not. Default value is `true`. |
571
+ | collapseByClick | boolean? = true | If `false`, the element is collapsed using the config.collapse method passed to the template; if `true`, the element is collapsed by clicking on it. The default value is `true`. |
566
572
  | selectByClick | boolean? = true | If `false`, the element is selected using the config.select method passed to the template; if `true`, the element is selected by clicking on it. The default value is `true`. |
567
573
  | snap | boolean? = false | Determines whether elements will snap. Default value is "false". |
568
574
  | snappingMethod | [SnappingMethod? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) | Snapping method. 'normal' - Normal group rendering. 'advanced' - The group is rendered on a transparent background. List items below the group are not rendered. |
@@ -571,6 +577,7 @@ Inputs
571
577
  | enabledBufferOptimization | boolean? = true | Experimental! Enables buffer optimization. Can only be used if items in the collection are not added or updated. |
572
578
  | trackBy | string? = 'id' | The name of the property by which tracking is performed. |
573
579
  | selectedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Sets the selected items. |
580
+ | collapsedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts)> | Sets the collapsed items. |
574
581
 
575
582
  <br/>
576
583
 
@@ -582,9 +589,21 @@ Outputs
582
589
  | onScroll | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/models/scroll-event.model.ts)) => void | Fires when the list has been scrolled. |
583
590
  | onScrollEnd | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/models/scroll-event.model.ts)) => void | Fires when the list has completed scrolling. |
584
591
  | onSelect | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Fires when an elements are selected. |
592
+ | onCollapse | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Fires when elements are collapsed. |
585
593
  | onViewportChange | [ISize](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/size.ts) | Fires when the viewport size is changed. |
586
594
 
587
595
 
596
+ <br/>
597
+
598
+ Methods
599
+
600
+ | Method | Type | Description |
601
+ |--|--|--|
602
+ | scrollTo | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior: ScrollBehavior = 'auto') => number | The method scrolls the list to the element with the given id and returns the value of the scrolled area. Behavior accepts the values ​​"auto", "instant" and "smooth". |
603
+ | scrollToEnd | (behavior?: ScrollBehavior) => void | Scrolls the scroll area to the desired element with the specified ID. |
604
+ | getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior?: ScrollBehavior) => void | Returns the bounds of an element with a given id |
605
+
606
+
588
607
  <br/>
589
608
 
590
609
  Methods
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, POSITION_ABSOLUTE, POSITION_STICKY, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, ZEROS_TRANSLATE_3D, } from '../const';
2
+ import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, POSITION_ABSOLUTE, POSITION_STICKY, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, ZEROS_TRANSLATE_3D, } from '../const';
3
3
  import { BaseVirtualListItemComponent } from '../models/base-virtual-list-item-component';
4
4
  import { map, takeUntil, tap } from 'rxjs/operators';
5
5
  import { BehaviorSubject, combineLatest, fromEvent, Subject } from 'rxjs';
@@ -7,7 +7,7 @@ import { MethodsForSelectingTypes } from '../enums/method-for-selecting-types';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../ng-virtual-list.service";
9
9
  import * as i2 from "@angular/common";
10
- const ATTR_AREA_SELECTED = 'area-selected', TABINDEX = 'index', KEY_SPACE = " ", KEY_ARR_LEFT = "ArrowLeft", KEY_ARR_UP = "ArrowUp", KEY_ARR_RIGHT = "ArrowRight", KEY_ARR_DOWN = "ArrowDown";
10
+ const ATTR_AREA_SELECTED = 'area-selected', TABINDEX = 'index', KEY_SPACE = " ", KEY_ARR_LEFT = "ArrowLeft", KEY_ARR_UP = "ArrowUp", KEY_ARR_RIGHT = "ArrowRight", KEY_ARR_DOWN = "ArrowDown", EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown';
11
11
  /**
12
12
  * Virtual list item component
13
13
  * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-virtual-list-item.component.ts
@@ -23,11 +23,14 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
23
23
  this._$unsubscribe = new Subject();
24
24
  this._part = PART_DEFAULT_ITEM;
25
25
  this._isSelected = false;
26
+ this._isCollapsed = false;
26
27
  this._$config = new BehaviorSubject({});
27
28
  this.$config = this._$config.asObservable();
28
29
  this.measures = new BehaviorSubject(undefined);
29
30
  this._$focus = new BehaviorSubject(false);
30
31
  this.$focus = this._$focus.asObservable();
32
+ this._$part = new BehaviorSubject(PART_DEFAULT_ITEM);
33
+ this.$part = this._$part.asObservable();
31
34
  this.regular = false;
32
35
  this._$data = new BehaviorSubject(this.data);
33
36
  this.$data = this._$data.asObservable();
@@ -40,24 +43,37 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
40
43
  (selected = undefined) => {
41
44
  this._service.select(data, selected);
42
45
  };
46
+ this._collapseHandler = (data) =>
47
+ /**
48
+ * Collapse list items
49
+ * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.
50
+ */
51
+ (collapsed = undefined) => {
52
+ this._service.collapse(data, collapsed);
53
+ };
43
54
  this._id = this._service.generateComponentId();
44
55
  const $data = this.$data;
45
- fromEvent(this.element, 'focusin').pipe(takeUntil(this._$unsubscribe), tap(e => {
56
+ fromEvent(this.element, EVENT_FOCUS_IN).pipe(takeUntil(this._$unsubscribe), tap(e => {
46
57
  this._$focus.next(true);
47
58
  this.updateConfig(this.data);
48
- this.updatePartStr(this.data, this._isSelected);
59
+ this.updatePartStr(this.data, this._isSelected, this._isCollapsed);
49
60
  })).subscribe(),
50
- fromEvent(this.element, 'focusout').pipe(takeUntil(this._$unsubscribe), tap(e => {
61
+ fromEvent(this.element, EVENT_FOCUS_OUT).pipe(takeUntil(this._$unsubscribe), tap(e => {
51
62
  this._$focus.next(false);
52
63
  this.updateConfig(this.data);
53
- this.updatePartStr(this.data, this._isSelected);
64
+ this.updatePartStr(this.data, this._isSelected, this._isCollapsed);
54
65
  })).subscribe(),
55
- fromEvent(this.element, 'keydown').pipe(takeUntil(this._$unsubscribe), tap(e => {
66
+ fromEvent(this.element, EVENT_KEY_DOWN).pipe(takeUntil(this._$unsubscribe), tap(e => {
56
67
  switch (e.key) {
57
68
  case KEY_SPACE: {
58
69
  e.stopImmediatePropagation();
59
70
  e.preventDefault();
60
- this._service.select(this.data);
71
+ if (this._service.selectByClick) {
72
+ this._service.select(this.data);
73
+ }
74
+ if (this._service.collapseByClick) {
75
+ this._service.collapse(this.data);
76
+ }
61
77
  break;
62
78
  }
63
79
  case KEY_ARR_LEFT:
@@ -90,28 +106,30 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
90
106
  break;
91
107
  }
92
108
  })).subscribe();
93
- combineLatest([$data, this._service.$methodOfSelecting, this._service.$selectedIds]).pipe(takeUntil(this._$unsubscribe), map(([, m, ids]) => ({ method: m, ids })), tap(({ method, ids }) => {
109
+ combineLatest([$data, this._service.$methodOfSelecting, this._service.$selectedIds, this._service.$collapsedIds]).pipe(takeUntil(this._$unsubscribe), map(([, m, selectedIds, collapsedIds]) => ({ method: m, selectedIds, collapsedIds })), tap(({ method, selectedIds, collapsedIds }) => {
94
110
  switch (method) {
95
111
  case MethodsForSelectingTypes.SELECT: {
96
- const id = ids, isSelected = id === this.itemId;
97
- this._elementRef.nativeElement.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
112
+ const id = selectedIds, isSelected = id === this.itemId;
113
+ this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
98
114
  this._isSelected = isSelected;
99
115
  break;
100
116
  }
101
117
  case MethodsForSelectingTypes.MULTI_SELECT: {
102
- const actualIds = ids, isSelected = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);
103
- this._elementRef.nativeElement.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
118
+ const actualIds = selectedIds, isSelected = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);
119
+ this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
104
120
  this._isSelected = isSelected;
105
121
  break;
106
122
  }
107
123
  case MethodsForSelectingTypes.NONE:
108
124
  default: {
109
- this._elementRef.nativeElement.removeAttribute(ATTR_AREA_SELECTED);
125
+ this.element.removeAttribute(ATTR_AREA_SELECTED);
110
126
  this._isSelected = false;
111
127
  break;
112
128
  }
113
129
  }
114
- this.updatePartStr(this.data, this._isSelected);
130
+ const actualIds = collapsedIds, isCollapsed = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);
131
+ this._isCollapsed = isCollapsed;
132
+ this.updatePartStr(this.data, this._isSelected, isCollapsed);
115
133
  this.updateConfig(this.data);
116
134
  this.updateMeasures(this.data);
117
135
  })).subscribe();
@@ -125,7 +143,7 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
125
143
  return;
126
144
  }
127
145
  this.data = v;
128
- this.updatePartStr(v, this._isSelected);
146
+ this.updatePartStr(v, this._isSelected, this._isCollapsed);
129
147
  this.updateConfig(v);
130
148
  this.updateMeasures(v);
131
149
  this.update();
@@ -178,7 +196,10 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
178
196
  this.measures.next(v?.measures ? { ...v.measures } : undefined);
179
197
  }
180
198
  updateConfig(v) {
181
- this._$config.next({ ...v?.config || {}, selected: this._isSelected, select: this._selectHandler(v), focus: this._$focus.getValue() });
199
+ this._$config.next({
200
+ ...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focus: this._$focus.getValue(),
201
+ collapse: this._collapseHandler(v), select: this._selectHandler(v)
202
+ });
182
203
  }
183
204
  update() {
184
205
  const data = this.data, regular = this.regular, length = this._regularLength;
@@ -206,7 +227,7 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
206
227
  }
207
228
  this._cdr.markForCheck();
208
229
  }
209
- updatePartStr(v, isSelected) {
230
+ updatePartStr(v, isSelected, isCollapsed) {
210
231
  let odd = false;
211
232
  if (v?.index !== undefined) {
212
233
  odd = v.index % 2 === 0;
@@ -219,10 +240,13 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
219
240
  if (isSelected) {
220
241
  part += PART_ITEM_SELECTED;
221
242
  }
243
+ if (isCollapsed) {
244
+ part += PART_ITEM_COLLAPSED;
245
+ }
222
246
  if (this._$focus.getValue()) {
223
247
  part += PART_ITEM_FOCUSED;
224
248
  }
225
- this._part = part;
249
+ this._$part.next(part);
226
250
  }
227
251
  getBounds() {
228
252
  const el = this._elementRef.nativeElement, { width, height } = el.getBoundingClientRect();
@@ -273,12 +297,12 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
273
297
  }
274
298
  }
275
299
  NgVirtualListItemComponent.Ι΅fac = i0.Ι΅Ι΅ngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgVirtualListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.NgVirtualListService }], target: i0.Ι΅Ι΅FactoryTarget.Component });
276
- NgVirtualListItemComponent.Ι΅cmp = i0.Ι΅Ι΅ngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgVirtualListItemComponent, selector: "ng-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"data\">\r\n <div #listItem [part]=\"part\" [attr.index]=\"data.config.tabIndex\" tabindex=\"1\" class=\"ngvl-item__container\" [ngClass]=\"{'snapped': data.config.snapped,\r\n 'snapped-out': data.config.snappedOut, 'focus': $focus | async}\" (click)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"{data: data.data || {}, measures: measures | async, config: $config | async}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
300
+ NgVirtualListItemComponent.Ι΅cmp = i0.Ι΅Ι΅ngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgVirtualListItemComponent, selector: "ng-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"data\">\r\n <div #listItem [part]=\"$part | async\" [attr.index]=\"data.config.tabIndex\" tabindex=\"0\" class=\"ngvl-item__container\" [ngClass]=\"{'snapped': data.config.snapped,\r\n 'snapped-out': data.config.snappedOut, 'focus': $focus | async}\" (click)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"{data: data.data || {}, measures: measures | async, config: $config | async}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
277
301
  i0.Ι΅Ι΅ngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgVirtualListItemComponent, decorators: [{
278
302
  type: Component,
279
303
  args: [{ selector: 'ng-virtual-list-item', host: {
280
304
  'class': 'ngvl__item',
281
305
  'role': 'listitem',
282
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"data\">\r\n <div #listItem [part]=\"part\" [attr.index]=\"data.config.tabIndex\" tabindex=\"1\" class=\"ngvl-item__container\" [ngClass]=\"{'snapped': data.config.snapped,\r\n 'snapped-out': data.config.snappedOut, 'focus': $focus | async}\" (click)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"{data: data.data || {}, measures: measures | async, config: $config | async}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"] }]
306
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"data\">\r\n <div #listItem [part]=\"$part | async\" [attr.index]=\"data.config.tabIndex\" tabindex=\"0\" class=\"ngvl-item__container\" [ngClass]=\"{'snapped': data.config.snapped,\r\n 'snapped-out': data.config.snappedOut, 'focus': $focus | async}\" (click)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"{data: data.data || {}, measures: measures | async, config: $config | async}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"] }]
283
307
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgVirtualListService }]; } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFDaE8sU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsR0FDbkYsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQWtCL0UsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLEVBQUUsUUFBUSxHQUFHLE9BQU8sRUFDNUQsU0FBUyxHQUFHLEdBQUcsRUFBRSxZQUFZLEdBQUcsV0FBVyxFQUFFLFVBQVUsR0FBRyxTQUFTLEVBQUUsYUFBYSxHQUFHLFlBQVksRUFBRSxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBRWhJOzs7OztHQUtHO0FBV0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDRCQUE0QjtJQWtHMUUsWUFBb0IsSUFBdUIsRUFBVSxXQUFvQyxFQUFVLFFBQThCO1FBQy9ILEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQWpHdkgsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3RDLFVBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUcxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBaUIsQ0FBQyxDQUFDO1FBQ3ZFLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXZDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FLZixTQUFTLENBQUMsQ0FBQztRQUVsQixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFckMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUlqQixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQXFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RSxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQXNCbkMsbUJBQWMsR0FBVyxnQkFBZ0IsQ0FBQztRQXFDMUMsbUJBQWMsR0FBRyxDQUFDLElBQTZDLEVBQUUsRUFBRTtRQUN6RTs7O1dBR0c7UUFDSCxDQUFDLFdBQWdDLFNBQVMsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7UUFJRixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXpCLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRTtZQUVYLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRTtZQUViLFNBQVMsQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3BELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDTixRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsS0FBSyxTQUFTLENBQUMsQ0FBQzt3QkFDZCxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2hDLE1BQU07cUJBQ1A7b0JBQ0QsS0FBSyxZQUFZO3dCQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRTs0QkFDeEMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7NEJBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3lCQUNsQjt3QkFDRCxNQUFNO29CQUNSLEtBQUssVUFBVTt3QkFDYixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFOzRCQUN2QyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ2xCO3dCQUNELE1BQU07b0JBQ1IsS0FBSyxhQUFhO3dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUU7NEJBQ3hDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDOzRCQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt5QkFDbEI7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFlBQVk7d0JBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRTs0QkFDdkMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7NEJBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3lCQUNsQjt3QkFDRCxNQUFNO2lCQUNUO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQixhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN2RixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQ3pDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDdEIsUUFBUSxNQUFNLEVBQUU7Z0JBQ2QsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxFQUFFLEdBQUcsR0FBcUIsRUFBRSxVQUFVLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDcEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7b0JBQzlCLE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDMUMsTUFBTSxTQUFTLEdBQUcsR0FBZ0IsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzSCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3BGLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO29CQUM5QixNQUFNO2lCQUNQO2dCQUNELEtBQUssd0JBQXdCLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLE1BQU07aUJBQ1A7YUFDRjtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBcE1ELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBR0QsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQXVCakMsSUFBSSxJQUFJLENBQUMsQ0FBcUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBSSxhQUFhLENBQUMsQ0FBUztRQUN6QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBSSxRQUFRLENBQUMsQ0FBK0I7UUFDMUMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFtSE8sU0FBUztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFpQixJQUFJLFFBQVEsS0FBSyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RyxJQUFJLEVBQUUsRUFBRTtnQkFDTixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDWjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBaUIsSUFBSSxRQUFRLEtBQUssUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEcsSUFBSSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ1o7U0FDRjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsQ0FBMEM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUEwQztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sSUFBSSxFQUFpQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4SixDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0UsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDcEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUN2QixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztnQkFBQSxDQUFDO2dCQUN0TSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtvQkFDekMsTUFBTSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7aUJBQ25DO2FBQ0Y7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztnQkFDcEMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7aUJBQzlKO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO2lCQUN0SjthQUNGO1lBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1lBQ2hKLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztTQUMvSTtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxDQUFxQyxFQUFFLFVBQW1CO1FBQzlFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzFCLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM3QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNoQyxJQUFJLElBQUksaUJBQWlCLENBQUM7U0FDM0I7UUFDRCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksSUFBSSxrQkFBa0IsQ0FBQztTQUM1QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQixJQUFJLElBQUksaUJBQWlCLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFBRSxHQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDcEQsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGFBQWEsRUFBRTtnQkFDcEMsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7U0FDaEM7YUFBTTtZQUNMLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsRUFBRTtnQkFDNUMsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztTQUN4QztRQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLGNBQWMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFlBQVksRUFBRTtnQkFDbkMsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRTtnQkFDM0MsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztTQUN2QztRQUNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7UUFDcEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztRQUN0QyxNQUFNLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDOzt1SEF4VVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsK0pDakR2Qyw2bUJBUWU7MkZEeUNGLDBCQUEwQjtrQkFWdEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFHMUI7d0JBQ0osT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgSWQsIElSZWN0LCBJU2l6ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0VWRU4sIFBBUlRfSVRFTV9GT0NVU0VELCBQQVJUX0lURU1fT0RELCBQQVJUX0lURU1fU0VMRUNURUQsIFBBUlRfSVRFTV9TTkFQUEVELCBQT1NJVElPTl9BQlNPTFVURSwgUE9TSVRJT05fU1RJQ0tZLCBQWCwgU0laRV8xMDBfUEVSU0VOVCxcclxuICBTSVpFX0FVVE8sIFRSQU5TTEFURV8zRCwgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSwgWkVST1NfVFJBTlNMQVRFXzNELFxyXG59IGZyb20gJy4uL2NvbnN0JztcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21vZGVscy9iYXNlLXZpcnR1YWwtbGlzdC1pdGVtLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL3JlbmRlci1pdGVtLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcyB9IGZyb20gJy4uL2VudW1zL21ldGhvZC1mb3Itc2VsZWN0aW5nLXR5cGVzJztcclxuXHJcbmludGVyZmFjZSBJSXRlbUNvbmZpZyBleHRlbmRzIElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db25maWcge1xyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqL1xyXG4gIGZvY3VzOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCBvciBub3QuXHJcbiAgICovXHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICAqIFNlbGVjdHMgYSBsaXN0IGl0ZW1cclxuICAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgICovXHJcbiAgc2VsZWN0OiAoc2VsZWN0ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmNvbnN0IEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJywgVEFCSU5ERVggPSAnaW5kZXgnLFxyXG4gIEtFWV9TUEFDRSA9IFwiIFwiLCBLRVlfQVJSX0xFRlQgPSBcIkFycm93TGVmdFwiLCBLRVlfQVJSX1VQID0gXCJBcnJvd1VwXCIsIEtFWV9BUlJfUklHSFQgPSBcIkFycm93UmlnaHRcIiwgS0VZX0FSUl9ET1dOID0gXCJBcnJvd0Rvd25cIjtcclxuXHJcbi8qKlxyXG4gKiBWaXJ0dWFsIGxpc3QgaXRlbSBjb21wb25lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgJ3JvbGUnOiAnbGlzdGl0ZW0nLFxyXG4gIH0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gIHByb3RlY3RlZCBfJHVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGFydCA9IFBBUlRfREVGQVVMVF9JVEVNO1xyXG4gIGdldCBwYXJ0KCkgeyByZXR1cm4gdGhpcy5fcGFydDsgfVxyXG5cclxuICBwcml2YXRlIF9pc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfJGNvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUl0ZW1Db25maWc+KHt9IGFzIElJdGVtQ29uZmlnKTtcclxuICAkY29uZmlnID0gdGhpcy5fJGNvbmZpZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgbWVhc3VyZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZWN0ICYge1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZWx0YSBpcyBjYWxjdWxhdGVkIGZvciBTbmFwcGluZyBNZXRob2QuQURWQU5DRURcclxuICAgICAqL1xyXG4gICAgZGVsdGE6IG51bWJlcjtcclxuICB9IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICBwcml2YXRlIF8kZm9jdXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAkZm9jdXMgPSB0aGlzLl8kZm9jdXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHJlZ3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQ+KHRoaXMuZGF0YSk7XHJcbiAgcHJpdmF0ZSAkZGF0YSA9IHRoaXMuXyRkYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBzZXQgaXRlbSh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlUGFydFN0cih2LCB0aGlzLl9pc1NlbGVjdGVkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fJGRhdGEubmV4dCh2KTtcclxuXHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVndWxhckxlbmd0aDogc3RyaW5nID0gU0laRV8xMDBfUEVSU0VOVDtcclxuICBzZXQgcmVndWxhckxlbmd0aCh2OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl9yZWd1bGFyTGVuZ3RoID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWd1bGFyTGVuZ3RoID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uaWQ7XHJcbiAgfVxyXG5cclxuICBpdGVtUmVuZGVyZXI6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHNldCByZW5kZXJlcih2OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtUmVuZGVyZXIgPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbVJlbmRlcmVyID0gdjtcclxuXHJcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RIYW5kbGVyID0gKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkgPT5cclxuICAgIC8qKlxyXG4gICAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgICAqL1xyXG4gICAgKHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGEsIHNlbGVjdGVkKTtcclxuICAgIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9zZXJ2aWNlOiBOZ1ZpcnR1YWxMaXN0U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX2lkID0gdGhpcy5fc2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudElkKCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGEgPSB0aGlzLiRkYXRhO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdmb2N1c2luJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcChlID0+IHtcclxuICAgICAgICB0aGlzLl8kZm9jdXMubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuZGF0YSwgdGhpcy5faXNTZWxlY3RlZCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKSxcclxuXHJcbiAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdmb2N1c291dCcpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fJGZvY3VzLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuZGF0YSwgdGhpcy5faXNTZWxlY3RlZCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCksXHJcblxyXG4gICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5lbGVtZW50LCAna2V5ZG93bicpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChlLmtleSkge1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9TUEFDRToge1xyXG4gICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBLRVlfQVJSX0xFRlQ6XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNQcmV2KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9BUlJfVVA6XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXYoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9SSUdIVDpcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c05leHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9ET1dOOlxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCB0aGlzLl9zZXJ2aWNlLiRtZXRob2RPZlNlbGVjdGluZywgdGhpcy5fc2VydmljZS4kc2VsZWN0ZWRJZHNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgbWFwKChbLCBtLCBpZHNdKSA9PiAoeyBtZXRob2Q6IG0sIGlkcyB9KSksXHJcbiAgICAgIHRhcCgoeyBtZXRob2QsIGlkcyB9KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLlNFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBpZCA9IGlkcyBhcyBJZCB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZCA9IGlkID09PSB0aGlzLml0ZW1JZDtcclxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBpZHMgYXMgQXJyYXk8SWQ+LCBpc1NlbGVjdGVkID0gdGhpcy5pdGVtSWQgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxJZHMgJiYgYWN0dWFsSWRzLmluY2x1ZGVzKHRoaXMuaXRlbUlkKTtcclxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk5PTkU6XHJcbiAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVEKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlUGFydFN0cih0aGlzLmRhdGEsIHRoaXMuX2lzU2VsZWN0ZWQpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLmRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHRoaXMuZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNOZXh0KCkge1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLl8kY29uZmlnLmdldFZhbHVlKCk/LnRhYkluZGV4ID8/IDA7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCAmJiB0YWJJbmRleCA+IDApIHtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGBbJHtUQUJJTkRFWH09XCIke3RhYkluZGV4ICsgMX1cIl1gKTtcclxuICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgZWwuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1c1ByZXYoKSB7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKT8udGFiSW5kZXggPz8gMDtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50ICYmIHRhYkluZGV4ID4gMSkge1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYFske1RBQklOREVYfT1cIiR7dGFiSW5kZXggLSAxfVwiXWApO1xyXG4gICAgICBpZiAoZWwpIHtcclxuICAgICAgICBlbC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU1lYXN1cmVzKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5tZWFzdXJlcy5uZXh0KHY/Lm1lYXN1cmVzID8geyAuLi52Lm1lYXN1cmVzIH0gOiB1bmRlZmluZWQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuXyRjb25maWcubmV4dCh7IC4uLnY/LmNvbmZpZyB8fCB7fSBhcyBJSXRlbUNvbmZpZywgc2VsZWN0ZWQ6IHRoaXMuX2lzU2VsZWN0ZWQsIHNlbGVjdDogdGhpcy5fc2VsZWN0SGFuZGxlcih2KSwgZm9jdXM6IHRoaXMuXyRmb2N1cy5nZXRWYWx1ZSgpIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoO1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICBpZiAoZGF0YS5jb25maWcuc25hcHBlZCkge1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBkYXRhLmNvbmZpZy5zdGlja3kgPT09IDEgPyBaRVJPU19UUkFOU0xBVEVfM0QgOiBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7O1xyXG4gICAgICAgIGlmICghZGF0YS5jb25maWcuaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkKSB7XHJcbiAgICAgICAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9TVElDS1k7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICAgIGlmIChyZWd1bGFyKSB7XHJcbiAgICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy5kZWx0YX0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy5kZWx0YSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYXJ0U3RyKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGlmICh2Py5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9kZCA9IHYuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU07XHJcbiAgICBwYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9PREQgOiBQQVJUX0lURU1fRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TRUxFQ1RFRDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl8kZm9jdXMuZ2V0VmFsdWUoKSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9GT0NVU0VEO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGFydCA9IHBhcnQ7XHJcbiAgfVxyXG5cclxuICBnZXRCb3VuZHMoKTogSVNpemUge1xyXG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB7IHdpZHRoLCBoZWlnaHQgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZTtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1ZJU0lCTEU7XHJcbiAgICB9XHJcbiAgICBzdHlsZXMuekluZGV4ID0gdGhpcy5kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICB9XHJcbiAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9BQlNPTFVURTtcclxuICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBaRVJPU19UUkFOU0xBVEVfM0Q7XHJcbiAgICBzdHlsZXMuekluZGV4ID0gSElEREVOX1pJTkRFWDtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5fc2VydmljZS5pdGVtQ2xpY2sodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuXyR1bnN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLl8kdW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICB0aGlzLl8kdW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XHJcbiAgICA8ZGl2ICNsaXN0SXRlbSBbcGFydF09XCJwYXJ0XCIgW2F0dHIuaW5kZXhdPVwiZGF0YS5jb25maWcudGFiSW5kZXhcIiB0YWJpbmRleD1cIjFcIiBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydzbmFwcGVkJzogZGF0YS5jb25maWcuc25hcHBlZCxcclxuICAgICAgICAnc25hcHBlZC1vdXQnOiBkYXRhLmNvbmZpZy5zbmFwcGVkT3V0LCAnZm9jdXMnOiAkZm9jdXMgfCBhc3luY31cIiAoY2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtUmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtUmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkYXRhOiBkYXRhLmRhdGEgfHwge30sIG1lYXN1cmVzOiBtZWFzdXJlcyB8IGFzeW5jLCBjb25maWc6ICRjb25maWcgfCBhc3luY31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFDclAsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsR0FDbkYsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQTJCL0UsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLEVBQUUsUUFBUSxHQUFHLE9BQU8sRUFDNUQsU0FBUyxHQUFHLEdB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QkFBMEIsK0pDM0R2QyxzbkJBUWU7MkZEbURGLDBCQUEwQjtrQkFWdEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFHMUI7d0JBQ0osT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgSWQsIElSZWN0LCBJU2l6ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0NPTExBUFNFRCwgUEFSVF9JVEVNX0VWRU4sIFBBUlRfSVRFTV9GT0NVU0VELCBQQVJUX0lURU1fT0RELCBQQVJUX0lURU1fU0VMRUNURUQsIFBBUlRfSVRFTV9TTkFQUEVELCBQT1NJVElPTl9BQlNPTFVURSwgUE9TSVRJT05fU1RJQ0tZLCBQWCwgU0laRV8xMDBfUEVSU0VOVCxcclxuICBTSVpFX0FVVE8sIFRSQU5TTEFURV8zRCwgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSwgWkVST1NfVFJBTlNMQVRFXzNELFxyXG59IGZyb20gJy4uL2NvbnN0JztcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21vZGVscy9iYXNlLXZpcnR1YWwtbGlzdC1pdGVtLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL3JlbmRlci1pdGVtLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcyB9IGZyb20gJy4uL2VudW1zL21ldGhvZC1mb3Itc2VsZWN0aW5nLXR5cGVzJztcclxuXHJcbmludGVyZmFjZSBJSXRlbUNvbmZpZyBleHRlbmRzIElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db25maWcge1xyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZWxlbWVudCBoYXMgZm9jdXMgb3Igbm90LlxyXG4gICAqL1xyXG4gIGZvY3VzOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCBvciBub3QuXHJcbiAgICovXHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGNvbGxhcHNlZCBvciBub3QuXHJcbiAgICovXHJcbiAgY29sbGFwc2VkOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAgKiBTZWxlY3RzIGEgbGlzdCBpdGVtXHJcbiAgICAqIEBwYXJhbSBzZWxlY3RlZCAtIElmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIHRvZ2dsZSBtZXRob2QgaXMgZXhlY3V0ZWQsIGlmIGZhbHNlIG9yIHRydWUsIHRoZW4gdGhlIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBpcyBwZXJmb3JtZWQuXHJcbiAgICAqL1xyXG4gIHNlbGVjdDogKHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAgKiBDb2xsYXBzZSBsaXN0IGl0ZW1zXHJcbiAgICAqIEBwYXJhbSBjb2xsYXBzZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBjb2xsYXBzZS9leHBhbmQgaXMgcGVyZm9ybWVkLlxyXG4gICAgKi9cclxuICBjb2xsYXBzZTogKGNvbGxhcHNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcclxufVxyXG5cclxuY29uc3QgQVRUUl9BUkVBX1NFTEVDVEVEID0gJ2FyZWEtc2VsZWN0ZWQnLCBUQUJJTkRFWCA9ICdpbmRleCcsXHJcbiAgS0VZX1NQQUNFID0gXCIgXCIsIEtFWV9BUlJfTEVGVCA9IFwiQXJyb3dMZWZ0XCIsIEtFWV9BUlJfVVAgPSBcIkFycm93VXBcIiwgS0VZX0FSUl9SSUdIVCA9IFwiQXJyb3dSaWdodFwiLCBLRVlfQVJSX0RPV04gPSBcIkFycm93RG93blwiLFxyXG4gIEVWRU5UX0ZPQ1VTX0lOID0gJ2ZvY3VzaW4nLCBFVkVOVF9GT0NVU19PVVQgPSAnZm9jdXNvdXQnLCBFVkVOVF9LRVlfRE9XTiA9ICdrZXlkb3duJztcclxuXHJcbi8qKlxyXG4gKiBWaXJ0dWFsIGxpc3QgaXRlbSBjb21wb25lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgJ3JvbGUnOiAnbGlzdGl0ZW0nLFxyXG4gIH0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gIHByb3RlY3RlZCBfJHVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGFydCA9IFBBUlRfREVGQVVMVF9JVEVNO1xyXG4gIGdldCBwYXJ0KCkgeyByZXR1cm4gdGhpcy5fcGFydDsgfVxyXG5cclxuICBwcml2YXRlIF9pc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2lzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgXyRjb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElJdGVtQ29uZmlnPih7fSBhcyBJSXRlbUNvbmZpZyk7XHJcbiAgJGNvbmZpZyA9IHRoaXMuXyRjb25maWcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIG1lYXN1cmVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUmVjdCAmIHtcclxuICAgIC8qKlxyXG4gICAgICogRGVsdGEgaXMgY2FsY3VsYXRlZCBmb3IgU25hcHBpbmcgTWV0aG9kLkFEVkFOQ0VEXHJcbiAgICAgKi9cclxuICAgIGRlbHRhOiBudW1iZXI7XHJcbiAgfSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGZvY3VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgJGZvY3VzID0gdGhpcy5fJGZvY3VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcGFydCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihQQVJUX0RFRkFVTFRfSVRFTSk7XHJcbiAgJHBhcnQgPSB0aGlzLl8kcGFydC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcmVndWxhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF8kZGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZD4odGhpcy5kYXRhKTtcclxuICBwcml2YXRlICRkYXRhID0gdGhpcy5fJGRhdGEuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHNldCBpdGVtKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLmRhdGEgPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YSA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQYXJ0U3RyKHYsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fJGRhdGEubmV4dCh2KTtcclxuXHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVndWxhckxlbmd0aDogc3RyaW5nID0gU0laRV8xMDBfUEVSU0VOVDtcclxuICBzZXQgcmVndWxhckxlbmd0aCh2OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl9yZWd1bGFyTGVuZ3RoID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWd1bGFyTGVuZ3RoID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uaWQ7XHJcbiAgfVxyXG5cclxuICBpdGVtUmVuZGVyZXI6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHNldCByZW5kZXJlcih2OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtUmVuZGVyZXIgPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbVJlbmRlcmVyID0gdjtcclxuXHJcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RIYW5kbGVyID0gKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkgPT5cclxuICAgIC8qKlxyXG4gICAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgICAqL1xyXG4gICAgKHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGEsIHNlbGVjdGVkKTtcclxuICAgIH07XHJcblxyXG4gIHByaXZhdGUgX2NvbGxhcHNlSGFuZGxlciA9IChkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpID0+XHJcbiAgICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gY29sbGFwc2VkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgY29sbGFwc2UvZXhwYW5kIGlzIHBlcmZvcm1lZC5cclxuICAgICovXHJcbiAgICAoY29sbGFwc2VkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UoZGF0YSwgY29sbGFwc2VkKTtcclxuICAgIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9zZXJ2aWNlOiBOZ1ZpcnR1YWxMaXN0U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX2lkID0gdGhpcy5fc2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudElkKCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGEgPSB0aGlzLiRkYXRhO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX0lOKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRmb2N1cy5uZXh0KHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLmRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5kYXRhLCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKSxcclxuXHJcbiAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX09VVCkucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl8kZm9jdXMubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5kYXRhKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5kYXRhLCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCksXHJcblxyXG4gICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5lbGVtZW50LCBFVkVOVF9LRVlfRE9XTikucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGUua2V5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX1NQQUNFOiB7XHJcbiAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlcnZpY2Uuc2VsZWN0QnlDbGljaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZS5zZWxlY3QodGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlcnZpY2UuY29sbGFwc2VCeUNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmNvbGxhcHNlKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9MRUZUOlxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5fJGNvbmZpZy5nZXRWYWx1ZSgpLmlzVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzUHJldigpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1VQOlxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNQcmV2KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9BUlJfUklHSFQ6XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9BUlJfRE9XTjpcclxuICAgICAgICAgICAgICBpZiAodGhpcy5fJGNvbmZpZy5nZXRWYWx1ZSgpLmlzVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZGF0YSwgdGhpcy5fc2VydmljZS4kbWV0aG9kT2ZTZWxlY3RpbmcsIHRoaXMuX3NlcnZpY2UuJHNlbGVjdGVkSWRzLCB0aGlzLl9zZXJ2aWNlLiRjb2xsYXBzZWRJZHNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgbWFwKChbLCBtLCBzZWxlY3RlZElkcywgY29sbGFwc2VkSWRzXSkgPT4gKHsgbWV0aG9kOiBtLCBzZWxlY3RlZElkcywgY29sbGFwc2VkSWRzIH0pKSxcclxuICAgICAgdGFwKCh7IG1ldGhvZCwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkcyB9KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLlNFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBpZCA9IHNlbGVjdGVkSWRzIGFzIElkIHwgdW5kZWZpbmVkLCBpc1NlbGVjdGVkID0gaWQgPT09IHRoaXMuaXRlbUlkO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKEFUVFJfQVJFQV9TRUxFQ1RFRCwgU3RyaW5nKGlzU2VsZWN0ZWQpKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTVVMVElfU0VMRUNUOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbElkcyA9IHNlbGVjdGVkSWRzIGFzIEFycmF5PElkPiwgaXNTZWxlY3RlZCA9IHRoaXMuaXRlbUlkICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsSWRzICYmIGFjdHVhbElkcy5pbmNsdWRlcyh0aGlzLml0ZW1JZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVELCBTdHJpbmcoaXNTZWxlY3RlZCkpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1NlbGVjdGVkID0gaXNTZWxlY3RlZDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5OT05FOlxyXG4gICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKEFUVFJfQVJFQV9TRUxFQ1RFRCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBjb2xsYXBzZWRJZHMsIGlzQ29sbGFwc2VkID0gdGhpcy5pdGVtSWQgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxJZHMgJiYgYWN0dWFsSWRzLmluY2x1ZGVzKHRoaXMuaXRlbUlkKTtcclxuICAgICAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5kYXRhLCB0aGlzLl9pc1NlbGVjdGVkLCBpc0NvbGxhcHNlZCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlTWVhc3VyZXModGhpcy5kYXRhKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1c05leHQoKSB7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKT8udGFiSW5kZXggPz8gMDtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50ICYmIHRhYkluZGV4ID4gMCkge1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYFske1RBQklOREVYfT1cIiR7dGFiSW5kZXggKyAxfVwiXWApO1xyXG4gICAgICBpZiAoZWwpIHtcclxuICAgICAgICBlbC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzUHJldigpIHtcclxuICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5fJGNvbmZpZy5nZXRWYWx1ZSgpPy50YWJJbmRleCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQgJiYgdGFiSW5kZXggPiAxKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihgWyR7VEFCSU5ERVh9PVwiJHt0YWJJbmRleCAtIDF9XCJdYCk7XHJcbiAgICAgIGlmIChlbCkge1xyXG4gICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTWVhc3VyZXModjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLm1lYXN1cmVzLm5leHQodj8ubWVhc3VyZXMgPyB7IC4uLnYubWVhc3VyZXMgfSA6IHVuZGVmaW5lZClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fJGNvbmZpZy5uZXh0KHtcclxuICAgICAgLi4udj8uY29uZmlnIHx8IHt9IGFzIElJdGVtQ29uZmlnLCBzZWxlY3RlZDogdGhpcy5faXNTZWxlY3RlZCwgY29sbGFwc2VkOiB0aGlzLl9pc0NvbGxhcHNlZCwgZm9jdXM6IHRoaXMuXyRmb2N1cy5nZXRWYWx1ZSgpLFxyXG4gICAgICBjb2xsYXBzZTogdGhpcy5fY29sbGFwc2VIYW5kbGVyKHYpLCBzZWxlY3Q6IHRoaXMuX3NlbGVjdEhhbmRsZXIodilcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoO1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICBpZiAoZGF0YS5jb25maWcuc25hcHBlZCkge1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBkYXRhLmNvbmZpZy5zdGlja3kgPT09IDEgPyBaRVJPU19UUkFOU0xBVEVfM0QgOiBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7O1xyXG4gICAgICAgIGlmICghZGF0YS5jb25maWcuaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkKSB7XHJcbiAgICAgICAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9TVElDS1k7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICAgIGlmIChyZWd1bGFyKSB7XHJcbiAgICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy5kZWx0YX0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy5kZWx0YSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYXJ0U3RyKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIGlzQ29sbGFwc2VkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgb2RkID0gZmFsc2U7XHJcbiAgICBpZiAodj8uaW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvZGQgPSB2LmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGFydCA9IFBBUlRfREVGQVVMVF9JVEVNO1xyXG4gICAgcGFydCArPSBvZGQgPyBQQVJUX0lURU1fT0REIDogUEFSVF9JVEVNX0VWRU47XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLnNuYXBwZWQgOiBmYWxzZSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TTkFQUEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU2VsZWN0ZWQpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fU0VMRUNURUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNDb2xsYXBzZWQpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fQ09MTEFQU0VEO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuXyRmb2N1cy5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0ZPQ1VTRUQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl8kcGFydC5uZXh0KHBhcnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm91bmRzKCk6IElTaXplIHtcclxuICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9CTE9DSykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX0JMT0NLO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0eWxlcy52aXNpYmlsaXR5ID09PSBWSVNJQklMSVRZX1ZJU0lCTEUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9WSVNJQkxFO1xyXG4gICAgfVxyXG4gICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuZGF0YT8uY29uZmlnPy56SW5kZXggPz8gREVGQVVMVF9aSU5ERVg7XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX05PTkU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfSElEREVOO1xyXG4gICAgfVxyXG4gICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICBzdHlsZXMudHJhbnNmb3JtID0gWkVST1NfVFJBTlNMQVRFXzNEO1xyXG4gICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrSGFuZGxlcigpIHtcclxuICAgIHRoaXMuX3NlcnZpY2UuaXRlbUNsaWNrKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl8kdW5zdWJzY3JpYmUpIHtcclxuICAgICAgdGhpcy5fJHVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgdGhpcy5fJHVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAjbGlzdEl0ZW0gW3BhcnRdPVwiJHBhcnQgfCBhc3luY1wiIFthdHRyLmluZGV4XT1cImRhdGEuY29uZmlnLnRhYkluZGV4XCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJuZ3ZsLWl0ZW1fX2NvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnc25hcHBlZCc6IGRhdGEuY29uZmlnLnNuYXBwZWQsXHJcbiAgICAgICAgJ3NuYXBwZWQtb3V0JzogZGF0YS5jb25maWcuc25hcHBlZE91dCwgJ2ZvY3VzJzogJGZvY3VzIHwgYXN5bmN9XCIgKGNsaWNrKT1cIm9uQ2xpY2tIYW5kbGVyKClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVJlbmRlcmVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGF0YTogZGF0YS5kYXRhIHx8IHt9LCBtZWFzdXJlczogbWVhc3VyZXMgfCBhc3luYywgY29uZmlnOiAkY29uZmlnIHwgYXN5bmN9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
@@ -6,6 +6,7 @@ export const DEFAULT_MAX_BUFFER_SIZE = 100;
6
6
  export const DEFAULT_LIST_SIZE = 400;
7
7
  export const DEFAULT_SNAP = false;
8
8
  export const DEFAULT_SELECT_BY_CLICK = true;
9
+ export const DEFAULT_COLLAPSE_BY_CLICK = true;
9
10
  export const DEFAULT_ENABLED_BUFFER_OPTIMIZATION = false;
10
11
  export const DEFAULT_DYNAMIC_SIZE = false;
11
12
  export const TRACK_BY_PROPERTY_NAME = 'id';
@@ -49,5 +50,6 @@ export const PART_ITEM_ODD = ' item-odd';
49
50
  export const PART_ITEM_EVEN = ' item-even';
50
51
  export const PART_ITEM_SNAPPED = ' item-snapped';
51
52
  export const PART_ITEM_SELECTED = ' item-selected';
53
+ export const PART_ITEM_COLLAPSED = ' item-collapsed';
52
54
  export const PART_ITEM_FOCUSED = ' item-focused';
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxDQUFDLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0FBRTlELFVBQVU7QUFFVixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsWUFBWSxTQUFTLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUM7QUFFdEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQUVsRCxTQUFTO0FBRVQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZywgU25hcHBpbmdNZXRob2RzIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcbmltcG9ydCB7IERpcmVjdGlvbnMgfSBmcm9tIFwiLi4vZW51bXMvZGlyZWN0aW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTV9TSVpFID0gMjQ7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9CVUZGRVJfU0laRSA9IDI7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfQlVGRkVSX1NJWkUgPSAxMDA7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSVNUX1NJWkUgPSA0MDA7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TTkFQID0gZmFsc2U7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRUxFQ1RfQllfQ0xJQ0sgPSB0cnVlO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRU5BQkxFRF9CVUZGRVJfT1BUSU1JWkFUSU9OID0gZmFsc2U7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9EWU5BTUlDX1NJWkUgPSBmYWxzZTtcclxuXHJcbmV4cG9ydCBjb25zdCBUUkFDS19CWV9QUk9QRVJUWV9OQU1FID0gJ2lkJztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RJUkVDVElPTiA9IERpcmVjdGlvbnMuVkVSVElDQUw7XHJcblxyXG5leHBvcnQgY29uc3QgRElTUExBWV9PQkpFQ1RTX0xFTkdUSF9NRVNVUkVNRU5UX0VSUk9SID0gMTtcclxuXHJcbmV4cG9ydCBjb25zdCBNQVhfU0NST0xMX1RPX0lURVJBVElPTlMgPSA1O1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU05BUFBJTkdfTUVUSE9EID0gU25hcHBpbmdNZXRob2RzLk5PUk1BTDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFTEVDVF9NRVRIT0QgPSBNZXRob2RzRm9yU2VsZWN0aW5nLk5PTkU7XHJcblxyXG4vLyBwcmVzZXRzXHJcblxyXG5leHBvcnQgY29uc3QgQkVIQVZJT1JfQVVUTyA9ICdhdXRvJztcclxuXHJcbmV4cG9ydCBjb25zdCBCRUhBVklPUl9JTlNUQU5UID0gJ2luc3RhbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFSEFWSU9SX1NNT09USCA9ICdzbW9vdGgnO1xyXG5cclxuZXhwb3J0IGNvbnN0IERJU1BMQVlfQkxPQ0sgPSAnYmxvY2snO1xyXG5cclxuZXhwb3J0IGNvbnN0IERJU1BMQVlfTk9ORSA9ICdub25lJztcclxuXHJcbmV4cG9ydCBjb25zdCBPUEFDSVRZXzAgPSAnMCc7XHJcblxyXG5leHBvcnQgY29uc3QgT1BBQ0lUWV8xMDAgPSAnMTAwJztcclxuXHJcbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX1ZJU0lCTEUgPSAndmlzaWJsZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVklTSUJJTElUWV9ISURERU4gPSAnaGlkZGVuJztcclxuXHJcbmV4cG9ydCBjb25zdCBTSVpFXzEwMF9QRVJTRU5UID0gJzEwMCUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNJWkVfQVVUTyA9ICdhdXRvJztcclxuXHJcbmV4cG9ydCBjb25zdCBQT1NJVElPTl9BQlNPTFVURSA9ICdhYnNvbHV0ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgUE9TSVRJT05fU1RJQ0tZID0gJ3N0aWNreSc7XHJcblxyXG5leHBvcnQgY29uc3QgVFJBTlNMQVRFXzNEID0gJ3RyYW5zbGF0ZTNkJztcclxuXHJcbmV4cG9ydCBjb25zdCBaRVJPU19UUkFOU0xBVEVfM0QgPSBgJHtUUkFOU0xBVEVfM0R9KDAsMCwwKWA7XHJcblxyXG5leHBvcnQgY29uc3QgSElEREVOX1pJTkRFWCA9ICctMSc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9aSU5ERVggPSAnMCc7XHJcblxyXG5leHBvcnQgY29uc3QgVE9QX1BST1BfTkFNRSA9ICd0b3AnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExFRlRfUFJPUF9OQU1FID0gJ2xlZnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFhfUFJPUF9OQU1FID0gJ3gnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFlfUFJPUF9OQU1FID0gJ3knO1xyXG5cclxuZXhwb3J0IGNvbnN0IFdJRFRIX1BST1BfTkFNRSA9ICd3aWR0aCc7XHJcblxyXG5leHBvcnQgY29uc3QgSEVJR0hUX1BST1BfTkFNRSA9ICdoZWlnaHQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBYID0gJ3B4JztcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTEwgPSAnc2Nyb2xsJztcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTExfRU5EID0gJ3Njcm9sbGVuZCc7XHJcblxyXG5leHBvcnQgY29uc3QgQ0xBU1NfTElTVF9WRVJUSUNBTCA9ICd2ZXJ0aWNhbCc7XHJcblxyXG5leHBvcnQgY29uc3QgQ0xBU1NfTElTVF9IT1JJWk9OVEFMID0gJ2hvcml6b250YWwnO1xyXG5cclxuLy8gc3R5bGVzXHJcblxyXG5leHBvcnQgY29uc3QgUEFSVF9ERUZBVUxUX0lURU0gPSAnaXRlbSc7XHJcblxyXG5leHBvcnQgY29uc3QgUEFSVF9JVEVNX09ERCA9ICcgaXRlbS1vZGQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfSVRFTV9FVkVOID0gJyBpdGVtLWV2ZW4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfSVRFTV9TTkFQUEVEID0gJyBpdGVtLXNuYXBwZWQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfSVRFTV9TRUxFQ1RFRCA9ICcgaXRlbS1zZWxlY3RlZCc7XHJcblxyXG5leHBvcnQgY29uc3QgUEFSVF9JVEVNX0ZPQ1VTRUQgPSAnIGl0ZW0tZm9jdXNlZCc7XHJcblxyXG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLEtBQUssQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQztBQUU5RCxVQUFVO0FBRVYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLFlBQVksU0FBUyxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUM7QUFFbEQsU0FBUztBQUVULE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGhvZHNGb3JTZWxlY3RpbmcsIFNuYXBwaW5nTWV0aG9kcyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25zIH0gZnJvbSBcIi4uL2VudW1zL2RpcmVjdGlvbnNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1fU0laRSA9IDI0O1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlVGRkVSX1NJWkUgPSAyO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFYX0JVRkZFUl9TSVpFID0gMTAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElTVF9TSVpFID0gNDAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU05BUCA9IGZhbHNlO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VMRUNUX0JZX0NMSUNLID0gdHJ1ZTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTExBUFNFX0JZX0NMSUNLID0gdHJ1ZTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VOQUJMRURfQlVGRkVSX09QVElNSVpBVElPTiA9IGZhbHNlO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFlOQU1JQ19TSVpFID0gZmFsc2U7XHJcblxyXG5leHBvcnQgY29uc3QgVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSA9ICdpZCc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9ESVJFQ1RJT04gPSBEaXJlY3Rpb25zLlZFUlRJQ0FMO1xyXG5cclxuZXhwb3J0IGNvbnN0IERJU1BMQVlfT0JKRUNUU19MRU5HVEhfTUVTVVJFTUVOVF9FUlJPUiA9IDE7XHJcblxyXG5leHBvcnQgY29uc3QgTUFYX1NDUk9MTF9UT19JVEVSQVRJT05TID0gNTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NOQVBQSU5HX01FVEhPRCA9IFNuYXBwaW5nTWV0aG9kcy5OT1JNQUw7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRUxFQ1RfTUVUSE9EID0gTWV0aG9kc0ZvclNlbGVjdGluZy5OT05FO1xyXG5cclxuLy8gcHJlc2V0c1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFSEFWSU9SX0FVVE8gPSAnYXV0byc7XHJcblxyXG5leHBvcnQgY29uc3QgQkVIQVZJT1JfSU5TVEFOVCA9ICdpbnN0YW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBCRUhBVklPUl9TTU9PVEggPSAnc21vb3RoJztcclxuXHJcbmV4cG9ydCBjb25zdCBESVNQTEFZX0JMT0NLID0gJ2Jsb2NrJztcclxuXHJcbmV4cG9ydCBjb25zdCBESVNQTEFZX05PTkUgPSAnbm9uZSc7XHJcblxyXG5leHBvcnQgY29uc3QgT1BBQ0lUWV8wID0gJzAnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9QQUNJVFlfMTAwID0gJzEwMCc7XHJcblxyXG5leHBvcnQgY29uc3QgVklTSUJJTElUWV9WSVNJQkxFID0gJ3Zpc2libGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFZJU0lCSUxJVFlfSElEREVOID0gJ2hpZGRlbic7XHJcblxyXG5leHBvcnQgY29uc3QgU0laRV8xMDBfUEVSU0VOVCA9ICcxMDAlJztcclxuXHJcbmV4cG9ydCBjb25zdCBTSVpFX0FVVE8gPSAnYXV0byc7XHJcblxyXG5leHBvcnQgY29uc3QgUE9TSVRJT05fQUJTT0xVVEUgPSAnYWJzb2x1dGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBPU0lUSU9OX1NUSUNLWSA9ICdzdGlja3knO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRSQU5TTEFURV8zRCA9ICd0cmFuc2xhdGUzZCc7XHJcblxyXG5leHBvcnQgY29uc3QgWkVST1NfVFJBTlNMQVRFXzNEID0gYCR7VFJBTlNMQVRFXzNEfSgwLDAsMClgO1xyXG5cclxuZXhwb3J0IGNvbnN0IEhJRERFTl9aSU5ERVggPSAnLTEnO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfWklOREVYID0gJzAnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRPUF9QUk9QX05BTUUgPSAndG9wJztcclxuXHJcbmV4cG9ydCBjb25zdCBMRUZUX1BST1BfTkFNRSA9ICdsZWZ0JztcclxuXHJcbmV4cG9ydCBjb25zdCBYX1BST1BfTkFNRSA9ICd4JztcclxuXHJcbmV4cG9ydCBjb25zdCBZX1BST1BfTkFNRSA9ICd5JztcclxuXHJcbmV4cG9ydCBjb25zdCBXSURUSF9QUk9QX05BTUUgPSAnd2lkdGgnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEhFSUdIVF9QUk9QX05BTUUgPSAnaGVpZ2h0JztcclxuXHJcbmV4cG9ydCBjb25zdCBQWCA9ICdweCc7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMID0gJ3Njcm9sbCc7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX0VORCA9ICdzY3JvbGxlbmQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IENMQVNTX0xJU1RfVkVSVElDQUwgPSAndmVydGljYWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IENMQVNTX0xJU1RfSE9SSVpPTlRBTCA9ICdob3Jpem9udGFsJztcclxuXHJcbi8vIHN0eWxlc1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfREVGQVVMVF9JVEVNID0gJ2l0ZW0nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfSVRFTV9PREQgPSAnIGl0ZW0tb2RkJztcclxuXHJcbmV4cG9ydCBjb25zdCBQQVJUX0lURU1fRVZFTiA9ICcgaXRlbS1ldmVuJztcclxuXHJcbmV4cG9ydCBjb25zdCBQQVJUX0lURU1fU05BUFBFRCA9ICcgaXRlbS1zbmFwcGVkJztcclxuXHJcbmV4cG9ydCBjb25zdCBQQVJUX0lURU1fU0VMRUNURUQgPSAnIGl0ZW0tc2VsZWN0ZWQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUlRfSVRFTV9DT0xMQVBTRUQgPSAnIGl0ZW0tY29sbGFwc2VkJztcclxuXHJcbmV4cG9ydCBjb25zdCBQQVJUX0lURU1fRk9DVVNFRCA9ICcgaXRlbS1mb2N1c2VkJztcclxuXHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1jb25maWctbWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbW9kZWxzL2l0ZW0tY29uZmlnLW1hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNldHMgc3RpY2t5IHBvc2l0aW9uIGFuZCBzZWxlY3RhYmxlIGZvciB0aGUgbGlzdCBpdGVtIGVsZW1lbnQuIElmIHN0aWNreSBwb3NpdGlvbiBpcyBncmVhdGVyIHRoYW4gMCwgdGhlbiBzdGlja3kgcG9zaXRpb24gaXMgYXBwbGllZC4gXHJcbiAqIElmIHRoZSBzdGlja3kgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGAwYCwgdGhlbiB0aGUgc3RpY2t5IHBvc2l0aW9uIG1vZGUgaXMgZW5hYmxlZCBmb3IgdGhlIGVsZW1lbnQuIGAxYCAtIHBvc2l0aW9uIHN0YXJ0LCBgMmAgLSBwb3NpdGlvbiBlbmQuIERlZmF1bHQgdmFsdWUgaXMgYDBgLlxyXG4gKiBzZWxlY3RhYmxlIGRldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZCBvciBub3QuIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL21vZGVscy9pdGVtLWNvbmZpZy1tYXAubW9kZWwudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJVmlydHVhbExpc3RJdGVtQ29uZmlnTWFwIHtcclxuICAgIFtpZDogc3RyaW5nIHwgbnVtYmVyXToge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFNldHMgc3RpY2t5IHBvc2l0aW9uIGZvciB0aGUgZWxlbWVudC4gSWYgc3RpY2t5IHBvc2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiAwLCB0aGVuIHN0aWNreSBwb3NpdGlvbiBpcyBhcHBsaWVkLlxyXG4gICAgICAgICAqIGAxYCAtIHBvc2l0aW9uIHN0YXJ0LCBgMmAgLSBwb3NpdGlvbiBlbmQuXHJcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgMGAuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RpY2t5PzogMCB8IDEgfCAyO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZCBvciBub3QuXHJcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc2VsZWN0YWJsZT86IGJvb2xlYW47XHJcbiAgICB9XHJcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1jb25maWctbWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbW9kZWxzL2l0ZW0tY29uZmlnLW1hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNldHMgYHN0aWNreWAgcG9zaXRpb24sIGBjb2xsYXBzYWJsZWAgYW5kIGBzZWxlY3RhYmxlYCBmb3IgdGhlIGxpc3QgaXRlbSBlbGVtZW50LiBJZiBgc3RpY2t5YCBwb3NpdGlvbiBpcyBncmVhdGVyIHRoYW4gYDBgLCB0aGVuIGBzdGlja3lgIHBvc2l0aW9uIGlzIGFwcGxpZWQuIFxyXG4gKiBJZiB0aGUgYHN0aWNreWAgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGAwYCwgdGhlbiB0aGUgYHN0aWNreWAgcG9zaXRpb24gbW9kZSBpcyBlbmFibGVkIGZvciB0aGUgZWxlbWVudC4gYDFgIC0gcG9zaXRpb24gc3RhcnQsIGAyYCAtIHBvc2l0aW9uIGVuZC4gRGVmYXVsdCB2YWx1ZSBpcyBgMGAuXHJcbiAqIGBzZWxlY3RhYmxlYCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgc2VsZWN0ZWQgb3Igbm90LiBEZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cclxuICogYGNvbGxhcHNhYmxlYCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIGEgYHN0aWNreWAgcHJvcGVydHkgZ3JlYXRlciB0aGFuIHplcm8gY2FuIGNvbGxhcHNlIGFuZCBjb2xsYXBzZSBlbGVtZW50cyBpbiBmcm9udCB0aGF0IGRvIG5vdCBoYXZlIGEgYHN0aWNreWAgcHJvcGVydHkuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbW9kZWxzL2l0ZW0tY29uZmlnLW1hcC5tb2RlbC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElWaXJ0dWFsTGlzdEl0ZW1Db25maWdNYXAge1xyXG4gICAgW2lkOiBzdHJpbmcgfCBudW1iZXJdOiB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogU2V0cyBgc3RpY2t5YCBwb3NpdGlvbiBmb3IgdGhlIGVsZW1lbnQuIElmIHN0aWNreSBwb3NpdGlvbiBpcyBncmVhdGVyIHRoYW4gYDBgLCB0aGVuIGBzdGlja3lgIHBvc2l0aW9uIGlzIGFwcGxpZWQuXHJcbiAgICAgICAgICogYDFgIC0gcG9zaXRpb24gc3RhcnQsIGAyYCAtIHBvc2l0aW9uIGVuZC5cclxuICAgICAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGAwYC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGlja3k/OiAwIHwgMSB8IDI7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCBhIGBzdGlja3lgIHByb3BlcnR5IGdyZWF0ZXIgdGhhbiB6ZXJvIGNhbiBjb2xsYXBzZSBhbmQgY29sbGFwc2UgZWxlbWVudHMgaW4gZnJvbnQgdGhhdCBkbyBub3QgaGF2ZSBhIGBzdGlja3lgIHByb3BlcnR5LlxyXG4gICAgICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBjb2xsYXBzYWJsZT86IGJvb2xlYW47XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgY2FuIGJlIHNlbGVjdGVkIG9yIG5vdC5cclxuICAgICAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBzZWxlY3RhYmxlPzogYm9vbGVhbjtcclxuICAgIH1cclxufSJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWl0ZW0tY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbW9kZWxzL3JlbmRlci1pdGVtLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE9iamVjdCB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgSVJlbmRlclZpcnR1YWxMaXN0SXRlbVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL21vZGVscy9yZW5kZXItaXRlbS1jb25maWcubW9kZWwudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKiBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbmZpZyB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG9kZC5cclxuICAgICAqL1xyXG4gICAgb2RkOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBldmVuLlxyXG4gICAgICovXHJcbiAgICBldmVuOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBncmVhdGVyIHRoYW4gMCwgdGhlIGVsZW1lbnQgd2lsbCBoYXZlIGEgc3RpY2t5IHBvc2l0aW9uIHdpdGggdGhlIGdpdmVuIHpJbmRleC5cclxuICAgICAqL1xyXG4gICAgc3RpY2t5OiAwIHwgMSB8IDI7XHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZCBvciBub3QuIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxyXG4gICAgICovXHJcbiAgICBzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgZWxlbWVudCB3aWxsIHNuYXAuXHJcbiAgICAgKi9cclxuICAgIHNuYXA6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIHNuYXBwZWQuXHJcbiAgICAgKi9cclxuICAgIHNuYXBwZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGJlaW5nIHNoaWZ0ZWQgYnkgYW5vdGhlciBzbmFwIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHNuYXBwZWRPdXQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGEgdmVydGljYWwgbGlzdCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBpc1ZlcnRpY2FsOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBhZGFwdHMgdG8gdGhlIHNpemUgb2YgaXRzIGNvbnRlbnQuXHJcbiAgICAgKi9cclxuICAgIGR5bmFtaWM6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc25hcHBpbmcgbWV0aG9kIGlzIGFkdmFuY2VkXHJcbiAgICAgKi9cclxuICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGFiIGluZGV4LlxyXG4gICAgICovXHJcbiAgICB0YWJJbmRleDogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiB6LWluZGV4XHJcbiAgICAgKi9cclxuICAgIHpJbmRleDogc3RyaW5nO1xyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWl0ZW0tY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbW9kZWxzL3JlbmRlci1pdGVtLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE9iamVjdCB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgSVJlbmRlclZpcnR1YWxMaXN0SXRlbVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL21vZGVscy9yZW5kZXItaXRlbS1jb25maWcubW9kZWwudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKiBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbmZpZyB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG9kZC5cclxuICAgICAqL1xyXG4gICAgb2RkOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBldmVuLlxyXG4gICAgICovXHJcbiAgICBldmVuOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIGEgYHN0aWNreWAgcHJvcGVydHkgZ3JlYXRlciB0aGFuIHplcm8gY2FuIGNvbGxhcHNlIGFuZCBjb2xsYXBzZSBlbGVtZW50cyBpbiBmcm9udCB0aGF0IGRvIG5vdCBoYXZlIGEgYHN0aWNreWAgcHJvcGVydHkuXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXHJcbiAgICAgKi9cclxuICAgIGNvbGxhcHNhYmxlOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBncmVhdGVyIHRoYW4gMCwgdGhlIGVsZW1lbnQgd2lsbCBoYXZlIGEgc3RpY2t5IHBvc2l0aW9uIHdpdGggdGhlIGdpdmVuIHpJbmRleC5cclxuICAgICAqL1xyXG4gICAgc3RpY2t5OiAwIHwgMSB8IDI7XHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZCBvciBub3QuIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxyXG4gICAgICovXHJcbiAgICBzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgZWxlbWVudCB3aWxsIHNuYXAuXHJcbiAgICAgKi9cclxuICAgIHNuYXA6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIHNuYXBwZWQuXHJcbiAgICAgKi9cclxuICAgIHNuYXBwZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGJlaW5nIHNoaWZ0ZWQgYnkgYW5vdGhlciBzbmFwIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHNuYXBwZWRPdXQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGEgdmVydGljYWwgbGlzdCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBpc1ZlcnRpY2FsOiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBhZGFwdHMgdG8gdGhlIHNpemUgb2YgaXRzIGNvbnRlbnQuXHJcbiAgICAgKi9cclxuICAgIGR5bmFtaWM6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc25hcHBpbmcgbWV0aG9kIGlzIGFkdmFuY2VkXHJcbiAgICAgKi9cclxuICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGFiIGluZGV4LlxyXG4gICAgICovXHJcbiAgICB0YWJJbmRleDogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiB6LWluZGV4XHJcbiAgICAgKi9cclxuICAgIHpJbmRleDogc3RyaW5nO1xyXG59Il19