@seniorsistemas/angular-components 17.30.0 → 17.30.1

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.
@@ -8,7 +8,7 @@ import { HostProjectConfigsInjectionToken } from "../../../angular-components.mo
8
8
  import { LocaleService } from "../../locale/locale.service";
9
9
  import { NumericService } from "../../locale/services/numeric.service";
10
10
  import { convertToMomentDateFormat } from "../../utils/locale-utils";
11
- import { isNullOrUndefined } from "../../utils/utils";
11
+ import { deepClone, isNullOrUndefined } from "../../utils/utils";
12
12
  import { EnumColumnFieldType } from "./models";
13
13
  var moment = moment_;
14
14
  var TableColumnsComponent = /** @class */ (function () {
@@ -61,11 +61,11 @@ var TableColumnsComponent = /** @class */ (function () {
61
61
  };
62
62
  TableColumnsComponent.prototype.createColumnsTemplate = function (changes) {
63
63
  var _this = this;
64
- var _a, _b, _c;
64
+ var _a, _b, _c, _d;
65
65
  this.viewContainerRef.clear();
66
66
  var columns = ((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue) || this.columns;
67
- var rowValue = ((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) || this.rowValue;
68
- var locale = ((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue) || this.locale;
67
+ var rowValue = deepClone((_c = (_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) !== null && _c !== void 0 ? _c : this.rowValue);
68
+ var locale = ((_d = changes.locale) === null || _d === void 0 ? void 0 : _d.currentValue) || this.locale;
69
69
  this.formattedColumns = columns.map(function (column) { return _this.getColumnValue(column, rowValue, locale); });
70
70
  this.cellsData = this.formattedColumns.map(function (column) { return _this.getCellData(column); });
71
71
  this.viewContainerRef.createEmbeddedView(this.columnsTemplate);
@@ -196,14 +196,14 @@ var TableColumnsComponent = /** @class */ (function () {
196
196
  };
197
197
  TableColumnsComponent.prototype.getColumnScale = function (scale) {
198
198
  if (typeof scale === "function") {
199
- return scale(this.rowValue);
199
+ return scale(deepClone(this.rowValue));
200
200
  }
201
201
  return scale;
202
202
  };
203
203
  TableColumnsComponent.prototype.getColumnInfoSign = function (infoSign) {
204
204
  if (infoSign !== undefined && infoSign !== null) {
205
205
  if (typeof infoSign === "function") {
206
- return infoSign(this.rowValue);
206
+ return infoSign(deepClone(this.rowValue));
207
207
  }
208
208
  return infoSign;
209
209
  }
@@ -212,7 +212,7 @@ var TableColumnsComponent = /** @class */ (function () {
212
212
  TableColumnsComponent.prototype.getColumnTooltip = function (tooltip) {
213
213
  if (tooltip !== undefined && tooltip !== null) {
214
214
  if (typeof tooltip === "function") {
215
- return tooltip(this.rowValue);
215
+ return tooltip(deepClone(this.rowValue));
216
216
  }
217
217
  return tooltip;
218
218
  }
@@ -285,4 +285,4 @@ var TableColumnsComponent = /** @class */ (function () {
285
285
  return TableColumnsComponent;
286
286
  }());
287
287
  export { TableColumnsComponent };
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFzQixnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUF3QixtQkFBbUIsRUFBNEIsTUFBTSxVQUFVLENBQUM7QUFFL0YsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBT3ZCO0lBMkJJLCtCQUNxQixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsU0FBMkIsRUFDM0IsY0FBOEIsRUFDWSxrQkFBc0M7UUFKaEYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFD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b250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZywgYXBwbHlNYXNrIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9uZzItY3VycmVuY3ktbWFza1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTnVtZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbG9jYWxlL3NlcnZpY2VzL251bWVyaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7IGNvbnZlcnRUb01vbWVudERhdGVGb3JtYXQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbG9jYWxlLXV0aWxzXCI7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgQ29sdW1uLCBDb2x1bW5WYWx1ZXMsIEVudW1Db2x1bW5GaWVsZFR5cGUsIFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWNvbHVtbnMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBzZWxlY3RvcjogXCJzLXRhYmxlLWNvbHVtbnNcIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKFwiY29sdW1uc1RlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbHVtbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbHVtbnMhOiBDb2x1bW5bXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd1ZhbHVlITogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICAuLi50aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogY29udmVydFRvTW9tZW50RGF0ZUZvcm1hdCh0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLmRhdGVGb3JtYXQpLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkubnVtYmVyLFxuICAgICAgICAgICAgc2NhbGU6IDAsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNlbGxzRGF0YTogQ2VsbERhdGFbXSA9IFtdO1xuXG4gICAgZm9ybWF0dGVkQ29sdW1uczogQ29sdW1uVmFsdWVzW10gPSBbXTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oXCJjb2x1bW5cIikgdGVzdGVFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1lcmljU2VydmljZTogTnVtZXJpY1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgaG9zdFByb2plY3RDb25maWdzOiBIb3N0UHJvamVjdENvbmZpZ3NcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnRBdHRyaWJ1dGVzKGNoYW5nZXMpO1xuXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbHVtbnMgJiYgY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5jb2x1bW5zLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuc29ydENvbHVtbnNCeVNlcXVlbmNlKGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb2x1bW5zVGVtcGxhdGUoY2hhbmdlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDZWxsRGF0YShjb2x1bW46IENvbHVtblZhbHVlcyk6IENlbGxEYXRhIHtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5WYWx1ZSwgc2VwYXJhdG9yLCB1bmluZm9ybWVkIH0gPSBjb2x1bW47XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5WYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRTdHJpbmcgPSBjb2x1bW5WYWx1ZS5zcGxpdChzZXBhcmF0b3IpO1xuXG4gICAgICAgICAgICByZXR1cm4gc3BsaXR0ZWRTdHJpbmcubWFwKChzdHJpbmcsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0SW5kZXggPSBzcGxpdHRlZFN0cmluZy5sZW5ndGggLSAxID09PSBpbmRleDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIGlzVW5pbmZvcm1lZDogc3RyaW5nID09PSB1bmluZm9ybWVkLFxuICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3I6ICFpc0xhc3RJbmRleCA/IHNlcGFyYXRvciA6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1ucyAmJiAhY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnY29sdW1ucycgYXR0cmlidXRlIG11c3QgYmUgaW5mb3JtZWQhXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yb3dWYWx1ZSAmJiAhY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ3Jvd1ZhbHVlJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5jb2x1bW5zO1xuICAgICAgICBjb25zdCByb3dWYWx1ZTogb2JqZWN0ID0gY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlIHx8IHRoaXMucm93VmFsdWU7XG4gICAgICAgIGNvbnN0IGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zID0gY2hhbmdlcy5sb2NhbGU/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLmxvY2FsZTtcblxuICAgICAgICB0aGlzLmZvcm1hdHRlZENvbHVtbnMgPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB0aGlzLmdldENvbHVtblZhbHVlKGNvbHVtbiwgcm93VmFsdWUsIGxvY2FsZSkpO1xuXG4gICAgICAgIHRoaXMuY2VsbHNEYXRhID0gdGhpcy5mb3JtYXR0ZWRDb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB0aGlzLmdldENlbGxEYXRhKGNvbHVtbikpO1xuXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jb2x1bW5zVGVtcGxhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbjogQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc2VwYXJhdG9yID8gY29sdW1uLnNlcGFyYXRvciA6IFwiIC0gXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvblByZWZpeChjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnByZWZpeCA/IGNvbHVtbi5wcmVmaXggOiBgJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5kb21haW59LiR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3Muc2VydmljZX0uYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVJbnZhbGlkKGF0dHJpYnV0ZVZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAoYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMgJiYgaXNOdWxsT3JVbmRlZmluZWQoYXR0cmlidXRlVmFsdWU/LnZhbHVlKSkgfHxcbiAgICAgICAgICAgICh0aGlzLmlzQXJyYXkoYXR0cmlidXRlVmFsdWUpICYmICFhdHRyaWJ1dGVWYWx1ZS5sZW5ndGgpIHx8XG4gICAgICAgICAgICAodHlwZW9mIGF0dHJpYnV0ZVZhbHVlID09PSBcInN0cmluZ1wiICYmIGF0dHJpYnV0ZVZhbHVlLnRyaW0oKSA9PT0gXCJcIilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1hdHRlZENvbHVtblZhbHVlKFxuICAgICAgICBjb2x1bW46IENvbHVtbixcbiAgICAgICAgY29sdW1uVmFsdWU6IGFueVtdLFxuICAgICAgICB1bmlmaWVkQ29sdW1uVmFsdWVzOiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWRUZXh0OiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWROdW1iZXI6IG51bWJlclxuICAgICkge1xuICAgICAgICBpZiAodW5pbmZvcm1lZE51bWJlciA9PT0gY29sdW1uLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5pbmZvcm1lZFRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09IEVudW1Db2x1bW5GaWVsZFR5cGUuVE9LRU5TKSB7XG4gICAgICAgICAgICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgIGNvbHVtblZhbHVlLmZpbHRlcigodmFsdWVzKSA9PiB2YWx1ZXMgIT09IHVuaW5mb3JtZWRUZXh0KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmlmaWVkQ29sdW1uVmFsdWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlOiBzdHJpbmcsIHJvd1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZVZhbHVlITogYW55O1xuXG4gICAgICAgIGF0dHJpYnV0ZS5zcGxpdChcIi9cIikuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnNwbGl0KFwiLlwiKS5mb3JFYWNoKCh2YWw6IHN0cmluZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJvd1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSByb3dWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE51bWJlckNvbmZpZ3MoY29sdW1uOiBDb2x1bW4pOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlLm51bWJlcixcbiAgICAgICAgICAgIHNjYWxlOiBjb2x1bW4uc2NhbGUgIT09IG51bGwgJiYgY29sdW1uLnNjYWxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmdldENvbHVtblNjYWxlKGNvbHVtbi5zY2FsZSkgOiB0aGlzLmxvY2FsZS5udW1iZXIuc2NhbGUsXG4gICAgICAgICAgICBwcmVmaXg6IGAke3RoaXMubG9jYWxlLm51bWJlci5jdXJyZW5jeVN5bWJvbH0gYCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVGb3JtYXQoY29sdW1uOiBDb2x1bW4sIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uZGF0ZUZvcm1hdCA/IGNvbHVtbi5kYXRlRm9ybWF0IDogbG9jYWxlLmNhbGVuZGFyLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgcm93VmFsdWU6IGFueSwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBDb2x1bW5WYWx1ZXMge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFRyYW5zbGF0aW9uUHJlZml4KGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIFwiZW1wdHlfbGFiZWxcIik7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29sdW1uLnN0eWxlO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gY29sdW1uLmF0dHJpYnV0ZXMubWFwKChhdHRyaWJ1dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSwgcm93VmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5pbmZvcm1lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQ29uZmlncyA9IHRoaXMuZ2V0TnVtYmVyQ29uZmlncyhjb2x1bW4pO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU06XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGNvbHVtbi5lbnVtUHJlZml4ICsgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5DVVJSRU5DWToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID0gYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYXR0cmlidXRlVmFsdWUub3B0aW9ucy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiByb3dWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubnVtZXJpY1NlcnZpY2UuaW5zdGFudChhdHRyaWJ1dGVWYWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkRBVEU6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmdldERhdGVGb3JtYXQoY29sdW1uLCBsb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGF0dHJpYnV0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZSA/IFwieWVzXCIgOiBcIm5vXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5OVU1CRVI6IHtcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyQ29uZmlncy5wcmVmaXggPSBcIlwiO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckZvcm1hdE9wdGlvbnMgPSBhdHRyaWJ1dGVWYWx1ZT8ub3B0aW9ucz8ubnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBhdHRyaWJ1dGVWYWx1ZS5vcHRpb25zLm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IHJvd1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5udW1lcmljU2VydmljZS5pbnN0YW50KGF0dHJpYnV0ZVZhbHVlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHBseU1hc2soYXR0cmlidXRlVmFsdWUsIG51bWJlckNvbmZpZ3MsIHRoaXMuaXNOdW1iZXIoYXR0cmlidXRlVmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5zKGF0dHJpYnV0ZVZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdW5pZmllZENvbHVtblZhbHVlcyA9IGNvbHVtblZhbHVlLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgdW5pbmZvcm1lZE51bWJlciA9IHVuaWZpZWRDb2x1bW5WYWx1ZXMuc3BsaXQoc2VwYXJhdG9yKS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdW5pbmZvcm1lZCkubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkQ29sdW1uVmFsdWUoY29sdW1uLCBjb2x1bW5WYWx1ZSwgdW5pZmllZENvbHVtblZhbHVlcywgdW5pbmZvcm1lZCwgdW5pbmZvcm1lZE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgY29sdW1uVmFsdWU6IGZvcm1hdHRlZENvbHVtblZhbHVlLFxuICAgICAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICAgICAgdW5pbmZvcm1lZCxcbiAgICAgICAgICAgIGJhZGdlQ29uZmlnczogY29sdW1uPy5iYWRnZUNvbmZpZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGJhZGdlQ29uZmlnKSA9PiBiYWRnZUNvbmZpZy5lbnVtVmFsdWUgPT09IHJvd1ZhbHVlW2NvbHVtbi5hdHRyaWJ1dGVzWzBdID8/IGNvbHVtbi5maWVsZF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2xvcjogY29sdW1uLmNvbG9yPy4ocm93VmFsdWUpLFxuICAgICAgICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblRvb2x0aXAoY29sdW1uLnRvb2x0aXApLFxuICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMuZ2V0Q29sdW1uSW5mb1NpZ24oY29sdW1uLmluZm9TaWduKSxcbiAgICAgICAgICAgIG9uTGlua0NsaWNrOiBjb2x1bW4ub25MaW5rQ2xpY2ssXG4gICAgICAgICAgICBvbkNvbHVtbkNsaWNrOiBjb2x1bW4ub25Db2x1bW5DbGljayxcbiAgICAgICAgICAgIGNvbXBhY3Q6IGNvbHVtbi5jb21wYWN0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2NhbGUoc2NhbGU6IG51bWJlciB8ICgocm93VmFsdWU6IGFueSkgPT4gbnVtYmVyKSk6IG51bWJlciB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NhbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYWxlKHRoaXMucm93VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkluZm9TaWduKGluZm9TaWduOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5mb1NpZ24gIT09IHVuZGVmaW5lZCAmJiBpbmZvU2lnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmZvU2lnbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduKHRoaXMucm93VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVG9vbHRpcCh0b29sdGlwOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAodG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIHRvb2x0aXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9vbHRpcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXAodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdG9vbHRpcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFuZXcgQmlnTnVtYmVyKHZhbHVlKS5pc05hTigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9rZW5zKHZhbHVlczogYW55KTogSVRva2VuW10ge1xuICAgICAgICBpZiAoIXRoaXMuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUbyB1c2UgdG9rZW5zIGFuIGFycmF5IG11c3QgYmUgaW5mb3JtZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgdmFsaWQgdG9rZW4gYXJyYXkuIE11c3QgYmUgYSBwcmltaXRpdmUgdmFsdWVzIGFycmF5IG9yIGFuIG9iamVjdHMgd2l0aCBsYWJlbCBhdHRyaWJ1dGUgYXJyYXlcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgdmFsdWUgPT09IFwic3ltYm9sXCIgPyB2YWx1ZS50b1N0cmluZygpIDogYCR7dmFsdWV9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkVG9rZW5BcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzKSB8fCB0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcmltaXRpdmVWYWx1ZXNBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IE9iamVjdCh2YWx1ZSkpLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWU/LmxhYmVsICE9PSBudWxsICYmIHZhbHVlPy5sYWJlbCAhPT0gdW5kZWZpbmVkKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0Q29sdW1uc0J5U2VxdWVuY2UoY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKTtcbiAgICB9XG59XG5cbnR5cGUgQ2VsbERhdGEgPSB7IHZhbHVlOiBzdHJpbmc7IGlzVW5pbmZvcm1lZDogYm9vbGVhbjsgc2VwYXJhdG9yOiBzdHJpbmcgfVtdO1xuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFzQixnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBd0IsbUJBQW1CLEVBQTRCLE1BQU0sVUFBVSxDQUFDO0FBRS9GLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQU92QjtJQTJCSSwrQkFDcUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQzNCLGNBQThCLEVBQ1ksa0JBQXNDO1FBSmhGLGtCQUFhLEdBQWIsYUFB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LHFCQUFxQixDQXNVakM7SUFBRCw0QkFBQztDQUFBLEFBdFVELElBc1VDO1NBdFVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZywgYXBwbHlNYXNrIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9uZzItY3VycmVuY3ktbWFza1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTnVtZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbG9jYWxlL3NlcnZpY2VzL251bWVyaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7IGNvbnZlcnRUb01vbWVudERhdGVGb3JtYXQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbG9jYWxlLXV0aWxzXCI7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBDb2x1bW4sIENvbHVtblZhbHVlcywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1jb2x1bW5zLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHNlbGVjdG9yOiBcInMtdGFibGUtY29sdW1uc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoXCJjb2x1bW5zVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSkgY29sdW1uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1ucyE6IENvbHVtbltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93VmFsdWUhOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBjb252ZXJ0VG9Nb21lbnREYXRlRm9ybWF0KHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIuZGF0ZUZvcm1hdCksXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlcjoge1xuICAgICAgICAgICAgLi4udGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogMCxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY2VsbHNEYXRhOiBDZWxsRGF0YVtdID0gW107XG5cbiAgICBmb3JtYXR0ZWRDb2x1bW5zOiBDb2x1bW5WYWx1ZXNbXSA9IFtdO1xuXG4gICAgQFZpZXdDaGlsZHJlbihcImNvbHVtblwiKSB0ZXN0ZUVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWVyaWNTZXJ2aWNlOiBOdW1lcmljU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSByZWFkb25seSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlcyk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1ucyAmJiBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNvbHVtbnMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5zb3J0Q29sdW1uc0J5U2VxdWVuY2UoY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENlbGxEYXRhKGNvbHVtbjogQ29sdW1uVmFsdWVzKTogQ2VsbERhdGEge1xuICAgICAgICBjb25zdCB7IGNvbHVtblZhbHVlLCBzZXBhcmF0b3IsIHVuaW5mb3JtZWQgfSA9IGNvbHVtbjtcblxuICAgICAgICBpZiAodHlwZW9mIGNvbHVtblZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZFN0cmluZyA9IGNvbHVtblZhbHVlLnNwbGl0KHNlcGFyYXRvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBzcGxpdHRlZFN0cmluZy5tYXAoKHN0cmluZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJbmRleCA9IHNwbGl0dGVkU3RyaW5nLmxlbmd0aCAtIDEgPT09IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgaXNVbmluZm9ybWVkOiBzdHJpbmcgPT09IHVuaW5mb3JtZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogIWlzTGFzdEluZGV4ID8gc2VwYXJhdG9yIDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ29tcG9uZW50QXR0cmlidXRlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5zICYmICFjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJvd1ZhbHVlICYmICFjaGFuZ2VzLnJvd1ZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAncm93VmFsdWUnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29sdW1uc1RlbXBsYXRlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1uczogQ29sdW1uW10gPSBjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IHJvd1ZhbHVlOiBvYmplY3QgPSBkZWVwQ2xvbmUoY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlID8/IHRoaXMucm93VmFsdWUpO1xuICAgICAgICBjb25zdCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IGNoYW5nZXMubG9jYWxlPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5sb2NhbGU7XG5cbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gdGhpcy5nZXRDb2x1bW5WYWx1ZShjb2x1bW4sIHJvd1ZhbHVlLCBsb2NhbGUpKTtcblxuICAgICAgICB0aGlzLmNlbGxzRGF0YSA9IHRoaXMuZm9ybWF0dGVkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT4gdGhpcy5nZXRDZWxsRGF0YShjb2x1bW4pKTtcblxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29sdW1uc1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblNlcGFyYXRvcihjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnNlcGFyYXRvciA/IGNvbHVtbi5zZXBhcmF0b3IgOiBcIiAtIFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25QcmVmaXgoY29sdW1uOiBDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5wcmVmaXggPyBjb2x1bW4ucHJlZml4IDogYCR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3MuZG9tYWlufS4ke3RoaXMuaG9zdFByb2plY3RDb25maWdzLnNlcnZpY2V9LmA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgKGF0dHJpYnV0ZVZhbHVlPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zICYmIGlzTnVsbE9yVW5kZWZpbmVkKGF0dHJpYnV0ZVZhbHVlPy52YWx1ZSkpIHx8XG4gICAgICAgICAgICAodGhpcy5pc0FycmF5KGF0dHJpYnV0ZVZhbHVlKSAmJiAhYXR0cmlidXRlVmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgKHR5cGVvZiBhdHRyaWJ1dGVWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBhdHRyaWJ1dGVWYWx1ZS50cmltKCkgPT09IFwiXCIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRDb2x1bW5WYWx1ZShcbiAgICAgICAgY29sdW1uOiBDb2x1bW4sXG4gICAgICAgIGNvbHVtblZhbHVlOiBhbnlbXSxcbiAgICAgICAgdW5pZmllZENvbHVtblZhbHVlczogc3RyaW5nLFxuICAgICAgICB1bmluZm9ybWVkVGV4dDogc3RyaW5nLFxuICAgICAgICB1bmluZm9ybWVkTnVtYmVyOiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgaWYgKHVuaW5mb3JtZWROdW1iZXIgPT09IGNvbHVtbi5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWRUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUykge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICBjb2x1bW5WYWx1ZS5maWx0ZXIoKHZhbHVlcykgPT4gdmFsdWVzICE9PSB1bmluZm9ybWVkVGV4dClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5pZmllZENvbHVtblZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZTogc3RyaW5nLCByb3dWYWx1ZTogYW55KSB7XG4gICAgICAgIGxldCBhdHRyaWJ1dGVWYWx1ZSE6IGFueTtcblxuICAgICAgICBhdHRyaWJ1dGUuc3BsaXQoXCIvXCIpLmZvckVhY2goKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpdChcIi5cIikuZm9yRWFjaCgodmFsOiBzdHJpbmcsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gcm93VmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJDb25maWdzKGNvbHVtbjogQ29sdW1uKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLmxvY2FsZS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogY29sdW1uLnNjYWxlICE9PSBudWxsICYmIGNvbHVtbi5zY2FsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDb2x1bW5TY2FsZShjb2x1bW4uc2NhbGUpIDogdGhpcy5sb2NhbGUubnVtYmVyLnNjYWxlLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0aGlzLmxvY2FsZS5udW1iZXIuY3VycmVuY3lTeW1ib2x9IGAsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlRm9ybWF0KGNvbHVtbjogQ29sdW1uLCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gY29sdW1uLmRhdGVGb3JtYXQgPyBjb2x1bW4uZGF0ZUZvcm1hdCA6IGxvY2FsZS5jYWxlbmRhci5kYXRlRm9ybWF0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVmFsdWUoY29sdW1uOiBDb2x1bW4sIHJvd1ZhbHVlOiBhbnksIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKTogQ29sdW1uVmFsdWVzIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRUcmFuc2xhdGlvblByZWZpeChjb2x1bW4pO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmdldENvbHVtblNlcGFyYXRvcihjb2x1bW4pO1xuICAgICAgICBjb25zdCB1bmluZm9ybWVkID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyBcImVtcHR5X2xhYmVsXCIpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IGNvbHVtbi5zdHlsZTtcblxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZSA9IGNvbHVtbi5hdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHJvd1ZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBdHRyaWJ1dGVWYWx1ZUludmFsaWQoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG51bWJlckNvbmZpZ3MgPSB0aGlzLmdldE51bWJlckNvbmZpZ3MoY29sdW1uKTtcblxuICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjb2x1bW4uZW51bVByZWZpeCArIGF0dHJpYnV0ZVZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQ1VSUkVOQ1k6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0T3B0aW9ucyA9IGF0dHJpYnV0ZVZhbHVlPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGF0dHJpYnV0ZVZhbHVlLm9wdGlvbnMubnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogcm93VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm51bWVyaWNTZXJ2aWNlLmluc3RhbnQoYXR0cmlidXRlVmFsdWUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGFwcGx5TWFzayhhdHRyaWJ1dGVWYWx1ZSwgbnVtYmVyQ29uZmlncywgdGhpcy5pc051bWJlcihhdHRyaWJ1dGVWYWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5nZXREYXRlRm9ybWF0KGNvbHVtbiwgbG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudChhdHRyaWJ1dGVWYWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlVmFsdWUgPyBcInllc1wiIDogXCJub1wiO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuTlVNQkVSOiB7XG4gICAgICAgICAgICAgICAgICAgIG51bWJlckNvbmZpZ3MucHJlZml4ID0gXCJcIjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID0gYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYXR0cmlidXRlVmFsdWUub3B0aW9ucy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiByb3dWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubnVtZXJpY1NlcnZpY2UuaW5zdGFudChhdHRyaWJ1dGVWYWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRva2VucyhhdHRyaWJ1dGVWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHVuaWZpZWRDb2x1bW5WYWx1ZXMgPSBjb2x1bW5WYWx1ZS5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWROdW1iZXIgPSB1bmlmaWVkQ29sdW1uVmFsdWVzLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuaW5mb3JtZWQpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29sdW1uVmFsdWUgPSB0aGlzLmdldEZvcm1hdHRlZENvbHVtblZhbHVlKGNvbHVtbiwgY29sdW1uVmFsdWUsIHVuaWZpZWRDb2x1bW5WYWx1ZXMsIHVuaW5mb3JtZWQsIHVuaW5mb3JtZWROdW1iZXIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgIGNvbHVtblZhbHVlOiBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgICAgIHVuaW5mb3JtZWQsXG4gICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IGNvbHVtbj8uYmFkZ2VDb25maWdzPy5maW5kKFxuICAgICAgICAgICAgICAgIChiYWRnZUNvbmZpZykgPT4gYmFkZ2VDb25maWcuZW51bVZhbHVlID09PSByb3dWYWx1ZVtjb2x1bW4uYXR0cmlidXRlc1swXSA/PyBjb2x1bW4uZmllbGRdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29sb3I6IGNvbHVtbi5jb2xvcj8uKHJvd1ZhbHVlKSxcbiAgICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5Ub29sdGlwKGNvbHVtbi50b29sdGlwKSxcbiAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLmdldENvbHVtbkluZm9TaWduKGNvbHVtbi5pbmZvU2lnbiksXG4gICAgICAgICAgICBvbkxpbmtDbGljazogY29sdW1uLm9uTGlua0NsaWNrLFxuICAgICAgICAgICAgb25Db2x1bW5DbGljazogY29sdW1uLm9uQ29sdW1uQ2xpY2ssXG4gICAgICAgICAgICBjb21wYWN0OiBjb2x1bW4uY29tcGFjdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblNjYWxlKHNjYWxlOiBudW1iZXIgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IG51bWJlcikpOiBudW1iZXIge1xuICAgICAgICBpZiAodHlwZW9mIHNjYWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FsZShkZWVwQ2xvbmUodGhpcy5yb3dWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkluZm9TaWduKGluZm9TaWduOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5mb1NpZ24gIT09IHVuZGVmaW5lZCAmJiBpbmZvU2lnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmZvU2lnbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduKGRlZXBDbG9uZSh0aGlzLnJvd1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5mb1NpZ247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5Ub29sdGlwKHRvb2x0aXA6IHN0cmluZyB8ICgocm93VmFsdWU6IGFueSkgPT4gc3RyaW5nKSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0b29sdGlwICE9PSB1bmRlZmluZWQgJiYgdG9vbHRpcCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0b29sdGlwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9vbHRpcChkZWVwQ2xvbmUodGhpcy5yb3dWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhbmV3IEJpZ051bWJlcih2YWx1ZSkuaXNOYU4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRva2Vucyh2YWx1ZXM6IGFueSk6IElUb2tlbltdIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG8gdXNlIHRva2VucyBhbiBhcnJheSBtdXN0IGJlIGluZm9ybWVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRUb2tlbkFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBhIHZhbGlkIHRva2VuIGFycmF5LiBNdXN0IGJlIGEgcHJpbWl0aXZlIHZhbHVlcyBhcnJheSBvciBhbiBvYmplY3RzIHdpdGggbGFiZWwgYXR0cmlidXRlIGFycmF5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIHZhbHVlID09PSBcInN5bWJvbFwiID8gdmFsdWUudG9TdHJpbmcoKSA6IGAke3ZhbHVlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ByaW1pdGl2ZVZhbHVlc0FycmF5KHZhbHVlcykgfHwgdGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBPYmplY3QodmFsdWUpKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlPy5sYWJlbCAhPT0gbnVsbCAmJiB2YWx1ZT8ubGFiZWwgIT09IHVuZGVmaW5lZCkubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydENvbHVtbnNCeVNlcXVlbmNlKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uW10ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLnNlcXVlbmNlIC0gYi5zZXF1ZW5jZSk7XG4gICAgfVxufVxuXG50eXBlIENlbGxEYXRhID0geyB2YWx1ZTogc3RyaW5nOyBpc1VuaW5mb3JtZWQ6IGJvb2xlYW47IHNlcGFyYXRvcjogc3RyaW5nIH1bXTtcbiJdfQ==
@@ -2,7 +2,7 @@ import { __assign, __awaiter, __decorate, __generator, __param, __read, __spread
2
2
  import { Component, Inject, Input, Output } from "@angular/core";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { HostProjectConfigsInjectionToken } from "../../../angular-components.module";
5
- import { ExportUtils, isNullOrUndefined } from "../../utils";
5
+ import { deepClone, ExportUtils, isNullOrUndefined } from "../../utils";
6
6
  import { LocaleService } from "../../locale/locale.service";
7
7
  import BigNumber from "bignumber.js";
8
8
  var TablePagingComponent = /** @class */ (function () {
@@ -85,7 +85,7 @@ var TablePagingComponent = /** @class */ (function () {
85
85
  });
86
86
  };
87
87
  TablePagingComponent.prototype.getCurrentPageRowsToExport = function (columns) {
88
- var tableData = this.table.value;
88
+ var tableData = deepClone(this.table.value);
89
89
  if (this.loadCurrentPageRecords) {
90
90
  tableData = this.loadCurrentPageRecords();
91
91
  }
@@ -94,7 +94,7 @@ var TablePagingComponent = /** @class */ (function () {
94
94
  return this.mapColumnsTranslations(columns, tableData);
95
95
  };
96
96
  TablePagingComponent.prototype.getSelectedRowsToExport = function (columns) {
97
- var tableData = this.table.selection;
97
+ var tableData = deepClone(this.table.selection);
98
98
  if (this.loadSelectedRecords) {
99
99
  tableData = this.loadSelectedRecords();
100
100
  }
@@ -358,4 +358,4 @@ var TablePagingComponent = /** @class */ (function () {
358
358
  return TablePagingComponent;
359
359
  }());
360
360
  export { TablePagingComponent };
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL3RhYmxlLXBhZ2luZy90YWJsZS1wYWdpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQXNCLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBY3JDO0lBK0JJLDhCQUNxQixTQUEyQixFQUMzQixhQUE0QixFQUNjLGtCQUFzQztRQUZoRixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNjLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUF2QjlGLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDO0lBcUJ2QyxDQUFDO0lBRUosMENBQVcsR0FBWCxVQUFZLE9BQXNCOztRQUM5QixVQUFJLE9BQU8sQ0FBQyxZQUFZLDBDQUFFLFlBQVksRUFBRTtZQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLGtCQUFlLEVBQUU7Z0JBQ3hGLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVk7YUFDM0MsQ0FB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dCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uL3RhYmxlLWNvbHVtbi9tb2RlbHMvY29sdW1uLmludGVyZmFjZVwiO1xuXG5pbXBvcnQgeyBIb3N0UHJvamVjdENvbmZpZ3MsIEhvc3RQcm9qZWN0Q29uZmlnc0luamVjdGlvblRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGVcIjtcbmltcG9ydCB7IEV4cG9ydFV0aWxzLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgQ3VzdG9tQWN0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuXG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcblxudHlwZSBSb3dWYWx1ZUZvcm1hdE9wdGlvbiA9IHtcbiAgICB2YWx1ZT86IG51bWJlcjtcbiAgICBvcHRpb25zPzoge1xuICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zPzogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zO1xuICAgIH07XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLXBhZ2luZy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1wYWdpbmcuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgc2VsZWN0b3I6IFwicy10YWJsZS1wYWdpbmdcIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVQYWdpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvdGFsUmVjb3JkcyE6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGFibGUhOiBUYWJsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cG9ydGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlRXhwb3J0U2VsZWN0ZWRSZWNvcmRzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUFjdGlvbnM/OiBDdXN0b21BY3Rpb25bXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRBbGxSZWNvcmRzPzogKCkgPT4gUHJvbWlzZTxhbnlbXT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkQ3VycmVudFBhZ2VSZWNvcmRzPzogKCkgPT4gYW55W107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkU2VsZWN0ZWRSZWNvcmRzPzogKCkgPT4gYW55W107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzVGV4dDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgaG9zdFByb2plY3RDb25maWdzOiBIb3N0UHJvamVjdENvbmZpZ3NcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRvdGFsUmVjb3Jkcz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9dG90YWxfcmVjb3Jkc2AsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlcy50b3RhbFJlY29yZHMuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0ZVByZWZpeCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaG9zdFByb2plY3RDb25maWdzLmRvbWFpbn0uJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5zZXJ2aWNlfS5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb29sdGlwVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5nZXRUcmFuc2xhdGVQcmVmaXgoKX1leHBvcnRfdG9fY3N2YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZXhwb3J0Q3VycmVudFBhZ2VcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9jdXJyZW50X3BhZ2VgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydEN1cnJlbnRQYWdlKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUV4cG9ydFNlbGVjdGVkUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRTZWxlY3RlZFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9ZXhwb3J0X3NlbGVjdGVkX3JlY29yZHNgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydFNlbGVjdGVkUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2FkQWxsUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRBbGxcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9hbGxfcmVjb3Jkc2ApLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZXhwb3J0QWxsUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXN0b21BY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbU1lbnVzID0gdGhpcy5jdXN0b21BY3Rpb25zLm1hcCgocCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IFwiY3VzdG9tQWN0aW9uX1wiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHAubGFiZWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogcC5jb21tYW5kLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKC4uLmN1c3RvbU1lbnVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFibGUgY29tcG9uZW50IG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbnNUb0V4cG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnRhYmxlLmNvbHVtbnNdLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRDb2x1bW4gPSB7XG4gICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogY29sdW1uLmhlYWRlcixcbiAgICAgICAgICAgICAgICBleHBvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yOiBjb2x1bW4uc2VwYXJhdG9yID8/IFwiIC0gXCIsXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogY29sdW1uLmVudW1QcmVmaXgsXG4gICAgICAgICAgICAgICAgY3VzdG9tRXhwb3J0OiBjb2x1bW4uY3VzdG9tRXhwb3J0LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKGNvbHVtbi5leHBvcnRhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5leHBvcnRhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5maWVsZCA9IGNvbHVtbi5hdHRyaWJ1dGVzWzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5maWVsZCA9IGNvbHVtbi5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydENvbHVtbjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50UGFnZVJvd3NUb0V4cG9ydChjb2x1bW5zOiBhbnlbXSkge1xuICAgICAgICBsZXQgdGFibGVEYXRhID0gdGhpcy50YWJsZS52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubG9hZEN1cnJlbnRQYWdlUmVjb3Jkcykge1xuICAgICAgICAgICAgdGFibGVEYXRhID0gdGhpcy5sb2FkQ3VycmVudFBhZ2VSZWNvcmRzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZURhdGEgPSB0aGlzLm1hcEN1c3RvbUV4cG9ydChjb2x1bW5zLCB0YWJsZURhdGEpO1xuXG4gICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubWFwTnVtYmVyRm9ybWF0T3B0aW9uc0V4cG9ydChjb2x1bW5zLCB0YWJsZURhdGEpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1hcENvbHVtbnNUcmFuc2xhdGlvbnMoY29sdW1ucywgdGFibGVEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkUm93c1RvRXhwb3J0KGNvbHVtbnM6IGFueVtdKSB7XG4gICAgICAgIGxldCB0YWJsZURhdGEgPSB0aGlzLnRhYmxlLnNlbGVjdGlvbjtcbiAgICAgICAgaWYgKHRoaXMubG9hZFNlbGVjdGVkUmVjb3Jkcykge1xuICAgICAgICAgICAgdGFibGVEYXRhID0gdGhpcy5sb2FkU2VsZWN0ZWRSZWNvcmRzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZURhdGEgPSB0aGlzLm1hcEN1c3RvbUV4cG9ydChjb2x1bW5zLCB0YWJsZURhdGEpO1xuXG4gICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubWFwTnVtYmVyRm9ybWF0T3B0aW9uc0V4cG9ydChjb2x1bW5zLCB0YWJsZURhdGEpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1hcENvbHVtbnNUcmFuc2xhdGlvbnMoY29sdW1ucywgdGFibGVEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BlcnR5VmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQ6IGFueSwgcHJvcDogYW55KSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UHJvcGVydHlWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVjdXJzaW9uU2V0VmFsdWUob2JqLCBwYXRoLnNwbGl0KFwiLlwiKSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVjdXJzaW9uU2V0VmFsdWUob2JqOiBhbnksIGtleXNMaXN0OiBzdHJpbmdbXSwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNMaXN0WzBdO1xuICAgICAgICBpZiAoa2V5c0xpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgICAgICBvYmpba2V5XSA9IHRoaXMucmVjdXJzaW9uU2V0VmFsdWUob2JqPy5ba2V5XSB8fCB7fSwga2V5c0xpc3Quc2xpY2UoMSksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwQ29sdW1uc1RyYW5zbGF0aW9ucyhjb2x1bW5zOiBhbnlbXSwgcm93czogYW55W10pIHtcbiAgICAgICAgY29uc3QgZW51bUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigocCkgPT4gcC5lbnVtUHJlZml4KTtcbiAgICAgICAgaWYgKCFlbnVtQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsuLi5yb3dzXS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0geyAuLi5yb3cgfTtcbiAgICAgICAgICAgIGVudW1Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9ICFBcnJheS5pc0FycmF5KGNvbHVtbi5maWVsZCkgPyBbY29sdW1uLmZpZWxkXSA6IGNvbHVtbi5maWVsZDtcbiAgICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uRGF0YSA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShyb3csIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5EYXRhID09PSBudWxsIHx8IGNvbHVtbkRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVZhbHVlKGNvbHVtbiwgY29sdW1uRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJvcGVydHlWYWx1ZShuZXdSb3csIGZpZWxkTmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIG1hcCB2YWx1ZXNcbiAgICAgKiBmcm9tIHRoZSBUYWJsZUNvbHVtbnNDb21wb25lbnQsIHdoaWNoIHVzZXMgdGhlIG51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgKiBmaWVsZCwgYWxvbmcgd2l0aCByb3dzIHRoYXQgaGF2ZSBhIGN1c3RvbSBudW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAqIHRvIGVuc3VyZSB0aGUgY29ycmVjdCB2YWx1ZXMgYXJlIGV4cG9ydGVkIGJ5IHRoZSBUYWJsZVBhZ2luZ0NvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGNvcnJlY3RseSBtYXBwZWQgdGFibGVEYXRhLlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KFxuICAgICAgICBjb2x1bW5zOiBQYXJ0aWFsPENvbHVtbj5bXSxcbiAgICAgICAgdGFibGVEYXRhOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBSb3dWYWx1ZUZvcm1hdE9wdGlvbiB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1bXVxuICAgICkge1xuICAgICAgICBjb25zdCBoYXNOdW1iZXJGb3JtYXRPcHRpb25zQ29sdW1ucyA9IGNvbHVtbnMuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGhhc051bWJlckZvcm1hdE9wdGlvbnNSb3dzID0gdGFibGVEYXRhLnNvbWUoKHJvd0RhdGEpID0+XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyb3dEYXRhKS5zb21lKChrZXkpID0+IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaGFzTnVtYmVyRm9ybWF0T3B0aW9uc0NvbHVtbnMgJiYgIWhhc051bWJlckZvcm1hdE9wdGlvbnNSb3dzKSByZXR1cm4gdGFibGVEYXRhO1xuXG4gICAgICAgIGlmIChoYXNOdW1iZXJGb3JtYXRPcHRpb25zQ29sdW1ucykge1xuICAgICAgICAgICAgdGFibGVEYXRhID0gdGFibGVEYXRhLm1hcCgocm93RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gY29sdW1uLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0T3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0RhdGFbYXR0cmlidXRlIGFzIHN0cmluZ10pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3dEYXRhW2F0dHJpYnV0ZSBhcyBzdHJpbmddIGFzIFJvd1ZhbHVlRm9ybWF0T3B0aW9uKS5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcm93RGF0YVthdHRyaWJ1dGUgYXMgc3RyaW5nXSBhcyBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zLnN0eWxlID09PSBcInBlcmNlbnRcIiA/IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRpbWVzKDEwMCkgOiBuZXcgQmlnTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkubG9jYWxlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJkZWNpbWFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlR3JvdXBpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nTW9kZTogXCJ0cnVuY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2F0dHJpYnV0ZSBhcyBzdHJpbmddID0gbnVtYmVyRm9ybWF0LmZvcm1hdChtYXBwZWRWYWx1ZS50b051bWJlcigpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dEYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MpIHtcbiAgICAgICAgICAgIHRhYmxlRGF0YSA9IHRhYmxlRGF0YS5tYXAoKHJvd0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzV2l0aE51bWJlckZvcm1hdE9wdGlvbnMgPSBPYmplY3Qua2V5cyhyb3dEYXRhKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChrZXkpID0+IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckZvcm1hdE9wdGlvbnMgPSAocm93RGF0YVtrZXldIGFzIFJvd1ZhbHVlRm9ybWF0T3B0aW9uKS5vcHRpb25zLm51bWJlckZvcm1hdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkVmFsdWUgPSBudW1iZXJGb3JtYXRPcHRpb25zLnN0eWxlID09PSBcInBlcmNlbnRcIiA/IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRpbWVzKDEwMCkgOiBuZXcgQmlnTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKS5sb2NhbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm51bWJlckZvcm1hdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJkZWNpbWFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VHcm91cGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3VuZGluZ01vZGU6IFwidHJ1bmNcIixcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICAgICAgICAgICAgICAgIChyb3dEYXRhW2tleV0gYXMgc3RyaW5nIHwgbnVtYmVyKSA9IG51bWJlckZvcm1hdC5mb3JtYXQobWFwcGVkVmFsdWUudG9OdW1iZXIoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd0RhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWJsZURhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIG1hcEN1c3RvbUV4cG9ydChjb2x1bW5zOiBhbnlbXSwgcm93czogYW55W10pIHtcbiAgICAgICAgY29uc3QgY3VzdG9tQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChwKSA9PiBwLmN1c3RvbUV4cG9ydCk7XG4gICAgICAgIGlmICghY3VzdG9tQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsuLi5yb3dzXS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0geyAuLi5yb3cgfTtcbiAgICAgICAgICAgIGN1c3RvbUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gIUFycmF5LmlzQXJyYXkoY29sdW1uLmZpZWxkKSA/IFtjb2x1bW4uZmllbGRdIDogY29sdW1uLmZpZWxkO1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKHJvdywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkRhdGEgPT09IG51bGwgfHwgY29sdW1uRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2x1bW4uY3VzdG9tRXhwb3J0KGNvbHVtbkRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFByb3BlcnR5VmFsdWUobmV3Um93LCBmaWVsZE5hbWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3Um93O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zbGF0ZVZhbHVlKGNvbHVtbjogYW55LCBjb2x1bW5EYXRhOiBhbnkpIHtcbiAgICAgICAgLy8gRGVmYXVsdCB1c2FnZTogRU5VTV9WQUxVRSAtPiBkb21haW4uc2VydmljZS5lbnVtX3ZhbHVlXG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IGNvbHVtbkRhdGEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgdHJhbnNsYXRpb25LZXkgPSBjb2x1bW4uZW51bVByZWZpeCArIGVudW1WYWx1ZTtcbiAgICAgICAgbGV0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuXG4gICAgICAgIC8vIEN1c3RvbSB1c2FnZSAxOiBWOSAtPiBkb21haW4uc2VydmljZS52XzlcbiAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5ID09PSB0cmFuc2xhdGVkVmFsdWUgJiYgZW51bVZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5ID0gYCR7Y29sdW1uLmVudW1QcmVmaXh9JHtlbnVtVmFsdWUuc3Vic3RyaW5nKDAsIDEpfV8ke2VudW1WYWx1ZS5zdWJzdHIoMSl9YDtcbiAgICAgICAgICAgIHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3VzdG9tIHVzYWdlIDI6IEVudW1WYWx1ZSAtPiBkb21haW4uc2VydmljZS5lbnVtX3ZhbHVlXG4gICAgICAgIGlmICh0cmFuc2xhdGlvbktleSA9PT0gdHJhbnNsYXRlZFZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBlbnVtS2V5ID0gdGhpcy5jb252ZXJ0VG9TbmFrZUNhc2UoY29sdW1uRGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5ID0gYCR7Y29sdW1uLmVudW1QcmVmaXh9JHtlbnVtS2V5fWA7XG4gICAgICAgICAgICB0cmFuc2xhdGVkVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRyYW5zbGF0aW9uS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9TbmFrZUNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIChtYXRjaCwgZ3JvdXApID0+IGBfJHtncm91cC50b0xvd2VyQ2FzZSgpfWApLnJlcGxhY2UoL15fLywgXCJcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFeHBvcnRGaWxlTmFtZSgpIHtcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8/IFwicHQtQlJcIjtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4cG9ydEZpbGVOYW1lID8/IFwiZG93bmxvYWRcIjtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxhbmcpLnJlcGxhY2UoXCJfXCIsIFwiLVwiKTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxhbmcpLnJlcGxhY2UoXCIgXCIsIFwiLVwiKTtcblxuICAgICAgICByZXR1cm4gYCR7ZmlsZU5hbWV9XyR7Zm9ybWF0dGVkRGF0ZX1fJHtmb3JtYXR0ZWRUaW1lfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cG9ydEN1cnJlbnRQYWdlKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50KCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnNUb0V4cG9ydCgpO1xuICAgICAgICBjb25zdCBkYXRhVG9FeHBvcnQgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93c1RvRXhwb3J0KGNvbHVtbnMpO1xuICAgICAgICBFeHBvcnRVdGlscy5leHBvcnRDU1YoY29sdW1ucywgZGF0YVRvRXhwb3J0LCB1bmRlZmluZWQsIHRoaXMuZ2V0RXhwb3J0RmlsZU5hbWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cG9ydFNlbGVjdGVkUmVjb3JkcygpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudCgpO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5zVG9FeHBvcnQoKTtcbiAgICAgICAgY29uc3QgZGF0YVRvRXhwb3J0ID0gdGhpcy5nZXRTZWxlY3RlZFJvd3NUb0V4cG9ydChjb2x1bW5zKTtcbiAgICAgICAgRXhwb3J0VXRpbHMuZXhwb3J0Q1NWKGNvbHVtbnMsIGRhdGFUb0V4cG9ydCwgdW5kZWZpbmVkLCB0aGlzLmdldEV4cG9ydEZpbGVOYW1lKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHBvcnRBbGxSZWNvcmRzKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50KCk7XG5cbiAgICAgICAgbGV0IHNlcnZlckRhdGEgPSBhd2FpdCB0aGlzLmxvYWRBbGxSZWNvcmRzKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uc1RvRXhwb3J0KCk7XG5cbiAgICAgICAgc2VydmVyRGF0YSA9IHRoaXMubWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnMsIHNlcnZlckRhdGEpO1xuXG4gICAgICAgIHNlcnZlckRhdGEgPSB0aGlzLm1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoY29sdW1ucywgc2VydmVyRGF0YSk7XG5cbiAgICAgICAgY29uc3QgZGF0YVRvRXhwb3J0ID0gdGhpcy5tYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnMsIHNlcnZlckRhdGEpO1xuXG4gICAgICAgIEV4cG9ydFV0aWxzLmV4cG9ydENTVihjb2x1bW5zLCBkYXRhVG9FeHBvcnQsIHVuZGVmaW5lZCwgdGhpcy5nZXRFeHBvcnRGaWxlTmFtZSgpKTtcbiAgICB9XG59XG4iXX0=
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL3RhYmxlLXBhZ2luZy90YWJsZS1wYWdpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQXNCLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQWNyQztJQStCSSw4QkFDcUIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDYyxrQkFBc0M7UUFGaEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDYyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBdkI5RixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLGdDQUEyQixHQUFHLElBQUksQ0FBQztJQXFCdkMsQ0FBQztJQUVKLDBDQUFXLEdBQVgsVUFBWSxPQUFzQjs7UUFDOUIsVUFBSSxPQUFPLENBQUMsWUFBWSwwQ0FBRSxZQUFZLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxrQkFBZSxFQUFFO2dCQUN4RixLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZ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b0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi90YWJsZS1jb2x1bW4vbW9kZWxzL2NvbHVtbi5pbnRlcmZhY2VcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIEV4cG9ydFV0aWxzLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgQ3VzdG9tQWN0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuXG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcblxudHlwZSBSb3dWYWx1ZUZvcm1hdE9wdGlvbiA9IHtcbiAgICB2YWx1ZT86IG51bWJlcjtcbiAgICBvcHRpb25zPzoge1xuICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zPzogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zO1xuICAgIH07XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLXBhZ2luZy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1wYWdpbmcuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgc2VsZWN0b3I6IFwicy10YWJsZS1wYWdpbmdcIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVQYWdpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvdGFsUmVjb3JkcyE6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGFibGUhOiBUYWJsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cG9ydGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlRXhwb3J0U2VsZWN0ZWRSZWNvcmRzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUFjdGlvbnM/OiBDdXN0b21BY3Rpb25bXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRBbGxSZWNvcmRzPzogKCkgPT4gUHJvbWlzZTxhbnlbXT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkQ3VycmVudFBhZ2VSZWNvcmRzPzogKCkgPT4gYW55W107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkU2VsZWN0ZWRSZWNvcmRzPzogKCkgPT4gYW55W107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzVGV4dDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgaG9zdFByb2plY3RDb25maWdzOiBIb3N0UHJvamVjdENvbmZpZ3NcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRvdGFsUmVjb3Jkcz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9dG90YWxfcmVjb3Jkc2AsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlcy50b3RhbFJlY29yZHMuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0ZVByZWZpeCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaG9zdFByb2plY3RDb25maWdzLmRvbWFpbn0uJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5zZXJ2aWNlfS5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb29sdGlwVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5nZXRUcmFuc2xhdGVQcmVmaXgoKX1leHBvcnRfdG9fY3N2YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZXhwb3J0Q3VycmVudFBhZ2VcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9jdXJyZW50X3BhZ2VgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydEN1cnJlbnRQYWdlKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUV4cG9ydFNlbGVjdGVkUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRTZWxlY3RlZFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9ZXhwb3J0X3NlbGVjdGVkX3JlY29yZHNgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydFNlbGVjdGVkUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2FkQWxsUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRBbGxcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9hbGxfcmVjb3Jkc2ApLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZXhwb3J0QWxsUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXN0b21BY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbU1lbnVzID0gdGhpcy5jdXN0b21BY3Rpb25zLm1hcCgocCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IFwiY3VzdG9tQWN0aW9uX1wiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHAubGFiZWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogcC5jb21tYW5kLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKC4uLmN1c3RvbU1lbnVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFibGUgY29tcG9uZW50IG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbnNUb0V4cG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnRhYmxlLmNvbHVtbnNdLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRDb2x1bW4gPSB7XG4gICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogY29sdW1uLmhlYWRlcixcbiAgICAgICAgICAgICAgICBleHBvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yOiBjb2x1bW4uc2VwYXJhdG9yID8/IFwiIC0gXCIsXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogY29sdW1uLmVudW1QcmVmaXgsXG4gICAgICAgICAgICAgICAgY3VzdG9tRXhwb3J0OiBjb2x1bW4uY3VzdG9tRXhwb3J0LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKGNvbHVtbi5leHBvcnRhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5leHBvcnRhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5maWVsZCA9IGNvbHVtbi5hdHRyaWJ1dGVzWzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydENvbHVtbi5maWVsZCA9IGNvbHVtbi5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydENvbHVtbjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50UGFnZVJvd3NUb0V4cG9ydChjb2x1bW5zOiBhbnlbXSkge1xuICAgICAgICBsZXQgdGFibGVEYXRhID0gZGVlcENsb25lKHRoaXMudGFibGUudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvYWRDdXJyZW50UGFnZVJlY29yZHMpIHtcbiAgICAgICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubG9hZEN1cnJlbnRQYWdlUmVjb3JkcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBDdXN0b21FeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICB0YWJsZURhdGEgPSB0aGlzLm1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnMsIHRhYmxlRGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RlZFJvd3NUb0V4cG9ydChjb2x1bW5zOiBhbnlbXSkge1xuICAgICAgICBsZXQgdGFibGVEYXRhID0gZGVlcENsb25lKHRoaXMudGFibGUuc2VsZWN0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5sb2FkU2VsZWN0ZWRSZWNvcmRzKSB7XG4gICAgICAgICAgICB0YWJsZURhdGEgPSB0aGlzLmxvYWRTZWxlY3RlZFJlY29yZHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQ29sdW1uc1RyYW5zbGF0aW9ucyhjb2x1bW5zLCB0YWJsZURhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvcGVydHlWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlc3VsdFtwcm9wXSksIG9iaik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcm9wZXJ0eVZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yZWN1cnNpb25TZXRWYWx1ZShvYmosIHBhdGguc3BsaXQoXCIuXCIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWN1cnNpb25TZXRWYWx1ZShvYmo6IGFueSwga2V5c0xpc3Q6IHN0cmluZ1tdLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c0xpc3RbMF07XG4gICAgICAgIGlmIChrZXlzTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICAgIG9ialtrZXldID0gdGhpcy5yZWN1cnNpb25TZXRWYWx1ZShvYmo/LltrZXldIHx8IHt9LCBrZXlzTGlzdC5zbGljZSgxKSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnM6IGFueVtdLCByb3dzOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBlbnVtQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChwKSA9PiBwLmVudW1QcmVmaXgpO1xuICAgICAgICBpZiAoIWVudW1Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJvd3NdLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7IC4uLnJvdyB9O1xuICAgICAgICAgICAgZW51bUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gIUFycmF5LmlzQXJyYXkoY29sdW1uLmZpZWxkKSA/IFtjb2x1bW4uZmllbGRdIDogY29sdW1uLmZpZWxkO1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKHJvdywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkRhdGEgPT09IG51bGwgfHwgY29sdW1uRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMudHJhbnNsYXRlVmFsdWUoY29sdW1uLCBjb2x1bW5EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlKG5ld1JvdywgZmllbGROYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gbWFwIHZhbHVlc1xuICAgICAqIGZyb20gdGhlIFRhYmxlQ29sdW1uc0NvbXBvbmVudCwgd2hpY2ggdXNlcyB0aGUgbnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAqIGZpZWxkLCBhbG9uZyB3aXRoIHJvd3MgdGhhdCBoYXZlIGEgY3VzdG9tIG51bWJlckZvcm1hdE9wdGlvbnMsXG4gICAgICogdG8gZW5zdXJlIHRoZSBjb3JyZWN0IHZhbHVlcyBhcmUgZXhwb3J0ZWQgYnkgdGhlIFRhYmxlUGFnaW5nQ29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgY29ycmVjdGx5IG1hcHBlZCB0YWJsZURhdGEuXG4gICAgICovXG4gICAgcHVibGljIG1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoXG4gICAgICAgIGNvbHVtbnM6IFBhcnRpYWw8Q29sdW1uPltdLFxuICAgICAgICB0YWJsZURhdGE6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IFJvd1ZhbHVlRm9ybWF0T3B0aW9uIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVtdXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGhhc051bWJlckZvcm1hdE9wdGlvbnNDb2x1bW5zID0gY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKTtcbiAgICAgICAgY29uc3QgaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MgPSB0YWJsZURhdGEuc29tZSgocm93RGF0YSkgPT5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJvd0RhdGEpLnNvbWUoKGtleSkgPT4gKHJvd0RhdGFba2V5XSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbik/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFoYXNOdW1iZXJGb3JtYXRPcHRpb25zQ29sdW1ucyAmJiAhaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MpIHJldHVybiB0YWJsZURhdGE7XG5cbiAgICAgICAgaWYgKGhhc051bWJlckZvcm1hdE9wdGlvbnNDb2x1bW5zKSB7XG4gICAgICAgICAgICB0YWJsZURhdGEgPSB0YWJsZURhdGEubWFwKChyb3dEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uc1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zID0gY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1uc1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjb2x1bW4uYXR0cmlidXRlcztcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm93RGF0YVthdHRyaWJ1dGUgYXMgc3RyaW5nXSkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJvd0RhdGFbYXR0cmlidXRlIGFzIHN0cmluZ10gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pLm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByb3dEYXRhW2F0dHJpYnV0ZSBhcyBzdHJpbmddIGFzIHN0cmluZyB8IG51bWJlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdE9wdGlvbnMuc3R5bGUgPT09IFwicGVyY2VudFwiID8gbmV3IEJpZ051bWJlcih2YWx1ZSkudGltZXMoMTAwKSA6IG5ldyBCaWdOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKS5sb2NhbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5udW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcImRlY2ltYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VHcm91cGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdNb2RlOiBcInRydW5jXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIGFueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbYXR0cmlidXRlIGFzIHN0cmluZ10gPSBudW1iZXJGb3JtYXQuZm9ybWF0KG1hcHBlZFZhbHVlLnRvTnVtYmVyKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd0RhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNOdW1iZXJGb3JtYXRPcHRpb25zUm93cykge1xuICAgICAgICAgICAgdGFibGVEYXRhID0gdGFibGVEYXRhLm1hcCgocm93RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleXNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucyA9IE9iamVjdC5rZXlzKHJvd0RhdGEpLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGtleSkgPT4gKHJvd0RhdGFba2V5XSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbik/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHJvd0RhdGFba2V5XSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbikudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0T3B0aW9ucyA9IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pLm9wdGlvbnMubnVtYmVyRm9ybWF0T3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IG51bWJlckZvcm1hdE9wdGlvbnMuc3R5bGUgPT09IFwicGVyY2VudFwiID8gbmV3IEJpZ051bWJlcih2YWx1ZSkudGltZXMoMTAwKSA6IG5ldyBCaWdOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckZvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcImRlY2ltYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nTW9kZTogXCJ0cnVuY1wiLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIGFueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFba2V5XSBhcyBzdHJpbmcgfCBudW1iZXIpID0gbnVtYmVyRm9ybWF0LmZvcm1hdChtYXBwZWRWYWx1ZS50b051bWJlcigpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93RGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhYmxlRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnM6IGFueVtdLCByb3dzOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBjdXN0b21Db2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHApID0+IHAuY3VzdG9tRXhwb3J0KTtcbiAgICAgICAgaWYgKCFjdXN0b21Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJvd3NdLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7IC4uLnJvdyB9O1xuICAgICAgICAgICAgY3VzdG9tQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSAhQXJyYXkuaXNBcnJheShjb2x1bW4uZmllbGQpID8gW2NvbHVtbi5maWVsZF0gOiBjb2x1bW4uZmllbGQ7XG4gICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSB0aGlzLmdldFByb3BlcnR5VmFsdWUocm93LCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uRGF0YSA9PT0gbnVsbCB8fCBjb2x1bW5EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvbHVtbi5jdXN0b21FeHBvcnQoY29sdW1uRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJvcGVydHlWYWx1ZShuZXdSb3csIGZpZWxkTmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNsYXRlVmFsdWUoY29sdW1uOiBhbnksIGNvbHVtbkRhdGE6IGFueSkge1xuICAgICAgICAvLyBEZWZhdWx0IHVzYWdlOiBFTlVNX1ZBTFVFIC0+IGRvbWFpbi5zZXJ2aWNlLmVudW1fdmFsdWVcbiAgICAgICAgY29uc3QgZW51bVZhbHVlID0gY29sdW1uRGF0YS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCB0cmFuc2xhdGlvbktleSA9IGNvbHVtbi5lbnVtUHJlZml4ICsgZW51bVZhbHVlO1xuICAgICAgICBsZXQgdHJhbnNsYXRlZFZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0cmFuc2xhdGlvbktleSk7XG5cbiAgICAgICAgLy8gQ3VzdG9tIHVzYWdlIDE6IFY5IC0+IGRvbWFpbi5zZXJ2aWNlLnZfOVxuICAgICAgICBpZiAodHJhbnNsYXRpb25LZXkgPT09IHRyYW5zbGF0ZWRWYWx1ZSAmJiBlbnVtVmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdHJhbnNsYXRpb25LZXkgPSBgJHtjb2x1bW4uZW51bVByZWZpeH0ke2VudW1WYWx1ZS5zdWJzdHJpbmcoMCwgMSl9XyR7ZW51bVZhbHVlLnN1YnN0cigxKX1gO1xuICAgICAgICAgICAgdHJhbnNsYXRlZFZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0cmFuc2xhdGlvbktleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXN0b20gdXNhZ2UgMjogRW51bVZhbHVlIC0+IGRvbWFpbi5zZXJ2aWNlLmVudW1fdmFsdWVcbiAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5ID09PSB0cmFuc2xhdGVkVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudW1LZXkgPSB0aGlzLmNvbnZlcnRUb1NuYWtlQ2FzZShjb2x1bW5EYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgdHJhbnNsYXRpb25LZXkgPSBgJHtjb2x1bW4uZW51bVByZWZpeH0ke2VudW1LZXl9YDtcbiAgICAgICAgICAgIHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb1NuYWtlQ2FzZShzdHI6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgKG1hdGNoLCBncm91cCkgPT4gYF8ke2dyb3VwLnRvTG93ZXJDYXNlKCl9YCkucmVwbGFjZSgvXl8vLCBcIlwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4cG9ydEZpbGVOYW1lKCkge1xuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgPz8gXCJwdC1CUlwiO1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXhwb3J0RmlsZU5hbWUgPz8gXCJkb3dubG9hZFwiO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobGFuZykucmVwbGFjZShcIl9cIiwgXCItXCIpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobGFuZykucmVwbGFjZShcIiBcIiwgXCItXCIpO1xuXG4gICAgICAgIHJldHVybiBgJHtmaWxlTmFtZX1fJHtmb3JtYXR0ZWREYXRlfV8ke2Zvcm1hdHRlZFRpbWV9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0Q3VycmVudFBhZ2UoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnQoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uc1RvRXhwb3J0KCk7XG4gICAgICAgIGNvbnN0IGRhdGFUb0V4cG9ydCA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VSb3dzVG9FeHBvcnQoY29sdW1ucyk7XG4gICAgICAgIEV4cG9ydFV0aWxzLmV4cG9ydENTVihjb2x1bW5zLCBkYXRhVG9FeHBvcnQsIHVuZGVmaW5lZCwgdGhpcy5nZXRFeHBvcnRGaWxlTmFtZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0U2VsZWN0ZWRSZWNvcmRzKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50KCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnNUb0V4cG9ydCgpO1xuICAgICAgICBjb25zdCBkYXRhVG9FeHBvcnQgPSB0aGlzLmdldFNlbGVjdGVkUm93c1RvRXhwb3J0KGNvbHVtbnMpO1xuICAgICAgICBFeHBvcnRVdGlscy5leHBvcnRDU1YoY29sdW1ucywgZGF0YVRvRXhwb3J0LCB1bmRlZmluZWQsIHRoaXMuZ2V0RXhwb3J0RmlsZU5hbWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4cG9ydEFsbFJlY29yZHMoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnQoKTtcblxuICAgICAgICBsZXQgc2VydmVyRGF0YSA9IGF3YWl0IHRoaXMubG9hZEFsbFJlY29yZHMoKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5zVG9FeHBvcnQoKTtcblxuICAgICAgICBzZXJ2ZXJEYXRhID0gdGhpcy5tYXBDdXN0b21FeHBvcnQoY29sdW1ucywgc2VydmVyRGF0YSk7XG5cbiAgICAgICAgc2VydmVyRGF0YSA9IHRoaXMubWFwTnVtYmVyRm9ybWF0T3B0aW9uc0V4cG9ydChjb2x1bW5zLCBzZXJ2ZXJEYXRhKTtcblxuICAgICAgICBjb25zdCBkYXRhVG9FeHBvcnQgPSB0aGlzLm1hcENvbHVtbnNUcmFuc2xhdGlvbnMoY29sdW1ucywgc2VydmVyRGF0YSk7XG5cbiAgICAgICAgRXhwb3J0VXRpbHMuZXhwb3J0Q1NWKGNvbHVtbnMsIGRhdGFUb0V4cG9ydCwgdW5kZWZpbmVkLCB0aGlzLmdldEV4cG9ydEZpbGVOYW1lKCkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -19,7 +19,7 @@ export var getElementPositionInfo = function (element) {
19
19
  elementHeight: elementHeight,
20
20
  elementWidth: elementWidth,
21
21
  elementVerticalCenter: elementVerticalCenter,
22
- elementHorizontalCenter: elementHorizontalCenter
22
+ elementHorizontalCenter: elementHorizontalCenter,
23
23
  };
24
24
  };
25
25
  export var getElementLeftoverContentAvailable = function (element) {
@@ -33,7 +33,12 @@ export var getElementLeftoverContentAvailable = function (element) {
33
33
  freeDistanceToBottom: freeDistanceToBottom,
34
34
  freeDistanceToTop: freeDistanceToTop,
35
35
  freeDistanceToLeft: freeDistanceToLeft,
36
- freeDistanceToRight: freeDistanceToRight
36
+ freeDistanceToRight: freeDistanceToRight,
37
37
  };
38
38
  };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsSUFBTSxpQkFBaUIsR0FBRyxVQUFDLEtBQWMsSUFBSyxPQUFBLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBckMsQ0FBcUMsQ0FBQztBQWtCM0YsTUFBTSxDQUFDLElBQU0sK0JBQStCLEdBQUcsVUFBQyxLQUFnQyxFQUFFLFdBS2pGO0lBQ0csSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixJQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDaEksQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLElBQU0sc0JBQXNCLEdBQUcsVUFBQyxPQUFvQjtJQUN2RCxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUM3QyxJQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0lBQ3ZFLElBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFFekUsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2hDLElBQU0scUJBQXFCLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNoRCxJQUFNLHVCQUF1QixHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakQsT0FBTztRQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVM7UUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVTtRQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsWUFBWTtRQUM1QyxhQUFhLGVBQUE7UUFDYixZQUFZLGNBQUE7UUFDWixxQkFBcUIsdUJBQUE7UUFDckIsdUJBQXVCLHlCQUFBO0tBQzFCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSxrQ0FBa0MsR0FBRyxVQUFDLE9BQW9CO0lBQ25FLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdEMsSUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNsRSxJQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsTUFBTSxDQUFDO0lBQ25GLElBQU0saUJBQWlCLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDO0lBQ3hELElBQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDO0lBQzFELElBQU0sbUJBQW1CLEdBQUcsV0FBVyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztJQUMxRSxPQUFPO1FBQ0gsb0JBQW9CLHNCQUFBO1FBQ3BCLGlCQUFpQixtQkFBQTtRQUNqQixrQkFBa0Isb0JBQUE7UUFDbEIsbUJBQW1CLHFCQUFBO0tBQ3RCLENBQUE7QUFDTCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XHJcbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcclxuICAgIHRvcDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgcmlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRXaWR0aDogbnVtYmVyO1xyXG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XHJcbiAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlcjogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFbGVtZW50TGVmdG92ZXJQb3NpdGlvbiA9IHtcclxuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1RvcDogbnVtYmVyO1xyXG4gICAgZnJlZURpc3RhbmNlVG9MZWZ0OiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50ID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50LCBlbGVtZW50QXJlYToge1xyXG4gICAgdG9wOiBudW1iZXI7XHJcbiAgICByaWdodDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgYm90dG9tOiBudW1iZXI7XHJcbn0pID0+IHtcclxuICAgIGNvbnN0IGV2ZW50WCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgcmV0dXJuIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHwgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8IGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fCBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnRQb3NpdGlvbiA9PiB7XHJcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gd2luZG93LnNjcm9sbFggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gcmVjdC53aWR0aDtcclxuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgZWxlbWVudEhvcml6b250YWxDZW50ZXIgPSBlbGVtZW50V2lkdGggLyAyO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdG9wOiByZWN0LnRvcCArIHNjcm9sbFRvcCxcclxuICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0LFxyXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgICAgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcclxuICAgICAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlclxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xyXG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcclxuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvVG9wID0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC50b3A7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb0xlZnQgPSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmxlZnQ7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0JvdHRvbSxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0xlZnQsXHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9SaWdodFxyXG4gICAgfVxyXG59XHJcbiJdfQ==
39
+ export var deepClone = function (obj) {
40
+ if (typeof structuredClone === "function")
41
+ return structuredClone(obj);
42
+ return JSON.parse(JSON.stringify(obj));
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsSUFBTSxpQkFBaUIsR0FBRyxVQUFDLEtBQWMsSUFBSyxPQUFBLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBckMsQ0FBcUMsQ0FBQztBQWtCM0YsTUFBTSxDQUFDLElBQU0sK0JBQStCLEdBQUcsVUFDM0MsS0FBZ0MsRUFDaEMsV0FLQztJQUVELElBQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDN0IsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixPQUFPLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQ2hJLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFNLHNCQUFzQixHQUFHLFVBQUMsT0FBb0I7SUFDdkQsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDN0MsSUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztJQUN2RSxJQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO0lBRXpFLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbEMsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoQyxJQUFNLHFCQUFxQixHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBTSx1QkFBdUIsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBRWpELE9BQU87UUFDSCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTO1FBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVU7UUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxHQUFHLFlBQVk7UUFDNUMsYUFBYSxlQUFBO1FBQ2IsWUFBWSxjQUFBO1FBQ1oscUJBQXFCLHVCQUFBO1FBQ3JCLHVCQUF1Qix5QkFBQTtLQUMxQixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sa0NBQWtDLEdBQUcsVUFBQyxPQUFvQjtJQUNuRSxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3RDLElBQU0seUJBQXlCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDbEUsSUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztJQUNuRixJQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQztJQUN4RCxJQUFNLGtCQUFrQixHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQztJQUMxRCxJQUFNLG1CQUFtQixHQUFHLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDMUUsT0FBTztRQUNILG9CQUFvQixzQkFBQTtRQUNwQixpQkFBaUIsbUJBQUE7UUFDakIsa0JBQWtCLG9CQUFBO1FBQ2xCLG1CQUFtQixxQkFBQTtLQUN0QixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBT0YsTUFBTSxDQUFDLElBQU0sU0FBUyxHQUFHLFVBQUksR0FBTTtJQUMvQixJQUFJLE9BQU8sZUFBZSxLQUFLLFVBQVU7UUFBRSxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9ICh2YWx1ZTogdW5rbm93bikgPT4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcclxuZXhwb3J0IHR5cGUgRWxlbWVudFBvc2l0aW9uID0ge1xyXG4gICAgdG9wOiBudW1iZXI7XHJcbiAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICByaWdodDogbnVtYmVyO1xyXG4gICAgZWxlbWVudEhlaWdodDogbnVtYmVyO1xyXG4gICAgZWxlbWVudFdpZHRoOiBudW1iZXI7XHJcbiAgICBlbGVtZW50VmVydGljYWxDZW50ZXI6IG51bWJlcjtcclxuICAgIGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyOiBudW1iZXI7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBFbGVtZW50TGVmdG92ZXJQb3NpdGlvbiA9IHtcclxuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1RvcDogbnVtYmVyO1xyXG4gICAgZnJlZURpc3RhbmNlVG9MZWZ0OiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCA9IChcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50LFxyXG4gICAgZWxlbWVudEFyZWE6IHtcclxuICAgICAgICB0b3A6IG51bWJlcjtcclxuICAgICAgICByaWdodDogbnVtYmVyO1xyXG4gICAgICAgIGxlZnQ6IG51bWJlcjtcclxuICAgICAgICBib3R0b206IG51bWJlcjtcclxuICAgIH1cclxuKSA9PiB7XHJcbiAgICBjb25zdCBldmVudFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgZXZlbnRZID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHJldHVybiBldmVudFggPCBlbGVtZW50QXJlYS5sZWZ0IHx8IGV2ZW50WCA+PSBlbGVtZW50QXJlYS5yaWdodCB8fCBldmVudFkgPCBlbGVtZW50QXJlYS50b3AgfHwgZXZlbnRZID49IGVsZW1lbnRBcmVhLmJvdHRvbTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9zaXRpb25JbmZvID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFBvc2l0aW9uID0+IHtcclxuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gd2luZG93LnNjcm9sbFkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgY29uc3QgZWxlbWVudFZlcnRpY2FsQ2VudGVyID0gZWxlbWVudEhlaWdodCAvIDI7XHJcbiAgICBjb25zdCBlbGVtZW50SG9yaXpvbnRhbENlbnRlciA9IGVsZW1lbnRXaWR0aCAvIDI7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0b3A6IHJlY3QudG9wICsgc2Nyb2xsVG9wLFxyXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXHJcbiAgICAgICAgcmlnaHQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQgKyBlbGVtZW50V2lkdGgsXHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgICBlbGVtZW50V2lkdGgsXHJcbiAgICAgICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyLFxyXG4gICAgICAgIGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyLFxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xyXG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcclxuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvVG9wID0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC50b3A7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb0xlZnQgPSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmxlZnQ7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0JvdHRvbSxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0xlZnQsXHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9SaWdodCxcclxuICAgIH07XHJcbn07XHJcblxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vIFRPRE86IFJlbW92ZXIgbm8gYW5ndWxhciAxOCEhISFcclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5kZWNsYXJlIGZ1bmN0aW9uIHN0cnVjdHVyZWRDbG9uZTxUPih2YWx1ZTogVCwgb3B0aW9ucz86IHsgdHJhbnNmZXI/OiBhbnlbXSB9KTogVDtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWVwQ2xvbmUgPSA8VD4ob2JqOiBUKTogVCA9PiB7XHJcbiAgICBpZiAodHlwZW9mIHN0cnVjdHVyZWRDbG9uZSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gc3RydWN0dXJlZENsb25lKG9iaik7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxufTtcclxuIl19
@@ -431,7 +431,7 @@ const getElementPositionInfo = (element) => {
431
431
  elementHeight,
432
432
  elementWidth,
433
433
  elementVerticalCenter,
434
- elementHorizontalCenter
434
+ elementHorizontalCenter,
435
435
  };
436
436
  };
437
437
  const getElementLeftoverContentAvailable = (element) => {
@@ -445,9 +445,14 @@ const getElementLeftoverContentAvailable = (element) => {
445
445
  freeDistanceToBottom,
446
446
  freeDistanceToTop,
447
447
  freeDistanceToLeft,
448
- freeDistanceToRight
448
+ freeDistanceToRight,
449
449
  };
450
450
  };
451
+ const deepClone = (obj) => {
452
+ if (typeof structuredClone === "function")
453
+ return structuredClone(obj);
454
+ return JSON.parse(JSON.stringify(obj));
455
+ };
451
456
 
452
457
  var MobileBehavior;
453
458
  (function (MobileBehavior) {
@@ -9618,11 +9623,11 @@ let TableColumnsComponent = class TableColumnsComponent {
9618
9623
  }
9619
9624
  }
9620
9625
  createColumnsTemplate(changes) {
9621
- var _a, _b, _c;
9626
+ var _a, _b, _c, _d;
9622
9627
  this.viewContainerRef.clear();
9623
9628
  const columns = ((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue) || this.columns;
9624
- const rowValue = ((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) || this.rowValue;
9625
- const locale = ((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue) || this.locale;
9629
+ const rowValue = deepClone((_c = (_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) !== null && _c !== void 0 ? _c : this.rowValue);
9630
+ const locale = ((_d = changes.locale) === null || _d === void 0 ? void 0 : _d.currentValue) || this.locale;
9626
9631
  this.formattedColumns = columns.map((column) => this.getColumnValue(column, rowValue, locale));
9627
9632
  this.cellsData = this.formattedColumns.map((column) => this.getCellData(column));
9628
9633
  this.viewContainerRef.createEmbeddedView(this.columnsTemplate);
@@ -9752,14 +9757,14 @@ let TableColumnsComponent = class TableColumnsComponent {
9752
9757
  }
9753
9758
  getColumnScale(scale) {
9754
9759
  if (typeof scale === "function") {
9755
- return scale(this.rowValue);
9760
+ return scale(deepClone(this.rowValue));
9756
9761
  }
9757
9762
  return scale;
9758
9763
  }
9759
9764
  getColumnInfoSign(infoSign) {
9760
9765
  if (infoSign !== undefined && infoSign !== null) {
9761
9766
  if (typeof infoSign === "function") {
9762
- return infoSign(this.rowValue);
9767
+ return infoSign(deepClone(this.rowValue));
9763
9768
  }
9764
9769
  return infoSign;
9765
9770
  }
@@ -9768,7 +9773,7 @@ let TableColumnsComponent = class TableColumnsComponent {
9768
9773
  getColumnTooltip(tooltip) {
9769
9774
  if (tooltip !== undefined && tooltip !== null) {
9770
9775
  if (typeof tooltip === "function") {
9771
- return tooltip(this.rowValue);
9776
+ return tooltip(deepClone(this.rowValue));
9772
9777
  }
9773
9778
  return tooltip;
9774
9779
  }
@@ -9976,7 +9981,7 @@ let TablePagingComponent = class TablePagingComponent {
9976
9981
  });
9977
9982
  }
9978
9983
  getCurrentPageRowsToExport(columns) {
9979
- let tableData = this.table.value;
9984
+ let tableData = deepClone(this.table.value);
9980
9985
  if (this.loadCurrentPageRecords) {
9981
9986
  tableData = this.loadCurrentPageRecords();
9982
9987
  }
@@ -9985,7 +9990,7 @@ let TablePagingComponent = class TablePagingComponent {
9985
9990
  return this.mapColumnsTranslations(columns, tableData);
9986
9991
  }
9987
9992
  getSelectedRowsToExport(columns) {
9988
- let tableData = this.table.selection;
9993
+ let tableData = deepClone(this.table.selection);
9989
9994
  if (this.loadSelectedRecords) {
9990
9995
  tableData = this.loadSelectedRecords();
9991
9996
  }
@@ -22408,5 +22413,5 @@ const fallback = {
22408
22413
  * Generated bundle index. Do not edit.
22409
22414
  */
22410
22415
 
22411
- export { AccessibilityEventDirective, AccessibilityEventsModule, AccordionComponent, AccordionModule, AccordionPanelComponent, AlertComponent, AlertModule, AngularComponentsModule, AutocompleteField, BadgeColors, BadgeComponent, BadgeModule, BaseFieldComponent, BignumberField, BignumberInputDirective, BignumberInputModule, BooleanField, BooleanOptionsLabel, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ButtonAnimation, ButtonComponent, ButtonField, ButtonModule, ButtonPriority, ButtonSize, CalendarField, CalendarLocaleOptions, CalendarMaskDirective, CalendarMaskModule, CardComponent, CardModule, CardTemplateTypes, ChatComponent, ChatModule, CheckDisabled, CheckboxComponent, CheckboxModule, ChipsComponent, ChipsField, ChipsModule, CodeEditorModule, CollapseLinkComponent, CollapseLinkModule, ControlErrorsComponent, ControlErrorsModule, CountryPhonePickerComponent, CountryPhonePickerModule, CurrencyField, CurrencyService, CustomFieldsComponent, CustomFieldsModule, CustomFieldsService, DEFAULT_CALENDAR_LOCALE_OPTIONS, DEFAULT_LOCALE_OPTIONS, DEFAULT_NUMBER_LOCALE_OPTIONS, DebounceUtils, DoubleClickDirective, DynamicConfig, DynamicFormComponent, DynamicFormModule, DynamicType, EditableOverlayDirective, EditableOverlayModule, EmptyStateComponent, EmptyStateModule, EnumBadgeColors, EnumColumnFieldType, EnumSeverity, ExportUtils, Field, FieldType, Fieldset, FieldsetComponent$1 as FieldsetComponent, FieldsetModule, FileUploadComponent, FileUploadModule, FileUploadPermissions, FileValidation, FooterComponent, FormField, GanttComponent, GanttModule, GlobalSearchComponent, GlobalSearchDropdownItemComponent, GlobalSearchModule, GlobalSearchSizeEnum, Grid, GridMenuComponent, GridMenuModule, GridType, HeaderComponent, HelpPopoverComponent, HelpPopoverDirective, HelpPopoverModule, HostProjectConfigsInjectionToken, IAInsightComponent, IAInsightModule, IAInsightTemplateTypes, ImageCropperComponent, ImageCropperModule, ImageCropperService, InfoSignDirective, InfoSignModule, InlineEditCalendarField, InlineEditComponent, InlineEditField, InlineEditLookupField, InlineEditModule, InlineEditNumberField, InlineEditTextAreaField, InlineEditTextAreaIAField, InlineEditTextField, KanbanComponent, KanbanModule, KanbanTemplateTypes, LabelValueComponent, LabelValueModule, Languages, LoadingStateComponent, LoadingStateDirective, LoadingStateModule, LocaleModule, LocaleOptions, LocaleService, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberInputDirective, LocalizedNumberInputModule, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, LongPressDirective, LookupComponent, LookupField, MaskFormatterModule, MaskFormatterPipe, MouseEventsModule, NavigationButtonComponent, NavigationButtonModule, NavigationDirective, NumberAlignmentOption, NumberField, NumberInputDirective, NumberInputModule, NumberLocaleOptions, NumericService, ObjectCardComponent, ObjectCardFieldComponent, ObjectCardMainComponent, ObjectCardModule, Option, Ordination, PanelComponent, PanelModule, PasswordField, PasswordStrengthComponent, PasswordStrengthDirective, PasswordStrengthModule, PasswordStrengthPositions, PasswordStrengths, PicklistComponent, PicklistModule, PicklistTemplateTypes, ProductHeaderComponent, ProductHeaderModule, ProfilePicturePickerComponent, ProfilePicturePickerModule, ProgressBarColors, ProgressBarComponent, ProgressBarModule, RadioButtonField, RatingScaleComponent, RatingScaleModule, RationButtonOption, Row, RowTogllerDirective, SVGFactoryDirective, SVGFactoryModule, Section, SelectButtonComponent, SelectButtonModule, SelectField, SelectOption, SidebarComponent, SidebarModule, SlidePanelComponent, SlidePanelModule, SliderComponent, SliderModule, SplitButtonComponent, SplitButtonModule, SplitButtonType, StatsCardComponent, StatsCardModule, StepState, StepsComponent, StepsModule, Structure, StructureModule, StructureType, SwitchComponent, SwitchModule, TableFrozenPositionDirective, TableHeaderCheckboxComponent, TableHeaderCheckboxModule, TableModule, TaxCalculationLanguageConfigs, TemplateDirective, TemplateModule, TextAreaComponent, TextAreaField, TextAreaIAComponent, TextAreaIAModule, TextAreaModule, TextField, Themes, ThumbnailComponent, ThumbnailModule, ThumbnailSize, ThumbnailsComponent, ThumbnailsModule, TieredMenuDirective, TieredMenuModule, TileComponent, TileModule, TimelineComponent, TimelineItem, TimelineItemSeverity, TimelineItemSize, TimelineModule, ToastComponent, ToastModule, ToastService, TokenListComponent, TokenListModule, TooltipModule, TooltipPosition, TreeComponent, TreeModule, ValidateErrors, ViewMode, WorkspaceSwitchComponent, WorkspaceSwitchModule, convertToMomentDateFormat, countries, fallback, getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement, isNullOrUndefined, parseItensPickList, ɵ0$3 as ɵ0, ɵ1$2 as ɵ1, ɵ2$1 as ɵ2, ɵ3$1 as ɵ3, ɵ4, TooltipComponent as ɵa, TooltipDirective as ɵb, TableColumnsComponent as ɵba, TablePagingComponent as ɵbb, PasswordFieldModule as ɵbc, FieldLabelModule as ɵbd, FieldLabelComponent as ɵbe, PasswordFieldComponent as ɵbf, TextFieldModule as ɵbg, TextFieldComponent as ɵbh, NumberFieldModule as ɵbi, NumberFieldComponent as ɵbj, CurrencyFieldModule as ɵbk, CurrencyFieldComponent as ɵbl, BignumberFieldModule as ɵbm, BignumberFieldComponent as ɵbn, CheckboxFieldModule as ɵbo, CheckboxFieldComponent as ɵbp, ProfilePictureModule as ɵbq, ThumbnailService as ɵbr, ProfilePictureFieldComponent as ɵbs, EditorFieldModule as ɵbt, EditorFieldComponent as ɵbu, SpeechRecognitionModule as ɵbv, SpeechRecognitionComponent as ɵbw, SpeechRecognitionService as ɵbx, TextToSpeechService as ɵby, AutocompleteFieldComponent as ɵbz, InfoSignComponent as ɵc, BooleanFieldComponent as ɵca, BooleanSwitchFieldComponent as ɵcb, CalendarFieldComponent as ɵcc, ChipsFieldComponent as ɵcd, CountryPhonePickerFieldComponent as ɵce, DynamicFieldComponent as ɵcf, DynamicFormDirective as ɵcg, FieldsetComponent as ɵch, FileUploadComponent$1 as ɵci, LookupFieldComponent as ɵcj, RadioButtonComponent as ɵck, RowComponent as ɵcl, SectionComponent as ɵcm, SelectFieldComponent as ɵcn, SliderFieldComponent as ɵco, TextAreaFieldComponent as ɵcp, TextAreaIAFieldComponent as ɵcq, IAssistService as ɵcr, ButtonFieldComponent as ɵcs, DecimalField as ɵcu, SideTableComponent as ɵcv, InfiniteScrollModule as ɵcw, InfiniteScrollDirective as ɵcx, IAInsightSidebarComponent as ɵcy, IAInsightCardComponent as ɵcz, TieredMenuEventService as ɵd, IAInsightCardLoaderComponent as ɵda, GridMenuItemComponent as ɵdb, InlineEditItemComponent as ɵdc, InlineEditCalendarComponent as ɵdd, InlineEditLookupComponent as ɵde, InlineEditNumberComponent as ɵdf, InlineEditTextComponent as ɵdg, InlineEditTextAreaComponent as ɵdh, InlineEditTextAreaIAComponent as ɵdi, KanbanEventService as ɵdj, KanbanItemComponent as ɵdk, KanbanColumnComponent as ɵdl, KanbanItemDraggingComponent as ɵdm, NumberLocaleOptions as ɵdn, BorderButtonModule as ɵdo, BorderButtonComponent as ɵdp, ProgressBarDeterminateComponent as ɵdq, ProgressBarIndeterminateComponent as ɵdr, SelectButtonItemComponent as ɵds, SlidePanelService as ɵdt, ThumbnailItemComponent as ɵdu, ThumbnailItemVideoComponent as ɵdv, ThumbnailItemImageComponent as ɵdw, TimelineItemModule as ɵdx, TimelineIconItemComponent as ɵdy, HorizontalTimelineModule as ɵdz, TieredMenuService as ɵe, HorizontalTimelineComponent as ɵea, VerticalTimelineModule as ɵeb, VerticalTimelineComponent as ɵec, RangeLineComponent as ɵed, CollapseOptionComponent as ɵee, CollapsedItemsComponent as ɵef, VerticalItemsComponent as ɵeg, ChipItemComponent as ɵeh, TreeNodeItemComponent as ɵei, TieredMenuGlobalService as ɵf, TieredMenuComponent as ɵg, TieredMenuNestedComponent as ɵh, TieredMenuItemComponent as ɵi, TieredMenuDividerComponent as ɵj, LocalizedCurrencyImpurePipe as ɵk, LocalizedBignumberPipe as ɵl, LocalizedBignumberImpurePipe as ɵm, NumericPipe as ɵn, ChatMessageComponent as ɵo, CustomTranslationsModule as ɵp, CodeEditorComponent as ɵq, CoreFacade as ɵr, CodeMirror6Core as ɵs, CountryPhonePickerService as ɵt, EmptyStateGoBackComponent as ɵu, IAssistIconComponent as ɵv, SeniorIconComponent as ɵw, DotsIndicatorComponent as ɵx, LoadingIndicatorComponent as ɵy, FileUploadService as ɵz };
22416
+ export { AccessibilityEventDirective, AccessibilityEventsModule, AccordionComponent, AccordionModule, AccordionPanelComponent, AlertComponent, AlertModule, AngularComponentsModule, AutocompleteField, BadgeColors, BadgeComponent, BadgeModule, BaseFieldComponent, BignumberField, BignumberInputDirective, BignumberInputModule, BooleanField, BooleanOptionsLabel, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ButtonAnimation, ButtonComponent, ButtonField, ButtonModule, ButtonPriority, ButtonSize, CalendarField, CalendarLocaleOptions, CalendarMaskDirective, CalendarMaskModule, CardComponent, CardModule, CardTemplateTypes, ChatComponent, ChatModule, CheckDisabled, CheckboxComponent, CheckboxModule, ChipsComponent, ChipsField, ChipsModule, CodeEditorModule, CollapseLinkComponent, CollapseLinkModule, ControlErrorsComponent, ControlErrorsModule, CountryPhonePickerComponent, CountryPhonePickerModule, CurrencyField, CurrencyService, CustomFieldsComponent, CustomFieldsModule, CustomFieldsService, DEFAULT_CALENDAR_LOCALE_OPTIONS, DEFAULT_LOCALE_OPTIONS, DEFAULT_NUMBER_LOCALE_OPTIONS, DebounceUtils, DoubleClickDirective, DynamicConfig, DynamicFormComponent, DynamicFormModule, DynamicType, EditableOverlayDirective, EditableOverlayModule, EmptyStateComponent, EmptyStateModule, EnumBadgeColors, EnumColumnFieldType, EnumSeverity, ExportUtils, Field, FieldType, Fieldset, FieldsetComponent$1 as FieldsetComponent, FieldsetModule, FileUploadComponent, FileUploadModule, FileUploadPermissions, FileValidation, FooterComponent, FormField, GanttComponent, GanttModule, GlobalSearchComponent, GlobalSearchDropdownItemComponent, GlobalSearchModule, GlobalSearchSizeEnum, Grid, GridMenuComponent, GridMenuModule, GridType, HeaderComponent, HelpPopoverComponent, HelpPopoverDirective, HelpPopoverModule, HostProjectConfigsInjectionToken, IAInsightComponent, IAInsightModule, IAInsightTemplateTypes, ImageCropperComponent, ImageCropperModule, ImageCropperService, InfoSignDirective, InfoSignModule, InlineEditCalendarField, InlineEditComponent, InlineEditField, InlineEditLookupField, InlineEditModule, InlineEditNumberField, InlineEditTextAreaField, InlineEditTextAreaIAField, InlineEditTextField, KanbanComponent, KanbanModule, KanbanTemplateTypes, LabelValueComponent, LabelValueModule, Languages, LoadingStateComponent, LoadingStateDirective, LoadingStateModule, LocaleModule, LocaleOptions, LocaleService, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberInputDirective, LocalizedNumberInputModule, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, LongPressDirective, LookupComponent, LookupField, MaskFormatterModule, MaskFormatterPipe, MouseEventsModule, NavigationButtonComponent, NavigationButtonModule, NavigationDirective, NumberAlignmentOption, NumberField, NumberInputDirective, NumberInputModule, NumberLocaleOptions, NumericService, ObjectCardComponent, ObjectCardFieldComponent, ObjectCardMainComponent, ObjectCardModule, Option, Ordination, PanelComponent, PanelModule, PasswordField, PasswordStrengthComponent, PasswordStrengthDirective, PasswordStrengthModule, PasswordStrengthPositions, PasswordStrengths, PicklistComponent, PicklistModule, PicklistTemplateTypes, ProductHeaderComponent, ProductHeaderModule, ProfilePicturePickerComponent, ProfilePicturePickerModule, ProgressBarColors, ProgressBarComponent, ProgressBarModule, RadioButtonField, RatingScaleComponent, RatingScaleModule, RationButtonOption, Row, RowTogllerDirective, SVGFactoryDirective, SVGFactoryModule, Section, SelectButtonComponent, SelectButtonModule, SelectField, SelectOption, SidebarComponent, SidebarModule, SlidePanelComponent, SlidePanelModule, SliderComponent, SliderModule, SplitButtonComponent, SplitButtonModule, SplitButtonType, StatsCardComponent, StatsCardModule, StepState, StepsComponent, StepsModule, Structure, StructureModule, StructureType, SwitchComponent, SwitchModule, TableFrozenPositionDirective, TableHeaderCheckboxComponent, TableHeaderCheckboxModule, TableModule, TaxCalculationLanguageConfigs, TemplateDirective, TemplateModule, TextAreaComponent, TextAreaField, TextAreaIAComponent, TextAreaIAModule, TextAreaModule, TextField, Themes, ThumbnailComponent, ThumbnailModule, ThumbnailSize, ThumbnailsComponent, ThumbnailsModule, TieredMenuDirective, TieredMenuModule, TileComponent, TileModule, TimelineComponent, TimelineItem, TimelineItemSeverity, TimelineItemSize, TimelineModule, ToastComponent, ToastModule, ToastService, TokenListComponent, TokenListModule, TooltipModule, TooltipPosition, TreeComponent, TreeModule, ValidateErrors, ViewMode, WorkspaceSwitchComponent, WorkspaceSwitchModule, convertToMomentDateFormat, countries, deepClone, fallback, getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement, isNullOrUndefined, parseItensPickList, ɵ0$3 as ɵ0, ɵ1$2 as ɵ1, ɵ2$1 as ɵ2, ɵ3$1 as ɵ3, ɵ4, TooltipComponent as ɵa, TooltipDirective as ɵb, TableColumnsComponent as ɵba, TablePagingComponent as ɵbb, PasswordFieldModule as ɵbc, FieldLabelModule as ɵbd, FieldLabelComponent as ɵbe, PasswordFieldComponent as ɵbf, TextFieldModule as ɵbg, TextFieldComponent as ɵbh, NumberFieldModule as ɵbi, NumberFieldComponent as ɵbj, CurrencyFieldModule as ɵbk, CurrencyFieldComponent as ɵbl, BignumberFieldModule as ɵbm, BignumberFieldComponent as ɵbn, CheckboxFieldModule as ɵbo, CheckboxFieldComponent as ɵbp, ProfilePictureModule as ɵbq, ThumbnailService as ɵbr, ProfilePictureFieldComponent as ɵbs, EditorFieldModule as ɵbt, EditorFieldComponent as ɵbu, SpeechRecognitionModule as ɵbv, SpeechRecognitionComponent as ɵbw, SpeechRecognitionService as ɵbx, TextToSpeechService as ɵby, AutocompleteFieldComponent as ɵbz, InfoSignComponent as ɵc, BooleanFieldComponent as ɵca, BooleanSwitchFieldComponent as ɵcb, CalendarFieldComponent as ɵcc, ChipsFieldComponent as ɵcd, CountryPhonePickerFieldComponent as ɵce, DynamicFieldComponent as ɵcf, DynamicFormDirective as ɵcg, FieldsetComponent as ɵch, FileUploadComponent$1 as ɵci, LookupFieldComponent as ɵcj, RadioButtonComponent as ɵck, RowComponent as ɵcl, SectionComponent as ɵcm, SelectFieldComponent as ɵcn, SliderFieldComponent as ɵco, TextAreaFieldComponent as ɵcp, TextAreaIAFieldComponent as ɵcq, IAssistService as ɵcr, ButtonFieldComponent as ɵcs, DecimalField as ɵcu, SideTableComponent as ɵcv, InfiniteScrollModule as ɵcw, InfiniteScrollDirective as ɵcx, IAInsightSidebarComponent as ɵcy, IAInsightCardComponent as ɵcz, TieredMenuEventService as ɵd, IAInsightCardLoaderComponent as ɵda, GridMenuItemComponent as ɵdb, InlineEditItemComponent as ɵdc, InlineEditCalendarComponent as ɵdd, InlineEditLookupComponent as ɵde, InlineEditNumberComponent as ɵdf, InlineEditTextComponent as ɵdg, InlineEditTextAreaComponent as ɵdh, InlineEditTextAreaIAComponent as ɵdi, KanbanEventService as ɵdj, KanbanItemComponent as ɵdk, KanbanColumnComponent as ɵdl, KanbanItemDraggingComponent as ɵdm, NumberLocaleOptions as ɵdn, BorderButtonModule as ɵdo, BorderButtonComponent as ɵdp, ProgressBarDeterminateComponent as ɵdq, ProgressBarIndeterminateComponent as ɵdr, SelectButtonItemComponent as ɵds, SlidePanelService as ɵdt, ThumbnailItemComponent as ɵdu, ThumbnailItemVideoComponent as ɵdv, ThumbnailItemImageComponent as ɵdw, TimelineItemModule as ɵdx, TimelineIconItemComponent as ɵdy, HorizontalTimelineModule as ɵdz, TieredMenuService as ɵe, HorizontalTimelineComponent as ɵea, VerticalTimelineModule as ɵeb, VerticalTimelineComponent as ɵec, RangeLineComponent as ɵed, CollapseOptionComponent as ɵee, CollapsedItemsComponent as ɵef, VerticalItemsComponent as ɵeg, ChipItemComponent as ɵeh, TreeNodeItemComponent as ɵei, TieredMenuGlobalService as ɵf, TieredMenuComponent as ɵg, TieredMenuNestedComponent as ɵh, TieredMenuItemComponent as ɵi, TieredMenuDividerComponent as ɵj, LocalizedCurrencyImpurePipe as ɵk, LocalizedBignumberPipe as ɵl, LocalizedBignumberImpurePipe as ɵm, NumericPipe as ɵn, ChatMessageComponent as ɵo, CustomTranslationsModule as ɵp, CodeEditorComponent as ɵq, CoreFacade as ɵr, CodeMirror6Core as ɵs, CountryPhonePickerService as ɵt, EmptyStateGoBackComponent as ɵu, IAssistIconComponent as ɵv, SeniorIconComponent as ɵw, DotsIndicatorComponent as ɵx, LoadingIndicatorComponent as ɵy, FileUploadService as ɵz };
22412
22417
  //# sourceMappingURL=seniorsistemas-angular-components.js.map