@datorama/core 22.14.1 → 22.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/bundle.scss +9987 -6561
  2. package/bundles/datorama-core.umd.js +242 -95
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +60 -60
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/lib/button/button.component.js +1 -1
  8. package/esm2015/lib/grid/dato-grid.js +4 -3
  9. package/esm2015/lib/grid/grid/grid.component.js +5 -9
  10. package/esm2015/lib/grid/grid-sort.utils.js +28 -0
  11. package/esm2015/lib/grid-v2/grid/grid-v2.component.js +10 -3
  12. package/esm2015/lib/grid-v2/grid/grid-v2.config.js +45 -14
  13. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +4 -1
  14. package/esm2015/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -1
  15. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +60 -26
  16. package/esm2015/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  17. package/esm2015/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +17 -14
  18. package/esm2015/lib/grid-v2/grid-store/grid.query.js +11 -6
  19. package/esm2015/lib/grid-v2/grid-store/grid.service.js +19 -5
  20. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +23 -17
  21. package/esm2015/lib/radio/radio.component.js +1 -1
  22. package/esm2015/lib/utils/string.js +9 -11
  23. package/esm2015/lib/version.js +2 -2
  24. package/esm5/lib/button/button.component.js +1 -1
  25. package/esm5/lib/grid/dato-grid.js +4 -3
  26. package/esm5/lib/grid/grid/grid.component.js +5 -9
  27. package/esm5/lib/grid/grid-sort.utils.js +35 -0
  28. package/esm5/lib/grid-v2/grid/grid-v2.component.js +14 -3
  29. package/esm5/lib/grid-v2/grid/grid-v2.config.js +47 -15
  30. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +4 -1
  31. package/esm5/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -1
  32. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +64 -26
  33. package/esm5/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  34. package/esm5/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +17 -14
  35. package/esm5/lib/grid-v2/grid-store/grid.query.js +11 -6
  36. package/esm5/lib/grid-v2/grid-store/grid.service.js +19 -5
  37. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +23 -17
  38. package/esm5/lib/radio/radio.component.js +1 -1
  39. package/esm5/lib/utils/string.js +9 -11
  40. package/esm5/lib/version.js +2 -2
  41. package/fesm2015/datorama-core.js +226 -96
  42. package/fesm2015/datorama-core.js.map +1 -1
  43. package/fesm5/datorama-core.js +243 -97
  44. package/fesm5/datorama-core.js.map +1 -1
  45. package/lib/grid/grid-sort.utils.d.ts +15 -0
  46. package/lib/grid-v2/grid/grid-v2.component.d.ts +4 -0
  47. package/lib/grid-v2/grid/grid-v2.config.d.ts +1 -0
  48. package/lib/grid-v2/grid-column-header/grid-column-header.component.d.ts +2 -1
  49. package/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.d.ts +1 -0
  50. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +15 -0
  51. package/lib/grid-v2/grid-on-hover/grid-on-hover.component.d.ts +1 -3
  52. package/lib/grid-v2/grid-store/grid.service.d.ts +325 -281
  53. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -0
  54. package/package.json +4 -1
  55. package/testing/src/grid/rows.ts +1 -1
@@ -10,14 +10,12 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef } fro
10
10
  import { setStyles } from '../../internal/helpers';
11
11
  import { isFunction, isNil, isNumber, isString } from '../../utils/validators';
12
12
  import { GridService } from '../grid-store/grid.service';
13
- import { GridQuery } from '../grid-store/grid.query';
14
13
  import { getVisibleActions } from '../grid-v2.util';
15
14
  import { pallete } from '../../themes/themes';
16
15
  var DatoGridOnHoverComponent = /** @class */ (function () {
17
- function DatoGridOnHoverComponent(host, gridService, gridQuery, cdr) {
16
+ function DatoGridOnHoverComponent(host, gridService, cdr) {
18
17
  this.host = host;
19
18
  this.gridService = gridService;
20
- this.gridQuery = gridQuery;
21
19
  this.cdr = cdr;
22
20
  this.displayedActions = [];
23
21
  this.setBgColorBound = this.setBackgroundColor.bind(this);
@@ -52,13 +50,22 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
52
50
  });
53
51
  };
54
52
  DatoGridOnHoverComponent.prototype.openActionMenu = function (event) {
55
- /* Hack to open the ag grid context menu */
56
- /* https://github.com/ag-grid/ag-grid-enterprise/issues/72 */
57
- var _a = this.params, rowIndex = _a.rowIndex, node = _a.node, column = _a.column, value = _a.value;
58
- var cell = this.gridQuery.api.grid.rowRenderer.rowCompsByIndex[rowIndex].getRenderedCellForColumn(column);
59
53
  /* The actions menu is different from the regular menu, we use the grid's context to signal that this is the actions menu*/
60
54
  this.gridService.updateGridContext({ contextMenu: { fromOnHover: true } });
61
- cell.beans.contextMenuFactory.showMenu(node, column, value, event);
55
+ var target = this.params.event && this.params.event.target;
56
+ if (!(target instanceof Element)) {
57
+ return;
58
+ }
59
+ var cell = target.closest('.ag-cell');
60
+ if (!cell) {
61
+ return;
62
+ }
63
+ cell.dispatchEvent(new MouseEvent('contextmenu', {
64
+ bubbles: true,
65
+ cancelable: true,
66
+ clientX: event.clientX,
67
+ clientY: event.clientY
68
+ }));
62
69
  };
63
70
  DatoGridOnHoverComponent.prototype.updateScrollPos = function (left) {
64
71
  var cellBorder = 1;
@@ -112,7 +119,6 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
112
119
  DatoGridOnHoverComponent.ctorParameters = function () { return [
113
120
  { type: ElementRef },
114
121
  { type: GridService },
115
- { type: GridQuery },
116
122
  { type: ChangeDetectorRef }
117
123
  ]; };
118
124
  DatoGridOnHoverComponent = __decorate([
@@ -122,12 +128,9 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
122
128
  changeDetection: ChangeDetectionStrategy.OnPush,
123
129
  styles: [":host{display:flex;justify-content:flex-end;align-content:center;align-items:center;position:absolute;max-width:150px;transition:opacity .3s ease-in-out;opacity:0}:host .gradient{min-width:20px}"]
124
130
  }),
125
- __metadata("design:paramtypes", [ElementRef,
126
- GridService,
127
- GridQuery,
128
- ChangeDetectorRef])
131
+ __metadata("design:paramtypes", [ElementRef, GridService, ChangeDetectorRef])
129
132
  ], DatoGridOnHoverComponent);
130
133
  return DatoGridOnHoverComponent;
131
134
  }());
132
135
  export { DatoGridOnHoverComponent };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFROUM7SUFRRSxrQ0FDVSxJQUFnQixFQUNoQixXQUF3QixFQUN4QixTQUFvQixFQUNwQixHQUFzQjtRQUh0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFYaEMscUJBQWdCLEdBQWdCLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFXbEQsQ0FBQztJQUVKLHNCQUFZLDRDQUFNO2FBQWxCO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxDQUFDOzs7T0FBQTtJQUVELHVDQUFJLEdBQUosVUFBSyxNQUEwQjtRQUM3QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckIsR0FBRyxFQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxPQUFJO1lBQzNCLE1BQU0sRUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsT0FBSTtZQUNqQyxPQUFPLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxDQUFDO1lBQ1QsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVDQUFJLEdBQUo7UUFDRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyQixPQUFPLEVBQUUsQ0FBQztZQUNWLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaURBQWMsR0FBZCxVQUFlLEtBQWlCO1FBQzlCLDJDQUEyQztRQUMzQyw2REFBNkQ7UUFDdkQsSUFBQSxnQkFBK0MsRUFBN0Msc0JBQVEsRUFBRSxjQUFJLEVBQUUsa0JBQU0sRUFBRSxnQkFBcUIsQ0FBQztRQUN0RCxJQUFNLElBQUksR0FBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyx3QkFBd0IsQ0FDMUcsTUFBTSxDQUNQLENBQUM7UUFDRiwySEFBMkg7UUFDM0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtEQUFlLEdBQWYsVUFBZ0IsSUFBWTtRQUMxQixJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDckIsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLFVBQVUsT0FBSSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsNkNBQVUsR0FBVixVQUFXLE1BQWlCO1FBQzFCLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsaURBQW1DO2dCQUMzRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2xCLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCw4Q0FBVyxHQUFYO1FBQ0UsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGdEQUFhLEdBQWI7UUFDUSxJQUFBLGdCQUE0QyxFQUExQyxvQkFBTyxFQUFFLHdDQUFpQyxDQUFDO1FBQ25ELElBQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUMxRSxVQUFDLEVBQTJCO2dCQUF6QixzQkFBUSxFQUFFLGNBQUksRUFBRSxvQkFBTztZQUFPLE9BQUEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPO1FBQTVDLENBQTRDLENBQzlFLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWTthQUNqQyxNQUFNLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUE3QixDQUE2QixDQUFDO2FBQy9DLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7YUFDM0IsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyx5REFBc0IsR0FBOUI7UUFDRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8scURBQWtCLEdBQTFCLFVBQTJCLEVBQTJCO1lBQXpCLGNBQUk7UUFDL0IsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3JCLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQzdEO1FBQ0QsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxrQ0FBa0M7UUFDbEMsSUFBTSxlQUFlLEdBQUcsK0JBQTZCLEtBQUssZUFBVSxLQUFLLGNBQVMsS0FBSyxXQUFRLENBQUM7UUFDaEcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckIsZUFBZSxpQkFBQTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDOztnQkFqR2UsVUFBVTtnQkFDSCxXQUFXO2dCQUNiLFNBQVM7Z0JBQ2YsaUJBQWlCOztJQVpyQix3QkFBd0I7UUFOcEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixpaUJBQTZDO1lBRTdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO3lDQVVnQixVQUFVO1lBQ0gsV0FBVztZQUNiLFNBQVM7WUFDZixpQkFBaUI7T0FackIsd0JBQXdCLENBMkdwQztJQUFELCtCQUFDO0NBQUEsQUEzR0QsSUEyR0M7U0EzR1ksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxNb3VzZU92ZXJFdmVudCwgUm93Tm9kZSB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7IHNldFN0eWxlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNOaWwsIGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE9uSG92ZXJDb25maWcgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgZ2V0VmlzaWJsZUFjdGlvbnMgfSBmcm9tICcuLi9ncmlkLXYyLnV0aWwnO1xuaW1wb3J0IHsgcGFsbGV0ZSB9IGZyb20gJy4uLy4uL3RoZW1lcy90aGVtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtb24taG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtb24taG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50IHtcbiAgZGlzcGxheWVkQWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgc2V0QmdDb2xvckJvdW5kID0gdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3IuYmluZCh0aGlzKTtcbiAgY29uZmlnOiBEYXRvR3JpZE9uSG92ZXJDb25maWcgJiB7IGFjdGlvbnM6IFJvd0FjdGlvbltdIH07XG4gIHNob3dNb3JlOiBib29sZWFuO1xuICBwcml2YXRlIHJvdzogUm93Tm9kZTtcbiAgcHJpdmF0ZSBwYXJhbXM6IENlbGxNb3VzZU92ZXJFdmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0IGhvc3RFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBzaG93KHBhcmFtczogQ2VsbE1vdXNlT3ZlckV2ZW50KSB7XG4gICAgdGhpcy5yZW1vdmVTZWxlY3RlZExpc3RlbmVyKCk7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5yb3cgPSBwYXJhbXMubm9kZTtcbiAgICB0aGlzLnJvdy5hZGRFdmVudExpc3RlbmVyKCdyb3dTZWxlY3RlZCcsIHRoaXMuc2V0QmdDb2xvckJvdW5kKTtcbiAgICB0aGlzLnNldFJvd0FjdGlvbnMoKTtcbiAgICB0aGlzLnNldEJhY2tncm91bmRDb2xvcih7IG5vZGU6IHRoaXMucm93IH0pO1xuICAgIHNldFN0eWxlcyh0aGlzLmhvc3RFbCwge1xuICAgICAgdG9wOiBgJHt0aGlzLnJvdy5yb3dUb3B9cHhgLFxuICAgICAgaGVpZ2h0OiBgJHt0aGlzLnJvdy5yb3dIZWlnaHR9cHhgLFxuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIHpJbmRleDogMSxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdhbGwnXG4gICAgfSk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHNldFN0eWxlcyh0aGlzLmhvc3RFbCwge1xuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIHpJbmRleDogLTFcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5BY3Rpb25NZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLyogSGFjayB0byBvcGVuIHRoZSBhZyBncmlkIGNvbnRleHQgbWVudSAqL1xuICAgIC8qIGh0dHBzOi8vZ2l0aHViLmNvbS9hZy1ncmlkL2FnLWdyaWQtZW50ZXJwcmlzZS9pc3N1ZXMvNzIgKi9cbiAgICBjb25zdCB7IHJvd0luZGV4LCBub2RlLCBjb2x1bW4sIHZhbHVlIH0gPSB0aGlzLnBhcmFtcztcbiAgICBjb25zdCBjZWxsID0gKHRoaXMuZ3JpZFF1ZXJ5LmFwaS5ncmlkIGFzIGFueSkucm93UmVuZGVyZXIucm93Q29tcHNCeUluZGV4W3Jvd0luZGV4XS5nZXRSZW5kZXJlZENlbGxGb3JDb2x1bW4oXG4gICAgICBjb2x1bW5cbiAgICApO1xuICAgIC8qIFRoZSBhY3Rpb25zIG1lbnUgaXMgZGlmZmVyZW50IGZyb20gdGhlIHJlZ3VsYXIgbWVudSwgd2UgdXNlIHRoZSBncmlkJ3MgY29udGV4dCB0byBzaWduYWwgdGhhdCB0aGlzIGlzIHRoZSBhY3Rpb25zIG1lbnUqL1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlR3JpZENvbnRleHQoeyBjb250ZXh0TWVudTogeyBmcm9tT25Ib3ZlcjogdHJ1ZSB9IH0pO1xuICAgIGNlbGwuYmVhbnMuY29udGV4dE1lbnVGYWN0b3J5LnNob3dNZW51KG5vZGUsIGNvbHVtbiwgdmFsdWUsIGV2ZW50KTtcbiAgfVxuXG4gIHVwZGF0ZVNjcm9sbFBvcyhsZWZ0OiBudW1iZXIpIHtcbiAgICBjb25zdCBjZWxsQm9yZGVyID0gMTtcbiAgICBzZXRTdHlsZXModGhpcy5ob3N0RWwsIHsgbGVmdDogYCR7bGVmdCAtIHRoaXMuaG9zdEVsLnNjcm9sbFdpZHRoIC0gY2VsbEJvcmRlcn1weGAgfSk7XG4gIH1cblxuICBjYWxsQWN0aW9uKGFjdGlvbjogUm93QWN0aW9uKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oYWN0aW9uLm9uQ2xpY2spKSB7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwge1xuICAgICAgICBhY3Rpb246IGFjdGlvbi5rZXksXG4gICAgICAgIG51bU9mSXRlbXM6IDEsXG4gICAgICAgIGZyb206ICdPbiBIb3ZlcidcbiAgICAgIH0pO1xuICAgICAgYWN0aW9uLm9uQ2xpY2soW3RoaXMucm93XSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVTZWxlY3RlZExpc3RlbmVyKCk7XG4gIH1cblxuICBzZXRSb3dBY3Rpb25zKCkge1xuICAgIGNvbnN0IHsgYWN0aW9ucywgbWF4RGlzcGxheWVkSXRlbXMgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHZhbGlkQWN0aW9ucyA9IGdldFZpc2libGVBY3Rpb25zKGFjdGlvbnMsIDEsIFt0aGlzLnJvd10sIGZhbHNlKS5maWx0ZXIoXG4gICAgICAoeyB0ZW1wbGF0ZSwgaWNvbiwgdmlzaWJsZSB9KSA9PiBpc05pbCh0ZW1wbGF0ZSkgJiYgaXNTdHJpbmcoaWNvbikgJiYgdmlzaWJsZVxuICAgICk7XG4gICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zID0gdmFsaWRBY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiBpc051bWJlcihhY3Rpb24ub25Ib3ZlckluZGV4KSlcbiAgICAgIC5zbGljZSgwLCBtYXhEaXNwbGF5ZWRJdGVtcylcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9uSG92ZXJJbmRleCAtIGIub25Ib3ZlckluZGV4KTtcbiAgICBpZiAodGhpcy5kaXNwbGF5ZWRBY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zID0gdmFsaWRBY3Rpb25zLnNsaWNlKDAsIG1heERpc3BsYXllZEl0ZW1zKTtcbiAgICB9XG4gICAgdGhpcy5zaG93TW9yZSA9IHRoaXMuZGlzcGxheWVkQWN0aW9ucy5sZW5ndGggPCB2YWxpZEFjdGlvbnMubGVuZ3RoO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2VsZWN0ZWRMaXN0ZW5lcigpIHtcbiAgICB0aGlzLnJvdyAmJiB0aGlzLnJvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyb3dTZWxlY3RlZCcsIHRoaXMuc2V0QmdDb2xvckJvdW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QmFja2dyb3VuZENvbG9yKHsgbm9kZSB9OiB7IG5vZGU6IFJvd05vZGUgfSkge1xuICAgIGxldCBodWUgPSAnYWNjZW50LTEwMCc7XG4gICAgaWYgKG5vZGUuaXNTZWxlY3RlZCgpKSB7XG4gICAgICBodWUgPSBub2RlLnJvd0luZGV4ICUgMiA9PT0gMCA/ICdhY2NlbnQtMTgwJyA6ICdhY2NlbnQtMjAwJztcbiAgICB9XG4gICAgY29uc3QgY29sb3IgPSBwYWxsZXRlLmxpZ2h0W2h1ZV07XG4gICAgLy8gQjMgaXMgNzAlIG9wYWNpdHkgaW4gaGV4IGNvbG9yc1xuICAgIGNvbnN0IGJhY2tncm91bmRJbWFnZSA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICR7Y29sb3J9QjMgMCUsICR7Y29sb3J9IDE3JSwgJHtjb2xvcn0gMTAwJSlgO1xuICAgIHNldFN0eWxlcyh0aGlzLmhvc3RFbCwge1xuICAgICAgYmFja2dyb3VuZEltYWdlXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVE5QztJQVFFLGtDQUFvQixJQUFnQixFQUFVLFdBQXdCLEVBQVUsR0FBc0I7UUFBbEYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFQdEcscUJBQWdCLEdBQWdCLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFNb0QsQ0FBQztJQUUxRyxzQkFBWSw0Q0FBTTthQUFsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCx1Q0FBSSxHQUFKLFVBQUssTUFBMEI7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1B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QUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3JCLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQzdEO1FBQ0QsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxrQ0FBa0M7UUFDbEMsSUFBTSxlQUFlLEdBQUcsK0JBQTZCLEtBQUssZUFBVSxLQUFLLGNBQVMsS0FBSyxXQUFRLENBQUM7UUFDaEcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckIsZUFBZSxpQkFBQTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDOztnQkF0R3lCLFVBQVU7Z0JBQXVCLFdBQVc7Z0JBQWUsaUJBQWlCOztJQVIzRix3QkFBd0I7UUFOcEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixpaUJBQTZDO1lBRTdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO3lDQVMwQixVQUFVLEVBQXVCLFdBQVcsRUFBZSxpQkFBaUI7T0FSM0Ysd0JBQXdCLENBK0dwQztJQUFELCtCQUFDO0NBQUEsQUEvR0QsSUErR0M7U0EvR1ksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxNb3VzZU92ZXJFdmVudCwgUm93Tm9kZSB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7IHNldFN0eWxlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNOaWwsIGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE9uSG92ZXJDb25maWcgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRWaXNpYmxlQWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtdjIudXRpbCc7XG5pbXBvcnQgeyBwYWxsZXRlIH0gZnJvbSAnLi4vLi4vdGhlbWVzL3RoZW1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1vbi1ob3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLW9uLWhvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQge1xuICBkaXNwbGF5ZWRBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBzZXRCZ0NvbG9yQm91bmQgPSB0aGlzLnNldEJhY2tncm91bmRDb2xvci5iaW5kKHRoaXMpO1xuICBjb25maWc6IERhdG9HcmlkT25Ib3ZlckNvbmZpZyAmIHsgYWN0aW9uczogUm93QWN0aW9uW10gfTtcbiAgc2hvd01vcmU6IGJvb2xlYW47XG4gIHByaXZhdGUgcm93OiBSb3dOb2RlO1xuICBwcml2YXRlIHBhcmFtczogQ2VsbE1vdXNlT3ZlckV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogRWxlbWVudFJlZiwgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBwcml2YXRlIGdldCBob3N0RWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgc2hvdyhwYXJhbXM6IENlbGxNb3VzZU92ZXJFdmVudCkge1xuICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRMaXN0ZW5lcigpO1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMucm93ID0gcGFyYW1zLm5vZGU7XG4gICAgdGhpcy5yb3cuYWRkRXZlbnRMaXN0ZW5lcigncm93U2VsZWN0ZWQnLCB0aGlzLnNldEJnQ29sb3JCb3VuZCk7XG4gICAgdGhpcy5zZXRSb3dBY3Rpb25zKCk7XG4gICAgdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3IoeyBub2RlOiB0aGlzLnJvdyB9KTtcbiAgICBzZXRTdHlsZXModGhpcy5ob3N0RWwsIHtcbiAgICAgIHRvcDogYCR7dGhpcy5yb3cucm93VG9wfXB4YCxcbiAgICAgIGhlaWdodDogYCR7dGhpcy5yb3cucm93SGVpZ2h0fXB4YCxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICB6SW5kZXg6IDEsXG4gICAgICBwb2ludGVyRXZlbnRzOiAnYWxsJ1xuICAgIH0pO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBzZXRTdHlsZXModGhpcy5ob3N0RWwsIHtcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICB6SW5kZXg6IC0xXG4gICAgfSk7XG4gIH1cblxuICBvcGVuQWN0aW9uTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIC8qIFRoZSBhY3Rpb25zIG1lbnUgaXMgZGlmZmVyZW50IGZyb20gdGhlIHJlZ3VsYXIgbWVudSwgd2UgdXNlIHRoZSBncmlkJ3MgY29udGV4dCB0byBzaWduYWwgdGhhdCB0aGlzIGlzIHRoZSBhY3Rpb25zIG1lbnUqL1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlR3JpZENvbnRleHQoeyBjb250ZXh0TWVudTogeyBmcm9tT25Ib3ZlcjogdHJ1ZSB9IH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMucGFyYW1zLmV2ZW50ICYmIHRoaXMucGFyYW1zLmV2ZW50LnRhcmdldDtcbiAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjZWxsID0gdGFyZ2V0LmNsb3Nlc3QoJy5hZy1jZWxsJyk7XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNlbGwuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBNb3VzZUV2ZW50KCdjb250ZXh0bWVudScsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY2xpZW50WDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgY2xpZW50WTogZXZlbnQuY2xpZW50WVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlU2Nyb2xsUG9zKGxlZnQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNlbGxCb3JkZXIgPSAxO1xuICAgIHNldFN0eWxlcyh0aGlzLmhvc3RFbCwgeyBsZWZ0OiBgJHtsZWZ0IC0gdGhpcy5ob3N0RWwuc2Nyb2xsV2lkdGggLSBjZWxsQm9yZGVyfXB4YCB9KTtcbiAgfVxuXG4gIGNhbGxBY3Rpb24oYWN0aW9uOiBSb3dBY3Rpb24pIHtcbiAgICBpZiAoaXNGdW5jdGlvbihhY3Rpb24ub25DbGljaykpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuX2xvZ0V2ZW50KENvcmVFdmVudFR5cGVzLkdSSURfVEFCTEVfQUNUSU9OLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLmtleSxcbiAgICAgICAgbnVtT2ZJdGVtczogMSxcbiAgICAgICAgZnJvbTogJ09uIEhvdmVyJ1xuICAgICAgfSk7XG4gICAgICBhY3Rpb24ub25DbGljayhbdGhpcy5yb3ddKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHNldFJvd0FjdGlvbnMoKSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBtYXhEaXNwbGF5ZWRJdGVtcyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgdmFsaWRBY3Rpb25zID0gZ2V0VmlzaWJsZUFjdGlvbnMoYWN0aW9ucywgMSwgW3RoaXMucm93XSwgZmFsc2UpLmZpbHRlcihcbiAgICAgICh7IHRlbXBsYXRlLCBpY29uLCB2aXNpYmxlIH0pID0+IGlzTmlsKHRlbXBsYXRlKSAmJiBpc1N0cmluZyhpY29uKSAmJiB2aXNpYmxlXG4gICAgKTtcbiAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMgPSB2YWxpZEFjdGlvbnNcbiAgICAgIC5maWx0ZXIoYWN0aW9uID0+IGlzTnVtYmVyKGFjdGlvbi5vbkhvdmVySW5kZXgpKVxuICAgICAgLnNsaWNlKDAsIG1heERpc3BsYXllZEl0ZW1zKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEub25Ib3ZlckluZGV4IC0gYi5vbkhvdmVySW5kZXgpO1xuICAgIGlmICh0aGlzLmRpc3BsYXllZEFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMgPSB2YWxpZEFjdGlvbnMuc2xpY2UoMCwgbWF4RGlzcGxheWVkSXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLnNob3dNb3JlID0gdGhpcy5kaXNwbGF5ZWRBY3Rpb25zLmxlbmd0aCA8IHZhbGlkQWN0aW9ucy5sZW5ndGg7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTZWxlY3RlZExpc3RlbmVyKCkge1xuICAgIHRoaXMucm93ICYmIHRoaXMucm93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jvd1NlbGVjdGVkJywgdGhpcy5zZXRCZ0NvbG9yQm91bmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCYWNrZ3JvdW5kQ29sb3IoeyBub2RlIH06IHsgbm9kZTogUm93Tm9kZSB9KSB7XG4gICAgbGV0IGh1ZSA9ICdhY2NlbnQtMTAwJztcbiAgICBpZiAobm9kZS5pc1NlbGVjdGVkKCkpIHtcbiAgICAgIGh1ZSA9IG5vZGUucm93SW5kZXggJSAyID09PSAwID8gJ2FjY2VudC0xODAnIDogJ2FjY2VudC0yMDAnO1xuICAgIH1cbiAgICBjb25zdCBjb2xvciA9IHBhbGxldGUubGlnaHRbaHVlXTtcbiAgICAvLyBCMyBpcyA3MCUgb3BhY2l0eSBpbiBoZXggY29sb3JzXG4gICAgY29uc3QgYmFja2dyb3VuZEltYWdlID0gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtjb2xvcn1CMyAwJSwgJHtjb2xvcn0gMTclLCAke2NvbG9yfSAxMDAlKWA7XG4gICAgc2V0U3R5bGVzKHRoaXMuaG9zdEVsLCB7XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2VcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -7,6 +7,7 @@ import { BehaviorSubject, fromEvent, merge, Subject } from 'rxjs';
7
7
  import { filter, map, switchMap } from 'rxjs/operators';
8
8
  import { getColField, getColumnsSizes } from './util';
9
9
  import { size } from '../../utils/collection';
10
+ import { getSortModel as getColumnSortModel } from '../../grid/grid-sort.utils';
10
11
  var GridQuery = /** @class */ (function (_super) {
11
12
  __extends(GridQuery, _super);
12
13
  function GridQuery(store) {
@@ -83,9 +84,13 @@ var GridQuery = /** @class */ (function (_super) {
83
84
  GridQuery.prototype.getCurrentGridSettings = function () {
84
85
  var toColId = function (column) { return column.getColId(); };
85
86
  var columns = this.api.columns;
86
- var groupedColumns = columns.getRowGroupColumns();
87
- var columnsOrder = columns.getAllColumns();
88
- var allGridColumns = columns.getAllGridColumns();
87
+ // AG Grid 27: getAllColumns() returns Column[] | null (and the grouped/grid column getters can
88
+ // likewise be empty) before the grid's columns are initialized. getCurrentGridSettings() is
89
+ // reached via fitGrid -> updateSettings on window resize, which can fire before that point, so
90
+ // guard against null to avoid "Cannot read properties of undefined (reading 'filter')".
91
+ var groupedColumns = columns.getRowGroupColumns() || [];
92
+ var columnsOrder = columns.getAllColumns() || [];
93
+ var allGridColumns = columns.getAllGridColumns() || [];
89
94
  var hiddenColumns = columnsOrder
90
95
  .filter(function (column) { return !column.isVisible() && !groupedColumns.includes(column); })
91
96
  .map(toColId);
@@ -96,7 +101,7 @@ var GridQuery = /** @class */ (function (_super) {
96
101
  hiddenColumns: hiddenColumns,
97
102
  groupedColumns: groupedColumns.map(toColId),
98
103
  filter: this.getFilter(),
99
- pinnedColumns: columns.getDisplayedLeftColumns().map(toColId),
104
+ pinnedColumns: (columns.getDisplayedLeftColumns() || []).map(toColId),
100
105
  columnsOrder: allGridColumns.map(toColId),
101
106
  columnsSizes: null,
102
107
  searchTerm: null
@@ -107,7 +112,7 @@ var GridQuery = /** @class */ (function (_super) {
107
112
  return settings;
108
113
  };
109
114
  GridQuery.prototype.getSortModel = function () {
110
- return this.api.grid.getSortModel().pop();
115
+ return getColumnSortModel(this.api.columns).pop();
111
116
  };
112
117
  GridQuery.prototype.getSavedSort = function () {
113
118
  return this.getValue().settings.sort || this.getSortModel();
@@ -246,4 +251,4 @@ var GridQuery = /** @class */ (function (_super) {
246
251
  return GridQuery;
247
252
  }(Query));
248
253
  export { GridQuery };
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0seUJBQXlCLENBQUM7QUFHbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUM7SUFBK0IsNkJBQXFCO0lBK0NsRCxtQkFBc0IsS0FBZ0I7UUFBdEMsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FDYjtRQUZxQixXQUFLLEdBQUwsS0FBSyxDQUFXO1FBNUN0QyxXQUFXO1FBQ1gsZ0JBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxnQkFBVSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCx1QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCx1QkFBaUIsR0FBRyxLQUFJ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QW9GLENBQ3pHLENBQUM7SUFDSixDQUFDOztnQkFqTzRCLFNBQVM7O0lBL0MzQixTQUFTO1FBRHJCLFVBQVUsRUFBRTt5Q0FnRGtCLFNBQVM7T0EvQzNCLFNBQVMsQ0FpUnJCO0lBQUQsZ0JBQUM7Q0FBQSxBQWpSRCxDQUErQixLQUFLLEdBaVJuQztTQWpSWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkUXVlcnkgZXh0ZW5kcyBRdWVyeTxHcmlkU3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhcGk6IERhdG9HcmlkQXBpO1xuICBncmlkUmVmOiBBZ0dyaWRBbmd1bGFyO1xuICAvL0BpbnRlcm5hbFxuICBfZ3JpZFJlYWR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLl9ncmlkUmVhZHkuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIocmVhZHkgPT4gcmVhZHkpKTtcbiAgLy9AaW50ZXJuYWxcbiAgX3NlcnZlckRhdGFMb2FkZWQgPSBuZXcgU3ViamVjdDxEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQ+KCk7XG4gIHNlcnZlckRhdGFMb2FkZWQkID0gdGhpcy5fc2VydmVyRGF0YUxvYWRlZC5hc09ic2VydmFibGUoKTtcbiAgX3Jvd0FjdGlvblZpc2liaWxpdHlDaGFuZ2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcm93QWN0aW9uVmlzaWJpbGl0eUNoYW5nZWQkID0gdGhpcy5fcm93QWN0aW9uVmlzaWJpbGl0eUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gIHJvd0RhdGFDaGFuZ2VkJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIG1lcmdlKHRoaXMuZ3JpZFJlZi5yb3dEYXRhQ2hhbmdlZCwgdGhpcy5ncmlkUmVmLnJvd0RhdGFVcGRhdGVkLCB0aGlzLmdyaWRSZWYuZmlsdGVyQ2hhbmdlZCwgdGhpcy5zZXJ2ZXJEYXRhTG9hZGVkJClcbiAgKTtcbiAgc2VsZWN0ZWRSb3dzQ2hhbmdlJCA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBmcm9tRXZlbnQodGhpcy5hcGkuZ3JpZCwgRXZlbnRzLkVWRU5UX1NFTEVDVElPTl9DSEFOR0VEKS5waXBlKG1hcCgoeyBhcGkgfSkgPT4gYXBpLmdldFNlbGVjdGVkUm93cygpKSlcbiAgKTtcblxuICByb3dzU2VsZWN0aW9uRGF0YSQ6IE9ic2VydmFibGU8R3JpZFJvd3NTZWxlY3Rpb25EYXRhPiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlJCxcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZWQkLFxuICAgICAgdGhpcy5zZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCksXG4gICAgICB0aGlzLndhaXRGb3JHcmlkKCgpID0+IG1lcmdlKHRoaXMuZ3JpZFJlZi5zb3J0Q2hhbmdlZCwgdGhpcy5ncmlkUmVmLnBhZ2luYXRpb25DaGFuZ2VkKSlcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFJvd3NDb3VudCA9IHRoaXMuaXNTZXJ2ZXJTaWRlXG4gICAgICAgICAgPyB0aGlzLnNlcnZlclNpZGVDb25maWcudG90YWxSb3dzXG4gICAgICAgICAgOiB0aGlzLmFwaS5ncmlkLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5nZXRTZWxlY3RlZFJvd3NDb3VudCgpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlUm93cyA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9IHNpemUoY3VycmVudFBhZ2VSb3dzLmZpbHRlcigobm9kZTogUm93Tm9kZSkgPT4gbm9kZS5pc1NlbGVjdGVkKCkpKTtcbiAgICAgICAgY29uc3QgaXNBbGxQYWdlUm93c1NlbGVjdGVkID1cbiAgICAgICAgICAoc2VsZWN0ZWRQYWdlUm93c0NvdW50ID4gMCAmJiBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPT09IHNpemUoY3VycmVudFBhZ2VSb3dzKSkgfHxcbiAgICAgICAgICAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkICYmIGlzRW1wdHkodGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCkpO1xuXG4gICAgICAgIHJldHVybiB7IHRvdGFsUm93c0NvdW50LCBzZWxlY3RlZFJvd3NDb3VudCwgc2VsZWN0ZWRQYWdlUm93c0NvdW50LCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgZmlsdGVyQWN0aXZlJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKS5waXBlKFxuICAgIG1hcCgoeyBmaWx0ZXIsIHNlYXJjaFRlcm0gfTogRGF0b0dyaWRTZXR0aW5ncykgPT4gc2l6ZShmaWx0ZXIpID4gMCB8fCAhIXNlYXJjaFRlcm0pXG4gICk7XG4gIHNlcnZlclNpZGVFcnJvciQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5oYXNFcnJvcik7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBHcmlkU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG4gIH1cblxuICBnZXQgc2VydmVyU2lkZUNvbmZpZygpOiBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbjtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNpZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5lbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5zZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBncmlkQWxpZ25tZW50KCk6IERhdG9HcmlkQWxpZ25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmdyaWRBbGlnbm1lbnQ7XG4gIH1cblxuICBnZXRDb2x1bW5TaXplcygpOiBIYXNoTWFwPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuY29sdW1uc1NpemVzO1xuICB9XG5cbiAgZ2V0Q3VycmVudEdyaWRTZXR0aW5ncygpOiBEYXRvR3JpZFNldHRpbmdzIHtcbiAgICBjb25zdCB0b0NvbElkID0gY29sdW1uID0+IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5hcGk7XG4gICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSBjb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IGNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpO1xuICAgIGNvbnN0IGFsbEdyaWRDb2x1bW5zID0gY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBjb2x1bW5zT3JkZXJcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4uaXNWaXNpYmxlKCkgJiYgIWdyb3VwZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbikpXG4gICAgICAubWFwKHRvQ29sSWQpO1xuICAgIGNvbnN0IHN0b3JlU2V0dGluZ3MgPSB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3M7XG4gICAgY29uc3Qgc2V0dGluZ3M6IERhdG9HcmlkU2V0dGluZ3MgPSB7XG4gICAgICBncmlkQWxpZ25tZW50OiBzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQsXG4gICAgICBzb3J0OiB0aGlzLmdldEdyaWRPcHRpb25zKCkuc29ydEJ5U3RvcmUgPyB0aGlzLmdldFNhdmVkU29ydCgpIDogdGhpcy5nZXRTb3J0TW9kZWwoKSxcbiAgICAgIGhpZGRlbkNvbHVtbnMsXG4gICAgICBncm91cGVkQ29sdW1uczogZ3JvdXBlZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgZmlsdGVyOiB0aGlzLmdldEZpbHRlcigpLFxuICAgICAgcGlubmVkQ29sdW1uczogY29sdW1ucy5nZXREaXNwbGF5ZWRMZWZ0Q29sdW1ucygpLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNPcmRlcjogYWxsR3JpZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc1NpemVzOiBudWxsLFxuICAgICAgc2VhcmNoVGVybTogbnVsbFxuICAgIH07XG5cbiAgICBpZiAoc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pIHtcbiAgICAgIHNldHRpbmdzLmNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhbGxHcmlkQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgZ2V0U29ydE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLmFwaS5ncmlkLmdldFNvcnRNb2RlbCgpLnBvcCgpIGFzIERhdG9HcmlkU29ydDtcbiAgfVxuXG4gIGdldFNhdmVkU29ydCgpOiBEYXRvR3JpZFNvcnQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3Muc29ydCB8fCB0aGlzLmdldFNvcnRNb2RlbCgpO1xuICB9XG5cbiAgZ2V0U29ydChzYXZlZFNvcnQ6IERhdG9HcmlkU29ydCA9IHRoaXMuZ2V0U2F2ZWRTb3J0KCkpOiBEYXRvR3JpZFNvcnQge1xuICAgIGlmIChzYXZlZFNvcnQpIHtcbiAgICAgIGNvbnN0IHsgY29sSWQsIHNvcnQsIHNvcnRJbmRleCB9ID0gc2F2ZWRTb3J0O1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5hcGkuY29sdW1ucy5nZXRDb2x1bW4oY29sSWQpO1xuICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKTtcblxuICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldENvbEZpZWxkKGNvbHVtbi5nZXRDb2xEZWYoKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgY29sSWQsIHNvcnQsIGZpZWxkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW4gPSB0aGlzLmdldFNlY29uZGFyeUNvbHVtbihjb2xJZCk7XG5cbiAgICAgICAgaWYgKHNlY29uZGFyeUNvbHVtbikge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gc29ydEluZGV4IHx8IGFsbENvbHVtbnMuaW5kZXhPZihzZWNvbmRhcnlDb2x1bW4pO1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0Q29sRmllbGQoc2Vjb25kYXJ5Q29sdW1uLmdldENvbERlZigpKTtcblxuICAgICAgICAgIHJldHVybiB7IGNvbElkLCBzb3J0LCBmaWVsZCwgc29ydEluZGV4OiBjb2x1bW5JbmRleCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29sSWQ6IG51bGwsIHNvcnQ6IG51bGwgfTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfc2V0QXBpKGFwaTogRGF0b0dyaWRBcGksIGdyaWRSZWY6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLmdyaWRSZWYgPSBncmlkUmVmO1xuICB9XG5cbiAgLyoqIFJldHVybnMganVzdCB0aGUgcm93cyBkYXRhICovXG4gIGdldFNlbGVjdGVkUm93czxUPigpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IHRydWUpOiBUIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiBmYWxzZSk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBUW10gfCBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgZW50aXJlIHJvdyBub2RlICovXG4gIGdldFNlbGVjdGVkUm93Tm9kZXMoKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFJvd05vZGUgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiBmYWxzZSk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogUm93Tm9kZVtdIHwgUm93Tm9kZSB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWROb2RlcygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIGdldEZpbHRlcigpOiBEYXRvR3JpZEZpbHRlcnNNYXAge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuZmlsdGVyO1xuICB9XG5cbiAgc2VsZWN0RmlsdGVyKCk6IE9ic2VydmFibGU8RGF0b0dyaWRGaWx0ZXJzTWFwPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzLmZpbHRlcik7XG4gIH1cblxuICBnZXRFeHRlcm5hbEZpbHRlcigpOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10ge1xuICAgIGNvbnN0IGdyaWRGaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXIoKTtcblxuICAgIGlmIChncmlkRmlsdGVycykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyaWRGaWx0ZXJzKS5yZWR1Y2UoKGZpbHRlcnMsIGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGdyaWRGaWx0ZXJzW2ZpZWxkXTtcblxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHsgZmllbGQsIGZpbHRlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldFNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLnNlYXJjaFRlcm07XG4gIH1cblxuICBzZWxlY3RTZWFyY2hUZXJtKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNldHRpbmdzLnNlYXJjaFRlcm0pO1xuICB9XG5cbiAgd2FpdEZvckdyaWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlPzogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gc291cmNlID8gdGhpcy5ncmlkUmVhZHkkLnBpcGUoc3dpdGNoTWFwKHNvdXJjZSkpIDogdGhpcy5ncmlkUmVhZHkkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZ3JpZFJlYWR5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VydmVyRGF0YUxvYWRlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0R3JpZE9wdGlvbnMoKTogRGF0b0dyaWRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkUmVmID8gKHRoaXMuZ3JpZFJlZi5ncmlkT3B0aW9ucyBhcyBEYXRvR3JpZE9wdGlvbnMpIDogbnVsbDtcbiAgfVxuXG4gIHNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKTogT2JzZXJ2YWJsZTxTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbik7XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd3NDb3VudCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHsgdG90YWxSb3dzLCBleGNsdWRlZEZyb21TZWxlY3RBbGwgfSA9IHRoaXMuc2VydmVyU2lkZUNvbmZpZztcbiAgICAgIHJldHVybiB0b3RhbFJvd3MgLSBzaXplKGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCk7XG4gICAgfVxuICAgIHJldHVybiBzaXplKHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICB9XG5cbiAgZ2V0Q3VycmVudFBhZ2VSb3dzKCk6IFJvd05vZGVbXSB7XG4gICAgY29uc3QgcGFnZVJvd3M6IFJvd05vZGVbXSA9IFtdO1xuICAgIGNvbnN0IHB1c2hQYWdlUm93ID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIHBhZ2VSb3dzLnB1c2gobm9kZSk7XG4gICAgfTtcbiAgICBjb25zdCBncmlkID0gdGhpcy5hcGkuZ3JpZDtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IGdyaWQucGFnaW5hdGlvbkdldFBhZ2VTaXplKCk7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBncmlkLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpO1xuICAgIGNvbnN0IHRvdGFsUm93cyA9IGdyaWQucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XG4gICAgY29uc3QgZmlyc3RQYWdlSW5kZXggPSBjdXJyZW50UGFnZSAqIHBhZ2VTaXplO1xuICAgIGxldCBsYXN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggKyBwYWdlU2l6ZTtcbiAgICBpZiAobGFzdFBhZ2VJbmRleCA+IHRvdGFsUm93cykge1xuICAgICAgbGFzdFBhZ2VJbmRleCA9IHRvdGFsUm93cztcbiAgICB9XG4gICAgY29uc3QgcGVyZm9ybUFjdGlvbiA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5yb3dJbmRleCA8IGxhc3RQYWdlSW5kZXggJiYgbm9kZS5yb3dJbmRleCA+PSBmaXJzdFBhZ2VJbmRleCkge1xuICAgICAgICBwdXNoUGFnZVJvdyhub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuaXNTZXJ2ZXJTaWRlID8gZ3JpZC5mb3JFYWNoTm9kZShwZXJmb3JtQWN0aW9uKSA6IGdyaWQuZm9yRWFjaE5vZGVBZnRlckZpbHRlckFuZFNvcnQocGVyZm9ybUFjdGlvbik7XG4gICAgcmV0dXJuIHBhZ2VSb3dzO1xuICB9XG5cbiAgZ2V0QWxsQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGl2b3RDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxDb2x1bW5zKCkuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaXNQaXZvdEFjdGl2ZSgpKTtcbiAgfVxuXG4gIHNlbGVjdElzU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLnNlbGVjdEFsbFJvd3NFbmFibGVkKTtcbiAgfVxuXG4gIGdldFNlY29uZGFyeUNvbHVtbihjb2xJZDogc3RyaW5nKTogQ29sdW1uIHtcbiAgICAvKiogVXNlIGdldFBpdm90UmVzdWx0Q29sdW1ucyBmcm9tIHZlciAyOCAqL1xuICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldFNlY29uZGFyeUNvbHVtbnMoKTtcblxuICAgIGlmIChzZWNvbmRhcnlDb2x1bW5zKSB7XG4gICAgICByZXR1cm4gc2Vjb25kYXJ5Q29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSA9PT0gY29sSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbihjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBDb2x1bW4pID0+ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkgfHwgIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKS5jaGVja2JveFNlbGVjdGlvblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0seUJBQXlCLENBQUM7QUFHbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hGO0lBQStCLDZCQUFxQjtJQStDbEQsbUJBQXNCLEtBQWdCO1FBQXRDLFlBQ0Usa0JBQU0sS0FBSyxDQUFDLFNBQ2I7UUFGcUIsV0FBSyxHQUFMLEtBQUssQ0FBVztRQTVDdEMsV0FBVztRQUNYLGdCQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsZ0JBQVUsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxXQUFXO1FBQ1gs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RU8saURBQTZCLEdBQXJDLFVBQXNDLE9BQWlCO1FBQ3JELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FDbkIsVUFBQyxNQUFjLElBQUssT0FBQSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsaUJBQWlCLEVBQXBGLENBQW9GLENBQ3pHLENBQUM7SUFDSixDQUFDOztnQkFyTzRCLFNBQVM7O0lBL0MzQixTQUFTO1FBRHJCLFVBQVUsRUFBRTt5Q0FnRGtCLFNBQVM7T0EvQzNCLFNBQVMsQ0FxUnJCO0lBQUQsZ0JBQUM7Q0FBQSxBQXJSRCxDQUErQixLQUFLLEdBcVJuQztTQXJSWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBnZXRTb3J0TW9kZWwgYXMgZ2V0Q29sdW1uU29ydE1vZGVsIH0gZnJvbSAnLi4vLi4vZ3JpZC9ncmlkLXNvcnQudXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR3JpZFF1ZXJ5IGV4dGVuZHMgUXVlcnk8R3JpZFN0b3JlU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgYXBpOiBEYXRvR3JpZEFwaTtcbiAgZ3JpZFJlZjogQWdHcmlkQW5ndWxhcjtcbiAgLy9AaW50ZXJuYWxcbiAgX2dyaWRSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBncmlkUmVhZHkkID0gdGhpcy5fZ3JpZFJlYWR5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKHJlYWR5ID0+IHJlYWR5KSk7XG4gIC8vQGludGVybmFsXG4gIF9zZXJ2ZXJEYXRhTG9hZGVkID0gbmV3IFN1YmplY3Q8RGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50PigpO1xuICBzZXJ2ZXJEYXRhTG9hZGVkJCA9IHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gIF9yb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJvd0FjdGlvblZpc2liaWxpdHlDaGFuZ2VkJCA9IHRoaXMuX3Jvd0FjdGlvblZpc2liaWxpdHlDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICByb3dEYXRhQ2hhbmdlZCQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBtZXJnZSh0aGlzLmdyaWRSZWYucm93RGF0YUNoYW5nZWQsIHRoaXMuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCwgdGhpcy5ncmlkUmVmLmZpbHRlckNoYW5nZWQsIHRoaXMuc2VydmVyRGF0YUxvYWRlZCQpXG4gICk7XG4gIHNlbGVjdGVkUm93c0NoYW5nZSQgPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgZnJvbUV2ZW50KHRoaXMuYXBpLmdyaWQsIEV2ZW50cy5FVkVOVF9TRUxFQ1RJT05fQ0hBTkdFRCkucGlwZShtYXAoKHsgYXBpIH0pID0+IGFwaS5nZXRTZWxlY3RlZFJvd3MoKSkpXG4gICk7XG5cbiAgcm93c1NlbGVjdGlvbkRhdGEkOiBPYnNlcnZhYmxlPEdyaWRSb3dzU2VsZWN0aW9uRGF0YT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZSQsXG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkJCxcbiAgICAgIHRoaXMuc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpLFxuICAgICAgdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiBtZXJnZSh0aGlzLmdyaWRSZWYuc29ydENoYW5nZWQsIHRoaXMuZ3JpZFJlZi5wYWdpbmF0aW9uQ2hhbmdlZCkpXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxSb3dzQ291bnQgPSB0aGlzLmlzU2VydmVyU2lkZVxuICAgICAgICAgID8gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnRvdGFsUm93c1xuICAgICAgICAgIDogdGhpcy5hcGkuZ3JpZC5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZVJvd3MgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPSBzaXplKGN1cnJlbnRQYWdlUm93cy5maWx0ZXIoKG5vZGU6IFJvd05vZGUpID0+IG5vZGUuaXNTZWxlY3RlZCgpKSk7XG4gICAgICAgIGNvbnN0IGlzQWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgKHNlbGVjdGVkUGFnZVJvd3NDb3VudCA+IDAgJiYgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID09PSBzaXplKGN1cnJlbnRQYWdlUm93cykpIHx8XG4gICAgICAgICAgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCAmJiBpc0VtcHR5KHRoaXMuc2VydmVyU2lkZUNvbmZpZy5leGNsdWRlZEZyb21TZWxlY3RBbGwpKTtcblxuICAgICAgICByZXR1cm4geyB0b3RhbFJvd3NDb3VudCwgc2VsZWN0ZWRSb3dzQ291bnQsIHNlbGVjdGVkUGFnZVJvd3NDb3VudCwgaXNBbGxQYWdlUm93c1NlbGVjdGVkIH07XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncykucGlwZShcbiAgICBtYXAoKHsgZmlsdGVyLCBzZWFyY2hUZXJtIH06IERhdG9HcmlkU2V0dGluZ3MpID0+IHNpemUoZmlsdGVyKSA+IDAgfHwgISFzZWFyY2hUZXJtKVxuICApO1xuICBzZXJ2ZXJTaWRlRXJyb3IkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uaGFzRXJyb3IpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogR3JpZFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICB9XG5cbiAgZ2V0IHNlcnZlclNpZGVDb25maWcoKTogU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2VydmVyU2lkZVBhZ2luYXRpb247XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTaWRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuc2VsZWN0QWxsUm93c0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgZ3JpZEFsaWdubWVudCgpOiBEYXRvR3JpZEFsaWdubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5ncmlkQWxpZ25tZW50O1xuICB9XG5cbiAgZ2V0Q29sdW1uU2l6ZXMoKTogSGFzaE1hcDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmNvbHVtbnNTaXplcztcbiAgfVxuXG4gIGdldEN1cnJlbnRHcmlkU2V0dGluZ3MoKTogRGF0b0dyaWRTZXR0aW5ncyB7XG4gICAgY29uc3QgdG9Db2xJZCA9IGNvbHVtbiA9PiBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHRoaXMuYXBpO1xuICAgIC8vIEFHIEdyaWQgMjc6IGdldEFsbENvbHVtbnMoKSByZXR1cm5zIENvbHVtbltdIHwgbnVsbCAoYW5kIHRoZSBncm91cGVkL2dyaWQgY29sdW1uIGdldHRlcnMgY2FuXG4gICAgLy8gbGlrZXdpc2UgYmUgZW1wdHkpIGJlZm9yZSB0aGUgZ3JpZCdzIGNvbHVtbnMgYXJlIGluaXRpYWxpemVkLiBnZXRDdXJyZW50R3JpZFNldHRpbmdzKCkgaXNcbiAgICAvLyByZWFjaGVkIHZpYSBmaXRHcmlkIC0+IHVwZGF0ZVNldHRpbmdzIG9uIHdpbmRvdyByZXNpemUsIHdoaWNoIGNhbiBmaXJlIGJlZm9yZSB0aGF0IHBvaW50LCBzb1xuICAgIC8vIGd1YXJkIGFnYWluc3QgbnVsbCB0byBhdm9pZCBcIkNhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgdW5kZWZpbmVkIChyZWFkaW5nICdmaWx0ZXInKVwiLlxuICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gY29sdW1ucy5nZXRSb3dHcm91cENvbHVtbnMoKSB8fCBbXTtcbiAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSBjb2x1bW5zLmdldEFsbENvbHVtbnMoKSB8fCBbXTtcbiAgICBjb25zdCBhbGxHcmlkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSB8fCBbXTtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gY29sdW1uc09yZGVyXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmlzVmlzaWJsZSgpICYmICFncm91cGVkQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pKVxuICAgICAgLm1hcCh0b0NvbElkKTtcbiAgICBjb25zdCBzdG9yZVNldHRpbmdzID0gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzO1xuICAgIGNvbnN0IHNldHRpbmdzOiBEYXRvR3JpZFNldHRpbmdzID0ge1xuICAgICAgZ3JpZEFsaWdubWVudDogc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50LFxuICAgICAgc29ydDogdGhpcy5nZXRHcmlkT3B0aW9ucygpLnNvcnRCeVN0b3JlID8gdGhpcy5nZXRTYXZlZFNvcnQoKSA6IHRoaXMuZ2V0U29ydE1vZGVsKCksXG4gICAgICBoaWRkZW5Db2x1bW5zLFxuICAgICAgZ3JvdXBlZENvbHVtbnM6IGdyb3VwZWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICAgIHBpbm5lZENvbHVtbnM6IChjb2x1bW5zLmdldERpc3BsYXllZExlZnRDb2x1bW5zKCkgfHwgW10pLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNPcmRlcjogYWxsR3JpZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc1NpemVzOiBudWxsLFxuICAgICAgc2VhcmNoVGVybTogbnVsbFxuICAgIH07XG5cbiAgICBpZiAoc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pIHtcbiAgICAgIHNldHRpbmdzLmNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhbGxHcmlkQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgZ2V0U29ydE1vZGVsKCkge1xuICAgIHJldHVybiBnZXRDb2x1bW5Tb3J0TW9kZWwodGhpcy5hcGkuY29sdW1ucykucG9wKCkgYXMgRGF0b0dyaWRTb3J0O1xuICB9XG5cbiAgZ2V0U2F2ZWRTb3J0KCk6IERhdG9HcmlkU29ydCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zb3J0IHx8IHRoaXMuZ2V0U29ydE1vZGVsKCk7XG4gIH1cblxuICBnZXRTb3J0KHNhdmVkU29ydDogRGF0b0dyaWRTb3J0ID0gdGhpcy5nZXRTYXZlZFNvcnQoKSk6IERhdG9HcmlkU29ydCB7XG4gICAgaWYgKHNhdmVkU29ydCkge1xuICAgICAgY29uc3QgeyBjb2xJZCwgc29ydCwgc29ydEluZGV4IH0gPSBzYXZlZFNvcnQ7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmFwaS5jb2x1bW5zLmdldENvbHVtbihjb2xJZCk7XG4gICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0Q29sRmllbGQoY29sdW1uLmdldENvbERlZigpKTtcblxuICAgICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbiA9IHRoaXMuZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkKTtcblxuICAgICAgICBpZiAoc2Vjb25kYXJ5Q29sdW1uKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzb3J0SW5kZXggfHwgYWxsQ29sdW1ucy5pbmRleE9mKHNlY29uZGFyeUNvbHVtbik7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBnZXRDb2xGaWVsZChzZWNvbmRhcnlDb2x1bW4uZ2V0Q29sRGVmKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgY29sSWQsIHNvcnQsIGZpZWxkLCBzb3J0SW5kZXg6IGNvbHVtbkluZGV4IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2xJZDogbnVsbCwgc29ydDogbnVsbCB9O1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9zZXRBcGkoYXBpOiBEYXRvR3JpZEFwaSwgZ3JpZFJlZjogQWdHcmlkQW5ndWxhcikge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMuZ3JpZFJlZiA9IGdyaWRSZWY7XG4gIH1cblxuICAvKiogUmV0dXJucyBqdXN0IHRoZSByb3dzIGRhdGEgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KCk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFQgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IGZhbHNlKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93PzogYm9vbGVhbik6IFRbXSB8IFQge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkUm93cygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbnRpcmUgcm93IG5vZGUgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dOb2RlcygpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiB0cnVlKTogUm93Tm9kZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IGZhbHNlKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBSb3dOb2RlW10gfCBSb3dOb2RlIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgZ2V0RmlsdGVyKCk6IERhdG9HcmlkRmlsdGVyc01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5maWx0ZXI7XG4gIH1cblxuICBzZWxlY3RGaWx0ZXIoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZEZpbHRlcnNNYXA+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MuZmlsdGVyKTtcbiAgfVxuXG4gIGdldEV4dGVybmFsRmlsdGVyKCk6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSB7XG4gICAgY29uc3QgZ3JpZEZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcigpO1xuXG4gICAgaWYgKGdyaWRGaWx0ZXJzKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JpZEZpbHRlcnMpLnJlZHVjZSgoZmlsdGVycywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gZ3JpZEZpbHRlcnNbZmllbGRdO1xuXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goeyBmaWVsZCwgZmlsdGVyIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0U2VhcmNoVGVybSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3Muc2VhcmNoVGVybTtcbiAgfVxuXG4gIHNlbGVjdFNlYXJjaFRlcm0oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2V0dGluZ3Muc2VhcmNoVGVybSk7XG4gIH1cblxuICB3YWl0Rm9yR3JpZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U6ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U/OiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBzb3VyY2UgPyB0aGlzLmdyaWRSZWFkeSQucGlwZShzd2l0Y2hNYXAoc291cmNlKSkgOiB0aGlzLmdyaWRSZWFkeSQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9ncmlkUmVhZHkuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXRHcmlkT3B0aW9ucygpOiBEYXRvR3JpZE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmdyaWRSZWYgPyAodGhpcy5ncmlkUmVmLmdyaWRPcHRpb25zIGFzIERhdG9HcmlkT3B0aW9ucykgOiBudWxsO1xuICB9XG5cbiAgc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpOiBPYnNlcnZhYmxlPFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93c0NvdW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgY29uc3QgeyB0b3RhbFJvd3MsIGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCB9ID0gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgICAgcmV0dXJuIHRvdGFsUm93cyAtIHNpemUoZXhjbHVkZWRGcm9tU2VsZWN0QWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpemUodGhpcy5nZXRTZWxlY3RlZFJvd3MoKSk7XG4gIH1cblxuICBnZXRDdXJyZW50UGFnZVJvd3MoKTogUm93Tm9kZVtdIHtcbiAgICBjb25zdCBwYWdlUm93czogUm93Tm9kZVtdID0gW107XG4gICAgY29uc3QgcHVzaFBhZ2VSb3cgPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgcGFnZVJvd3MucHVzaChub2RlKTtcbiAgICB9O1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmFwaS5ncmlkO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gZ3JpZC5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IGdyaWQucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCk7XG4gICAgY29uc3QgdG90YWxSb3dzID0gZ3JpZC5wYWdpbmF0aW9uR2V0Um93Q291bnQoKTtcbiAgICBjb25zdCBmaXJzdFBhZ2VJbmRleCA9IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XG4gICAgbGV0IGxhc3RQYWdlSW5kZXggPSBmaXJzdFBhZ2VJbmRleCArIHBhZ2VTaXplO1xuICAgIGlmIChsYXN0UGFnZUluZGV4ID4gdG90YWxSb3dzKSB7XG4gICAgICBsYXN0UGFnZUluZGV4ID0gdG90YWxSb3dzO1xuICAgIH1cbiAgICBjb25zdCBwZXJmb3JtQWN0aW9uID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLnJvd0luZGV4IDwgbGFzdFBhZ2VJbmRleCAmJiBub2RlLnJvd0luZGV4ID49IGZpcnN0UGFnZUluZGV4KSB7XG4gICAgICAgIHB1c2hQYWdlUm93KG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5pc1NlcnZlclNpZGUgPyBncmlkLmZvckVhY2hOb2RlKHBlcmZvcm1BY3Rpb24pIDogZ3JpZC5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydChwZXJmb3JtQWN0aW9uKTtcbiAgICByZXR1cm4gcGFnZVJvd3M7XG4gIH1cblxuICBnZXRBbGxDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbERpc3BsYXllZENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxQaXZvdENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbENvbHVtbnMoKS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc1Bpdm90QWN0aXZlKCkpO1xuICB9XG5cbiAgc2VsZWN0SXNTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uc2VsZWN0QWxsUm93c0VuYWJsZWQpO1xuICB9XG5cbiAgZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkOiBzdHJpbmcpOiBDb2x1bW4ge1xuICAgIC8qKiBVc2UgZ2V0UGl2b3RSZXN1bHRDb2x1bW5zIGZyb20gdmVyIDI4ICovXG4gICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0U2Vjb25kYXJ5Q29sdW1ucygpO1xuXG4gICAgaWYgKHNlY29uZGFyeUNvbHVtbnMpIHtcbiAgICAgIHJldHVybiBzZWNvbmRhcnlDb2x1bW5zLmZpbmQoY29sID0+IGNvbC5nZXRDb2xJZCgpID09PSBjb2xJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uW10ge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihcbiAgICAgIChjb2x1bW46IENvbHVtbikgPT4gIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKSB8fCAhY29sdW1uLmdldFVzZXJQcm92aWRlZENvbERlZigpLmNoZWNrYm94U2VsZWN0aW9uXG4gICAgKTtcbiAgfVxufVxuIl19