@seniorsistemas/angular-components 17.18.1 → 17.18.3

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.
@@ -30,14 +30,7 @@ export declare class TablePagingComponent implements OnChanges {
30
30
  getTooltipText(): any;
31
31
  getActions(): MenuItem[];
32
32
  private validateComponent;
33
- getColumnsToExport(): {
34
- header: any;
35
- exportable: boolean;
36
- field: any;
37
- separator: any;
38
- enumPrefix: any;
39
- customExport: any;
40
- }[];
33
+ getColumnsToExport(): any[];
41
34
  private getCurrentPageRowsToExport;
42
35
  private getSelectedRowsToExport;
43
36
  private getPropertyValue;
@@ -71,8 +71,7 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
71
71
  const originalsTds = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
72
72
  tdsToAdjust.forEach((td, index) => {
73
73
  const originalTd = originalsTds[index];
74
- const height = originalTd.getBoundingClientRect().height;
75
- td.innerHTML = `<div style="height: ${height}px"></div>`;
74
+ td.innerHTML = null;
76
75
  td.style.padding = "0px";
77
76
  this.rowExpandedObserver.observe(originalTd);
78
77
  });
@@ -111,7 +110,7 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
111
110
  const frozenHeight = frozenTd.getBoundingClientRect().height;
112
111
  if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
113
112
  frozenTd.style.height = `${unfrozenHeight}px`;
114
- frozenTd.innerHTML = `<div></div>`;
113
+ frozenTd.innerHTML = null;
115
114
  }
116
115
  });
117
116
  }
@@ -201,4 +200,4 @@ TableFrozenPositionDirective = __decorate([
201
200
  })
202
201
  ], TableFrozenPositionDirective);
203
202
  export { TableFrozenPositionDirective };
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QyxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQXVCckMsWUFBb0IsRUFBYyxFQUFFLElBQVc7UUFBM0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXJCbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDO1FBV3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSS9CLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXhDLG1DQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRzdFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFE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R0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1NBQ0o7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQWE7UUFDakMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUMxQixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFBOztZQTVNMkIsVUFBVTtZQUFRLEtBQUs7O0FBckIvQztJQURDLEtBQUssRUFBRTswRUFDc0I7QUFHOUI7SUFEQyxLQUFLLEVBQUU7cUVBTVA7QUFWUSw0QkFBNEI7SUFIeEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHdCQUF3QjtLQUNyQyxDQUFDO0dBQ1csNEJBQTRCLENBbU94QztTQW5PWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVGFibGVGcm96ZW5Qb3NpdGlvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUZyb3plblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICBASW5wdXQoKVxuICAgIHNUYWJsZUZyb3plblBvc2l0aW9uID0gXCJsZWZ0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzVGFibGVGcm96ZW5WYWx1ZShfOiBhbnlbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGU6IFRhYmxlO1xuICAgIHByaXZhdGUgaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcblxuICAgIHRhYmxlSGVhZE9ic2VydmFibGU6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcm93RXhwYW5kZWRPYnNlcnZlcjogYW55O1xuICAgIG9uQ29sdW1uc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSB0YWJsZVdyYXBwZXJPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgVEFCTEVfU0NST0xMQUJMRV9XUkFQUEVSX0NMQVNTID0gXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlID0gaG9zdDtcbiAgICAgICAgdGhpcy50YWJsZS5zdHlsZUNsYXNzID0gKHRoaXMudGFibGUuc3R5bGVDbGFzcyB8fCBcIlwiKSArIFwiIHMtdGFibGUtZnJvemVuLXBvc2l0aW9uXCI7XG4gICAgICAgIHRoaXMuc2V0VXBUYWJsZUV2ZW50cygpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGh0bWxIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXG4gICAgICAgIGNvbnN0IGV4cGFuZEZyb3plblN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBleHBhbmRGcm96ZW5TdHlsZS5pbm5lckhUTUwgPSBcIi5zLXRhYmxlLWZyb3plbi1wb3NpdGlvbiAudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZCB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVwiO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChleHBhbmRGcm96ZW5TdHlsZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0VXBDb2x1bW5Nb25pdG9yaW5nKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNUYWJsZVZpc2libGUgJiYgISF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUYWJsZVZpc2libGUgJiYgIXRoaXMudGFibGUuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwVGFibGVFdmVudHMoKSB7XG4gICAgICAgIHRoaXMudGFibGUub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29sUmVzaXplKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudGFibGUub25Sb3dFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHZlcnNpb24gb2YgQW5ndWxhci9UeXBlc2NyaXB0IGRvZXMgbm90IHJlY29nbml6ZSB0aGUgb2JqZWN0IFJlc2l6ZU9ic2VydmVyIGFuZCBicmVha3MgYnVpbGRcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyID0gbmV3ICh3aW5kb3cgYXMgYW55KS5SZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5SGVpZ2h0Rm9yRXhwYW5kZWRSb3dzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGRzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxzVGRzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtdW5mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgdGRzVG9BZGp1c3QuZm9yRWFjaCgodGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZDogSFRNTEVsZW1lbnQgPSBvcmlnaW5hbHNUZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9yaWdpbmFsVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRkLmlubmVySFRNTCA9IGA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAke2hlaWdodH1weFwiPjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgdGQuc3R5bGUucGFkZGluZyA9IFwiMHB4XCI7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIub2JzZXJ2ZShvcmlnaW5hbFRkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwQ29sdW1uTW9uaXRvcmluZygpIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpXTtcbiAgICAgICAgdGFibGVIZWFkcy5mb3JFYWNoKCh0YWJsZUhlYWQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5vYnNlcnZlKHRhYmxlSGVhZCwge1xuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGFibGVXcmFwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICh0YWJsZVdyYXBlcikge1xuICAgICAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFibGVXcmFwZXIsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMudGFibGVXcmFwcGVyT2JzZXJ2ZXIgPSBtdXRhdGlvbk9ic2VydmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpIHtcbiAgICAgICAgY29uc3QgZnJvemVuVERzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICBjb25zdCB1bkZyb3plblREcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgZnJvemVuVERzVG9BZGp1c3QuZm9yRWFjaCgoZnJvemVuVGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plblREOiBIVE1MRWxlbWVudCA9IHVuRnJvemVuVERzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHVuZnJvemVuSGVpZ2h0ID0gdW5mcm96ZW5URC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBmcm96ZW5IZWlnaHQgPSBmcm96ZW5UZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModW5mcm96ZW5IZWlnaHQgLSBmcm96ZW5IZWlnaHQpID4gMSkge1xuICAgICAgICAgICAgICAgIGZyb3plblRkLnN0eWxlLmhlaWdodCA9IGAke3VuZnJvemVuSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICBmcm96ZW5UZC5pbm5lckhUTUwgPSBgPGRpdj48L2Rpdj5gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5U3R5bGVzRm9yVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFdyYXBwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICghc2Nyb2xsV3JhcHBlcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgc2Nyb2xsLXdyYXBwZXIgZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCI7XG5cbiAgICAgICAgY29uc3QgZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS1mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCFmcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLm9yZGVyID0gXCIxXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlclJpZ2h0ID0gXCJub25lXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlckxlZnQgPSBcIjFweCBzb2xpZCAjZGRkZGRkXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJveFNoYWRvdyA9IFwiLTVweCAwIDVweCAtNXB4ICNjY2NjY2NcIjtcblxuICAgICAgICBjb25zdCB1bmZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtdW5mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCF1bmZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCB1bmZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1bmZyb3plblRhYmxlLnN0eWxlLnBvc2l0aW9uID0gXCJ1bnNldFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDb2xSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNocm9uaXplUm93SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHlXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1ib2R5XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUJvZGllcyA9IFsuLi50YWJsZUJvZHlXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMuX3Jlc2V0Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLl9yZXNldFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVIZWFkcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXhSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRhYmxlcyB8fCAhdGFibGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGVuZ3RocyA9IHRhYmxlcy5tYXAodGFibGUgPT4gdGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5tYXgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuICAgICAgICBjb25zdCBtaW5MZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5taW4oYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuXG4gICAgICAgIGlmIChtYXhMZW5ndGggIT09IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG51bWJlciBvZiByb3dzIGluIGJvdGggdGFibGVzIG11c3QgYmUgdGhlIHNhbWVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWJsZSA9IHRhYmxlc1swXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0cnMucHVzaCh0YWJsZS5yb3dzW2ldIGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYXggPSB0cnMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgIE1hdGgubWF4KGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSwgdHJzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdHIgb2YgdHJzKSB7XG4gICAgICAgICAgICAgICAgdHIuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2V0Um93SGVpZ2h0KHRhYmxlczogYW55W10pIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRhYmxlLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3cuc3R5bGUuaGVpZ2h0ID0gXCJ1bnNldFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QyxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQXVCckMsWUFBb0IsRUFBYyxFQUFFLElBQVc7UUFBM0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXJCbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDO1FBV3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSS9CLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXhDLG1DQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRzdFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFE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LEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDMUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUE1TTJCLFVBQVU7WUFBUSxLQUFLOztBQXJCL0M7SUFEQyxLQUFLLEVBQUU7MEVBQ3NCO0FBRzlCO0lBREMsS0FBSyxFQUFFO3FFQU1QO0FBVlEsNEJBQTRCO0lBSHhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx3QkFBd0I7S0FDckMsQ0FBQztHQUNXLDRCQUE0QixDQW1PeEM7U0FuT1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbc1RhYmxlRnJvemVuUG9zaXRpb25dXCJcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVGcm96ZW5Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gICAgQElucHV0KClcbiAgICBzVGFibGVGcm96ZW5Qb3NpdGlvbiA9IFwibGVmdFwiO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc1RhYmxlRnJvemVuVmFsdWUoXzogYW55W10pIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgICAgICB0aGlzLnNldFVwUm93UmVzaXplTW9uaXRvcmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhYmxlOiBUYWJsZTtcbiAgICBwcml2YXRlIGlzVGFibGVWaXNpYmxlID0gZmFsc2U7XG5cbiAgICB0YWJsZUhlYWRPYnNlcnZhYmxlOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIHJvd0V4cGFuZGVkT2JzZXJ2ZXI6IGFueTtcbiAgICBvbkNvbHVtbnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgdGFibGVXcmFwcGVyT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyA9IFwiLnVpLXRhYmxlLXNjcm9sbGFibGUtd3JhcHBlclwiO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgaG9zdDogVGFibGUpIHtcbiAgICAgICAgdGhpcy50YWJsZSA9IGhvc3Q7XG4gICAgICAgIHRoaXMudGFibGUuc3R5bGVDbGFzcyA9ICh0aGlzLnRhYmxlLnN0eWxlQ2xhc3MgfHwgXCJcIikgKyBcIiBzLXRhYmxlLWZyb3plbi1wb3NpdGlvblwiO1xuICAgICAgICB0aGlzLnNldFVwVGFibGVFdmVudHMoKTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICBjb25zdCBodG1sSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcblxuICAgICAgICBjb25zdCBleHBhbmRGcm96ZW5TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgZXhwYW5kRnJvemVuU3R5bGUuaW5uZXJIVE1MID0gXCIucy10YWJsZS1mcm96ZW4tcG9zaXRpb24gLnVpLXRhYmxlLWZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGQgeyB2aXNpYmlsaXR5OiBoaWRkZW47IH1cIjtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQoZXhwYW5kRnJvemVuU3R5bGUpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc1RhYmxlRnJvemVuUG9zaXRpb24gPT09IFwibGVmdFwiKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZXNGb3JUYWJsZSgpO1xuICAgICAgICB0aGlzLnNldFVwQ29sdW1uTW9uaXRvcmluZygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFibGVWaXNpYmxlICYmICEhdGhpcy50YWJsZS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc1RhYmxlVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVGFibGVWaXNpYmxlICYmICF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVXcmFwcGVyT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVXcmFwcGVyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFRhYmxlRXZlbnRzKCkge1xuICAgICAgICB0aGlzLnRhYmxlLm9uQ29sUmVzaXplLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbFJlc2l6ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRhYmxlLm9uUm93RXhwYW5kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFVwUm93UmVzaXplTW9uaXRvcmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwUm93UmVzaXplTW9uaXRvcmluZygpIHtcbiAgICAgICAgaWYgKHRoaXMucm93RXhwYW5kZWRPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXIvVHlwZXNjcmlwdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIG9iamVjdCBSZXNpemVPYnNlcnZlciBhbmQgYnJlYWtzIGJ1aWxkXG4gICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRkc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsc1RkcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIHRkc1RvQWRqdXN0LmZvckVhY2goKHRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGQ6IEhUTUxFbGVtZW50ID0gb3JpZ2luYWxzVGRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRkLnN0eWxlLnBhZGRpbmcgPSBcIjBweFwiO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLm9ic2VydmUob3JpZ2luYWxUZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENvbHVtbk1vbml0b3JpbmcoKSB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aGVhZFwiKV07XG4gICAgICAgIHRhYmxlSGVhZHMuZm9yRWFjaCgodGFibGVIZWFkOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUub2JzZXJ2ZSh0YWJsZUhlYWQsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlV3JhcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5UQUJMRV9TQ1JPTExBQkxFX1dSQVBQRVJfQ0xBU1MpO1xuICAgICAgICBpZiAodGFibGVXcmFwZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRhYmxlV3JhcGVyLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLnRhYmxlV3JhcHBlck9ic2VydmVyID0gbXV0YXRpb25PYnNlcnZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlIZWlnaHRGb3JFeHBhbmRlZFJvd3MoKSB7XG4gICAgICAgIGNvbnN0IGZyb3plblREc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgY29uc3QgdW5Gcm96ZW5URHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS11bmZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgIGZyb3plblREc1RvQWRqdXN0LmZvckVhY2goKGZyb3plblRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5mcm96ZW5URDogSFRNTEVsZW1lbnQgPSB1bkZyb3plblREc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plbkhlaWdodCA9IHVuZnJvemVuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZnJvemVuSGVpZ2h0ID0gZnJvemVuVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModW5mcm96ZW5IZWlnaHQgLSBmcm96ZW5IZWlnaHQpID4gMSkge1xuICAgICAgICAgICAgICAgIGZyb3plblRkLnN0eWxlLmhlaWdodCA9IGAke3VuZnJvemVuSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICBmcm96ZW5UZC5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5U3R5bGVzRm9yVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFdyYXBwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICghc2Nyb2xsV3JhcHBlcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgc2Nyb2xsLXdyYXBwZXIgZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCI7XG5cbiAgICAgICAgY29uc3QgZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS1mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCFmcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLm9yZGVyID0gXCIxXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlclJpZ2h0ID0gXCJub25lXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlckxlZnQgPSBcIjFweCBzb2xpZCAjZGRkZGRkXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJveFNoYWRvdyA9IFwiLTVweCAwIDVweCAtNXB4ICNjY2NjY2NcIjtcblxuICAgICAgICBjb25zdCB1bmZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtdW5mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCF1bmZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCB1bmZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1bmZyb3plblRhYmxlLnN0eWxlLnBvc2l0aW9uID0gXCJ1bnNldFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDb2xSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNocm9uaXplUm93SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHlXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1ib2R5XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUJvZGllcyA9IFsuLi50YWJsZUJvZHlXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMuX3Jlc2V0Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLl9yZXNldFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVIZWFkcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXhSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRhYmxlcyB8fCAhdGFibGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGVuZ3RocyA9IHRhYmxlcy5tYXAodGFibGUgPT4gdGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5tYXgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuICAgICAgICBjb25zdCBtaW5MZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5taW4oYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuXG4gICAgICAgIGlmIChtYXhMZW5ndGggIT09IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG51bWJlciBvZiByb3dzIGluIGJvdGggdGFibGVzIG11c3QgYmUgdGhlIHNhbWVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWJsZSA9IHRhYmxlc1swXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0cnMucHVzaCh0YWJsZS5yb3dzW2ldIGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYXggPSB0cnMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgIE1hdGgubWF4KGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSwgdHJzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdHIgb2YgdHJzKSB7XG4gICAgICAgICAgICAgICAgdHIuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2V0Um93SGVpZ2h0KHRhYmxlczogYW55W10pIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRhYmxlLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3cuc3R5bGUuaGVpZ2h0ID0gXCJ1bnNldFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -66,14 +66,7 @@ let TablePagingComponent = class TablePagingComponent {
66
66
  getColumnsToExport() {
67
67
  return [...this.table.columns].map((column) => {
68
68
  var _a;
69
- const exportColumn = {
70
- header: column.header,
71
- exportable: true,
72
- field: column.field,
73
- separator: (_a = column.separator) !== null && _a !== void 0 ? _a : " - ",
74
- enumPrefix: column.enumPrefix,
75
- customExport: column.customExport,
76
- };
69
+ const exportColumn = Object.assign(Object.assign({}, column), { header: column.header, exportable: true, field: column.field, separator: (_a = column.separator) !== null && _a !== void 0 ? _a : " - ", enumPrefix: column.enumPrefix, customExport: column.customExport });
77
70
  if (column.exportable === false) {
78
71
  exportColumn.exportable = false;
79
72
  }
@@ -168,7 +161,7 @@ let TablePagingComponent = class TablePagingComponent {
168
161
  }
169
162
  const value = row[attribute];
170
163
  const mappedValue = numberFormatOptions.style === "percent" ? new BigNumber(value).times(100) : new BigNumber(value);
171
- const numberFormat = new Intl.NumberFormat("en-US", Object.assign(Object.assign({}, numberFormatOptions), { style: "decimal", useGrouping: false }));
164
+ const numberFormat = new Intl.NumberFormat("en-US", Object.assign(Object.assign({}, numberFormatOptions), { style: "decimal", useGrouping: false, roundingMode: "trunc" }));
172
165
  row[attribute] = numberFormat.format(mappedValue.toNumber());
173
166
  }
174
167
  }
@@ -184,7 +177,7 @@ let TablePagingComponent = class TablePagingComponent {
184
177
  const value = rowData[key].value;
185
178
  const numberFormatOptions = rowData[key].options.numberFormatOptions;
186
179
  const mappedValue = numberFormatOptions.style === "percent" ? new BigNumber(value).times(100) : new BigNumber(value);
187
- const numberFormat = new Intl.NumberFormat("en-US", Object.assign(Object.assign({}, numberFormatOptions), { style: "decimal", useGrouping: false }));
180
+ const numberFormat = new Intl.NumberFormat("en-US", Object.assign(Object.assign({}, numberFormatOptions), { style: "decimal", useGrouping: false, roundingMode: "trunc" }));
188
181
  row[key] = numberFormat.format(mappedValue.toNumber());
189
182
  }
190
183
  return row;
@@ -310,4 +303,4 @@ TablePagingComponent = __decorate([
310
303
  __param(1, Inject(HostProjectConfigsInjectionToken))
311
304
  ], TablePagingComponent);
312
305
  export { TablePagingComponent };
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL3RhYmxlLXBhZ2luZy90YWJsZS1wYWdpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQXNCLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFjckMsSUFBYSxvQkFBb0IsR0FBakMsTUFBYSxvQkFBb0I7SUErQjdCLFlBQ3FCLFNBQTJCLEVBQ2Usa0JBQXNDO1FBRGhGLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ2UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCOUYsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQ0FBMkIsR0FBRyxJQUFJLENBQUM7SUFvQnRDLENBQUM7SUFFTCxXQUFXLENBQUMsT0FBc0I7O1FBQzlCLFVBQUksT0FBTyxDQUFDLFlBQVksMENBQUUsWUFBWSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUU7Z0JBQ3hGLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVk7YUFDM0MsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtC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QUFLLEVBQUU7eUVBQ2tDO0FBRzFDO0lBREMsS0FBSyxFQUFFOzJEQUM4QjtBQUd0QztJQURDLEtBQUssRUFBRTs0REFDcUM7QUFHN0M7SUFEQyxLQUFLLEVBQUU7b0VBQ29DO0FBRzVDO0lBREMsS0FBSyxFQUFFO2lFQUNpQztBQUd6QztJQURDLE1BQU0sRUFBRTs4REFDdUI7QUE3QnZCLG9CQUFvQjtJQUxoQyxTQUFTLENBQUM7UUFDUCw4YkFBNEM7UUFFNUMsUUFBUSxFQUFFLGdCQUFnQjs7S0FDN0IsQ0FBQztJQWtDTyxXQUFBLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0dBakNwQyxvQkFBb0IsQ0E4V2hDO1NBOVdZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uL3RhYmxlLWNvbHVtbi9tb2RlbHMvY29sdW1uLmludGVyZmFjZVwiO1xuXG5pbXBvcnQgeyBIb3N0UHJvamVjdENvbmZpZ3MsIEhvc3RQcm9qZWN0Q29uZmlnc0luamVjdGlvblRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGVcIjtcbmltcG9ydCB7IEV4cG9ydFV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBDdXN0b21BY3Rpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSBcImJpZ251bWJlci5qc1wiO1xuXG50eXBlIFJvd1ZhbHVlRm9ybWF0T3B0aW9uID0ge1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIG9wdGlvbnM/OiB7XG4gICAgICAgIG51bWJlckZvcm1hdE9wdGlvbnM/OiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnM7XG4gICAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6IFwiLi90YWJsZS1wYWdpbmcuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdGFibGUtcGFnaW5nLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHNlbGVjdG9yOiBcInMtdGFibGUtcGFnaW5nXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b3RhbFJlY29yZHMhOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBvcnRGaWxlTmFtZT86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYmxlITogVGFibGU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBvcnRhYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuYWJsZUV4cG9ydFNlbGVjdGVkUmVjb3JkcyA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21BY3Rpb25zPzogQ3VzdG9tQWN0aW9uW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkQWxsUmVjb3Jkcz86ICgpID0+IFByb21pc2U8YW55W10+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZEN1cnJlbnRQYWdlUmVjb3Jkcz86ICgpID0+IGFueVtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZFNlbGVjdGVkUmVjb3Jkcz86ICgpID0+IGFueVtdO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvdGFsUmVjb3Jkc1RleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSByZWFkb25seSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkgeyB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRvdGFsUmVjb3Jkcz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9dG90YWxfcmVjb3Jkc2AsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlcy50b3RhbFJlY29yZHMuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0ZVByZWZpeCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaG9zdFByb2plY3RDb25maWdzLmRvbWFpbn0uJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5zZXJ2aWNlfS5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb29sdGlwVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5nZXRUcmFuc2xhdGVQcmVmaXgoKX1leHBvcnRfdG9fY3N2YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZXhwb3J0Q3VycmVudFBhZ2VcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9jdXJyZW50X3BhZ2VgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydEN1cnJlbnRQYWdlKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUV4cG9ydFNlbGVjdGVkUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRTZWxlY3RlZFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9ZXhwb3J0X3NlbGVjdGVkX3JlY29yZHNgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydFNlbGVjdGVkUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2FkQWxsUmVjb3Jkcykge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogXCJleHBvcnRBbGxcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9hbGxfcmVjb3Jkc2ApLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZXhwb3J0QWxsUmVjb3JkcygpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXN0b21BY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbU1lbnVzID0gdGhpcy5jdXN0b21BY3Rpb25zLm1hcCgocCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IFwiY3VzdG9tQWN0aW9uX1wiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHAubGFiZWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogcC5jb21tYW5kLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKC4uLmN1c3RvbU1lbnVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFibGUgY29tcG9uZW50IG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbnNUb0V4cG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnRhYmxlLmNvbHVtbnNdLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRDb2x1bW4gPSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyOiBjb2x1bW4uaGVhZGVyLFxuICAgICAgICAgICAgICAgIGV4cG9ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgICAgICBzZXBhcmF0b3I6IGNvbHVtbi5zZXBhcmF0b3IgPz8gXCIgLSBcIixcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBjb2x1bW4uZW51bVByZWZpeCxcbiAgICAgICAgICAgICAgICBjdXN0b21FeHBvcnQ6IGNvbHVtbi5jdXN0b21FeHBvcnQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoY29sdW1uLmV4cG9ydGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZXhwb3J0Q29sdW1uLmV4cG9ydGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzICYmIGNvbHVtbi5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0Q29sdW1uLmZpZWxkID0gY29sdW1uLmF0dHJpYnV0ZXNbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0Q29sdW1uLmZpZWxkID0gY29sdW1uLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0Q29sdW1uO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRQYWdlUm93c1RvRXhwb3J0KGNvbHVtbnM6IGFueVtdKSB7XG4gICAgICAgIGxldCB0YWJsZURhdGEgPSB0aGlzLnRhYmxlLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5sb2FkQ3VycmVudFBhZ2VSZWNvcmRzKSB7XG4gICAgICAgICAgICB0YWJsZURhdGEgPSB0aGlzLmxvYWRDdXJyZW50UGFnZVJlY29yZHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQ29sdW1uc1RyYW5zbGF0aW9ucyhjb2x1bW5zLCB0YWJsZURhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0ZWRSb3dzVG9FeHBvcnQoY29sdW1uczogYW55W10pIHtcbiAgICAgICAgbGV0IHRhYmxlRGF0YSA9IHRoaXMudGFibGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAodGhpcy5sb2FkU2VsZWN0ZWRSZWNvcmRzKSB7XG4gICAgICAgICAgICB0YWJsZURhdGEgPSB0aGlzLmxvYWRTZWxlY3RlZFJlY29yZHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KGNvbHVtbnMsIHRhYmxlRGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQ29sdW1uc1RyYW5zbGF0aW9ucyhjb2x1bW5zLCB0YWJsZURhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvcGVydHlWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlc3VsdFtwcm9wXSksIG9iaik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcm9wZXJ0eVZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yZWN1cnNpb25TZXRWYWx1ZShvYmosIHBhdGguc3BsaXQoXCIuXCIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWN1cnNpb25TZXRWYWx1ZShvYmo6IGFueSwga2V5c0xpc3Q6IHN0cmluZ1tdLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c0xpc3RbMF07XG4gICAgICAgIGlmIChrZXlzTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICAgIG9ialtrZXldID0gdGhpcy5yZWN1cnNpb25TZXRWYWx1ZShvYmo/LltrZXldIHx8IHt9LCBrZXlzTGlzdC5zbGljZSgxKSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnM6IGFueVtdLCByb3dzOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBlbnVtQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChwKSA9PiBwLmVudW1QcmVmaXgpO1xuICAgICAgICBpZiAoIWVudW1Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJvd3NdLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7IC4uLnJvdyB9O1xuICAgICAgICAgICAgZW51bUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gIUFycmF5LmlzQXJyYXkoY29sdW1uLmZpZWxkKSA/IFtjb2x1bW4uZmllbGRdIDogY29sdW1uLmZpZWxkO1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKHJvdywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkRhdGEgPT09IG51bGwgfHwgY29sdW1uRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMudHJhbnNsYXRlVmFsdWUoY29sdW1uLCBjb2x1bW5EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlKG5ld1JvdywgZmllbGROYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBtYXAgdmFsdWVzXG4gICAgICogZnJvbSB0aGUgVGFibGVDb2x1bW5zQ29tcG9uZW50LCB3aGljaCB1c2VzIHRoZSBudW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICogZmllbGQsIGFsb25nIHdpdGggcm93cyB0aGF0IGhhdmUgYSBjdXN0b20gbnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgKiB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmFsdWVzIGFyZSBleHBvcnRlZCBieSB0aGUgVGFibGVQYWdpbmdDb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBjb3JyZWN0bHkgbWFwcGVkIHRhYmxlRGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFwTnVtYmVyRm9ybWF0T3B0aW9uc0V4cG9ydChcbiAgICAgICAgY29sdW1uczogUGFydGlhbDxDb2x1bW4+W10sXG4gICAgICAgIHRhYmxlRGF0YToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTpcbiAgICAgICAgICAgIHwgUm93VmFsdWVGb3JtYXRPcHRpb25cbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IHN0cmluZztcbiAgICAgICAgfVtdXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGhhc051bWJlckZvcm1hdE9wdGlvbnNDb2x1bW5zID0gY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKTtcbiAgICAgICAgY29uc3QgaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MgPSB0YWJsZURhdGEuc29tZSgocm93RGF0YSkgPT4gT2JqZWN0LmtleXMocm93RGF0YSkuc29tZSgoa2V5KSA9PiAocm93RGF0YVtrZXldIGFzIFJvd1ZhbHVlRm9ybWF0T3B0aW9uKT8ub3B0aW9ucz8ubnVtYmVyRm9ybWF0T3B0aW9ucykpO1xuXG4gICAgICAgIGlmICghaGFzTnVtYmVyRm9ybWF0T3B0aW9uc0NvbHVtbnMgJiYgIWhhc051bWJlckZvcm1hdE9wdGlvbnNSb3dzKSByZXR1cm4gdGFibGVEYXRhO1xuXG4gICAgICAgIGxldCBtYXBwZWRUYWJsZURhdGEgPSBbLi4udGFibGVEYXRhXTtcblxuICAgICAgICBpZiAoaGFzTnVtYmVyRm9ybWF0T3B0aW9uc0NvbHVtbnMpIHtcbiAgICAgICAgICAgIG1hcHBlZFRhYmxlRGF0YSA9IG1hcHBlZFRhYmxlRGF0YS5tYXAoKHJvd0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSB7IC4uLnJvd0RhdGEgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBhdHRyaWJ1dGVzLCBudW1iZXJGb3JtYXRPcHRpb25zIH0gb2YgY29sdW1uc1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocm93W2F0dHJpYnV0ZV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pLm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByb3dbYXR0cmlidXRlXSBhcyBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zLnN0eWxlID09PSBcInBlcmNlbnRcIiA/IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRpbWVzKDEwMCkgOiBuZXcgQmlnTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm51bWJlckZvcm1hdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwiZGVjaW1hbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dbYXR0cmlidXRlXSA9IG51bWJlckZvcm1hdC5mb3JtYXQobWFwcGVkVmFsdWUudG9OdW1iZXIoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MpIHtcbiAgICAgICAgICAgIG1hcHBlZFRhYmxlRGF0YSA9IHRhYmxlRGF0YS5tYXAoKHJvd0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSB7IC4uLnJvd0RhdGEgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleXNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucyA9IE9iamVjdC5rZXlzKHJvdylcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAocm93W2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzV2l0aE51bWJlckZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocm93RGF0YVtrZXldIGFzIFJvd1ZhbHVlRm9ybWF0T3B0aW9uKS52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID0gKHJvd0RhdGFba2V5XSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbikub3B0aW9ucy5udW1iZXJGb3JtYXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZFZhbHVlID0gbnVtYmVyRm9ybWF0T3B0aW9ucy5zdHlsZSA9PT0gXCJwZXJjZW50XCIgPyBuZXcgQmlnTnVtYmVyKHZhbHVlKS50aW1lcygxMDApIDogbmV3IEJpZ051bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcImRlY2ltYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgKHJvd1trZXldIGFzIHN0cmluZyB8IG51bWJlcikgPSBudW1iZXJGb3JtYXQuZm9ybWF0KG1hcHBlZFZhbHVlLnRvTnVtYmVyKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXBwZWRUYWJsZURhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIG1hcEN1c3RvbUV4cG9ydChjb2x1bW5zOiBhbnlbXSwgcm93czogYW55W10pIHtcbiAgICAgICAgY29uc3QgY3VzdG9tQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChwKSA9PiBwLmN1c3RvbUV4cG9ydCk7XG4gICAgICAgIGlmICghY3VzdG9tQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsuLi5yb3dzXS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0geyAuLi5yb3cgfTtcbiAgICAgICAgICAgIGN1c3RvbUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gIUFycmF5LmlzQXJyYXkoY29sdW1uLmZpZWxkKSA/IFtjb2x1bW4uZmllbGRdIDogY29sdW1uLmZpZWxkO1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKHJvdywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkRhdGEgPT09IG51bGwgfHwgY29sdW1uRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2x1bW4uY3VzdG9tRXhwb3J0KGNvbHVtbkRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFByb3BlcnR5VmFsdWUobmV3Um93LCBmaWVsZE5hbWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3Um93O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zbGF0ZVZhbHVlKGNvbHVtbjogYW55LCBjb2x1bW5EYXRhOiBhbnkpIHtcbiAgICAgICAgLy8gRGVmYXVsdCB1c2FnZTogRU5VTV9WQUxVRSAtPiBkb21haW4uc2VydmljZS5lbnVtX3ZhbHVlXG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IGNvbHVtbkRhdGEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgdHJhbnNsYXRpb25LZXkgPSBjb2x1bW4uZW51bVByZWZpeCArIGVudW1WYWx1ZTtcbiAgICAgICAgbGV0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuXG4gICAgICAgIC8vIEN1c3RvbSB1c2FnZSAxOiBWOSAtPiBkb21haW4uc2VydmljZS52XzlcbiAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5ID09PSB0cmFuc2xhdGVkVmFsdWUgJiYgZW51bVZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5ID0gYCR7Y29sdW1uLmVudW1QcmVmaXh9JHtlbnVtVmFsdWUuc3Vic3RyaW5nKDAsIDEpfV8ke2VudW1WYWx1ZS5zdWJzdHIoMSl9YDtcbiAgICAgICAgICAgIHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3VzdG9tIHVzYWdlIDI6IEVudW1WYWx1ZSAtPiBkb21haW4uc2VydmljZS5lbnVtX3ZhbHVlXG4gICAgICAgIGlmICh0cmFuc2xhdGlvbktleSA9PT0gdHJhbnNsYXRlZFZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBlbnVtS2V5ID0gdGhpcy5jb252ZXJ0VG9TbmFrZUNhc2UoY29sdW1uRGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5ID0gYCR7Y29sdW1uLmVudW1QcmVmaXh9JHtlbnVtS2V5fWA7XG4gICAgICAgICAgICB0cmFuc2xhdGVkVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRyYW5zbGF0aW9uS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9TbmFrZUNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIChtYXRjaCwgZ3JvdXApID0+IGBfJHtncm91cC50b0xvd2VyQ2FzZSgpfWApLnJlcGxhY2UoL15fLywgXCJcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFeHBvcnRGaWxlTmFtZSgpIHtcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8/IFwicHQtQlJcIjtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4cG9ydEZpbGVOYW1lID8/IFwiZG93bmxvYWRcIjtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxhbmcpLnJlcGxhY2UoXCJfXCIsIFwiLVwiKTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxhbmcpLnJlcGxhY2UoXCIgXCIsIFwiLVwiKTtcblxuICAgICAgICByZXR1cm4gYCR7ZmlsZU5hbWV9XyR7Zm9ybWF0dGVkRGF0ZX1fJHtmb3JtYXR0ZWRUaW1lfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cG9ydEN1cnJlbnRQYWdlKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50KCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnNUb0V4cG9ydCgpO1xuICAgICAgICBjb25zdCBkYXRhVG9FeHBvcnQgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93c1RvRXhwb3J0KGNvbHVtbnMpO1xuICAgICAgICBFeHBvcnRVdGlscy5leHBvcnRDU1YoY29sdW1ucywgZGF0YVRvRXhwb3J0LCB1bmRlZmluZWQsIHRoaXMuZ2V0RXhwb3J0RmlsZU5hbWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cG9ydFNlbGVjdGVkUmVjb3JkcygpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudCgpO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5zVG9FeHBvcnQoKTtcbiAgICAgICAgY29uc3QgZGF0YVRvRXhwb3J0ID0gdGhpcy5nZXRTZWxlY3RlZFJvd3NUb0V4cG9ydChjb2x1bW5zKTtcbiAgICAgICAgRXhwb3J0VXRpbHMuZXhwb3J0Q1NWKGNvbHVtbnMsIGRhdGFUb0V4cG9ydCwgdW5kZWZpbmVkLCB0aGlzLmdldEV4cG9ydEZpbGVOYW1lKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHBvcnRBbGxSZWNvcmRzKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50KCk7XG5cbiAgICAgICAgbGV0IHNlcnZlckRhdGEgPSBhd2FpdCB0aGlzLmxvYWRBbGxSZWNvcmRzKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uc1RvRXhwb3J0KCk7XG5cbiAgICAgICAgc2VydmVyRGF0YSA9IHRoaXMubWFwQ3VzdG9tRXhwb3J0KGNvbHVtbnMsIHNlcnZlckRhdGEpO1xuXG4gICAgICAgIHNlcnZlckRhdGEgPSB0aGlzLm1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoY29sdW1ucywgc2VydmVyRGF0YSk7XG5cbiAgICAgICAgY29uc3QgZGF0YVRvRXhwb3J0ID0gdGhpcy5tYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnMsIHNlcnZlckRhdGEpO1xuXG4gICAgICAgIEV4cG9ydFV0aWxzLmV4cG9ydENTVihjb2x1bW5zLCBkYXRhVG9FeHBvcnQsIHVuZGVmaW5lZCwgdGhpcy5nZXRFeHBvcnRGaWxlTmFtZSgpKTtcbiAgICB9XG59XG4iXX0=
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL3RhYmxlLXBhZ2luZy90YWJsZS1wYWdpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQXNCLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFjckMsSUFBYSxvQkFBb0IsR0FBakMsTUFBYSxvQkFBb0I7SUErQjdCLFlBQ3FCLFNBQTJCLEVBQ2Usa0JBQXNDO1FBRGhGLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ2UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCOUYsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQ0FBMkIsR0FBRyxJQUFJLENBQUM7SUFvQnRDLENBQUM7SUFFTCxXQUFXLENBQUMsT0FBc0I7O1FBQzlCLFVBQUksT0FBTyxDQUFDLFlBQVksMENBQUUsWUFBWSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUU7Z0JBQ3hGLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVk7YUFDM0MsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtC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SUFEQyxLQUFLLEVBQUU7bURBQ2E7QUFHckI7SUFEQyxLQUFLLEVBQUU7d0RBQ2lCO0FBR3pCO0lBREMsS0FBSyxFQUFFO3lFQUNrQztBQUcxQztJQURDLEtBQUssRUFBRTsyREFDOEI7QUFHdEM7SUFEQyxLQUFLLEVBQUU7NERBQ3FDO0FBRzdDO0lBREMsS0FBSyxFQUFFO29FQUNvQztBQUc1QztJQURDLEtBQUssRUFBRTtpRUFDaUM7QUFHekM7SUFEQyxNQUFNLEVBQUU7OERBQ3VCO0FBN0J2QixvQkFBb0I7SUFMaEMsU0FBUyxDQUFDO1FBQ1AsOGJBQTRDO1FBRTVDLFFBQVEsRUFBRSxnQkFBZ0I7O0tBQzdCLENBQUM7SUFrQ08sV0FBQSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtHQWpDcEMsb0JBQW9CLENBaVhoQztTQWpYWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi90YWJsZS1jb2x1bW4vbW9kZWxzL2NvbHVtbi5pbnRlcmZhY2VcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBFeHBvcnRVdGlscyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgQ3VzdG9tQWN0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcblxudHlwZSBSb3dWYWx1ZUZvcm1hdE9wdGlvbiA9IHtcbiAgICB2YWx1ZT86IG51bWJlcjtcbiAgICBvcHRpb25zPzoge1xuICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zPzogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zO1xuICAgIH07XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtcGFnaW5nLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3RhYmxlLXBhZ2luZy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBzZWxlY3RvcjogXCJzLXRhYmxlLXBhZ2luZ1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVBhZ2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzITogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhwb3J0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWJsZSE6IFRhYmxlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhwb3J0YWJsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbmFibGVFeHBvcnRTZWxlY3RlZFJlY29yZHMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tQWN0aW9ucz86IEN1c3RvbUFjdGlvbltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZEFsbFJlY29yZHM/OiAoKSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRDdXJyZW50UGFnZVJlY29yZHM/OiAoKSA9PiBhbnlbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRTZWxlY3RlZFJlY29yZHM/OiAoKSA9PiBhbnlbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0b3RhbFJlY29yZHNUZXh0OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgaG9zdFByb2plY3RDb25maWdzOiBIb3N0UHJvamVjdENvbmZpZ3NcbiAgICApIHsgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50b3RhbFJlY29yZHM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHNUZXh0ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfXRvdGFsX3JlY29yZHNgLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGNoYW5nZXMudG90YWxSZWNvcmRzLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGVQcmVmaXgoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5kb21haW59LiR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3Muc2VydmljZX0uYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG9vbHRpcFRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMuZ2V0VHJhbnNsYXRlUHJlZml4KCl9ZXhwb3J0X3RvX2NzdmApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKCk6IE1lbnVJdGVtW10ge1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBNZW51SXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBcImV4cG9ydEN1cnJlbnRQYWdlXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5nZXRUcmFuc2xhdGVQcmVmaXgoKX1leHBvcnRfY3VycmVudF9wYWdlYCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5leHBvcnRDdXJyZW50UGFnZSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5lbmFibGVFeHBvcnRTZWxlY3RlZFJlY29yZHMpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZXhwb3J0U2VsZWN0ZWRcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmdldFRyYW5zbGF0ZVByZWZpeCgpfWV4cG9ydF9zZWxlY3RlZF9yZWNvcmRzYCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5leHBvcnRTZWxlY3RlZFJlY29yZHMoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubG9hZEFsbFJlY29yZHMpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZXhwb3J0QWxsXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5nZXRUcmFuc2xhdGVQcmVmaXgoKX1leHBvcnRfYWxsX3JlY29yZHNgKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmV4cG9ydEFsbFJlY29yZHMoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21NZW51cyA9IHRoaXMuY3VzdG9tQWN0aW9ucy5tYXAoKHAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBcImN1c3RvbUFjdGlvbl9cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwLmxhYmVsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IHAuY29tbWFuZCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaCguLi5jdXN0b21NZW51cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAoIXRoaXMudGFibGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhYmxlIGNvbXBvbmVudCBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW5zVG9FeHBvcnQoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy50YWJsZS5jb2x1bW5zXS5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0Q29sdW1uID0ge1xuICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICBoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG4gICAgICAgICAgICAgICAgZXhwb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxuICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogY29sdW1uLnNlcGFyYXRvciA/PyBcIiAtIFwiLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGNvbHVtbi5lbnVtUHJlZml4LFxuICAgICAgICAgICAgICAgIGN1c3RvbUV4cG9ydDogY29sdW1uLmN1c3RvbUV4cG9ydCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4uZXhwb3J0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBleHBvcnRDb2x1bW4uZXhwb3J0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXMgJiYgY29sdW1uLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBleHBvcnRDb2x1bW4uZmllbGQgPSBjb2x1bW4uYXR0cmlidXRlc1swXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHBvcnRDb2x1bW4uZmllbGQgPSBjb2x1bW4uYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBleHBvcnRDb2x1bW47XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVudFBhZ2VSb3dzVG9FeHBvcnQoY29sdW1uczogYW55W10pIHtcbiAgICAgICAgbGV0IHRhYmxlRGF0YSA9IHRoaXMudGFibGUudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmxvYWRDdXJyZW50UGFnZVJlY29yZHMpIHtcbiAgICAgICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubG9hZEN1cnJlbnRQYWdlUmVjb3JkcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBDdXN0b21FeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICB0YWJsZURhdGEgPSB0aGlzLm1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnMsIHRhYmxlRGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RlZFJvd3NUb0V4cG9ydChjb2x1bW5zOiBhbnlbXSkge1xuICAgICAgICBsZXQgdGFibGVEYXRhID0gdGhpcy50YWJsZS5zZWxlY3Rpb247XG4gICAgICAgIGlmICh0aGlzLmxvYWRTZWxlY3RlZFJlY29yZHMpIHtcbiAgICAgICAgICAgIHRhYmxlRGF0YSA9IHRoaXMubG9hZFNlbGVjdGVkUmVjb3JkcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVEYXRhID0gdGhpcy5tYXBDdXN0b21FeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICB0YWJsZURhdGEgPSB0aGlzLm1hcE51bWJlckZvcm1hdE9wdGlvbnNFeHBvcnQoY29sdW1ucywgdGFibGVEYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tYXBDb2x1bW5zVHJhbnNsYXRpb25zKGNvbHVtbnMsIHRhYmxlRGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcm9wZXJ0eVZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByb3BlcnR5VmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnJlY3Vyc2lvblNldFZhbHVlKG9iaiwgcGF0aC5zcGxpdChcIi5cIiksIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY3Vyc2lvblNldFZhbHVlKG9iajogYW55LCBrZXlzTGlzdDogc3RyaW5nW10sIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBrZXkgPSBrZXlzTGlzdFswXTtcbiAgICAgICAgaWYgKGtleXNMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgICAgb2JqW2tleV0gPSB0aGlzLnJlY3Vyc2lvblNldFZhbHVlKG9iaj8uW2tleV0gfHwge30sIGtleXNMaXN0LnNsaWNlKDEpLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgcHVibGljIG1hcENvbHVtbnNUcmFuc2xhdGlvbnMoY29sdW1uczogYW55W10sIHJvd3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IGVudW1Db2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHApID0+IHAuZW51bVByZWZpeCk7XG4gICAgICAgIGlmICghZW51bUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbLi4ucm93c10ubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IHsgLi4ucm93IH07XG4gICAgICAgICAgICBlbnVtQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSAhQXJyYXkuaXNBcnJheShjb2x1bW4uZmllbGQpID8gW2NvbHVtbi5maWVsZF0gOiBjb2x1bW4uZmllbGQ7XG4gICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSB0aGlzLmdldFByb3BlcnR5VmFsdWUocm93LCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uRGF0YSA9PT0gbnVsbCB8fCBjb2x1bW5EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy50cmFuc2xhdGVWYWx1ZShjb2x1bW4sIGNvbHVtbkRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFByb3BlcnR5VmFsdWUobmV3Um93LCBmaWVsZE5hbWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3Um93O1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIG1hcCB2YWx1ZXNcbiAgICAgKiBmcm9tIHRoZSBUYWJsZUNvbHVtbnNDb21wb25lbnQsIHdoaWNoIHVzZXMgdGhlIG51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgKiBmaWVsZCwgYWxvbmcgd2l0aCByb3dzIHRoYXQgaGF2ZSBhIGN1c3RvbSBudW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAqIHRvIGVuc3VyZSB0aGUgY29ycmVjdCB2YWx1ZXMgYXJlIGV4cG9ydGVkIGJ5IHRoZSBUYWJsZVBhZ2luZ0NvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGNvcnJlY3RseSBtYXBwZWQgdGFibGVEYXRhLlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KFxuICAgICAgICBjb2x1bW5zOiBQYXJ0aWFsPENvbHVtbj5bXSxcbiAgICAgICAgdGFibGVEYXRhOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOlxuICAgICAgICAgICAgfCBSb3dWYWx1ZUZvcm1hdE9wdGlvblxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgc3RyaW5nO1xuICAgICAgICB9W11cbiAgICApIHtcbiAgICAgICAgY29uc3QgaGFzTnVtYmVyRm9ybWF0T3B0aW9uc0NvbHVtbnMgPSBjb2x1bW5zLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMpO1xuICAgICAgICBjb25zdCBoYXNOdW1iZXJGb3JtYXRPcHRpb25zUm93cyA9IHRhYmxlRGF0YS5zb21lKChyb3dEYXRhKSA9PiBPYmplY3Qua2V5cyhyb3dEYXRhKS5zb21lKChrZXkpID0+IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zKSk7XG5cbiAgICAgICAgaWYgKCFoYXNOdW1iZXJGb3JtYXRPcHRpb25zQ29sdW1ucyAmJiAhaGFzTnVtYmVyRm9ybWF0T3B0aW9uc1Jvd3MpIHJldHVybiB0YWJsZURhdGE7XG5cbiAgICAgICAgbGV0IG1hcHBlZFRhYmxlRGF0YSA9IFsuLi50YWJsZURhdGFdO1xuXG4gICAgICAgIGlmIChoYXNOdW1iZXJGb3JtYXRPcHRpb25zQ29sdW1ucykge1xuICAgICAgICAgICAgbWFwcGVkVGFibGVEYXRhID0gbWFwcGVkVGFibGVEYXRhLm1hcCgocm93RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IHsgLi4ucm93RGF0YSB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uc1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zID0gY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IGF0dHJpYnV0ZXMsIG51bWJlckZvcm1hdE9wdGlvbnMgfSBvZiBjb2x1bW5zV2l0aE51bWJlckZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3dbYXR0cmlidXRlXSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbikub3B0aW9ucz8ubnVtYmVyRm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd1thdHRyaWJ1dGVdIGFzIHN0cmluZyB8IG51bWJlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdE9wdGlvbnMuc3R5bGUgPT09IFwicGVyY2VudFwiID8gbmV3IEJpZ051bWJlcih2YWx1ZSkudGltZXMoMTAwKSA6IG5ldyBCaWdOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1VU1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJkZWNpbWFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlR3JvdXBpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nTW9kZTogXCJ0cnVuY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIGFueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1thdHRyaWJ1dGVdID0gbnVtYmVyRm9ybWF0LmZvcm1hdChtYXBwZWRWYWx1ZS50b051bWJlcigpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNOdW1iZXJGb3JtYXRPcHRpb25zUm93cykge1xuICAgICAgICAgICAgbWFwcGVkVGFibGVEYXRhID0gdGFibGVEYXRhLm1hcCgocm93RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IHsgLi4ucm93RGF0YSB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5c1dpdGhOdW1iZXJGb3JtYXRPcHRpb25zID0gT2JqZWN0LmtleXMocm93KVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IChyb3dba2V5XSBhcyBSb3dWYWx1ZUZvcm1hdE9wdGlvbik/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNXaXRoTnVtYmVyRm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChyb3dEYXRhW2tleV0gYXMgUm93VmFsdWVGb3JtYXRPcHRpb24pLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckZvcm1hdE9wdGlvbnMgPSAocm93RGF0YVtrZXldIGFzIFJvd1ZhbHVlRm9ybWF0T3B0aW9uKS5vcHRpb25zLm51bWJlckZvcm1hdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkVmFsdWUgPSBudW1iZXJGb3JtYXRPcHRpb25zLnN0eWxlID09PSBcInBlcmNlbnRcIiA/IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRpbWVzKDEwMCkgOiBuZXcgQmlnTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1VU1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5udW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwiZGVjaW1hbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlR3JvdXBpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdNb2RlOiBcInRydW5jXCJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICAgICAgICAgICAgICAgIChyb3dba2V5XSBhcyBzdHJpbmcgfCBudW1iZXIpID0gbnVtYmVyRm9ybWF0LmZvcm1hdChtYXBwZWRWYWx1ZS50b051bWJlcigpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWFwcGVkVGFibGVEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBDdXN0b21FeHBvcnQoY29sdW1uczogYW55W10sIHJvd3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigocCkgPT4gcC5jdXN0b21FeHBvcnQpO1xuICAgICAgICBpZiAoIWN1c3RvbUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbLi4ucm93c10ubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IHsgLi4ucm93IH07XG4gICAgICAgICAgICBjdXN0b21Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9ICFBcnJheS5pc0FycmF5KGNvbHVtbi5maWVsZCkgPyBbY29sdW1uLmZpZWxkXSA6IGNvbHVtbi5maWVsZDtcbiAgICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uRGF0YSA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShyb3csIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5EYXRhID09PSBudWxsIHx8IGNvbHVtbkRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29sdW1uLmN1c3RvbUV4cG9ydChjb2x1bW5EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlKG5ld1JvdywgZmllbGROYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVWYWx1ZShjb2x1bW46IGFueSwgY29sdW1uRGF0YTogYW55KSB7XG4gICAgICAgIC8vIERlZmF1bHQgdXNhZ2U6IEVOVU1fVkFMVUUgLT4gZG9tYWluLnNlcnZpY2UuZW51bV92YWx1ZVxuICAgICAgICBjb25zdCBlbnVtVmFsdWUgPSBjb2x1bW5EYXRhLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IHRyYW5zbGF0aW9uS2V5ID0gY29sdW1uLmVudW1QcmVmaXggKyBlbnVtVmFsdWU7XG4gICAgICAgIGxldCB0cmFuc2xhdGVkVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRyYW5zbGF0aW9uS2V5KTtcblxuICAgICAgICAvLyBDdXN0b20gdXNhZ2UgMTogVjkgLT4gZG9tYWluLnNlcnZpY2Uudl85XG4gICAgICAgIGlmICh0cmFuc2xhdGlvbktleSA9PT0gdHJhbnNsYXRlZFZhbHVlICYmIGVudW1WYWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0cmFuc2xhdGlvbktleSA9IGAke2NvbHVtbi5lbnVtUHJlZml4fSR7ZW51bVZhbHVlLnN1YnN0cmluZygwLCAxKX1fJHtlbnVtVmFsdWUuc3Vic3RyKDEpfWA7XG4gICAgICAgICAgICB0cmFuc2xhdGVkVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRyYW5zbGF0aW9uS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEN1c3RvbSB1c2FnZSAyOiBFbnVtVmFsdWUgLT4gZG9tYWluLnNlcnZpY2UuZW51bV92YWx1ZVxuICAgICAgICBpZiAodHJhbnNsYXRpb25LZXkgPT09IHRyYW5zbGF0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZW51bUtleSA9IHRoaXMuY29udmVydFRvU25ha2VDYXNlKGNvbHVtbkRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB0cmFuc2xhdGlvbktleSA9IGAke2NvbHVtbi5lbnVtUHJlZml4fSR7ZW51bUtleX1gO1xuICAgICAgICAgICAgdHJhbnNsYXRlZFZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0cmFuc2xhdGlvbktleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFRvU25ha2VDYXNlKHN0cjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCAobWF0Y2gsIGdyb3VwKSA9PiBgXyR7Z3JvdXAudG9Mb3dlckNhc2UoKX1gKS5yZXBsYWNlKC9eXy8sIFwiXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhwb3J0RmlsZU5hbWUoKSB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyA/PyBcInB0LUJSXCI7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5leHBvcnRGaWxlTmFtZSA/PyBcImRvd25sb2FkXCI7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsYW5nKS5yZXBsYWNlKFwiX1wiLCBcIi1cIik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyhsYW5nKS5yZXBsYWNlKFwiIFwiLCBcIi1cIik7XG5cbiAgICAgICAgcmV0dXJuIGAke2ZpbGVOYW1lfV8ke2Zvcm1hdHRlZERhdGV9XyR7Zm9ybWF0dGVkVGltZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBvcnRDdXJyZW50UGFnZSgpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudCgpO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5zVG9FeHBvcnQoKTtcbiAgICAgICAgY29uc3QgZGF0YVRvRXhwb3J0ID0gdGhpcy5nZXRDdXJyZW50UGFnZVJvd3NUb0V4cG9ydChjb2x1bW5zKTtcbiAgICAgICAgRXhwb3J0VXRpbHMuZXhwb3J0Q1NWKGNvbHVtbnMsIGRhdGFUb0V4cG9ydCwgdW5kZWZpbmVkLCB0aGlzLmdldEV4cG9ydEZpbGVOYW1lKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBvcnRTZWxlY3RlZFJlY29yZHMoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnQoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uc1RvRXhwb3J0KCk7XG4gICAgICAgIGNvbnN0IGRhdGFUb0V4cG9ydCA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzVG9FeHBvcnQoY29sdW1ucyk7XG4gICAgICAgIEV4cG9ydFV0aWxzLmV4cG9ydENTVihjb2x1bW5zLCBkYXRhVG9FeHBvcnQsIHVuZGVmaW5lZCwgdGhpcy5nZXRFeHBvcnRGaWxlTmFtZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhwb3J0QWxsUmVjb3JkcygpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudCgpO1xuXG4gICAgICAgIGxldCBzZXJ2ZXJEYXRhID0gYXdhaXQgdGhpcy5sb2FkQWxsUmVjb3JkcygpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnNUb0V4cG9ydCgpO1xuXG4gICAgICAgIHNlcnZlckRhdGEgPSB0aGlzLm1hcEN1c3RvbUV4cG9ydChjb2x1bW5zLCBzZXJ2ZXJEYXRhKTtcblxuICAgICAgICBzZXJ2ZXJEYXRhID0gdGhpcy5tYXBOdW1iZXJGb3JtYXRPcHRpb25zRXhwb3J0KGNvbHVtbnMsIHNlcnZlckRhdGEpO1xuXG4gICAgICAgIGNvbnN0IGRhdGFUb0V4cG9ydCA9IHRoaXMubWFwQ29sdW1uc1RyYW5zbGF0aW9ucyhjb2x1bW5zLCBzZXJ2ZXJEYXRhKTtcblxuICAgICAgICBFeHBvcnRVdGlscy5leHBvcnRDU1YoY29sdW1ucywgZGF0YVRvRXhwb3J0LCB1bmRlZmluZWQsIHRoaXMuZ2V0RXhwb3J0RmlsZU5hbWUoKSk7XG4gICAgfVxufVxuIl19
@@ -78,8 +78,7 @@ var TableFrozenPositionDirective = /** @class */ (function () {
78
78
  var originalsTds = _this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
79
79
  tdsToAdjust.forEach(function (td, index) {
80
80
  var originalTd = originalsTds[index];
81
- var height = originalTd.getBoundingClientRect().height;
82
- td.innerHTML = "<div style=\"height: " + height + "px\"></div>";
81
+ td.innerHTML = null;
83
82
  td.style.padding = "0px";
84
83
  _this.rowExpandedObserver.observe(originalTd);
85
84
  });
@@ -119,7 +118,7 @@ var TableFrozenPositionDirective = /** @class */ (function () {
119
118
  var frozenHeight = frozenTd.getBoundingClientRect().height;
120
119
  if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
121
120
  frozenTd.style.height = unfrozenHeight + "px";
122
- frozenTd.innerHTML = "<div></div>";
121
+ frozenTd.innerHTML = null;
123
122
  }
124
123
  });
125
124
  };
@@ -254,4 +253,4 @@ var TableFrozenPositionDirective = /** @class */ (function () {
254
253
  return TableFrozenPositionDirective;
255
254
  }());
256
255
  export { TableFrozenPositionDirective };
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QztJQXVCSSxzQ0FBb0IsRUFBYyxFQUFFLElBQVc7UUFBM0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXJCbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDO1FBV3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSS9CLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXhDLG1DQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRzdFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLGFB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QU0sQ0FBQyxDQUFDOztnQkFFL0csS0FBaUIsSUFBQSx1QkFBQSxTQUFBLEdBQUcsQ0FBQSxDQUFBLHdCQUFBLHlDQUFFO29CQUFqQixJQUFNLEVBQUUsZ0JBQUE7b0JBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQU0sR0FBRyxPQUFJLENBQUM7aUJBQ2hDOzs7Ozs7Ozs7U0FDSjtJQUNMLENBQUM7SUFFTyxzREFBZSxHQUF2QixVQUF3QixNQUFhOzs7WUFDakMsS0FBb0IsSUFBQSxXQUFBLFNBQUEsTUFBTSxDQUFBLDhCQUFBLGtEQUFFO2dCQUF2QixJQUFNLEtBQUssbUJBQUE7O29CQUNaLEtBQWtCLElBQUEsb0JBQUEsU0FBQSxLQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsZ0JBQUEsNEJBQUU7d0JBQXpCLElBQU0sR0FBRyxXQUFBO3dCQUNWLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztxQkFDOUI7Ozs7Ozs7OzthQUNKOzs7Ozs7Ozs7SUFDTCxDQUFDOztnQkEzTXVCLFVBQVU7Z0JBQVEsS0FBSzs7SUFyQi9DO1FBREMsS0FBSyxFQUFFOzhFQUNzQjtJQUc5QjtRQURDLEtBQUssRUFBRTt5RUFNUDtJQVZRLDRCQUE0QjtRQUh4QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsd0JBQXdCO1NBQ3JDLENBQUM7T0FDVyw0QkFBNEIsQ0FtT3hDO0lBQUQsbUNBQUM7Q0FBQSxBQW5PRCxJQW1PQztTQW5PWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVGFibGVGcm96ZW5Qb3NpdGlvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUZyb3plblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICBASW5wdXQoKVxuICAgIHNUYWJsZUZyb3plblBvc2l0aW9uID0gXCJsZWZ0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzVGFibGVGcm96ZW5WYWx1ZShfOiBhbnlbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGU6IFRhYmxlO1xuICAgIHByaXZhdGUgaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcblxuICAgIHRhYmxlSGVhZE9ic2VydmFibGU6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcm93RXhwYW5kZWRPYnNlcnZlcjogYW55O1xuICAgIG9uQ29sdW1uc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSB0YWJsZVdyYXBwZXJPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgVEFCTEVfU0NST0xMQUJMRV9XUkFQUEVSX0NMQVNTID0gXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlID0gaG9zdDtcbiAgICAgICAgdGhpcy50YWJsZS5zdHlsZUNsYXNzID0gKHRoaXMudGFibGUuc3R5bGVDbGFzcyB8fCBcIlwiKSArIFwiIHMtdGFibGUtZnJvemVuLXBvc2l0aW9uXCI7XG4gICAgICAgIHRoaXMuc2V0VXBUYWJsZUV2ZW50cygpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGh0bWxIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXG4gICAgICAgIGNvbnN0IGV4cGFuZEZyb3plblN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBleHBhbmRGcm96ZW5TdHlsZS5pbm5lckhUTUwgPSBcIi5zLXRhYmxlLWZyb3plbi1wb3NpdGlvbiAudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZCB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVwiO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChleHBhbmRGcm96ZW5TdHlsZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0VXBDb2x1bW5Nb25pdG9yaW5nKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNUYWJsZVZpc2libGUgJiYgISF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUYWJsZVZpc2libGUgJiYgIXRoaXMudGFibGUuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwVGFibGVFdmVudHMoKSB7XG4gICAgICAgIHRoaXMudGFibGUub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29sUmVzaXplKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudGFibGUub25Sb3dFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHZlcnNpb24gb2YgQW5ndWxhci9UeXBlc2NyaXB0IGRvZXMgbm90IHJlY29nbml6ZSB0aGUgb2JqZWN0IFJlc2l6ZU9ic2VydmVyIGFuZCBicmVha3MgYnVpbGRcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyID0gbmV3ICh3aW5kb3cgYXMgYW55KS5SZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5SGVpZ2h0Rm9yRXhwYW5kZWRSb3dzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGRzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxzVGRzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtdW5mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgdGRzVG9BZGp1c3QuZm9yRWFjaCgodGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZDogSFRNTEVsZW1lbnQgPSBvcmlnaW5hbHNUZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9yaWdpbmFsVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRkLmlubmVySFRNTCA9IGA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAke2hlaWdodH1weFwiPjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgdGQuc3R5bGUucGFkZGluZyA9IFwiMHB4XCI7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIub2JzZXJ2ZShvcmlnaW5hbFRkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwQ29sdW1uTW9uaXRvcmluZygpIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpXTtcbiAgICAgICAgdGFibGVIZWFkcy5mb3JFYWNoKCh0YWJsZUhlYWQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5vYnNlcnZlKHRhYmxlSGVhZCwge1xuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGFibGVXcmFwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICh0YWJsZVdyYXBlcikge1xuICAgICAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFibGVXcmFwZXIsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMudGFibGVXcmFwcGVyT2JzZXJ2ZXIgPSBtdXRhdGlvbk9ic2VydmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpIHtcbiAgICAgICAgY29uc3QgZnJvemVuVERzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICBjb25zdCB1bkZyb3plblREcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgZnJvemVuVERzVG9BZGp1c3QuZm9yRWFjaCgoZnJvemVuVGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plblREOiBIVE1MRWxlbWVudCA9IHVuRnJvemVuVERzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHVuZnJvemVuSGVpZ2h0ID0gdW5mcm96ZW5URC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBmcm96ZW5IZWlnaHQgPSBmcm96ZW5UZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModW5mcm96ZW5IZWlnaHQgLSBmcm96ZW5IZWlnaHQpID4gMSkge1xuICAgICAgICAgICAgICAgIGZyb3plblRkLnN0eWxlLmhlaWdodCA9IGAke3VuZnJvemVuSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICBmcm96ZW5UZC5pbm5lckhUTUwgPSBgPGRpdj48L2Rpdj5gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5U3R5bGVzRm9yVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFdyYXBwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICghc2Nyb2xsV3JhcHBlcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgc2Nyb2xsLXdyYXBwZXIgZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCI7XG5cbiAgICAgICAgY29uc3QgZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS1mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCFmcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLm9yZGVyID0gXCIxXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlclJpZ2h0ID0gXCJub25lXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlckxlZnQgPSBcIjFweCBzb2xpZCAjZGRkZGRkXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJveFNoYWRvdyA9IFwiLTVweCAwIDVweCAtNXB4ICNjY2NjY2NcIjtcblxuICAgICAgICBjb25zdCB1bmZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtdW5mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCF1bmZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCB1bmZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1bmZyb3plblRhYmxlLnN0eWxlLnBvc2l0aW9uID0gXCJ1bnNldFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDb2xSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNocm9uaXplUm93SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHlXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1ib2R5XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUJvZGllcyA9IFsuLi50YWJsZUJvZHlXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMuX3Jlc2V0Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLl9yZXNldFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlNYXhSb3dIZWlnaHQodGFibGVIZWFkcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXhSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRhYmxlcyB8fCAhdGFibGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGVuZ3RocyA9IHRhYmxlcy5tYXAodGFibGUgPT4gdGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5tYXgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuICAgICAgICBjb25zdCBtaW5MZW5ndGggPSBsZW5ndGhzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4gTWF0aC5taW4oYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSksIGxlbmd0aHNbMF0pO1xuXG4gICAgICAgIGlmIChtYXhMZW5ndGggIT09IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG51bWJlciBvZiByb3dzIGluIGJvdGggdGFibGVzIG11c3QgYmUgdGhlIHNhbWVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWJsZSA9IHRhYmxlc1swXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0cnMucHVzaCh0YWJsZS5yb3dzW2ldIGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYXggPSB0cnMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgIE1hdGgubWF4KGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSwgdHJzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdHIgb2YgdHJzKSB7XG4gICAgICAgICAgICAgICAgdHIuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2V0Um93SGVpZ2h0KHRhYmxlczogYW55W10pIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRhYmxlLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3cuc3R5bGUuaGVpZ2h0ID0gXCJ1bnNldFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QztJQXVCSSxzQ0FBb0IsRUFBYyxFQUFFLElBQVc7UUFBM0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXJCbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDO1FBV3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSS9CLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXhDLG1DQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRzdFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLGFB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QUFqQixJQUFNLEVBQUUsZ0JBQUE7b0JBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQU0sR0FBRyxPQUFJLENBQUM7aUJBQ2hDOzs7Ozs7Ozs7U0FDSjtJQUNMLENBQUM7SUFFTyxzREFBZSxHQUF2QixVQUF3QixNQUFhOzs7WUFDakMsS0FBb0IsSUFBQSxXQUFBLFNBQUEsTUFBTSxDQUFBLDhCQUFBLGtEQUFFO2dCQUF2QixJQUFNLEtBQUssbUJBQUE7O29CQUNaLEtBQWtCLElBQUEsb0JBQUEsU0FBQSxLQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsZ0JBQUEsNEJBQUU7d0JBQXpCLElBQU0sR0FBRyxXQUFBO3dCQUNWLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztxQkFDOUI7Ozs7Ozs7OzthQUNKOzs7Ozs7Ozs7SUFDTCxDQUFDOztnQkEzTXVCLFVBQVU7Z0JBQVEsS0FBSzs7SUFyQi9DO1FBREMsS0FBSyxFQUFFOzhFQUNzQjtJQUc5QjtRQURDLEtBQUssRUFBRTt5RUFNUDtJQVZRLDRCQUE0QjtRQUh4QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsd0JBQXdCO1NBQ3JDLENBQUM7T0FDVyw0QkFBNEIsQ0FtT3hDO0lBQUQsbUNBQUM7Q0FBQSxBQW5PRCxJQW1PQztTQW5PWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVGFibGVGcm96ZW5Qb3NpdGlvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUZyb3plblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICBASW5wdXQoKVxuICAgIHNUYWJsZUZyb3plblBvc2l0aW9uID0gXCJsZWZ0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzVGFibGVGcm96ZW5WYWx1ZShfOiBhbnlbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGU6IFRhYmxlO1xuICAgIHByaXZhdGUgaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcblxuICAgIHRhYmxlSGVhZE9ic2VydmFibGU6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcm93RXhwYW5kZWRPYnNlcnZlcjogYW55O1xuICAgIG9uQ29sdW1uc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSB0YWJsZVdyYXBwZXJPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgVEFCTEVfU0NST0xMQUJMRV9XUkFQUEVSX0NMQVNTID0gXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlID0gaG9zdDtcbiAgICAgICAgdGhpcy50YWJsZS5zdHlsZUNsYXNzID0gKHRoaXMudGFibGUuc3R5bGVDbGFzcyB8fCBcIlwiKSArIFwiIHMtdGFibGUtZnJvemVuLXBvc2l0aW9uXCI7XG4gICAgICAgIHRoaXMuc2V0VXBUYWJsZUV2ZW50cygpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGh0bWxIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXG4gICAgICAgIGNvbnN0IGV4cGFuZEZyb3plblN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBleHBhbmRGcm96ZW5TdHlsZS5pbm5lckhUTUwgPSBcIi5zLXRhYmxlLWZyb3plbi1wb3NpdGlvbiAudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZCB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVwiO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChleHBhbmRGcm96ZW5TdHlsZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0VXBDb2x1bW5Nb25pdG9yaW5nKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNUYWJsZVZpc2libGUgJiYgISF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUYWJsZVZpc2libGUgJiYgIXRoaXMudGFibGUuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwVGFibGVFdmVudHMoKSB7XG4gICAgICAgIHRoaXMudGFibGUub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29sUmVzaXplKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudGFibGUub25Sb3dFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBSb3dSZXNpemVNb25pdG9yaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHZlcnNpb24gb2YgQW5ndWxhci9UeXBlc2NyaXB0IGRvZXMgbm90IHJlY29nbml6ZSB0aGUgb2JqZWN0IFJlc2l6ZU9ic2VydmVyIGFuZCBicmVha3MgYnVpbGRcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyID0gbmV3ICh3aW5kb3cgYXMgYW55KS5SZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5SGVpZ2h0Rm9yRXhwYW5kZWRSb3dzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGRzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxzVGRzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtdW5mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgdGRzVG9BZGp1c3QuZm9yRWFjaCgodGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZDogSFRNTEVsZW1lbnQgPSBvcmlnaW5hbHNUZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHRkLmlubmVySFRNTCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGQuc3R5bGUucGFkZGluZyA9IFwiMHB4XCI7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIub2JzZXJ2ZShvcmlnaW5hbFRkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwQ29sdW1uTW9uaXRvcmluZygpIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpXTtcbiAgICAgICAgdGFibGVIZWFkcy5mb3JFYWNoKCh0YWJsZUhlYWQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5vYnNlcnZlKHRhYmxlSGVhZCwge1xuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGFibGVXcmFwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLlRBQkxFX1NDUk9MTEFCTEVfV1JBUFBFUl9DTEFTUyk7XG4gICAgICAgIGlmICh0YWJsZVdyYXBlcikge1xuICAgICAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFibGVXcmFwZXIsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMudGFibGVXcmFwcGVyT2JzZXJ2ZXIgPSBtdXRhdGlvbk9ic2VydmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpIHtcbiAgICAgICAgY29uc3QgZnJvemVuVERzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICBjb25zdCB1bkZyb3plblREcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgZnJvemVuVERzVG9BZGp1c3QuZm9yRWFjaCgoZnJvemVuVGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plblREOiBIVE1MRWxlbWVudCA9IHVuRnJvemVuVERzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHVuZnJvemVuSGVpZ2h0ID0gdW5mcm96ZW5URC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBmcm96ZW5IZWlnaHQgPSBmcm96ZW5UZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh1bmZyb3plbkhlaWdodCAtIGZyb3plbkhlaWdodCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgZnJvemVuVGQuc3R5bGUuaGVpZ2h0ID0gYCR7dW5mcm96ZW5IZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIGZyb3plblRkLmlubmVySFRNTCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlTdHlsZXNGb3JUYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsV3JhcHBlciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuVEFCTEVfU0NST0xMQUJMRV9XUkFQUEVSX0NMQVNTKTtcbiAgICAgICAgaWYgKCFzY3JvbGxXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBzY3JvbGwtd3JhcHBlciBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJyb3dcIjtcblxuICAgICAgICBjb25zdCBmcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLWZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIWZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBmcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUub3JkZXIgPSBcIjFcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyUmlnaHQgPSBcIm5vbmVcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyTGVmdCA9IFwiMXB4IHNvbGlkICNkZGRkZGRcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm94U2hhZG93ID0gXCItNXB4IDAgNXB4IC01cHggI2NjY2NjY1wiO1xuXG4gICAgICAgIGNvbnN0IHVuZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS11bmZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIXVuZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHVuZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZnJvemVuVGFibGUuc3R5bGUucG9zaXRpb24gPSBcInVuc2V0XCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVXaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNvbFJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY2hyb25pemVSb3dIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keVdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWJvZHlcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9kaWVzID0gWy4uLnRhYmxlQm9keVdyYXBwZXJzXS5tYXAoZGl2V3JhcHBlciA9PiBbLi4uZGl2V3JhcHBlci5jaGlsZE5vZGVzXS5maW5kKHAgPT4gcC50YWdOYW1lID09PSBcIlRBQkxFXCIpKTtcbiAgICAgICAgdGhpcy5fcmVzZXRSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuICAgICAgICB0aGlzLl9hcHBseU1heFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG5cbiAgICAgICAgY29uc3QgdGFibGVIZWFkV3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtaGVhZGVyLWJveFwiKTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50YWJsZUhlYWRXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMuX3Jlc2V0Um93SGVpZ2h0KHRhYmxlSGVhZHMpO1xuICAgICAgICB0aGlzLl9hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGlmICghdGFibGVzIHx8ICF0YWJsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGhzID0gdGFibGVzLm1hcCh0YWJsZSA9PiB0YWJsZS5yb3dzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IGxlbmd0aHMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBNYXRoLm1heChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSwgbGVuZ3Roc1swXSk7XG4gICAgICAgIGNvbnN0IG1pbkxlbmd0aCA9IGxlbmd0aHMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBNYXRoLm1pbihhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSwgbGVuZ3Roc1swXSk7XG5cbiAgICAgICAgaWYgKG1heExlbmd0aCAhPT0gbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgbnVtYmVyIG9mIHJvd3MgaW4gYm90aCB0YWJsZXMgbXVzdCBiZSB0aGUgc2FtZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzWzBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdHJzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgICAgIHRycy5wdXNoKHRhYmxlLnJvd3NbaV0gYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1heCA9IHRycy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUpID0+XG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpLCB0cnNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0cnMpIHtcbiAgICAgICAgICAgICAgICB0ci5zdHlsZS5oZWlnaHQgPSBgJHttYXh9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzZXRSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIHJvdy5zdHlsZS5oZWlnaHQgPSBcInVuc2V0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=