@firestitch/list 12.12.3 → 12.12.4

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 (58) hide show
  1. package/app/classes/data-controller.d.ts +2 -1
  2. package/app/classes/reorder-controller.d.ts +7 -2
  3. package/app/classes/selection-controller.d.ts +5 -0
  4. package/app/components/body/body.component.d.ts +2 -2
  5. package/app/components/body/row/actions/actions.component.d.ts +0 -1
  6. package/app/components/body/row/menu-action/menu-action.component.d.ts +3 -1
  7. package/app/components/body/row/row.component.d.ts +2 -0
  8. package/app/components/list/list.component.d.ts +14 -7
  9. package/app/directives/draggable-list/draggable-list.directive.d.ts +12 -3
  10. package/app/directives/draggable-row/draggable-row.directive.d.ts +2 -0
  11. package/app/directives/heading/heading.directive.d.ts +5 -0
  12. package/app/directives/index.d.ts +2 -0
  13. package/app/directives/subheading/subheading.directive.d.ts +5 -0
  14. package/app/fs-list.module.d.ts +21 -19
  15. package/app/interfaces/listconfig.interface.d.ts +7 -4
  16. package/app/models/row/group-footer-row.d.ts +1 -1
  17. package/app/models/row/group-row.d.ts +1 -0
  18. package/app/models/row-action.model.d.ts +0 -2
  19. package/app/models/row.d.ts +1 -1
  20. package/app/pipes/action-label.d.ts +8 -0
  21. package/app/pipes/index.d.ts +1 -0
  22. package/bundles/firestitch-list.umd.js +435 -198
  23. package/bundles/firestitch-list.umd.js.map +1 -1
  24. package/esm2015/app/classes/data-controller.js +36 -18
  25. package/esm2015/app/classes/list-controller.js +2 -3
  26. package/esm2015/app/classes/reorder-controller.js +21 -7
  27. package/esm2015/app/classes/selection-controller.js +16 -2
  28. package/esm2015/app/components/body/body.component.js +4 -5
  29. package/esm2015/app/components/body/row/actions/actions.component.js +3 -8
  30. package/esm2015/app/components/body/row/cell/cell.component.js +22 -7
  31. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +3 -4
  32. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +7 -3
  33. package/esm2015/app/components/body/row/row.component.js +16 -7
  34. package/esm2015/app/components/footer/footer-row/footer-row.component.js +2 -3
  35. package/esm2015/app/components/head/head.component.js +2 -3
  36. package/esm2015/app/components/list/list.component.js +48 -26
  37. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +2 -3
  38. package/esm2015/app/components/pagination/pagination.component.js +4 -5
  39. package/esm2015/app/components/status/status.component.js +3 -5
  40. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +97 -32
  41. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +9 -1
  42. package/esm2015/app/directives/heading/heading.directive.js +13 -0
  43. package/esm2015/app/directives/index.js +3 -0
  44. package/esm2015/app/directives/subheading/subheading.directive.js +13 -0
  45. package/esm2015/app/fs-list.module.js +18 -9
  46. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  47. package/esm2015/app/models/row/child-row.js +1 -1
  48. package/esm2015/app/models/row/group-footer-row.js +2 -2
  49. package/esm2015/app/models/row/group-row.js +5 -1
  50. package/esm2015/app/models/row-action.model.js +8 -22
  51. package/esm2015/app/models/row.js +2 -2
  52. package/esm2015/app/pipes/action-label.js +17 -0
  53. package/esm2015/app/pipes/index.js +2 -0
  54. package/esm2015/public_api.js +3 -2
  55. package/fesm2015/firestitch-list.js +347 -156
  56. package/fesm2015/firestitch-list.js.map +1 -1
  57. package/package.json +2 -2
  58. package/public_api.d.ts +2 -1
@@ -31,9 +31,15 @@ export class ReorderController {
31
31
  get dataController() {
32
32
  return this._dataController;
33
33
  }
34
+ get selectionController() {
35
+ return this._selectionController;
36
+ }
34
37
  get manualReorderActivated$() {
35
38
  return this._manualReorderActivated$.asObservable();
36
39
  }
40
+ get manualReorderActivated() {
41
+ return this._manualReorderActivated$.getValue();
42
+ }
37
43
  get leftReorderActivated$() {
38
44
  return this._enabled$
39
45
  .pipe(map((enabled) => {
@@ -56,22 +62,30 @@ export class ReorderController {
56
62
  get reorderDisabled() {
57
63
  return this._reorderDisabled$.getValue();
58
64
  }
59
- initWithConfig(data, dataController, actionsController) {
60
- var _a, _b, _c, _d;
65
+ initWithConfig(data, dataController, actionsController, selectionController) {
66
+ var _a, _b, _c;
61
67
  if (!data) {
62
68
  return;
63
69
  }
64
- this.menu = (_a = data.menu) !== null && _a !== void 0 ? _a : true;
70
+ this.menu = (_a = data.menu) !== null && _a !== void 0 ? _a : false;
65
71
  this.position = (_b = data.position) !== null && _b !== void 0 ? _b : ReorderPosition.Left;
66
- this.strategy = (_c = data.strategy) !== null && _c !== void 0 ? _c : ReorderStrategy.Manual;
67
- this.status = (_d = data.status) !== null && _d !== void 0 ? _d : true;
72
+ if (!data.disabled) {
73
+ this.strategy = ReorderStrategy.Always;
74
+ }
75
+ if (data.toggle) {
76
+ this.strategy = ReorderStrategy.Manual;
77
+ }
78
+ // this.strategy = data.strategy ?? ReorderStrategy.Manual;
68
79
  this.label = data.label;
80
+ this.multiple = data.multiple;
81
+ this.status = (_c = data.status) !== null && _c !== void 0 ? _c : true;
69
82
  this.startCallback = data.start;
70
83
  this.movedCallback = data.moved;
71
84
  this.doneCallback = data.done;
72
85
  this.moveDropCallback = data.moveDrop;
73
86
  this._dataController = dataController;
74
87
  this._actionsController = actionsController;
88
+ this._selectionController = selectionController;
75
89
  if (this.strategy === ReorderStrategy.Always) {
76
90
  this.enableReorder();
77
91
  }
@@ -100,7 +114,7 @@ export class ReorderController {
100
114
  }
101
115
  }
102
116
  enableReorder() {
103
- if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {
117
+ if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {
104
118
  const returnedValue = this.startCallback();
105
119
  if (returnedValue && returnedValue instanceof Observable) {
106
120
  this.disableReorderAction();
@@ -167,4 +181,4 @@ ReorderController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
167
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, decorators: [{
168
182
  type: Injectable
169
183
  }], ctorParameters: function () { return []; } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFXbkYsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUF3QjVCO1FBUlEsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixDQUFDO0lBRWhCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLHVCQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUzthQUNsQixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFDM0QsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUNGLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsRUFBRSxDQUNkLENBQUE7SUFDTCxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUzthQUNsQixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFDNUQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUNGLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsRUFBRSxDQUNkLENBQUE7SUFDTCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQUksRUFBRSxjQUE4QixFQUFFLGlCQUFvQzs7UUFDOUYsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFFLE9BQU07U0FBRTtRQUVyQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksbUNBQUksSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSxtQ0FBSSxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSxtQ0FBSSxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXhCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXRDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUNuRCxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDaEM7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUztnQkFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUM5QixDQUFDO2FBQ0YsQ0FDRixDQUFDO1lBRUYsaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25DLEtBQUssRUFBRSxNQUFNO2dCQUNiLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN4QixDQUFDO2dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUM5QixDQUFDO2FBQ0YsQ0FDRixDQUFBO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRTNDLElBQUksYUFBYSxJQUFJLGFBQWEsWUFBWSxVQUFVLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUU1QixhQUFhO3FCQUNWLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtxQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUM7Z0JBRUwsT0FBTzthQUNSO1NBQ0Y7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRTdDLElBQUksYUFBYSxJQUFJLGFBQWEsWUFBWSxVQUFVLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUU1QixhQUFhO3FCQUNWLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtxQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUM7Z0JBRUwsT0FBTzthQUNSO1NBQ0Y7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sd0JBQXdCLENBQUMsYUFBcUI7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQztRQUU1QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQzs7K0dBaE5VLGlCQUFpQjttSEFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBGc0xpc3RSZW9yZGVyRG9uZUNhbGxiYWNrLFxuICBGc0xpc3RSZW9yZGVyTW92ZWRDYWxsYmFjayxcbiAgRnNMaXN0UmVvcmRlck1vdmVJbkdyb3VwQ2FsbGJhY2tcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IERhdGFDb250cm9sbGVyIH0gZnJvbSAnLi9kYXRhLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQWN0aW9uc0NvbnRyb2xsZXIgfSBmcm9tICcuL2FjdGlvbnMtY29udHJvbGxlcic7XG5cbmV4cG9ydCBlbnVtIFJlb3JkZXJQb3NpdGlvbiB7XG4gIExlZnQgPSAnbGVmdCcsXG4gIFJpZ2h0ID0gJ3JpZ2h0Jyxcbn1cblxuZXhwb3J0IGVudW0gUmVvcmRlclN0cmF0ZWd5IHtcbiAgQWx3YXlzID0gJ2Fsd2F5cycsXG4gIE1hbnVhbCA9ICdtYW51YWwnLFxuICBDdXN0b20gPSAnY3VzdG9tJyxcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlb3JkZXJDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc3RhcnRDYWxsYmFjazogKCkgPT4gdm9pZCB8IE9ic2VydmFibGU8dm9pZD47XG4gIHB1YmxpYyBtb3ZlZENhbGxiYWNrOiBGc0xpc3RSZW9yZGVyTW92ZWRDYWxsYmFjaztcbiAgcHVibGljIGRvbmVDYWxsYmFjazogRnNMaXN0UmVvcmRlckRvbmVDYWxsYmFjaztcbiAgcHVibGljIG1vdmVEcm9wQ2FsbGJhY2s6IEZzTGlzdFJlb3JkZXJNb3ZlSW5Hcm91cENhbGxiYWNrO1xuXG4gIHB1YmxpYyBzdGF0dXM6IGJvb2xlYW47XG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgbWVudTogYm9vbGVhbjtcbiAgcHVibGljIHBvc2l0aW9uOiBSZW9yZGVyUG9zaXRpb247XG4gIHB1YmxpYyBzdHJhdGVneTogUmVvcmRlclN0cmF0ZWd5O1xuXG4gIHByaXZhdGUgX2RhdGFDb250cm9sbGVyOiBEYXRhQ29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfYWN0aW9uc0NvbnRyb2xsZXI6IEFjdGlvbnNDb250cm9sbGVyO1xuXG4gIHByaXZhdGUgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgX21hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Jlb3JkZXJEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIF9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPSAwO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBlbmFibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG5cbiAgICB0aGlzLl9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJC5uZXh0KHRoaXMuZW5hYmxlZCAmJiB0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YUNvbnRyb2xsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFDb250cm9sbGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBtYW51YWxSZW9yZGVyQWN0aXZhdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFudWFsUmVvcmRlckFjdGl2YXRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlZnRSZW9yZGVyQWN0aXZhdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW5hYmxlZCAmJiB0aGlzLnBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uTGVmdDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMuX251bWJlck9mQWN0aXZlRmlsdGVycyA9PT0gMDtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJpZ2h0UmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5wb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLlJpZ2h0O1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5fbnVtYmVyT2ZBY3RpdmVGaWx0ZXJzID09PSAwO1xuICAgICAgICB9KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICAgIClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVvcmRlckRpc2FibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVvcmRlckRpc2FibGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVvcmRlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFdpdGhDb25maWcoZGF0YSwgZGF0YUNvbnRyb2xsZXI6IERhdGFDb250cm9sbGVyLCBhY3Rpb25zQ29udHJvbGxlcjogQWN0aW9uc0NvbnRyb2xsZXIpIHtcbiAgICBpZiAoIWRhdGEpIHsgcmV0dXJuIH1cblxuICAgIHRoaXMubWVudSA9IGRhdGEubWVudSA/PyB0cnVlO1xuICAgIHRoaXMucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uID8/IFJlb3JkZXJQb3NpdGlvbi5MZWZ0O1xuICAgIHRoaXMuc3RyYXRlZ3kgPSBkYXRhLnN0cmF0ZWd5ID8/IFJlb3JkZXJTdHJhdGVneS5NYW51YWw7XG4gICAgdGhpcy5zdGF0dXMgPSBkYXRhLnN0YXR1cyA/PyB0cnVlO1xuICAgIHRoaXMubGFiZWwgPSBkYXRhLmxhYmVsO1xuXG4gICAgdGhpcy5zdGFydENhbGxiYWNrID0gZGF0YS5zdGFydDtcbiAgICB0aGlzLm1vdmVkQ2FsbGJhY2sgPSBkYXRhLm1vdmVkO1xuICAgIHRoaXMuZG9uZUNhbGxiYWNrID0gZGF0YS5kb25lO1xuICAgIHRoaXMubW92ZURyb3BDYWxsYmFjayA9IGRhdGEubW92ZURyb3A7XG5cbiAgICB0aGlzLl9kYXRhQ29udHJvbGxlciA9IGRhdGFDb250cm9sbGVyO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyID0gYWN0aW9uc0NvbnRyb2xsZXI7XG5cbiAgICBpZiAodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cykge1xuICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsKSB7XG4gICAgICBhY3Rpb25zQ29udHJvbGxlci5hZGRSZW9yZGVyQWN0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwgfHwgJ1Jlb3JkZXInLFxuICAgICAgICAgIG1lbnU6IHRoaXMubWVudSxcbiAgICAgICAgICBwcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkaXNhYmxlZDogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVvcmRlckRpc2FibGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgYWN0aW9uc0NvbnRyb2xsZXIuYWRkUmVvcmRlckRvbmVBY3Rpb24oe1xuICAgICAgICAgIGxhYmVsOiAnRG9uZScsXG4gICAgICAgICAgcHJpbWFyeTogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVJlb3JkZXIoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRpc2FibGVkOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW9yZGVyRGlzYWJsZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVSZW9yZGVyKCkge1xuICAgIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsIHx8IHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5DdXN0b20pIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnN0YXJ0Q2FsbGJhY2soKTtcblxuICAgICAgaWYgKHJldHVybmVkVmFsdWUgJiYgcmV0dXJuZWRWYWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUmVvcmRlckFjdGlvbigpO1xuXG4gICAgICAgIHJldHVybmVkVmFsdWVcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVSZW9yZGVyKCkge1xuICAgIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsIHx8IHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5DdXN0b20pIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnJlb3JkZXJGaW5pc2hlZCgpO1xuXG4gICAgICBpZiAocmV0dXJuZWRWYWx1ZSAmJiByZXR1cm5lZFZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICB0aGlzLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuZWRWYWx1ZVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjIGVuZCBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHJlb3JkZXJGaW5pc2hlZCgpIHtcbiAgICBpZiAodGhpcy5kb25lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmRvbmVDYWxsYmFjayh0aGlzLl9kYXRhQ29udHJvbGxlci5yZW9yZGVyRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSByZW9yZGVyIGFjdGlvbiBhbmQgdXBkYXRlIGZpbHRlciBhY3Rpb25zIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHJlb3JkZXIgYWN0aW9uIGFuZCB1cGRhdGUgZmlsdGVyIGFjdGlvbnMgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fYWN0aW9uc0NvbnRyb2xsZXIudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldE51bmJlck9mQWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzOiBudW1iZXIpIHtcbiAgICB0aGlzLl9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzO1xuXG4gICAgdGhpcy5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICB9XG59XG4iXX0=
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFhbkYsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUEwQjVCO1FBUlEsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixDQUFDO0lBRWhCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTyxD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QUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUFDO2dCQUVMLE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLGFBQXFCO1FBQ25ELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7OytHQXpPVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgRnNMaXN0UmVvcmRlckNvbmZpZyxcbiAgRnNMaXN0UmVvcmRlckRvbmVDYWxsYmFjayxcbiAgRnNMaXN0UmVvcmRlck1vdmVkQ2FsbGJhY2ssXG4gIEZzTGlzdFJlb3JkZXJNb3ZlSW5Hcm91cENhbGxiYWNrXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBEYXRhQ29udHJvbGxlciB9IGZyb20gJy4vZGF0YS1jb250cm9sbGVyJztcbmltcG9ydCB7IEFjdGlvbnNDb250cm9sbGVyIH0gZnJvbSAnLi9hY3Rpb25zLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4vc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuXG5leHBvcnQgZW51bSBSZW9yZGVyUG9zaXRpb24ge1xuICBMZWZ0ID0gJ2xlZnQnLFxuICBSaWdodCA9ICdyaWdodCcsXG59XG5cbmV4cG9ydCBlbnVtIFJlb3JkZXJTdHJhdGVneSB7XG4gIEFsd2F5cyA9ICdhbHdheXMnLFxuICBNYW51YWwgPSAnbWFudWFsJyxcbiAgQ3VzdG9tID0gJ2N1c3RvbScsXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZW9yZGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHN0YXJ0Q2FsbGJhY2s6ICgpID0+IHZvaWQgfCBPYnNlcnZhYmxlPHZvaWQ+O1xuICBwdWJsaWMgbW92ZWRDYWxsYmFjazogRnNMaXN0UmVvcmRlck1vdmVkQ2FsbGJhY2s7XG4gIHB1YmxpYyBkb25lQ2FsbGJhY2s6IEZzTGlzdFJlb3JkZXJEb25lQ2FsbGJhY2s7XG4gIHB1YmxpYyBtb3ZlRHJvcENhbGxiYWNrOiBGc0xpc3RSZW9yZGVyTW92ZUluR3JvdXBDYWxsYmFjaztcblxuICBwdWJsaWMgc3RhdHVzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgcHVibGljIG1lbnU6IGJvb2xlYW47XG4gIHB1YmxpYyBwb3NpdGlvbjogUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgc3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneTtcbiAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2RhdGFDb250cm9sbGVyOiBEYXRhQ29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfYWN0aW9uc0NvbnRyb2xsZXI6IEFjdGlvbnNDb250cm9sbGVyO1xuICBwcml2YXRlIF9zZWxlY3Rpb25Db250cm9sbGVyOiBTZWxlY3Rpb25Db250cm9sbGVyO1xuXG4gIHByaXZhdGUgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgX21hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Jlb3JkZXJEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIF9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPSAwO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBlbmFibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG5cbiAgICB0aGlzLl9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJC5uZXh0KHRoaXMuZW5hYmxlZCAmJiB0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YUNvbnRyb2xsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFDb250cm9sbGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb25Db250cm9sbGVyKCk6IFNlbGVjdGlvbkNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBtYW51YWxSZW9yZGVyQWN0aXZhdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFudWFsUmVvcmRlckFjdGl2YXRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlZnRSZW9yZGVyQWN0aXZhdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW5hYmxlZCAmJiB0aGlzLnBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uTGVmdDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMuX251bWJlck9mQWN0aXZlRmlsdGVycyA9PT0gMDtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJpZ2h0UmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5wb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLlJpZ2h0O1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5fbnVtYmVyT2ZBY3RpdmVGaWx0ZXJzID09PSAwO1xuICAgICAgICB9KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICAgIClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVvcmRlckRpc2FibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVvcmRlckRpc2FibGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVvcmRlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFdpdGhDb25maWcoXG4gICAgZGF0YTogRnNMaXN0UmVvcmRlckNvbmZpZyxcbiAgICBkYXRhQ29udHJvbGxlcjogRGF0YUNvbnRyb2xsZXIsXG4gICAgYWN0aW9uc0NvbnRyb2xsZXI6IEFjdGlvbnNDb250cm9sbGVyLFxuICAgIHNlbGVjdGlvbkNvbnRyb2xsZXI6IFNlbGVjdGlvbkNvbnRyb2xsZXIsXG4gICkge1xuICAgIGlmICghZGF0YSkgeyByZXR1cm4gfVxuXG4gICAgdGhpcy5tZW51ID0gZGF0YS5tZW51ID8/IGZhbHNlO1xuICAgIHRoaXMucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uID8/IFJlb3JkZXJQb3NpdGlvbi5MZWZ0O1xuXG4gICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cztcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50b2dnbGUpIHtcbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsXG4gICAgfVxuICAgIC8vIHRoaXMuc3RyYXRlZ3kgPSBkYXRhLnN0cmF0ZWd5ID8/IFJlb3JkZXJTdHJhdGVneS5NYW51YWw7XG4gICAgdGhpcy5sYWJlbCA9IGRhdGEubGFiZWw7XG4gICAgdGhpcy5tdWx0aXBsZSA9IGRhdGEubXVsdGlwbGU7XG4gICAgdGhpcy5zdGF0dXMgPSBkYXRhLnN0YXR1cyA/PyB0cnVlO1xuXG4gICAgdGhpcy5zdGFydENhbGxiYWNrID0gZGF0YS5zdGFydDtcbiAgICB0aGlzLm1vdmVkQ2FsbGJhY2sgPSBkYXRhLm1vdmVkO1xuICAgIHRoaXMuZG9uZUNhbGxiYWNrID0gZGF0YS5kb25lO1xuICAgIHRoaXMubW92ZURyb3BDYWxsYmFjayA9IGRhdGEubW92ZURyb3A7XG5cbiAgICB0aGlzLl9kYXRhQ29udHJvbGxlciA9IGRhdGFDb250cm9sbGVyO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyID0gYWN0aW9uc0NvbnRyb2xsZXI7XG4gICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlciA9IHNlbGVjdGlvbkNvbnRyb2xsZXI7XG5cbiAgICBpZiAodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cykge1xuICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsKSB7XG4gICAgICBhY3Rpb25zQ29udHJvbGxlci5hZGRSZW9yZGVyQWN0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwgfHwgJ1Jlb3JkZXInLFxuICAgICAgICAgIG1lbnU6IHRoaXMubWVudSxcbiAgICAgICAgICBwcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkaXNhYmxlZDogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVvcmRlckRpc2FibGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgYWN0aW9uc0NvbnRyb2xsZXIuYWRkUmVvcmRlckRvbmVBY3Rpb24oe1xuICAgICAgICAgIGxhYmVsOiAnRG9uZScsXG4gICAgICAgICAgcHJpbWFyeTogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVJlb3JkZXIoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRpc2FibGVkOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW9yZGVyRGlzYWJsZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVSZW9yZGVyKCkge1xuICAgIGlmICgodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCB8fCB0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuQ3VzdG9tKSAmJiB0aGlzLnN0YXJ0Q2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnN0YXJ0Q2FsbGJhY2soKTtcblxuICAgICAgaWYgKHJldHVybmVkVmFsdWUgJiYgcmV0dXJuZWRWYWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUmVvcmRlckFjdGlvbigpO1xuXG4gICAgICAgIHJldHVybmVkVmFsdWVcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVSZW9yZGVyKCkge1xuICAgIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsIHx8IHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5DdXN0b20pIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnJlb3JkZXJGaW5pc2hlZCgpO1xuXG4gICAgICBpZiAocmV0dXJuZWRWYWx1ZSAmJiByZXR1cm5lZFZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICB0aGlzLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuZWRWYWx1ZVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjIGVuZCBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHJlb3JkZXJGaW5pc2hlZCgpIHtcbiAgICBpZiAodGhpcy5kb25lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmRvbmVDYWxsYmFjayh0aGlzLl9kYXRhQ29udHJvbGxlci5yZW9yZGVyRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSByZW9yZGVyIGFjdGlvbiBhbmQgdXBkYXRlIGZpbHRlciBhY3Rpb25zIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHJlb3JkZXIgYWN0aW9uIGFuZCB1cGRhdGUgZmlsdGVyIGFjdGlvbnMgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fYWN0aW9uc0NvbnRyb2xsZXIudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldE51bmJlck9mQWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzOiBudW1iZXIpIHtcbiAgICB0aGlzLl9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzO1xuXG4gICAgdGhpcy5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Observable, Subject } from 'rxjs';
1
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
2
  import { take, takeUntil } from 'rxjs/operators';
3
3
  import { get as _get } from 'lodash-es';
4
4
  export var SelectionChangeType;
@@ -29,12 +29,20 @@ export class SelectionController {
29
29
  this._visibleRecordsCount = 0;
30
30
  this._totalRecordsCount = 0;
31
31
  this._destroy$ = new Subject();
32
+ this._disabled$ = new BehaviorSubject(false);
32
33
  this.actions = config.actions ? [...config.actions] : [];
33
34
  this.actionSelectedFn = config.actionSelected;
34
35
  this.allSelectedFn = config.allSelected;
35
36
  this.cancelledFn = config.cancelled;
36
37
  this.selectionChangedFn = config.selectionChanged;
37
38
  this.selectAll = config.selectAll;
39
+ this._disabled$.next(!!config.disabled);
40
+ }
41
+ get disabled() {
42
+ return this._disabled$.getValue();
43
+ }
44
+ get disabled$() {
45
+ return this._disabled$.asObservable();
38
46
  }
39
47
  get selectedAll() {
40
48
  return this._selectedAll;
@@ -171,6 +179,12 @@ export class SelectionController {
171
179
  this._updateSelectedVisibleStatus();
172
180
  }
173
181
  }
182
+ enableSelection() {
183
+ this._disabled$.next(false);
184
+ }
185
+ disableSelection() {
186
+ this._disabled$.next(true);
187
+ }
174
188
  /**
175
189
  * Method will be called from List for remove row if it was selected
176
190
  *
@@ -442,4 +456,4 @@ export class SelectionController {
442
456
  this._visibleRowsSelectionChanged();
443
457
  }
444
458
  }
445
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDhFQUF1RCxDQUFBO0lBQ3ZELGdFQUF5QyxDQUFBO0lBQ3pDLGtEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBR0QsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFDRSxTQUFnQyxFQUFFLEVBQzFCLFFBQWdCLEVBQ2hCLGdCQUFpQztRQURqQyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFsQzNDLDZCQUE2QjtRQUN0QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsY0FBUyxHQUFHLElBQUksQ0FBQztRQU14QixrQ0FBa0M7UUFDM0IsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsQyxnQ0FBZ0M7UUFDeEIsd0JBQW1CLEdBQWlCLElBQUksQ0FBQztRQUd6QyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBK0MsQ0FBQztRQUV0RiwwRkFBMEY7UUFDbEYsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXBDLHNFQUFzRTtRQUN0RSxrRkFBa0Y7UUFDMUUsaUJBQVksR0FBRyxLQUFLLENBQUM7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SSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFdkMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2csIFNlbGVjdGlvblJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IEZzTGlzdFNlbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdyc7XG5cblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uQ2hhbmdlVHlwZSB7XG4gIEFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2UgPSAnQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZScsXG4gIFJvd1NlbGVjdGlvbkNoYW5nZSA9ICdSb3dTZWxlY3Rpb25DaGFuZ2UnLFxuICBTZWxlY3RlZEFsbCA9ICdTZWxlY3RlZEFsbCcsXG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIge1xuXG4gIC8vIE9wdGlvbnMgZnJvbSBwYXNzZWQgY29uZmlnXG4gIHB1YmxpYyBhY3Rpb25zID0gW107XG4gIHB1YmxpYyBzZWxlY3RBbGwgPSB0cnVlO1xuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICBwdWJsaWMgYWN0aW9uU2VsZWN0ZWRGbjtcbiAgcHVibGljIGFsbFNlbGVjdGVkRm47XG4gIHB1YmxpYyBjYW5jZWxsZWRGbjtcblxuICAvLyBTdG9yZSBmb3Igc2VsZWN0ZWQgdmlzaWJsZSByb3dzXG4gIHB1YmxpYyBzZWxlY3RlZFJvd3MgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBzZWxlY3RlZEdyb3VwcyA9IG5ldyBNYXAoKTtcblxuICAvLyBSZWZlcmVuY2UgdG8gc2VsZWN0aW9uIGRpYWxvZ1xuICBwcml2YXRlIF9zZWxlY3Rpb25EaWFsb2dSZWY6IFNlbGVjdGlvblJlZiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZ2V0Um93czogKCkgPT4gYW55W107XG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZSA9IG5ldyBTdWJqZWN0PHsgdHlwZTogU2VsZWN0aW9uQ2hhbmdlVHlwZSwgcGF5bG9hZDogYW55IH0+KCk7XG5cbiAgLy8gU2VsZWN0ZWQgb25seSB2aXNpYmxlIHJvd3MgKGV4Ljogc2VsZWN0ZWQgb25seSBsaW1pdGVkIDE1IHJvd3Mgd2hlbiB3ZSBoYXZlIHBhZ2luYXRpb24pXG4gIHByaXZhdGUgX3NlbGVjdGVkQWxsVmlzaWJsZSA9IGZhbHNlO1xuXG4gIC8vIFNlbGVjdGVkIGFsbCByb3dzIHdoZW4gd2FzIGNsaWNrZWQgXCJTZWxlY3QgQWxsXCIgaW4gc2VsZWN0aW9uIGRpYWxvZ1xuICAvLyBvciBjb3VudCBvZiB2aXNpYmxlIHJlY29yZHMgaXMgZXF1YWwgdG8gdG90YWwgYW5kIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIHNlbGVjdGVkXG4gIHByaXZhdGUgX3NlbGVjdGVkQWxsID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSZWNvcmRzID0gMDtcbiAgcHJpdmF0ZSBfdmlzaWJsZVJlY29yZHNDb3VudCA9IDA7XG4gIHByaXZhdGUgX3RvdGFsUmVjb3Jkc0NvdW50ID0gMDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcgPSB7fSxcbiAgICBwcml2YXRlIF90cmFja0J5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2dcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gY29uZmlnLmFjdGlvbnMgPyBbLi4uY29uZmlnLmFjdGlvbnNdIDogW107XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gY29uZmlnLmFjdGlvblNlbGVjdGVkO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGNvbmZpZy5hbGxTZWxlY3RlZDtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY29uZmlnLmNhbmNlbGxlZDtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWRGbiA9IGNvbmZpZy5zZWxlY3Rpb25DaGFuZ2VkO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gY29uZmlnLnNlbGVjdEFsbDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRBbGw7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93c0NhbGxiYWNrKGRhdGE6ICgpID0+IGFueVtdKSB7XG4gICAgdGhpcy5fZ2V0Um93cyA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIHJvdyB3YXMgc2VsZWN0ZWRcbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gY2hlY2tlZFxuICAgKi9cbiAgcHVibGljIHJvd1NlbGVjdGlvbkNoYW5nZShyb3c6IFJvdywgY2hlY2tlZDogYm9vbGVhbikge1xuICAgIGlmIChyb3cpIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhyb3cpO1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhyb3cpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkKCk7XG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRWaXNpYmxlU3RhdHVzKCk7XG4gIH1cblxuICAvKipcbiAgICogRG8gY2hlY2sgb3IgdW5jaGVjayBvZiB2aXNpYmxlIHJvd3NcbiAgICogQHBhcmFtIGNoZWNrZWRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RBbGxWaXNpYmxlUm93cyhjaGVja2VkKSB7XG4gICAgdGhpcy5vcGVuRGlhbG9nKCk7XG5cbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBjaGVja2VkO1xuICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcyA9IDA7XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5fZ2V0Um93cygpO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgICAgICBpZiAocm93LmlzR3JvdXApIHtcbiAgICAgICAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKGlkZW50aWZpZXIsIHJvdy5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNldChpZGVudGlmaWVyLCByb3cuZGF0YSk7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3cuZGF0YSk7XG5cbiAgICAgICAgaWYgKHJvdy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyLCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWRlbnRpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID0gMDtcbiAgICB9XG5cbiAgICAvLyBGaXJlIGFuIGV2ZW50IHRoYXQgYWxsIHZpc2libGUgc2VsZWN0aW9uIHdhcyBjaGFuZ2VkXG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Jvd1NlbGVjdGVkKHJvd0RhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSkpXG4gICAgICB8fCB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyh0aGlzLl9yb3dJZGVudGlmaWVyKHJvd0RhdGEpKVxuICAgICAgfHwgdGhpcy5zZWxlY3RlZEFsbDtcbiAgfVxuXG4gIHB1YmxpYyBpc0dyb3VwU2VsZWN0ZWQocm93KTogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LmRhdGEpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5oYXMoaWRlbnRpZmllcilcbiAgICAgICYmIHJvdy5jaGlsZHJlbj8ubGVuZ3RoID4gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQoaWRlbnRpZmllcilcbiAgICApIHtcbiAgICAgIHJldHVybiAnaW5kZXRlcm1pbmF0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyhpZGVudGlmaWVyKSB8fCB0aGlzLnNlbGVjdGVkQWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHNlbGVjdGlvbiBkaWFsb2cgYW5kIGNyZWF0ZSByZWZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBvcGVuRGlhbG9nKCkge1xuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYgPSB0aGlzLl9zZWxlY3Rpb25EaWFsb2cub3Blbih7XG4gICAgICAgIHNlbGVjdEFsbDogdGhpcy5zZWxlY3RBbGwsXG4gICAgICAgIGFsbENvdW50OiB0aGlzLl90b3RhbFJlY29yZHNDb3VudCxcbiAgICAgICAgYWN0aW9uczogWy4uLnRoaXMuYWN0aW9uc10sXG4gICAgICAgIC8vIHNlbGVjdEFsbDogdGhpcy5zZWxlXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fc3Vic2NyaWJlVG9TZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvdW50IG9mIHZpc2libGUgZWxlbWVudHNcbiAgICogQHBhcmFtIGNvdW50XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmlzaWJsZVJlY29yZHNDb3VudChjb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmlzaWJsZVJlY29yZHNDb3VudCA9IGNvdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjb3VudCBvZiB0b3RhbCBhdmFpbGFibGUgZWxlbWVuZXRzXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFJlY29yZHNDb3VudCA9IGNvdW50O1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFsbENvdW50KHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZWQoaW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICBpZiAoIWluZmluaXR5U2Nyb2xsRW5hYmxlZCkge1xuICAgICAgICB0aGlzLl9yZXNldFNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgICAgdGhpcy5fZ2V0Um93cygpXG4gICAgICAgIC5tYXAoKHJvdykgPT4gcm93LmRhdGEpXG4gICAgICAgIC5mb3JFYWNoKChyb3dEYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWRlbnRpZmllZCA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkZW50aWZpZWQpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRWaXNpYmxlU3RhdHVzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmcm9tIExpc3QgZm9yIHJlbW92ZSByb3cgaWYgaXQgd2FzIHNlbGVjdGVkXG4gICAqXG4gICAqIEJVVCBtZXRob2RzIGZvciB1cGRhdGUgdmlzaWJsZSBhbmQgZXRjLiB3aWxsIGJlIGNhbGxlZCBhIGJpdCBsYXRlclxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUm93KHJvdykge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLl9yb3dJZGVudGlmaWVyKHJvdykpO1xuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyc2VjdGlvbiBvZiBzZWxlY3RlZCBhbmQgcGFzc2VkIHJvd3MgdG8gcmVtb3ZlIHJvd3MgdGhhdCB3ZSBkb250IG5lZWQgbW9yZVxuICAgKiBAcGFyYW0gcm93c1xuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkUm93c0ludGVyc2VjdGlvbihyb3dzKSB7XG4gICAgY29uc3Qgcm93c0luZGVudGlmaWVycyA9IHJvd3MubWFwKChyb3cpID0+IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm93cy5mb3JFYWNoKChzZWxlY3RlZFJvdywgaWRlbnRpZmllcikgPT4ge1xuICAgICAgaWYgKHJvd3NJbmRlbnRpZmllcnMuaW5kZXhPZihpZGVudGlmaWVyKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVSb3coc2VsZWN0ZWRSb3cpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKHtcbiAgICBhY3Rpb25zLCBhY3Rpb25TZWxlY3RlZCwgYWxsU2VsZWN0ZWQsIGNhbmNlbGxlZCwgc2VsZWN0aW9uQ2hhbmdlZCwgc2VsZWN0QWxsXG4gIH06IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgPyBbLi4uYWN0aW9uc10gOiB0aGlzLmFjdGlvbnM7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gYWN0aW9uU2VsZWN0ZWQgPz8gdGhpcy5hY3Rpb25TZWxlY3RlZEZuO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGFsbFNlbGVjdGVkID8/IHRoaXMuYWxsU2VsZWN0ZWRGbjtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY2FuY2VsbGVkID8/IHRoaXMuY2FuY2VsbGVkRm47XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4gPSBzZWxlY3Rpb25DaGFuZ2VkID8/IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gc2VsZWN0QWxsID8/IHRoaXMuc2VsZWN0QWxsO1xuICB9XG5cbiAgLy8gUmVzZXQgYWN0aW9ucyB0byBkZWZhdWx0IHNldFxuICBwdWJsaWMgcmVzZXRBY3Rpb25zKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZj8ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VTZWxlY3Rpb25EaWFsb2coKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gbnVsbDtcbiAgICB0aGlzLmFsbFNlbGVjdGVkRm4gPSBudWxsO1xuICAgIHRoaXMuY2FuY2VsbGVkRm4gPSBudWxsO1xuXG4gICAgdGhpcy5jbG9zZVNlbGVjdGlvbkRpYWxvZygpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb25SZWYgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuYWN0aW9uU2VsZWN0ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQWN0aW9uQWN0aW9ucyhkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmNhbmNlbGxlZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25DYW5jZWxBY3Rpb25zKCkpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmFsbFNlbGVjdGVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLl9vblNlbGVjdEFsbEFjdGlvbnMoZGF0YSk7XG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHNvbWUgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIF9vbkFjdGlvbkFjdGlvbnMoZGF0YSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25TZWxlY3RlZEZuKSB7IHJldHVybiB9XG5cbiAgICAvLyBFeGVjdXRlIGNhbGxiYWNrXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hY3Rpb25TZWxlY3RlZEZuKHtcbiAgICAgIHNlbGVjdGVkOiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKS5tYXAoKHJvdykgPT4geyByZXR1cm4gey4uLnJvd319KSxcbiAgICAgIC4uLmRhdGFcbiAgICB9KTtcblxuICAgIC8vIElmIHJlc3VsdCBpcyBvYnNlcnZhYmxlXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcblxuICAgICAgLy8gU3Vic2NyaWJlIGFuZCB3aGFpdCB3aHkgaXQgcmVzb2x2ZWRcbiAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG5cbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcbiAgICAgICAgICB0aGlzLmNsb3NlU2VsZWN0aW9uRGlhbG9nKCk7XG5cbiAgICAgICAgICAvLyBVbmNoZWNrIGFsbCB2aXNpYmxlIHJvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbFZpc2libGVSb3dzKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgY2FuY2VsIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqL1xuICBwcml2YXRlIF9vbkNhbmNlbEFjdGlvbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxWaXNpYmxlUm93cyhmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jYW5jZWxsZWRGbikge1xuICAgICAgdGhpcy5jYW5jZWxsZWRGbigpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSWYgXCJTZWxlY3QgQWxsXCIgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBmbGFnXG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdEFsbEFjdGlvbnMoZmxhZykge1xuICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmxhZztcblxuICAgIHRoaXMuc2VsZWN0QWxsVmlzaWJsZVJvd3MoZmxhZyk7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlU2VsZWN0ZWQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbCwgdGhpcy5fc2VsZWN0ZWRBbGwpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG5cbiAgICBpZiAoIXRoaXMuYWxsU2VsZWN0ZWRGbikgeyByZXR1cm4gfVxuXG4gICAgdGhpcy5hbGxTZWxlY3RlZEZuKGZsYWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKSB7XG4gICAgLy8gUmVtb3ZlIGFjdGlvbnMgaWYgbm8gcm93cyBzZWxlY3RlZFxuICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIFwiYmxpbmtcIiB3aGVuIHVzZXIgc2VsZWN0IGFueSBhY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoW10pO1xuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuKFxuICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoYWN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW4gRGlhbG9nIFJlZiBob3cgbXVjaCByb3dzIHdhcyBzZWxlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZVNlbGVjdGVkKHRoaXMuc2VsZWN0ZWRSb3dzLnNpemUpO1xuXG4gICAgICAvLyBTLVQxMjY4XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluIERpYWxvZyBSZWYgc2VsZWN0ZWQgYWxsIHN0YXR1c1xuICAgKlxuICAgKiBFeC46IFdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIERpYWxvZyBhbmQgYWZ0ZXIgdGhhdCBzb21lIGNoZWNrYm94IHdhcyB1bmNoZWNrZWRcbiAgICogRGlhbG9nIFJlZiBtdXN0IGtub3cgYWJvdXQgaXRcbiAgICpcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZi51cGRhdGVTZWxlY3RlZEFsbFN0YXR1cyh0aGlzLl9zZWxlY3RlZEFsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIGNoZWNrZWQgYW5kIHNlbmQgZXZlbnQgdG8gbWFpbiBoZWFkZXIgY2hlY2tib3hcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGVkVmlzaWJsZVN0YXR1cygpIHtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSB0aGlzLl9zZWxlY3RlZFJlY29yZHMgIT09IDAgJiYgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID09PSB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50O1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoXG4gICAgICBTZWxlY3Rpb25DaGFuZ2VUeXBlLlJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSWYgc2VsZWN0IGFsbCBjaGVja2JveCBpbiBoZWFkZXIgd2FzIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgX3Zpc2libGVSb3dzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VFdmVudChcbiAgICAgIFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNvbnN0cnVjdG9yIGZvciBldmVudHNcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZUV2ZW50KHR5cGU6IFNlbGVjdGlvbkNoYW5nZVR5cGUsIHBheWxvYWQpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UubmV4dCh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByb3cgaWRlbnRpZmllZCBieSB0cmFja0J5IHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfcm93SWRlbnRpZmllcihyb3cpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gX2dldChyb3csIHRoaXMuX3RyYWNrQnksIHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlbGVjdGlvbiBjYW4gbm90IHJlY29nbml6ZSB0cmFjayBieSBmaWVsZCBmb3Igcm93LiAnICtcbiAgICAgICAgJ1BsZWFzZSBjaGVjayBpZiB5b3UgaGFkIGNvbmZpZ3VyZWQgdHJhY2tCeSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHJldHVybiBpZGVudGlmaWVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgcm93LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm93KSA9PiB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdENoaWxkUm93KHJvdylcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5kZWxldGUoaWRlbnRpZmllcik7XG5cbiAgICAgIHJvdy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdENoaWxkUm93KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3Jkcy0tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdENoaWxkUm93KHJvdykge1xuICAgIGNvbnN0IHBhcmVudElkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5wYXJlbnQuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbk51bWJlciA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZ2V0KHBhcmVudElkZW50aWZpZXIpIHx8IDA7XG5cbiAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKHBhcmVudElkZW50aWZpZXIsIHNlbGVjdGVkQ2hpbGRyZW5OdW1iZXIgKyAxKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Q2hpbGRSb3cocm93KSB7XG4gICAgY29uc3QgcGFyZW50SWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LnBhcmVudC5kYXRhKTtcbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQocGFyZW50SWRlbnRpZmllcikgfHwgMDtcblxuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuTnVtYmVyID4gMSkge1xuICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChwYXJlbnRJZGVudGlmaWVyLCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAocGFyZW50SWRlbnRpZmllciwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmRlbGV0ZShpZGVudGlmaWVyKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMuc2V0KGlkZW50aWZpZXIsIG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG5cbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gIH1cbn1cbiJdfQ==
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFPeEMsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3Qiw4RUFBdUQsQ0FBQTtJQUN2RCxnRUFBeUMsQ0FBQTtJQUN6QyxrREFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QjtBQUdELE1BQU0sT0FBTyxtQkFBbUI7SUFtQzlCLFlBQ0UsU0FBZ0MsRUFBRSxFQUMxQixRQUFnQixFQUNoQixnQkFBaUM7UUFEakMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBcEMzQyw2QkFBNkI7UUFDdEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFPeEIsa0NBQWtDO1FBQzNCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN6QixtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFFbEMsZ0NBQWdDO1FBQ3hCLHdCQUFtQixHQUFpQixJQUFJLENBQUM7UUFHekMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQStDLENBQUM7UUFFdEYsMEZBQTBGO1FBQ2xGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUVwQyxzRUFBc0U7UUFDdEUsa0ZBQWtGO1FBQzFFLGlCQUFZLEdBQUcs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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2csIFNlbGVjdGlvblJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IEZzTGlzdFNlbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdyc7XG5cblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uQ2hhbmdlVHlwZSB7XG4gIEFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2UgPSAnQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZScsXG4gIFJvd1NlbGVjdGlvbkNoYW5nZSA9ICdSb3dTZWxlY3Rpb25DaGFuZ2UnLFxuICBTZWxlY3RlZEFsbCA9ICdTZWxlY3RlZEFsbCcsXG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIge1xuXG4gIC8vIE9wdGlvbnMgZnJvbSBwYXNzZWQgY29uZmlnXG4gIHB1YmxpYyBhY3Rpb25zID0gW107XG4gIHB1YmxpYyBzZWxlY3RBbGwgPSB0cnVlO1xuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICBwdWJsaWMgYWN0aW9uU2VsZWN0ZWRGbjtcbiAgcHVibGljIGFsbFNlbGVjdGVkRm47XG5cbiAgcHVibGljIGNhbmNlbGxlZEZuO1xuXG4gIC8vIFN0b3JlIGZvciBzZWxlY3RlZCB2aXNpYmxlIHJvd3NcbiAgcHVibGljIHNlbGVjdGVkUm93cyA9IG5ldyBNYXAoKTtcbiAgcHVibGljIHNlbGVjdGVkR3JvdXBzID0gbmV3IE1hcCgpO1xuXG4gIC8vIFJlZmVyZW5jZSB0byBzZWxlY3Rpb24gZGlhbG9nXG4gIHByaXZhdGUgX3NlbGVjdGlvbkRpYWxvZ1JlZjogU2VsZWN0aW9uUmVmID0gbnVsbDtcblxuICBwcml2YXRlIF9nZXRSb3dzOiAoKSA9PiBhbnlbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlID0gbmV3IFN1YmplY3Q8eyB0eXBlOiBTZWxlY3Rpb25DaGFuZ2VUeXBlLCBwYXlsb2FkOiBhbnkgfT4oKTtcblxuICAvLyBTZWxlY3RlZCBvbmx5IHZpc2libGUgcm93cyAoZXguOiBzZWxlY3RlZCBvbmx5IGxpbWl0ZWQgMTUgcm93cyB3aGVuIHdlIGhhdmUgcGFnaW5hdGlvbilcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRBbGxWaXNpYmxlID0gZmFsc2U7XG5cbiAgLy8gU2VsZWN0ZWQgYWxsIHJvd3Mgd2hlbiB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gIC8vIG9yIGNvdW50IG9mIHZpc2libGUgcmVjb3JkcyBpcyBlcXVhbCB0byB0b3RhbCBhbmQgYWxsIHZpc2libGUgcm93cyB3YXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRBbGwgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICBwcml2YXRlIF92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzQ291bnQgPSAwO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcgPSB7fSxcbiAgICBwcml2YXRlIF90cmFja0J5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2dcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gY29uZmlnLmFjdGlvbnMgPyBbLi4uY29uZmlnLmFjdGlvbnNdIDogW107XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gY29uZmlnLmFjdGlvblNlbGVjdGVkO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGNvbmZpZy5hbGxTZWxlY3RlZDtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY29uZmlnLmNhbmNlbGxlZDtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWRGbiA9IGNvbmZpZy5zZWxlY3Rpb25DaGFuZ2VkO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gY29uZmlnLnNlbGVjdEFsbDtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dCghIWNvbmZpZy5kaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEFsbDtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25DaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dzQ2FsbGJhY2soZGF0YTogKCkgPT4gYW55W10pIHtcbiAgICB0aGlzLl9nZXRSb3dzID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gcm93IHdhcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gcm93XG4gICAqIEBwYXJhbSBjaGVja2VkXG4gICAqL1xuICBwdWJsaWMgcm93U2VsZWN0aW9uQ2hhbmdlKHJvdzogUm93LCBjaGVja2VkOiBib29sZWFuKSB7XG4gICAgaWYgKHJvdykge1xuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0Um93KHJvdyk7XG4gICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Rlc2VsZWN0Um93KHJvdyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3RlZFZpc2libGVTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEbyBjaGVjayBvciB1bmNoZWNrIG9mIHZpc2libGUgcm93c1xuICAgKiBAcGFyYW0gY2hlY2tlZFxuICAgKi9cbiAgcHVibGljIHNlbGVjdEFsbFZpc2libGVSb3dzKGNoZWNrZWQpIHtcbiAgICB0aGlzLm9wZW5EaWFsb2coKTtcblxuICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZSA9IGNoZWNrZWQ7XG4gICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID0gMDtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLl9nZXRSb3dzKCk7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LmRhdGEpO1xuXG4gICAgICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAoaWRlbnRpZmllciwgcm93LmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgICAgICBpZiAocm93LmlzR3JvdXApIHtcbiAgICAgICAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKGlkZW50aWZpZXIsIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIH1cblxuICAgIC8vIEZpcmUgYW4gZXZlbnQgdGhhdCBhbGwgdmlzaWJsZSBzZWxlY3Rpb24gd2FzIGNoYW5nZWRcbiAgICB0aGlzLl92aXNpYmxlUm93c1NlbGVjdGlvbkNoYW5nZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzUm93U2VsZWN0ZWQocm93RGF0YSkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5fcm93SWRlbnRpZmllcihyb3dEYXRhKSlcbiAgICAgIHx8IHRoaXMuc2VsZWN0ZWRHcm91cHMuaGFzKHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSkpXG4gICAgICB8fCB0aGlzLnNlbGVjdGVkQWxsO1xuICB9XG5cbiAgcHVibGljIGlzR3JvdXBTZWxlY3RlZChyb3cpOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3cuZGF0YSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyhpZGVudGlmaWVyKVxuICAgICAgJiYgcm93LmNoaWxkcmVuPy5sZW5ndGggPiB0aGlzLnNlbGVjdGVkR3JvdXBzLmdldChpZGVudGlmaWVyKVxuICAgICkge1xuICAgICAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRHcm91cHMuaGFzKGlkZW50aWZpZXIpIHx8IHRoaXMuc2VsZWN0ZWRBbGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gc2VsZWN0aW9uIGRpYWxvZyBhbmQgY3JlYXRlIHJlZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIG9wZW5EaWFsb2coKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IHRoaXMuX3NlbGVjdGlvbkRpYWxvZy5vcGVuKHtcbiAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbCxcbiAgICAgICAgYWxsQ291bnQ6IHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50LFxuICAgICAgICBhY3Rpb25zOiBbLi4udGhpcy5hY3Rpb25zXSxcbiAgICAgICAgLy8gc2VsZWN0QWxsOiB0aGlzLnNlbGVcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zdWJzY3JpYmVUb1NlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY291bnQgb2YgdmlzaWJsZSBlbGVtZW50c1xuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlUmVjb3Jkc0NvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvdW50IG9mIHRvdGFsIGF2YWlsYWJsZSBlbGVtZW5ldHNcbiAgICogQHBhcmFtIGNvdW50XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVG90YWxSZWNvcmRzQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50ID0gY291bnQ7XG5cbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlQWxsQ291bnQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwYWdlQ2hhbmdlZChpbmZpbml0eVNjcm9sbEVuYWJsZWQpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRBbGwpIHtcbiAgICAgIGlmICghaW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcyA9IDA7XG4gICAgICB0aGlzLl9nZXRSb3dzKClcbiAgICAgICAgLm1hcCgocm93KSA9PiByb3cuZGF0YSlcbiAgICAgICAgLmZvckVhY2goKHJvd0RhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBpZGVudGlmaWVkID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3dEYXRhKTtcblxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWRlbnRpZmllZCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkKCk7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZFZpc2libGVTdGF0dXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmcm9tIExpc3QgZm9yIHJlbW92ZSByb3cgaWYgaXQgd2FzIHNlbGVjdGVkXG4gICAqXG4gICAqIEJVVCBtZXRob2RzIGZvciB1cGRhdGUgdmlzaWJsZSBhbmQgZXRjLiB3aWxsIGJlIGNhbGxlZCBhIGJpdCBsYXRlclxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUm93KHJvdykge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLl9yb3dJZGVudGlmaWVyKHJvdykpO1xuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyc2VjdGlvbiBvZiBzZWxlY3RlZCBhbmQgcGFzc2VkIHJvd3MgdG8gcmVtb3ZlIHJvd3MgdGhhdCB3ZSBkb250IG5lZWQgbW9yZVxuICAgKiBAcGFyYW0gcm93c1xuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkUm93c0ludGVyc2VjdGlvbihyb3dzKSB7XG4gICAgY29uc3Qgcm93c0luZGVudGlmaWVycyA9IHJvd3MubWFwKChyb3cpID0+IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm93cy5mb3JFYWNoKChzZWxlY3RlZFJvdywgaWRlbnRpZmllcikgPT4ge1xuICAgICAgaWYgKHJvd3NJbmRlbnRpZmllcnMuaW5kZXhPZihpZGVudGlmaWVyKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVSb3coc2VsZWN0ZWRSb3cpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKHtcbiAgICBhY3Rpb25zLCBhY3Rpb25TZWxlY3RlZCwgYWxsU2VsZWN0ZWQsIGNhbmNlbGxlZCwgc2VsZWN0aW9uQ2hhbmdlZCwgc2VsZWN0QWxsXG4gIH06IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgPyBbLi4uYWN0aW9uc10gOiB0aGlzLmFjdGlvbnM7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gYWN0aW9uU2VsZWN0ZWQgPz8gdGhpcy5hY3Rpb25TZWxlY3RlZEZuO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGFsbFNlbGVjdGVkID8/IHRoaXMuYWxsU2VsZWN0ZWRGbjtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY2FuY2VsbGVkID8/IHRoaXMuY2FuY2VsbGVkRm47XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4gPSBzZWxlY3Rpb25DaGFuZ2VkID8/IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gc2VsZWN0QWxsID8/IHRoaXMuc2VsZWN0QWxsO1xuICB9XG5cbiAgLy8gUmVzZXQgYWN0aW9ucyB0byBkZWZhdWx0IHNldFxuICBwdWJsaWMgcmVzZXRBY3Rpb25zKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZj8ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VTZWxlY3Rpb25EaWFsb2coKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gbnVsbDtcbiAgICB0aGlzLmFsbFNlbGVjdGVkRm4gPSBudWxsO1xuICAgIHRoaXMuY2FuY2VsbGVkRm4gPSBudWxsO1xuXG4gICAgdGhpcy5jbG9zZVNlbGVjdGlvbkRpYWxvZygpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb25SZWYgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuYWN0aW9uU2VsZWN0ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQWN0aW9uQWN0aW9ucyhkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmNhbmNlbGxlZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25DYW5jZWxBY3Rpb25zKCkpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmFsbFNlbGVjdGVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLl9vblNlbGVjdEFsbEFjdGlvbnMoZGF0YSk7XG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHNvbWUgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIF9vbkFjdGlvbkFjdGlvbnMoZGF0YSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25TZWxlY3RlZEZuKSB7IHJldHVybiB9XG5cbiAgICAvLyBFeGVjdXRlIGNhbGxiYWNrXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hY3Rpb25TZWxlY3RlZEZuKHtcbiAgICAgIHNlbGVjdGVkOiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKS5tYXAoKHJvdykgPT4geyByZXR1cm4gey4uLnJvd319KSxcbiAgICAgIC4uLmRhdGFcbiAgICB9KTtcblxuICAgIC8vIElmIHJlc3VsdCBpcyBvYnNlcnZhYmxlXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcblxuICAgICAgLy8gU3Vic2NyaWJlIGFuZCB3aGFpdCB3aHkgaXQgcmVzb2x2ZWRcbiAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG5cbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcbiAgICAgICAgICB0aGlzLmNsb3NlU2VsZWN0aW9uRGlhbG9nKCk7XG5cbiAgICAgICAgICAvLyBVbmNoZWNrIGFsbCB2aXNpYmxlIHJvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbFZpc2libGVSb3dzKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgY2FuY2VsIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqL1xuICBwcml2YXRlIF9vbkNhbmNlbEFjdGlvbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxWaXNpYmxlUm93cyhmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jYW5jZWxsZWRGbikge1xuICAgICAgdGhpcy5jYW5jZWxsZWRGbigpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSWYgXCJTZWxlY3QgQWxsXCIgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBmbGFnXG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdEFsbEFjdGlvbnMoZmxhZykge1xuICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmxhZztcblxuICAgIHRoaXMuc2VsZWN0QWxsVmlzaWJsZVJvd3MoZmxhZyk7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlU2VsZWN0ZWQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbCwgdGhpcy5fc2VsZWN0ZWRBbGwpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG5cbiAgICBpZiAoIXRoaXMuYWxsU2VsZWN0ZWRGbikgeyByZXR1cm4gfVxuXG4gICAgdGhpcy5hbGxTZWxlY3RlZEZuKGZsYWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKSB7XG4gICAgLy8gUmVtb3ZlIGFjdGlvbnMgaWYgbm8gcm93cyBzZWxlY3RlZFxuICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIFwiYmxpbmtcIiB3aGVuIHVzZXIgc2VsZWN0IGFueSBhY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoW10pO1xuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuKFxuICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoYWN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW4gRGlhbG9nIFJlZiBob3cgbXVjaCByb3dzIHdhcyBzZWxlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZVNlbGVjdGVkKHRoaXMuc2VsZWN0ZWRSb3dzLnNpemUpO1xuXG4gICAgICAvLyBTLVQxMjY4XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluIERpYWxvZyBSZWYgc2VsZWN0ZWQgYWxsIHN0YXR1c1xuICAgKlxuICAgKiBFeC46IFdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIERpYWxvZyBhbmQgYWZ0ZXIgdGhhdCBzb21lIGNoZWNrYm94IHdhcyB1bmNoZWNrZWRcbiAgICogRGlhbG9nIFJlZiBtdXN0IGtub3cgYWJvdXQgaXRcbiAgICpcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZi51cGRhdGVTZWxlY3RlZEFsbFN0YXR1cyh0aGlzLl9zZWxlY3RlZEFsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIGNoZWNrZWQgYW5kIHNlbmQgZXZlbnQgdG8gbWFpbiBoZWFkZXIgY2hlY2tib3hcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGVkVmlzaWJsZVN0YXR1cygpIHtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSB0aGlzLl9zZWxlY3RlZFJlY29yZHMgIT09IDAgJiYgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID09PSB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50O1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoXG4gICAgICBTZWxlY3Rpb25DaGFuZ2VUeXBlLlJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSWYgc2VsZWN0IGFsbCBjaGVja2JveCBpbiBoZWFkZXIgd2FzIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgX3Zpc2libGVSb3dzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VFdmVudChcbiAgICAgIFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNvbnN0cnVjdG9yIGZvciBldmVudHNcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZUV2ZW50KHR5cGU6IFNlbGVjdGlvbkNoYW5nZVR5cGUsIHBheWxvYWQpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UubmV4dCh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByb3cgaWRlbnRpZmllZCBieSB0cmFja0J5IHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfcm93SWRlbnRpZmllcihyb3cpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gX2dldChyb3csIHRoaXMuX3RyYWNrQnksIHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlbGVjdGlvbiBjYW4gbm90IHJlY29nbml6ZSB0cmFjayBieSBmaWVsZCBmb3Igcm93LiAnICtcbiAgICAgICAgJ1BsZWFzZSBjaGVjayBpZiB5b3UgaGFkIGNvbmZpZ3VyZWQgdHJhY2tCeSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHJldHVybiBpZGVudGlmaWVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgcm93LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm93KSA9PiB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdENoaWxkUm93KHJvdylcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5kZWxldGUoaWRlbnRpZmllcik7XG5cbiAgICAgIHJvdy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdENoaWxkUm93KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3Jkcy0tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdENoaWxkUm93KHJvdykge1xuICAgIGNvbnN0IHBhcmVudElkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5wYXJlbnQuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbk51bWJlciA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZ2V0KHBhcmVudElkZW50aWZpZXIpIHx8IDA7XG5cbiAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKHBhcmVudElkZW50aWZpZXIsIHNlbGVjdGVkQ2hpbGRyZW5OdW1iZXIgKyAxKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Q2hpbGRSb3cocm93KSB7XG4gICAgY29uc3QgcGFyZW50SWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LnBhcmVudC5kYXRhKTtcbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQocGFyZW50SWRlbnRpZmllcikgfHwgMDtcblxuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuTnVtYmVyID4gMSkge1xuICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChwYXJlbnRJZGVudGlmaWVyLCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAocGFyZW50SWRlbnRpZmllciwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmRlbGV0ZShpZGVudGlmaWVyKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMuc2V0KGlkZW50aWZpZXIsIG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG5cbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gIH1cbn1cbiJdfQ==
@@ -8,10 +8,9 @@ import * as i1 from "../../classes/reorder-controller";
8
8
  import * as i2 from "./row/row.component";
9
9
  import * as i3 from "@angular/common";
10
10
  import * as i4 from "../../directives/draggable-row/draggable-row.directive";
11
- import * as i5 from "@angular/flex-layout/extended";
12
11
  export class FsBodyComponent {
13
- constructor(reorderContoller, el, cdRef, differs) {
14
- this.reorderContoller = reorderContoller;
12
+ constructor(reorderController, el, cdRef, differs) {
13
+ this.reorderController = reorderController;
15
14
  this.el = el;
16
15
  this.cdRef = cdRef;
17
16
  this.differs = differs;
@@ -36,7 +35,7 @@ export class FsBodyComponent {
36
35
  }
37
36
  }
38
37
  FsBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, deps: [{ token: i1.ReorderController }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
39
- FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [ngClass]=\"{ 'drag-row': reorderContoller.enabled }\"\n [rowRemoved]=\"rowRemoved\"\n #activeRow>\n </tr>\n</ng-container>\n", components: [{ type: i2.FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [ngClass]=\"{ 'drag-row': reorderController.enabled }\"\n [rowRemoved]=\"rowRemoved\"\n #activeRow>\n </tr>\n</ng-container>\n", components: [{ type: i2.FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, decorators: [{
41
40
  type: Component,
42
41
  args: [{
@@ -73,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
73
72
  type: ContentChild,
74
73
  args: [FsRowComponent, { read: TemplateRef, static: true }]
75
74
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYm9keS9ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L2JvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxlQUFlLEVBRWYsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRckQsTUFBTSxPQUFPLGVBQWU7SUFxQjFCLFlBQ1MsZ0JBQW1DLEVBQ2xDLEVBQWMsRUFDZCxLQUF3QixFQUN4QixPQUF3QjtRQUh6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQXZCekIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVNyQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs2R0F2Q1UsZUFBZTtpR0FBZixlQUFlLHdZQWNaLGNBQWMsMkJBQVUsV0FBVyxzSUFEYixnQkFBZ0IsMkNDN0N0RCx1a0JBa0JBOzRGRGNhLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLHFCQUFxQjtvQkFDbEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOytMQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRWdFLGFBQWE7c0JBQWxGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBFLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBJdGVyYWJsZURpZmZlcixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgUmVvcmRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9zZWxlY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm93JztcblxuaW1wb3J0IHsgRnNSb3dDb21wb25lbnQgfSBmcm9tICcuL3Jvdy9yb3cuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1ib2R5XScsXG4gIHRlbXBsYXRlVXJsOiAnYm9keS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZzQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHJvd3M6IFJvd1tdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKSBoYXNGb290ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgcm93QWN0aW9uc1JhdzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgZ3JvdXBBY3Rpb25zUmF3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSByb3dFdmVudHMgPSB7fTtcbiAgQElucHV0KCkgcm93Q2xhc3M7XG4gIEBJbnB1dCgpIGhhc1Jvd0FjdGlvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0aW9uOiBTZWxlY3Rpb25Db250cm9sbGVyO1xuICBASW5wdXQoKSByZXN0b3JlTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBAVmlld0NoaWxkKCdyb3dzQ29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcm93c0NvbnRhaW5lcjtcbiAgQENvbnRlbnRDaGlsZChGc1Jvd0NvbXBvbmVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgX3Jvd3NEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPGFueT47XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZW9yZGVyQ29udG9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICApIHtcbiAgICB0aGlzLl9yb3dzRGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLl9yb3dzRGlmZmVyLmRpZmYodGhpcy5yb3dzKSkge1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAvLyAgKiBAcGFyYW0gaW5kZXhcbiAgLy8gICogQHBhcmFtIGl0ZW1cbiAgLy8gICovXG4gIC8vIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcbiAgLy8gICAvLyBUT0RPIGltcHJvdmUgd2l0aCB0cmFjayBieSBpZFxuICAvLyAgIHJldHVybiBpbmRleDtcbiAgLy8gfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXg7XCI+XG4gIDx0ciBmcy1saXN0LXJvd1xuICAgICAgZnNMaXN0RHJhZ2dhYmxlUm93XG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbcm93SW5kZXhdPVwiaVwiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgIFtyb3dBY3Rpb25zUmF3XT1cInJvd0FjdGlvbnNSYXdcIlxuICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJncm91cEFjdGlvbnNSYXdcIlxuICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwiaGFzUm93QWN0aW9uc1wiXG4gICAgICBbcm93RXZlbnRzXT1cInJvd0V2ZW50c1wiXG4gICAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIlxuICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxuICAgICAgW3Jlc3RvcmVNb2RlXT1cInJlc3RvcmVNb2RlXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2RyYWctcm93JzogcmVvcmRlckNvbnRvbGxlci5lbmFibGVkIH1cIlxuICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiXG4gICAgICAjYWN0aXZlUm93PlxuICA8L3RyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYm9keS9ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L2JvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxlQUFlLEVBRWYsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQVFyRCxNQUFNLE9BQU8sZUFBZTtJQXFCMUIsWUFDUyxpQkFBb0MsRUFDbkMsRUFBYyxFQUNkLEtBQXdCLEVBQ3hCLE9BQXdCO1FBSHpCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBdkJ6QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBU3JCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBUWhDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7OzZHQXZDVSxlQUFlO2lHQUFmLGVBQWUsd1lBY1osY0FBYywyQkFBVSxXQUFXLHNJQURiLGdCQUFnQiwyQ0M3Q3RELHdrQkFrQkE7NEZEY2EsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7K0xBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFZ0UsYUFBYTtzQkFBbEYsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFcEUsY0FBYztzQkFEYixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uL21vZGVscy9yb3cnO1xuXG5pbXBvcnQgeyBGc1Jvd0NvbXBvbmVudCB9IGZyb20gJy4vcm93L3Jvdy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LWJvZHldJyxcbiAgdGVtcGxhdGVVcmw6ICdib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnNCb2R5Q29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcm93czogUm93W107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIGhhc0Zvb3RlciA9IGZhbHNlO1xuICBASW5wdXQoKSByb3dBY3Rpb25zUmF3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cEFjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHJvd0V2ZW50cyA9IHt9O1xuICBASW5wdXQoKSByb3dDbGFzcztcbiAgQElucHV0KCkgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd1JlbW92ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3Jvd3NDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSByb3dzQ29udGFpbmVyO1xuICBAQ29udGVudENoaWxkKEZzUm93Q29tcG9uZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBfcm93c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICApIHtcbiAgICB0aGlzLl9yb3dzRGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLl9yb3dzRGlmZmVyLmRpZmYodGhpcy5yb3dzKSkge1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAvLyAgKiBAcGFyYW0gaW5kZXhcbiAgLy8gICogQHBhcmFtIGl0ZW1cbiAgLy8gICovXG4gIC8vIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcbiAgLy8gICAvLyBUT0RPIGltcHJvdmUgd2l0aCB0cmFjayBieSBpZFxuICAvLyAgIHJldHVybiBpbmRleDtcbiAgLy8gfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXg7XCI+XG4gIDx0ciBmcy1saXN0LXJvd1xuICAgICAgZnNMaXN0RHJhZ2dhYmxlUm93XG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbcm93SW5kZXhdPVwiaVwiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgIFtyb3dBY3Rpb25zUmF3XT1cInJvd0FjdGlvbnNSYXdcIlxuICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJncm91cEFjdGlvbnNSYXdcIlxuICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwiaGFzUm93QWN0aW9uc1wiXG4gICAgICBbcm93RXZlbnRzXT1cInJvd0V2ZW50c1wiXG4gICAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIlxuICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxuICAgICAgW3Jlc3RvcmVNb2RlXT1cInJlc3RvcmVNb2RlXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2RyYWctcm93JzogcmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCB9XCJcbiAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgI2FjdGl2ZVJvdz5cbiAgPC90cj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -11,7 +11,7 @@ import * as i3 from "@firestitch/menu";
11
11
  import * as i4 from "../menu-action/menu-action.component";
12
12
  import * as i5 from "@angular/material/icon";
13
13
  import * as i6 from "@angular/common";
14
- import * as i7 from "@angular/flex-layout/extended";
14
+ import * as i7 from "../../../../pipes/action-label";
15
15
  export class FsRowActionsComponent {
16
16
  constructor(_fsPrompt) {
17
17
  this._fsPrompt = _fsPrompt;
@@ -49,11 +49,6 @@ export class FsRowActionsComponent {
49
49
  trackByFn(index) {
50
50
  return index;
51
51
  }
52
- clickOnTrigger(event) {
53
- event.stopPropagation();
54
- this.rowActions
55
- .forEach((action) => action.updateLabel(this.row.data));
56
- }
57
52
  /**
58
53
  * Emit that some row must be removed
59
54
  * @param action
@@ -73,7 +68,7 @@ export class FsRowActionsComponent {
73
68
  }
74
69
  }
75
70
  FsRowActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
76
- FsRowActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n (click)=\"clickOnTrigger($event)\"\n #menuRef\n>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", components: [{ type: i2.FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { type: i3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: i4.FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]", inputs: ["fsClass", "class", "id", "label", "hidden", "groupHidden", "dismissAfterClick", "link", "target", "queryParams"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ FsRowActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action \n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu \n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template \n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", components: [{ type: i2.FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { type: i3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: i4.FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], pipes: { "actionLabel": i7.ActionLabelPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
77
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowActionsComponent, decorators: [{
78
73
  type: Component,
79
74
  args: [{
@@ -98,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
98
93
  }], restoreAction: [{
99
94
  type: Input
100
95
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYm9keS9yb3cvYWN0aW9ucy9hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9hY3Rpb25zL2FjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLHFCQUFxQjtJQTRCaEMsWUFDVSxTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBcEJ0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQWdCLEVBQUUsQ0FBQztRQU03QixtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFHakMscUJBQWdCLEdBQWdCLEVBQUUsQ0FBQztRQUtsQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUkvQixDQUFDO0lBRUcsV0FBVyxDQUFDLE1BQWlCLEVBQUUsR0FBUSxFQUFFLEtBQVUsRUFBRSxPQUFRO1FBQ2xFLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDckIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztvQkFDMUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUTtpQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQyxTQUFTLENBQUM7b0JBQ1YsSUFBSSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pELENBQUM7b0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7aUJBQ2hCLENBQUMsQ0FBQTthQUNIO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBSztRQUN6QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLFVBQVU7YUFDWixPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSztRQUM1QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixZQUFZLFVBQVUsRUFBRTtZQUM5RCxnQkFBZ0I7aUJBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzttSEExRlUscUJBQXFCO3VHQUFyQixxQkFBcUIsMlJDckJsQyxpa0lBb0ZBOzRGRC9EYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOytGQUlRLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcblxuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdC1yb3ctYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzUm93QWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdzogUm93O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXN0b3JlTW9kZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVudVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZnNQcm9tcHQ6IEZzUHJvbXB0LFxuICApIHt9XG5cbiAgcHVibGljIGFjdGlvbkNsaWNrKGFjdGlvbjogUm93QWN0aW9uLCByb3c6IGFueSwgZXZlbnQ6IGFueSwgbWVudVJlZj8pIHtcbiAgICBpZiAoYWN0aW9uLnJlbW92ZSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3Rpb24ucmVtb3ZlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oYWN0aW9uLCByb3cuZGF0YSwgZXZlbnQsIHRoaXMuaW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZnNQcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgdGl0bGU6IGFjdGlvbi5yZW1vdmUudGl0bGUsXG4gICAgICAgICAgdGVtcGxhdGU6IGFjdGlvbi5yZW1vdmUudGVtcGxhdGUsXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oYWN0aW9uLCByb3cuZGF0YSwgZXZlbnQsIHRoaXMuaW5kZXgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHt9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb24uY2xpY2socm93LmRhdGEsIGV2ZW50LCB0aGlzLmluZGV4LCBtZW51UmVmKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgY2xpY2tPblRyaWdnZXIoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMucm93QWN0aW9uc1xuICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLnVwZGF0ZUxhYmVsKHRoaXMucm93LmRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHRoYXQgc29tZSByb3cgbXVzdCBiZSByZW1vdmVkXG4gICAqIEBwYXJhbSBhY3Rpb25cbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwcml2YXRlIHJlbW92ZUFjdGlvbihhY3Rpb24sIHJvdywgZXZlbnQsIGluZGV4KSB7XG4gICAgY29uc3QgcmVtb3ZlT2JzZXJ2YWJsZSA9IGFjdGlvbi5jbGljayhyb3csIGV2ZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVtb3ZlT2JzZXJ2YWJsZSAmJiByZW1vdmVPYnNlcnZhYmxlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgcmVtb3ZlT2JzZXJ2YWJsZVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3dSZW1vdmVkLmVtaXQocm93KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3RvcmVNb2RlIHx8IChyZXN0b3JlTW9kZSAmJiAhcmVzdG9yZUFjdGlvbilcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGlubGluZVJvd0FjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgIDxmcy1saXN0LXJvdy1pbmxpbmUtYWN0aW9uIGNsYXNzPVwicm93LWlubGluZS1hY3Rpb24gcm93LWlubGluZS1hY3Rpb24te3thY3Rpb24udHlwZX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtb2JpbGUtaGlkZSc6IGFjdGlvbi5tZW51ID09PSB1bmRlZmluZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJhY3Rpb25DbGljayhhY3Rpb24sIHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVTZWxlY3QpPVwiYWN0aW9uLmZpbGVDb25maWcuc2VsZWN0KCRldmVudCwgcm93LCBpbmRleClcIj5cbiAgICA8L2ZzLWxpc3Qtcm93LWlubGluZS1hY3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gTWVudSAtLT5cbjxmcy1tZW51IGNsYXNzPVwicm93LW1lbnUtYWN0aW9uXCJcbiAgICAgICAgICpuZ0lmPVwibWVudVJvd0FjdGlvbnMubGVuZ3RoIHx8IChyZXN0b3JlTW9kZSAmJiByZXN0b3JlQWN0aW9uKVwiXG4gICAgICAgICAoY2xpY2spPVwiY2xpY2tPblRyaWdnZXIoJGV2ZW50KVwiXG4gICAgICAgICAjbWVudVJlZlxuPlxuICA8IS0tIENhc2Ugd2hlbiB3ZSBoYXZlIHVzdWFsIG1lbnUgYWN0aW9ucyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN0b3JlTW9kZSB8fCAocmVzdG9yZU1vZGUgJiYgIXJlc3RvcmVBY3Rpb24pXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGlubGluZVJvd0FjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgPG5nLXRlbXBsYXRlIGNsYXNzPVwiaGlkZGVuLW1vYmlsZS1tZW51LWFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgW2xpbmtdPVwiYWN0aW9uLnJvdXRlckxpbms/LmxpbmtcIlxuICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJhY3Rpb24ucm91dGVyTGluaz8ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uLnJvdXRlckxpbms/LnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJhY3Rpb24ubWVudSAhPT0gdW5kZWZpbmVkICYmICFhY3Rpb24uaXNTaG93blwiPlxuICAgICAgICA8ZnMtbGlzdC1yb3ctbWVudS1hY3Rpb25cbiAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgW2xhYmVsXT1cImFjdGlvbi5sYWJlbFwiXG4gICAgICAgICAgW2ZpbGVdPVwiYWN0aW9uLmZpbGVDb25maWdcIlxuICAgICAgICAgIChmaWxlU2VsZWN0KT1cImFjdGlvbi5maWxlQ29uZmlnLnNlbGVjdCgkZXZlbnQsIHJvdywgaW5kZXgpXCJcbiAgICAgICAgICAoZmlsZUVycm9yKT1cImFjdGlvbi5maWxlQ29uZmlnLmVycm9yICYmIGFjdGlvbi5maWxlQ29uZmlnLmVycm9yKCRldmVudClcIj5cbiAgICAgICAgPC9mcy1saXN0LXJvdy1tZW51LWFjdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbWVudVJvd0FjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi5pc0dyb3VwIGVsc2Ugc2ltcGxlTWVudUl0ZW1cIj5cbiAgICAgICAgPGZzLW1lbnUtZ3JvdXAgW2xhYmVsXT1cImFjdGlvbi5sYWJlbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkFjdGlvbiBvZiBhY3Rpb24ucm93QWN0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rXT1cInN1YkFjdGlvbi5yb3V0ZXJMaW5rPy5saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwic3ViQWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cInN1YkFjdGlvbi5yb3V0ZXJMaW5rPy50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXN1YkFjdGlvbi5pc1Nob3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soc3ViQWN0aW9uLCByb3csICRldmVudCwgbWVudVJlZik7XCI+XG4gICAgICAgICAgICAgIDxmcy1saXN0LXJvdy1tZW51LWFjdGlvblxuICAgICAgICAgICAgICAgIFtpY29uXT1cInN1YkFjdGlvbi5pY29uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic3ViQWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCJzdWJBY3Rpb24uZmlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgKGZpbGVTZWxlY3QpPVwic3ViQWN0aW9uLmZpbGVDb25maWcuc2VsZWN0KCRldmVudCwgcm93LCBpbmRleClcIlxuICAgICAgICAgICAgICAgIChmaWxlRXJyb3IpPVwic3ViQWN0aW9uLmZpbGVDb25maWcuZXJyb3IgJiYgc3ViQWN0aW9uLmZpbGVDb25maWcuZXJyb3IoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2ZzLWxpc3Qtcm93LW1lbnUtYWN0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mcy1tZW51LWdyb3VwPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZU1lbnVJdGVtPlxuICAgICAgICA8bmctdGVtcGxhdGUgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICBbbGlua109XCJhY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiYWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uLnJvdXRlckxpbms/LnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFhY3Rpb24uaXNTaG93blwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soYWN0aW9uLCByb3csICRldmVudCwgbWVudVJlZik7XCI+XG4gICAgICAgICAgPGZzLWxpc3Qtcm93LW1lbnUtYWN0aW9uXG4gICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgIFtmaWxlXT1cImFjdGlvbi5maWxlQ29uZmlnXCJcbiAgICAgICAgICAgIChmaWxlU2VsZWN0KT1cImFjdGlvbi5maWxlQ29uZmlnLnNlbGVjdCgkZXZlbnQsIHJvdywgaW5kZXgpXCJcbiAgICAgICAgICAgIChmaWxlRXJyb3IpPVwiYWN0aW9uLmZpbGVDb25maWcuZXJyb3IgJiYgYWN0aW9uLmZpbGVDb25maWcuZXJyb3IoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvZnMtbGlzdC1yb3ctbWVudS1hY3Rpb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIENhc2Ugd2hlbiB3ZSBoYXZlIHJlc3RvcmUgbW9kZSBlbmFibGVkIGFuZCBtdXN0IGhpZGUgbWVudSBhY3Rpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdG9yZU1vZGUgJiYgcmVzdG9yZUFjdGlvblwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1tZW51LWl0ZW0gKGNsaWNrKT1cImFjdGlvbkNsaWNrKHJlc3RvcmVBY3Rpb24sIHJvdywgJGV2ZW50LCBtZW51UmVmKVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwicmVzdG9yZUFjdGlvbi5pY29uXCI+e3tyZXN0b3JlQWN0aW9uLmljb259fTwvbWF0LWljb24+XG4gICAgICB7e3Jlc3RvcmVBY3Rpb24ubGFiZWx9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mcy1tZW51PlxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYm9keS9yb3cvYWN0aW9ucy9hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9hY3Rpb25zL2FjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLHFCQUFxQjtJQTRCaEMsWUFDVSxTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBcEJ0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQWdCLEVBQUUsQ0FBQztRQU03QixtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFHakMscUJBQWdCLEdBQWdCLEVBQUUsQ0FBQztRQUtsQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUkvQixDQUFDO0lBRUcsV0FBVyxDQUFDLE1BQWlCLEVBQUUsR0FBUSxFQUFFLEtBQVUsRUFBRSxPQUFRO1FBQ2xFLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDckIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztvQkFDMUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUTtpQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQyxTQUFTLENBQUM7b0JBQ1YsSUFBSSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pELENBQUM7b0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7aUJBQ2hCLENBQUMsQ0FBQTthQUNIO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSztRQUM1QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixZQUFZLFVBQVUsRUFBRTtZQUM5RCxnQkFBZ0I7aUJBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzttSEFuRlUscUJBQXFCO3VHQUFyQixxQkFBcUIsMlJDckJsQyw4OEhBMEZBOzRGRHJFYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOytGQUlRLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcblxuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdC1yb3ctYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzUm93QWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdzogUm93O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXN0b3JlTW9kZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVudVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZnNQcm9tcHQ6IEZzUHJvbXB0LFxuICApIHt9XG5cbiAgcHVibGljIGFjdGlvbkNsaWNrKGFjdGlvbjogUm93QWN0aW9uLCByb3c6IGFueSwgZXZlbnQ6IGFueSwgbWVudVJlZj8pIHtcbiAgICBpZiAoYWN0aW9uLnJlbW92ZSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3Rpb24ucmVtb3ZlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oYWN0aW9uLCByb3cuZGF0YSwgZXZlbnQsIHRoaXMuaW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZnNQcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgdGl0bGU6IGFjdGlvbi5yZW1vdmUudGl0bGUsXG4gICAgICAgICAgdGVtcGxhdGU6IGFjdGlvbi5yZW1vdmUudGVtcGxhdGUsXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oYWN0aW9uLCByb3cuZGF0YSwgZXZlbnQsIHRoaXMuaW5kZXgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHt9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb24uY2xpY2socm93LmRhdGEsIGV2ZW50LCB0aGlzLmluZGV4LCBtZW51UmVmKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCB0aGF0IHNvbWUgcm93IG11c3QgYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gYWN0aW9uXG4gICAqIEBwYXJhbSByb3dcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVBY3Rpb24oYWN0aW9uLCByb3csIGV2ZW50LCBpbmRleCkge1xuICAgIGNvbnN0IHJlbW92ZU9ic2VydmFibGUgPSBhY3Rpb24uY2xpY2socm93LCBldmVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHJlbW92ZU9ic2VydmFibGUgJiYgcmVtb3ZlT2JzZXJ2YWJsZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHJlbW92ZU9ic2VydmFibGVcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm93UmVtb3ZlZC5lbWl0KHJvdyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN0b3JlTW9kZSB8fCAocmVzdG9yZU1vZGUgJiYgIXJlc3RvcmVBY3Rpb24pXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBpbmxpbmVSb3dBY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICA8ZnMtbGlzdC1yb3ctaW5saW5lLWFjdGlvbiBcbiAgICAgIGNsYXNzPVwicm93LWlubGluZS1hY3Rpb24gcm93LWlubGluZS1hY3Rpb24te3thY3Rpb24udHlwZX19XCJcbiAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnbW9iaWxlLWhpZGUnOiBhY3Rpb24ubWVudSA9PT0gdW5kZWZpbmVkfVwiXG4gICAgICAoY2xpY2tlZCk9XCJhY3Rpb25DbGljayhhY3Rpb24sIHJvdywgJGV2ZW50KVwiXG4gICAgICAoZmlsZVNlbGVjdCk9XCJhY3Rpb24uZmlsZUNvbmZpZy5zZWxlY3QoJGV2ZW50LCByb3csIGluZGV4KVwiPlxuICAgIDwvZnMtbGlzdC1yb3ctaW5saW5lLWFjdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBNZW51IC0tPlxuPGZzLW1lbnUgXG4gICAgY2xhc3M9XCJyb3ctbWVudS1hY3Rpb25cIlxuICAgICpuZ0lmPVwibWVudVJvd0FjdGlvbnMubGVuZ3RoIHx8IChyZXN0b3JlTW9kZSAmJiByZXN0b3JlQWN0aW9uKVwiXG4gICAgI21lbnVSZWY+XG4gIDwhLS0gQ2FzZSB3aGVuIHdlIGhhdmUgdXN1YWwgbWVudSBhY3Rpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3RvcmVNb2RlIHx8IChyZXN0b3JlTW9kZSAmJiAhcmVzdG9yZUFjdGlvbilcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lUm93QWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICA8bmctdGVtcGxhdGUgXG4gICAgICAgICAgY2xhc3M9XCJoaWRkZW4tbW9iaWxlLW1lbnUtYWN0aW9uXCJcbiAgICAgICAgICBmcy1tZW51LWl0ZW1cbiAgICAgICAgICBbbGlua109XCJhY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImFjdGlvbi5yb3V0ZXJMaW5rPy5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgW3RhcmdldF09XCJhY3Rpb24ucm91dGVyTGluaz8udGFyZ2V0XCJcbiAgICAgICAgICBbaGlkZGVuXT1cImFjdGlvbi5tZW51ICE9PSB1bmRlZmluZWQgJiYgIWFjdGlvbi5pc1Nob3duXCI+XG4gICAgICAgIDxmcy1saXN0LXJvdy1tZW51LWFjdGlvblxuICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgW2ZpbGVdPVwiYWN0aW9uLmZpbGVDb25maWdcIlxuICAgICAgICAgIChmaWxlU2VsZWN0KT1cImFjdGlvbi5maWxlQ29uZmlnLnNlbGVjdCgkZXZlbnQsIHJvdywgaW5kZXgpXCJcbiAgICAgICAgICAoZmlsZUVycm9yKT1cImFjdGlvbi5maWxlQ29uZmlnLmVycm9yICYmIGFjdGlvbi5maWxlQ29uZmlnLmVycm9yKCRldmVudClcIj5cbiAgICAgICAgPC9mcy1saXN0LXJvdy1tZW51LWFjdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbWVudVJvd0FjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi5pc0dyb3VwIGVsc2Ugc2ltcGxlTWVudUl0ZW1cIj5cbiAgICAgICAgPGZzLW1lbnUtZ3JvdXAgW2xhYmVsXT1cImFjdGlvbi5sYWJlbCB8IGFjdGlvbkxhYmVsOnJvd1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkFjdGlvbiBvZiBhY3Rpb24ucm93QWN0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFxuICAgICAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIFtsaW5rXT1cInN1YkFjdGlvbi5yb3V0ZXJMaW5rPy5saW5rXCJcbiAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwic3ViQWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cInN1YkFjdGlvbi5yb3V0ZXJMaW5rPy50YXJnZXRcIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXN1YkFjdGlvbi5pc1Nob3duXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soc3ViQWN0aW9uLCByb3csICRldmVudCwgbWVudVJlZik7XCI+XG4gICAgICAgICAgICAgIDxmcy1saXN0LXJvdy1tZW51LWFjdGlvblxuICAgICAgICAgICAgICAgIFtpY29uXT1cInN1YkFjdGlvbi5pY29uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic3ViQWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW2ZpbGVdPVwic3ViQWN0aW9uLmZpbGVDb25maWdcIlxuICAgICAgICAgICAgICAgIChmaWxlU2VsZWN0KT1cInN1YkFjdGlvbi5maWxlQ29uZmlnLnNlbGVjdCgkZXZlbnQsIHJvdywgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAoZmlsZUVycm9yKT1cInN1YkFjdGlvbi5maWxlQ29uZmlnLmVycm9yICYmIHN1YkFjdGlvbi5maWxlQ29uZmlnLmVycm9yKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPC9mcy1saXN0LXJvdy1tZW51LWFjdGlvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZnMtbWVudS1ncm91cD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVNZW51SXRlbT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFxuICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICBbbGlua109XCJhY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiYWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uLnJvdXRlckxpbms/LnRhcmdldFwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiFhY3Rpb24uaXNTaG93blwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soYWN0aW9uLCByb3csICRldmVudCwgbWVudVJlZik7XCI+XG4gICAgICAgICAgPGZzLWxpc3Qtcm93LW1lbnUtYWN0aW9uXG4gICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgIFtmaWxlXT1cImFjdGlvbi5maWxlQ29uZmlnXCJcbiAgICAgICAgICAgIChmaWxlU2VsZWN0KT1cImFjdGlvbi5maWxlQ29uZmlnLnNlbGVjdCgkZXZlbnQsIHJvdywgaW5kZXgpXCJcbiAgICAgICAgICAgIChmaWxlRXJyb3IpPVwiYWN0aW9uLmZpbGVDb25maWcuZXJyb3IgJiYgYWN0aW9uLmZpbGVDb25maWcuZXJyb3IoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvZnMtbGlzdC1yb3ctbWVudS1hY3Rpb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIENhc2Ugd2hlbiB3ZSBoYXZlIHJlc3RvcmUgbW9kZSBlbmFibGVkIGFuZCBtdXN0IGhpZGUgbWVudSBhY3Rpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdG9yZU1vZGUgJiYgcmVzdG9yZUFjdGlvblwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1tZW51LWl0ZW0gKGNsaWNrKT1cImFjdGlvbkNsaWNrKHJlc3RvcmVBY3Rpb24sIHJvdywgJGV2ZW50LCBtZW51UmVmKVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwicmVzdG9yZUFjdGlvbi5pY29uXCI+e3tyZXN0b3JlQWN0aW9uLmljb259fTwvbWF0LWljb24+XG4gICAgICB7e3Jlc3RvcmVBY3Rpb24ubGFiZWwgfCBhY3Rpb25MYWJlbDpyb3d9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mcy1tZW51PlxuIl19