@universis/ngx-tables 6.14.2 → 9.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/bundles/universis-ngx-tables.umd.js +4902 -6847
  2. package/bundles/universis-ngx-tables.umd.js.map +1 -1
  3. package/bundles/universis-ngx-tables.umd.min.js +15 -1
  4. package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
  5. package/esm2015/lib/actions/table.actions.js +7 -49
  6. package/esm2015/lib/advanced-aggregator.js +0 -5
  7. package/esm2015/lib/components/add-items/add-items.component.js +36 -96
  8. package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +48 -103
  9. package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +36 -58
  10. package/esm2015/lib/components/advanced-list/advanced-list.component.js +67 -120
  11. package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +61 -118
  12. package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +47 -99
  13. package/esm2015/lib/components/advanced-select/advanced-select.component.js +25 -58
  14. package/esm2015/lib/components/advanced-select/advanced-select.service.js +10 -27
  15. package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +13 -36
  16. package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +22 -50
  17. package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +15 -37
  18. package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +55 -227
  19. package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +23 -96
  20. package/esm2015/lib/components/advanced-table/advanced-table.component.js +303 -688
  21. package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +1 -10
  22. package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +19 -230
  23. package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +0 -5
  24. package/esm2015/lib/components/advanced-table/custom-button.formatter.js +3 -17
  25. package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +77 -198
  26. package/esm2015/lib/components/column-selector/column-selector.component.js +39 -109
  27. package/esm2015/lib/components/column-selector/column-selector.service.js +9 -26
  28. package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +28 -51
  29. package/esm2015/lib/directives/advance-search-state.directive.js +22 -54
  30. package/esm2015/lib/directives/advance-table-state.directive.js +20 -39
  31. package/esm2015/lib/directives/advanced-search-router-state.directive.js +15 -37
  32. package/esm2015/lib/directives/advanced-table-editor.directive.js +24 -54
  33. package/esm2015/lib/directives/btnexp.directive.js +55 -97
  34. package/esm2015/lib/i18n/tables.el.js +3 -7
  35. package/esm2015/lib/i18n/tables.en.js +3 -7
  36. package/esm2015/lib/pipes/advanced-aggregator.pipe.js +15 -18
  37. package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +13 -25
  38. package/esm2015/lib/reducers/index.js +7 -37
  39. package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +27 -48
  40. package/esm2015/lib/tables.activated-table.service.js +11 -46
  41. package/esm2015/lib/tables.module.js +90 -105
  42. package/esm2015/public_api.js +29 -34
  43. package/esm2015/universis-ngx-tables.js +2 -7
  44. package/esm5/lib/actions/table.actions.js +7 -38
  45. package/esm5/lib/advanced-aggregator.js +0 -5
  46. package/esm5/lib/components/add-items/add-items.component.js +42 -127
  47. package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +58 -141
  48. package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +32 -71
  49. package/esm5/lib/components/advanced-list/advanced-list.component.js +67 -136
  50. package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +62 -139
  51. package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +45 -116
  52. package/esm5/lib/components/advanced-select/advanced-select.component.js +23 -57
  53. package/esm5/lib/components/advanced-select/advanced-select.service.js +8 -27
  54. package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +15 -50
  55. package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +18 -52
  56. package/esm5/lib/components/advanced-table/advanced-table-search-base.js +17 -48
  57. package/esm5/lib/components/advanced-table/advanced-table-search.component.js +84 -329
  58. package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +27 -116
  59. package/esm5/lib/components/advanced-table/advanced-table.component.js +324 -863
  60. package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +1 -10
  61. package/esm5/lib/components/advanced-table/advanced-table.formatters.js +58 -393
  62. package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +0 -5
  63. package/esm5/lib/components/advanced-table/custom-button.formatter.js +6 -27
  64. package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +90 -296
  65. package/esm5/lib/components/column-selector/column-selector.component.js +46 -143
  66. package/esm5/lib/components/column-selector/column-selector.service.js +7 -26
  67. package/esm5/lib/components/table-simple-header/table-simple-header.component.js +26 -61
  68. package/esm5/lib/directives/advance-search-state.directive.js +24 -74
  69. package/esm5/lib/directives/advance-table-state.directive.js +17 -37
  70. package/esm5/lib/directives/advanced-search-router-state.directive.js +13 -43
  71. package/esm5/lib/directives/advanced-table-editor.directive.js +31 -81
  72. package/esm5/lib/directives/btnexp.directive.js +43 -175
  73. package/esm5/lib/i18n/tables.el.js +3 -7
  74. package/esm5/lib/i18n/tables.en.js +3 -7
  75. package/esm5/lib/pipes/advanced-aggregator.pipe.js +9 -35
  76. package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +9 -36
  77. package/esm5/lib/reducers/index.js +8 -38
  78. package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +21 -82
  79. package/esm5/lib/tables.activated-table.service.js +10 -42
  80. package/esm5/lib/tables.module.js +89 -105
  81. package/esm5/public_api.js +29 -34
  82. package/esm5/universis-ngx-tables.js +2 -7
  83. package/fesm2015/universis-ngx-tables.js +1177 -2186
  84. package/fesm2015/universis-ngx-tables.js.map +1 -1
  85. package/fesm5/universis-ngx-tables.js +1235 -3067
  86. package/fesm5/universis-ngx-tables.js.map +1 -1
  87. package/lib/actions/table.actions.d.ts +3 -3
  88. package/lib/components/add-items/add-items.component.d.ts +1 -1
  89. package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +7 -4
  90. package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +1 -1
  91. package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +1 -1
  92. package/lib/components/advanced-table/advanced-table-search-base.d.ts +3 -2
  93. package/lib/components/advanced-table/advanced-table-search.component.d.ts +3 -2
  94. package/lib/components/advanced-table/advanced-table.component.d.ts +13 -8
  95. package/lib/directives/advanced-table-editor.directive.d.ts +1 -1
  96. package/lib/i18n/tables.el.d.ts +108 -108
  97. package/lib/i18n/tables.en.d.ts +107 -107
  98. package/lib/reducers/index.d.ts +3 -3
  99. package/lib/tables.activated-table.service.d.ts +2 -1
  100. package/package.json +20 -31
  101. package/universis-ngx-tables.metadata.json +1 -1
@@ -1,15 +1,11 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import { Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';
6
- import { AdvancedTableComponent } from './advanced-table.component';
1
+ import { __decorate } from "tslib";
2
+ import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
7
3
  import { ActivatedRoute } from '@angular/router';
8
4
  import { AngularDataContext } from '@themost/angular';
9
- import { BsModalService } from 'ngx-bootstrap/modal';
5
+ import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
10
6
  import { ActivatedTableService } from '../../tables.activated-table.service';
11
7
  import { UserStorageService } from '@universis/common';
12
- import { FormArray, FormBuilder, FormControl } from '@angular/forms';
8
+ import { FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
13
9
  var AdvancedTableSettingsComponent = /** @class */ (function () {
14
10
  function AdvancedTableSettingsComponent(_context, _activatedRoute, modalService, userStorage, formBuilder, _activatedTable) {
15
11
  this._context = _context;
@@ -21,21 +17,9 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
21
17
  this.params = this._activatedRoute.params;
22
18
  this.columns = [];
23
19
  }
24
- /**
25
- * @return {?}
26
- */
27
- AdvancedTableSettingsComponent.prototype.ngOnInit = /**
28
- * @return {?}
29
- */
30
- function () {
20
+ AdvancedTableSettingsComponent.prototype.ngOnInit = function () {
31
21
  };
32
- /**
33
- * @return {?}
34
- */
35
- AdvancedTableSettingsComponent.prototype.ngAfterViewInit = /**
36
- * @return {?}
37
- */
38
- function () {
22
+ AdvancedTableSettingsComponent.prototype.ngAfterViewInit = function () {
39
23
  var _this = this;
40
24
  this.activeTableConfig = this._activatedTable.activeTable && this._activatedTable.activeTable.getConfig();
41
25
  this.storageKey = 'registrar/settings/' + this.activeTableConfig.title + '/table/columns';
@@ -52,18 +36,11 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
52
36
  }
53
37
  });
54
38
  };
55
- /**
56
- * @return {?}
57
- */
58
- AdvancedTableSettingsComponent.prototype.addCheckboxes = /**
59
- * @return {?}
60
- */
61
- function () {
39
+ AdvancedTableSettingsComponent.prototype.addCheckboxes = function () {
62
40
  var _this = this;
63
41
  this.tableColumns = this.activeTableConfig.columns.slice(1);
64
42
  this.tableColumns.forEach(function (column, i) {
65
43
  if (!column.hidden) {
66
- /** @type {?} */
67
44
  var control = {
68
45
  id: column.name,
69
46
  name: column.title
@@ -77,37 +54,21 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
77
54
  column.check = _this.savedTableSettings.includes(column.id);
78
55
  });
79
56
  this.columns.map(function (column, i) {
80
- /** @type {?} */
81
57
  var control = new FormControl(column.check);
82
58
  if (_this.form) {
83
- (/** @type {?} */ (_this.form.controls["columns"])).push(control);
59
+ _this.form.controls.columns.push(control);
84
60
  }
85
61
  });
86
62
  }
87
63
  };
88
- /**
89
- * @param {?} table_settings_modal
90
- * @return {?}
91
- */
92
- AdvancedTableSettingsComponent.prototype.openTableSettings = /**
93
- * @param {?} table_settings_modal
94
- * @return {?}
95
- */
96
- function (table_settings_modal) {
64
+ AdvancedTableSettingsComponent.prototype.openTableSettings = function (table_settings_modal) {
97
65
  this.modalRef = this.modalService.show(table_settings_modal);
98
66
  };
99
- /**
100
- * @return {?}
101
- */
102
- AdvancedTableSettingsComponent.prototype.saveTableSettings = /**
103
- * @return {?}
104
- */
105
- function () {
67
+ AdvancedTableSettingsComponent.prototype.saveTableSettings = function () {
106
68
  var _this = this;
107
69
  if (this.form == null) {
108
70
  return;
109
71
  }
110
- /** @type {?} */
111
72
  var selectedColumnsIds = this.form.value.columns
112
73
  .map(function (v, i) { return v ? _this.columns[i].id : null; })
113
74
  .filter(function (v) { return v !== null; });
@@ -119,30 +80,14 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
119
80
  this.modalRef.hide();
120
81
  }
121
82
  };
122
- /**
123
- * @return {?}
124
- */
125
- AdvancedTableSettingsComponent.prototype.dismiss = /**
126
- * @return {?}
127
- */
128
- function () {
83
+ AdvancedTableSettingsComponent.prototype.dismiss = function () {
129
84
  if (this.modalRef) {
130
85
  this.modalRef.hide();
131
86
  }
132
87
  };
133
- /**
134
- * @param {?=} min
135
- * @return {?}
136
- */
137
- AdvancedTableSettingsComponent.prototype.minSelectedColumns = /**
138
- * @param {?=} min
139
- * @return {?}
140
- */
141
- function (min) {
88
+ AdvancedTableSettingsComponent.prototype.minSelectedColumns = function (min) {
142
89
  if (min === void 0) { min = 1; }
143
- /** @type {?} */
144
90
  var validator = function (formArray) {
145
- /** @type {?} */
146
91
  var totalSelected = formArray.controls
147
92
  .map(function (control) { return control.value; })
148
93
  .reduce(function (prev, next) { return next ? prev + next : prev; }, 0);
@@ -150,15 +95,6 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
150
95
  };
151
96
  return validator;
152
97
  };
153
- AdvancedTableSettingsComponent.decorators = [
154
- { type: Component, args: [{
155
- // tslint:disable-next-line:component-selector
156
- selector: 'app-advanced-table-settings',
157
- template: "<i class=\"fa fa-edit fa-lg advanced-table-settings\" (click)=\"openTableSettings(modal_settings_template)\"></i>\r\n<ng-template #modal_settings_template>\r\n <div class=\"modal-header\">\r\n <h3 class=\"modal-title\" [translate]=\"'Tables.ColumnDisplay'\"></h3>\r\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <form class=\"form-group p-3 text-left\" [formGroup]=\"form\" (ngSubmit)=\"saveTableSettings()\">\r\n <div class=\"modal-body\">\r\n <p [translate]=\"'Tables.ColumnDisplayInfo'\"></p>\r\n <!-- <div *ngFor=\"let column of form.controls.columns.controls; let i = index\">\r\n <div formArrayName=\"columns\">\r\n <input class=\"checkbox checkbox-primary\" type=\"checkbox\" [formControlName]=\"i\" id=\"checkbox{{i}}\">\r\n <label for=\"checkbox{{i}}\">\r\n {{columns[i].name | translate}}\r\n </label>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"dismiss()\" [translate]=\"'Tables.Cancel'\"> </button>\r\n <button type=\"submit\" class=\"btn btn-success\" [translate]=\"'Tables.Save'\"></button>\r\n </div>\r\n </form>\r\n</ng-template>\r\n",
158
- encapsulation: ViewEncapsulation.None
159
- }] }
160
- ];
161
- /** @nocollapse */
162
98
  AdvancedTableSettingsComponent.ctorParameters = function () { return [
163
99
  { type: AngularDataContext },
164
100
  { type: ActivatedRoute },
@@ -167,46 +103,21 @@ var AdvancedTableSettingsComponent = /** @class */ (function () {
167
103
  { type: FormBuilder },
168
104
  { type: ActivatedTableService }
169
105
  ]; };
170
- AdvancedTableSettingsComponent.propDecorators = {
171
- table: [{ type: Input }],
172
- modal_settings_template: [{ type: ViewChild, args: ['modal_settings_template',] }]
173
- };
106
+ __decorate([
107
+ Input()
108
+ ], AdvancedTableSettingsComponent.prototype, "table", void 0);
109
+ __decorate([
110
+ ViewChild('modal_settings_template')
111
+ ], AdvancedTableSettingsComponent.prototype, "modal_settings_template", void 0);
112
+ AdvancedTableSettingsComponent = __decorate([
113
+ Component({
114
+ // tslint:disable-next-line:component-selector
115
+ selector: 'app-advanced-table-settings',
116
+ template: "<i class=\"fa fa-edit fa-lg advanced-table-settings\" (click)=\"openTableSettings(modal_settings_template)\"></i>\r\n<ng-template #modal_settings_template>\r\n <div class=\"modal-header\">\r\n <h3 class=\"modal-title\" [translate]=\"'Tables.ColumnDisplay'\"></h3>\r\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <form class=\"form-group p-3 text-left\" [formGroup]=\"form\" (ngSubmit)=\"saveTableSettings()\">\r\n <div class=\"modal-body\">\r\n <p [translate]=\"'Tables.ColumnDisplayInfo'\"></p>\r\n <!-- <div *ngFor=\"let column of form.controls.columns.controls; let i = index\">\r\n <div formArrayName=\"columns\">\r\n <input class=\"checkbox checkbox-primary\" type=\"checkbox\" [formControlName]=\"i\" id=\"checkbox{{i}}\">\r\n <label for=\"checkbox{{i}}\">\r\n {{columns[i].name | translate}}\r\n </label>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"dismiss()\" [translate]=\"'Tables.Cancel'\"> </button>\r\n <button type=\"submit\" class=\"btn btn-success\" [translate]=\"'Tables.Save'\"></button>\r\n </div>\r\n </form>\r\n</ng-template>\r\n",
117
+ encapsulation: ViewEncapsulation.None
118
+ })
119
+ ], AdvancedTableSettingsComponent);
174
120
  return AdvancedTableSettingsComponent;
175
121
  }());
176
122
  export { AdvancedTableSettingsComponent };
177
- if (false) {
178
- /** @type {?} */
179
- AdvancedTableSettingsComponent.prototype.table;
180
- /** @type {?} */
181
- AdvancedTableSettingsComponent.prototype.modal_settings_template;
182
- /** @type {?} */
183
- AdvancedTableSettingsComponent.prototype.modalRef;
184
- /** @type {?} */
185
- AdvancedTableSettingsComponent.prototype.storageKey;
186
- /** @type {?} */
187
- AdvancedTableSettingsComponent.prototype.params;
188
- /** @type {?} */
189
- AdvancedTableSettingsComponent.prototype.savedTableSettings;
190
- /** @type {?} */
191
- AdvancedTableSettingsComponent.prototype.form;
192
- /** @type {?} */
193
- AdvancedTableSettingsComponent.prototype.columns;
194
- /** @type {?} */
195
- AdvancedTableSettingsComponent.prototype.tableColumns;
196
- /** @type {?} */
197
- AdvancedTableSettingsComponent.prototype.activeTableConfig;
198
- /** @type {?} */
199
- AdvancedTableSettingsComponent.prototype._context;
200
- /** @type {?} */
201
- AdvancedTableSettingsComponent.prototype._activatedRoute;
202
- /** @type {?} */
203
- AdvancedTableSettingsComponent.prototype.modalService;
204
- /** @type {?} */
205
- AdvancedTableSettingsComponent.prototype.userStorage;
206
- /** @type {?} */
207
- AdvancedTableSettingsComponent.prototype.formBuilder;
208
- /** @type {?} */
209
- AdvancedTableSettingsComponent.prototype._activatedTable;
210
- }
211
-
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQzs7SUFzQjNGLHdDQUFzQixRQUE0QixFQUM1QixlQUErQixFQUNqQyxjQUNBLGFBQ0EsYUFDQTtRQUxFLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVk7UUFDWixnQkFBVyxHQUFYLFdBQVc7UUFDWCxnQkFBVyxHQUFYLFdBQVc7UUFDWCxvQkFBZSxHQUFmLGVBQWU7c0JBWnJCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTt1QkFHeEIsRUFBRTtLQVVsQjs7OztJQUNELGlEQUFROzs7SUFBUjtLQUNDOzs7O0lBQ0Qs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QUMsQ0FBQyxJQUFJLEVBQXpCLENBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEQsT0FBTyxhQUFhLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3pELENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQztLQUNsQjs7Z0JBMUdGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsczlDQUF1RDtvQkFDdkQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzs7O2dCQVhRLGtCQUFrQjtnQkFEbEIsY0FBYztnQkFFZCxjQUFjO2dCQUVkLGtCQUFrQjtnQkFDUCxXQUFXO2dCQUZ0QixxQkFBcUI7Ozt3QkFhM0IsS0FBSzswQ0FDTCxTQUFTLFNBQUMseUJBQXlCOzt5Q0E1QnRDOztTQXlCYSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZHZhbmNlZFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9hZHZhbmNlZC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFuZ3VsYXJEYXRhQ29udGV4dCB9IGZyb20gJ0B0aGVtb3N0L2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSwgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90YWJsZXMuYWN0aXZhdGVkLXRhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXRhYmxlLXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFRhYmxlU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKSB0YWJsZT86IEFkdmFuY2VkVGFibGVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWxfc2V0dGluZ3NfdGVtcGxhdGUnKSBtb2RhbF9zZXR0aW5nc190ZW1wbGF0ZT86IEVsZW1lbnRSZWY7XHJcbiAgbW9kYWxSZWY/OiBCc01vZGFsUmVmO1xyXG4gIHN0b3JhZ2VLZXk6IGFueTtcclxuICBwYXJhbXM6IGFueSA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlLnBhcmFtcztcclxuICBwcml2YXRlIHNhdmVkVGFibGVTZXR0aW5nczogYW55O1xyXG4gIGZvcm0/OiBGb3JtR3JvdXA7XHJcbiAgY29sdW1uczogYW55W10gPSBbXTtcclxuICB0YWJsZUNvbHVtbnM6IGFueTtcclxuICBhY3RpdmVUYWJsZUNvbmZpZzogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2NvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1c2VyU3RvcmFnZTogVXNlclN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFRhYmxlOiBBY3RpdmF0ZWRUYWJsZVNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFibGVDb25maWcgPSB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZSAmJiB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZS5nZXRDb25maWcoKTtcclxuICAgIHRoaXMuc3RvcmFnZUtleSA9ICdyZWdpc3RyYXIvc2V0dGluZ3MvJyArIHRoaXMuYWN0aXZlVGFibGVDb25maWcudGl0bGUgKyAnL3RhYmxlL2NvbHVtbnMnO1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7Y29sdW1uczogbmV3IEZvcm1BcnJheShbXSwgdGhpcy5taW5TZWxlY3RlZENvbHVtbnMoMSkpfSk7XHJcbiAgICB0aGlzLnVzZXJTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZFRhYmxlU2V0dGluZ3MgPSBkYXRhLnZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLnNhdmVkVGFibGVTZXR0aW5ncykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlLmhhbmRsZUNvbHVtbnModGhpcy5zYXZlZFRhYmxlU2V0dGluZ3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFkZENoZWNrYm94ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYWRkQ2hlY2tib3hlcygpIHtcclxuICAgIHRoaXMudGFibGVDb2x1bW5zID0gdGhpcy5hY3RpdmVUYWJsZUNvbmZpZy5jb2x1bW5zLnNsaWNlKDEpO1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbnMuZm9yRWFjaCAoKGNvbHVtbiwgaSkgPT4ge1xyXG4gICAgICBpZiAoIWNvbHVtbi5oaWRkZW4pIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0ge1xyXG4gICAgICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxyXG4gICAgICAgICAgbmFtZTogY29sdW1uLnRpdGxlXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChjb250cm9sKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5zYXZlZFRhYmxlU2V0dGluZ3MpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2ggKChjb2x1bW4sIGkpID0+IHtcclxuICAgICAgICBjb2x1bW4uY2hlY2sgPSBmYWxzZTtcclxuICAgICAgICBjb2x1bW4uY2hlY2sgPSB0aGlzLnNhdmVkVGFibGVTZXR0aW5ncy5pbmNsdWRlcyhjb2x1bW4uaWQpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLm1hcCgoY29sdW1uLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChjb2x1bW4uY2hlY2spO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0pIHtcclxuICAgICAgICAgICh0aGlzLmZvcm0uY29udHJvbHMuY29sdW1ucyBhcyBGb3JtQXJyYXkpLnB1c2goY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5UYWJsZVNldHRpbmdzKHRhYmxlX3NldHRpbmdzX21vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyh0YWJsZV9zZXR0aW5nc19tb2RhbCk7XHJcbiAgfVxyXG5cclxuICBzYXZlVGFibGVTZXR0aW5ncygpIHtcclxuICAgIGlmICh0aGlzLmZvcm0gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbHVtbnNJZHMgPSB0aGlzLmZvcm0udmFsdWUuY29sdW1uc1xyXG4gICAgICAubWFwKCh2LCBpKSA9PiB2ID8gdGhpcy5jb2x1bW5zW2ldLmlkIDogbnVsbClcclxuICAgICAgLmZpbHRlcih2ID0+IHYgIT09IG51bGwpO1xyXG4gICAgdGhpcy51c2VyU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSwgc2VsZWN0ZWRDb2x1bW5zSWRzKTtcclxuICAgIGlmICh0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZSkge1xyXG4gICAgICB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZS5oYW5kbGVDb2x1bW5zKHNlbGVjdGVkQ29sdW1uc0lkcyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RhbFJlZikge1xyXG4gICAgICB0aGlzLm1vZGFsUmVmLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc21pc3MoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbFJlZikge1xyXG4gICAgICB0aGlzLm1vZGFsUmVmLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1pblNlbGVjdGVkQ29sdW1ucyhtaW4gPSAxKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGZvcm1BcnJheTogRm9ybUFycmF5KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRvdGFsU2VsZWN0ZWQgPSBmb3JtQXJyYXkuY29udHJvbHNcclxuICAgICAgICAubWFwKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZSlcclxuICAgICAgICAucmVkdWNlKChwcmV2LCBuZXh0KSA9PiBuZXh0ID8gcHJldiArIG5leHQgOiBwcmV2LCAwKTtcclxuXHJcbiAgICAgIHJldHVybiB0b3RhbFNlbGVjdGVkID49IG1pbiA/IG51bGwgOiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3I7XHJcbiAgfVxyXG59XHJcbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTN0Y7SUFhRSx3Q0FBc0IsUUFBNEIsRUFDNUIsZUFBK0IsRUFDakMsWUFBNEIsRUFDNUIsV0FBK0IsRUFDL0IsV0FBd0IsRUFDeEIsZUFBc0M7UUFMcEMsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBWjFELFdBQU0sR0FBUSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUcxQyxZQUFP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QUFNLENBQUMsVUFBQyxJQUFJLEVBQUUsSUFBSSxJQUFLLE9BQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQXpCLENBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEQsT0FBTyxhQUFhLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2dCQXRGK0Isa0JBQWtCO2dCQUNYLGNBQWM7Z0JBQ25CLGNBQWM7Z0JBQ2Ysa0JBQWtCO2dCQUNsQixXQUFXO2dCQUNQLHFCQUFxQjs7SUFoQmpEO1FBQVIsS0FBSyxFQUFFO2lFQUFnQztJQUNGO1FBQXJDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQzttRkFBc0M7SUFIaEUsOEJBQThCO1FBUDFDLFNBQVMsQ0FBQztZQUNULDhDQUE4QztZQUM5QyxRQUFRLEVBQUUsNkJBQTZCO1lBQ3ZDLHM5Q0FBdUQ7WUFDdkQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7U0FDdEMsQ0FBQztPQUVXLDhCQUE4QixDQW9HMUM7SUFBRCxxQ0FBQztDQUFBLEFBcEdELElBb0dDO1NBcEdZLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XHJcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlLCBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3RhYmxlcy5hY3RpdmF0ZWQtdGFibGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJTdG9yYWdlU2VydmljZSB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtdGFibGUtc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZHZhbmNlZC10YWJsZS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlPzogQWR2YW5jZWRUYWJsZUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdtb2RhbF9zZXR0aW5nc190ZW1wbGF0ZScpIG1vZGFsX3NldHRpbmdzX3RlbXBsYXRlPzogRWxlbWVudFJlZjtcclxuICBtb2RhbFJlZj86IEJzTW9kYWxSZWY7XHJcbiAgc3RvcmFnZUtleTogYW55O1xyXG4gIHBhcmFtczogYW55ID0gdGhpcy5fYWN0aXZhdGVkUm91dGUucGFyYW1zO1xyXG4gIHByaXZhdGUgc2F2ZWRUYWJsZVNldHRpbmdzOiBhbnk7XHJcbiAgZm9ybT86IEZvcm1Hcm91cDtcclxuICBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHRhYmxlQ29sdW1uczogYW55O1xyXG4gIGFjdGl2ZVRhYmxlQ29uZmlnOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY29udGV4dDogQW5ndWxhckRhdGFDb250ZXh0LFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHVzZXJTdG9yYWdlOiBVc2VyU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkVGFibGU6IEFjdGl2YXRlZFRhYmxlU2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWJsZUNvbmZpZyA9IHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlICYmIHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlLmdldENvbmZpZygpO1xyXG4gICAgdGhpcy5zdG9yYWdlS2V5ID0gJ3JlZ2lzdHJhci9zZXR0aW5ncy8nICsgdGhpcy5hY3RpdmVUYWJsZUNvbmZpZy50aXRsZSArICcvdGFibGUvY29sdW1ucyc7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtjb2x1bW5zOiBuZXcgRm9ybUFycmF5KFtdLCB0aGlzLm1pblNlbGVjdGVkQ29sdW1ucygxKSl9KTtcclxuICAgIHRoaXMudXNlclN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLnNhdmVkVGFibGVTZXR0aW5ncyA9IGRhdGEudmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMuc2F2ZWRUYWJsZVNldHRpbmdzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5fYWN0aXZhdGVkVGFibGUuYWN0aXZlVGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVkVGFibGUuYWN0aXZlVGFibGUuaGFuZGxlQ29sdW1ucyh0aGlzLnNhdmVkVGFibGVTZXR0aW5ncyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkQ2hlY2tib3hlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhZGRDaGVja2JveGVzKCkge1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbnMgPSB0aGlzLmFjdGl2ZVRhYmxlQ29uZmlnLmNvbHVtbnMuc2xpY2UoMSk7XHJcbiAgICB0aGlzLnRhYmxlQ29sdW1ucy5mb3JFYWNoICgoY29sdW1uLCBpKSA9PiB7XHJcbiAgICAgIGlmICghY29sdW1uLmhpZGRlbikge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB7XHJcbiAgICAgICAgICBpZDogY29sdW1uLm5hbWUsXHJcbiAgICAgICAgICBuYW1lOiBjb2x1bW4udGl0bGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLnNhdmVkVGFibGVTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCAoKGNvbHVtbiwgaSkgPT4ge1xyXG4gICAgICAgIGNvbHVtbi5jaGVjayA9IGZhbHNlO1xyXG4gICAgICAgIGNvbHVtbi5jaGVjayA9IHRoaXMuc2F2ZWRUYWJsZVNldHRpbmdzLmluY2x1ZGVzKGNvbHVtbi5pZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4sIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKGNvbHVtbi5jaGVjayk7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xyXG4gICAgICAgICAgKHRoaXMuZm9ybS5jb250cm9scy5jb2x1bW5zIGFzIEZvcm1BcnJheSkucHVzaChjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblRhYmxlU2V0dGluZ3ModGFibGVfc2V0dGluZ3NfbW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KHRhYmxlX3NldHRpbmdzX21vZGFsKTtcclxuICB9XHJcblxyXG4gIHNhdmVUYWJsZVNldHRpbmdzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29sdW1uc0lkcyA9IHRoaXMuZm9ybS52YWx1ZS5jb2x1bW5zXHJcbiAgICAgIC5tYXAoKHYsIGkpID0+IHYgPyB0aGlzLmNvbHVtbnNbaV0uaWQgOiBudWxsKVxyXG4gICAgICAuZmlsdGVyKHYgPT4gdiAhPT0gbnVsbCk7XHJcbiAgICB0aGlzLnVzZXJTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5LCBzZWxlY3RlZENvbHVtbnNJZHMpO1xyXG4gICAgaWYgKHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFRhYmxlLmFjdGl2ZVRhYmxlLmhhbmRsZUNvbHVtbnMoc2VsZWN0ZWRDb2x1bW5zSWRzKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGFsUmVmKSB7XHJcbiAgICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzbWlzcygpIHtcclxuICAgIGlmICh0aGlzLm1vZGFsUmVmKSB7XHJcbiAgICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWluU2VsZWN0ZWRDb2x1bW5zKG1pbiA9IDEpIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoZm9ybUFycmF5OiBGb3JtQXJyYXkpID0+IHtcclxuICAgICAgY29uc3QgdG90YWxTZWxlY3RlZCA9IGZvcm1BcnJheS5jb250cm9sc1xyXG4gICAgICAgIC5tYXAoY29udHJvbCA9PiBjb250cm9sLnZhbHVlKVxyXG4gICAgICAgIC5yZWR1Y2UoKHByZXYsIG5leHQpID0+IG5leHQgPyBwcmV2ICsgbmV4dCA6IHByZXYsIDApO1xyXG5cclxuICAgICAgcmV0dXJuIHRvdGFsU2VsZWN0ZWQgPj0gbWluID8gbnVsbCA6IHsgcmVxdWlyZWQ6IHRydWUgfTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcbn1cclxuIl19