@teselagen/react-table 6.10.15 → 6.10.16

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.
package/es/index.js CHANGED
@@ -49,32 +49,6 @@ var ReactTable = function (_Methods) {
49
49
  _this.resizeColumnEnd = _this.resizeColumnEnd.bind(_this);
50
50
  _this.resizeColumnMoving = _this.resizeColumnMoving.bind(_this);
51
51
 
52
- setTimeout(function () {
53
- // tnw: this is some very hacky code to set the initial column widths
54
- try {
55
- var newResized = _this.props.defaultResized || [];
56
- _this.tableRef.querySelectorAll('.tg-react-table-column-header').forEach(function (th) {
57
- var _th$parentNode$parent = th.parentNode.parentNode.getBoundingClientRect(),
58
- width = _th$parentNode$parent.width;
59
-
60
- var id = th.getAttribute('data-path');
61
- if (!newResized.find(function (x) {
62
- return x.id === id;
63
- })) {
64
- newResized.push({
65
- id: id,
66
- value: width
67
- });
68
- }
69
- });
70
- _this.setState({
71
- resized: newResized
72
- });
73
- } catch (e) {
74
- console.warn('TNW: Error setting initial table column widths (please contact @tnrich if you see this error. thanks!):', e);
75
- }
76
- }, 0);
77
-
78
52
  _this.state = {
79
53
  page: props.defaultPage,
80
54
  pageSize: props.defaultPageSize,
@@ -847,4 +821,4 @@ var ReactTable = function (_Methods) {
847
821
  ReactTable.propTypes = propTypes;
848
822
  ReactTable.defaultProps = defaultProps;
849
823
  export default ReactTable;
850
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNsYXNzbmFtZXMiLCJSZWFjdExpc3QiLCJfIiwiTGlmZWN5Y2xlIiwiTWV0aG9kcyIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIml0ZW1TaXplRXN0aW1hdG9yIiwiUmVhY3RUYWJsZURlZmF1bHRzIiwiUmVhY3RUYWJsZSIsInByb3BzIiwiZ2V0UmVzb2x2ZWRTdGF0ZSIsImJpbmQiLCJnZXREYXRhTW9kZWwiLCJnZXRTb3J0ZWREYXRhIiwiZmlyZUZldGNoRGF0YSIsImdldFByb3BPclN0YXRlIiwiZ2V0U3RhdGVPclByb3AiLCJmaWx0ZXJEYXRhIiwic29ydERhdGEiLCJnZXRNaW5Sb3dzIiwib25QYWdlQ2hhbmdlIiwib25QYWdlU2l6ZUNoYW5nZSIsInNvcnRDb2x1bW4iLCJmaWx0ZXJDb2x1bW4iLCJyZXNpemVDb2x1bW5TdGFydCIsInJlc2l6ZUNvbHVtbkVuZCIsInJlc2l6ZUNvbHVtbk1vdmluZyIsInNldFRpbWVvdXQiLCJuZXdSZXNpemVkIiwiZGVmYXVsdFJlc2l6ZWQiLCJ0YWJsZVJlZiIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwidGgiLCJwYXJlbnROb2RlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJpZCIsImdldEF0dHJpYnV0ZSIsImZpbmQiLCJ4IiwicHVzaCIsInZhbHVlIiwic2V0U3RhdGUiLCJyZXNpemVkIiwiZSIsImNvbnNvbGUiLCJ3YXJuIiwic3RhdGUiLCJwYWdlIiwiZGVmYXVsdFBhZ2UiLCJwYWdlU2l6ZSIsImRlZmF1bHRQYWdlU2l6ZSIsInNvcnRlZCIsImRlZmF1bHRTb3J0ZWQiLCJleHBhbmRlZCIsImRlZmF1bHRFeHBhbmRlZCIsImZpbHRlcmVkIiwiZGVmYXVsdEZpbHRlcmVkIiwiY3VycmVudGx5UmVzaXppbmciLCJza2lwTmV4dFNvcnQiLCJyZXNvbHZlZFN0YXRlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdHlsZSIsImdldFByb3BzIiwiZ2V0VGFibGVQcm9wcyIsImdldFRoZWFkR3JvdXBQcm9wcyIsImdldFRoZWFkR3JvdXBUclByb3BzIiwiZ2V0VGhlYWRHcm91cFRoUHJvcHMiLCJnZXRUaGVhZFByb3BzIiwiZ2V0VGhlYWRUclByb3BzIiwiZ2V0VGhlYWRUaFByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJQcm9wcyIsImdldFRoZWFkRmlsdGVyVHJQcm9wcyIsImdldFRoZWFkRmlsdGVyVGhQcm9wcyIsImdldFRib2R5UHJvcHMiLCJnZXRUckdyb3VwUHJvcHMiLCJnZXRUclByb3BzIiwiZ2V0VGRQcm9wcyIsImdldFRmb290UHJvcHMiLCJnZXRUZm9vdFRyUHJvcHMiLCJnZXRUZm9vdFRkUHJvcHMiLCJnZXRQYWdpbmF0aW9uUHJvcHMiLCJnZXRMb2FkaW5nUHJvcHMiLCJnZXROb0RhdGFQcm9wcyIsImdldFJlc2l6ZXJQcm9wcyIsInNob3dQYWdpbmF0aW9uIiwic2hvd1BhZ2luYXRpb25Ub3AiLCJzaG93UGFnaW5hdGlvbkJvdHRvbSIsIm1hbnVhbCIsImxvYWRpbmdUZXh0Iiwibm9EYXRhVGV4dCIsInNvcnRhYmxlIiwibXVsdGlTb3J0IiwicmVzaXphYmxlIiwiZmlsdGVyYWJsZSIsInBpdm90SURLZXkiLCJwaXZvdFZhbEtleSIsInBpdm90QnkiLCJzdWJSb3dzS2V5IiwiYWdncmVnYXRlZEtleSIsIm9yaWdpbmFsS2V5IiwiaW5kZXhLZXkiLCJncm91cGVkQnlQaXZvdEtleSIsImxvYWRpbmciLCJwYWdlcyIsIm9uRXhwYW5kZWRDaGFuZ2UiLCJUYWJsZUNvbXBvbmVudCIsIlRoZWFkQ29tcG9uZW50IiwiVGJvZHlDb21wb25lbnQiLCJhZGRpdGlvbmFsQm9keUVsIiwiVHJHcm91cENvbXBvbmVudCIsIlRyQ29tcG9uZW50IiwiVGhDb21wb25lbnQiLCJUZENvbXBvbmVudCIsIlRmb290Q29tcG9uZW50IiwiUGFnaW5hdGlvbkNvbXBvbmVudCIsIkxvYWRpbmdDb21wb25lbnQiLCJTdWJDb21wb25lbnQiLCJOb0RhdGFDb21wb25lbnQiLCJSZXNpemVyQ29tcG9uZW50IiwiRXhwYW5kZXJDb21wb25lbnQiLCJQaXZvdFZhbHVlQ29tcG9uZW50IiwiUGl2b3RDb21wb25lbnQiLCJBZ2dyZWdhdGVkQ29tcG9uZW50IiwiRmlsdGVyQ29tcG9uZW50IiwiUGFkUm93Q29tcG9uZW50IiwicmVzb2x2ZWREYXRhIiwiYWxsVmlzaWJsZUNvbHVtbnMiLCJoZWFkZXJHcm91cHMiLCJoYXNIZWFkZXJHcm91cHMiLCJzb3J0ZWREYXRhIiwic3RhcnRSb3ciLCJlbmRSb3ciLCJwYWdlUm93cyIsInNsaWNlIiwibWluUm93cyIsInBhZFJvd3MiLCJyYW5nZSIsIk1hdGgiLCJtYXgiLCJsZW5ndGgiLCJoYXNDb2x1bW5Gb290ZXIiLCJzb21lIiwiZCIsIkZvb3RlciIsImhhc0ZpbHRlcnMiLCJyZWN1cnNlUm93c1ZpZXdJbmRleCIsInJvd3MiLCJwYXRoIiwiaW5kZXgiLCJtYXAiLCJyb3ciLCJpIiwicm93V2l0aFZpZXdJbmRleCIsIl92aWV3SW5kZXgiLCJuZXdQYXRoIiwiY29uY2F0IiwiZ2V0IiwiY2FuUHJldmlvdXMiLCJjYW5OZXh0Iiwicm93TWluV2lkdGgiLCJzdW0iLCJyZXNpemVkQ29sdW1uIiwiZ2V0Rmlyc3REZWZpbmVkIiwibWluV2lkdGgiLCJyb3dJbmRleCIsImZpbmFsU3RhdGUiLCJyb290UHJvcHMiLCJzcGxpdFByb3BzIiwidW5kZWZpbmVkIiwidGFibGVQcm9wcyIsInRCb2R5UHJvcHMiLCJsb2FkaW5nUHJvcHMiLCJub0RhdGFQcm9wcyIsIm1ha2VIZWFkZXJHcm91cCIsImNvbHVtbiIsInJlc2l6ZWRWYWx1ZSIsImNvbCIsImZsZXgiLCJjb2x1bW5zIiwibWF4V2lkdGgiLCJ0aGVhZEdyb3VwVGhQcm9wcyIsImNvbHVtbkhlYWRlclByb3BzIiwiZ2V0SGVhZGVyUHJvcHMiLCJjbGFzc2VzIiwiaGVhZGVyQ2xhc3NOYW1lIiwic3R5bGVzIiwiaGVhZGVyU3R5bGUiLCJyZXN0IiwiZmxleFN0eWxlcyIsImFzUHgiLCJub3JtYWxpemVDb21wb25lbnQiLCJIZWFkZXIiLCJkYXRhIiwibWFrZUhlYWRlckdyb3VwcyIsInRoZWFkR3JvdXBQcm9wcyIsInRoZWFkR3JvdXBUclByb3BzIiwibWFrZUhlYWRlciIsInJlc2l6ZWRDb2wiLCJzb3J0Iiwic2hvdyIsInRoZWFkVGhQcm9wcyIsImlzUmVzaXphYmxlIiwicmVzaXplciIsImlzU29ydGFibGUiLCJkZXNjIiwiaW5jbHVkZXMiLCJzaGlmdEtleSIsIm1ha2VIZWFkZXJzIiwidGhlYWRQcm9wcyIsInRoZWFkVHJQcm9wcyIsIm1ha2VGaWx0ZXIiLCJ0aGVhZEZpbHRlclRoUHJvcHMiLCJmaWx0ZXIiLCJSZXNvbHZlZEZpbHRlckNvbXBvbmVudCIsIkZpbHRlciIsImlzRmlsdGVyYWJsZSIsIm9uQ2hhbmdlIiwibWFrZUZpbHRlcnMiLCJ0aGVhZEZpbHRlclByb3BzIiwidGhlYWRGaWx0ZXJUclByb3BzIiwibWFrZVBhZ2VSb3ciLCJyb3dJbmZvIiwib3JpZ2luYWwiLCJ2aWV3SW5kZXgiLCJsZXZlbCIsIm5lc3RpbmdQYXRoIiwiYWdncmVnYXRlZCIsImdyb3VwZWRCeVBpdm90Iiwic3ViUm93cyIsImlzRXhwYW5kZWQiLCJ0ckdyb3VwUHJvcHMiLCJ0clByb3BzIiwiam9pbiIsImkyIiwidGRQcm9wcyIsImNvbHVtblByb3BzIiwiY2VsbEluZm8iLCJwaXZvdGVkIiwiZXhwYW5kZXIiLCJ1c2VPbkV4cGFuZGVyQ2xpY2siLCJpc0JyYW5jaCIsImlzUHJldmlldyIsIm9uRXhwYW5kZXJDbGljayIsIm5ld0V4cGFuZGVkIiwiY2xvbmUiLCJzZXQiLCJzZXRTdGF0ZVdpdGhEYXRhIiwicmVzb2x2ZWRDZWxsIiwiQ2VsbCIsIlJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWQiLCJhZ2dyZWdhdGUiLCJSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50IiwiRXhwYW5kZXIiLCJSZXNvbHZlZFBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdFZhbHVlIiwiRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnQiLCJSZXNvbHZlZFBpdm90Q29tcG9uZW50IiwiUGl2b3QiLCJleHBhbmRhYmxlIiwiaW5kZXhPZiIsInJlc29sdmVkT25FeHBhbmRlckNsaWNrIiwiaW50ZXJhY3Rpb25Qcm9wcyIsIm9uQ2xpY2siLCJtYWtlUGFkQ29sdW1uIiwibWFrZVBhZFJvdyIsIm1ha2VDb2x1bW5Gb290ZXIiLCJ0Rm9vdFRkUHJvcHMiLCJjb2x1bW5Gb290ZXJQcm9wcyIsImdldEZvb3RlclByb3BzIiwibWFrZUNvbHVtbkZvb3RlcnMiLCJ0Rm9vdFByb3BzIiwidEZvb3RUclByb3BzIiwibWFrZVBhZ2luYXRpb24iLCJwYWdpbmF0aW9uUHJvcHMiLCJpc1RvcCIsIm1ha2VUYWJsZSIsInIiLCJyZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixZQUF2QjtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsdUJBQXRCO0FBQ0EsT0FBT0MsQ0FBUCxNQUFjLFNBQWQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGFBQXRCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsZ0JBQXpCO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixhQUF0Qjs7QUFFQSxJQUFNQyxvQkFBb0IsU0FBcEJBLGlCQUFvQjtBQUFBLFNBQU0sS0FBTjtBQUFBLENBQTFCO0FBQ0EsT0FBTyxJQUFNQyxxQkFBcUJILFlBQTNCOztJQUVjSSxVOzs7QUFJbkIsc0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFBQTs7QUFHbEIsVUFBS0MsZ0JBQUwsR0FBd0IsTUFBS0EsZ0JBQUwsQ0FBc0JDLElBQXRCLE9BQXhCO0FBQ0EsVUFBS0MsWUFBTCxHQUFvQixNQUFLQSxZQUFMLENBQWtCRCxJQUFsQixPQUFwQjtBQUNBLFVBQUtFLGFB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QW9DLGFBQWFkLFdBQWpELElBQWtFbUYsWUFBbEU7QUF0REYsU0FEZ0I7QUFBQSxPQUFsQjs7QUEyREE7QUFDQSxhQUFPaEgsV0FBV0EsU0FBUzBHLFVBQVQsRUFBcUIrRyxTQUFyQixFQUFnQyxJQUFoQyxDQUFYLEdBQW1EQSxXQUExRDtBQUNEOzs7O0VBajRCcUNwUixRQUFRRCxVQUFVSixTQUFWLENBQVIsQzs7QUFBbkJVLFUsQ0FDWkgsUyxHQUFZQSxTO0FBREFHLFUsQ0FFWkosWSxHQUFlQSxZO2VBRkhJLFUiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IFJlYWN0TGlzdCBmcm9tICdAdGVzZWxhZ2VuL3JlYWN0LWxpc3QnXG5pbXBvcnQgXyBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IExpZmVjeWNsZSBmcm9tICcuL2xpZmVjeWNsZSdcbmltcG9ydCBNZXRob2RzIGZyb20gJy4vbWV0aG9kcydcbmltcG9ydCBkZWZhdWx0UHJvcHMgZnJvbSAnLi9kZWZhdWx0UHJvcHMnXG5pbXBvcnQgcHJvcFR5cGVzIGZyb20gJy4vcHJvcFR5cGVzJ1xuXG5jb25zdCBpdGVtU2l6ZUVzdGltYXRvciA9ICgpID0+IDQxLjM2XG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURlZmF1bHRzID0gZGVmYXVsdFByb3BzXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWN0VGFibGUgZXh0ZW5kcyBNZXRob2RzKExpZmVjeWNsZShDb21wb25lbnQpKSB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wc1xuXG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXREYXRhTW9kZWwgPSB0aGlzLmdldERhdGFNb2RlbC5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRTb3J0ZWREYXRhID0gdGhpcy5nZXRTb3J0ZWREYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLmZpcmVGZXRjaERhdGEgPSB0aGlzLmZpcmVGZXRjaERhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0UHJvcE9yU3RhdGUgPSB0aGlzLmdldFByb3BPclN0YXRlLmJpbmQodGhpcylcbiAgICB0aGlzLmdldFN0YXRlT3JQcm9wID0gdGhpcy5nZXRTdGF0ZU9yUHJvcC5iaW5kKHRoaXMpXG4gICAgdGhpcy5maWx0ZXJEYXRhID0gdGhpcy5maWx0ZXJEYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLnNvcnREYXRhID0gdGhpcy5zb3J0RGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRNaW5Sb3dzID0gdGhpcy5nZXRNaW5Sb3dzLmJpbmQodGhpcylcbiAgICB0aGlzLm9uUGFnZUNoYW5nZSA9IHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcylcbiAgICB0aGlzLm9uUGFnZVNpemVDaGFuZ2UgPSB0aGlzLm9uUGFnZVNpemVDaGFuZ2UuYmluZCh0aGlzKVxuICAgIHRoaXMuc29ydENvbHVtbiA9IHRoaXMuc29ydENvbHVtbi5iaW5kKHRoaXMpXG4gICAgdGhpcy5maWx0ZXJDb2x1bW4gPSB0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpXG4gICAgdGhpcy5yZXNpemVDb2x1bW5TdGFydCA9IHRoaXMucmVzaXplQ29sdW1uU3RhcnQuYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uRW5kID0gdGhpcy5yZXNpemVDb2x1bW5FbmQuYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uTW92aW5nID0gdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcuYmluZCh0aGlzKVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyB0bnc6IHRoaXMgaXMgc29tZSB2ZXJ5IGhhY2t5IGNvZGUgdG8gc2V0IHRoZSBpbml0aWFsIGNvbHVtbiB3aWR0aHNcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld1Jlc2l6ZWQgPSB0aGlzLnByb3BzLmRlZmF1bHRSZXNpemVkIHx8IFtdXG4gICAgICAgIHRoaXMudGFibGVSZWYucXVlcnlTZWxlY3RvckFsbCgnLnRnLXJlYWN0LXRhYmxlLWNvbHVtbi1oZWFkZXInKS5mb3JFYWNoKHRoID0+IHtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aC5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICBjb25zdCBpZCA9IHRoLmdldEF0dHJpYnV0ZSgnZGF0YS1wYXRoJylcbiAgICAgICAgICBpZiAoIW5ld1Jlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGlkKSkge1xuICAgICAgICAgICAgbmV3UmVzaXplZC5wdXNoKHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIHZhbHVlOiB3aWR0aCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICByZXNpemVkOiBuZXdSZXNpemVkLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ROVzogRXJyb3Igc2V0dGluZyBpbml0aWFsIHRhYmxlIGNvbHVtbiB3aWR0aHMgKHBsZWFzZSBjb250YWN0IEB0bnJpY2ggaWYgeW91IHNlZSB0aGlzIGVycm9yLiB0aGFua3MhKTonLCBlKVxuICAgICAgfVxuICAgIH0sIDApXG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgcGFnZTogcHJvcHMuZGVmYXVsdFBhZ2UsXG4gICAgICBwYWdlU2l6ZTogcHJvcHMuZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgc29ydGVkOiBwcm9wcy5kZWZhdWx0U29ydGVkLFxuICAgICAgZXhwYW5kZWQ6IHByb3BzLmRlZmF1bHRFeHBhbmRlZCxcbiAgICAgIGZpbHRlcmVkOiBwcm9wcy5kZWZhdWx0RmlsdGVyZWQsXG4gICAgICByZXNpemVkOiBwcm9wcy5kZWZhdWx0UmVzaXplZCxcbiAgICAgIGN1cnJlbnRseVJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIHNraXBOZXh0U29ydDogZmFsc2UsXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlKClcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlLFxuICAgICAgZ2V0UHJvcHMsXG4gICAgICBnZXRUYWJsZVByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFRyUHJvcHMsXG4gICAgICBnZXRUaGVhZEdyb3VwVGhQcm9wcyxcbiAgICAgIGdldFRoZWFkUHJvcHMsXG4gICAgICBnZXRUaGVhZFRyUHJvcHMsXG4gICAgICBnZXRUaGVhZFRoUHJvcHMsXG4gICAgICBnZXRUaGVhZEZpbHRlclByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJUaFByb3BzLFxuICAgICAgZ2V0VGJvZHlQcm9wcyxcbiAgICAgIGdldFRyR3JvdXBQcm9wcyxcbiAgICAgIGdldFRyUHJvcHMsXG4gICAgICBnZXRUZFByb3BzLFxuICAgICAgZ2V0VGZvb3RQcm9wcyxcbiAgICAgIGdldFRmb290VHJQcm9wcyxcbiAgICAgIGdldFRmb290VGRQcm9wcyxcbiAgICAgIGdldFBhZ2luYXRpb25Qcm9wcyxcbiAgICAgIGdldExvYWRpbmdQcm9wcyxcbiAgICAgIGdldE5vRGF0YVByb3BzLFxuICAgICAgZ2V0UmVzaXplclByb3BzLFxuICAgICAgc2hvd1BhZ2luYXRpb24sXG4gICAgICBzaG93UGFnaW5hdGlvblRvcCxcbiAgICAgIHNob3dQYWdpbmF0aW9uQm90dG9tLFxuICAgICAgbWFudWFsLFxuICAgICAgbG9hZGluZ1RleHQsXG4gICAgICBub0RhdGFUZXh0LFxuICAgICAgc29ydGFibGUsXG4gICAgICBtdWx0aVNvcnQsXG4gICAgICByZXNpemFibGUsXG4gICAgICBmaWx0ZXJhYmxlLFxuICAgICAgLy8gUGl2b3RpbmcgU3RhdGVcbiAgICAgIHBpdm90SURLZXksXG4gICAgICBwaXZvdFZhbEtleSxcbiAgICAgIHBpdm90QnksXG4gICAgICBzdWJSb3dzS2V5LFxuICAgICAgYWdncmVnYXRlZEtleSxcbiAgICAgIG9yaWdpbmFsS2V5LFxuICAgICAgaW5kZXhLZXksXG4gICAgICBncm91cGVkQnlQaXZvdEtleSxcbiAgICAgIC8vIFN0YXRlXG4gICAgICBsb2FkaW5nLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBwYWdlLFxuICAgICAgc29ydGVkLFxuICAgICAgZmlsdGVyZWQsXG4gICAgICByZXNpemVkLFxuICAgICAgZXhwYW5kZWQsXG4gICAgICBwYWdlcyxcbiAgICAgIG9uRXhwYW5kZWRDaGFuZ2UsXG4gICAgICAvLyBDb21wb25lbnRzXG4gICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgIFRoZWFkQ29tcG9uZW50LFxuICAgICAgVGJvZHlDb21wb25lbnQsXG4gICAgICBhZGRpdGlvbmFsQm9keUVsLFxuICAgICAgVHJHcm91cENvbXBvbmVudCxcbiAgICAgIFRyQ29tcG9uZW50LFxuICAgICAgVGhDb21wb25lbnQsXG4gICAgICBUZENvbXBvbmVudCxcbiAgICAgIFRmb290Q29tcG9uZW50LFxuICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgICBTdWJDb21wb25lbnQsXG4gICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICBSZXNpemVyQ29tcG9uZW50LFxuICAgICAgRXhwYW5kZXJDb21wb25lbnQsXG4gICAgICBQaXZvdFZhbHVlQ29tcG9uZW50LFxuICAgICAgUGl2b3RDb21wb25lbnQsXG4gICAgICBBZ2dyZWdhdGVkQ29tcG9uZW50LFxuICAgICAgRmlsdGVyQ29tcG9uZW50LFxuICAgICAgUGFkUm93Q29tcG9uZW50LFxuICAgICAgLy8gRGF0YSBtb2RlbFxuICAgICAgcmVzb2x2ZWREYXRhLFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMsXG4gICAgICBoZWFkZXJHcm91cHMsXG4gICAgICBoYXNIZWFkZXJHcm91cHMsXG4gICAgICAvLyBTb3J0ZWQgRGF0YVxuICAgICAgc29ydGVkRGF0YSxcbiAgICAgIGN1cnJlbnRseVJlc2l6aW5nLFxuICAgIH0gPSByZXNvbHZlZFN0YXRlXG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgY29uc3Qgc3RhcnRSb3cgPSBwYWdlU2l6ZSAqIHBhZ2VcbiAgICBjb25zdCBlbmRSb3cgPSBzdGFydFJvdyArIHBhZ2VTaXplXG4gICAgbGV0IHBhZ2VSb3dzID0gbWFudWFsID8gcmVzb2x2ZWREYXRhIDogc29ydGVkRGF0YS5zbGljZShzdGFydFJvdywgZW5kUm93KVxuICAgIGNvbnN0IG1pblJvd3MgPSB0aGlzLmdldE1pblJvd3MoKVxuICAgIGNvbnN0IHBhZFJvd3MgPSBfLnJhbmdlKE1hdGgubWF4KG1pblJvd3MgLSBwYWdlUm93cy5sZW5ndGgsIDApKVxuXG4gICAgY29uc3QgaGFzQ29sdW1uRm9vdGVyID0gYWxsVmlzaWJsZUNvbHVtbnMuc29tZShkID0+IGQuRm9vdGVyKVxuICAgIGNvbnN0IGhhc0ZpbHRlcnMgPSBmaWx0ZXJhYmxlIHx8IGFsbFZpc2libGVDb2x1bW5zLnNvbWUoZCA9PiBkLmZpbHRlcmFibGUpXG5cbiAgICBjb25zdCByZWN1cnNlUm93c1ZpZXdJbmRleCA9IChyb3dzLCBwYXRoID0gW10sIGluZGV4ID0gLTEpID0+IFtcbiAgICAgIHJvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICBjb25zdCByb3dXaXRoVmlld0luZGV4ID0ge1xuICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICBfdmlld0luZGV4OiBpbmRleCxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdQYXRoID0gcGF0aC5jb25jYXQoW2ldKVxuICAgICAgICBpZiAocm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSAmJiBfLmdldChleHBhbmRlZCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICBbcm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSwgaW5kZXhdID0gcmVjdXJzZVJvd3NWaWV3SW5kZXgoXG4gICAgICAgICAgICByb3dXaXRoVmlld0luZGV4W3N1YlJvd3NLZXldLFxuICAgICAgICAgICAgbmV3UGF0aCxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dXaXRoVmlld0luZGV4XG4gICAgICB9KSxcbiAgICAgIGluZGV4LFxuICAgIF07XG4gICAgW3BhZ2VSb3dzXSA9IHJlY3Vyc2VSb3dzVmlld0luZGV4KHBhZ2VSb3dzKVxuXG4gICAgY29uc3QgY2FuUHJldmlvdXMgPSBwYWdlID4gMFxuICAgIGNvbnN0IGNhbk5leHQgPSBwYWdlICsgMSA8IHBhZ2VzXG5cbiAgICBjb25zdCByb3dNaW5XaWR0aCA9IF8uc3VtKFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCByZXNpemVkQ29sdW1uID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gZC5pZCkgfHwge31cbiAgICAgICAgcmV0dXJuIF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2x1bW4udmFsdWUsIGQud2lkdGgsIGQubWluV2lkdGgpXG4gICAgICB9KVxuICAgIClcblxuICAgIGxldCByb3dJbmRleCA9IC0xXG5cbiAgICBjb25zdCBmaW5hbFN0YXRlID0ge1xuICAgICAgLi4ucmVzb2x2ZWRTdGF0ZSxcbiAgICAgIHN0YXJ0Um93LFxuICAgICAgZW5kUm93LFxuICAgICAgcGFnZVJvd3MsXG4gICAgICBtaW5Sb3dzLFxuICAgICAgcGFkUm93cyxcbiAgICAgIGhhc0NvbHVtbkZvb3RlcixcbiAgICAgIGNhblByZXZpb3VzLFxuICAgICAgY2FuTmV4dCxcbiAgICAgIHJvd01pbldpZHRoLFxuICAgIH1cblxuICAgIGNvbnN0IHJvb3RQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgY29uc3QgdGFibGVQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUYWJsZVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICBjb25zdCB0Qm9keVByb3BzID0gXy5zcGxpdFByb3BzKGdldFRib2R5UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgIGNvbnN0IGxvYWRpbmdQcm9wcyA9IGdldExvYWRpbmdQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICBjb25zdCBub0RhdGFQcm9wcyA9IGdldE5vRGF0YVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuXG4gICAgLy8gVmlzdWFsIENvbXBvbmVudHNcblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cCA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRWYWx1ZSA9IGNvbCA9PiAocmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sLmlkKSB8fCB7fSkudmFsdWVcbiAgICAgIGNvbnN0IGZsZXggPSBfLnN1bShcbiAgICAgICAgY29sdW1uLmNvbHVtbnMubWFwKGNvbCA9PiAoY29sLndpZHRoIHx8IHJlc2l6ZWRWYWx1ZShjb2wpID8gMCA6IGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCB3aWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5tYXhXaWR0aCkpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0SGVhZGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIGNvbHVtbi5oZWFkZXJDbGFzc05hbWUsXG4gICAgICAgIHRoZWFkR3JvdXBUaFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uSGVhZGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLmNvbHVtbi5oZWFkZXJTdHlsZSxcbiAgICAgICAgLi4udGhlYWRHcm91cFRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEdyb3VwVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBmbGV4U3R5bGVzID0ge1xuICAgICAgICBmbGV4OiBgJHtmbGV4fSAwIGF1dG9gLFxuICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIC4uLmZsZXhTdHlsZXMsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uSGVhZGVyLCB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVhZEdyb3VwUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkR3JvdXBQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlckdyb3VwcycsIHRoZWFkR3JvdXBQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50aGVhZEdyb3VwUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRoZWFkR3JvdXBQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkR3JvdXBUclByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGVhZEdyb3VwVHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50aGVhZEdyb3VwVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtoZWFkZXJHcm91cHMubWFwKG1ha2VIZWFkZXJHcm91cCl9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNvcnQgPSBzb3J0ZWQuZmluZChkID0+IGQuaWQgPT09IGNvbHVtbi5pZClcbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRUaFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRoZWFkVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW2NvbHVtbi5oZWFkZXJDbGFzc05hbWUsIHRoZWFkVGhQcm9wcy5jbGFzc05hbWUsIGNvbHVtbkhlYWRlclByb3BzLmNsYXNzTmFtZV1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi5jb2x1bW4uaGVhZGVyU3R5bGUsXG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3QgPSB7XG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1Jlc2l6YWJsZSA9IF8uZ2V0Rmlyc3REZWZpbmVkKGNvbHVtbi5yZXNpemFibGUsIHJlc2l6YWJsZSwgZmFsc2UpXG4gICAgICBjb25zdCByZXNpemVyID0gaXNSZXNpemFibGUgPyAoXG4gICAgICAgIDxSZXNpemVyQ29tcG9uZW50XG4gICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIGZhbHNlKX1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIHRydWUpfVxuICAgICAgICAgIHsuLi5nZXRSZXNpemVyUHJvcHMoJ2ZpbmFsU3RhdGUnLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcyl9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbFxuXG4gICAgICBjb25zdCBpc1NvcnRhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLnNvcnRhYmxlLCBzb3J0YWJsZSwgZmFsc2UpXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgaXNSZXNpemFibGUgJiYgJ3J0LXJlc2l6YWJsZS1oZWFkZXInLFxuICAgICAgICAgICAgc29ydCA/IChzb3J0LmRlc2MgPyAnLXNvcnQtZGVzYycgOiAnLXNvcnQtYXNjJykgOiAnJyxcbiAgICAgICAgICAgIGlzU29ydGFibGUgJiYgJy1jdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICAhc2hvdyAmJiAnLWhpZGRlbicsXG4gICAgICAgICAgICBwaXZvdEJ5ICYmIHBpdm90Qnkuc2xpY2UoMCwgLTEpLmluY2x1ZGVzKGNvbHVtbi5pZCkgJiYgJ3J0LWhlYWRlci1waXZvdCdcbiAgICAgICAgICApfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB0b2dnbGVTb3J0PXtlID0+IHtcbiAgICAgICAgICAgIGlmIChpc1NvcnRhYmxlKSB0aGlzLnNvcnRDb2x1bW4oY29sdW1uLCBtdWx0aVNvcnQgPyBlLnNoaWZ0S2V5IDogZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGlzUmVzaXphYmxlICYmICdydC1yZXNpemFibGUtaGVhZGVyLWNvbnRlbnQnKX0+XG4gICAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkhlYWRlciwge1xuICAgICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cmVzaXplcn1cbiAgICAgICAgPC9UaENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRoZWFkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCB0aGVhZFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlcicsIHRoZWFkUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUhlYWRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlRmlsdGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEZpbHRlclRoUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW1xuICAgICAgICBjb2x1bW4uaGVhZGVyQ2xhc3NOYW1lLFxuICAgICAgICB0aGVhZEZpbHRlclRoUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5IZWFkZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4uY29sdW1uLmhlYWRlclN0eWxlLFxuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMucmVzdCxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMucmVzdCxcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyZWQuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSBjb2x1bW4uaWQpXG5cbiAgICAgIGNvbnN0IFJlc29sdmVkRmlsdGVyQ29tcG9uZW50ID0gY29sdW1uLkZpbHRlciB8fCBGaWx0ZXJDb21wb25lbnRcblxuICAgICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLmZpbHRlcmFibGUsIGZpbHRlcmFibGUsIGZhbHNlKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc0ZpbHRlcmFibGVcbiAgICAgICAgICAgID8gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgUmVzb2x2ZWRGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbHVlID0+IHRoaXMuZmlsdGVyQ29sdW1uKGNvbHVtbiwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFByb3BzLmNvbHVtbi5GaWx0ZXJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VGaWx0ZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkRmlsdGVyVHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoZWFkQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCctZmlsdGVycycsIHRoZWFkRmlsdGVyUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRGaWx0ZXJQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRGaWx0ZXJQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkRmlsdGVyVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRGaWx0ZXJUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkRmlsdGVyVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUZpbHRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFnZVJvdyA9IChyb3csIGksIHBhdGggPSBbXSkgPT4ge1xuICAgICAgY29uc3Qgcm93SW5mbyA9IHtcbiAgICAgICAgb3JpZ2luYWw6IHJvd1tvcmlnaW5hbEtleV0sXG4gICAgICAgIHJvdyxcbiAgICAgICAgaW5kZXg6IHJvd1tpbmRleEtleV0sXG4gICAgICAgIHZpZXdJbmRleDogKHJvd0luZGV4ICs9IDEpLFxuICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgcGFnZSxcbiAgICAgICAgbGV2ZWw6IHBhdGgubGVuZ3RoLFxuICAgICAgICBuZXN0aW5nUGF0aDogcGF0aC5jb25jYXQoW2ldKSxcbiAgICAgICAgYWdncmVnYXRlZDogcm93W2FnZ3JlZ2F0ZWRLZXldLFxuICAgICAgICBncm91cGVkQnlQaXZvdDogcm93W2dyb3VwZWRCeVBpdm90S2V5XSxcbiAgICAgICAgc3ViUm93czogcm93W3N1YlJvd3NLZXldLFxuICAgICAgfVxuICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IF8uZ2V0KGV4cGFuZGVkLCByb3dJbmZvLm5lc3RpbmdQYXRoKVxuICAgICAgY29uc3QgdHJHcm91cFByb3BzID0gZ2V0VHJHcm91cFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIGNvbnN0IHRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VHJQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRyR3JvdXBDb21wb25lbnQga2V5PXtyb3dJbmZvLm5lc3RpbmdQYXRoLmpvaW4oJ18nKX0gey4uLnRyR3JvdXBQcm9wc30+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModHJQcm9wcy5jbGFzc05hbWUsIHJvdy5fdmlld0luZGV4ICUgMiA/ICctZXZlbicgOiAnLW9kZCcpfVxuICAgICAgICAgICAgc3R5bGU9e3RyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAoKGNvbHVtbiwgaTIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgICAgICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgICAgICAgICBjb25zdCB0ZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRkUHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgY29sdW1uLCB0aGlzKSlcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIGNvbHVtbiwgdGhpcykpXG5cbiAgICAgICAgICAgICAgY29uc3QgY2xhc3NlcyA9IFt0ZFByb3BzLmNsYXNzTmFtZSwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgICAgICAuLi50ZFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNlbGxJbmZvID0ge1xuICAgICAgICAgICAgICAgIC4uLnJvd0luZm8sXG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHsgLi4uY29sdW1uIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJvd0luZm8ucm93W2NvbHVtbi5pZF0sXG4gICAgICAgICAgICAgICAgcGl2b3RlZDogY29sdW1uLnBpdm90ZWQsXG4gICAgICAgICAgICAgICAgZXhwYW5kZXI6IGNvbHVtbi5leHBhbmRlcixcbiAgICAgICAgICAgICAgICByZXNpemVkLFxuICAgICAgICAgICAgICAgIHNob3csXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgdGRQcm9wcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5Qcm9wcyxcbiAgICAgICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgICAgIHN0eWxlcyxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2VsbEluZm8udmFsdWVcblxuICAgICAgICAgICAgICBsZXQgdXNlT25FeHBhbmRlckNsaWNrXG4gICAgICAgICAgICAgIGxldCBpc0JyYW5jaFxuICAgICAgICAgICAgICBsZXQgaXNQcmV2aWV3XG5cbiAgICAgICAgICAgICAgY29uc3Qgb25FeHBhbmRlckNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0V4cGFuZGVkID0gXy5jbG9uZShleHBhbmRlZClcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgbmV3RXhwYW5kZWQgPSBfLnNldChuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGZhbHNlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBuZXdFeHBhbmRlZCA9IF8uc2V0KG5ld0V4cGFuZGVkLCBjZWxsSW5mby5uZXN0aW5nUGF0aCwge30pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGVXaXRoRGF0YShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5ld0V4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDaGFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRlZENoYW5nZShuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGUsIGNlbGxJbmZvKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gYSBzdGFuZGFyZCBjZWxsXG4gICAgICAgICAgICAgIGxldCByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uQ2VsbCwgY2VsbEluZm8sIHZhbHVlKVxuXG4gICAgICAgICAgICAgIC8vIFJlc29sdmUgUmVuZGVyZXJzXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCA9XG4gICAgICAgICAgICAgICAgY29sdW1uLkFnZ3JlZ2F0ZWQgfHwgKCFjb2x1bW4uYWdncmVnYXRlID8gQWdncmVnYXRlZENvbXBvbmVudCA6IGNvbHVtbi5DZWxsKVxuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50ID0gY29sdW1uLkV4cGFuZGVyIHx8IEV4cGFuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCA9IGNvbHVtbi5QaXZvdFZhbHVlIHx8IFBpdm90VmFsdWVDb21wb25lbnRcbiAgICAgICAgICAgICAgY29uc3QgRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnQgPVxuICAgICAgICAgICAgICAgIFBpdm90Q29tcG9uZW50IHx8XG4gICAgICAgICAgICAgICAgKHByb3BzID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgPFJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZFBpdm90Q29tcG9uZW50ID0gY29sdW1uLlBpdm90IHx8IERlZmF1bHRSZXNvbHZlZFBpdm90Q29tcG9uZW50XG5cbiAgICAgICAgICAgICAgLy8gSXMgdGhpcyBjZWxsIGV4cGFuZGFibGU/XG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkIHx8IGNlbGxJbmZvLmV4cGFuZGVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTWFrZSBpdCBleHBhbmRhYmxlIGJ5IGRlZnVhbHRcbiAgICAgICAgICAgICAgICBjZWxsSW5mby5leHBhbmRhYmxlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIHVzZU9uRXhwYW5kZXJDbGljayA9IHRydWVcbiAgICAgICAgICAgICAgICAvLyBJZiBwaXZvdGVkLCBoYXMgbm8gc3ViUm93cywgYW5kIGRvZXMgbm90IGhhdmUgYSBzdWJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IG1ha2UgZXhwYW5kYWJsZVxuICAgICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkICYmICFjZWxsSW5mby5zdWJSb3dzICYmICFTdWJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLmV4cGFuZGFibGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gSXMgdGhpcyBjb2x1bW4gYSBicmFuY2g/XG4gICAgICAgICAgICAgICAgaXNCcmFuY2ggPSByb3dJbmZvLnJvd1twaXZvdElES2V5XSA9PT0gY29sdW1uLmlkICYmIGNlbGxJbmZvLnN1YlJvd3NcbiAgICAgICAgICAgICAgICAvLyBTaG91bGQgdGhpcyBjb2x1bW4gYmUgYmxhbms/XG4gICAgICAgICAgICAgICAgaXNQcmV2aWV3ID1cbiAgICAgICAgICAgICAgICAgIHBpdm90QnkuaW5kZXhPZihjb2x1bW4uaWQpID4gcGl2b3RCeS5pbmRleE9mKHJvd0luZm8ucm93W3Bpdm90SURLZXldKSAmJlxuICAgICAgICAgICAgICAgICAgY2VsbEluZm8uc3ViUm93c1xuICAgICAgICAgICAgICAgIC8vIFBpdm90IENlbGwgUmVuZGVyIE92ZXJyaWRlXG4gICAgICAgICAgICAgICAgaWYgKGlzQnJhbmNoKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpc1Bpdm90XG4gICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZWRQaXZvdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmNlbGxJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbcGl2b3RWYWxLZXldLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByb3dbcGl2b3RWYWxLZXldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ByZXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIHBpdm90IHByZXZpZXdcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCwgY2VsbEluZm8sIHZhbHVlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNlbGxJbmZvLmFnZ3JlZ2F0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChSZXNvbHZlZEFnZ3JlZ2F0ZWRDb21wb25lbnQsIGNlbGxJbmZvLCB2YWx1ZSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5leHBhbmRlcikge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgUmVzb2x2ZWRFeHBhbmRlckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLFxuICAgICAgICAgICAgICAgICAgcm93W3Bpdm90VmFsS2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAocGl2b3RCeSkge1xuICAgICAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLmdyb3VwZWRCeVBpdm90KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICghY2VsbEluZm8uc3ViUm93cyAmJiAhU3ViQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZE9uRXhwYW5kZXJDbGljayA9IHVzZU9uRXhwYW5kZXJDbGljayA/IG9uRXhwYW5kZXJDbGljayA6ICgpID0+IHt9XG5cbiAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIG9uQ2xpY2sgZXZlbnRzLCBtYWtlIHN1cmUgdGhleSBkb24ndFxuICAgICAgICAgICAgICAvLyBvdmVycmlkZSBlYWNob3RoZXIuIFRoaXMgc2hvdWxkIG1heWJlIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGxcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gYXR0cmlidXRlc1xuICAgICAgICAgICAgICBjb25zdCBpbnRlcmFjdGlvblByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHJlc29sdmVkT25FeHBhbmRlckNsaWNrLFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRkUHJvcHMucmVzdC5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Qcm9wcy5vbkNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0ZFByb3BzLnJlc3Qub25DbGljayhlLCAoKSA9PiByZXNvbHZlZE9uRXhwYW5kZXJDbGljayhlKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY29sdW1uUHJvcHMucmVzdC5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Qcm9wcy5vbkNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW5Qcm9wcy5yZXN0Lm9uQ2xpY2soZSwgKCkgPT4gcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2soZSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBjZWxsXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2kyfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgICAhY2VsbEluZm8uZXhwYW5kYWJsZSAmJiAhc2hvdyAmJiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgY2VsbEluZm8uZXhwYW5kYWJsZSAmJiAncnQtZXhwYW5kYWJsZScsXG4gICAgICAgICAgICAgICAgICAgIChpc0JyYW5jaCB8fCBpc1ByZXZpZXcpICYmICdydC1waXZvdCdcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgey4uLnRkUHJvcHMucmVzdH1cbiAgICAgICAgICAgICAgICAgIHsuLi5jb2x1bW5Qcm9wcy5yZXN0fVxuICAgICAgICAgICAgICAgICAgey4uLmludGVyYWN0aW9uUHJvcHN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3Jlc29sdmVkQ2VsbH1cbiAgICAgICAgICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICAgIHtyb3dJbmZvLnN1YlJvd3MgJiZcbiAgICAgICAgICAgIGlzRXhwYW5kZWQgJiZcbiAgICAgICAgICAgIHJvd0luZm8uc3ViUm93cy5tYXAoKGQsIGkpID0+IG1ha2VQYWdlUm93KGQsIGksIHJvd0luZm8ubmVzdGluZ1BhdGgpKX1cbiAgICAgICAgICB7U3ViQ29tcG9uZW50ICYmXG4gICAgICAgICAgICAhcm93SW5mby5zdWJSb3dzICYmXG4gICAgICAgICAgICBpc0V4cGFuZGVkICYmXG4gICAgICAgICAgICBTdWJDb21wb25lbnQocm93SW5mbywgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdFeHBhbmRlZCA9IF8uY2xvbmUoZXhwYW5kZWQpXG5cbiAgICAgICAgICAgICAgXy5zZXQobmV3RXhwYW5kZWQsIHJvd0luZm8ubmVzdGluZ1BhdGgsIGZhbHNlKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvVHJHcm91cENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFkQ29sdW1uID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBmbGV4ID0gd2lkdGhcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICBjb25zdCB0ZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRkUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFt0ZFByb3BzLmNsYXNzTmFtZSwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLnRkUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3NlcywgIXNob3cgJiYgJ2hpZGRlbicpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHtmbGV4fSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50ZFByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoUGFkUm93Q29tcG9uZW50KX1cbiAgICAgICAgPC9UZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFkUm93ID0gKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgdHJHcm91cFByb3BzID0gZ2V0VHJHcm91cFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgY29uc3QgdHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUckdyb3VwQ29tcG9uZW50IGtleT17YHBhZC0ke2l9YH0gey4uLnRyR3JvdXBQcm9wc30+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICctcGFkUm93JyxcbiAgICAgICAgICAgICAgKHBhZ2VSb3dzLmxlbmd0aCArIGkpICUgMiA/ICctZXZlbicgOiAnLW9kZCcsXG4gICAgICAgICAgICAgIHRyUHJvcHMuY2xhc3NOYW1lXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc3R5bGU9e3RyUHJvcHMuc3R5bGUgfHwge319XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcChtYWtlUGFkQ29sdW1uKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1RyR3JvdXBDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUNvbHVtbkZvb3RlciA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICBjb25zdCBzaG93ID0gdHlwZW9mIGNvbHVtbi5zaG93ID09PSAnZnVuY3Rpb24nID8gY29sdW1uLnNob3coKSA6IGNvbHVtbi5zaG93XG4gICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRGb290VGRQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZm9vdFRkUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcbiAgICAgIGNvbnN0IGNvbHVtbkZvb3RlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIHRGb290VGRQcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtbi5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtblByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uRm9vdGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLnRGb290VGRQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uRm9vdGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3NlcywgIXNob3cgJiYgJ2hpZGRlbicpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4uY29sdW1uUHJvcHMucmVzdH1cbiAgICAgICAgICB7Li4udEZvb3RUZFByb3BzLnJlc3R9XG4gICAgICAgICAgey4uLmNvbHVtbkZvb3RlclByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkZvb3Rlciwge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlQ29sdW1uRm9vdGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRGb290UHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCB0Rm9vdFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZm9vdENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17dEZvb3RQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRGb290UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRGb290UHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRGb290VHJQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgc3R5bGU9e3RGb290VHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50Rm9vdFRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VDb2x1bW5Gb290ZXIpfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGZvb3RDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZ2luYXRpb24gPSBpc1RvcCA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFBhZ2luYXRpb25Qcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAgICAgICAgey4uLnJlc29sdmVkU3RhdGV9XG4gICAgICAgICAgcGFnZXM9e3BhZ2VzfVxuICAgICAgICAgIGNhblByZXZpb3VzPXtjYW5QcmV2aW91c31cbiAgICAgICAgICBjYW5OZXh0PXtjYW5OZXh0fVxuICAgICAgICAgIG9uUGFnZUNoYW5nZT17dGhpcy5vblBhZ2VDaGFuZ2V9XG4gICAgICAgICAgb25QYWdlU2l6ZUNoYW5nZT17dGhpcy5vblBhZ2VTaXplQ2hhbmdlfVxuICAgICAgICAgIGNsYXNzTmFtZT17cGFnaW5hdGlvblByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICBzdHlsZT17cGFnaW5hdGlvblByb3BzLnN0eWxlfVxuICAgICAgICAgIGlzVG9wPXtpc1RvcH1cbiAgICAgICAgICB7Li4ucGFnaW5hdGlvblByb3BzLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ1JlYWN0VGFibGUnLCBjbGFzc05hbWUsIHJvb3RQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgIC4uLnJvb3RQcm9wcy5zdHlsZSxcbiAgICAgICAgfX1cbiAgICAgICAgey4uLnJvb3RQcm9wcy5yZXN0fVxuICAgICAgICByZWY9e3IgPT4ge1xuICAgICAgICAgIGlmICghcikgcmV0dXJuXG4gICAgICAgICAgaWYgKHJvb3RQcm9wcy5yZXN0LnJlZikge1xuICAgICAgICAgICAgcm9vdFByb3BzLnJlc3QucmVmKHIpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudGFibGVSZWYgPSByXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtzaG93UGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvblRvcCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2luYXRpb24tdG9wXCI+e21ha2VQYWdpbmF0aW9uKHRydWUpfTwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFRhYmxlQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRhYmxlUHJvcHMuY2xhc3NOYW1lLCBjdXJyZW50bHlSZXNpemluZyA/ICdydC1yZXNpemluZycgOiAnJyl9XG4gICAgICAgICAgc3R5bGU9e3RhYmxlUHJvcHMuc3R5bGV9XG4gICAgICAgICAgey4uLnRhYmxlUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtoYXNIZWFkZXJHcm91cHMgPyBtYWtlSGVhZGVyR3JvdXBzKCkgOiBudWxsfVxuICAgICAgICAgIHttYWtlSGVhZGVycygpfVxuICAgICAgICAgIHtoYXNGaWx0ZXJzID8gbWFrZUZpbHRlcnMoKSA6IG51bGx9XG4gICAgICAgICAgPFRib2R5Q29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModEJvZHlQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLi4udEJvZHlQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4udEJvZHlQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFnZVJvd3MubGVuZ3RoIDwgMjAwID8gcGFnZVJvd3MubWFwKChkLCBpKSA9PiBtYWtlUGFnZVJvdyhkLCBpKSkgOlxuICAgICAgICAgICAgICA8UmVhY3RMaXN0XG4gICAgICAgICAgICAgICAgdHlwZT1cInZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICBpdGVtU2l6ZUVzdGltYXRvcj17dGhpcy5wcm9wcy5pdGVtU2l6ZUVzdGltYXRvciB8fCBpdGVtU2l6ZUVzdGltYXRvcn1cbiAgICAgICAgICAgICAgICBpdGVtUmVuZGVyZXI9e2kgPT4gbWFrZVBhZ2VSb3cocGFnZVJvd3NbaV0sIGkpfVxuICAgICAgICAgICAgICAgIGxlbmd0aD17cGFnZVJvd3MubGVuZ3RofVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge3BhZFJvd3MubWFwKG1ha2VQYWRSb3cpfVxuICAgICAgICAgICAge2FkZGl0aW9uYWxCb2R5RWx9XG4gICAgICAgICAgPC9UYm9keUNvbXBvbmVudD5cbiAgICAgICAgICB7aGFzQ29sdW1uRm9vdGVyID8gbWFrZUNvbHVtbkZvb3RlcnMoKSA6IG51bGx9XG4gICAgICAgIDwvVGFibGVDb21wb25lbnQ+XG4gICAgICAgIHtzaG93UGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvbkJvdHRvbSA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2luYXRpb24tYm90dG9tXCI+e21ha2VQYWdpbmF0aW9uKGZhbHNlKX08L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshcGFnZVJvd3MubGVuZ3RoICYmIChcbiAgICAgICAgICA8Tm9EYXRhQ29tcG9uZW50IHsuLi5ub0RhdGFQcm9wc30+e18ubm9ybWFsaXplQ29tcG9uZW50KG5vRGF0YVRleHQpfTwvTm9EYXRhQ29tcG9uZW50PlxuICAgICAgICApfVxuICAgICAgICA8TG9hZGluZ0NvbXBvbmVudCBsb2FkaW5nPXtsb2FkaW5nfSBsb2FkaW5nVGV4dD17bG9hZGluZ1RleHR9IHsuLi5sb2FkaW5nUHJvcHN9IC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICAvLyBjaGlsZFByb3BzIGFyZSBvcHRpb25hbGx5IHBhc3NlZCB0byBhIGZ1bmN0aW9uLWFzLWEtY2hpbGRcbiAgICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlbihmaW5hbFN0YXRlLCBtYWtlVGFibGUsIHRoaXMpIDogbWFrZVRhYmxlKClcbiAgfVxufVxuIl19
824
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNsYXNzbmFtZXMiLCJSZWFjdExpc3QiLCJfIiwiTGlmZWN5Y2xlIiwiTWV0aG9kcyIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIml0ZW1TaXplRXN0aW1hdG9yIiwiUmVhY3RUYWJsZURlZmF1bHRzIiwiUmVhY3RUYWJsZSIsInByb3BzIiwiZ2V0UmVzb2x2ZWRTdGF0ZSIsImJpbmQiLCJnZXREYXRhTW9kZWwiLCJnZXRTb3J0ZWREYXRhIiwiZmlyZUZldGNoRGF0YSIsImdldFByb3BPclN0YXRlIiwiZ2V0U3RhdGVPclByb3AiLCJmaWx0ZXJEYXRhIiwic29ydERhdGEiLCJnZXRNaW5Sb3dzIiwib25QYWdlQ2hhbmdlIiwib25QYWdlU2l6ZUNoYW5nZSIsInNvcnRDb2x1bW4iLCJmaWx0ZXJDb2x1bW4iLCJyZXNpemVDb2x1bW5TdGFydCIsInJlc2l6ZUNvbHVtbkVuZCIsInJlc2l6ZUNvbHVtbk1vdmluZyIsInN0YXRlIiwicGFnZSIsImRlZmF1bHRQYWdlIiwicGFnZVNpemUiLCJkZWZhdWx0UGFnZVNpemUiLCJzb3J0ZWQiLCJkZWZhdWx0U29ydGVkIiwiZXhwYW5kZWQiLCJkZWZhdWx0RXhwYW5kZWQiLCJmaWx0ZXJlZCIsImRlZmF1bHRGaWx0ZXJlZCIsInJlc2l6ZWQiLCJkZWZhdWx0UmVzaXplZCIsImN1cnJlbnRseVJlc2l6aW5nIiwic2tpcE5leHRTb3J0IiwicmVzb2x2ZWRTdGF0ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJnZXRQcm9wcyIsImdldFRhYmxlUHJvcHMiLCJnZXRUaGVhZEdyb3VwUHJvcHMiLCJnZXRUaGVhZEdyb3VwVHJQcm9wcyIsImdldFRoZWFkR3JvdXBUaFByb3BzIiwiZ2V0VGhlYWRQcm9wcyIsImdldFRoZWFkVHJQcm9wcyIsImdldFRoZWFkVGhQcm9wcyIsImdldFRoZWFkRmlsdGVyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRoUHJvcHMiLCJnZXRUYm9keVByb3BzIiwiZ2V0VHJHcm91cFByb3BzIiwiZ2V0VHJQcm9wcyIsImdldFRkUHJvcHMiLCJnZXRUZm9vdFByb3BzIiwiZ2V0VGZvb3RUclByb3BzIiwiZ2V0VGZvb3RUZFByb3BzIiwiZ2V0UGFnaW5hdGlvblByb3BzIiwiZ2V0TG9hZGluZ1Byb3BzIiwiZ2V0Tm9EYXRhUHJvcHMiLCJnZXRSZXNpemVyUHJvcHMiLCJzaG93UGFnaW5hdGlvbiIsInNob3dQYWdpbmF0aW9uVG9wIiwic2hvd1BhZ2luYXRpb25Cb3R0b20iLCJtYW51YWwiLCJsb2FkaW5nVGV4dCIsIm5vRGF0YVRleHQiLCJzb3J0YWJsZSIsIm11bHRpU29ydCIsInJlc2l6YWJsZSIsImZpbHRlcmFibGUiLCJwaXZvdElES2V5IiwicGl2b3RWYWxLZXkiLCJwaXZvdEJ5Iiwic3ViUm93c0tleSIsImFnZ3JlZ2F0ZWRLZXkiLCJvcmlnaW5hbEtleSIsImluZGV4S2V5IiwiZ3JvdXBlZEJ5UGl2b3RLZXkiLCJsb2FkaW5nIiwicGFnZXMiLCJvbkV4cGFuZGVkQ2hhbmdlIiwiVGFibGVDb21wb25lbnQiLCJUaGVhZENvbXBvbmVudCIsIlRib2R5Q29tcG9uZW50IiwiYWRkaXRpb25hbEJvZHlFbCIsIlRyR3JvdXBDb21wb25lbnQiLCJUckNvbXBvbmVudCIsIlRoQ29tcG9uZW50IiwiVGRDb21wb25lbnQiLCJUZm9vdENvbXBvbmVudCIsIlBhZ2luYXRpb25Db21wb25lbnQiLCJMb2FkaW5nQ29tcG9uZW50IiwiU3ViQ29tcG9uZW50IiwiTm9EYXRhQ29tcG9uZW50IiwiUmVzaXplckNvbXBvbmVudCIsIkV4cGFuZGVyQ29tcG9uZW50IiwiUGl2b3RWYWx1ZUNvbXBvbmVudCIsIlBpdm90Q29tcG9uZW50IiwiQWdncmVnYXRlZENvbXBvbmVudCIsIkZpbHRlckNvbXBvbmVudCIsIlBhZFJvd0NvbXBvbmVudCIsInJlc29sdmVkRGF0YSIsImFsbFZpc2libGVDb2x1bW5zIiwiaGVhZGVyR3JvdXBzIiwiaGFzSGVhZGVyR3JvdXBzIiwic29ydGVkRGF0YSIsInN0YXJ0Um93IiwiZW5kUm93IiwicGFnZVJvd3MiLCJzbGljZSIsIm1pblJvd3MiLCJwYWRSb3dzIiwicmFuZ2UiLCJNYXRoIiwibWF4IiwibGVuZ3RoIiwiaGFzQ29sdW1uRm9vdGVyIiwic29tZSIsImQiLCJGb290ZXIiLCJoYXNGaWx0ZXJzIiwicmVjdXJzZVJvd3NWaWV3SW5kZXgiLCJyb3dzIiwicGF0aCIsImluZGV4IiwibWFwIiwicm93IiwiaSIsInJvd1dpdGhWaWV3SW5kZXgiLCJfdmlld0luZGV4IiwibmV3UGF0aCIsImNvbmNhdCIsImdldCIsImNhblByZXZpb3VzIiwiY2FuTmV4dCIsInJvd01pbldpZHRoIiwic3VtIiwicmVzaXplZENvbHVtbiIsImZpbmQiLCJ4IiwiaWQiLCJnZXRGaXJzdERlZmluZWQiLCJ2YWx1ZSIsIndpZHRoIiwibWluV2lkdGgiLCJyb3dJbmRleCIsImZpbmFsU3RhdGUiLCJyb290UHJvcHMiLCJzcGxpdFByb3BzIiwidW5kZWZpbmVkIiwidGFibGVQcm9wcyIsInRCb2R5UHJvcHMiLCJsb2FkaW5nUHJvcHMiLCJub0RhdGFQcm9wcyIsIm1ha2VIZWFkZXJHcm91cCIsImNvbHVtbiIsInJlc2l6ZWRWYWx1ZSIsImNvbCIsImZsZXgiLCJjb2x1bW5zIiwibWF4V2lkdGgiLCJ0aGVhZEdyb3VwVGhQcm9wcyIsImNvbHVtbkhlYWRlclByb3BzIiwiZ2V0SGVhZGVyUHJvcHMiLCJjbGFzc2VzIiwiaGVhZGVyQ2xhc3NOYW1lIiwic3R5bGVzIiwiaGVhZGVyU3R5bGUiLCJyZXN0IiwiZmxleFN0eWxlcyIsImFzUHgiLCJub3JtYWxpemVDb21wb25lbnQiLCJIZWFkZXIiLCJkYXRhIiwibWFrZUhlYWRlckdyb3VwcyIsInRoZWFkR3JvdXBQcm9wcyIsInRoZWFkR3JvdXBUclByb3BzIiwibWFrZUhlYWRlciIsInJlc2l6ZWRDb2wiLCJzb3J0Iiwic2hvdyIsInRoZWFkVGhQcm9wcyIsImlzUmVzaXphYmxlIiwicmVzaXplciIsImUiLCJpc1NvcnRhYmxlIiwiZGVzYyIsImluY2x1ZGVzIiwic2hpZnRLZXkiLCJtYWtlSGVhZGVycyIsInRoZWFkUHJvcHMiLCJ0aGVhZFRyUHJvcHMiLCJtYWtlRmlsdGVyIiwidGhlYWRGaWx0ZXJUaFByb3BzIiwiZmlsdGVyIiwiUmVzb2x2ZWRGaWx0ZXJDb21wb25lbnQiLCJGaWx0ZXIiLCJpc0ZpbHRlcmFibGUiLCJvbkNoYW5nZSIsIm1ha2VGaWx0ZXJzIiwidGhlYWRGaWx0ZXJQcm9wcyIsInRoZWFkRmlsdGVyVHJQcm9wcyIsIm1ha2VQYWdlUm93Iiwicm93SW5mbyIsIm9yaWdpbmFsIiwidmlld0luZGV4IiwibGV2ZWwiLCJuZXN0aW5nUGF0aCIsImFnZ3JlZ2F0ZWQiLCJncm91cGVkQnlQaXZvdCIsInN1YlJvd3MiLCJpc0V4cGFuZGVkIiwidHJHcm91cFByb3BzIiwidHJQcm9wcyIsImpvaW4iLCJpMiIsInRkUHJvcHMiLCJjb2x1bW5Qcm9wcyIsImNlbGxJbmZvIiwicGl2b3RlZCIsImV4cGFuZGVyIiwidXNlT25FeHBhbmRlckNsaWNrIiwiaXNCcmFuY2giLCJpc1ByZXZpZXciLCJvbkV4cGFuZGVyQ2xpY2siLCJuZXdFeHBhbmRlZCIsImNsb25lIiwic2V0Iiwic2V0U3RhdGVXaXRoRGF0YSIsInJlc29sdmVkQ2VsbCIsIkNlbGwiLCJSZXNvbHZlZEFnZ3JlZ2F0ZWRDb21wb25lbnQiLCJBZ2dyZWdhdGVkIiwiYWdncmVnYXRlIiwiUmVzb2x2ZWRFeHBhbmRlckNvbXBvbmVudCIsIkV4cGFuZGVyIiwiUmVzb2x2ZWRQaXZvdFZhbHVlQ29tcG9uZW50IiwiUGl2b3RWYWx1ZSIsIkRlZmF1bHRSZXNvbHZlZFBpdm90Q29tcG9uZW50IiwiUmVzb2x2ZWRQaXZvdENvbXBvbmVudCIsIlBpdm90IiwiZXhwYW5kYWJsZSIsImluZGV4T2YiLCJyZXNvbHZlZE9uRXhwYW5kZXJDbGljayIsImludGVyYWN0aW9uUHJvcHMiLCJvbkNsaWNrIiwibWFrZVBhZENvbHVtbiIsIm1ha2VQYWRSb3ciLCJtYWtlQ29sdW1uRm9vdGVyIiwidEZvb3RUZFByb3BzIiwiY29sdW1uRm9vdGVyUHJvcHMiLCJnZXRGb290ZXJQcm9wcyIsIm1ha2VDb2x1bW5Gb290ZXJzIiwidEZvb3RQcm9wcyIsInRGb290VHJQcm9wcyIsIm1ha2VQYWdpbmF0aW9uIiwicGFnaW5hdGlvblByb3BzIiwiaXNUb3AiLCJtYWtlVGFibGUiLCJyIiwicmVmIiwidGFibGVSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixZQUF2QjtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsdUJBQXRCO0FBQ0EsT0FBT0MsQ0FBUCxNQUFjLFNBQWQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGFBQXRCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsZ0JBQXpCO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixhQUF0Qjs7QUFFQSxJQUFNQyxvQkFBb0IsU0FBcEJBLGlCQUFvQjtBQUFBLFNBQU0sS0FBTjtBQUFBLENBQTFCO0FBQ0EsT0FBTyxJQUFNQyxxQkFBcUJILFlBQTNCOztJQUVjSSxVOzs7QUFJbkIsc0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFBQTs7QUFHbEIsVUFBS0MsZ0JBQUwsR0FBd0IsTUFBS0EsZ0JBQUwsQ0FBc0JDLElBQXRCLE9BQXhCO0FBQ0EsVUFBS0MsWUFBTCxHQUFvQixNQUFLQSxZQUFMLENBQWtCRCxJQUFsQixPQUFwQjtBQUNBLFVBQUtFLGFBQUwsR0FBcUIsTUFBS0EsYUFBTCxDQUFtQkYsSUFBbkIsT0FBckI7QUFDQSxVQUFLRyxhQUFMLEdBQXFCLE1BQUtBLGFBQUwsQ0FBbUJILElBQW5CLE9BQXJCO0FBQ0EsVUFBS0ksY0FBTCxHQUFzQixNQUFLQSxjQUFMLENBQW9CSixJQUFwQixPQUF0QjtBQUNB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dUJBQXJCO0FBQW1DaEssY0FBRWtMLGtCQUFGLENBQXFCMUcsVUFBckI7QUFBbkMsV0FwREo7QUFzREUsOEJBQUMsZ0JBQUQsYUFBa0IsU0FBU2EsT0FBM0IsRUFBb0MsYUFBYWQsV0FBakQsSUFBa0V3RixZQUFsRTtBQXRERixTQURnQjtBQUFBLE9BQWxCOztBQTJEQTtBQUNBLGFBQU9ySCxXQUFXQSxTQUFTK0csVUFBVCxFQUFxQmdILFNBQXJCLEVBQWdDLElBQWhDLENBQVgsR0FBbURBLFdBQTFEO0FBQ0Q7Ozs7RUE1MkJxQ3ZRLFFBQVFELFVBQVVKLFNBQVYsQ0FBUixDOztBQUFuQlUsVSxDQUNaSCxTLEdBQVlBLFM7QUFEQUcsVSxDQUVaSixZLEdBQWVBLFk7ZUFGSEksVSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgUmVhY3RMaXN0IGZyb20gJ0B0ZXNlbGFnZW4vcmVhY3QtbGlzdCdcbmltcG9ydCBfIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgTGlmZWN5Y2xlIGZyb20gJy4vbGlmZWN5Y2xlJ1xuaW1wb3J0IE1ldGhvZHMgZnJvbSAnLi9tZXRob2RzJ1xuaW1wb3J0IGRlZmF1bHRQcm9wcyBmcm9tICcuL2RlZmF1bHRQcm9wcydcbmltcG9ydCBwcm9wVHlwZXMgZnJvbSAnLi9wcm9wVHlwZXMnXG5cbmNvbnN0IGl0ZW1TaXplRXN0aW1hdG9yID0gKCkgPT4gNDEuMzZcbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGVmYXVsdHMgPSBkZWZhdWx0UHJvcHNcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhY3RUYWJsZSBleHRlbmRzIE1ldGhvZHMoTGlmZWN5Y2xlKENvbXBvbmVudCkpIHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzXG5cbiAgY29uc3RydWN0b3IgKHByb3BzKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy5nZXRSZXNvbHZlZFN0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlLmJpbmQodGhpcylcbiAgICB0aGlzLmdldERhdGFNb2RlbCA9IHRoaXMuZ2V0RGF0YU1vZGVsLmJpbmQodGhpcylcbiAgICB0aGlzLmdldFNvcnRlZERhdGEgPSB0aGlzLmdldFNvcnRlZERhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuZmlyZUZldGNoRGF0YSA9IHRoaXMuZmlyZUZldGNoRGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRQcm9wT3JTdGF0ZSA9IHRoaXMuZ2V0UHJvcE9yU3RhdGUuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0U3RhdGVPclByb3AgPSB0aGlzLmdldFN0YXRlT3JQcm9wLmJpbmQodGhpcylcbiAgICB0aGlzLmZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckRhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuc29ydERhdGEgPSB0aGlzLnNvcnREYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLmdldE1pblJvd3MgPSB0aGlzLmdldE1pblJvd3MuYmluZCh0aGlzKVxuICAgIHRoaXMub25QYWdlQ2hhbmdlID0gdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKVxuICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZSA9IHRoaXMub25QYWdlU2l6ZUNoYW5nZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5zb3J0Q29sdW1uID0gdGhpcy5zb3J0Q29sdW1uLmJpbmQodGhpcylcbiAgICB0aGlzLmZpbHRlckNvbHVtbiA9IHRoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcylcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblN0YXJ0ID0gdGhpcy5yZXNpemVDb2x1bW5TdGFydC5iaW5kKHRoaXMpXG4gICAgdGhpcy5yZXNpemVDb2x1bW5FbmQgPSB0aGlzLnJlc2l6ZUNvbHVtbkVuZC5iaW5kKHRoaXMpXG4gICAgdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcgPSB0aGlzLnJlc2l6ZUNvbHVtbk1vdmluZy5iaW5kKHRoaXMpXG5cblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBwYWdlOiBwcm9wcy5kZWZhdWx0UGFnZSxcbiAgICAgIHBhZ2VTaXplOiBwcm9wcy5kZWZhdWx0UGFnZVNpemUsXG4gICAgICBzb3J0ZWQ6IHByb3BzLmRlZmF1bHRTb3J0ZWQsXG4gICAgICBleHBhbmRlZDogcHJvcHMuZGVmYXVsdEV4cGFuZGVkLFxuICAgICAgZmlsdGVyZWQ6IHByb3BzLmRlZmF1bHRGaWx0ZXJlZCxcbiAgICAgIHJlc2l6ZWQ6IHByb3BzLmRlZmF1bHRSZXNpemVkLFxuICAgICAgY3VycmVudGx5UmVzaXppbmc6IGZhbHNlLFxuICAgICAgc2tpcE5leHRTb3J0OiBmYWxzZSxcbiAgICB9XG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0aGlzLmdldFJlc29sdmVkU3RhdGUoKVxuICAgIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgc3R5bGUsXG4gICAgICBnZXRQcm9wcyxcbiAgICAgIGdldFRhYmxlUHJvcHMsXG4gICAgICBnZXRUaGVhZEdyb3VwUHJvcHMsXG4gICAgICBnZXRUaGVhZEdyb3VwVHJQcm9wcyxcbiAgICAgIGdldFRoZWFkR3JvdXBUaFByb3BzLFxuICAgICAgZ2V0VGhlYWRQcm9wcyxcbiAgICAgIGdldFRoZWFkVHJQcm9wcyxcbiAgICAgIGdldFRoZWFkVGhQcm9wcyxcbiAgICAgIGdldFRoZWFkRmlsdGVyUHJvcHMsXG4gICAgICBnZXRUaGVhZEZpbHRlclRyUHJvcHMsXG4gICAgICBnZXRUaGVhZEZpbHRlclRoUHJvcHMsXG4gICAgICBnZXRUYm9keVByb3BzLFxuICAgICAgZ2V0VHJHcm91cFByb3BzLFxuICAgICAgZ2V0VHJQcm9wcyxcbiAgICAgIGdldFRkUHJvcHMsXG4gICAgICBnZXRUZm9vdFByb3BzLFxuICAgICAgZ2V0VGZvb3RUclByb3BzLFxuICAgICAgZ2V0VGZvb3RUZFByb3BzLFxuICAgICAgZ2V0UGFnaW5hdGlvblByb3BzLFxuICAgICAgZ2V0TG9hZGluZ1Byb3BzLFxuICAgICAgZ2V0Tm9EYXRhUHJvcHMsXG4gICAgICBnZXRSZXNpemVyUHJvcHMsXG4gICAgICBzaG93UGFnaW5hdGlvbixcbiAgICAgIHNob3dQYWdpbmF0aW9uVG9wLFxuICAgICAgc2hvd1BhZ2luYXRpb25Cb3R0b20sXG4gICAgICBtYW51YWwsXG4gICAgICBsb2FkaW5nVGV4dCxcbiAgICAgIG5vRGF0YVRleHQsXG4gICAgICBzb3J0YWJsZSxcbiAgICAgIG11bHRpU29ydCxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICAgIGZpbHRlcmFibGUsXG4gICAgICAvLyBQaXZvdGluZyBTdGF0ZVxuICAgICAgcGl2b3RJREtleSxcbiAgICAgIHBpdm90VmFsS2V5LFxuICAgICAgcGl2b3RCeSxcbiAgICAgIHN1YlJvd3NLZXksXG4gICAgICBhZ2dyZWdhdGVkS2V5LFxuICAgICAgb3JpZ2luYWxLZXksXG4gICAgICBpbmRleEtleSxcbiAgICAgIGdyb3VwZWRCeVBpdm90S2V5LFxuICAgICAgLy8gU3RhdGVcbiAgICAgIGxvYWRpbmcsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIHBhZ2UsXG4gICAgICBzb3J0ZWQsXG4gICAgICBmaWx0ZXJlZCxcbiAgICAgIHJlc2l6ZWQsXG4gICAgICBleHBhbmRlZCxcbiAgICAgIHBhZ2VzLFxuICAgICAgb25FeHBhbmRlZENoYW5nZSxcbiAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgIFRhYmxlQ29tcG9uZW50LFxuICAgICAgVGhlYWRDb21wb25lbnQsXG4gICAgICBUYm9keUNvbXBvbmVudCxcbiAgICAgIGFkZGl0aW9uYWxCb2R5RWwsXG4gICAgICBUckdyb3VwQ29tcG9uZW50LFxuICAgICAgVHJDb21wb25lbnQsXG4gICAgICBUaENvbXBvbmVudCxcbiAgICAgIFRkQ29tcG9uZW50LFxuICAgICAgVGZvb3RDb21wb25lbnQsXG4gICAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgTG9hZGluZ0NvbXBvbmVudCxcbiAgICAgIFN1YkNvbXBvbmVudCxcbiAgICAgIE5vRGF0YUNvbXBvbmVudCxcbiAgICAgIFJlc2l6ZXJDb21wb25lbnQsXG4gICAgICBFeHBhbmRlckNvbXBvbmVudCxcbiAgICAgIFBpdm90VmFsdWVDb21wb25lbnQsXG4gICAgICBQaXZvdENvbXBvbmVudCxcbiAgICAgIEFnZ3JlZ2F0ZWRDb21wb25lbnQsXG4gICAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgICBQYWRSb3dDb21wb25lbnQsXG4gICAgICAvLyBEYXRhIG1vZGVsXG4gICAgICByZXNvbHZlZERhdGEsXG4gICAgICBhbGxWaXNpYmxlQ29sdW1ucyxcbiAgICAgIGhlYWRlckdyb3VwcyxcbiAgICAgIGhhc0hlYWRlckdyb3VwcyxcbiAgICAgIC8vIFNvcnRlZCBEYXRhXG4gICAgICBzb3J0ZWREYXRhLFxuICAgICAgY3VycmVudGx5UmVzaXppbmcsXG4gICAgfSA9IHJlc29sdmVkU3RhdGVcblxuICAgIC8vIFBhZ2luYXRpb25cbiAgICBjb25zdCBzdGFydFJvdyA9IHBhZ2VTaXplICogcGFnZVxuICAgIGNvbnN0IGVuZFJvdyA9IHN0YXJ0Um93ICsgcGFnZVNpemVcbiAgICBsZXQgcGFnZVJvd3MgPSBtYW51YWwgPyByZXNvbHZlZERhdGEgOiBzb3J0ZWREYXRhLnNsaWNlKHN0YXJ0Um93LCBlbmRSb3cpXG4gICAgY29uc3QgbWluUm93cyA9IHRoaXMuZ2V0TWluUm93cygpXG4gICAgY29uc3QgcGFkUm93cyA9IF8ucmFuZ2UoTWF0aC5tYXgobWluUm93cyAtIHBhZ2VSb3dzLmxlbmd0aCwgMCkpXG5cbiAgICBjb25zdCBoYXNDb2x1bW5Gb290ZXIgPSBhbGxWaXNpYmxlQ29sdW1ucy5zb21lKGQgPT4gZC5Gb290ZXIpXG4gICAgY29uc3QgaGFzRmlsdGVycyA9IGZpbHRlcmFibGUgfHwgYWxsVmlzaWJsZUNvbHVtbnMuc29tZShkID0+IGQuZmlsdGVyYWJsZSlcblxuICAgIGNvbnN0IHJlY3Vyc2VSb3dzVmlld0luZGV4ID0gKHJvd3MsIHBhdGggPSBbXSwgaW5kZXggPSAtMSkgPT4gW1xuICAgICAgcm93cy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICBpbmRleCArPSAxXG4gICAgICAgIGNvbnN0IHJvd1dpdGhWaWV3SW5kZXggPSB7XG4gICAgICAgICAgLi4ucm93LFxuICAgICAgICAgIF92aWV3SW5kZXg6IGluZGV4LFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChbaV0pXG4gICAgICAgIGlmIChyb3dXaXRoVmlld0luZGV4W3N1YlJvd3NLZXldICYmIF8uZ2V0KGV4cGFuZGVkLCBuZXdQYXRoKSkge1xuICAgICAgICAgIFtyb3dXaXRoVmlld0luZGV4W3N1YlJvd3NLZXldLCBpbmRleF0gPSByZWN1cnNlUm93c1ZpZXdJbmRleChcbiAgICAgICAgICAgIHJvd1dpdGhWaWV3SW5kZXhbc3ViUm93c0tleV0sXG4gICAgICAgICAgICBuZXdQYXRoLFxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvd1dpdGhWaWV3SW5kZXhcbiAgICAgIH0pLFxuICAgICAgaW5kZXgsXG4gICAgXTtcbiAgICBbcGFnZVJvd3NdID0gcmVjdXJzZVJvd3NWaWV3SW5kZXgocGFnZVJvd3MpXG5cbiAgICBjb25zdCBjYW5QcmV2aW91cyA9IHBhZ2UgPiAwXG4gICAgY29uc3QgY2FuTmV4dCA9IHBhZ2UgKyAxIDwgcGFnZXNcblxuICAgIGNvbnN0IHJvd01pbldpZHRoID0gXy5zdW0oXG4gICAgICBhbGxWaXNpYmxlQ29sdW1ucy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRDb2x1bW4gPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBkLmlkKSB8fCB7fVxuICAgICAgICByZXR1cm4gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbHVtbi52YWx1ZSwgZC53aWR0aCwgZC5taW5XaWR0aClcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgbGV0IHJvd0luZGV4ID0gLTFcblxuICAgIGNvbnN0IGZpbmFsU3RhdGUgPSB7XG4gICAgICAuLi5yZXNvbHZlZFN0YXRlLFxuICAgICAgc3RhcnRSb3csXG4gICAgICBlbmRSb3csXG4gICAgICBwYWdlUm93cyxcbiAgICAgIG1pblJvd3MsXG4gICAgICBwYWRSb3dzLFxuICAgICAgaGFzQ29sdW1uRm9vdGVyLFxuICAgICAgY2FuUHJldmlvdXMsXG4gICAgICBjYW5OZXh0LFxuICAgICAgcm93TWluV2lkdGgsXG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdFByb3BzID0gXy5zcGxpdFByb3BzKGdldFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICBjb25zdCB0YWJsZVByb3BzID0gXy5zcGxpdFByb3BzKGdldFRhYmxlUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgIGNvbnN0IHRCb2R5UHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGJvZHlQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgY29uc3QgbG9hZGluZ1Byb3BzID0gZ2V0TG9hZGluZ1Byb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgIGNvbnN0IG5vRGF0YVByb3BzID0gZ2V0Tm9EYXRhUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG5cbiAgICAvLyBWaXN1YWwgQ29tcG9uZW50c1xuXG4gICAgY29uc3QgbWFrZUhlYWRlckdyb3VwID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZFZhbHVlID0gY29sID0+IChyZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2wuaWQpIHx8IHt9KS52YWx1ZVxuICAgICAgY29uc3QgZmxleCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IChjb2wud2lkdGggfHwgcmVzaXplZFZhbHVlKGNvbCkgPyAwIDogY29sLm1pbldpZHRoKSlcbiAgICAgIClcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5zdW0oXG4gICAgICAgIGNvbHVtbi5jb2x1bW5zLm1hcChjb2wgPT4gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZFZhbHVlKGNvbCksIGNvbC53aWR0aCwgY29sLm1pbldpZHRoKSlcbiAgICAgIClcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5zdW0oXG4gICAgICAgIGNvbHVtbi5jb2x1bW5zLm1hcChjb2wgPT4gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZFZhbHVlKGNvbCksIGNvbC53aWR0aCwgY29sLm1heFdpZHRoKSlcbiAgICAgIClcblxuICAgICAgY29uc3QgdGhlYWRHcm91cFRoUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkR3JvdXBUaFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuICAgICAgY29uc3QgY29sdW1uSGVhZGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGNvbHVtbi5nZXRIZWFkZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFtcbiAgICAgICAgY29sdW1uLmhlYWRlckNsYXNzTmFtZSxcbiAgICAgICAgdGhlYWRHcm91cFRoUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5IZWFkZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4uY29sdW1uLmhlYWRlclN0eWxlLFxuICAgICAgICAuLi50aGVhZEdyb3VwVGhQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3QgPSB7XG4gICAgICAgIC4uLnRoZWFkR3JvdXBUaFByb3BzLnJlc3QsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnJlc3QsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZsZXhTdHlsZXMgPSB7XG4gICAgICAgIGZsZXg6IGAke2ZsZXh9IDAgYXV0b2AsXG4gICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgLi4uZmxleFN0eWxlcyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge18ubm9ybWFsaXplQ29tcG9uZW50KGNvbHVtbi5IZWFkZXIsIHtcbiAgICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGhDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUhlYWRlckdyb3VwcyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRHcm91cFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgY29uc3QgdGhlYWRHcm91cFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkR3JvdXBUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoZWFkQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCctaGVhZGVyR3JvdXBzJywgdGhlYWRHcm91cFByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRoZWFkR3JvdXBQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRHcm91cFByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17dGhlYWRHcm91cFRyUHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgICAgc3R5bGU9e3RoZWFkR3JvdXBUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkR3JvdXBUclByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2hlYWRlckdyb3Vwcy5tYXAobWFrZUhlYWRlckdyb3VwKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1RoZWFkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VIZWFkZXIgPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgY29uc3Qgc29ydCA9IHNvcnRlZC5maW5kKGQgPT4gZC5pZCA9PT0gY29sdW1uLmlkKVxuICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICBjb25zdCB0aGVhZFRoUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRUaFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0SGVhZGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbY29sdW1uLmhlYWRlckNsYXNzTmFtZSwgdGhlYWRUaFByb3BzLmNsYXNzTmFtZSwgY29sdW1uSGVhZGVyUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLmNvbHVtbi5oZWFkZXJTdHlsZSxcbiAgICAgICAgLi4udGhlYWRUaFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdCA9IHtcbiAgICAgICAgLi4udGhlYWRUaFByb3BzLnJlc3QsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnJlc3QsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzUmVzaXphYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLnJlc2l6YWJsZSwgcmVzaXphYmxlLCBmYWxzZSlcbiAgICAgIGNvbnN0IHJlc2l6ZXIgPSBpc1Jlc2l6YWJsZSA/IChcbiAgICAgICAgPFJlc2l6ZXJDb21wb25lbnRcbiAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLnJlc2l6ZUNvbHVtblN0YXJ0KGUsIGNvbHVtbiwgZmFsc2UpfVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17ZSA9PiB0aGlzLnJlc2l6ZUNvbHVtblN0YXJ0KGUsIGNvbHVtbiwgdHJ1ZSl9XG4gICAgICAgICAgey4uLmdldFJlc2l6ZXJQcm9wcygnZmluYWxTdGF0ZScsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsXG5cbiAgICAgIGNvbnN0IGlzU29ydGFibGUgPSBfLmdldEZpcnN0RGVmaW5lZChjb2x1bW4uc29ydGFibGUsIHNvcnRhYmxlLCBmYWxzZSlcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICBpc1Jlc2l6YWJsZSAmJiAncnQtcmVzaXphYmxlLWhlYWRlcicsXG4gICAgICAgICAgICBzb3J0ID8gKHNvcnQuZGVzYyA/ICctc29ydC1kZXNjJyA6ICctc29ydC1hc2MnKSA6ICcnLFxuICAgICAgICAgICAgaXNTb3J0YWJsZSAmJiAnLWN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgICFzaG93ICYmICctaGlkZGVuJyxcbiAgICAgICAgICAgIHBpdm90QnkgJiYgcGl2b3RCeS5zbGljZSgwLCAtMSkuaW5jbHVkZXMoY29sdW1uLmlkKSAmJiAncnQtaGVhZGVyLXBpdm90J1xuICAgICAgICAgICl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHRvZ2dsZVNvcnQ9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGlzU29ydGFibGUpIHRoaXMuc29ydENvbHVtbihjb2x1bW4sIG11bHRpU29ydCA/IGUuc2hpZnRLZXkgOiBmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoaXNSZXNpemFibGUgJiYgJ3J0LXJlc2l6YWJsZS1oZWFkZXItY29udGVudCcpfT5cbiAgICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uSGVhZGVyLCB7XG4gICAgICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtyZXNpemVyfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VIZWFkZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGhlYWRQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUaGVhZFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIGNvbnN0IHRoZWFkVHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUaGVhZFRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoZWFkQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCctaGVhZGVyJywgdGhlYWRQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50aGVhZFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50aGVhZFByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17dGhlYWRUclByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGVhZFRyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udGhlYWRUclByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcChtYWtlSGVhZGVyKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1RoZWFkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VGaWx0ZXIgPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICBjb25zdCB0aGVhZEZpbHRlclRoUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkRmlsdGVyVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0SGVhZGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIGNvbHVtbi5oZWFkZXJDbGFzc05hbWUsXG4gICAgICAgIHRoZWFkRmlsdGVyVGhQcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtbkhlYWRlclByb3BzLmNsYXNzTmFtZSxcbiAgICAgIF1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi5jb2x1bW4uaGVhZGVyU3R5bGUsXG4gICAgICAgIC4uLnRoZWFkRmlsdGVyVGhQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3QgPSB7XG4gICAgICAgIC4uLnRoZWFkRmlsdGVyVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJlZC5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09IGNvbHVtbi5pZClcblxuICAgICAgY29uc3QgUmVzb2x2ZWRGaWx0ZXJDb21wb25lbnQgPSBjb2x1bW4uRmlsdGVyIHx8IEZpbHRlckNvbXBvbmVudFxuXG4gICAgICBjb25zdCBpc0ZpbHRlcmFibGUgPSBfLmdldEZpcnN0RGVmaW5lZChjb2x1bW4uZmlsdGVyYWJsZSwgZmlsdGVyYWJsZSwgZmFsc2UpXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge2lzRmlsdGVyYWJsZVxuICAgICAgICAgICAgPyBfLm5vcm1hbGl6ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICBSZXNvbHZlZEZpbHRlckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdmFsdWUgPT4gdGhpcy5maWx0ZXJDb2x1bW4oY29sdW1uLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0UHJvcHMuY29sdW1uLkZpbHRlclxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGx9XG4gICAgICAgIDwvVGhDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVhZEZpbHRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEZpbHRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJUclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEZpbHRlclRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhlYWRDb21wb25lbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJy1maWx0ZXJzJywgdGhlYWRGaWx0ZXJQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50aGVhZEZpbHRlclByb3BzLnN0eWxlLFxuICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50aGVhZEZpbHRlclByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17dGhlYWRGaWx0ZXJUclByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGVhZEZpbHRlclRyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udGhlYWRGaWx0ZXJUclByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcChtYWtlRmlsdGVyKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1RoZWFkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWdlUm93ID0gKHJvdywgaSwgcGF0aCA9IFtdKSA9PiB7XG4gICAgICBjb25zdCByb3dJbmZvID0ge1xuICAgICAgICBvcmlnaW5hbDogcm93W29yaWdpbmFsS2V5XSxcbiAgICAgICAgcm93LFxuICAgICAgICBpbmRleDogcm93W2luZGV4S2V5XSxcbiAgICAgICAgdmlld0luZGV4OiAocm93SW5kZXggKz0gMSksXG4gICAgICAgIHBhZ2VTaXplLFxuICAgICAgICBwYWdlLFxuICAgICAgICBsZXZlbDogcGF0aC5sZW5ndGgsXG4gICAgICAgIG5lc3RpbmdQYXRoOiBwYXRoLmNvbmNhdChbaV0pLFxuICAgICAgICBhZ2dyZWdhdGVkOiByb3dbYWdncmVnYXRlZEtleV0sXG4gICAgICAgIGdyb3VwZWRCeVBpdm90OiByb3dbZ3JvdXBlZEJ5UGl2b3RLZXldLFxuICAgICAgICBzdWJSb3dzOiByb3dbc3ViUm93c0tleV0sXG4gICAgICB9XG4gICAgICBjb25zdCBpc0V4cGFuZGVkID0gXy5nZXQoZXhwYW5kZWQsIHJvd0luZm8ubmVzdGluZ1BhdGgpXG4gICAgICBjb25zdCB0ckdyb3VwUHJvcHMgPSBnZXRUckdyb3VwUHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgY29uc3QgdHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUclByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VHJHcm91cENvbXBvbmVudCBrZXk9e3Jvd0luZm8ubmVzdGluZ1BhdGguam9pbignXycpfSB7Li4udHJHcm91cFByb3BzfT5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh0clByb3BzLmNsYXNzTmFtZSwgcm93Ll92aWV3SW5kZXggJSAyID8gJy1ldmVuJyA6ICctb2RkJyl9XG4gICAgICAgICAgICBzdHlsZT17dHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50clByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcCgoY29sdW1uLCBpMikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgICAgICAgICBjb25zdCBzaG93ID0gdHlwZW9mIGNvbHVtbi5zaG93ID09PSAnZnVuY3Rpb24nID8gY29sdW1uLnNob3coKSA6IGNvbHVtbi5zaG93XG4gICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICAgICAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICAgICAgICAgIGNvbnN0IHRkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGRQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgICAgICAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IF8uc3BsaXRQcm9wcyhjb2x1bW4uZ2V0UHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgY29sdW1uLCB0aGlzKSlcblxuICAgICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gW3RkUHJvcHMuY2xhc3NOYW1lLCBjb2x1bW4uY2xhc3NOYW1lLCBjb2x1bW5Qcm9wcy5jbGFzc05hbWVdXG5cbiAgICAgICAgICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnRkUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAgICAgLi4uY29sdW1uLnN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLmNvbHVtblByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgY2VsbEluZm8gPSB7XG4gICAgICAgICAgICAgICAgLi4ucm93SW5mbyxcbiAgICAgICAgICAgICAgICBpc0V4cGFuZGVkLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogeyAuLi5jb2x1bW4gfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcm93SW5mby5yb3dbY29sdW1uLmlkXSxcbiAgICAgICAgICAgICAgICBwaXZvdGVkOiBjb2x1bW4ucGl2b3RlZCxcbiAgICAgICAgICAgICAgICBleHBhbmRlcjogY29sdW1uLmV4cGFuZGVyLFxuICAgICAgICAgICAgICAgIHJlc2l6ZWQsXG4gICAgICAgICAgICAgICAgc2hvdyxcbiAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aCxcbiAgICAgICAgICAgICAgICB0ZFByb3BzLFxuICAgICAgICAgICAgICAgIGNvbHVtblByb3BzLFxuICAgICAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICAgICAgc3R5bGVzLFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjZWxsSW5mby52YWx1ZVxuXG4gICAgICAgICAgICAgIGxldCB1c2VPbkV4cGFuZGVyQ2xpY2tcbiAgICAgICAgICAgICAgbGV0IGlzQnJhbmNoXG4gICAgICAgICAgICAgIGxldCBpc1ByZXZpZXdcblxuICAgICAgICAgICAgICBjb25zdCBvbkV4cGFuZGVyQ2xpY2sgPSBlID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RXhwYW5kZWQgPSBfLmNsb25lKGV4cGFuZGVkKVxuICAgICAgICAgICAgICAgIGlmIChpc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICBuZXdFeHBhbmRlZCA9IF8uc2V0KG5ld0V4cGFuZGVkLCBjZWxsSW5mby5uZXN0aW5nUGF0aCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG5ld0V4cGFuZGVkID0gXy5zZXQobmV3RXhwYW5kZWQsIGNlbGxJbmZvLm5lc3RpbmdQYXRoLCB7fSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZDogbmV3RXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRlZENoYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZGVkQ2hhbmdlKG5ld0V4cGFuZGVkLCBjZWxsSW5mby5uZXN0aW5nUGF0aCwgZSwgY2VsbEluZm8pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBhIHN0YW5kYXJkIGNlbGxcbiAgICAgICAgICAgICAgbGV0IHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KGNvbHVtbi5DZWxsLCBjZWxsSW5mbywgdmFsdWUpXG5cbiAgICAgICAgICAgICAgLy8gUmVzb2x2ZSBSZW5kZXJlcnNcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50ID1cbiAgICAgICAgICAgICAgICBjb2x1bW4uQWdncmVnYXRlZCB8fCAoIWNvbHVtbi5hZ2dyZWdhdGUgPyBBZ2dyZWdhdGVkQ29tcG9uZW50IDogY29sdW1uLkNlbGwpXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQgPSBjb2x1bW4uRXhwYW5kZXIgfHwgRXhwYW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRQaXZvdFZhbHVlQ29tcG9uZW50ID0gY29sdW1uLlBpdm90VmFsdWUgfHwgUGl2b3RWYWx1ZUNvbXBvbmVudFxuICAgICAgICAgICAgICBjb25zdCBEZWZhdWx0UmVzb2x2ZWRQaXZvdENvbXBvbmVudCA9XG4gICAgICAgICAgICAgICAgUGl2b3RDb21wb25lbnQgfHxcbiAgICAgICAgICAgICAgICAocHJvcHMgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPFJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQgey4uLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8UmVzb2x2ZWRQaXZvdFZhbHVlQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkUGl2b3RDb21wb25lbnQgPSBjb2x1bW4uUGl2b3QgfHwgRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnRcblxuICAgICAgICAgICAgICAvLyBJcyB0aGlzIGNlbGwgZXhwYW5kYWJsZT9cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQgfHwgY2VsbEluZm8uZXhwYW5kZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBNYWtlIGl0IGV4cGFuZGFibGUgYnkgZGVmdWFsdFxuICAgICAgICAgICAgICAgIGNlbGxJbmZvLmV4cGFuZGFibGUgPSB0cnVlXG4gICAgICAgICAgICAgICAgdXNlT25FeHBhbmRlckNsaWNrID0gdHJ1ZVxuICAgICAgICAgICAgICAgIC8vIElmIHBpdm90ZWQsIGhhcyBubyBzdWJSb3dzLCBhbmQgZG9lcyBub3QgaGF2ZSBhIHN1YkNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAvLyBkbyBub3QgbWFrZSBleHBhbmRhYmxlXG4gICAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQgJiYgIWNlbGxJbmZvLnN1YlJvd3MgJiYgIVN1YkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgY2VsbEluZm8uZXhwYW5kYWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIGNvbHVtbiBhIGJyYW5jaD9cbiAgICAgICAgICAgICAgICBpc0JyYW5jaCA9IHJvd0luZm8ucm93W3Bpdm90SURLZXldID09PSBjb2x1bW4uaWQgJiYgY2VsbEluZm8uc3ViUm93c1xuICAgICAgICAgICAgICAgIC8vIFNob3VsZCB0aGlzIGNvbHVtbiBiZSBibGFuaz9cbiAgICAgICAgICAgICAgICBpc1ByZXZpZXcgPVxuICAgICAgICAgICAgICAgICAgcGl2b3RCeS5pbmRleE9mKGNvbHVtbi5pZCkgPiBwaXZvdEJ5LmluZGV4T2Yocm93SW5mby5yb3dbcGl2b3RJREtleV0pICYmXG4gICAgICAgICAgICAgICAgICBjZWxsSW5mby5zdWJSb3dzXG4gICAgICAgICAgICAgICAgLy8gUGl2b3QgQ2VsbCBSZW5kZXIgT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICBpZiAoaXNCcmFuY2gpIHtcbiAgICAgICAgICAgICAgICAgIC8vIGlzUGl2b3RcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlZFBpdm90Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2VsbEluZm8sXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJvd1twaXZvdFZhbEtleV0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJvd1twaXZvdFZhbEtleV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgLy8gU2hvdyB0aGUgcGl2b3QgcHJldmlld1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50LCBjZWxsSW5mbywgdmFsdWUpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2VsbEluZm8uYWdncmVnYXRlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCwgY2VsbEluZm8sIHZhbHVlKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLmV4cGFuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICBSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgY2VsbEluZm8sXG4gICAgICAgICAgICAgICAgICByb3dbcGl2b3RWYWxLZXldXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChwaXZvdEJ5KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoY2VsbEluZm8uZ3JvdXBlZEJ5UGl2b3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsSW5mby5zdWJSb3dzICYmICFTdWJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkT25FeHBhbmRlckNsaWNrID0gdXNlT25FeHBhbmRlckNsaWNrID8gb25FeHBhbmRlckNsaWNrIDogKCkgPT4ge31cblxuICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25DbGljayBldmVudHMsIG1ha2Ugc3VyZSB0aGV5IGRvbid0XG4gICAgICAgICAgICAgIC8vIG92ZXJyaWRlIGVhY2hvdGhlci4gVGhpcyBzaG91bGQgbWF5YmUgYmUgZXhwYW5kZWQgdG8gaGFuZGxlIGFsbFxuICAgICAgICAgICAgICAvLyBmdW5jdGlvbiBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aW9uUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgb25DbGljazogcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2ssXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGRQcm9wcy5yZXN0Lm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvblByb3BzLm9uQ2xpY2sgPSBlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRkUHJvcHMucmVzdC5vbkNsaWNrKGUsICgpID0+IHJlc29sdmVkT25FeHBhbmRlckNsaWNrKGUpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5Qcm9wcy5yZXN0Lm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvblByb3BzLm9uQ2xpY2sgPSBlID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtblByb3BzLnJlc3Qub25DbGljayhlLCAoKSA9PiByZXNvbHZlZE9uRXhwYW5kZXJDbGljayhlKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGNlbGxcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VGRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7aTJ9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICAgICAgICAgICFjZWxsSW5mby5leHBhbmRhYmxlICYmICFzaG93ICYmICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICBjZWxsSW5mby5leHBhbmRhYmxlICYmICdydC1leHBhbmRhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoIHx8IGlzUHJldmlldykgJiYgJ3J0LXBpdm90J1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgICAgICAgICAgZmxleDogYCR7d2lkdGh9IDAgYXV0b2AsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7Li4udGRQcm9wcy5yZXN0fVxuICAgICAgICAgICAgICAgICAgey4uLmNvbHVtblByb3BzLnJlc3R9XG4gICAgICAgICAgICAgICAgICB7Li4uaW50ZXJhY3Rpb25Qcm9wc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7cmVzb2x2ZWRDZWxsfVxuICAgICAgICAgICAgICAgIDwvVGRDb21wb25lbnQ+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgICAge3Jvd0luZm8uc3ViUm93cyAmJlxuICAgICAgICAgICAgaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgcm93SW5mby5zdWJSb3dzLm1hcCgoZCwgaSkgPT4gbWFrZVBhZ2VSb3coZCwgaSwgcm93SW5mby5uZXN0aW5nUGF0aCkpfVxuICAgICAgICAgIHtTdWJDb21wb25lbnQgJiZcbiAgICAgICAgICAgICFyb3dJbmZvLnN1YlJvd3MgJiZcbiAgICAgICAgICAgIGlzRXhwYW5kZWQgJiZcbiAgICAgICAgICAgIFN1YkNvbXBvbmVudChyb3dJbmZvLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0V4cGFuZGVkID0gXy5jbG9uZShleHBhbmRlZClcblxuICAgICAgICAgICAgICBfLnNldChuZXdFeHBhbmRlZCwgcm93SW5mby5uZXN0aW5nUGF0aCwgZmFsc2UpXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9Uckdyb3VwQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWRDb2x1bW4gPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgIGNvbnN0IGZsZXggPSB3aWR0aFxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IF8uc3BsaXRQcm9wcyhjb2x1bW4uZ2V0UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW3RkUHJvcHMuY2xhc3NOYW1lLCBjb2x1bW4uY2xhc3NOYW1lLCBjb2x1bW5Qcm9wcy5jbGFzc05hbWVdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4udGRQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzLCAhc2hvdyAmJiAnaGlkZGVuJyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke2ZsZXh9IDAgYXV0b2AsXG4gICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRkUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChQYWRSb3dDb21wb25lbnQpfVxuICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWRSb3cgPSAocm93LCBpKSA9PiB7XG4gICAgICBjb25zdCB0ckdyb3VwUHJvcHMgPSBnZXRUckdyb3VwUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICBjb25zdCB0clByb3BzID0gXy5zcGxpdFByb3BzKGdldFRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRyR3JvdXBDb21wb25lbnQga2V5PXtgcGFkLSR7aX1gfSB7Li4udHJHcm91cFByb3BzfT5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgJy1wYWRSb3cnLFxuICAgICAgICAgICAgICAocGFnZVJvd3MubGVuZ3RoICsgaSkgJSAyID8gJy1ldmVuJyA6ICctb2RkJyxcbiAgICAgICAgICAgICAgdHJQcm9wcy5jbGFzc05hbWVcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBzdHlsZT17dHJQcm9wcy5zdHlsZSB8fCB7fX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VQYWRDb2x1bW4pfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVHJHcm91cENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlQ29sdW1uRm9vdGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdEZvb3RUZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRmb290VGRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IF8uc3BsaXRQcm9wcyhjb2x1bW4uZ2V0UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uRm9vdGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGNvbHVtbi5nZXRGb290ZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFtcbiAgICAgICAgdEZvb3RUZFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5Gb290ZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4udEZvb3RUZFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW4uc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtblByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Gb290ZXJQcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzLCAhc2hvdyAmJiAnaGlkZGVuJyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5jb2x1bW5Qcm9wcy5yZXN0fVxuICAgICAgICAgIHsuLi50Rm9vdFRkUHJvcHMucmVzdH1cbiAgICAgICAgICB7Li4uY29sdW1uRm9vdGVyUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uRm9vdGVyLCB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VDb2x1bW5Gb290ZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdEZvb3RQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZm9vdFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIGNvbnN0IHRGb290VHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZm9vdFRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRmb290Q29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXt0Rm9vdFByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udEZvb3RQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udEZvb3RQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModEZvb3RUclByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICBzdHlsZT17dEZvb3RUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRGb290VHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUNvbHVtbkZvb3Rlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UZm9vdENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFnaW5hdGlvbiA9IGlzVG9wID0+IHtcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25Qcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0UGFnaW5hdGlvblByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFBhZ2luYXRpb25Db21wb25lbnRcbiAgICAgICAgICB7Li4ucmVzb2x2ZWRTdGF0ZX1cbiAgICAgICAgICBwYWdlcz17cGFnZXN9XG4gICAgICAgICAgY2FuUHJldmlvdXM9e2NhblByZXZpb3VzfVxuICAgICAgICAgIGNhbk5leHQ9e2Nhbk5leHR9XG4gICAgICAgICAgb25QYWdlQ2hhbmdlPXt0aGlzLm9uUGFnZUNoYW5nZX1cbiAgICAgICAgICBvblBhZ2VTaXplQ2hhbmdlPXt0aGlzLm9uUGFnZVNpemVDaGFuZ2V9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwYWdpbmF0aW9uUHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgIHN0eWxlPXtwYWdpbmF0aW9uUHJvcHMuc3R5bGV9XG4gICAgICAgICAgaXNUb3A9e2lzVG9wfVxuICAgICAgICAgIHsuLi5wYWdpbmF0aW9uUHJvcHMucmVzdH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnUmVhY3RUYWJsZScsIGNsYXNzTmFtZSwgcm9vdFByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ucm9vdFByb3BzLnN0eWxlLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucm9vdFByb3BzLnJlc3R9XG4gICAgICAgIHJlZj17ciA9PiB7XG4gICAgICAgICAgaWYgKCFyKSByZXR1cm5cbiAgICAgICAgICBpZiAocm9vdFByb3BzLnJlc3QucmVmKSB7XG4gICAgICAgICAgICByb290UHJvcHMucmVzdC5yZWYocilcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy50YWJsZVJlZiA9IHJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Nob3dQYWdpbmF0aW9uICYmIHNob3dQYWdpbmF0aW9uVG9wID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi10b3BcIj57bWFrZVBhZ2luYXRpb24odHJ1ZSl9PC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8VGFibGVDb21wb25lbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModGFibGVQcm9wcy5jbGFzc05hbWUsIGN1cnJlbnRseVJlc2l6aW5nID8gJ3J0LXJlc2l6aW5nJyA6ICcnKX1cbiAgICAgICAgICBzdHlsZT17dGFibGVQcm9wcy5zdHlsZX1cbiAgICAgICAgICB7Li4udGFibGVQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge2hhc0hlYWRlckdyb3VwcyA/IG1ha2VIZWFkZXJHcm91cHMoKSA6IG51bGx9XG4gICAgICAgICAge21ha2VIZWFkZXJzKCl9XG4gICAgICAgICAge2hhc0ZpbHRlcnMgPyBtYWtlRmlsdGVycygpIDogbnVsbH1cbiAgICAgICAgICA8VGJvZHlDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh0Qm9keVByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi50Qm9keVByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi50Qm9keVByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYWdlUm93cy5sZW5ndGggPCAyMDAgPyBwYWdlUm93cy5tYXAoKGQsIGkpID0+IG1ha2VQYWdlUm93KGQsIGkpKSA6XG4gICAgICAgICAgICAgIDxSZWFjdExpc3RcbiAgICAgICAgICAgICAgICB0eXBlPVwidmFyaWFibGVcIlxuICAgICAgICAgICAgICAgIGl0ZW1TaXplRXN0aW1hdG9yPXt0aGlzLnByb3BzLml0ZW1TaXplRXN0aW1hdG9yIHx8IGl0ZW1TaXplRXN0aW1hdG9yfVxuICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXJlcj17aSA9PiBtYWtlUGFnZVJvdyhwYWdlUm93c1tpXSwgaSl9XG4gICAgICAgICAgICAgICAgbGVuZ3RoPXtwYWdlUm93cy5sZW5ndGh9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7cGFkUm93cy5tYXAobWFrZVBhZFJvdyl9XG4gICAgICAgICAgICB7YWRkaXRpb25hbEJvZHlFbH1cbiAgICAgICAgICA8L1Rib2R5Q29tcG9uZW50PlxuICAgICAgICAgIHtoYXNDb2x1bW5Gb290ZXIgPyBtYWtlQ29sdW1uRm9vdGVycygpIDogbnVsbH1cbiAgICAgICAgPC9UYWJsZUNvbXBvbmVudD5cbiAgICAgICAge3Nob3dQYWdpbmF0aW9uICYmIHNob3dQYWdpbmF0aW9uQm90dG9tID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1ib3R0b21cIj57bWFrZVBhZ2luYXRpb24oZmFsc2UpfTwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFwYWdlUm93cy5sZW5ndGggJiYgKFxuICAgICAgICAgIDxOb0RhdGFDb21wb25lbnQgey4uLm5vRGF0YVByb3BzfT57Xy5ub3JtYWxpemVDb21wb25lbnQobm9EYXRhVGV4dCl9PC9Ob0RhdGFDb21wb25lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIDxMb2FkaW5nQ29tcG9uZW50IGxvYWRpbmc9e2xvYWRpbmd9IGxvYWRpbmdUZXh0PXtsb2FkaW5nVGV4dH0gey4uLmxvYWRpbmdQcm9wc30gLz5cbiAgICAgIDwvZGl2PlxuICAgIClcblxuICAgIC8vIGNoaWxkUHJvcHMgYXJlIG9wdGlvbmFsbHkgcGFzc2VkIHRvIGEgZnVuY3Rpb24tYXMtYS1jaGlsZFxuICAgIHJldHVybiBjaGlsZHJlbiA/IGNoaWxkcmVuKGZpbmFsU3RhdGUsIG1ha2VUYWJsZSwgdGhpcykgOiBtYWtlVGFibGUoKVxuICB9XG59XG4iXX0=
package/lib/index.js CHANGED
@@ -81,32 +81,6 @@ var ReactTable = function (_Methods) {
81
81
  _this.resizeColumnEnd = _this.resizeColumnEnd.bind(_this);
82
82
  _this.resizeColumnMoving = _this.resizeColumnMoving.bind(_this);
83
83
 
84
- setTimeout(function () {
85
- // tnw: this is some very hacky code to set the initial column widths
86
- try {
87
- var newResized = _this.props.defaultResized || [];
88
- _this.tableRef.querySelectorAll('.tg-react-table-column-header').forEach(function (th) {
89
- var _th$parentNode$parent = th.parentNode.parentNode.getBoundingClientRect(),
90
- width = _th$parentNode$parent.width;
91
-
92
- var id = th.getAttribute('data-path');
93
- if (!newResized.find(function (x) {
94
- return x.id === id;
95
- })) {
96
- newResized.push({
97
- id: id,
98
- value: width
99
- });
100
- }
101
- });
102
- _this.setState({
103
- resized: newResized
104
- });
105
- } catch (e) {
106
- console.warn('TNW: Error setting initial table column widths (please contact @tnrich if you see this error. thanks!):', e);
107
- }
108
- }, 0);
109
-
110
84
  _this.state = {
111
85
  page: props.defaultPage,
112
86
  pageSize: props.defaultPageSize,
@@ -879,4 +853,4 @@ var ReactTable = function (_Methods) {
879
853
  ReactTable.propTypes = _propTypes2.default;
880
854
  ReactTable.defaultProps = _defaultProps2.default;
881
855
  exports.default = ReactTable;
882
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpdGVtU2l6ZUVzdGltYXRvciIsIlJlYWN0VGFibGVEZWZhdWx0cyIsImRlZmF1bHRQcm9wcyIsIlJlYWN0VGFibGUiLCJwcm9wcyIsImdldFJlc29sdmVkU3RhdGUiLCJiaW5kIiwiZ2V0RGF0YU1vZGVsIiwiZ2V0U29ydGVkRGF0YSIsImZpcmVGZXRjaERhdGEiLCJnZXRQcm9wT3JTdGF0ZSIsImdldFN0YXRlT3JQcm9wIiwiZmlsdGVyRGF0YSIsInNvcnREYXRhIiwiZ2V0TWluUm93cyIsIm9uUGFnZUNoYW5nZSIsIm9uUGFnZVNpemVDaGFuZ2UiLCJzb3J0Q29sdW1uIiwiZmlsdGVyQ29sdW1uIiwicmVzaXplQ29sdW1uU3RhcnQiLCJyZXNpemVDb2x1bW5FbmQiLCJyZXNpemVDb2x1bW5Nb3ZpbmciLCJzZXRUaW1lb3V0IiwibmV3UmVzaXplZCIsImRlZmF1bHRSZXNpemVkIiwidGFibGVSZWYiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInRoIiwicGFyZW50Tm9kZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaWQiLCJnZXRBdHRyaWJ1dGUiLCJmaW5kIiwieCIsInB1c2giLCJ2YWx1ZSIsInNldFN0YXRlIiwicmVzaXplZCIsImUiLCJjb25zb2xlIiwid2FybiIsInN0YXRlIiwicGFnZSIsImRlZmF1bHRQYWdlIiwicGFnZVNpemUiLCJkZWZhdWx0UGFnZVNpemUiLCJzb3J0ZWQiLCJkZWZhdWx0U29ydGVkIiwiZXhwYW5kZWQiLCJkZWZhdWx0RXhwYW5kZWQiLCJmaWx0ZXJlZCIsImRlZmF1bHRGaWx0ZXJlZCIsImN1cnJlbnRseVJlc2l6aW5nIiwic2tpcE5leHRTb3J0IiwicmVzb2x2ZWRTdGF0ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJnZXRQcm9wcyIsImdldFRhYmxlUHJvcHMiLCJnZXRUaGVhZEdyb3VwUHJvcHMiLCJnZXRUaGVhZEdyb3VwVHJQcm9wcyIsImdldFRoZWFkR3JvdXBUaFByb3BzIiwiZ2V0VGhlYWRQcm9wcyIsImdldFRoZWFkVHJQcm9wcyIsImdldFRoZWFkVGhQcm9wcyIsImdldFRoZWFkRmlsdGVyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRoUHJvcHMiLCJnZXRUYm9keVByb3BzIiwiZ2V0VHJHcm91cFByb3BzIiwiZ2V0VHJQcm9wcyIsImdldFRkUHJvcHMiLCJnZXRUZm9vdFByb3BzIiwiZ2V0VGZvb3RUclByb3BzIiwiZ2V0VGZvb3RUZFByb3BzIiwiZ2V0UGFnaW5hdGlvblByb3BzIiwiZ2V0TG9hZGluZ1Byb3BzIiwiZ2V0Tm9EYXRhUHJvcHMiLCJnZXRSZXNpemVyUHJvcHMiLCJzaG93UGFnaW5hdGlvbiIsInNob3dQYWdpbmF0aW9uVG9wIiwic2hvd1BhZ2luYXRpb25Cb3R0b20iLCJtYW51YWwiLCJsb2FkaW5nVGV4dCIsIm5vRGF0YVRleHQiLCJzb3J0YWJsZSIsIm11bHRpU29ydCIsInJlc2l6YWJsZSIsImZpbHRlcmFibGUiLCJwaXZvdElES2V5IiwicGl2b3RWYWxLZXkiLCJwaXZvdEJ5Iiwic3ViUm93c0tleSIsImFnZ3JlZ2F0ZWRLZXkiLCJvcmlnaW5hbEtleSIsImluZGV4S2V5IiwiZ3JvdXBlZEJ5UGl2b3RLZXkiLCJsb2FkaW5nIiwicGFnZXMiLCJvbkV4cGFuZGVkQ2hhbmdlIiwiVGFibGVDb21wb25lbnQiLCJUaGVhZENvbXBvbmVudCIsIlRib2R5Q29tcG9uZW50IiwiYWRkaXRpb25hbEJvZHlFbCIsIlRyR3JvdXBDb21wb25lbnQiLCJUckNvbXBvbmVudCIsIlRoQ29tcG9uZW50IiwiVGRDb21wb25lbnQiLCJUZm9vdENvbXBvbmVudCIsIlBhZ2luYXRpb25Db21wb25lbnQiLCJMb2FkaW5nQ29tcG9uZW50IiwiU3ViQ29tcG9uZW50IiwiTm9EYXRhQ29tcG9uZW50IiwiUmVzaXplckNvbXBvbmVudCIsIkV4cGFuZGVyQ29tcG9uZW50IiwiUGl2b3RWYWx1ZUNvbXBvbmVudCIsIlBpdm90Q29tcG9uZW50IiwiQWdncmVnYXRlZENvbXBvbmVudCIsIkZpbHRlckNvbXBvbmVudCIsIlBhZFJvd0NvbXBvbmVudCIsInJlc29sdmVkRGF0YSIsImFsbFZpc2libGVDb2x1bW5zIiwiaGVhZGVyR3JvdXBzIiwiaGFzSGVhZGVyR3JvdXBzIiwic29ydGVkRGF0YSIsInN0YXJ0Um93IiwiZW5kUm93IiwicGFnZVJvd3MiLCJzbGljZSIsIm1pblJvd3MiLCJwYWRSb3dzIiwiXyIsInJhbmdlIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImhhc0NvbHVtbkZvb3RlciIsInNvbWUiLCJkIiwiRm9vdGVyIiwiaGFzRmlsdGVycyIsInJlY3Vyc2VSb3dzVmlld0luZGV4Iiwicm93cyIsInBhdGgiLCJpbmRleCIsIm1hcCIsInJvdyIsImkiLCJyb3dXaXRoVmlld0luZGV4IiwiX3ZpZXdJbmRleCIsIm5ld1BhdGgiLCJjb25jYXQiLCJnZXQiLCJjYW5QcmV2aW91cyIsImNhbk5leHQiLCJyb3dNaW5XaWR0aCIsInN1bSIsInJlc2l6ZWRDb2x1bW4iLCJnZXRGaXJzdERlZmluZWQiLCJtaW5XaWR0aCIsInJvd0luZGV4IiwiZmluYWxTdGF0ZSIsInJvb3RQcm9wcyIsInNwbGl0UHJvcHMiLCJ1bmRlZmluZWQiLCJ0YWJsZVByb3BzIiwidEJvZHlQcm9wcyIsImxvYWRpbmdQcm9wcyIsIm5vRGF0YVByb3BzIiwibWFrZUhlYWRlckdyb3VwIiwiY29sdW1uIiwicmVzaXplZFZhbHVlIiwiY29sIiwiZmxleCIsImNvbHVtbnMiLCJtYXhXaWR0aCIsInRoZWFkR3JvdXBUaFByb3BzIiwiY29sdW1uSGVhZGVyUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImNsYXNzZXMiLCJoZWFkZXJDbGFzc05hbWUiLCJzdHlsZXMiLCJoZWFkZXJTdHlsZSIsInJlc3QiLCJmbGV4U3R5bGVzIiwiYXNQeCIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsIkhlYWRlciIsImRhdGEiLCJtYWtlSGVhZGVyR3JvdXBzIiwidGhlYWRHcm91cFByb3BzIiwidGhlYWRHcm91cFRyUHJvcHMiLCJtYWtlSGVhZGVyIiwicmVzaXplZENvbCIsInNvcnQiLCJzaG93IiwidGhlYWRUaFByb3BzIiwiaXNSZXNpemFibGUiLCJyZXNpemVyIiwiaXNTb3J0YWJsZSIsImRlc2MiLCJpbmNsdWRlcyIsInNoaWZ0S2V5IiwibWFrZUhlYWRlcnMiLCJ0aGVhZFByb3BzIiwidGhlYWRUclByb3BzIiwibWFrZUZpbHRlciIsInRoZWFkRmlsdGVyVGhQcm9wcyIsImZpbHRlciIsIlJlc29sdmVkRmlsdGVyQ29tcG9uZW50IiwiRmlsdGVyIiwiaXNGaWx0ZXJhYmxlIiwib25DaGFuZ2UiLCJtYWtlRmlsdGVycyIsInRoZWFkRmlsdGVyUHJvcHMiLCJ0aGVhZEZpbHRlclRyUHJvcHMiLCJtYWtlUGFnZVJvdyIsInJvd0luZm8iLCJvcmlnaW5hbCIsInZpZXdJbmRleCIsImxldmVsIiwibmVzdGluZ1BhdGgiLCJhZ2dyZWdhdGVkIiwiZ3JvdXBlZEJ5UGl2b3QiLCJzdWJSb3dzIiwiaXNFeHBhbmRlZCIsInRyR3JvdXBQcm9wcyIsInRyUHJvcHMiLCJqb2luIiwiaTIiLCJ0ZFByb3BzIiwiY29sdW1uUHJvcHMiLCJjZWxsSW5mbyIsInBpdm90ZWQiLCJleHBhbmRlciIsInVzZU9uRXhwYW5kZXJDbGljayIsImlzQnJhbmNoIiwiaXNQcmV2aWV3Iiwib25FeHBhbmRlckNsaWNrIiwibmV3RXhwYW5kZWQiLCJjbG9uZSIsInNldCIsInNldFN0YXRlV2l0aERhdGEiLCJyZXNvbHZlZENlbGwiLCJDZWxsIiwiUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50IiwiQWdncmVnYXRlZCIsImFnZ3JlZ2F0ZSIsIlJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQiLCJFeHBhbmRlciIsIlJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCIsIlBpdm90VmFsdWUiLCJEZWZhdWx0UmVzb2x2ZWRQaXZvdENvbXBvbmVudCIsIlJlc29sdmVkUGl2b3RDb21wb25lbnQiLCJQaXZvdCIsImV4cGFuZGFibGUiLCJpbmRleE9mIiwicmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2siLCJpbnRlcmFjdGlvblByb3BzIiwib25DbGljayIsIm1ha2VQYWRDb2x1bW4iLCJtYWtlUGFkUm93IiwibWFrZUNvbHVtbkZvb3RlciIsInRGb290VGRQcm9wcyIsImNvbHVtbkZvb3RlclByb3BzIiwiZ2V0Rm9vdGVyUHJvcHMiLCJtYWtlQ29sdW1uRm9vdGVycyIsInRGb290UHJvcHMiLCJ0Rm9vdFRyUHJvcHMiLCJtYWtlUGFnaW5hdGlvbiIsInBhZ2luYXRpb25Qcm9wcyIsImlzVG9wIiwibWFrZVRhYmxlIiwiciIsInJlZiIsIkNvbXBvbmVudCIsInByb3BUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLG9CQUFvQixTQUFwQkEsaUJBQW9CO0FBQUEsU0FBTSxLQUFOO0FBQUEsQ0FBMUI7QUFDTyxJQUFNQyxrREFBcUJDLHNCQUEzQjs7SUFFY0MsVTs7O0FBSW5CLHNCQUFhQyxLQUFiLEVBQW9CO0FBQUE7O0FBQUE7O0FBR2xCLFVBQUtDLGdCQUFMLEdBQXdCLE1BQUtBLGdCQUFMLENBQXNCQyxJQUF0QixPQUF4QjtBQUNBLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkQsSUFBbEIsT0FBcEI7QUFDQSxVQUFLRSxhQUFMLEdBQXFCLE1BQUtBLGFBQUwsQ0FBbUJGLElBQW5CLE9BQXJCO0FBQ0EsVUFBS0csYUFBTCxHQUFxQixNQUFLQSxhQUFMLENBQW1CSCxJQUFuQixPQUFyQjtBQUNBLFVBQUtJLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQkosSUFBcEIsT0FBdEI7QUFDQSxVQUFLSyxjQUFMLEdBQXNCLE1BQUtBLGNBQUwsQ0FBb0JMLElBQXBCLE9BQXRCO0FBQ0EsVUFBS00sVUFBTCxHQUFrQixNQUFLQSxV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QkFBVixDQUFSLEM7O0FBQW5CblIsVSxDQUNab1IsUyxHQUFZQSxtQjtBQURBcFIsVSxDQUVaRCxZLEdBQWVBLHNCO2tCQUZIQyxVIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBSZWFjdExpc3QgZnJvbSAnQHRlc2VsYWdlbi9yZWFjdC1saXN0J1xuaW1wb3J0IF8gZnJvbSAnLi91dGlscydcbmltcG9ydCBMaWZlY3ljbGUgZnJvbSAnLi9saWZlY3ljbGUnXG5pbXBvcnQgTWV0aG9kcyBmcm9tICcuL21ldGhvZHMnXG5pbXBvcnQgZGVmYXVsdFByb3BzIGZyb20gJy4vZGVmYXVsdFByb3BzJ1xuaW1wb3J0IHByb3BUeXBlcyBmcm9tICcuL3Byb3BUeXBlcydcblxuY29uc3QgaXRlbVNpemVFc3RpbWF0b3IgPSAoKSA9PiA0MS4zNlxuZXhwb3J0IGNvbnN0IFJlYWN0VGFibGVEZWZhdWx0cyA9IGRlZmF1bHRQcm9wc1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFjdFRhYmxlIGV4dGVuZHMgTWV0aG9kcyhMaWZlY3ljbGUoQ29tcG9uZW50KSkge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHNcblxuICBjb25zdHJ1Y3RvciAocHJvcHMpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLmdldFJlc29sdmVkU3RhdGUgPSB0aGlzLmdldFJlc29sdmVkU3RhdGUuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0RGF0YU1vZGVsID0gdGhpcy5nZXREYXRhTW9kZWwuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0U29ydGVkRGF0YSA9IHRoaXMuZ2V0U29ydGVkRGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5maXJlRmV0Y2hEYXRhID0gdGhpcy5maXJlRmV0Y2hEYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLmdldFByb3BPclN0YXRlID0gdGhpcy5nZXRQcm9wT3JTdGF0ZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRTdGF0ZU9yUHJvcCA9IHRoaXMuZ2V0U3RhdGVPclByb3AuYmluZCh0aGlzKVxuICAgIHRoaXMuZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5zb3J0RGF0YSA9IHRoaXMuc29ydERhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0TWluUm93cyA9IHRoaXMuZ2V0TWluUm93cy5iaW5kKHRoaXMpXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UgPSB0aGlzLm9uUGFnZUNoYW5nZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlID0gdGhpcy5vblBhZ2VTaXplQ2hhbmdlLmJpbmQodGhpcylcbiAgICB0aGlzLnNvcnRDb2x1bW4gPSB0aGlzLnNvcnRDb2x1bW4uYmluZCh0aGlzKVxuICAgIHRoaXMuZmlsdGVyQ29sdW1uID0gdGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uU3RhcnQgPSB0aGlzLnJlc2l6ZUNvbHVtblN0YXJ0LmJpbmQodGhpcylcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbkVuZCA9IHRoaXMucmVzaXplQ29sdW1uRW5kLmJpbmQodGhpcylcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk1vdmluZyA9IHRoaXMucmVzaXplQ29sdW1uTW92aW5nLmJpbmQodGhpcylcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdG53OiB0aGlzIGlzIHNvbWUgdmVyeSBoYWNreSBjb2RlIHRvIHNldCB0aGUgaW5pdGlhbCBjb2x1bW4gd2lkdGhzXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBuZXdSZXNpemVkID0gdGhpcy5wcm9wcy5kZWZhdWx0UmVzaXplZCB8fCBbXVxuICAgICAgICB0aGlzLnRhYmxlUmVmLnF1ZXJ5U2VsZWN0b3JBbGwoJy50Zy1yZWFjdC10YWJsZS1jb2x1bW4taGVhZGVyJykuZm9yRWFjaCh0aCA9PiB7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gdGgucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgY29uc3QgaWQgPSB0aC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGF0aCcpXG4gICAgICAgICAgaWYgKCFuZXdSZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBpZCkpIHtcbiAgICAgICAgICAgIG5ld1Jlc2l6ZWQucHVzaCh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICB2YWx1ZTogd2lkdGgsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgcmVzaXplZDogbmV3UmVzaXplZCxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdUTlc6IEVycm9yIHNldHRpbmcgaW5pdGlhbCB0YWJsZSBjb2x1bW4gd2lkdGhzIChwbGVhc2UgY29udGFjdCBAdG5yaWNoIGlmIHlvdSBzZWUgdGhpcyBlcnJvci4gdGhhbmtzISk6JywgZSlcbiAgICAgIH1cbiAgICB9LCAwKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHBhZ2U6IHByb3BzLmRlZmF1bHRQYWdlLFxuICAgICAgcGFnZVNpemU6IHByb3BzLmRlZmF1bHRQYWdlU2l6ZSxcbiAgICAgIHNvcnRlZDogcHJvcHMuZGVmYXVsdFNvcnRlZCxcbiAgICAgIGV4cGFuZGVkOiBwcm9wcy5kZWZhdWx0RXhwYW5kZWQsXG4gICAgICBmaWx0ZXJlZDogcHJvcHMuZGVmYXVsdEZpbHRlcmVkLFxuICAgICAgcmVzaXplZDogcHJvcHMuZGVmYXVsdFJlc2l6ZWQsXG4gICAgICBjdXJyZW50bHlSZXNpemluZzogZmFsc2UsXG4gICAgICBza2lwTmV4dFNvcnQ6IGZhbHNlLFxuICAgIH1cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpXG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBzdHlsZSxcbiAgICAgIGdldFByb3BzLFxuICAgICAgZ2V0VGFibGVQcm9wcyxcbiAgICAgIGdldFRoZWFkR3JvdXBQcm9wcyxcbiAgICAgIGdldFRoZWFkR3JvdXBUclByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFRoUHJvcHMsXG4gICAgICBnZXRUaGVhZFByb3BzLFxuICAgICAgZ2V0VGhlYWRUclByb3BzLFxuICAgICAgZ2V0VGhlYWRUaFByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJQcm9wcyxcbiAgICAgIGdldFRoZWFkRmlsdGVyVHJQcm9wcyxcbiAgICAgIGdldFRoZWFkRmlsdGVyVGhQcm9wcyxcbiAgICAgIGdldFRib2R5UHJvcHMsXG4gICAgICBnZXRUckdyb3VwUHJvcHMsXG4gICAgICBnZXRUclByb3BzLFxuICAgICAgZ2V0VGRQcm9wcyxcbiAgICAgIGdldFRmb290UHJvcHMsXG4gICAgICBnZXRUZm9vdFRyUHJvcHMsXG4gICAgICBnZXRUZm9vdFRkUHJvcHMsXG4gICAgICBnZXRQYWdpbmF0aW9uUHJvcHMsXG4gICAgICBnZXRMb2FkaW5nUHJvcHMsXG4gICAgICBnZXROb0RhdGFQcm9wcyxcbiAgICAgIGdldFJlc2l6ZXJQcm9wcyxcbiAgICAgIHNob3dQYWdpbmF0aW9uLFxuICAgICAgc2hvd1BhZ2luYXRpb25Ub3AsXG4gICAgICBzaG93UGFnaW5hdGlvbkJvdHRvbSxcbiAgICAgIG1hbnVhbCxcbiAgICAgIGxvYWRpbmdUZXh0LFxuICAgICAgbm9EYXRhVGV4dCxcbiAgICAgIHNvcnRhYmxlLFxuICAgICAgbXVsdGlTb3J0LFxuICAgICAgcmVzaXphYmxlLFxuICAgICAgZmlsdGVyYWJsZSxcbiAgICAgIC8vIFBpdm90aW5nIFN0YXRlXG4gICAgICBwaXZvdElES2V5LFxuICAgICAgcGl2b3RWYWxLZXksXG4gICAgICBwaXZvdEJ5LFxuICAgICAgc3ViUm93c0tleSxcbiAgICAgIGFnZ3JlZ2F0ZWRLZXksXG4gICAgICBvcmlnaW5hbEtleSxcbiAgICAgIGluZGV4S2V5LFxuICAgICAgZ3JvdXBlZEJ5UGl2b3RLZXksXG4gICAgICAvLyBTdGF0ZVxuICAgICAgbG9hZGluZyxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgcGFnZSxcbiAgICAgIHNvcnRlZCxcbiAgICAgIGZpbHRlcmVkLFxuICAgICAgcmVzaXplZCxcbiAgICAgIGV4cGFuZGVkLFxuICAgICAgcGFnZXMsXG4gICAgICBvbkV4cGFuZGVkQ2hhbmdlLFxuICAgICAgLy8gQ29tcG9uZW50c1xuICAgICAgVGFibGVDb21wb25lbnQsXG4gICAgICBUaGVhZENvbXBvbmVudCxcbiAgICAgIFRib2R5Q29tcG9uZW50LFxuICAgICAgYWRkaXRpb25hbEJvZHlFbCxcbiAgICAgIFRyR3JvdXBDb21wb25lbnQsXG4gICAgICBUckNvbXBvbmVudCxcbiAgICAgIFRoQ29tcG9uZW50LFxuICAgICAgVGRDb21wb25lbnQsXG4gICAgICBUZm9vdENvbXBvbmVudCxcbiAgICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgICAgU3ViQ29tcG9uZW50LFxuICAgICAgTm9EYXRhQ29tcG9uZW50LFxuICAgICAgUmVzaXplckNvbXBvbmVudCxcbiAgICAgIEV4cGFuZGVyQ29tcG9uZW50LFxuICAgICAgUGl2b3RWYWx1ZUNvbXBvbmVudCxcbiAgICAgIFBpdm90Q29tcG9uZW50LFxuICAgICAgQWdncmVnYXRlZENvbXBvbmVudCxcbiAgICAgIEZpbHRlckNvbXBvbmVudCxcbiAgICAgIFBhZFJvd0NvbXBvbmVudCxcbiAgICAgIC8vIERhdGEgbW9kZWxcbiAgICAgIHJlc29sdmVkRGF0YSxcbiAgICAgIGFsbFZpc2libGVDb2x1bW5zLFxuICAgICAgaGVhZGVyR3JvdXBzLFxuICAgICAgaGFzSGVhZGVyR3JvdXBzLFxuICAgICAgLy8gU29ydGVkIERhdGFcbiAgICAgIHNvcnRlZERhdGEsXG4gICAgICBjdXJyZW50bHlSZXNpemluZyxcbiAgICB9ID0gcmVzb2x2ZWRTdGF0ZVxuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIGNvbnN0IHN0YXJ0Um93ID0gcGFnZVNpemUgKiBwYWdlXG4gICAgY29uc3QgZW5kUm93ID0gc3RhcnRSb3cgKyBwYWdlU2l6ZVxuICAgIGxldCBwYWdlUm93cyA9IG1hbnVhbCA/IHJlc29sdmVkRGF0YSA6IHNvcnRlZERhdGEuc2xpY2Uoc3RhcnRSb3csIGVuZFJvdylcbiAgICBjb25zdCBtaW5Sb3dzID0gdGhpcy5nZXRNaW5Sb3dzKClcbiAgICBjb25zdCBwYWRSb3dzID0gXy5yYW5nZShNYXRoLm1heChtaW5Sb3dzIC0gcGFnZVJvd3MubGVuZ3RoLCAwKSlcblxuICAgIGNvbnN0IGhhc0NvbHVtbkZvb3RlciA9IGFsbFZpc2libGVDb2x1bW5zLnNvbWUoZCA9PiBkLkZvb3RlcilcbiAgICBjb25zdCBoYXNGaWx0ZXJzID0gZmlsdGVyYWJsZSB8fCBhbGxWaXNpYmxlQ29sdW1ucy5zb21lKGQgPT4gZC5maWx0ZXJhYmxlKVxuXG4gICAgY29uc3QgcmVjdXJzZVJvd3NWaWV3SW5kZXggPSAocm93cywgcGF0aCA9IFtdLCBpbmRleCA9IC0xKSA9PiBbXG4gICAgICByb3dzLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICAgIGluZGV4ICs9IDFcbiAgICAgICAgY29uc3Qgcm93V2l0aFZpZXdJbmRleCA9IHtcbiAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgX3ZpZXdJbmRleDogaW5kZXgsXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KFtpXSlcbiAgICAgICAgaWYgKHJvd1dpdGhWaWV3SW5kZXhbc3ViUm93c0tleV0gJiYgXy5nZXQoZXhwYW5kZWQsIG5ld1BhdGgpKSB7XG4gICAgICAgICAgW3Jvd1dpdGhWaWV3SW5kZXhbc3ViUm93c0tleV0sIGluZGV4XSA9IHJlY3Vyc2VSb3dzVmlld0luZGV4KFxuICAgICAgICAgICAgcm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSxcbiAgICAgICAgICAgIG5ld1BhdGgsXG4gICAgICAgICAgICBpbmRleFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93V2l0aFZpZXdJbmRleFxuICAgICAgfSksXG4gICAgICBpbmRleCxcbiAgICBdO1xuICAgIFtwYWdlUm93c10gPSByZWN1cnNlUm93c1ZpZXdJbmRleChwYWdlUm93cylcblxuICAgIGNvbnN0IGNhblByZXZpb3VzID0gcGFnZSA+IDBcbiAgICBjb25zdCBjYW5OZXh0ID0gcGFnZSArIDEgPCBwYWdlc1xuXG4gICAgY29uc3Qgcm93TWluV2lkdGggPSBfLnN1bShcbiAgICAgIGFsbFZpc2libGVDb2x1bW5zLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXplZENvbHVtbiA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGQuaWQpIHx8IHt9XG4gICAgICAgIHJldHVybiBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sdW1uLnZhbHVlLCBkLndpZHRoLCBkLm1pbldpZHRoKVxuICAgICAgfSlcbiAgICApXG5cbiAgICBsZXQgcm93SW5kZXggPSAtMVxuXG4gICAgY29uc3QgZmluYWxTdGF0ZSA9IHtcbiAgICAgIC4uLnJlc29sdmVkU3RhdGUsXG4gICAgICBzdGFydFJvdyxcbiAgICAgIGVuZFJvdyxcbiAgICAgIHBhZ2VSb3dzLFxuICAgICAgbWluUm93cyxcbiAgICAgIHBhZFJvd3MsXG4gICAgICBoYXNDb2x1bW5Gb290ZXIsXG4gICAgICBjYW5QcmV2aW91cyxcbiAgICAgIGNhbk5leHQsXG4gICAgICByb3dNaW5XaWR0aCxcbiAgICB9XG5cbiAgICBjb25zdCByb290UHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgIGNvbnN0IHRhYmxlUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGFibGVQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgY29uc3QgdEJvZHlQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUYm9keVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICBjb25zdCBsb2FkaW5nUHJvcHMgPSBnZXRMb2FkaW5nUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgY29uc3Qgbm9EYXRhUHJvcHMgPSBnZXROb0RhdGFQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcblxuICAgIC8vIFZpc3VhbCBDb21wb25lbnRzXG5cbiAgICBjb25zdCBtYWtlSGVhZGVyR3JvdXAgPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkVmFsdWUgPSBjb2wgPT4gKHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbC5pZCkgfHwge30pLnZhbHVlXG4gICAgICBjb25zdCBmbGV4ID0gXy5zdW0oXG4gICAgICAgIGNvbHVtbi5jb2x1bW5zLm1hcChjb2wgPT4gKGNvbC53aWR0aCB8fCByZXNpemVkVmFsdWUoY29sKSA/IDAgOiBjb2wubWluV2lkdGgpKVxuICAgICAgKVxuICAgICAgY29uc3Qgd2lkdGggPSBfLnN1bShcbiAgICAgICAgY29sdW1uLmNvbHVtbnMubWFwKGNvbCA9PiBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkVmFsdWUoY29sKSwgY29sLndpZHRoLCBjb2wubWluV2lkdGgpKVxuICAgICAgKVxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLnN1bShcbiAgICAgICAgY29sdW1uLmNvbHVtbnMubWFwKGNvbCA9PiBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkVmFsdWUoY29sKSwgY29sLndpZHRoLCBjb2wubWF4V2lkdGgpKVxuICAgICAgKVxuXG4gICAgICBjb25zdCB0aGVhZEdyb3VwVGhQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRHcm91cFRoUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW1xuICAgICAgICBjb2x1bW4uaGVhZGVyQ2xhc3NOYW1lLFxuICAgICAgICB0aGVhZEdyb3VwVGhQcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtbkhlYWRlclByb3BzLmNsYXNzTmFtZSxcbiAgICAgIF1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi5jb2x1bW4uaGVhZGVyU3R5bGUsXG4gICAgICAgIC4uLnRoZWFkR3JvdXBUaFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdCA9IHtcbiAgICAgICAgLi4udGhlYWRHcm91cFRoUHJvcHMucmVzdCxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMucmVzdCxcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmxleFN0eWxlcyA9IHtcbiAgICAgICAgZmxleDogYCR7ZmxleH0gMCBhdXRvYCxcbiAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICAuLi5mbGV4U3R5bGVzLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkhlYWRlciwge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UaENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVyR3JvdXBzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGhlYWRHcm91cFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCB0aGVhZEdyb3VwVHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRHcm91cFRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhlYWRDb21wb25lbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJy1oZWFkZXJHcm91cHMnLCB0aGVhZEdyb3VwUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRHcm91cFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50aGVhZEdyb3VwUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGVhZEdyb3VwVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRHcm91cFRyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udGhlYWRHcm91cFRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aGVhZGVyR3JvdXBzLm1hcChtYWtlSGVhZGVyR3JvdXApfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGhlYWRDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUhlYWRlciA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICBjb25zdCBzb3J0ID0gc29ydGVkLmZpbmQoZCA9PiBkLmlkID09PSBjb2x1bW4uaWQpXG4gICAgICBjb25zdCBzaG93ID0gdHlwZW9mIGNvbHVtbi5zaG93ID09PSAnZnVuY3Rpb24nID8gY29sdW1uLnNob3coKSA6IGNvbHVtbi5zaG93XG4gICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRoZWFkVGhQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUaGVhZFRoUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uSGVhZGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGNvbHVtbi5nZXRIZWFkZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFtjb2x1bW4uaGVhZGVyQ2xhc3NOYW1lLCB0aGVhZFRoUHJvcHMuY2xhc3NOYW1lLCBjb2x1bW5IZWFkZXJQcm9wcy5jbGFzc05hbWVdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4uY29sdW1uLmhlYWRlclN0eWxlLFxuICAgICAgICAuLi50aGVhZFRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZFRoUHJvcHMucmVzdCxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMucmVzdCxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNSZXNpemFibGUgPSBfLmdldEZpcnN0RGVmaW5lZChjb2x1bW4ucmVzaXphYmxlLCByZXNpemFibGUsIGZhbHNlKVxuICAgICAgY29uc3QgcmVzaXplciA9IGlzUmVzaXphYmxlID8gKFxuICAgICAgICA8UmVzaXplckNvbXBvbmVudFxuICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMucmVzaXplQ29sdW1uU3RhcnQoZSwgY29sdW1uLCBmYWxzZSl9XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXtlID0+IHRoaXMucmVzaXplQ29sdW1uU3RhcnQoZSwgY29sdW1uLCB0cnVlKX1cbiAgICAgICAgICB7Li4uZ2V0UmVzaXplclByb3BzKCdmaW5hbFN0YXRlJywgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGxcblxuICAgICAgY29uc3QgaXNTb3J0YWJsZSA9IF8uZ2V0Rmlyc3REZWZpbmVkKGNvbHVtbi5zb3J0YWJsZSwgc29ydGFibGUsIGZhbHNlKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIGlzUmVzaXphYmxlICYmICdydC1yZXNpemFibGUtaGVhZGVyJyxcbiAgICAgICAgICAgIHNvcnQgPyAoc29ydC5kZXNjID8gJy1zb3J0LWRlc2MnIDogJy1zb3J0LWFzYycpIDogJycsXG4gICAgICAgICAgICBpc1NvcnRhYmxlICYmICctY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgICAgIXNob3cgJiYgJy1oaWRkZW4nLFxuICAgICAgICAgICAgcGl2b3RCeSAmJiBwaXZvdEJ5LnNsaWNlKDAsIC0xKS5pbmNsdWRlcyhjb2x1bW4uaWQpICYmICdydC1oZWFkZXItcGl2b3QnXG4gICAgICAgICAgKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgZmxleDogYCR7d2lkdGh9IDAgYXV0b2AsXG4gICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdG9nZ2xlU29ydD17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNTb3J0YWJsZSkgdGhpcy5zb3J0Q29sdW1uKGNvbHVtbiwgbXVsdGlTb3J0ID8gZS5zaGlmdEtleSA6IGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhpc1Jlc2l6YWJsZSAmJiAncnQtcmVzaXphYmxlLWhlYWRlci1jb250ZW50Jyl9PlxuICAgICAgICAgICAge18ubm9ybWFsaXplQ29tcG9uZW50KGNvbHVtbi5IZWFkZXIsIHtcbiAgICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3Jlc2l6ZXJ9XG4gICAgICAgIDwvVGhDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUhlYWRlcnMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVhZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRoZWFkUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgY29uc3QgdGhlYWRUclByb3BzID0gXy5zcGxpdFByb3BzKGdldFRoZWFkVHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhlYWRDb21wb25lbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJy1oZWFkZXInLCB0aGVhZFByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRoZWFkUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRoZWFkUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGVhZFRyUHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgICAgc3R5bGU9e3RoZWFkVHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50aGVhZFRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VIZWFkZXIpfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGhlYWRDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUZpbHRlciA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRoZWFkRmlsdGVyVGhQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJUaFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuICAgICAgY29uc3QgY29sdW1uSGVhZGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGNvbHVtbi5nZXRIZWFkZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFtcbiAgICAgICAgY29sdW1uLmhlYWRlckNsYXNzTmFtZSxcbiAgICAgICAgdGhlYWRGaWx0ZXJUaFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uSGVhZGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLmNvbHVtbi5oZWFkZXJTdHlsZSxcbiAgICAgICAgLi4udGhlYWRGaWx0ZXJUaFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdCA9IHtcbiAgICAgICAgLi4udGhlYWRGaWx0ZXJUaFByb3BzLnJlc3QsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnJlc3QsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcmVkLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gY29sdW1uLmlkKVxuXG4gICAgICBjb25zdCBSZXNvbHZlZEZpbHRlckNvbXBvbmVudCA9IGNvbHVtbi5GaWx0ZXIgfHwgRmlsdGVyQ29tcG9uZW50XG5cbiAgICAgIGNvbnN0IGlzRmlsdGVyYWJsZSA9IF8uZ2V0Rmlyc3REZWZpbmVkKGNvbHVtbi5maWx0ZXJhYmxlLCBmaWx0ZXJhYmxlLCBmYWxzZSlcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgZmxleDogYCR7d2lkdGh9IDAgYXV0b2AsXG4gICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNGaWx0ZXJhYmxlXG4gICAgICAgICAgICA/IF8ubm9ybWFsaXplQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgIFJlc29sdmVkRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB2YWx1ZSA9PiB0aGlzLmZpbHRlckNvbHVtbihjb2x1bW4sIHZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRQcm9wcy5jb2x1bW4uRmlsdGVyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgPC9UaENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlRmlsdGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRoZWFkRmlsdGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkRmlsdGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCB0aGVhZEZpbHRlclRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkRmlsdGVyVHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWZpbHRlcnMnLCB0aGVhZEZpbHRlclByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRoZWFkRmlsdGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRoZWFkRmlsdGVyUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGVhZEZpbHRlclRyUHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgICAgc3R5bGU9e3RoZWFkRmlsdGVyVHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50aGVhZEZpbHRlclRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VGaWx0ZXIpfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGhlYWRDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZ2VSb3cgPSAocm93LCBpLCBwYXRoID0gW10pID0+IHtcbiAgICAgIGNvbnN0IHJvd0luZm8gPSB7XG4gICAgICAgIG9yaWdpbmFsOiByb3dbb3JpZ2luYWxLZXldLFxuICAgICAgICByb3csXG4gICAgICAgIGluZGV4OiByb3dbaW5kZXhLZXldLFxuICAgICAgICB2aWV3SW5kZXg6IChyb3dJbmRleCArPSAxKSxcbiAgICAgICAgcGFnZVNpemUsXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIGxldmVsOiBwYXRoLmxlbmd0aCxcbiAgICAgICAgbmVzdGluZ1BhdGg6IHBhdGguY29uY2F0KFtpXSksXG4gICAgICAgIGFnZ3JlZ2F0ZWQ6IHJvd1thZ2dyZWdhdGVkS2V5XSxcbiAgICAgICAgZ3JvdXBlZEJ5UGl2b3Q6IHJvd1tncm91cGVkQnlQaXZvdEtleV0sXG4gICAgICAgIHN1YlJvd3M6IHJvd1tzdWJSb3dzS2V5XSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzRXhwYW5kZWQgPSBfLmdldChleHBhbmRlZCwgcm93SW5mby5uZXN0aW5nUGF0aClcbiAgICAgIGNvbnN0IHRyR3JvdXBQcm9wcyA9IGdldFRyR3JvdXBQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICBjb25zdCB0clByb3BzID0gXy5zcGxpdFByb3BzKGdldFRyUHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUckdyb3VwQ29tcG9uZW50IGtleT17cm93SW5mby5uZXN0aW5nUGF0aC5qb2luKCdfJyl9IHsuLi50ckdyb3VwUHJvcHN9PlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRyUHJvcHMuY2xhc3NOYW1lLCByb3cuX3ZpZXdJbmRleCAlIDIgPyAnLWV2ZW4nIDogJy1vZGQnKX1cbiAgICAgICAgICAgIHN0eWxlPXt0clByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKChjb2x1bW4sIGkyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICAgICAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgICAgICAgICAgY29uc3QgdGRQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIGNvbHVtbiwgdGhpcykpXG4gICAgICAgICAgICAgIGNvbnN0IGNvbHVtblByb3BzID0gXy5zcGxpdFByb3BzKGNvbHVtbi5nZXRQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCBjb2x1bW4sIHRoaXMpKVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNsYXNzZXMgPSBbdGRQcm9wcy5jbGFzc05hbWUsIGNvbHVtbi5jbGFzc05hbWUsIGNvbHVtblByb3BzLmNsYXNzTmFtZV1cblxuICAgICAgICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgICAuLi5jb2x1bW4uc3R5bGUsXG4gICAgICAgICAgICAgICAgLi4uY29sdW1uUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBjZWxsSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAuLi5yb3dJbmZvLFxuICAgICAgICAgICAgICAgIGlzRXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB7IC4uLmNvbHVtbiB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiByb3dJbmZvLnJvd1tjb2x1bW4uaWRdLFxuICAgICAgICAgICAgICAgIHBpdm90ZWQ6IGNvbHVtbi5waXZvdGVkLFxuICAgICAgICAgICAgICAgIGV4cGFuZGVyOiBjb2x1bW4uZXhwYW5kZXIsXG4gICAgICAgICAgICAgICAgcmVzaXplZCxcbiAgICAgICAgICAgICAgICBzaG93LFxuICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoLFxuICAgICAgICAgICAgICAgIHRkUHJvcHMsXG4gICAgICAgICAgICAgICAgY29sdW1uUHJvcHMsXG4gICAgICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgICAgICBzdHlsZXMsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNlbGxJbmZvLnZhbHVlXG5cbiAgICAgICAgICAgICAgbGV0IHVzZU9uRXhwYW5kZXJDbGlja1xuICAgICAgICAgICAgICBsZXQgaXNCcmFuY2hcbiAgICAgICAgICAgICAgbGV0IGlzUHJldmlld1xuXG4gICAgICAgICAgICAgIGNvbnN0IG9uRXhwYW5kZXJDbGljayA9IGUgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuZXdFeHBhbmRlZCA9IF8uY2xvbmUoZXhwYW5kZWQpXG4gICAgICAgICAgICAgICAgaWYgKGlzRXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgIG5ld0V4cGFuZGVkID0gXy5zZXQobmV3RXhwYW5kZWQsIGNlbGxJbmZvLm5lc3RpbmdQYXRoLCBmYWxzZSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbmV3RXhwYW5kZWQgPSBfLnNldChuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIHt9KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlV2l0aERhdGEoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBuZXdFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZGVkQ2hhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDaGFuZ2UobmV3RXhwYW5kZWQsIGNlbGxJbmZvLm5lc3RpbmdQYXRoLCBlLCBjZWxsSW5mbylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGEgc3RhbmRhcmQgY2VsbFxuICAgICAgICAgICAgICBsZXQgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkNlbGwsIGNlbGxJbmZvLCB2YWx1ZSlcblxuICAgICAgICAgICAgICAvLyBSZXNvbHZlIFJlbmRlcmVyc1xuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZEFnZ3JlZ2F0ZWRDb21wb25lbnQgPVxuICAgICAgICAgICAgICAgIGNvbHVtbi5BZ2dyZWdhdGVkIHx8ICghY29sdW1uLmFnZ3JlZ2F0ZSA/IEFnZ3JlZ2F0ZWRDb21wb25lbnQgOiBjb2x1bW4uQ2VsbClcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRFeHBhbmRlckNvbXBvbmVudCA9IGNvbHVtbi5FeHBhbmRlciB8fCBFeHBhbmRlckNvbXBvbmVudFxuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZFBpdm90VmFsdWVDb21wb25lbnQgPSBjb2x1bW4uUGl2b3RWYWx1ZSB8fCBQaXZvdFZhbHVlQ29tcG9uZW50XG4gICAgICAgICAgICAgIGNvbnN0IERlZmF1bHRSZXNvbHZlZFBpdm90Q29tcG9uZW50ID1cbiAgICAgICAgICAgICAgICBQaXZvdENvbXBvbmVudCB8fFxuICAgICAgICAgICAgICAgIChwcm9wcyA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8UmVzb2x2ZWRFeHBhbmRlckNvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNvbHZlZFBpdm90VmFsdWVDb21wb25lbnQgey4uLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRQaXZvdENvbXBvbmVudCA9IGNvbHVtbi5QaXZvdCB8fCBEZWZhdWx0UmVzb2x2ZWRQaXZvdENvbXBvbmVudFxuXG4gICAgICAgICAgICAgIC8vIElzIHRoaXMgY2VsbCBleHBhbmRhYmxlP1xuICAgICAgICAgICAgICBpZiAoY2VsbEluZm8ucGl2b3RlZCB8fCBjZWxsSW5mby5leHBhbmRlcikge1xuICAgICAgICAgICAgICAgIC8vIE1ha2UgaXQgZXhwYW5kYWJsZSBieSBkZWZ1YWx0XG4gICAgICAgICAgICAgICAgY2VsbEluZm8uZXhwYW5kYWJsZSA9IHRydWVcbiAgICAgICAgICAgICAgICB1c2VPbkV4cGFuZGVyQ2xpY2sgPSB0cnVlXG4gICAgICAgICAgICAgICAgLy8gSWYgcGl2b3RlZCwgaGFzIG5vIHN1YlJvd3MsIGFuZCBkb2VzIG5vdCBoYXZlIGEgc3ViQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBtYWtlIGV4cGFuZGFibGVcbiAgICAgICAgICAgICAgICBpZiAoY2VsbEluZm8ucGl2b3RlZCAmJiAhY2VsbEluZm8uc3ViUm93cyAmJiAhU3ViQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICBjZWxsSW5mby5leHBhbmRhYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2VsbEluZm8ucGl2b3RlZCkge1xuICAgICAgICAgICAgICAgIC8vIElzIHRoaXMgY29sdW1uIGEgYnJhbmNoP1xuICAgICAgICAgICAgICAgIGlzQnJhbmNoID0gcm93SW5mby5yb3dbcGl2b3RJREtleV0gPT09IGNvbHVtbi5pZCAmJiBjZWxsSW5mby5zdWJSb3dzXG4gICAgICAgICAgICAgICAgLy8gU2hvdWxkIHRoaXMgY29sdW1uIGJlIGJsYW5rP1xuICAgICAgICAgICAgICAgIGlzUHJldmlldyA9XG4gICAgICAgICAgICAgICAgICBwaXZvdEJ5LmluZGV4T2YoY29sdW1uLmlkKSA+IHBpdm90QnkuaW5kZXhPZihyb3dJbmZvLnJvd1twaXZvdElES2V5XSkgJiZcbiAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLnN1YlJvd3NcbiAgICAgICAgICAgICAgICAvLyBQaXZvdCBDZWxsIFJlbmRlciBPdmVycmlkZVxuICAgICAgICAgICAgICAgIGlmIChpc0JyYW5jaCkge1xuICAgICAgICAgICAgICAgICAgLy8gaXNQaXZvdFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmVkUGl2b3RDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jZWxsSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm93W3Bpdm90VmFsS2V5XSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcm93W3Bpdm90VmFsS2V5XVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBwaXZvdCBwcmV2aWV3XG4gICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChSZXNvbHZlZEFnZ3JlZ2F0ZWRDb21wb25lbnQsIGNlbGxJbmZvLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjZWxsSW5mby5hZ2dyZWdhdGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50LCBjZWxsSW5mbywgdmFsdWUpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2VsbEluZm8uZXhwYW5kZXIpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgIFJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICBjZWxsSW5mbyxcbiAgICAgICAgICAgICAgICAgIHJvd1twaXZvdFZhbEtleV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKHBpdm90QnkpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChjZWxsSW5mby5ncm91cGVkQnlQaXZvdCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoIWNlbGxJbmZvLnN1YlJvd3MgJiYgIVN1YkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2sgPSB1c2VPbkV4cGFuZGVyQ2xpY2sgPyBvbkV4cGFuZGVyQ2xpY2sgOiAoKSA9PiB7fVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBvbkNsaWNrIGV2ZW50cywgbWFrZSBzdXJlIHRoZXkgZG9uJ3RcbiAgICAgICAgICAgICAgLy8gb3ZlcnJpZGUgZWFjaG90aGVyLiBUaGlzIHNob3VsZCBtYXliZSBiZSBleHBhbmRlZCB0byBoYW5kbGUgYWxsXG4gICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiByZXNvbHZlZE9uRXhwYW5kZXJDbGljayxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0ZFByb3BzLnJlc3Qub25DbGljaykge1xuICAgICAgICAgICAgICAgIGludGVyYWN0aW9uUHJvcHMub25DbGljayA9IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGRQcm9wcy5yZXN0Lm9uQ2xpY2soZSwgKCkgPT4gcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2soZSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNvbHVtblByb3BzLnJlc3Qub25DbGljaykge1xuICAgICAgICAgICAgICAgIGludGVyYWN0aW9uUHJvcHMub25DbGljayA9IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgY29sdW1uUHJvcHMucmVzdC5vbkNsaWNrKGUsICgpID0+IHJlc29sdmVkT25FeHBhbmRlckNsaWNrKGUpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgY2VsbFxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUZENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgICAgICAgICAga2V5PXtgJHtpMn0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgICAgICAgICAgIWNlbGxJbmZvLmV4cGFuZGFibGUgJiYgIXNob3cgJiYgJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLmV4cGFuZGFibGUgJiYgJ3J0LWV4cGFuZGFibGUnLFxuICAgICAgICAgICAgICAgICAgICAoaXNCcmFuY2ggfHwgaXNQcmV2aWV3KSAmJiAncnQtcGl2b3QnXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHsuLi50ZFByb3BzLnJlc3R9XG4gICAgICAgICAgICAgICAgICB7Li4uY29sdW1uUHJvcHMucmVzdH1cbiAgICAgICAgICAgICAgICAgIHsuLi5pbnRlcmFjdGlvblByb3BzfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtyZXNvbHZlZENlbGx9XG4gICAgICAgICAgICAgICAgPC9UZENvbXBvbmVudD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgICB7cm93SW5mby5zdWJSb3dzICYmXG4gICAgICAgICAgICBpc0V4cGFuZGVkICYmXG4gICAgICAgICAgICByb3dJbmZvLnN1YlJvd3MubWFwKChkLCBpKSA9PiBtYWtlUGFnZVJvdyhkLCBpLCByb3dJbmZvLm5lc3RpbmdQYXRoKSl9XG4gICAgICAgICAge1N1YkNvbXBvbmVudCAmJlxuICAgICAgICAgICAgIXJvd0luZm8uc3ViUm93cyAmJlxuICAgICAgICAgICAgaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgU3ViQ29tcG9uZW50KHJvd0luZm8sICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3RXhwYW5kZWQgPSBfLmNsb25lKGV4cGFuZGVkKVxuXG4gICAgICAgICAgICAgIF8uc2V0KG5ld0V4cGFuZGVkLCByb3dJbmZvLm5lc3RpbmdQYXRoLCBmYWxzZSlcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8L1RyR3JvdXBDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZENvbHVtbiA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICBjb25zdCBzaG93ID0gdHlwZW9mIGNvbHVtbi5zaG93ID09PSAnZnVuY3Rpb24nID8gY29sdW1uLnNob3coKSA6IGNvbHVtbi5zaG93XG4gICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgY29uc3QgZmxleCA9IHdpZHRoXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGRQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcbiAgICAgIGNvbnN0IGNvbHVtblByb3BzID0gXy5zcGxpdFByb3BzKGNvbHVtbi5nZXRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbdGRQcm9wcy5jbGFzc05hbWUsIGNvbHVtbi5jbGFzc05hbWUsIGNvbHVtblByb3BzLmNsYXNzTmFtZV1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi50ZFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW4uc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtblByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGRDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMsICFzaG93ICYmICdoaWRkZW4nKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgZmxleDogYCR7ZmxleH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGRQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge18ubm9ybWFsaXplQ29tcG9uZW50KFBhZFJvd0NvbXBvbmVudCl9XG4gICAgICAgIDwvVGRDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZFJvdyA9IChyb3csIGkpID0+IHtcbiAgICAgIGNvbnN0IHRyR3JvdXBQcm9wcyA9IGdldFRyR3JvdXBQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIGNvbnN0IHRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VHJHcm91cENvbXBvbmVudCBrZXk9e2BwYWQtJHtpfWB9IHsuLi50ckdyb3VwUHJvcHN9PlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAnLXBhZFJvdycsXG4gICAgICAgICAgICAgIChwYWdlUm93cy5sZW5ndGggKyBpKSAlIDIgPyAnLWV2ZW4nIDogJy1vZGQnLFxuICAgICAgICAgICAgICB0clByb3BzLmNsYXNzTmFtZVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHN0eWxlPXt0clByb3BzLnN0eWxlIHx8IHt9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZVBhZENvbHVtbil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9Uckdyb3VwQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VDb2x1bW5Gb290ZXIgPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICBjb25zdCB0Rm9vdFRkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RUZFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcbiAgICAgIGNvbnN0IGNvbHVtblByb3BzID0gXy5zcGxpdFByb3BzKGNvbHVtbi5nZXRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5Gb290ZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEZvb3RlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW1xuICAgICAgICB0Rm9vdFRkUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW4uY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5Qcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtbkZvb3RlclByb3BzLmNsYXNzTmFtZSxcbiAgICAgIF1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi50Rm9vdFRkUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkZvb3RlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGRDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMsICFzaG93ICYmICdoaWRkZW4nKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgZmxleDogYCR7d2lkdGh9IDAgYXV0b2AsXG4gICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLmNvbHVtblByb3BzLnJlc3R9XG4gICAgICAgICAgey4uLnRGb290VGRQcm9wcy5yZXN0fVxuICAgICAgICAgIHsuLi5jb2x1bW5Gb290ZXJQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge18ubm9ybWFsaXplQ29tcG9uZW50KGNvbHVtbi5Gb290ZXIsIHtcbiAgICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGRDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUNvbHVtbkZvb3RlcnMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0Rm9vdFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRmb290UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgY29uc3QgdEZvb3RUclByb3BzID0gXy5zcGxpdFByb3BzKGdldFRmb290VHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGZvb3RDb21wb25lbnRcbiAgICAgICAgICBjbGFzc05hbWU9e3RGb290UHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50Rm9vdFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50Rm9vdFByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh0Rm9vdFRyUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgIHN0eWxlPXt0Rm9vdFRyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udEZvb3RUclByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcChtYWtlQ29sdW1uRm9vdGVyKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1Rmb290Q29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWdpbmF0aW9uID0gaXNUb3AgPT4ge1xuICAgICAgY29uc3QgcGFnaW5hdGlvblByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRQYWdpbmF0aW9uUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgICAgIHsuLi5yZXNvbHZlZFN0YXRlfVxuICAgICAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgICAgICBjYW5QcmV2aW91cz17Y2FuUHJldmlvdXN9XG4gICAgICAgICAgY2FuTmV4dD17Y2FuTmV4dH1cbiAgICAgICAgICBvblBhZ2VDaGFuZ2U9e3RoaXMub25QYWdlQ2hhbmdlfVxuICAgICAgICAgIG9uUGFnZVNpemVDaGFuZ2U9e3RoaXMub25QYWdlU2l6ZUNoYW5nZX1cbiAgICAgICAgICBjbGFzc05hbWU9e3BhZ2luYXRpb25Qcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3BhZ2luYXRpb25Qcm9wcy5zdHlsZX1cbiAgICAgICAgICBpc1RvcD17aXNUb3B9XG4gICAgICAgICAgey4uLnBhZ2luYXRpb25Qcm9wcy5yZXN0fVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdSZWFjdFRhYmxlJywgY2xhc3NOYW1lLCByb290UHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5yb290UHJvcHMuc3R5bGUsXG4gICAgICAgIH19XG4gICAgICAgIHsuLi5yb290UHJvcHMucmVzdH1cbiAgICAgICAgcmVmPXtyID0+IHtcbiAgICAgICAgICBpZiAoIXIpIHJldHVyblxuICAgICAgICAgIGlmIChyb290UHJvcHMucmVzdC5yZWYpIHtcbiAgICAgICAgICAgIHJvb3RQcm9wcy5yZXN0LnJlZihyKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnRhYmxlUmVmID0gclxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7c2hvd1BhZ2luYXRpb24gJiYgc2hvd1BhZ2luYXRpb25Ub3AgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLXRvcFwiPnttYWtlUGFnaW5hdGlvbih0cnVlKX08L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxUYWJsZUNvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh0YWJsZVByb3BzLmNsYXNzTmFtZSwgY3VycmVudGx5UmVzaXppbmcgPyAncnQtcmVzaXppbmcnIDogJycpfVxuICAgICAgICAgIHN0eWxlPXt0YWJsZVByb3BzLnN0eWxlfVxuICAgICAgICAgIHsuLi50YWJsZVByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7aGFzSGVhZGVyR3JvdXBzID8gbWFrZUhlYWRlckdyb3VwcygpIDogbnVsbH1cbiAgICAgICAgICB7bWFrZUhlYWRlcnMoKX1cbiAgICAgICAgICB7aGFzRmlsdGVycyA/IG1ha2VGaWx0ZXJzKCkgOiBudWxsfVxuICAgICAgICAgIDxUYm9keUNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRCb2R5UHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIC4uLnRCb2R5UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLnRCb2R5UHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBhZ2VSb3dzLmxlbmd0aCA8IDIwMCA/IHBhZ2VSb3dzLm1hcCgoZCwgaSkgPT4gbWFrZVBhZ2VSb3coZCwgaSkpIDpcbiAgICAgICAgICAgICAgPFJlYWN0TGlzdFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgaXRlbVNpemVFc3RpbWF0b3I9e3RoaXMucHJvcHMuaXRlbVNpemVFc3RpbWF0b3IgfHwgaXRlbVNpemVFc3RpbWF0b3J9XG4gICAgICAgICAgICAgICAgaXRlbVJlbmRlcmVyPXtpID0+IG1ha2VQYWdlUm93KHBhZ2VSb3dzW2ldLCBpKX1cbiAgICAgICAgICAgICAgICBsZW5ndGg9e3BhZ2VSb3dzLmxlbmd0aH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtwYWRSb3dzLm1hcChtYWtlUGFkUm93KX1cbiAgICAgICAgICAgIHthZGRpdGlvbmFsQm9keUVsfVxuICAgICAgICAgIDwvVGJvZHlDb21wb25lbnQ+XG4gICAgICAgICAge2hhc0NvbHVtbkZvb3RlciA/IG1ha2VDb2x1bW5Gb290ZXJzKCkgOiBudWxsfVxuICAgICAgICA8L1RhYmxlQ29tcG9uZW50PlxuICAgICAgICB7c2hvd1BhZ2luYXRpb24gJiYgc2hvd1BhZ2luYXRpb25Cb3R0b20gPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWJvdHRvbVwiPnttYWtlUGFnaW5hdGlvbihmYWxzZSl9PC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IXBhZ2VSb3dzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgPE5vRGF0YUNvbXBvbmVudCB7Li4ubm9EYXRhUHJvcHN9PntfLm5vcm1hbGl6ZUNvbXBvbmVudChub0RhdGFUZXh0KX08L05vRGF0YUNvbXBvbmVudD5cbiAgICAgICAgKX1cbiAgICAgICAgPExvYWRpbmdDb21wb25lbnQgbG9hZGluZz17bG9hZGluZ30gbG9hZGluZ1RleHQ9e2xvYWRpbmdUZXh0fSB7Li4ubG9hZGluZ1Byb3BzfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKVxuXG4gICAgLy8gY2hpbGRQcm9wcyBhcmUgb3B0aW9uYWxseSBwYXNzZWQgdG8gYSBmdW5jdGlvbi1hcy1hLWNoaWxkXG4gICAgcmV0dXJuIGNoaWxkcmVuID8gY2hpbGRyZW4oZmluYWxTdGF0ZSwgbWFrZVRhYmxlLCB0aGlzKSA6IG1ha2VUYWJsZSgpXG4gIH1cbn1cbiJdfQ==
856
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpdGVtU2l6ZUVzdGltYXRvciIsIlJlYWN0VGFibGVEZWZhdWx0cyIsImRlZmF1bHRQcm9wcyIsIlJlYWN0VGFibGUiLCJwcm9wcyIsImdldFJlc29sdmVkU3RhdGUiLCJiaW5kIiwiZ2V0RGF0YU1vZGVsIiwiZ2V0U29ydGVkRGF0YSIsImZpcmVGZXRjaERhdGEiLCJnZXRQcm9wT3JTdGF0ZSIsImdldFN0YXRlT3JQcm9wIiwiZmlsdGVyRGF0YSIsInNvcnREYXRhIiwiZ2V0TWluUm93cyIsIm9uUGFnZUNoYW5nZSIsIm9uUGFnZVNpemVDaGFuZ2UiLCJzb3J0Q29sdW1uIiwiZmlsdGVyQ29sdW1uIiwicmVzaXplQ29sdW1uU3RhcnQiLCJyZXNpemVDb2x1bW5FbmQiLCJyZXNpemVDb2x1bW5Nb3ZpbmciLCJzdGF0ZSIsInBhZ2UiLCJkZWZhdWx0UGFnZSIsInBhZ2VTaXplIiwiZGVmYXVsdFBhZ2VTaXplIiwic29ydGVkIiwiZGVmYXVsdFNvcnRlZCIsImV4cGFuZGVkIiwiZGVmYXVsdEV4cGFuZGVkIiwiZmlsdGVyZWQiLCJkZWZhdWx0RmlsdGVyZWQiLCJyZXNpemVkIiwiZGVmYXVsdFJlc2l6ZWQiLCJjdXJyZW50bHlSZXNpemluZyIsInNraXBOZXh0U29ydCIsInJlc29sdmVkU3RhdGUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInN0eWxlIiwiZ2V0UHJvcHMiLCJnZXRUYWJsZVByb3BzIiwiZ2V0VGhlYWRHcm91cFByb3BzIiwiZ2V0VGhlYWRHcm91cFRyUHJvcHMiLCJnZXRUaGVhZEdyb3VwVGhQcm9wcyIsImdldFRoZWFkUHJvcHMiLCJnZXRUaGVhZFRyUHJvcHMiLCJnZXRUaGVhZFRoUHJvcHMiLCJnZXRUaGVhZEZpbHRlclByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJUclByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJUaFByb3BzIiwiZ2V0VGJvZHlQcm9wcyIsImdldFRyR3JvdXBQcm9wcyIsImdldFRyUHJvcHMiLCJnZXRUZFByb3BzIiwiZ2V0VGZvb3RQcm9wcyIsImdldFRmb290VHJQcm9wcyIsImdldFRmb290VGRQcm9wcyIsImdldFBhZ2luYXRpb25Qcm9wcyIsImdldExvYWRpbmdQcm9wcyIsImdldE5vRGF0YVByb3BzIiwiZ2V0UmVzaXplclByb3BzIiwic2hvd1BhZ2luYXRpb24iLCJzaG93UGFnaW5hdGlvblRvcCIsInNob3dQYWdpbmF0aW9uQm90dG9tIiwibWFudWFsIiwibG9hZGluZ1RleHQiLCJub0RhdGFUZXh0Iiwic29ydGFibGUiLCJtdWx0aVNvcnQiLCJyZXNpemFibGUiLCJmaWx0ZXJhYmxlIiwicGl2b3RJREtleSIsInBpdm90VmFsS2V5IiwicGl2b3RCeSIsInN1YlJvd3NLZXkiLCJhZ2dyZWdhdGVkS2V5Iiwib3JpZ2luYWxLZXkiLCJpbmRleEtleSIsImdyb3VwZWRCeVBpdm90S2V5IiwibG9hZGluZyIsInBhZ2VzIiwib25FeHBhbmRlZENoYW5nZSIsIlRhYmxlQ29tcG9uZW50IiwiVGhlYWRDb21wb25lbnQiLCJUYm9keUNvbXBvbmVudCIsImFkZGl0aW9uYWxCb2R5RWwiLCJUckdyb3VwQ29tcG9uZW50IiwiVHJDb21wb25lbnQiLCJUaENvbXBvbmVudCIsIlRkQ29tcG9uZW50IiwiVGZvb3RDb21wb25lbnQiLCJQYWdpbmF0aW9uQ29tcG9uZW50IiwiTG9hZGluZ0NvbXBvbmVudCIsIlN1YkNvbXBvbmVudCIsIk5vRGF0YUNvbXBvbmVudCIsIlJlc2l6ZXJDb21wb25lbnQiLCJFeHBhbmRlckNvbXBvbmVudCIsIlBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWRDb21wb25lbnQiLCJGaWx0ZXJDb21wb25lbnQiLCJQYWRSb3dDb21wb25lbnQiLCJyZXNvbHZlZERhdGEiLCJhbGxWaXNpYmxlQ29sdW1ucyIsImhlYWRlckdyb3VwcyIsImhhc0hlYWRlckdyb3VwcyIsInNvcnRlZERhdGEiLCJzdGFydFJvdyIsImVuZFJvdyIsInBhZ2VSb3dzIiwic2xpY2UiLCJtaW5Sb3dzIiwicGFkUm93cyIsIl8iLCJyYW5nZSIsIk1hdGgiLCJtYXgiLCJsZW5ndGgiLCJoYXNDb2x1bW5Gb290ZXIiLCJzb21lIiwiZCIsIkZvb3RlciIsImhhc0ZpbHRlcnMiLCJyZWN1cnNlUm93c1ZpZXdJbmRleCIsInJvd3MiLCJwYXRoIiwiaW5kZXgiLCJtYXAiLCJyb3ciLCJpIiwicm93V2l0aFZpZXdJbmRleCIsIl92aWV3SW5kZXgiLCJuZXdQYXRoIiwiY29uY2F0IiwiZ2V0IiwiY2FuUHJldmlvdXMiLCJjYW5OZXh0Iiwicm93TWluV2lkdGgiLCJzdW0iLCJyZXNpemVkQ29sdW1uIiwiZmluZCIsIngiLCJpZCIsImdldEZpcnN0RGVmaW5lZCIsInZhbHVlIiwid2lkdGgiLCJtaW5XaWR0aCIsInJvd0luZGV4IiwiZmluYWxTdGF0ZSIsInJvb3RQcm9wcyIsInNwbGl0UHJvcHMiLCJ1bmRlZmluZWQiLCJ0YWJsZVByb3BzIiwidEJvZHlQcm9wcyIsImxvYWRpbmdQcm9wcyIsIm5vRGF0YVByb3BzIiwibWFrZUhlYWRlckdyb3VwIiwiY29sdW1uIiwicmVzaXplZFZhbHVlIiwiY29sIiwiZmxleCIsImNvbHVtbnMiLCJtYXhXaWR0aCIsInRoZWFkR3JvdXBUaFByb3BzIiwiY29sdW1uSGVhZGVyUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImNsYXNzZXMiLCJoZWFkZXJDbGFzc05hbWUiLCJzdHlsZXMiLCJoZWFkZXJTdHlsZSIsInJlc3QiLCJmbGV4U3R5bGVzIiwiYXNQeCIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsIkhlYWRlciIsImRhdGEiLCJtYWtlSGVhZGVyR3JvdXBzIiwidGhlYWRHcm91cFByb3BzIiwidGhlYWRHcm91cFRyUHJvcHMiLCJtYWtlSGVhZGVyIiwicmVzaXplZENvbCIsInNvcnQiLCJzaG93IiwidGhlYWRUaFByb3BzIiwiaXNSZXNpemFibGUiLCJyZXNpemVyIiwiZSIsImlzU29ydGFibGUiLCJkZXNjIiwiaW5jbHVkZXMiLCJzaGlmdEtleSIsIm1ha2VIZWFkZXJzIiwidGhlYWRQcm9wcyIsInRoZWFkVHJQcm9wcyIsIm1ha2VGaWx0ZXIiLCJ0aGVhZEZpbHRlclRoUHJvcHMiLCJmaWx0ZXIiLCJSZXNvbHZlZEZpbHRlckNvbXBvbmVudCIsIkZpbHRlciIsImlzRmlsdGVyYWJsZSIsIm9uQ2hhbmdlIiwibWFrZUZpbHRlcnMiLCJ0aGVhZEZpbHRlclByb3BzIiwidGhlYWRGaWx0ZXJUclByb3BzIiwibWFrZVBhZ2VSb3ciLCJyb3dJbmZvIiwib3JpZ2luYWwiLCJ2aWV3SW5kZXgiLCJsZXZlbCIsIm5lc3RpbmdQYXRoIiwiYWdncmVnYXRlZCIsImdyb3VwZWRCeVBpdm90Iiwic3ViUm93cyIsImlzRXhwYW5kZWQiLCJ0ckdyb3VwUHJvcHMiLCJ0clByb3BzIiwiam9pbiIsImkyIiwidGRQcm9wcyIsImNvbHVtblByb3BzIiwiY2VsbEluZm8iLCJwaXZvdGVkIiwiZXhwYW5kZXIiLCJ1c2VPbkV4cGFuZGVyQ2xpY2siLCJpc0JyYW5jaCIsImlzUHJldmlldyIsIm9uRXhwYW5kZXJDbGljayIsIm5ld0V4cGFuZGVkIiwiY2xvbmUiLCJzZXQiLCJzZXRTdGF0ZVdpdGhEYXRhIiwicmVzb2x2ZWRDZWxsIiwiQ2VsbCIsIlJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWQiLCJhZ2dyZWdhdGUiLCJSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50IiwiRXhwYW5kZXIiLCJSZXNvbHZlZFBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdFZhbHVlIiwiRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnQiLCJSZXNvbHZlZFBpdm90Q29tcG9uZW50IiwiUGl2b3QiLCJleHBhbmRhYmxlIiwiaW5kZXhPZiIsInJlc29sdmVkT25FeHBhbmRlckNsaWNrIiwiaW50ZXJhY3Rpb25Qcm9wcyIsIm9uQ2xpY2siLCJtYWtlUGFkQ29sdW1uIiwibWFrZVBhZFJvdyIsIm1ha2VDb2x1bW5Gb290ZXIiLCJ0Rm9vdFRkUHJvcHMiLCJjb2x1bW5Gb290ZXJQcm9wcyIsImdldEZvb3RlclByb3BzIiwibWFrZUNvbHVtbkZvb3RlcnMiLCJ0Rm9vdFByb3BzIiwidEZvb3RUclByb3BzIiwibWFrZVBhZ2luYXRpb24iLCJwYWdpbmF0aW9uUHJvcHMiLCJpc1RvcCIsIm1ha2VUYWJsZSIsInIiLCJyZWYiLCJ0YWJsZVJlZiIsIkNvbXBvbmVudCIsInByb3BUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLG9CQUFvQixTQUFwQkEsaUJBQW9CO0FBQUEsU0FBTSxLQUFOO0FBQUEsQ0FBMUI7QUFDTyxJQUFNQyxrREFBcUJDLHNCQUEzQjs7SUFFY0MsVTs7O0FBSW5CLHNCQUFhQyxLQUFiLEVBQW9CO0FBQUE7O0FBQUE7O0FBR2xCLFVBQUtDLGdCQUFMLEdBQXdCLE1BQUtBLGdCQUFMLENBQXNCQyxJQUF0QixPQUF4QjtBQUNBLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkQsSUFBbEIsT0FBcEI7QUFDQSxVQUFLRSxhQUFMLEdBQXFCLE1BQUtBLGFBQUwsQ0FBbUJGLElBQW5CLE9BQXJCO0FBQ0EsVUFBS0csYUFBTCxHQUFxQixNQUFLQSxhQUFMLENBQW1CSCxJQUFuQixPQUFyQjtBQUNBLFVBQUtJLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQkosSUFBcEIsT0FBdEI7QUFDQSxVQUFLSyxjQUFMLEdBQXNCLE1BQUtBLGNBQUwsQ0FBb0JMLElBQXBCLE9BQXRCO0FBQ0EsVUFBS00sVUFBTCxHQUFrQixNQUFLQSxVQUFMLENBQWdCTixJQUFoQixPQUFsQjtBQUNBLFVBQUtPLFFBQUwsR0FBZ0IsTUFBS0EsUUFBTCxDQUFjUCxJQUFkLE9BQWhCO0FBQ0EsVUFBS1EsVUFBTCxHQUFrQixNQUFLQSxVQUFMLENBQWdCUixJQUFoQixPQUFsQjtBQUNBLFVBQUtTLFlBQUwsR0FBb0Is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V0FBV0EsU0FBU2dILFVBQVQsRUFBcUJnSCxTQUFyQixFQUFnQyxJQUFoQyxDQUFYLEdBQW1EQSxXQUExRDtBQUNEOzs7O0VBNTJCcUMsdUJBQVEseUJBQVVJLGdCQUFWLENBQVIsQzs7QUFBbkJ2USxVLENBQ1p3USxTLEdBQVlBLG1CO0FBREF4USxVLENBRVpELFksR0FBZUEsc0I7a0JBRkhDLFUiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IFJlYWN0TGlzdCBmcm9tICdAdGVzZWxhZ2VuL3JlYWN0LWxpc3QnXG5pbXBvcnQgXyBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IExpZmVjeWNsZSBmcm9tICcuL2xpZmVjeWNsZSdcbmltcG9ydCBNZXRob2RzIGZyb20gJy4vbWV0aG9kcydcbmltcG9ydCBkZWZhdWx0UHJvcHMgZnJvbSAnLi9kZWZhdWx0UHJvcHMnXG5pbXBvcnQgcHJvcFR5cGVzIGZyb20gJy4vcHJvcFR5cGVzJ1xuXG5jb25zdCBpdGVtU2l6ZUVzdGltYXRvciA9ICgpID0+IDQxLjM2XG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURlZmF1bHRzID0gZGVmYXVsdFByb3BzXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWN0VGFibGUgZXh0ZW5kcyBNZXRob2RzKExpZmVjeWNsZShDb21wb25lbnQpKSB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wc1xuXG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXREYXRhTW9kZWwgPSB0aGlzLmdldERhdGFNb2RlbC5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRTb3J0ZWREYXRhID0gdGhpcy5nZXRTb3J0ZWREYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLmZpcmVGZXRjaERhdGEgPSB0aGlzLmZpcmVGZXRjaERhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0UHJvcE9yU3RhdGUgPSB0aGlzLmdldFByb3BPclN0YXRlLmJpbmQodGhpcylcbiAgICB0aGlzLmdldFN0YXRlT3JQcm9wID0gdGhpcy5nZXRTdGF0ZU9yUHJvcC5iaW5kKHRoaXMpXG4gICAgdGhpcy5maWx0ZXJEYXRhID0gdGhpcy5maWx0ZXJEYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLnNvcnREYXRhID0gdGhpcy5zb3J0RGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRNaW5Sb3dzID0gdGhpcy5nZXRNaW5Sb3dzLmJpbmQodGhpcylcbiAgICB0aGlzLm9uUGFnZUNoYW5nZSA9IHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcylcbiAgICB0aGlzLm9uUGFnZVNpemVDaGFuZ2UgPSB0aGlzLm9uUGFnZVNpemVDaGFuZ2UuYmluZCh0aGlzKVxuICAgIHRoaXMuc29ydENvbHVtbiA9IHRoaXMuc29ydENvbHVtbi5iaW5kKHRoaXMpXG4gICAgdGhpcy5maWx0ZXJDb2x1bW4gPSB0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpXG4gICAgdGhpcy5yZXNpemVDb2x1bW5TdGFydCA9IHRoaXMucmVzaXplQ29sdW1uU3RhcnQuYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uRW5kID0gdGhpcy5yZXNpemVDb2x1bW5FbmQuYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uTW92aW5nID0gdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcuYmluZCh0aGlzKVxuXG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgcGFnZTogcHJvcHMuZGVmYXVsdFBhZ2UsXG4gICAgICBwYWdlU2l6ZTogcHJvcHMuZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgc29ydGVkOiBwcm9wcy5kZWZhdWx0U29ydGVkLFxuICAgICAgZXhwYW5kZWQ6IHByb3BzLmRlZmF1bHRFeHBhbmRlZCxcbiAgICAgIGZpbHRlcmVkOiBwcm9wcy5kZWZhdWx0RmlsdGVyZWQsXG4gICAgICByZXNpemVkOiBwcm9wcy5kZWZhdWx0UmVzaXplZCxcbiAgICAgIGN1cnJlbnRseVJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIHNraXBOZXh0U29ydDogZmFsc2UsXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlKClcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlLFxuICAgICAgZ2V0UHJvcHMsXG4gICAgICBnZXRUYWJsZVByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFRyUHJvcHMsXG4gICAgICBnZXRUaGVhZEdyb3VwVGhQcm9wcyxcbiAgICAgIGdldFRoZWFkUHJvcHMsXG4gICAgICBnZXRUaGVhZFRyUHJvcHMsXG4gICAgICBnZXRUaGVhZFRoUHJvcHMsXG4gICAgICBnZXRUaGVhZEZpbHRlclByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJUaFByb3BzLFxuICAgICAgZ2V0VGJvZHlQcm9wcyxcbiAgICAgIGdldFRyR3JvdXBQcm9wcyxcbiAgICAgIGdldFRyUHJvcHMsXG4gICAgICBnZXRUZFByb3BzLFxuICAgICAgZ2V0VGZvb3RQcm9wcyxcbiAgICAgIGdldFRmb290VHJQcm9wcyxcbiAgICAgIGdldFRmb290VGRQcm9wcyxcbiAgICAgIGdldFBhZ2luYXRpb25Qcm9wcyxcbiAgICAgIGdldExvYWRpbmdQcm9wcyxcbiAgICAgIGdldE5vRGF0YVByb3BzLFxuICAgICAgZ2V0UmVzaXplclByb3BzLFxuICAgICAgc2hvd1BhZ2luYXRpb24sXG4gICAgICBzaG93UGFnaW5hdGlvblRvcCxcbiAgICAgIHNob3dQYWdpbmF0aW9uQm90dG9tLFxuICAgICAgbWFudWFsLFxuICAgICAgbG9hZGluZ1RleHQsXG4gICAgICBub0RhdGFUZXh0LFxuICAgICAgc29ydGFibGUsXG4gICAgICBtdWx0aVNvcnQsXG4gICAgICByZXNpemFibGUsXG4gICAgICBmaWx0ZXJhYmxlLFxuICAgICAgLy8gUGl2b3RpbmcgU3RhdGVcbiAgICAgIHBpdm90SURLZXksXG4gICAgICBwaXZvdFZhbEtleSxcbiAgICAgIHBpdm90QnksXG4gICAgICBzdWJSb3dzS2V5LFxuICAgICAgYWdncmVnYXRlZEtleSxcbiAgICAgIG9yaWdpbmFsS2V5LFxuICAgICAgaW5kZXhLZXksXG4gICAgICBncm91cGVkQnlQaXZvdEtleSxcbiAgICAgIC8vIFN0YXRlXG4gICAgICBsb2FkaW5nLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBwYWdlLFxuICAgICAgc29ydGVkLFxuICAgICAgZmlsdGVyZWQsXG4gICAgICByZXNpemVkLFxuICAgICAgZXhwYW5kZWQsXG4gICAgICBwYWdlcyxcbiAgICAgIG9uRXhwYW5kZWRDaGFuZ2UsXG4gICAgICAvLyBDb21wb25lbnRzXG4gICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgIFRoZWFkQ29tcG9uZW50LFxuICAgICAgVGJvZHlDb21wb25lbnQsXG4gICAgICBhZGRpdGlvbmFsQm9keUVsLFxuICAgICAgVHJHcm91cENvbXBvbmVudCxcbiAgICAgIFRyQ29tcG9uZW50LFxuICAgICAgVGhDb21wb25lbnQsXG4gICAgICBUZENvbXBvbmVudCxcbiAgICAgIFRmb290Q29tcG9uZW50LFxuICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgICBTdWJDb21wb25lbnQsXG4gICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICBSZXNpemVyQ29tcG9uZW50LFxuICAgICAgRXhwYW5kZXJDb21wb25lbnQsXG4gICAgICBQaXZvdFZhbHVlQ29tcG9uZW50LFxuICAgICAgUGl2b3RDb21wb25lbnQsXG4gICAgICBBZ2dyZWdhdGVkQ29tcG9uZW50LFxuICAgICAgRmlsdGVyQ29tcG9uZW50LFxuICAgICAgUGFkUm93Q29tcG9uZW50LFxuICAgICAgLy8gRGF0YSBtb2RlbFxuICAgICAgcmVzb2x2ZWREYXRhLFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMsXG4gICAgICBoZWFkZXJHcm91cHMsXG4gICAgICBoYXNIZWFkZXJHcm91cHMsXG4gICAgICAvLyBTb3J0ZWQgRGF0YVxuICAgICAgc29ydGVkRGF0YSxcbiAgICAgIGN1cnJlbnRseVJlc2l6aW5nLFxuICAgIH0gPSByZXNvbHZlZFN0YXRlXG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgY29uc3Qgc3RhcnRSb3cgPSBwYWdlU2l6ZSAqIHBhZ2VcbiAgICBjb25zdCBlbmRSb3cgPSBzdGFydFJvdyArIHBhZ2VTaXplXG4gICAgbGV0IHBhZ2VSb3dzID0gbWFudWFsID8gcmVzb2x2ZWREYXRhIDogc29ydGVkRGF0YS5zbGljZShzdGFydFJvdywgZW5kUm93KVxuICAgIGNvbnN0IG1pblJvd3MgPSB0aGlzLmdldE1pblJvd3MoKVxuICAgIGNvbnN0IHBhZFJvd3MgPSBfLnJhbmdlKE1hdGgubWF4KG1pblJvd3MgLSBwYWdlUm93cy5sZW5ndGgsIDApKVxuXG4gICAgY29uc3QgaGFzQ29sdW1uRm9vdGVyID0gYWxsVmlzaWJsZUNvbHVtbnMuc29tZShkID0+IGQuRm9vdGVyKVxuICAgIGNvbnN0IGhhc0ZpbHRlcnMgPSBmaWx0ZXJhYmxlIHx8IGFsbFZpc2libGVDb2x1bW5zLnNvbWUoZCA9PiBkLmZpbHRlcmFibGUpXG5cbiAgICBjb25zdCByZWN1cnNlUm93c1ZpZXdJbmRleCA9IChyb3dzLCBwYXRoID0gW10sIGluZGV4ID0gLTEpID0+IFtcbiAgICAgIHJvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICBjb25zdCByb3dXaXRoVmlld0luZGV4ID0ge1xuICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICBfdmlld0luZGV4OiBpbmRleCxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdQYXRoID0gcGF0aC5jb25jYXQoW2ldKVxuICAgICAgICBpZiAocm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSAmJiBfLmdldChleHBhbmRlZCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICBbcm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSwgaW5kZXhdID0gcmVjdXJzZVJvd3NWaWV3SW5kZXgoXG4gICAgICAgICAgICByb3dXaXRoVmlld0luZGV4W3N1YlJvd3NLZXldLFxuICAgICAgICAgICAgbmV3UGF0aCxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dXaXRoVmlld0luZGV4XG4gICAgICB9KSxcbiAgICAgIGluZGV4LFxuICAgIF07XG4gICAgW3BhZ2VSb3dzXSA9IHJlY3Vyc2VSb3dzVmlld0luZGV4KHBhZ2VSb3dzKVxuXG4gICAgY29uc3QgY2FuUHJldmlvdXMgPSBwYWdlID4gMFxuICAgIGNvbnN0IGNhbk5leHQgPSBwYWdlICsgMSA8IHBhZ2VzXG5cbiAgICBjb25zdCByb3dNaW5XaWR0aCA9IF8uc3VtKFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCByZXNpemVkQ29sdW1uID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gZC5pZCkgfHwge31cbiAgICAgICAgcmV0dXJuIF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2x1bW4udmFsdWUsIGQud2lkdGgsIGQubWluV2lkdGgpXG4gICAgICB9KVxuICAgIClcblxuICAgIGxldCByb3dJbmRleCA9IC0xXG5cbiAgICBjb25zdCBmaW5hbFN0YXRlID0ge1xuICAgICAgLi4ucmVzb2x2ZWRTdGF0ZSxcbiAgICAgIHN0YXJ0Um93LFxuICAgICAgZW5kUm93LFxuICAgICAgcGFnZVJvd3MsXG4gICAgICBtaW5Sb3dzLFxuICAgICAgcGFkUm93cyxcbiAgICAgIGhhc0NvbHVtbkZvb3RlcixcbiAgICAgIGNhblByZXZpb3VzLFxuICAgICAgY2FuTmV4dCxcbiAgICAgIHJvd01pbldpZHRoLFxuICAgIH1cblxuICAgIGNvbnN0IHJvb3RQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgY29uc3QgdGFibGVQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUYWJsZVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICBjb25zdCB0Qm9keVByb3BzID0gXy5zcGxpdFByb3BzKGdldFRib2R5UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgIGNvbnN0IGxvYWRpbmdQcm9wcyA9IGdldExvYWRpbmdQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICBjb25zdCBub0RhdGFQcm9wcyA9IGdldE5vRGF0YVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuXG4gICAgLy8gVmlzdWFsIENvbXBvbmVudHNcblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cCA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRWYWx1ZSA9IGNvbCA9PiAocmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sLmlkKSB8fCB7fSkudmFsdWVcbiAgICAgIGNvbnN0IGZsZXggPSBfLnN1bShcbiAgICAgICAgY29sdW1uLmNvbHVtbnMubWFwKGNvbCA9PiAoY29sLndpZHRoIHx8IHJlc2l6ZWRWYWx1ZShjb2wpID8gMCA6IGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCB3aWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5tYXhXaWR0aCkpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0SGVhZGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIGNvbHVtbi5oZWFkZXJDbGFzc05hbWUsXG4gICAgICAgIHRoZWFkR3JvdXBUaFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uSGVhZGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLmNvbHVtbi5oZWFkZXJTdHlsZSxcbiAgICAgICAgLi4udGhlYWRHcm91cFRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEdyb3VwVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBmbGV4U3R5bGVzID0ge1xuICAgICAgICBmbGV4OiBgJHtmbGV4fSAwIGF1dG9gLFxuICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIC4uLmZsZXhTdHlsZXMsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uSGVhZGVyLCB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVhZEdyb3VwUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkR3JvdXBQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlckdyb3VwcycsIHRoZWFkR3JvdXBQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50aGVhZEdyb3VwUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRoZWFkR3JvdXBQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkR3JvdXBUclByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGVhZEdyb3VwVHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50aGVhZEdyb3VwVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtoZWFkZXJHcm91cHMubWFwKG1ha2VIZWFkZXJHcm91cCl9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNvcnQgPSBzb3J0ZWQuZmluZChkID0+IGQuaWQgPT09IGNvbHVtbi5pZClcbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRUaFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRoZWFkVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW2NvbHVtbi5oZWFkZXJDbGFzc05hbWUsIHRoZWFkVGhQcm9wcy5jbGFzc05hbWUsIGNvbHVtbkhlYWRlclByb3BzLmNsYXNzTmFtZV1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi5jb2x1bW4uaGVhZGVyU3R5bGUsXG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3QgPSB7XG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1Jlc2l6YWJsZSA9IF8uZ2V0Rmlyc3REZWZpbmVkKGNvbHVtbi5yZXNpemFibGUsIHJlc2l6YWJsZSwgZmFsc2UpXG4gICAgICBjb25zdCByZXNpemVyID0gaXNSZXNpemFibGUgPyAoXG4gICAgICAgIDxSZXNpemVyQ29tcG9uZW50XG4gICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIGZhbHNlKX1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIHRydWUpfVxuICAgICAgICAgIHsuLi5nZXRSZXNpemVyUHJvcHMoJ2ZpbmFsU3RhdGUnLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcyl9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbFxuXG4gICAgICBjb25zdCBpc1NvcnRhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLnNvcnRhYmxlLCBzb3J0YWJsZSwgZmFsc2UpXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgaXNSZXNpemFibGUgJiYgJ3J0LXJlc2l6YWJsZS1oZWFkZXInLFxuICAgICAgICAgICAgc29ydCA/IChzb3J0LmRlc2MgPyAnLXNvcnQtZGVzYycgOiAnLXNvcnQtYXNjJykgOiAnJyxcbiAgICAgICAgICAgIGlzU29ydGFibGUgJiYgJy1jdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICAhc2hvdyAmJiAnLWhpZGRlbicsXG4gICAgICAgICAgICBwaXZvdEJ5ICYmIHBpdm90Qnkuc2xpY2UoMCwgLTEpLmluY2x1ZGVzKGNvbHVtbi5pZCkgJiYgJ3J0LWhlYWRlci1waXZvdCdcbiAgICAgICAgICApfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB0b2dnbGVTb3J0PXtlID0+IHtcbiAgICAgICAgICAgIGlmIChpc1NvcnRhYmxlKSB0aGlzLnNvcnRDb2x1bW4oY29sdW1uLCBtdWx0aVNvcnQgPyBlLnNoaWZ0S2V5IDogZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGlzUmVzaXphYmxlICYmICdydC1yZXNpemFibGUtaGVhZGVyLWNvbnRlbnQnKX0+XG4gICAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkhlYWRlciwge1xuICAgICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cmVzaXplcn1cbiAgICAgICAgPC9UaENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRoZWFkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCB0aGVhZFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlcicsIHRoZWFkUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUhlYWRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlRmlsdGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEZpbHRlclRoUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW1xuICAgICAgICBjb2x1bW4uaGVhZGVyQ2xhc3NOYW1lLFxuICAgICAgICB0aGVhZEZpbHRlclRoUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5IZWFkZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4uY29sdW1uLmhlYWRlclN0eWxlLFxuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMucmVzdCxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMucmVzdCxcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyZWQuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSBjb2x1bW4uaWQpXG5cbiAgICAgIGNvbnN0IFJlc29sdmVkRmlsdGVyQ29tcG9uZW50ID0gY29sdW1uLkZpbHRlciB8fCBGaWx0ZXJDb21wb25lbnRcblxuICAgICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLmZpbHRlcmFibGUsIGZpbHRlcmFibGUsIGZhbHNlKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc0ZpbHRlcmFibGVcbiAgICAgICAgICAgID8gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgUmVzb2x2ZWRGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbHVlID0+IHRoaXMuZmlsdGVyQ29sdW1uKGNvbHVtbiwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFByb3BzLmNvbHVtbi5GaWx0ZXJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VGaWx0ZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkRmlsdGVyVHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoZWFkQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCctZmlsdGVycycsIHRoZWFkRmlsdGVyUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRGaWx0ZXJQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRGaWx0ZXJQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkRmlsdGVyVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRGaWx0ZXJUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkRmlsdGVyVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUZpbHRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFnZVJvdyA9IChyb3csIGksIHBhdGggPSBbXSkgPT4ge1xuICAgICAgY29uc3Qgcm93SW5mbyA9IHtcbiAgICAgICAgb3JpZ2luYWw6IHJvd1tvcmlnaW5hbEtleV0sXG4gICAgICAgIHJvdyxcbiAgICAgICAgaW5kZXg6IHJvd1tpbmRleEtleV0sXG4gICAgICAgIHZpZXdJbmRleDogKHJvd0luZGV4ICs9IDEpLFxuICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgcGFnZSxcbiAgICAgICAgbGV2ZWw6IHBhdGgubGVuZ3RoLFxuICAgICAgICBuZXN0aW5nUGF0aDogcGF0aC5jb25jYXQoW2ldKSxcbiAgICAgICAgYWdncmVnYXRlZDogcm93W2FnZ3JlZ2F0ZWRLZXldLFxuICAgICAgICBncm91cGVkQnlQaXZvdDogcm93W2dyb3VwZWRCeVBpdm90S2V5XSxcbiAgICAgICAgc3ViUm93czogcm93W3N1YlJvd3NLZXldLFxuICAgICAgfVxuICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IF8uZ2V0KGV4cGFuZGVkLCByb3dJbmZvLm5lc3RpbmdQYXRoKVxuICAgICAgY29uc3QgdHJHcm91cFByb3BzID0gZ2V0VHJHcm91cFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIGNvbnN0IHRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VHJQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRyR3JvdXBDb21wb25lbnQga2V5PXtyb3dJbmZvLm5lc3RpbmdQYXRoLmpvaW4oJ18nKX0gey4uLnRyR3JvdXBQcm9wc30+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModHJQcm9wcy5jbGFzc05hbWUsIHJvdy5fdmlld0luZGV4ICUgMiA/ICctZXZlbicgOiAnLW9kZCcpfVxuICAgICAgICAgICAgc3R5bGU9e3RyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAoKGNvbHVtbiwgaTIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgICAgICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgICAgICAgICBjb25zdCB0ZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRkUHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgY29sdW1uLCB0aGlzKSlcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIGNvbHVtbiwgdGhpcykpXG5cbiAgICAgICAgICAgICAgY29uc3QgY2xhc3NlcyA9IFt0ZFByb3BzLmNsYXNzTmFtZSwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgICAgICAuLi50ZFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNlbGxJbmZvID0ge1xuICAgICAgICAgICAgICAgIC4uLnJvd0luZm8sXG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHsgLi4uY29sdW1uIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJvd0luZm8ucm93W2NvbHVtbi5pZF0sXG4gICAgICAgICAgICAgICAgcGl2b3RlZDogY29sdW1uLnBpdm90ZWQsXG4gICAgICAgICAgICAgICAgZXhwYW5kZXI6IGNvbHVtbi5leHBhbmRlcixcbiAgICAgICAgICAgICAgICByZXNpemVkLFxuICAgICAgICAgICAgICAgIHNob3csXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgdGRQcm9wcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5Qcm9wcyxcbiAgICAgICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgICAgIHN0eWxlcyxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2VsbEluZm8udmFsdWVcblxuICAgICAgICAgICAgICBsZXQgdXNlT25FeHBhbmRlckNsaWNrXG4gICAgICAgICAgICAgIGxldCBpc0JyYW5jaFxuICAgICAgICAgICAgICBsZXQgaXNQcmV2aWV3XG5cbiAgICAgICAgICAgICAgY29uc3Qgb25FeHBhbmRlckNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0V4cGFuZGVkID0gXy5jbG9uZShleHBhbmRlZClcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgbmV3RXhwYW5kZWQgPSBfLnNldChuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGZhbHNlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBuZXdFeHBhbmRlZCA9IF8uc2V0KG5ld0V4cGFuZGVkLCBjZWxsSW5mby5uZXN0aW5nUGF0aCwge30pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGVXaXRoRGF0YShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5ld0V4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDaGFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRlZENoYW5nZShuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGUsIGNlbGxJbmZvKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gYSBzdGFuZGFyZCBjZWxsXG4gICAgICAgICAgICAgIGxldCByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uQ2VsbCwgY2VsbEluZm8sIHZhbHVlKVxuXG4gICAgICAgICAgICAgIC8vIFJlc29sdmUgUmVuZGVyZXJzXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCA9XG4gICAgICAgICAgICAgICAgY29sdW1uLkFnZ3JlZ2F0ZWQgfHwgKCFjb2x1bW4uYWdncmVnYXRlID8gQWdncmVnYXRlZENvbXBvbmVudCA6IGNvbHVtbi5DZWxsKVxuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50ID0gY29sdW1uLkV4cGFuZGVyIHx8IEV4cGFuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCA9IGNvbHVtbi5QaXZvdFZhbHVlIHx8IFBpdm90VmFsdWVDb21wb25lbnRcbiAgICAgICAgICAgICAgY29uc3QgRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnQgPVxuICAgICAgICAgICAgICAgIFBpdm90Q29tcG9uZW50IHx8XG4gICAgICAgICAgICAgICAgKHByb3BzID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgPFJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICBjb25zdCBSZXNvbHZlZFBpdm90Q29tcG9uZW50ID0gY29sdW1uLlBpdm90IHx8IERlZmF1bHRSZXNvbHZlZFBpdm90Q29tcG9uZW50XG5cbiAgICAgICAgICAgICAgLy8gSXMgdGhpcyBjZWxsIGV4cGFuZGFibGU/XG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkIHx8IGNlbGxJbmZvLmV4cGFuZGVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTWFrZSBpdCBleHBhbmRhYmxlIGJ5IGRlZnVhbHRcbiAgICAgICAgICAgICAgICBjZWxsSW5mby5leHBhbmRhYmxlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIHVzZU9uRXhwYW5kZXJDbGljayA9IHRydWVcbiAgICAgICAgICAgICAgICAvLyBJZiBwaXZvdGVkLCBoYXMgbm8gc3ViUm93cywgYW5kIGRvZXMgbm90IGhhdmUgYSBzdWJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IG1ha2UgZXhwYW5kYWJsZVxuICAgICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkICYmICFjZWxsSW5mby5zdWJSb3dzICYmICFTdWJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLmV4cGFuZGFibGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5waXZvdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gSXMgdGhpcyBjb2x1bW4gYSBicmFuY2g/XG4gICAgICAgICAgICAgICAgaXNCcmFuY2ggPSByb3dJbmZvLnJvd1twaXZvdElES2V5XSA9PT0gY29sdW1uLmlkICYmIGNlbGxJbmZvLnN1YlJvd3NcbiAgICAgICAgICAgICAgICAvLyBTaG91bGQgdGhpcyBjb2x1bW4gYmUgYmxhbms/XG4gICAgICAgICAgICAgICAgaXNQcmV2aWV3ID1cbiAgICAgICAgICAgICAgICAgIHBpdm90QnkuaW5kZXhPZihjb2x1bW4uaWQpID4gcGl2b3RCeS5pbmRleE9mKHJvd0luZm8ucm93W3Bpdm90SURLZXldKSAmJlxuICAgICAgICAgICAgICAgICAgY2VsbEluZm8uc3ViUm93c1xuICAgICAgICAgICAgICAgIC8vIFBpdm90IENlbGwgUmVuZGVyIE92ZXJyaWRlXG4gICAgICAgICAgICAgICAgaWYgKGlzQnJhbmNoKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpc1Bpdm90XG4gICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZWRQaXZvdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmNlbGxJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbcGl2b3RWYWxLZXldLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByb3dbcGl2b3RWYWxLZXldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ByZXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIHBpdm90IHByZXZpZXdcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCwgY2VsbEluZm8sIHZhbHVlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNlbGxJbmZvLmFnZ3JlZ2F0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZENlbGwgPSBfLm5vcm1hbGl6ZUNvbXBvbmVudChSZXNvbHZlZEFnZ3JlZ2F0ZWRDb21wb25lbnQsIGNlbGxJbmZvLCB2YWx1ZSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjZWxsSW5mby5leHBhbmRlcikge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgUmVzb2x2ZWRFeHBhbmRlckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgIGNlbGxJbmZvLFxuICAgICAgICAgICAgICAgICAgcm93W3Bpdm90VmFsS2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAocGl2b3RCeSkge1xuICAgICAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLmdyb3VwZWRCeVBpdm90KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICghY2VsbEluZm8uc3ViUm93cyAmJiAhU3ViQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZE9uRXhwYW5kZXJDbGljayA9IHVzZU9uRXhwYW5kZXJDbGljayA/IG9uRXhwYW5kZXJDbGljayA6ICgpID0+IHt9XG5cbiAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIG9uQ2xpY2sgZXZlbnRzLCBtYWtlIHN1cmUgdGhleSBkb24ndFxuICAgICAgICAgICAgICAvLyBvdmVycmlkZSBlYWNob3RoZXIuIFRoaXMgc2hvdWxkIG1heWJlIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGxcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gYXR0cmlidXRlc1xuICAgICAgICAgICAgICBjb25zdCBpbnRlcmFjdGlvblByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHJlc29sdmVkT25FeHBhbmRlckNsaWNrLFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRkUHJvcHMucmVzdC5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Qcm9wcy5vbkNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0ZFByb3BzLnJlc3Qub25DbGljayhlLCAoKSA9PiByZXNvbHZlZE9uRXhwYW5kZXJDbGljayhlKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY29sdW1uUHJvcHMucmVzdC5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Qcm9wcy5vbkNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW5Qcm9wcy5yZXN0Lm9uQ2xpY2soZSwgKCkgPT4gcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2soZSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBjZWxsXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2kyfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgICAhY2VsbEluZm8uZXhwYW5kYWJsZSAmJiAhc2hvdyAmJiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgY2VsbEluZm8uZXhwYW5kYWJsZSAmJiAncnQtZXhwYW5kYWJsZScsXG4gICAgICAgICAgICAgICAgICAgIChpc0JyYW5jaCB8fCBpc1ByZXZpZXcpICYmICdydC1waXZvdCdcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgey4uLnRkUHJvcHMucmVzdH1cbiAgICAgICAgICAgICAgICAgIHsuLi5jb2x1bW5Qcm9wcy5yZXN0fVxuICAgICAgICAgICAgICAgICAgey4uLmludGVyYWN0aW9uUHJvcHN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3Jlc29sdmVkQ2VsbH1cbiAgICAgICAgICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICAgIHtyb3dJbmZvLnN1YlJvd3MgJiZcbiAgICAgICAgICAgIGlzRXhwYW5kZWQgJiZcbiAgICAgICAgICAgIHJvd0luZm8uc3ViUm93cy5tYXAoKGQsIGkpID0+IG1ha2VQYWdlUm93KGQsIGksIHJvd0luZm8ubmVzdGluZ1BhdGgpKX1cbiAgICAgICAgICB7U3ViQ29tcG9uZW50ICYmXG4gICAgICAgICAgICAhcm93SW5mby5zdWJSb3dzICYmXG4gICAgICAgICAgICBpc0V4cGFuZGVkICYmXG4gICAgICAgICAgICBTdWJDb21wb25lbnQocm93SW5mbywgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdFeHBhbmRlZCA9IF8uY2xvbmUoZXhwYW5kZWQpXG5cbiAgICAgICAgICAgICAgXy5zZXQobmV3RXhwYW5kZWQsIHJvd0luZm8ubmVzdGluZ1BhdGgsIGZhbHNlKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvVHJHcm91cENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFkQ29sdW1uID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBmbGV4ID0gd2lkdGhcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWF4V2lkdGgpXG4gICAgICBjb25zdCB0ZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRkUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFt0ZFByb3BzLmNsYXNzTmFtZSwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLnRkUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3NlcywgIXNob3cgJiYgJ2hpZGRlbicpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHtmbGV4fSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi50ZFByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoUGFkUm93Q29tcG9uZW50KX1cbiAgICAgICAgPC9UZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFkUm93ID0gKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgdHJHcm91cFByb3BzID0gZ2V0VHJHcm91cFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgY29uc3QgdHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUckdyb3VwQ29tcG9uZW50IGtleT17YHBhZC0ke2l9YH0gey4uLnRyR3JvdXBQcm9wc30+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICctcGFkUm93JyxcbiAgICAgICAgICAgICAgKHBhZ2VSb3dzLmxlbmd0aCArIGkpICUgMiA/ICctZXZlbicgOiAnLW9kZCcsXG4gICAgICAgICAgICAgIHRyUHJvcHMuY2xhc3NOYW1lXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc3R5bGU9e3RyUHJvcHMuc3R5bGUgfHwge319XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FsbFZpc2libGVDb2x1bW5zLm1hcChtYWtlUGFkQ29sdW1uKX1cbiAgICAgICAgICA8L1RyQ29tcG9uZW50PlxuICAgICAgICA8L1RyR3JvdXBDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZUNvbHVtbkZvb3RlciA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRDb2wgPSByZXNpemVkLmZpbmQoeCA9PiB4LmlkID09PSBjb2x1bW4uaWQpIHx8IHt9XG4gICAgICBjb25zdCBzaG93ID0gdHlwZW9mIGNvbHVtbi5zaG93ID09PSAnZnVuY3Rpb24nID8gY29sdW1uLnNob3coKSA6IGNvbHVtbi5zaG93XG4gICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRGb290VGRQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUZm9vdFRkUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKSlcbiAgICAgIGNvbnN0IGNvbHVtbkZvb3RlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIHRGb290VGRQcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtbi5jbGFzc05hbWUsXG4gICAgICAgIGNvbHVtblByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uRm9vdGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLnRGb290VGRQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uRm9vdGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3NlcywgIXNob3cgJiYgJ2hpZGRlbicpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4uY29sdW1uUHJvcHMucmVzdH1cbiAgICAgICAgICB7Li4udEZvb3RUZFByb3BzLnJlc3R9XG4gICAgICAgICAgey4uLmNvbHVtbkZvb3RlclByb3BzLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkZvb3Rlciwge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlQ29sdW1uRm9vdGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRGb290UHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCB0Rm9vdFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZm9vdENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17dEZvb3RQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRGb290UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRGb290UHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRGb290VHJQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgc3R5bGU9e3RGb290VHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50Rm9vdFRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VDb2x1bW5Gb290ZXIpfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGZvb3RDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZ2luYXRpb24gPSBpc1RvcCA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFBhZ2luYXRpb25Qcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAgICAgICAgey4uLnJlc29sdmVkU3RhdGV9XG4gICAgICAgICAgcGFnZXM9e3BhZ2VzfVxuICAgICAgICAgIGNhblByZXZpb3VzPXtjYW5QcmV2aW91c31cbiAgICAgICAgICBjYW5OZXh0PXtjYW5OZXh0fVxuICAgICAgICAgIG9uUGFnZUNoYW5nZT17dGhpcy5vblBhZ2VDaGFuZ2V9XG4gICAgICAgICAgb25QYWdlU2l6ZUNoYW5nZT17dGhpcy5vblBhZ2VTaXplQ2hhbmdlfVxuICAgICAgICAgIGNsYXNzTmFtZT17cGFnaW5hdGlvblByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICBzdHlsZT17cGFnaW5hdGlvblByb3BzLnN0eWxlfVxuICAgICAgICAgIGlzVG9wPXtpc1RvcH1cbiAgICAgICAgICB7Li4ucGFnaW5hdGlvblByb3BzLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ1JlYWN0VGFibGUnLCBjbGFzc05hbWUsIHJvb3RQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgIC4uLnJvb3RQcm9wcy5zdHlsZSxcbiAgICAgICAgfX1cbiAgICAgICAgey4uLnJvb3RQcm9wcy5yZXN0fVxuICAgICAgICByZWY9e3IgPT4ge1xuICAgICAgICAgIGlmICghcikgcmV0dXJuXG4gICAgICAgICAgaWYgKHJvb3RQcm9wcy5yZXN0LnJlZikge1xuICAgICAgICAgICAgcm9vdFByb3BzLnJlc3QucmVmKHIpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudGFibGVSZWYgPSByXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtzaG93UGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvblRvcCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2luYXRpb24tdG9wXCI+e21ha2VQYWdpbmF0aW9uKHRydWUpfTwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFRhYmxlQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRhYmxlUHJvcHMuY2xhc3NOYW1lLCBjdXJyZW50bHlSZXNpemluZyA/ICdydC1yZXNpemluZycgOiAnJyl9XG4gICAgICAgICAgc3R5bGU9e3RhYmxlUHJvcHMuc3R5bGV9XG4gICAgICAgICAgey4uLnRhYmxlUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtoYXNIZWFkZXJHcm91cHMgPyBtYWtlSGVhZGVyR3JvdXBzKCkgOiBudWxsfVxuICAgICAgICAgIHttYWtlSGVhZGVycygpfVxuICAgICAgICAgIHtoYXNGaWx0ZXJzID8gbWFrZUZpbHRlcnMoKSA6IG51bGx9XG4gICAgICAgICAgPFRib2R5Q29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModEJvZHlQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLi4udEJvZHlQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgbWluV2lkdGg6IGAke3Jvd01pbldpZHRofXB4YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4udEJvZHlQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFnZVJvd3MubGVuZ3RoIDwgMjAwID8gcGFnZVJvd3MubWFwKChkLCBpKSA9PiBtYWtlUGFnZVJvdyhkLCBpKSkgOlxuICAgICAgICAgICAgICA8UmVhY3RMaXN0XG4gICAgICAgICAgICAgICAgdHlwZT1cInZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICBpdGVtU2l6ZUVzdGltYXRvcj17dGhpcy5wcm9wcy5pdGVtU2l6ZUVzdGltYXRvciB8fCBpdGVtU2l6ZUVzdGltYXRvcn1cbiAgICAgICAgICAgICAgICBpdGVtUmVuZGVyZXI9e2kgPT4gbWFrZVBhZ2VSb3cocGFnZVJvd3NbaV0sIGkpfVxuICAgICAgICAgICAgICAgIGxlbmd0aD17cGFnZVJvd3MubGVuZ3RofVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge3BhZFJvd3MubWFwKG1ha2VQYWRSb3cpfVxuICAgICAgICAgICAge2FkZGl0aW9uYWxCb2R5RWx9XG4gICAgICAgICAgPC9UYm9keUNvbXBvbmVudD5cbiAgICAgICAgICB7aGFzQ29sdW1uRm9vdGVyID8gbWFrZUNvbHVtbkZvb3RlcnMoKSA6IG51bGx9XG4gICAgICAgIDwvVGFibGVDb21wb25lbnQ+XG4gICAgICAgIHtzaG93UGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvbkJvdHRvbSA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2luYXRpb24tYm90dG9tXCI+e21ha2VQYWdpbmF0aW9uKGZhbHNlKX08L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshcGFnZVJvd3MubGVuZ3RoICYmIChcbiAgICAgICAgICA8Tm9EYXRhQ29tcG9uZW50IHsuLi5ub0RhdGFQcm9wc30+e18ubm9ybWFsaXplQ29tcG9uZW50KG5vRGF0YVRleHQpfTwvTm9EYXRhQ29tcG9uZW50PlxuICAgICAgICApfVxuICAgICAgICA8TG9hZGluZ0NvbXBvbmVudCBsb2FkaW5nPXtsb2FkaW5nfSBsb2FkaW5nVGV4dD17bG9hZGluZ1RleHR9IHsuLi5sb2FkaW5nUHJvcHN9IC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICAvLyBjaGlsZFByb3BzIGFyZSBvcHRpb25hbGx5IHBhc3NlZCB0byBhIGZ1bmN0aW9uLWFzLWEtY2hpbGRcbiAgICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlbihmaW5hbFN0YXRlLCBtYWtlVGFibGUsIHRoaXMpIDogbWFrZVRhYmxlKClcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/react-table",
3
- "version": "6.10.15",
3
+ "version": "6.10.16",
4
4
  "description": "teselagen maintained version of react-table@v6 (with react-list virtualization enabled by default above 200 rows) -- A fast, lightweight, opinionated table and datagrid built on React",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/tnrich/react-table#readme",
package/react-table.js CHANGED
@@ -3970,32 +3970,6 @@ var ReactTable = function (_Methods) {
3970
3970
  _this.resizeColumnEnd = _this.resizeColumnEnd.bind(_this);
3971
3971
  _this.resizeColumnMoving = _this.resizeColumnMoving.bind(_this);
3972
3972
 
3973
- setTimeout(function () {
3974
- // tnw: this is some very hacky code to set the initial column widths
3975
- try {
3976
- var newResized = _this.props.defaultResized || [];
3977
- _this.tableRef.querySelectorAll('.tg-react-table-column-header').forEach(function (th) {
3978
- var _th$parentNode$parent = th.parentNode.parentNode.getBoundingClientRect(),
3979
- width = _th$parentNode$parent.width;
3980
-
3981
- var id = th.getAttribute('data-path');
3982
- if (!newResized.find(function (x) {
3983
- return x.id === id;
3984
- })) {
3985
- newResized.push({
3986
- id: id,
3987
- value: width
3988
- });
3989
- }
3990
- });
3991
- _this.setState({
3992
- resized: newResized
3993
- });
3994
- } catch (e) {
3995
- console.warn('TNW: Error setting initial table column widths (please contact @tnrich if you see this error. thanks!):', e);
3996
- }
3997
- }, 0);
3998
-
3999
3973
  _this.state = {
4000
3974
  page: props.defaultPage,
4001
3975
  pageSize: props.defaultPageSize,
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t(e.ReactTable={},e.React)}(this,function(e,t){"use strict";var n="default"in t?t.default:t;"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(e,t){return e(t={exports:{}},t.exports),t.exports}var o=r(function(e){!function(){var t={}.hasOwnProperty;function n(){for(var e=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)e.push(o);else if(Array.isArray(o))e.push(n.apply(null,o));else if("object"===a)for(var i in o)t.call(o,i)&&o[i]&&e.push(i)}}return e.join(" ")}e.exports?e.exports=n:window.classNames=n}()}),a="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";function i(){}function s(){}s.resetWarningCache=i;var l,u=r(function(e){e.exports=function(){function e(e,t,n,r,o,i){if(i!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:i};return n.PropTypes=n,n}()}),d=r(function(e,t){(function(e,t,n){function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t){return!t||"object"!==o(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,t=r(t),n=r(n);var d={x:"clientWidth",y:"clientHeight"},c={x:"clientTop",y:"clientLeft"},p={x:"innerWidth",y:"innerHeight"},f={x:"offsetWidth",y:"offsetHeight"},h={x:"offsetLeft",y:"offsetTop"},m={x:"overflowX",y:"overflowY"},g={x:"scrollWidth",y:"scrollHeight"},v={x:"scrollLeft",y:"scrollTop"},y={x:"minWidth",y:"minHeight"},P=function(){},b=!!function(){if("undefined"==typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",P,{get passive(){return e=!0,!1}})}catch(e){}return e}()&&{passive:!0},S=function(e){function t(e){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=i(this,s(t).call(this,e));var r=e.initialIndex,o=n.constrain(r,0,1,e),a=o.from,l=o.size;return n.state={from:a,size:l,itemsPerRow:1},n.cache={},n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}var r,o,u;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(t,n["default"].Component),r=t,(o=[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this.state,n=t.from,r=t.size,o=t.itemsPerRow;e.clearCache&&(this.cache={}),this.maybeSetState(this.constrain(n,r,o,e),P)}},{key:"componentDidMount",value:function(){this.updateFrame=this.updateFrame.bind(this),window.addEventListener("resize",this.updateFrame),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(){var e=this;if(!this.unstable){if(++this.updateCounter>100)return this.unstable=!0,console.error("ReactList failed to reach a stable state.");this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout(function(){e.updateCounter=0,delete e.updateCounterTimeoutId},0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0}(this.state,e))return t();this.state.from===e.from+1&&(this.rowToFixScroll={row:e.from,cache:this.cache[e.from]}),this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrame),this.scrollParent.removeEventListener("scroll",this.updateFrame,b),this.scrollParent.removeEventListener("mousewheel",P,b)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[c[t]]||0,r=h[t];do{n+=e[r]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollParent",value:function(){var e=this.props,t=e.axis,n=e.scrollParentGetter;if(n)return n();var r=this.getEl();if(!r)return window;for(var o=m[t];r=r.parentElement;)switch(window.getComputedStyle(r)[o]){case"auto":case"scroll":case"overlay":return r}return window}},{key:"getScrollPosition",value:function(){var e=this.scrollParent,t=this.props.axis,n=v[t],r=e===window?document.body[n]||document.documentElement[n]:e[n],o=this.getScrollSize()-this.getViewportSize(),a=Math.max(0,Math.min(r,o)),i=this.getEl();return this.getOffset(e)+a-this.getOffset(i)}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[v[n]]=e}},{key:"getViewportSize",value:function(){var e=this.scrollParent,t=this.props.axis;return e===window?window[p[t]]:e[d[t]]}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,r=t.documentElement,o=g[this.props.axis];return e===window?Math.max(n[o],r[o]):e[o]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),r=t+this.getViewportSize()+e;return this.hasDeterminateSize()&&(r=Math.min(r,this.getSpaceBefore(this.props.length))),{start:n,end:r}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,r=this.state,o=r.itemSize,a=r.itemsPerRow;if(n&&o&&a)return{itemSize:o,itemsPerRow:a};var i=this.items.children;if(!i.length)return{};var s=i[0],l=s[f[t]],u=Math.abs(l-o);if((isNaN(u)||u>=1)&&(o=l),!o)return{};for(var d=h[t],c=s[d],p=i[a=1];p&&p[d]===c;p=i[a])++a;return{itemSize:o,itemsPerRow:a}}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=P),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;e||(this.scrollParent=this.getScrollParent(),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrame),e.removeEventListener("mousewheel",P)),this.scrollParent.addEventListener("scroll",this.updateFrame,b),this.scrollParent.addEventListener("mousewheel",P,b)))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,r=0;if(n.length){var o=this.props.axis,a=n[0],i=n[n.length-1];r=this.getOffset(i)+i[f[o]]-this.getOffset(a)}if(r>t)return e();var s=this.props,l=s.pageSize,u=s.length,d=Math.min(this.state.size+l,u);this.maybeSetState({size:d},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,r=t.end,o=this.props,a=o.length,i=o.pageSize,s=0,l=0,u=0,d=a-1;l<d;){var c=this.getSizeOfItem(l);if(null==c||s+c>n)break;s+=c,++l}for(var p=a-l;u<p&&s<r;){var f=this.getSizeOfItem(l+u);if(null==f){u=Math.min(u+i,p);break}s+=f,++u}this.maybeSetState({from:l,size:u},e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,r=t.itemsPerRow;if(!n||!r)return e();var o=this.getStartAndEnd(),a=o.start,i=o.end,s=this.constrain(Math.floor(a/n)*r,(Math.ceil((i-a)/n)+1)*r,r,this.props),l=s.from,u=s.size;return this.maybeSetState({itemsPerRow:r,from:l,itemSize:n,size:u},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,r=n.itemSize,o=n.itemsPerRow;if(r)return t[e]=Math.floor(e/o)*r;for(var a=e;a>0&&null==t[--a];);for(var i=t[a]||0,s=a;s<e;++s){t[s]=i;var l=this.getSizeOfItem(s);if(null==l)break;i+=l}return t[e]=i}},{key:"cacheSizes",value:function(){var e=this.cache,t=this.state.from;if(this.items)for(var n=this.items.children,r=f[this.props.axis],o=0,a=n.length;o<a;++o)e[t+o]=n[o][r]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,r=this.props,o=r.axis,a=r.itemSizeGetter,i=r.itemSizeEstimator,s=r.type,l=this.state,u=l.from,d=l.itemSize,c=l.size;if(d)return d;if(a)return a(e);if(e in t)return t[e];if("simple"===s&&e>=u&&e<u+c&&n){var p=n.children[e-u];if(p)return p[f[o]]}return i?i(e,t):void 0}},{key:"constrain",value:function(e,t,n,r){var o=r.length,a=r.minSize,i=r.type,s=(t=Math.max(t,a))%n;return s&&(t+=n-s),t>o&&(t=o),(s=(e="simple"!==i&&e?Math.max(Math.min(e,o-t),0):0)%n)&&(e-=s,t+=s),{from:e,size:t}}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e)-100)}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),r=n-this.getViewportSize()+this.getSizeOfItem(e),o=Math.min(r,n),a=Math.max(r,n);return t<=o?this.setScroll(o-this.getViewportSize()):t>a?this.setScroll(a-this.getViewportSize()-100):void 0}},{key:"getVisibleRange",value:function(){for(var e,t,n=this.state,r=n.from,o=n.size,a=this.getStartAndEnd(0),i=a.start,s=a.end,l={},u=r;u<r+o;++u){var d=this.getSpaceBefore(u,l),c=d+this.getSizeOfItem(u);null==e&&c>i&&(e=u),null!=e&&d<s&&(t=u)}return[e,t]}},{key:"getFractionalVisibleRange",value:function(){for(var e,t,n=this.state,r=n.from,o=n.size,a=this.getStartAndEnd(0),i=a.start,s=a.end,l={},u=r;u<r+o;++u){var d=this.getSpaceBefore(u,l),c=d+this.getSizeOfItem(u);null==e&&c>i&&(e=u+1-(c-i)/(c-d)),null!=e&&d<s&&(t=u-(c-s)/(c-d))}return[e,t]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,r=t.itemsRenderer,o=this.state,a=o.from,i=o.size,s=[],l=0;l<i;++l)s.push(n(a+l,l));return r(s,function(t){return e.items=t})}},{key:"render",value:function(){var e=this,t=this.props,r=t.axis,o=t.length,a=t.type,i=this.state,s=i.from,l=i.itemsPerRow,u=this.renderItems();if("simple"===a)return u;var d={position:"relative"},c={},p=Math.ceil(o/l)*l,f=this.getSpaceBefore(p,c);f&&(d[y[r]]=f,"x"===r&&(d.overflowX="hidden"));var h=this.getSpaceBefore(s,c),m={position:"relative",top:"y"===r?h:0,left:"x"===r?h:0};return n.default.createElement("div",{style:d,ref:function(t){t&&(e.el=t)}},n.default.createElement("div",{style:m},u))}}])&&a(r.prototype,o),u&&a(r,u),t}();e.default=S,u(S,"displayName","ReactList"),u(S,"propTypes",{axis:t.default.oneOf(["x","y"]),initialIndex:t.default.number,itemRenderer:t.default.func,itemSizeEstimator:t.default.func,itemSizeGetter:t.default.func,itemsRenderer:t.default.func,length:t.default.number,minSize:t.default.number,pageSize:t.default.number,scrollParentGetter:t.default.func,threshold:t.default.number,type:t.default.oneOf(["simple","variable","uniform"]),useStaticSize:t.default.bool,useTranslate3d:t.default.bool}),u(S,"defaultProps",{axis:"y",itemRenderer:function(e,t){return n.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return n.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1})})(t,u,n)}),c=(l=d)&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l,p=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),h=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},v=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},y=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},P=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),b=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)},S={get:function(e,t,n){if(!t)return e;var r=C(t),o=void 0;try{o=r.reduce(function(e,t){return e[t]},e)}catch(e){}return void 0!==o?o:n},set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=arguments[2],r=C(t),o=void 0,a=e;for(;(o=r.shift())&&r.length;)a[o]||(a[o]={}),a=a[o];return a[o]=n,e},takeRight:function(e,t){var n=t>e.length?0:e.length-t;return e.slice(n)},last:function(e){return e[e.length-1]},orderBy:function(e,t,n,r){return e.sort(function(e,o){for(var a=0;a<t.length;a+=1){var i=t[a],s=!1===n[a]||"desc"===n[a],l=i(e,o);if(l)return s?-l:l}return n[0]?e[r]-o[r]:o[r]-e[r]})},range:function(e){for(var t=[],n=0;n<e;n+=1)t.push(e);return t},remove:function(e,t){return e.filter(function(n,r){var o=t(n);return!!o&&(e.splice(r,1),!0)})},clone:function(e){try{return JSON.parse(JSON.stringify(e,function(e,t){return"function"==typeof t?t.toString():t}))}catch(t){return e}},getFirstDefined:function(){for(var e=0;e<arguments.length;e+=1)if(void 0!==(arguments.length<=e?void 0:arguments[e]))return arguments.length<=e?void 0:arguments[e]},sum:function(e){return e.reduce(function(e,t){return e+t},0)},makeTemplateComponent:function(e,t){if(!t)throw new Error("No displayName found for template component:",e);var r=function(t){var r=t.children,a=t.className,i=v(t,["children","className"]);return n.createElement("div",m({className:o(e,a)},i),r)};return r.displayName=t,r},groupBy:function(e,t){return e.reduce(function(e,n,r){var o="function"==typeof t?t(n,r):n[t];return e[o]=w(e[o])?e[o]:[],e[o].push(n),e},{})},isArray:w,splitProps:function(e){var t=e.className,n=e.style,r=v(e,["className","style"]);return{className:t,style:n,rest:r||{}}},compactObject:function(e){var t={};e&&Object.keys(e).map(function(n){return Object.prototype.hasOwnProperty.call(e,n)&&void 0!==e[n]&&void 0!==e[n]&&(t[n]=e[n]),!0});return t},isSortingDesc:function(e){return!("desc"!==e.sort&&!0!==e.desc&&!1!==e.asc)},normalizeComponent:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?Object.getPrototypeOf(e).isReactComponent?n.createElement(e,t):e(t):r},asPx:function(e){return e=Number(e),Number.isNaN(e)?null:e+"px"}};function w(e){return Array.isArray(e)}function C(e){return function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(w(t))for(var r=0;r<t.length;r+=1)e(t[r],n);else n.push(t);return n}(e).join(".").replace(/\[/g,".").replace(/\]/g,"").split(".")}var T=function(e){return n.createElement("button",m({type:"button"},e,{className:"-btn"}),e.children)},x=function(e){function t(e){p(this,t);var n=y(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getSafePage=n.getSafePage.bind(n),n.changePage=n.changePage.bind(n),n.applyPage=n.applyPage.bind(n),n.state={page:e.page},n}return g(t,e),f(t,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.page!==e.page&&this.setState({page:e.page})}},{key:"getSafePage",value:function(e){return Number.isNaN(e)&&(e=this.props.page),Math.min(Math.max(e,0),this.props.pages-1)}},{key:"changePage",value:function(e){e=this.getSafePage(e),this.setState({page:e}),this.props.page!==e&&this.props.onPageChange(e)}},{key:"applyPage",value:function(e){e&&e.preventDefault();var t=this.state.page;this.changePage(""===t?this.props.page:t)}},{key:"getPageJumpProperties",value:function(){var e=this;return{onKeyPress:function(t){13!==t.which&&13!==t.keyCode||e.applyPage()},onBlur:this.applyPage,value:""===this.state.page?"":this.state.page+1,onChange:function(t){var n=t.target.value,r=n-1;if(""===n)return e.setState({page:n});e.setState({page:e.getSafePage(r)})},inputType:""===this.state.page?"text":"number",pageJumpText:this.props.pageJumpText}}},{key:"render",value:function(){var e=this,t=this.props,r=t.pages,a=t.page,i=t.showPageSizeOptions,s=t.pageSizeOptions,l=t.pageSize,u=t.showPageJump,d=t.canPrevious,c=t.canNext,p=t.onPageSizeChange,f=t.className,h=t.PreviousComponent,m=t.NextComponent,g=t.renderPageJump,v=t.renderCurrentPage,y=t.renderTotalPagesCount,P=t.renderPageSizeOptions;return n.createElement("div",{className:o(f,"-pagination"),style:this.props.style},n.createElement("div",{className:"-previous"},n.createElement(h,{onClick:function(){d&&e.changePage(a-1)},disabled:!d},this.props.previousText)),n.createElement("div",{className:"-center"},n.createElement("span",{className:"-pageInfo"},this.props.pageText," ",u?g(this.getPageJumpProperties()):v(a)," ",this.props.ofText," ",y(r)),i&&P({pageSize:l,rowsSelectorText:this.props.rowsSelectorText,pageSizeOptions:s,onPageSizeChange:p,rowsText:this.props.rowsText})),n.createElement("div",{className:"-next"},n.createElement(m,{onClick:function(){c&&e.changePage(a+1)},disabled:!c},this.props.nextText)))}}]),t}(t.Component);x.defaultProps={PreviousComponent:T,NextComponent:T,renderPageJump:function(e){var t=e.onChange,r=e.value,o=e.onBlur,a=e.onKeyPress,i=e.inputType,s=e.pageJumpText;return n.createElement("div",{className:"-pageJump"},n.createElement("input",{"aria-label":s,type:i,onChange:t,value:r,onBlur:o,onKeyPress:a}))},renderCurrentPage:function(e){return n.createElement("span",{className:"-currentPage"},e+1)},renderTotalPagesCount:function(e){return n.createElement("span",{className:"-totalPages"},e||1)},renderPageSizeOptions:function(e){var t=e.pageSize,r=e.pageSizeOptions,o=e.rowsSelectorText,a=e.onPageSizeChange,i=e.rowsText;return n.createElement("span",{className:"select-wrap -pageSizeOptions"},n.createElement("select",{"aria-label":o,onChange:function(e){return a(Number(e.target.value))},value:t},r.map(function(e,t){return n.createElement("option",{key:t,value:e},e+" "+i)})))}};var z,E=function(){return{}},N={data:[],resolveData:function(e){return e},loading:!1,showPagination:!0,showPaginationTop:!1,showPaginationBottom:!0,showPageSizeOptions:!0,pageSizeOptions:[5,10,20,25,50,100],defaultPage:0,defaultPageSize:20,showPageJump:!0,collapseOnSortingChange:!0,collapseOnPageChange:!0,collapseOnDataChange:!0,freezeWhenExpanded:!1,sortable:!0,multiSort:!0,resizable:!0,filterable:!1,defaultSortDesc:!1,defaultSorted:[],defaultFiltered:[],defaultResized:[],defaultExpanded:{},defaultFilterMethod:function(e,t,n){var r=e.pivotId||e.id;return void 0===t[r]||String(t[r]).startsWith(e.value)},defaultSortMethod:function(e,t,n){return e=null===e||void 0===e?"":e,t=null===t||void 0===t?"":t,(e="string"==typeof e?e.toLowerCase():e)>(t="string"==typeof t?t.toLowerCase():t)?1:e<t?-1:0},onPageChange:void 0,onPageSizeChange:void 0,onSortedChange:void 0,onFilteredChange:void 0,onResizedChange:void 0,onExpandedChange:void 0,pivotBy:void 0,pivotValKey:"_pivotVal",pivotIDKey:"_pivotID",subRowsKey:"_subRows",aggregatedKey:"_aggregated",nestingLevelKey:"_nestingLevel",originalKey:"_original",indexKey:"_index",groupedByPivotKey:"_groupedByPivot",onFetchData:function(){return null},className:"",style:{},getProps:E,getTableProps:E,getTheadGroupProps:E,getTheadGroupTrProps:E,getTheadGroupThProps:E,getTheadProps:E,getTheadTrProps:E,getTheadThProps:E,getTheadFilterProps:E,getTheadFilterTrProps:E,getTheadFilterThProps:E,getTbodyProps:E,getTrGroupProps:E,getTrProps:E,getTdProps:E,getTfootProps:E,getTfootTrProps:E,getTfootTdProps:E,getPaginationProps:E,getLoadingProps:E,getNoDataProps:E,getResizerProps:E,column:{Cell:void 0,Header:void 0,Footer:void 0,Aggregated:void 0,Pivot:void 0,PivotValue:void 0,Expander:void 0,Filter:void 0,Placeholder:void 0,sortable:void 0,resizable:void 0,filterable:void 0,show:!0,minWidth:100,minResizeWidth:11,className:"",style:{},getProps:E,aggregate:void 0,headerClassName:"",headerStyle:{},getHeaderProps:E,footerClassName:"",footerStyle:{},getFooterProps:E,filterMethod:void 0,filterAll:!1,sortMethod:void 0},expanderDefaults:{sortable:!1,resizable:!1,filterable:!1,width:35},pivotDefaults:{},previousText:"Previous",nextText:"Next",loadingText:"Loading...",noDataText:"No rows found",pageText:"Page",ofText:"of",rowsText:"rows",pageJumpText:"jump to page",rowsSelectorText:"rows per page",TableComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-table",r),role:"grid"},a),t)},TheadComponent:S.makeTemplateComponent("rt-thead","Thead"),TbodyComponent:S.makeTemplateComponent("rt-tbody","Tbody"),TrGroupComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-tr-group",r),role:"rowgroup"},a),t)},TrComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-tr",r),role:"row"},a),t)},ThComponent:function(e){var t=e.toggleSort,r=e.className,a=e.children,i=v(e,["toggleSort","className","children"]);return n.createElement("div",m({className:o("rt-th",r),onClick:function(e){return t&&t(e)},role:"columnheader",tabIndex:"-1"},i),a)},TdComponent:function(e){e.toggleSort;var t=e.className,r=e.children,a=v(e,["toggleSort","className","children"]);return n.createElement("div",m({className:o("rt-td",t),role:"gridcell"},a),r)},TfootComponent:S.makeTemplateComponent("rt-tfoot","Tfoot"),FilterComponent:function(e){var t=e.filter,r=e.onChange,o=e.column;return n.createElement("input",{type:"text",style:{width:"100%"},placeholder:o.Placeholder,value:t?t.value:"",onChange:function(e){return r(e.target.value)}})},ExpanderComponent:function(e){var t=e.isExpanded;return n.createElement("div",{className:o("rt-expander",t&&"-open")},"•")},PivotValueComponent:function(e){var t=e.subRows,r=e.value;return n.createElement("span",null,r," ",t&&"("+t.length+")")},AggregatedComponent:function(e){var t=e.subRows,r=e.column,o=t.filter(function(e){return void 0!==e[r.id]}).map(function(e,o){return n.createElement("span",{key:o},e[r.id],o<t.length-1?", ":"")});return n.createElement("span",null,o)},PivotComponent:void 0,PaginationComponent:x,PreviousComponent:void 0,NextComponent:void 0,LoadingComponent:function(e){var t=e.className,r=e.loading,a=e.loadingText,i=v(e,["className","loading","loadingText"]);return n.createElement("div",m({className:o("-loading",{"-active":r},t)},i),n.createElement("div",{className:"-loading-inner"},a))},NoDataComponent:S.makeTemplateComponent("rt-noData","NoData"),ResizerComponent:S.makeTemplateComponent("rt-resizer","Resizer"),PadRowComponent:function(){return n.createElement("span",null," ")}},O={data:u.any,loading:u.bool,showPagination:u.bool,showPaginationTop:u.bool,showPaginationBottom:u.bool,showPageSizeOptions:u.bool,pageSizeOptions:u.array,defaultPageSize:u.number,showPageJump:u.bool,collapseOnSortingChange:u.bool,collapseOnPageChange:u.bool,collapseOnDataChange:u.bool,freezeWhenExpanded:u.bool,sortable:u.bool,resizable:u.bool,filterable:u.bool,defaultSortDesc:u.bool,defaultSorted:u.array,defaultFiltered:u.array,defaultResized:u.array,defaultExpanded:u.object,defaultFilterMethod:u.func,defaultSortMethod:u.func,onPageChange:u.func,onPageSizeChange:u.func,onSortedChange:u.func,onFilteredChange:u.func,onResizedChange:u.func,onExpandedChange:u.func,pivotBy:u.array,pivotValKey:u.string,pivotIDKey:u.string,subRowsKey:u.string,aggregatedKey:u.string,nestingLevelKey:u.string,originalKey:u.string,indexKey:u.string,groupedByPivotKey:u.string,onFetchData:u.func,className:u.string,style:u.object,getProps:u.func,getTableProps:u.func,getTheadGroupProps:u.func,getTheadGroupTrProps:u.func,getTheadGroupThProps:u.func,getTheadProps:u.func,getTheadTrProps:u.func,getTheadThProps:u.func,getTheadFilterProps:u.func,getTheadFilterTrProps:u.func,getTheadFilterThProps:u.func,getTbodyProps:u.func,getTrGroupProps:u.func,getTrProps:u.func,getTdProps:u.func,getTfootProps:u.func,getTfootTrProps:u.func,getTfootTdProps:u.func,getPaginationProps:u.func,getLoadingProps:u.func,getNoDataProps:u.func,getResizerProps:u.func,columns:u.arrayOf(u.shape({Cell:u.oneOfType([u.element,u.string,u.func]),Header:u.oneOfType([u.element,u.string,u.func]),Footer:u.oneOfType([u.element,u.string,u.func]),Aggregated:u.oneOfType([u.element,u.string,u.func]),Pivot:u.oneOfType([u.element,u.string,u.func]),PivotValue:u.oneOfType([u.element,u.string,u.func]),Expander:u.oneOfType([u.element,u.string,u.func]),Filter:u.oneOfType([u.element,u.func]),sortable:u.bool,resizable:u.bool,filterable:u.bool,show:u.bool,minWidth:u.number,minResizeWidth:u.number,className:u.string,style:u.object,getProps:u.func,aggregate:u.func,headerClassName:u.string,headerStyle:u.object,getHeaderProps:u.func,footerClassName:u.string,footerStyle:u.object,getFooterProps:u.func,filterMethod:u.func,filterAll:u.bool,sortMethod:u.func})),expanderDefaults:u.shape({sortable:u.bool,resizable:u.bool,filterable:u.bool,width:u.number}),pivotDefaults:u.object,previousText:u.node,nextText:u.node,loadingText:u.node,noDataText:u.node,pageText:u.node,ofText:u.node,rowsText:u.node,pageJumpText:u.node,rowsSelectorText:u.node,TableComponent:u.elementType,TheadComponent:u.elementType,TbodyComponent:u.elementType,TrGroupComponent:u.elementType,TrComponent:u.elementType,ThComponent:u.elementType,TdComponent:u.elementType,TfootComponent:u.elementType,FilterComponent:u.elementType,ExpanderComponent:u.elementType,PivotValueComponent:u.elementType,AggregatedComponent:u.elementType,PivotComponent:u.elementType,PaginationComponent:u.elementType,PreviousComponent:u.elementType,NextComponent:u.elementType,LoadingComponent:u.elementType,NoDataComponent:u.elementType,ResizerComponent:u.elementType,PadRowComponent:u.elementType},D=function(){return 41.36},R=N,k=function(e){function t(e){p(this,t);var n=y(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.getResolvedState=n.getResolvedState.bind(n),n.getDataModel=n.getDataModel.bind(n),n.getSortedData=n.getSortedData.bind(n),n.fireFetchData=n.fireFetchData.bind(n),n.getPropOrState=n.getPropOrState.bind(n),n.getStateOrProp=n.getStateOrProp.bind(n),n.filterData=n.filterData.bind(n),n.sortData=n.sortData.bind(n),n.getMinRows=n.getMinRows.bind(n),n.onPageChange=n.onPageChange.bind(n),n.onPageSizeChange=n.onPageSizeChange.bind(n),n.sortColumn=n.sortColumn.bind(n),n.filterColumn=n.filterColumn.bind(n),n.resizeColumnStart=n.resizeColumnStart.bind(n),n.resizeColumnEnd=n.resizeColumnEnd.bind(n),n.resizeColumnMoving=n.resizeColumnMoving.bind(n),setTimeout(function(){try{var e=n.props.defaultResized||[];n.tableRef.querySelectorAll(".tg-react-table-column-header").forEach(function(t){var n=t.parentNode.parentNode.getBoundingClientRect().width,r=t.getAttribute("data-path");e.find(function(e){return e.id===r})||e.push({id:r,value:n})}),n.setState({resized:e})}catch(e){console.warn("TNW: Error setting initial table column widths (please contact @tnrich if you see this error. thanks!):",e)}},0),n.state={page:e.defaultPage,pageSize:e.defaultPageSize,sorted:e.defaultSorted,expanded:e.defaultExpanded,filtered:e.defaultFiltered,resized:e.defaultResized,currentlyResizing:!1,skipNextSort:!1},n}return g(t,e),f(t,[{key:"render",value:function(){var e=this,t=this.getResolvedState(),r=t.children,a=t.className,i=t.style,s=t.getProps,l=t.getTableProps,u=t.getTheadGroupProps,d=t.getTheadGroupTrProps,p=t.getTheadGroupThProps,f=t.getTheadProps,h=t.getTheadTrProps,g=t.getTheadThProps,v=t.getTheadFilterProps,y=t.getTheadFilterTrProps,b=t.getTheadFilterThProps,w=t.getTbodyProps,C=t.getTrGroupProps,T=t.getTrProps,x=t.getTdProps,z=t.getTfootProps,E=t.getTfootTrProps,O=t.getTfootTdProps,R=t.getPaginationProps,k=t.getLoadingProps,F=t.getNoDataProps,W=t.getResizerProps,M=t.showPagination,_=t.showPaginationTop,j=t.showPaginationBottom,K=t.manual,L=t.loadingText,A=t.noDataText,I=t.sortable,B=t.multiSort,G=t.resizable,V=t.filterable,H=t.pivotIDKey,J=t.pivotValKey,U=t.pivotBy,X=t.subRowsKey,q=t.aggregatedKey,Y=t.originalKey,Q=t.indexKey,Z=t.groupedByPivotKey,$=t.loading,ee=t.pageSize,te=t.page,ne=t.sorted,re=t.filtered,oe=t.resized,ae=t.expanded,ie=t.pages,se=t.onExpandedChange,le=t.TableComponent,ue=t.TheadComponent,de=t.TbodyComponent,ce=t.additionalBodyEl,pe=t.TrGroupComponent,fe=t.TrComponent,he=t.ThComponent,me=t.TdComponent,ge=t.TfootComponent,ve=t.PaginationComponent,ye=t.LoadingComponent,Pe=t.SubComponent,be=t.NoDataComponent,Se=t.ResizerComponent,we=t.ExpanderComponent,Ce=t.PivotValueComponent,Te=t.PivotComponent,xe=t.AggregatedComponent,ze=t.FilterComponent,Ee=t.PadRowComponent,Ne=t.resolvedData,Oe=t.allVisibleColumns,De=t.headerGroups,Re=t.hasHeaderGroups,ke=t.sortedData,Fe=t.currentlyResizing,We=ee*te,Me=We+ee,_e=K?Ne:ke.slice(We,Me),je=this.getMinRows(),Ke=S.range(Math.max(je-_e.length,0)),Le=Oe.some(function(e){return e.Footer}),Ae=V||Oe.some(function(e){return e.filterable}),Ie=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1;return[t.map(function(t,o){var a=m({},t,{_viewIndex:r+=1}),i=n.concat([o]);if(a[X]&&S.get(ae,i)){var s=e(a[X],i,r),l=P(s,2);a[X]=l[0],r=l[1]}return a}),r]}(_e),Be=P(Ie,1);_e=Be[0];var Ge=te>0,Ve=te+1<ie,He=S.sum(Oe.map(function(e){var t=oe.find(function(t){return t.id===e.id})||{};return S.getFirstDefined(t.value,e.width,e.minWidth)})),Je=-1,Ue=m({},t,{startRow:We,endRow:Me,pageRows:_e,minRows:je,padRows:Ke,hasColumnFooter:Le,canPrevious:Ge,canNext:Ve,rowMinWidth:He}),Xe=S.splitProps(s(Ue,void 0,void 0,this)),qe=S.splitProps(l(Ue,void 0,void 0,this)),Ye=S.splitProps(w(Ue,void 0,void 0,this)),Qe=k(Ue,void 0,void 0,this),Ze=F(Ue,void 0,void 0,this),$e=function(t,r){var a=function(e){return(oe.find(function(t){return t.id===e.id})||{}).value},i=S.sum(t.columns.map(function(e){return e.width||a(e)?0:e.minWidth})),s=S.sum(t.columns.map(function(e){return S.getFirstDefined(a(e),e.width,e.minWidth)})),l=S.sum(t.columns.map(function(e){return S.getFirstDefined(a(e),e.width,e.maxWidth)})),u=S.splitProps(p(Ue,void 0,t,e)),d=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),c=[t.headerClassName,u.className,d.className],f=m({},t.headerStyle,u.style,d.style),h=m({},u.rest,d.rest),g={flex:i+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(l)};return n.createElement(he,m({key:r+"-"+t.id,className:o(c),style:m({},f,g)},h),S.normalizeComponent(t.Header,{data:ke,column:t}))},et=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i=ne.find(function(e){return e.id===t.id}),s="function"==typeof t.show?t.show():t.show,l=S.getFirstDefined(a.value,t.width,t.minWidth),u=S.getFirstDefined(a.value,t.width,t.maxWidth),d=S.splitProps(g(Ue,void 0,t,e)),c=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),p=[t.headerClassName,d.className,c.className],f=m({},t.headerStyle,d.style,c.style),h=m({},d.rest,c.rest),v=S.getFirstDefined(t.resizable,G,!1),y=v?n.createElement(Se,m({onMouseDown:function(n){return e.resizeColumnStart(n,t,!1)},onTouchStart:function(n){return e.resizeColumnStart(n,t,!0)}},W("finalState",void 0,t,e))):null,P=S.getFirstDefined(t.sortable,I,!1);return n.createElement(he,m({key:r+"-"+t.id,className:o(p,v&&"rt-resizable-header",i?i.desc?"-sort-desc":"-sort-asc":"",P&&"-cursor-pointer",!s&&"-hidden",U&&U.slice(0,-1).includes(t.id)&&"rt-header-pivot"),style:m({},f,{flex:l+" 0 auto",width:S.asPx(l),maxWidth:S.asPx(u)}),toggleSort:function(n){P&&e.sortColumn(t,!!B&&n.shiftKey)}},h),n.createElement("div",{className:o(v&&"rt-resizable-header-content")},S.normalizeComponent(t.Header,{data:ke,column:t})),y)},tt=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i=S.getFirstDefined(a.value,t.width,t.minWidth),s=S.getFirstDefined(a.value,t.width,t.maxWidth),l=S.splitProps(b(Ue,void 0,t,e)),u=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),d=[t.headerClassName,l.className,u.className],c=m({},t.headerStyle,l.style,u.style),p=m({},l.rest,u.rest),f=re.find(function(e){return e.id===t.id}),h=t.Filter||ze,g=S.getFirstDefined(t.filterable,V,!1);return n.createElement(he,m({key:r+"-"+t.id,className:o(d),style:m({},c,{flex:i+" 0 auto",width:S.asPx(i),maxWidth:S.asPx(s)})},p),g?S.normalizeComponent(h,{column:t,filter:f,onChange:function(n){return e.filterColumn(t,n)}},N.column.Filter):null)},nt=function t(r,a){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s={original:r[Y],row:r,index:r[Q],viewIndex:Je+=1,pageSize:ee,page:te,level:i.length,nestingPath:i.concat([a]),aggregated:r[q],groupedByPivot:r[Z],subRows:r[X]},l=S.get(ae,s.nestingPath),u=C(Ue,s,void 0,e),d=S.splitProps(T(Ue,s,void 0,e));return n.createElement(pe,m({key:s.nestingPath.join("_")},u),n.createElement(fe,m({className:o(d.className,r._viewIndex%2?"-even":"-odd"),style:d.style},d.rest),Oe.map(function(t,a){var i=oe.find(function(e){return e.id===t.id})||{},u="function"==typeof t.show?t.show():t.show,d=S.getFirstDefined(i.value,t.width,t.minWidth),c=S.getFirstDefined(i.value,t.width,t.maxWidth),p=S.splitProps(x(Ue,s,t,e)),f=S.splitProps(t.getProps(Ue,s,t,e)),h=[p.className,t.className,f.className],g=m({},p.style,t.style,f.style),v=m({},s,{isExpanded:l,column:m({},t),value:s.row[t.id],pivoted:t.pivoted,expander:t.expander,resized:oe,show:u,width:d,maxWidth:c,tdProps:p,columnProps:f,classes:h,styles:g}),y=v.value,P=void 0,b=void 0,w=void 0,C=S.normalizeComponent(t.Cell,v,y),T=t.Aggregated||(t.aggregate?t.Cell:xe),z=t.Expander||we,E=t.PivotValue||Ce,N=Te||function(e){return n.createElement("div",null,n.createElement(z,e),n.createElement(E,e))},O=t.Pivot||N;(v.pivoted||v.expander)&&(v.expandable=!0,P=!0,!v.pivoted||v.subRows||Pe||(v.expandable=!1)),v.pivoted?(b=s.row[H]===t.id&&v.subRows,w=U.indexOf(t.id)>U.indexOf(s.row[H])&&v.subRows,C=b?S.normalizeComponent(O,m({},v,{value:r[J]}),r[J]):w?S.normalizeComponent(T,v,y):null):v.aggregated&&(C=S.normalizeComponent(T,v,y)),v.expander&&(C=S.normalizeComponent(z,v,r[J]),U&&(v.groupedByPivot&&(C=null),v.subRows||Pe||(C=null)));var D=P?function(t){var n=S.clone(ae);return n=l?S.set(n,v.nestingPath,!1):S.set(n,v.nestingPath,{}),e.setStateWithData({expanded:n},function(){return se&&se(n,v.nestingPath,t,v)})}:function(){},R={onClick:D};return p.rest.onClick&&(R.onClick=function(e){p.rest.onClick(e,function(){return D(e)})}),f.rest.onClick&&(R.onClick=function(e){f.rest.onClick(e,function(){return D(e)})}),n.createElement(me,m({key:a+"-"+t.id,className:o(h,!v.expandable&&!u&&"hidden",v.expandable&&"rt-expandable",(b||w)&&"rt-pivot"),style:m({},g,{flex:d+" 0 auto",width:S.asPx(d),maxWidth:S.asPx(c)})},p.rest,f.rest,R),C)})),s.subRows&&l&&s.subRows.map(function(e,n){return t(e,n,s.nestingPath)}),Pe&&!s.subRows&&l&&Pe(s,function(){var e=S.clone(ae);S.set(e,s.nestingPath,!1)}))},rt=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i="function"==typeof t.show?t.show():t.show,s=S.getFirstDefined(a.value,t.width,t.minWidth),l=s,u=S.getFirstDefined(a.value,t.width,t.maxWidth),d=S.splitProps(x(Ue,void 0,t,e)),c=S.splitProps(t.getProps(Ue,void 0,t,e)),p=[d.className,t.className,c.className],f=m({},d.style,t.style,c.style);return n.createElement(me,m({key:r+"-"+t.id,className:o(p,!i&&"hidden"),style:m({},f,{flex:l+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(u)})},d.rest),S.normalizeComponent(Ee))},ot=function(t,r){var a=C(Ue,void 0,void 0,e),i=S.splitProps(T(Ue,void 0,void 0,e));return n.createElement(pe,m({key:"pad-"+r},a),n.createElement(fe,{className:o("-padRow",(_e.length+r)%2?"-even":"-odd",i.className),style:i.style||{}},Oe.map(rt)))},at=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i="function"==typeof t.show?t.show():t.show,s=S.getFirstDefined(a.value,t.width,t.minWidth),l=S.getFirstDefined(a.value,t.width,t.maxWidth),u=S.splitProps(O(Ue,void 0,t,e)),d=S.splitProps(t.getProps(Ue,void 0,t,e)),c=S.splitProps(t.getFooterProps(Ue,void 0,t,e)),p=[u.className,t.className,d.className,c.className],f=m({},u.style,t.style,d.style,c.style);return n.createElement(me,m({key:r+"-"+t.id,className:o(p,!i&&"hidden"),style:m({},f,{flex:s+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(l)})},d.rest,u.rest,c.rest),S.normalizeComponent(t.Footer,{data:ke,column:t}))},it=function(r){var o=S.splitProps(R(Ue,void 0,void 0,e));return n.createElement(ve,m({},t,{pages:ie,canPrevious:Ge,canNext:Ve,onPageChange:e.onPageChange,onPageSizeChange:e.onPageSizeChange,className:o.className,style:o.style,isTop:r},o.rest))},st=function(){return n.createElement("div",m({className:o("ReactTable",a,Xe.className),style:m({},i,Xe.style)},Xe.rest,{ref:function(t){t&&(Xe.rest.ref&&Xe.rest.ref(t),e.tableRef=t)}}),M&&_?n.createElement("div",{className:"pagination-top"},it(!0)):null,n.createElement(le,m({className:o(qe.className,Fe?"rt-resizing":""),style:qe.style},qe.rest),Re?(P=S.splitProps(u(Ue,void 0,void 0,e)),b=S.splitProps(d(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-headerGroups",P.className),style:m({},P.style,{minWidth:He+"px"})},P.rest),n.createElement(fe,m({className:b.className,style:b.style},b.rest),De.map($e)))):null,(p=S.splitProps(f(Ue,void 0,void 0,e)),g=S.splitProps(h(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-header",p.className),style:m({},p.style,{minWidth:He+"px"})},p.rest),n.createElement(fe,m({className:g.className,style:g.style},g.rest),Oe.map(et)))),Ae?(s=S.splitProps(v(Ue,void 0,void 0,e)),l=S.splitProps(y(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-filters",s.className),style:m({},s.style,{minWidth:He+"px"})},s.rest),n.createElement(fe,m({className:l.className,style:l.style},l.rest),Oe.map(tt)))):null,n.createElement(de,m({className:o(Ye.className),style:m({},Ye.style,{minWidth:He+"px"})},Ye.rest),_e.length<200?_e.map(function(e,t){return nt(e,t)}):n.createElement(c,{type:"variable",itemSizeEstimator:e.props.itemSizeEstimator||D,itemRenderer:function(e){return nt(_e[e],e)},length:_e.length}),Ke.map(ot),ce),Le?(t=S.splitProps(z(Ue,void 0,void 0,e)),r=S.splitProps(E(Ue,void 0,void 0,e)),n.createElement(ge,m({className:t.className,style:m({},t.style,{minWidth:He+"px"})},t.rest),n.createElement(fe,m({className:o(r.className),style:r.style},r.rest),Oe.map(at)))):null),M&&j?n.createElement("div",{className:"pagination-bottom"},it(!1)):null,!_e.length&&n.createElement(be,Ze,S.normalizeComponent(A)),n.createElement(ye,m({loading:$,loadingText:L},Qe)));var t,r,s,l,p,g,P,b};return r?r(Ue,st,this):st()}}]),t}(function(e){return function(t){function r(){return p(this,r),y(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments))}return g(r,e),f(r,[{key:"getResolvedState",value:function(e,t){return m({},S.compactObject(this.state),S.compactObject(this.props),S.compactObject(t),S.compactObject(e))}},{key:"getDataModel",value:function(e){var t=this,r=e.columns,o=e.pivotBy,a=void 0===o?[]:o,i=e.data,s=e.resolveData,l=e.pivotIDKey,u=e.pivotValKey,d=e.subRowsKey,c=e.aggregatedKey,p=e.nestingLevelKey,f=e.originalKey,g=e.indexKey,v=e.groupedByPivotKey,y=e.SubComponent,w=!1;r.forEach(function(e){e.columns&&(w=!0)});var C=[].concat(b(r)),T=r.find(function(e){return e.expander||e.columns&&e.columns.some(function(e){return e.expander})});T&&!T.expander&&(T=T.columns.find(function(e){return e.expander})),y&&!T&&(C=[T={expander:!0}].concat(b(C)));var x=[],z=function(e,n){var r=function(e,n){var r=void 0;if((r=e.expander?m({},t.props.column,t.props.expanderDefaults,e):m({},t.props.column,e)).maxWidth<r.minWidth&&(r.minWidth=r.maxWidth),n&&(r.parentColumn=n),"string"==typeof r.accessor){r.id=r.id||r.accessor;var o=r.accessor;return r.accessor=function(e){return S.get(e,o)},r}if(r.accessor&&!r.id)throw console.warn(r),new Error("A column id is required if using a non-string accessor for column above.");return r.accessor||(r.accessor=function(){}),r}(e,n);return x.push(r),r},E=C.map(function(e){return e.columns?m({},e,{columns:e.columns.map(function(t){return z(t,e)})}):z(e)}).slice(),N=[],O=(E=(E=E.map(function(e){if(e.columns){var t=e.columns.filter(function(e){return!(a.indexOf(e.id)>-1)&&S.getFirstDefined(e.show,!0)});return m({},e,{columns:t})}return e})).filter(function(e){return e.columns?e.columns.length:!(a.indexOf(e.id)>-1)&&S.getFirstDefined(e.show,!0)})).findIndex(function(e){return e.pivot});if(a.length){var D=[];a.forEach(function(e){var t=x.find(function(t){return t.id===e});t&&D.push(t)});var R=D.reduce(function(e,t){return e&&e===t.parentColumn&&t.parentColumn},D[0].parentColumn),k=w&&R.Header,F={Header:k=k||function(){return n.createElement("strong",null,"Pivoted")},columns:D.map(function(e){return m({},t.props.pivotDefaults,e,{pivoted:!0})})};O>=0?(F=m({},E[O],F),E.splice(O,1,F)):E.unshift(F)}var W=[],M=[],_=function(e,n){W.push(m({},t.props.column,n,{columns:e})),M=[]};E.forEach(function(e){if(e.columns)return N=N.concat(e.columns),M.length>0&&_(M),void _(e.columns,e);N.push(e),M.push(e)}),w&&M.length>0&&_(M);var j=s(i).map(function(e,t){return function e(t,n){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=(h(r={},f,t),h(r,g,n),h(r,d,t[d]),h(r,p,o),r);return x.forEach(function(e){e.expander||(a[e.id]=e.accessor(t))}),a[d]&&(a[d]=a[d].map(function(t,n){return e(t,n,o+1)})),a}(e,t)}),K=N.filter(function(e){return!e.expander&&e.aggregate});return a.length&&(j=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(r===n.length)return t;var o=Object.entries(S.groupBy(t,n[r])).map(function(e){var t,o=P(e,2),a=o[0],i=o[1];return h(t={},l,n[r]),h(t,u,a),h(t,n[r],a),h(t,d,i),h(t,p,r),h(t,v,!0),t});return o=o.map(function(t){var o,a,i,s=e(t[d],n,r+1);return m({},t,(h(o={},d,s),h(o,c,!0),o),(a=s,i={},K.forEach(function(e){var t=a.map(function(t){return t[e.id]});i[e.id]=e.aggregate(t,a)}),i))})}(j,a)),m({},e,{resolvedData:j,allVisibleColumns:N,headerGroups:W,allDecoratedColumns:x,hasHeaderGroups:w})}},{key:"getSortedData",value:function(e){var t=e.manual,n=e.sorted,r=e.filtered,o=e.defaultFilterMethod,a=e.resolvedData,i=e.allVisibleColumns,s={};return e.allDecoratedColumns.filter(function(e){return e.sortMethod}).forEach(function(e){s[e.id]=e.sortMethod}),{sortedData:t?a:this.sortData(this.filterData(a,r,o,i),n,s)}}},{key:"fireFetchData",value:function(){this.props.onFetchData(this.getResolvedState(),this)}},{key:"getPropOrState",value:function(e){return S.getFirstDefined(this.props[e],this.state[e])}},{key:"getStateOrProp",value:function(e){return S.getFirstDefined(this.state[e],this.props[e])}},{key:"filterData",value:function(e,t,n,r){var o=this,a=e;return t.length&&(a=(a=t.reduce(function(e,t){var o=r.find(function(e){return e.id===t.id});if(!o||!1===o.filterable)return e;var a=o.filterMethod||n;return o.filterAll?a(t,e,o):e.filter(function(e){return a(t,e,o)})},a)).map(function(e){return e[o.props.subRowsKey]?m({},e,h({},o.props.subRowsKey,o.filterData(e[o.props.subRowsKey],t,n,r))):e}).filter(function(e){return!e[o.props.subRowsKey]||e[o.props.subRowsKey].length>0})),a}},{key:"sortData",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t.length)return e;var o=(this.props.orderByMethod||S.orderBy)(e,t.map(function(e){return r[e.id]?function(t,n){return r[e.id](t[e.id],n[e.id],e.desc)}:function(t,r){return n.props.defaultSortMethod(t[e.id],r[e.id],e.desc)}}),t.map(function(e){return!e.desc}),this.props.indexKey);return o.forEach(function(e){e[n.props.subRowsKey]&&(e[n.props.subRowsKey]=n.sortData(e[n.props.subRowsKey],t,r))}),o}},{key:"getMinRows",value:function(){return S.getFirstDefined(this.props.minRows,this.getStateOrProp("pageSize"))}},{key:"onPageChange",value:function(e){var t=this.props,n=t.onPageChange,r=t.collapseOnPageChange,o={page:e};r&&(o.expanded={}),this.setStateWithData(o,function(){return n&&n(e)})}},{key:"onPageSizeChange",value:function(e){var t=this.props.onPageSizeChange,n=this.getResolvedState(),r=n.pageSize*n.page,o=Math.floor(r/e);this.setStateWithData({pageSize:e,page:o},function(){return t&&t(e,o)})}},{key:"sortColumn",value:function(e,t){var n=this.getResolvedState(),r=n.sorted,o=n.skipNextSort,a=n.defaultSortDesc,i=Object.prototype.hasOwnProperty.call(e,"defaultSortDesc")?e.defaultSortDesc:a,s=!i;if(o)this.setStateWithData({skipNextSort:!1});else{var l=this.props.onSortedChange,u=S.clone(r||[]).map(function(e){return e.desc=S.isSortingDesc(e),e});if(S.isArray(e)){var d=u.findIndex(function(t){return t.id===e[0].id});d>-1?(u[d].desc===s?t?u.splice(d,e.length):e.forEach(function(e,t){u[d+t].desc=i}):e.forEach(function(e,t){u[d+t].desc=s}),t||(u=u.slice(d,e.length))):u=t?u.concat(e.map(function(e){return{id:e.id,desc:i}})):e.map(function(e){return{id:e.id,desc:i}})}else{var c=u.findIndex(function(t){return t.id===e.id});if(c>-1){var p=u[c];p.desc===s?t?u.splice(c,1):(p.desc=i,u=[p]):(p.desc=s,t||(u=[p]))}else t?u.push({id:e.id,desc:i}):u=[{id:e.id,desc:i}]}this.setStateWithData({page:!r.length&&u.length||!t?0:this.state.page,sorted:u},function(){return l&&l(u,e,t)})}}},{key:"filterColumn",value:function(e,t){var n=this.getResolvedState().filtered,r=this.props.onFilteredChange,o=(n||[]).filter(function(t){return t.id!==e.id});""!==t&&o.push({id:e.id,value:t}),this.setStateWithData({filtered:o},function(){return r&&r(o,e,t)})}},{key:"resizeColumnStart",value:function(e,t,n){var r=this;e.stopPropagation();var o=e.target.parentElement.getBoundingClientRect().width,a=void 0;a=n?e.changedTouches[0].pageX:e.pageX,this.trapEvents=!0,this.setStateWithData({currentlyResizing:{id:t.id,startX:a,parentWidth:o}},function(){n?(document.addEventListener("touchmove",r.resizeColumnMoving),document.addEventListener("touchcancel",r.resizeColumnEnd),document.addEventListener("touchend",r.resizeColumnEnd)):(document.addEventListener("mousemove",r.resizeColumnMoving),document.addEventListener("mouseup",r.resizeColumnEnd),document.addEventListener("mouseleave",r.resizeColumnEnd))})}},{key:"resizeColumnMoving",value:function(e){e.stopPropagation();var t=this.props.onResizedChange,n=this.getResolvedState(),r=n.resized,o=n.currentlyResizing,a=r.filter(function(e){return e.id!==o.id}),i=void 0;"touchmove"===e.type?i=e.changedTouches[0].pageX:"mousemove"===e.type&&(i=e.pageX);var s=Math.max(o.parentWidth+i-o.startX,11);a.push({id:o.id,value:s}),this.setStateWithData({resized:a},function(){return t&&t(a,e)})}},{key:"resizeColumnEnd",value:function(e){e.stopPropagation();var t="touchend"===e.type||"touchcancel"===e.type;t&&(document.removeEventListener("touchmove",this.resizeColumnMoving),document.removeEventListener("touchcancel",this.resizeColumnEnd),document.removeEventListener("touchend",this.resizeColumnEnd)),document.removeEventListener("mousemove",this.resizeColumnMoving),document.removeEventListener("mouseup",this.resizeColumnEnd),document.removeEventListener("mouseleave",this.resizeColumnEnd),t||this.setStateWithData({skipNextSort:!0,currentlyResizing:!1})}}]),r}()}((z=t.Component,function(e){function t(){return p(this,t),y(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return g(t,z),f(t,[{key:"UNSAFE_componentWillMount",value:function(){this.setStateWithData(this.getDataModel(this.getResolvedState(),!0))}},{key:"componentDidMount",value:function(){this.fireFetchData()}},{key:"UNSAFE_componentWillReceiveProps",value:function(e,t){var n=this.getResolvedState(),r=this.getResolvedState(e,t);["sorted","filtered","resized","expanded"].forEach(function(e){var t="default"+(e.charAt(0).toUpperCase()+e.slice(1));JSON.stringify(n[t])!==JSON.stringify(r[t])&&(r[e]=r[t])}),["sortable","filterable","resizable"].forEach(function(e){if(n[e]!==r[e]){var t=e.replace("able","")+"ed",o="default"+(t.charAt(0).toUpperCase()+t.slice(1));r[t]=r[o]}}),n.data===r.data&&n.columns===r.columns&&n.pivotBy===r.pivotBy&&n.sorted===r.sorted&&n.filtered===r.filtered||this.setStateWithData(this.getDataModel(r,n.data!==r.data))}},{key:"setStateWithData",value:function(e,t){var n=this,r=this.getResolvedState(),o=this.getResolvedState({},e),a=o.freezeWhenExpanded;if(o.frozen=!1,a)for(var i=Object.keys(o.expanded),s=0;s<i.length;s+=1)if(o.expanded[i[s]]){o.frozen=!0;break}return(r.frozen&&!o.frozen||r.sorted!==o.sorted||r.filtered!==o.filtered||r.showFilters!==o.showFilters||!o.frozen&&r.resolvedData!==o.resolvedData)&&((r.sorted!==o.sorted&&this.props.collapseOnSortingChange||r.filtered!==o.filtered||r.showFilters!==o.showFilters||r.sortedData&&!o.frozen&&r.resolvedData!==o.resolvedData&&this.props.collapseOnDataChange)&&(o.expanded={}),Object.assign(o,this.getSortedData(o))),r.filtered!==o.filtered&&(o.page=0),o.sortedData&&(o.pages=o.manual?o.pages:Math.ceil(o.sortedData.length/o.pageSize),o.page=o.manual?o.page:Math.max(o.page>=o.pages?o.pages-1:o.page,0)),this.setState(o,function(){t&&t(),r.page===o.page&&r.pageSize===o.pageSize&&r.sorted===o.sorted&&r.filtered===o.filtered||n.fireFetchData()})}}]),t}())));k.propTypes=O,k.defaultProps=N,e.ReactTableDefaults=R,e.default=k,Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t(e.ReactTable={},e.React)}(this,function(e,t){"use strict";var n="default"in t?t.default:t;"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(e,t){return e(t={exports:{}},t.exports),t.exports}var o=r(function(e){!function(){var t={}.hasOwnProperty;function n(){for(var e=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)e.push(o);else if(Array.isArray(o))e.push(n.apply(null,o));else if("object"===a)for(var i in o)t.call(o,i)&&o[i]&&e.push(i)}}return e.join(" ")}e.exports?e.exports=n:window.classNames=n}()}),a="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";function i(){}function s(){}s.resetWarningCache=i;var l,u=r(function(e){e.exports=function(){function e(e,t,n,r,o,i){if(i!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:i};return n.PropTypes=n,n}()}),d=r(function(e,t){(function(e,t,n){function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t){return!t||"object"!==o(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,t=r(t),n=r(n);var d={x:"clientWidth",y:"clientHeight"},c={x:"clientTop",y:"clientLeft"},p={x:"innerWidth",y:"innerHeight"},f={x:"offsetWidth",y:"offsetHeight"},h={x:"offsetLeft",y:"offsetTop"},m={x:"overflowX",y:"overflowY"},g={x:"scrollWidth",y:"scrollHeight"},v={x:"scrollLeft",y:"scrollTop"},y={x:"minWidth",y:"minHeight"},P=function(){},b=!!function(){if("undefined"==typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",P,{get passive(){return e=!0,!1}})}catch(e){}return e}()&&{passive:!0},S=function(e){function t(e){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=i(this,s(t).call(this,e));var r=e.initialIndex,o=n.constrain(r,0,1,e),a=o.from,l=o.size;return n.state={from:a,size:l,itemsPerRow:1},n.cache={},n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}var r,o,u;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(t,n["default"].Component),r=t,(o=[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this.state,n=t.from,r=t.size,o=t.itemsPerRow;e.clearCache&&(this.cache={}),this.maybeSetState(this.constrain(n,r,o,e),P)}},{key:"componentDidMount",value:function(){this.updateFrame=this.updateFrame.bind(this),window.addEventListener("resize",this.updateFrame),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(){var e=this;if(!this.unstable){if(++this.updateCounter>100)return this.unstable=!0,console.error("ReactList failed to reach a stable state.");this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout(function(){e.updateCounter=0,delete e.updateCounterTimeoutId},0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0}(this.state,e))return t();this.state.from===e.from+1&&(this.rowToFixScroll={row:e.from,cache:this.cache[e.from]}),this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrame),this.scrollParent.removeEventListener("scroll",this.updateFrame,b),this.scrollParent.removeEventListener("mousewheel",P,b)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[c[t]]||0,r=h[t];do{n+=e[r]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollParent",value:function(){var e=this.props,t=e.axis,n=e.scrollParentGetter;if(n)return n();var r=this.getEl();if(!r)return window;for(var o=m[t];r=r.parentElement;)switch(window.getComputedStyle(r)[o]){case"auto":case"scroll":case"overlay":return r}return window}},{key:"getScrollPosition",value:function(){var e=this.scrollParent,t=this.props.axis,n=v[t],r=e===window?document.body[n]||document.documentElement[n]:e[n],o=this.getScrollSize()-this.getViewportSize(),a=Math.max(0,Math.min(r,o)),i=this.getEl();return this.getOffset(e)+a-this.getOffset(i)}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[v[n]]=e}},{key:"getViewportSize",value:function(){var e=this.scrollParent,t=this.props.axis;return e===window?window[p[t]]:e[d[t]]}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,r=t.documentElement,o=g[this.props.axis];return e===window?Math.max(n[o],r[o]):e[o]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),r=t+this.getViewportSize()+e;return this.hasDeterminateSize()&&(r=Math.min(r,this.getSpaceBefore(this.props.length))),{start:n,end:r}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,r=this.state,o=r.itemSize,a=r.itemsPerRow;if(n&&o&&a)return{itemSize:o,itemsPerRow:a};var i=this.items.children;if(!i.length)return{};var s=i[0],l=s[f[t]],u=Math.abs(l-o);if((isNaN(u)||u>=1)&&(o=l),!o)return{};for(var d=h[t],c=s[d],p=i[a=1];p&&p[d]===c;p=i[a])++a;return{itemSize:o,itemsPerRow:a}}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=P),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;e||(this.scrollParent=this.getScrollParent(),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrame),e.removeEventListener("mousewheel",P)),this.scrollParent.addEventListener("scroll",this.updateFrame,b),this.scrollParent.addEventListener("mousewheel",P,b)))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,r=0;if(n.length){var o=this.props.axis,a=n[0],i=n[n.length-1];r=this.getOffset(i)+i[f[o]]-this.getOffset(a)}if(r>t)return e();var s=this.props,l=s.pageSize,u=s.length,d=Math.min(this.state.size+l,u);this.maybeSetState({size:d},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,r=t.end,o=this.props,a=o.length,i=o.pageSize,s=0,l=0,u=0,d=a-1;l<d;){var c=this.getSizeOfItem(l);if(null==c||s+c>n)break;s+=c,++l}for(var p=a-l;u<p&&s<r;){var f=this.getSizeOfItem(l+u);if(null==f){u=Math.min(u+i,p);break}s+=f,++u}this.maybeSetState({from:l,size:u},e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,r=t.itemsPerRow;if(!n||!r)return e();var o=this.getStartAndEnd(),a=o.start,i=o.end,s=this.constrain(Math.floor(a/n)*r,(Math.ceil((i-a)/n)+1)*r,r,this.props),l=s.from,u=s.size;return this.maybeSetState({itemsPerRow:r,from:l,itemSize:n,size:u},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,r=n.itemSize,o=n.itemsPerRow;if(r)return t[e]=Math.floor(e/o)*r;for(var a=e;a>0&&null==t[--a];);for(var i=t[a]||0,s=a;s<e;++s){t[s]=i;var l=this.getSizeOfItem(s);if(null==l)break;i+=l}return t[e]=i}},{key:"cacheSizes",value:function(){var e=this.cache,t=this.state.from;if(this.items)for(var n=this.items.children,r=f[this.props.axis],o=0,a=n.length;o<a;++o)e[t+o]=n[o][r]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,r=this.props,o=r.axis,a=r.itemSizeGetter,i=r.itemSizeEstimator,s=r.type,l=this.state,u=l.from,d=l.itemSize,c=l.size;if(d)return d;if(a)return a(e);if(e in t)return t[e];if("simple"===s&&e>=u&&e<u+c&&n){var p=n.children[e-u];if(p)return p[f[o]]}return i?i(e,t):void 0}},{key:"constrain",value:function(e,t,n,r){var o=r.length,a=r.minSize,i=r.type,s=(t=Math.max(t,a))%n;return s&&(t+=n-s),t>o&&(t=o),(s=(e="simple"!==i&&e?Math.max(Math.min(e,o-t),0):0)%n)&&(e-=s,t+=s),{from:e,size:t}}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e)-100)}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),r=n-this.getViewportSize()+this.getSizeOfItem(e),o=Math.min(r,n),a=Math.max(r,n);return t<=o?this.setScroll(o-this.getViewportSize()):t>a?this.setScroll(a-this.getViewportSize()-100):void 0}},{key:"getVisibleRange",value:function(){for(var e,t,n=this.state,r=n.from,o=n.size,a=this.getStartAndEnd(0),i=a.start,s=a.end,l={},u=r;u<r+o;++u){var d=this.getSpaceBefore(u,l),c=d+this.getSizeOfItem(u);null==e&&c>i&&(e=u),null!=e&&d<s&&(t=u)}return[e,t]}},{key:"getFractionalVisibleRange",value:function(){for(var e,t,n=this.state,r=n.from,o=n.size,a=this.getStartAndEnd(0),i=a.start,s=a.end,l={},u=r;u<r+o;++u){var d=this.getSpaceBefore(u,l),c=d+this.getSizeOfItem(u);null==e&&c>i&&(e=u+1-(c-i)/(c-d)),null!=e&&d<s&&(t=u-(c-s)/(c-d))}return[e,t]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,r=t.itemsRenderer,o=this.state,a=o.from,i=o.size,s=[],l=0;l<i;++l)s.push(n(a+l,l));return r(s,function(t){return e.items=t})}},{key:"render",value:function(){var e=this,t=this.props,r=t.axis,o=t.length,a=t.type,i=this.state,s=i.from,l=i.itemsPerRow,u=this.renderItems();if("simple"===a)return u;var d={position:"relative"},c={},p=Math.ceil(o/l)*l,f=this.getSpaceBefore(p,c);f&&(d[y[r]]=f,"x"===r&&(d.overflowX="hidden"));var h=this.getSpaceBefore(s,c),m={position:"relative",top:"y"===r?h:0,left:"x"===r?h:0};return n.default.createElement("div",{style:d,ref:function(t){t&&(e.el=t)}},n.default.createElement("div",{style:m},u))}}])&&a(r.prototype,o),u&&a(r,u),t}();e.default=S,u(S,"displayName","ReactList"),u(S,"propTypes",{axis:t.default.oneOf(["x","y"]),initialIndex:t.default.number,itemRenderer:t.default.func,itemSizeEstimator:t.default.func,itemSizeGetter:t.default.func,itemsRenderer:t.default.func,length:t.default.number,minSize:t.default.number,pageSize:t.default.number,scrollParentGetter:t.default.func,threshold:t.default.number,type:t.default.oneOf(["simple","variable","uniform"]),useStaticSize:t.default.bool,useTranslate3d:t.default.bool}),u(S,"defaultProps",{axis:"y",itemRenderer:function(e,t){return n.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return n.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1})})(t,u,n)}),c=(l=d)&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l,p=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),h=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},v=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},y=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},P=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),b=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)},S={get:function(e,t,n){if(!t)return e;var r=w(t),o=void 0;try{o=r.reduce(function(e,t){return e[t]},e)}catch(e){}return void 0!==o?o:n},set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=arguments[2],r=w(t),o=void 0,a=e;for(;(o=r.shift())&&r.length;)a[o]||(a[o]={}),a=a[o];return a[o]=n,e},takeRight:function(e,t){var n=t>e.length?0:e.length-t;return e.slice(n)},last:function(e){return e[e.length-1]},orderBy:function(e,t,n,r){return e.sort(function(e,o){for(var a=0;a<t.length;a+=1){var i=t[a],s=!1===n[a]||"desc"===n[a],l=i(e,o);if(l)return s?-l:l}return n[0]?e[r]-o[r]:o[r]-e[r]})},range:function(e){for(var t=[],n=0;n<e;n+=1)t.push(e);return t},remove:function(e,t){return e.filter(function(n,r){var o=t(n);return!!o&&(e.splice(r,1),!0)})},clone:function(e){try{return JSON.parse(JSON.stringify(e,function(e,t){return"function"==typeof t?t.toString():t}))}catch(t){return e}},getFirstDefined:function(){for(var e=0;e<arguments.length;e+=1)if(void 0!==(arguments.length<=e?void 0:arguments[e]))return arguments.length<=e?void 0:arguments[e]},sum:function(e){return e.reduce(function(e,t){return e+t},0)},makeTemplateComponent:function(e,t){if(!t)throw new Error("No displayName found for template component:",e);var r=function(t){var r=t.children,a=t.className,i=v(t,["children","className"]);return n.createElement("div",m({className:o(e,a)},i),r)};return r.displayName=t,r},groupBy:function(e,t){return e.reduce(function(e,n,r){var o="function"==typeof t?t(n,r):n[t];return e[o]=C(e[o])?e[o]:[],e[o].push(n),e},{})},isArray:C,splitProps:function(e){var t=e.className,n=e.style,r=v(e,["className","style"]);return{className:t,style:n,rest:r||{}}},compactObject:function(e){var t={};e&&Object.keys(e).map(function(n){return Object.prototype.hasOwnProperty.call(e,n)&&void 0!==e[n]&&void 0!==e[n]&&(t[n]=e[n]),!0});return t},isSortingDesc:function(e){return!("desc"!==e.sort&&!0!==e.desc&&!1!==e.asc)},normalizeComponent:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?Object.getPrototypeOf(e).isReactComponent?n.createElement(e,t):e(t):r},asPx:function(e){return e=Number(e),Number.isNaN(e)?null:e+"px"}};function C(e){return Array.isArray(e)}function w(e){return function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(C(t))for(var r=0;r<t.length;r+=1)e(t[r],n);else n.push(t);return n}(e).join(".").replace(/\[/g,".").replace(/\]/g,"").split(".")}var T=function(e){return n.createElement("button",m({type:"button"},e,{className:"-btn"}),e.children)},x=function(e){function t(e){p(this,t);var n=y(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getSafePage=n.getSafePage.bind(n),n.changePage=n.changePage.bind(n),n.applyPage=n.applyPage.bind(n),n.state={page:e.page},n}return g(t,e),f(t,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.page!==e.page&&this.setState({page:e.page})}},{key:"getSafePage",value:function(e){return Number.isNaN(e)&&(e=this.props.page),Math.min(Math.max(e,0),this.props.pages-1)}},{key:"changePage",value:function(e){e=this.getSafePage(e),this.setState({page:e}),this.props.page!==e&&this.props.onPageChange(e)}},{key:"applyPage",value:function(e){e&&e.preventDefault();var t=this.state.page;this.changePage(""===t?this.props.page:t)}},{key:"getPageJumpProperties",value:function(){var e=this;return{onKeyPress:function(t){13!==t.which&&13!==t.keyCode||e.applyPage()},onBlur:this.applyPage,value:""===this.state.page?"":this.state.page+1,onChange:function(t){var n=t.target.value,r=n-1;if(""===n)return e.setState({page:n});e.setState({page:e.getSafePage(r)})},inputType:""===this.state.page?"text":"number",pageJumpText:this.props.pageJumpText}}},{key:"render",value:function(){var e=this,t=this.props,r=t.pages,a=t.page,i=t.showPageSizeOptions,s=t.pageSizeOptions,l=t.pageSize,u=t.showPageJump,d=t.canPrevious,c=t.canNext,p=t.onPageSizeChange,f=t.className,h=t.PreviousComponent,m=t.NextComponent,g=t.renderPageJump,v=t.renderCurrentPage,y=t.renderTotalPagesCount,P=t.renderPageSizeOptions;return n.createElement("div",{className:o(f,"-pagination"),style:this.props.style},n.createElement("div",{className:"-previous"},n.createElement(h,{onClick:function(){d&&e.changePage(a-1)},disabled:!d},this.props.previousText)),n.createElement("div",{className:"-center"},n.createElement("span",{className:"-pageInfo"},this.props.pageText," ",u?g(this.getPageJumpProperties()):v(a)," ",this.props.ofText," ",y(r)),i&&P({pageSize:l,rowsSelectorText:this.props.rowsSelectorText,pageSizeOptions:s,onPageSizeChange:p,rowsText:this.props.rowsText})),n.createElement("div",{className:"-next"},n.createElement(m,{onClick:function(){c&&e.changePage(a+1)},disabled:!c},this.props.nextText)))}}]),t}(t.Component);x.defaultProps={PreviousComponent:T,NextComponent:T,renderPageJump:function(e){var t=e.onChange,r=e.value,o=e.onBlur,a=e.onKeyPress,i=e.inputType,s=e.pageJumpText;return n.createElement("div",{className:"-pageJump"},n.createElement("input",{"aria-label":s,type:i,onChange:t,value:r,onBlur:o,onKeyPress:a}))},renderCurrentPage:function(e){return n.createElement("span",{className:"-currentPage"},e+1)},renderTotalPagesCount:function(e){return n.createElement("span",{className:"-totalPages"},e||1)},renderPageSizeOptions:function(e){var t=e.pageSize,r=e.pageSizeOptions,o=e.rowsSelectorText,a=e.onPageSizeChange,i=e.rowsText;return n.createElement("span",{className:"select-wrap -pageSizeOptions"},n.createElement("select",{"aria-label":o,onChange:function(e){return a(Number(e.target.value))},value:t},r.map(function(e,t){return n.createElement("option",{key:t,value:e},e+" "+i)})))}};var z,E=function(){return{}},N={data:[],resolveData:function(e){return e},loading:!1,showPagination:!0,showPaginationTop:!1,showPaginationBottom:!0,showPageSizeOptions:!0,pageSizeOptions:[5,10,20,25,50,100],defaultPage:0,defaultPageSize:20,showPageJump:!0,collapseOnSortingChange:!0,collapseOnPageChange:!0,collapseOnDataChange:!0,freezeWhenExpanded:!1,sortable:!0,multiSort:!0,resizable:!0,filterable:!1,defaultSortDesc:!1,defaultSorted:[],defaultFiltered:[],defaultResized:[],defaultExpanded:{},defaultFilterMethod:function(e,t,n){var r=e.pivotId||e.id;return void 0===t[r]||String(t[r]).startsWith(e.value)},defaultSortMethod:function(e,t,n){return e=null===e||void 0===e?"":e,t=null===t||void 0===t?"":t,(e="string"==typeof e?e.toLowerCase():e)>(t="string"==typeof t?t.toLowerCase():t)?1:e<t?-1:0},onPageChange:void 0,onPageSizeChange:void 0,onSortedChange:void 0,onFilteredChange:void 0,onResizedChange:void 0,onExpandedChange:void 0,pivotBy:void 0,pivotValKey:"_pivotVal",pivotIDKey:"_pivotID",subRowsKey:"_subRows",aggregatedKey:"_aggregated",nestingLevelKey:"_nestingLevel",originalKey:"_original",indexKey:"_index",groupedByPivotKey:"_groupedByPivot",onFetchData:function(){return null},className:"",style:{},getProps:E,getTableProps:E,getTheadGroupProps:E,getTheadGroupTrProps:E,getTheadGroupThProps:E,getTheadProps:E,getTheadTrProps:E,getTheadThProps:E,getTheadFilterProps:E,getTheadFilterTrProps:E,getTheadFilterThProps:E,getTbodyProps:E,getTrGroupProps:E,getTrProps:E,getTdProps:E,getTfootProps:E,getTfootTrProps:E,getTfootTdProps:E,getPaginationProps:E,getLoadingProps:E,getNoDataProps:E,getResizerProps:E,column:{Cell:void 0,Header:void 0,Footer:void 0,Aggregated:void 0,Pivot:void 0,PivotValue:void 0,Expander:void 0,Filter:void 0,Placeholder:void 0,sortable:void 0,resizable:void 0,filterable:void 0,show:!0,minWidth:100,minResizeWidth:11,className:"",style:{},getProps:E,aggregate:void 0,headerClassName:"",headerStyle:{},getHeaderProps:E,footerClassName:"",footerStyle:{},getFooterProps:E,filterMethod:void 0,filterAll:!1,sortMethod:void 0},expanderDefaults:{sortable:!1,resizable:!1,filterable:!1,width:35},pivotDefaults:{},previousText:"Previous",nextText:"Next",loadingText:"Loading...",noDataText:"No rows found",pageText:"Page",ofText:"of",rowsText:"rows",pageJumpText:"jump to page",rowsSelectorText:"rows per page",TableComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-table",r),role:"grid"},a),t)},TheadComponent:S.makeTemplateComponent("rt-thead","Thead"),TbodyComponent:S.makeTemplateComponent("rt-tbody","Tbody"),TrGroupComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-tr-group",r),role:"rowgroup"},a),t)},TrComponent:function(e){var t=e.children,r=e.className,a=v(e,["children","className"]);return n.createElement("div",m({className:o("rt-tr",r),role:"row"},a),t)},ThComponent:function(e){var t=e.toggleSort,r=e.className,a=e.children,i=v(e,["toggleSort","className","children"]);return n.createElement("div",m({className:o("rt-th",r),onClick:function(e){return t&&t(e)},role:"columnheader",tabIndex:"-1"},i),a)},TdComponent:function(e){e.toggleSort;var t=e.className,r=e.children,a=v(e,["toggleSort","className","children"]);return n.createElement("div",m({className:o("rt-td",t),role:"gridcell"},a),r)},TfootComponent:S.makeTemplateComponent("rt-tfoot","Tfoot"),FilterComponent:function(e){var t=e.filter,r=e.onChange,o=e.column;return n.createElement("input",{type:"text",style:{width:"100%"},placeholder:o.Placeholder,value:t?t.value:"",onChange:function(e){return r(e.target.value)}})},ExpanderComponent:function(e){var t=e.isExpanded;return n.createElement("div",{className:o("rt-expander",t&&"-open")},"•")},PivotValueComponent:function(e){var t=e.subRows,r=e.value;return n.createElement("span",null,r," ",t&&"("+t.length+")")},AggregatedComponent:function(e){var t=e.subRows,r=e.column,o=t.filter(function(e){return void 0!==e[r.id]}).map(function(e,o){return n.createElement("span",{key:o},e[r.id],o<t.length-1?", ":"")});return n.createElement("span",null,o)},PivotComponent:void 0,PaginationComponent:x,PreviousComponent:void 0,NextComponent:void 0,LoadingComponent:function(e){var t=e.className,r=e.loading,a=e.loadingText,i=v(e,["className","loading","loadingText"]);return n.createElement("div",m({className:o("-loading",{"-active":r},t)},i),n.createElement("div",{className:"-loading-inner"},a))},NoDataComponent:S.makeTemplateComponent("rt-noData","NoData"),ResizerComponent:S.makeTemplateComponent("rt-resizer","Resizer"),PadRowComponent:function(){return n.createElement("span",null," ")}},O={data:u.any,loading:u.bool,showPagination:u.bool,showPaginationTop:u.bool,showPaginationBottom:u.bool,showPageSizeOptions:u.bool,pageSizeOptions:u.array,defaultPageSize:u.number,showPageJump:u.bool,collapseOnSortingChange:u.bool,collapseOnPageChange:u.bool,collapseOnDataChange:u.bool,freezeWhenExpanded:u.bool,sortable:u.bool,resizable:u.bool,filterable:u.bool,defaultSortDesc:u.bool,defaultSorted:u.array,defaultFiltered:u.array,defaultResized:u.array,defaultExpanded:u.object,defaultFilterMethod:u.func,defaultSortMethod:u.func,onPageChange:u.func,onPageSizeChange:u.func,onSortedChange:u.func,onFilteredChange:u.func,onResizedChange:u.func,onExpandedChange:u.func,pivotBy:u.array,pivotValKey:u.string,pivotIDKey:u.string,subRowsKey:u.string,aggregatedKey:u.string,nestingLevelKey:u.string,originalKey:u.string,indexKey:u.string,groupedByPivotKey:u.string,onFetchData:u.func,className:u.string,style:u.object,getProps:u.func,getTableProps:u.func,getTheadGroupProps:u.func,getTheadGroupTrProps:u.func,getTheadGroupThProps:u.func,getTheadProps:u.func,getTheadTrProps:u.func,getTheadThProps:u.func,getTheadFilterProps:u.func,getTheadFilterTrProps:u.func,getTheadFilterThProps:u.func,getTbodyProps:u.func,getTrGroupProps:u.func,getTrProps:u.func,getTdProps:u.func,getTfootProps:u.func,getTfootTrProps:u.func,getTfootTdProps:u.func,getPaginationProps:u.func,getLoadingProps:u.func,getNoDataProps:u.func,getResizerProps:u.func,columns:u.arrayOf(u.shape({Cell:u.oneOfType([u.element,u.string,u.func]),Header:u.oneOfType([u.element,u.string,u.func]),Footer:u.oneOfType([u.element,u.string,u.func]),Aggregated:u.oneOfType([u.element,u.string,u.func]),Pivot:u.oneOfType([u.element,u.string,u.func]),PivotValue:u.oneOfType([u.element,u.string,u.func]),Expander:u.oneOfType([u.element,u.string,u.func]),Filter:u.oneOfType([u.element,u.func]),sortable:u.bool,resizable:u.bool,filterable:u.bool,show:u.bool,minWidth:u.number,minResizeWidth:u.number,className:u.string,style:u.object,getProps:u.func,aggregate:u.func,headerClassName:u.string,headerStyle:u.object,getHeaderProps:u.func,footerClassName:u.string,footerStyle:u.object,getFooterProps:u.func,filterMethod:u.func,filterAll:u.bool,sortMethod:u.func})),expanderDefaults:u.shape({sortable:u.bool,resizable:u.bool,filterable:u.bool,width:u.number}),pivotDefaults:u.object,previousText:u.node,nextText:u.node,loadingText:u.node,noDataText:u.node,pageText:u.node,ofText:u.node,rowsText:u.node,pageJumpText:u.node,rowsSelectorText:u.node,TableComponent:u.elementType,TheadComponent:u.elementType,TbodyComponent:u.elementType,TrGroupComponent:u.elementType,TrComponent:u.elementType,ThComponent:u.elementType,TdComponent:u.elementType,TfootComponent:u.elementType,FilterComponent:u.elementType,ExpanderComponent:u.elementType,PivotValueComponent:u.elementType,AggregatedComponent:u.elementType,PivotComponent:u.elementType,PaginationComponent:u.elementType,PreviousComponent:u.elementType,NextComponent:u.elementType,LoadingComponent:u.elementType,NoDataComponent:u.elementType,ResizerComponent:u.elementType,PadRowComponent:u.elementType},D=function(){return 41.36},R=N,k=function(e){function t(e){p(this,t);var n=y(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.getResolvedState=n.getResolvedState.bind(n),n.getDataModel=n.getDataModel.bind(n),n.getSortedData=n.getSortedData.bind(n),n.fireFetchData=n.fireFetchData.bind(n),n.getPropOrState=n.getPropOrState.bind(n),n.getStateOrProp=n.getStateOrProp.bind(n),n.filterData=n.filterData.bind(n),n.sortData=n.sortData.bind(n),n.getMinRows=n.getMinRows.bind(n),n.onPageChange=n.onPageChange.bind(n),n.onPageSizeChange=n.onPageSizeChange.bind(n),n.sortColumn=n.sortColumn.bind(n),n.filterColumn=n.filterColumn.bind(n),n.resizeColumnStart=n.resizeColumnStart.bind(n),n.resizeColumnEnd=n.resizeColumnEnd.bind(n),n.resizeColumnMoving=n.resizeColumnMoving.bind(n),n.state={page:e.defaultPage,pageSize:e.defaultPageSize,sorted:e.defaultSorted,expanded:e.defaultExpanded,filtered:e.defaultFiltered,resized:e.defaultResized,currentlyResizing:!1,skipNextSort:!1},n}return g(t,e),f(t,[{key:"render",value:function(){var e=this,t=this.getResolvedState(),r=t.children,a=t.className,i=t.style,s=t.getProps,l=t.getTableProps,u=t.getTheadGroupProps,d=t.getTheadGroupTrProps,p=t.getTheadGroupThProps,f=t.getTheadProps,h=t.getTheadTrProps,g=t.getTheadThProps,v=t.getTheadFilterProps,y=t.getTheadFilterTrProps,b=t.getTheadFilterThProps,C=t.getTbodyProps,w=t.getTrGroupProps,T=t.getTrProps,x=t.getTdProps,z=t.getTfootProps,E=t.getTfootTrProps,O=t.getTfootTdProps,R=t.getPaginationProps,k=t.getLoadingProps,F=t.getNoDataProps,W=t.getResizerProps,M=t.showPagination,_=t.showPaginationTop,j=t.showPaginationBottom,K=t.manual,L=t.loadingText,A=t.noDataText,I=t.sortable,B=t.multiSort,G=t.resizable,V=t.filterable,H=t.pivotIDKey,J=t.pivotValKey,U=t.pivotBy,X=t.subRowsKey,q=t.aggregatedKey,Y=t.originalKey,Q=t.indexKey,Z=t.groupedByPivotKey,$=t.loading,ee=t.pageSize,te=t.page,ne=t.sorted,re=t.filtered,oe=t.resized,ae=t.expanded,ie=t.pages,se=t.onExpandedChange,le=t.TableComponent,ue=t.TheadComponent,de=t.TbodyComponent,ce=t.additionalBodyEl,pe=t.TrGroupComponent,fe=t.TrComponent,he=t.ThComponent,me=t.TdComponent,ge=t.TfootComponent,ve=t.PaginationComponent,ye=t.LoadingComponent,Pe=t.SubComponent,be=t.NoDataComponent,Se=t.ResizerComponent,Ce=t.ExpanderComponent,we=t.PivotValueComponent,Te=t.PivotComponent,xe=t.AggregatedComponent,ze=t.FilterComponent,Ee=t.PadRowComponent,Ne=t.resolvedData,Oe=t.allVisibleColumns,De=t.headerGroups,Re=t.hasHeaderGroups,ke=t.sortedData,Fe=t.currentlyResizing,We=ee*te,Me=We+ee,_e=K?Ne:ke.slice(We,Me),je=this.getMinRows(),Ke=S.range(Math.max(je-_e.length,0)),Le=Oe.some(function(e){return e.Footer}),Ae=V||Oe.some(function(e){return e.filterable}),Ie=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1;return[t.map(function(t,o){var a=m({},t,{_viewIndex:r+=1}),i=n.concat([o]);if(a[X]&&S.get(ae,i)){var s=e(a[X],i,r),l=P(s,2);a[X]=l[0],r=l[1]}return a}),r]}(_e),Be=P(Ie,1);_e=Be[0];var Ge=te>0,Ve=te+1<ie,He=S.sum(Oe.map(function(e){var t=oe.find(function(t){return t.id===e.id})||{};return S.getFirstDefined(t.value,e.width,e.minWidth)})),Je=-1,Ue=m({},t,{startRow:We,endRow:Me,pageRows:_e,minRows:je,padRows:Ke,hasColumnFooter:Le,canPrevious:Ge,canNext:Ve,rowMinWidth:He}),Xe=S.splitProps(s(Ue,void 0,void 0,this)),qe=S.splitProps(l(Ue,void 0,void 0,this)),Ye=S.splitProps(C(Ue,void 0,void 0,this)),Qe=k(Ue,void 0,void 0,this),Ze=F(Ue,void 0,void 0,this),$e=function(t,r){var a=function(e){return(oe.find(function(t){return t.id===e.id})||{}).value},i=S.sum(t.columns.map(function(e){return e.width||a(e)?0:e.minWidth})),s=S.sum(t.columns.map(function(e){return S.getFirstDefined(a(e),e.width,e.minWidth)})),l=S.sum(t.columns.map(function(e){return S.getFirstDefined(a(e),e.width,e.maxWidth)})),u=S.splitProps(p(Ue,void 0,t,e)),d=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),c=[t.headerClassName,u.className,d.className],f=m({},t.headerStyle,u.style,d.style),h=m({},u.rest,d.rest),g={flex:i+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(l)};return n.createElement(he,m({key:r+"-"+t.id,className:o(c),style:m({},f,g)},h),S.normalizeComponent(t.Header,{data:ke,column:t}))},et=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i=ne.find(function(e){return e.id===t.id}),s="function"==typeof t.show?t.show():t.show,l=S.getFirstDefined(a.value,t.width,t.minWidth),u=S.getFirstDefined(a.value,t.width,t.maxWidth),d=S.splitProps(g(Ue,void 0,t,e)),c=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),p=[t.headerClassName,d.className,c.className],f=m({},t.headerStyle,d.style,c.style),h=m({},d.rest,c.rest),v=S.getFirstDefined(t.resizable,G,!1),y=v?n.createElement(Se,m({onMouseDown:function(n){return e.resizeColumnStart(n,t,!1)},onTouchStart:function(n){return e.resizeColumnStart(n,t,!0)}},W("finalState",void 0,t,e))):null,P=S.getFirstDefined(t.sortable,I,!1);return n.createElement(he,m({key:r+"-"+t.id,className:o(p,v&&"rt-resizable-header",i?i.desc?"-sort-desc":"-sort-asc":"",P&&"-cursor-pointer",!s&&"-hidden",U&&U.slice(0,-1).includes(t.id)&&"rt-header-pivot"),style:m({},f,{flex:l+" 0 auto",width:S.asPx(l),maxWidth:S.asPx(u)}),toggleSort:function(n){P&&e.sortColumn(t,!!B&&n.shiftKey)}},h),n.createElement("div",{className:o(v&&"rt-resizable-header-content")},S.normalizeComponent(t.Header,{data:ke,column:t})),y)},tt=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i=S.getFirstDefined(a.value,t.width,t.minWidth),s=S.getFirstDefined(a.value,t.width,t.maxWidth),l=S.splitProps(b(Ue,void 0,t,e)),u=S.splitProps(t.getHeaderProps(Ue,void 0,t,e)),d=[t.headerClassName,l.className,u.className],c=m({},t.headerStyle,l.style,u.style),p=m({},l.rest,u.rest),f=re.find(function(e){return e.id===t.id}),h=t.Filter||ze,g=S.getFirstDefined(t.filterable,V,!1);return n.createElement(he,m({key:r+"-"+t.id,className:o(d),style:m({},c,{flex:i+" 0 auto",width:S.asPx(i),maxWidth:S.asPx(s)})},p),g?S.normalizeComponent(h,{column:t,filter:f,onChange:function(n){return e.filterColumn(t,n)}},N.column.Filter):null)},nt=function t(r,a){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s={original:r[Y],row:r,index:r[Q],viewIndex:Je+=1,pageSize:ee,page:te,level:i.length,nestingPath:i.concat([a]),aggregated:r[q],groupedByPivot:r[Z],subRows:r[X]},l=S.get(ae,s.nestingPath),u=w(Ue,s,void 0,e),d=S.splitProps(T(Ue,s,void 0,e));return n.createElement(pe,m({key:s.nestingPath.join("_")},u),n.createElement(fe,m({className:o(d.className,r._viewIndex%2?"-even":"-odd"),style:d.style},d.rest),Oe.map(function(t,a){var i=oe.find(function(e){return e.id===t.id})||{},u="function"==typeof t.show?t.show():t.show,d=S.getFirstDefined(i.value,t.width,t.minWidth),c=S.getFirstDefined(i.value,t.width,t.maxWidth),p=S.splitProps(x(Ue,s,t,e)),f=S.splitProps(t.getProps(Ue,s,t,e)),h=[p.className,t.className,f.className],g=m({},p.style,t.style,f.style),v=m({},s,{isExpanded:l,column:m({},t),value:s.row[t.id],pivoted:t.pivoted,expander:t.expander,resized:oe,show:u,width:d,maxWidth:c,tdProps:p,columnProps:f,classes:h,styles:g}),y=v.value,P=void 0,b=void 0,C=void 0,w=S.normalizeComponent(t.Cell,v,y),T=t.Aggregated||(t.aggregate?t.Cell:xe),z=t.Expander||Ce,E=t.PivotValue||we,N=Te||function(e){return n.createElement("div",null,n.createElement(z,e),n.createElement(E,e))},O=t.Pivot||N;(v.pivoted||v.expander)&&(v.expandable=!0,P=!0,!v.pivoted||v.subRows||Pe||(v.expandable=!1)),v.pivoted?(b=s.row[H]===t.id&&v.subRows,C=U.indexOf(t.id)>U.indexOf(s.row[H])&&v.subRows,w=b?S.normalizeComponent(O,m({},v,{value:r[J]}),r[J]):C?S.normalizeComponent(T,v,y):null):v.aggregated&&(w=S.normalizeComponent(T,v,y)),v.expander&&(w=S.normalizeComponent(z,v,r[J]),U&&(v.groupedByPivot&&(w=null),v.subRows||Pe||(w=null)));var D=P?function(t){var n=S.clone(ae);return n=l?S.set(n,v.nestingPath,!1):S.set(n,v.nestingPath,{}),e.setStateWithData({expanded:n},function(){return se&&se(n,v.nestingPath,t,v)})}:function(){},R={onClick:D};return p.rest.onClick&&(R.onClick=function(e){p.rest.onClick(e,function(){return D(e)})}),f.rest.onClick&&(R.onClick=function(e){f.rest.onClick(e,function(){return D(e)})}),n.createElement(me,m({key:a+"-"+t.id,className:o(h,!v.expandable&&!u&&"hidden",v.expandable&&"rt-expandable",(b||C)&&"rt-pivot"),style:m({},g,{flex:d+" 0 auto",width:S.asPx(d),maxWidth:S.asPx(c)})},p.rest,f.rest,R),w)})),s.subRows&&l&&s.subRows.map(function(e,n){return t(e,n,s.nestingPath)}),Pe&&!s.subRows&&l&&Pe(s,function(){var e=S.clone(ae);S.set(e,s.nestingPath,!1)}))},rt=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i="function"==typeof t.show?t.show():t.show,s=S.getFirstDefined(a.value,t.width,t.minWidth),l=s,u=S.getFirstDefined(a.value,t.width,t.maxWidth),d=S.splitProps(x(Ue,void 0,t,e)),c=S.splitProps(t.getProps(Ue,void 0,t,e)),p=[d.className,t.className,c.className],f=m({},d.style,t.style,c.style);return n.createElement(me,m({key:r+"-"+t.id,className:o(p,!i&&"hidden"),style:m({},f,{flex:l+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(u)})},d.rest),S.normalizeComponent(Ee))},ot=function(t,r){var a=w(Ue,void 0,void 0,e),i=S.splitProps(T(Ue,void 0,void 0,e));return n.createElement(pe,m({key:"pad-"+r},a),n.createElement(fe,{className:o("-padRow",(_e.length+r)%2?"-even":"-odd",i.className),style:i.style||{}},Oe.map(rt)))},at=function(t,r){var a=oe.find(function(e){return e.id===t.id})||{},i="function"==typeof t.show?t.show():t.show,s=S.getFirstDefined(a.value,t.width,t.minWidth),l=S.getFirstDefined(a.value,t.width,t.maxWidth),u=S.splitProps(O(Ue,void 0,t,e)),d=S.splitProps(t.getProps(Ue,void 0,t,e)),c=S.splitProps(t.getFooterProps(Ue,void 0,t,e)),p=[u.className,t.className,d.className,c.className],f=m({},u.style,t.style,d.style,c.style);return n.createElement(me,m({key:r+"-"+t.id,className:o(p,!i&&"hidden"),style:m({},f,{flex:s+" 0 auto",width:S.asPx(s),maxWidth:S.asPx(l)})},d.rest,u.rest,c.rest),S.normalizeComponent(t.Footer,{data:ke,column:t}))},it=function(r){var o=S.splitProps(R(Ue,void 0,void 0,e));return n.createElement(ve,m({},t,{pages:ie,canPrevious:Ge,canNext:Ve,onPageChange:e.onPageChange,onPageSizeChange:e.onPageSizeChange,className:o.className,style:o.style,isTop:r},o.rest))},st=function(){return n.createElement("div",m({className:o("ReactTable",a,Xe.className),style:m({},i,Xe.style)},Xe.rest,{ref:function(t){t&&(Xe.rest.ref&&Xe.rest.ref(t),e.tableRef=t)}}),M&&_?n.createElement("div",{className:"pagination-top"},it(!0)):null,n.createElement(le,m({className:o(qe.className,Fe?"rt-resizing":""),style:qe.style},qe.rest),Re?(P=S.splitProps(u(Ue,void 0,void 0,e)),b=S.splitProps(d(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-headerGroups",P.className),style:m({},P.style,{minWidth:He+"px"})},P.rest),n.createElement(fe,m({className:b.className,style:b.style},b.rest),De.map($e)))):null,(p=S.splitProps(f(Ue,void 0,void 0,e)),g=S.splitProps(h(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-header",p.className),style:m({},p.style,{minWidth:He+"px"})},p.rest),n.createElement(fe,m({className:g.className,style:g.style},g.rest),Oe.map(et)))),Ae?(s=S.splitProps(v(Ue,void 0,void 0,e)),l=S.splitProps(y(Ue,void 0,void 0,e)),n.createElement(ue,m({className:o("-filters",s.className),style:m({},s.style,{minWidth:He+"px"})},s.rest),n.createElement(fe,m({className:l.className,style:l.style},l.rest),Oe.map(tt)))):null,n.createElement(de,m({className:o(Ye.className),style:m({},Ye.style,{minWidth:He+"px"})},Ye.rest),_e.length<200?_e.map(function(e,t){return nt(e,t)}):n.createElement(c,{type:"variable",itemSizeEstimator:e.props.itemSizeEstimator||D,itemRenderer:function(e){return nt(_e[e],e)},length:_e.length}),Ke.map(ot),ce),Le?(t=S.splitProps(z(Ue,void 0,void 0,e)),r=S.splitProps(E(Ue,void 0,void 0,e)),n.createElement(ge,m({className:t.className,style:m({},t.style,{minWidth:He+"px"})},t.rest),n.createElement(fe,m({className:o(r.className),style:r.style},r.rest),Oe.map(at)))):null),M&&j?n.createElement("div",{className:"pagination-bottom"},it(!1)):null,!_e.length&&n.createElement(be,Ze,S.normalizeComponent(A)),n.createElement(ye,m({loading:$,loadingText:L},Qe)));var t,r,s,l,p,g,P,b};return r?r(Ue,st,this):st()}}]),t}(function(e){return function(t){function r(){return p(this,r),y(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments))}return g(r,e),f(r,[{key:"getResolvedState",value:function(e,t){return m({},S.compactObject(this.state),S.compactObject(this.props),S.compactObject(t),S.compactObject(e))}},{key:"getDataModel",value:function(e){var t=this,r=e.columns,o=e.pivotBy,a=void 0===o?[]:o,i=e.data,s=e.resolveData,l=e.pivotIDKey,u=e.pivotValKey,d=e.subRowsKey,c=e.aggregatedKey,p=e.nestingLevelKey,f=e.originalKey,g=e.indexKey,v=e.groupedByPivotKey,y=e.SubComponent,C=!1;r.forEach(function(e){e.columns&&(C=!0)});var w=[].concat(b(r)),T=r.find(function(e){return e.expander||e.columns&&e.columns.some(function(e){return e.expander})});T&&!T.expander&&(T=T.columns.find(function(e){return e.expander})),y&&!T&&(w=[T={expander:!0}].concat(b(w)));var x=[],z=function(e,n){var r=function(e,n){var r=void 0;if((r=e.expander?m({},t.props.column,t.props.expanderDefaults,e):m({},t.props.column,e)).maxWidth<r.minWidth&&(r.minWidth=r.maxWidth),n&&(r.parentColumn=n),"string"==typeof r.accessor){r.id=r.id||r.accessor;var o=r.accessor;return r.accessor=function(e){return S.get(e,o)},r}if(r.accessor&&!r.id)throw console.warn(r),new Error("A column id is required if using a non-string accessor for column above.");return r.accessor||(r.accessor=function(){}),r}(e,n);return x.push(r),r},E=w.map(function(e){return e.columns?m({},e,{columns:e.columns.map(function(t){return z(t,e)})}):z(e)}).slice(),N=[],O=(E=(E=E.map(function(e){if(e.columns){var t=e.columns.filter(function(e){return!(a.indexOf(e.id)>-1)&&S.getFirstDefined(e.show,!0)});return m({},e,{columns:t})}return e})).filter(function(e){return e.columns?e.columns.length:!(a.indexOf(e.id)>-1)&&S.getFirstDefined(e.show,!0)})).findIndex(function(e){return e.pivot});if(a.length){var D=[];a.forEach(function(e){var t=x.find(function(t){return t.id===e});t&&D.push(t)});var R=D.reduce(function(e,t){return e&&e===t.parentColumn&&t.parentColumn},D[0].parentColumn),k=C&&R.Header,F={Header:k=k||function(){return n.createElement("strong",null,"Pivoted")},columns:D.map(function(e){return m({},t.props.pivotDefaults,e,{pivoted:!0})})};O>=0?(F=m({},E[O],F),E.splice(O,1,F)):E.unshift(F)}var W=[],M=[],_=function(e,n){W.push(m({},t.props.column,n,{columns:e})),M=[]};E.forEach(function(e){if(e.columns)return N=N.concat(e.columns),M.length>0&&_(M),void _(e.columns,e);N.push(e),M.push(e)}),C&&M.length>0&&_(M);var j=s(i).map(function(e,t){return function e(t,n){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=(h(r={},f,t),h(r,g,n),h(r,d,t[d]),h(r,p,o),r);return x.forEach(function(e){e.expander||(a[e.id]=e.accessor(t))}),a[d]&&(a[d]=a[d].map(function(t,n){return e(t,n,o+1)})),a}(e,t)}),K=N.filter(function(e){return!e.expander&&e.aggregate});return a.length&&(j=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(r===n.length)return t;var o=Object.entries(S.groupBy(t,n[r])).map(function(e){var t,o=P(e,2),a=o[0],i=o[1];return h(t={},l,n[r]),h(t,u,a),h(t,n[r],a),h(t,d,i),h(t,p,r),h(t,v,!0),t});return o=o.map(function(t){var o,a,i,s=e(t[d],n,r+1);return m({},t,(h(o={},d,s),h(o,c,!0),o),(a=s,i={},K.forEach(function(e){var t=a.map(function(t){return t[e.id]});i[e.id]=e.aggregate(t,a)}),i))})}(j,a)),m({},e,{resolvedData:j,allVisibleColumns:N,headerGroups:W,allDecoratedColumns:x,hasHeaderGroups:C})}},{key:"getSortedData",value:function(e){var t=e.manual,n=e.sorted,r=e.filtered,o=e.defaultFilterMethod,a=e.resolvedData,i=e.allVisibleColumns,s={};return e.allDecoratedColumns.filter(function(e){return e.sortMethod}).forEach(function(e){s[e.id]=e.sortMethod}),{sortedData:t?a:this.sortData(this.filterData(a,r,o,i),n,s)}}},{key:"fireFetchData",value:function(){this.props.onFetchData(this.getResolvedState(),this)}},{key:"getPropOrState",value:function(e){return S.getFirstDefined(this.props[e],this.state[e])}},{key:"getStateOrProp",value:function(e){return S.getFirstDefined(this.state[e],this.props[e])}},{key:"filterData",value:function(e,t,n,r){var o=this,a=e;return t.length&&(a=(a=t.reduce(function(e,t){var o=r.find(function(e){return e.id===t.id});if(!o||!1===o.filterable)return e;var a=o.filterMethod||n;return o.filterAll?a(t,e,o):e.filter(function(e){return a(t,e,o)})},a)).map(function(e){return e[o.props.subRowsKey]?m({},e,h({},o.props.subRowsKey,o.filterData(e[o.props.subRowsKey],t,n,r))):e}).filter(function(e){return!e[o.props.subRowsKey]||e[o.props.subRowsKey].length>0})),a}},{key:"sortData",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t.length)return e;var o=(this.props.orderByMethod||S.orderBy)(e,t.map(function(e){return r[e.id]?function(t,n){return r[e.id](t[e.id],n[e.id],e.desc)}:function(t,r){return n.props.defaultSortMethod(t[e.id],r[e.id],e.desc)}}),t.map(function(e){return!e.desc}),this.props.indexKey);return o.forEach(function(e){e[n.props.subRowsKey]&&(e[n.props.subRowsKey]=n.sortData(e[n.props.subRowsKey],t,r))}),o}},{key:"getMinRows",value:function(){return S.getFirstDefined(this.props.minRows,this.getStateOrProp("pageSize"))}},{key:"onPageChange",value:function(e){var t=this.props,n=t.onPageChange,r=t.collapseOnPageChange,o={page:e};r&&(o.expanded={}),this.setStateWithData(o,function(){return n&&n(e)})}},{key:"onPageSizeChange",value:function(e){var t=this.props.onPageSizeChange,n=this.getResolvedState(),r=n.pageSize*n.page,o=Math.floor(r/e);this.setStateWithData({pageSize:e,page:o},function(){return t&&t(e,o)})}},{key:"sortColumn",value:function(e,t){var n=this.getResolvedState(),r=n.sorted,o=n.skipNextSort,a=n.defaultSortDesc,i=Object.prototype.hasOwnProperty.call(e,"defaultSortDesc")?e.defaultSortDesc:a,s=!i;if(o)this.setStateWithData({skipNextSort:!1});else{var l=this.props.onSortedChange,u=S.clone(r||[]).map(function(e){return e.desc=S.isSortingDesc(e),e});if(S.isArray(e)){var d=u.findIndex(function(t){return t.id===e[0].id});d>-1?(u[d].desc===s?t?u.splice(d,e.length):e.forEach(function(e,t){u[d+t].desc=i}):e.forEach(function(e,t){u[d+t].desc=s}),t||(u=u.slice(d,e.length))):u=t?u.concat(e.map(function(e){return{id:e.id,desc:i}})):e.map(function(e){return{id:e.id,desc:i}})}else{var c=u.findIndex(function(t){return t.id===e.id});if(c>-1){var p=u[c];p.desc===s?t?u.splice(c,1):(p.desc=i,u=[p]):(p.desc=s,t||(u=[p]))}else t?u.push({id:e.id,desc:i}):u=[{id:e.id,desc:i}]}this.setStateWithData({page:!r.length&&u.length||!t?0:this.state.page,sorted:u},function(){return l&&l(u,e,t)})}}},{key:"filterColumn",value:function(e,t){var n=this.getResolvedState().filtered,r=this.props.onFilteredChange,o=(n||[]).filter(function(t){return t.id!==e.id});""!==t&&o.push({id:e.id,value:t}),this.setStateWithData({filtered:o},function(){return r&&r(o,e,t)})}},{key:"resizeColumnStart",value:function(e,t,n){var r=this;e.stopPropagation();var o=e.target.parentElement.getBoundingClientRect().width,a=void 0;a=n?e.changedTouches[0].pageX:e.pageX,this.trapEvents=!0,this.setStateWithData({currentlyResizing:{id:t.id,startX:a,parentWidth:o}},function(){n?(document.addEventListener("touchmove",r.resizeColumnMoving),document.addEventListener("touchcancel",r.resizeColumnEnd),document.addEventListener("touchend",r.resizeColumnEnd)):(document.addEventListener("mousemove",r.resizeColumnMoving),document.addEventListener("mouseup",r.resizeColumnEnd),document.addEventListener("mouseleave",r.resizeColumnEnd))})}},{key:"resizeColumnMoving",value:function(e){e.stopPropagation();var t=this.props.onResizedChange,n=this.getResolvedState(),r=n.resized,o=n.currentlyResizing,a=r.filter(function(e){return e.id!==o.id}),i=void 0;"touchmove"===e.type?i=e.changedTouches[0].pageX:"mousemove"===e.type&&(i=e.pageX);var s=Math.max(o.parentWidth+i-o.startX,11);a.push({id:o.id,value:s}),this.setStateWithData({resized:a},function(){return t&&t(a,e)})}},{key:"resizeColumnEnd",value:function(e){e.stopPropagation();var t="touchend"===e.type||"touchcancel"===e.type;t&&(document.removeEventListener("touchmove",this.resizeColumnMoving),document.removeEventListener("touchcancel",this.resizeColumnEnd),document.removeEventListener("touchend",this.resizeColumnEnd)),document.removeEventListener("mousemove",this.resizeColumnMoving),document.removeEventListener("mouseup",this.resizeColumnEnd),document.removeEventListener("mouseleave",this.resizeColumnEnd),t||this.setStateWithData({skipNextSort:!0,currentlyResizing:!1})}}]),r}()}((z=t.Component,function(e){function t(){return p(this,t),y(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return g(t,z),f(t,[{key:"UNSAFE_componentWillMount",value:function(){this.setStateWithData(this.getDataModel(this.getResolvedState(),!0))}},{key:"componentDidMount",value:function(){this.fireFetchData()}},{key:"UNSAFE_componentWillReceiveProps",value:function(e,t){var n=this.getResolvedState(),r=this.getResolvedState(e,t);["sorted","filtered","resized","expanded"].forEach(function(e){var t="default"+(e.charAt(0).toUpperCase()+e.slice(1));JSON.stringify(n[t])!==JSON.stringify(r[t])&&(r[e]=r[t])}),["sortable","filterable","resizable"].forEach(function(e){if(n[e]!==r[e]){var t=e.replace("able","")+"ed",o="default"+(t.charAt(0).toUpperCase()+t.slice(1));r[t]=r[o]}}),n.data===r.data&&n.columns===r.columns&&n.pivotBy===r.pivotBy&&n.sorted===r.sorted&&n.filtered===r.filtered||this.setStateWithData(this.getDataModel(r,n.data!==r.data))}},{key:"setStateWithData",value:function(e,t){var n=this,r=this.getResolvedState(),o=this.getResolvedState({},e),a=o.freezeWhenExpanded;if(o.frozen=!1,a)for(var i=Object.keys(o.expanded),s=0;s<i.length;s+=1)if(o.expanded[i[s]]){o.frozen=!0;break}return(r.frozen&&!o.frozen||r.sorted!==o.sorted||r.filtered!==o.filtered||r.showFilters!==o.showFilters||!o.frozen&&r.resolvedData!==o.resolvedData)&&((r.sorted!==o.sorted&&this.props.collapseOnSortingChange||r.filtered!==o.filtered||r.showFilters!==o.showFilters||r.sortedData&&!o.frozen&&r.resolvedData!==o.resolvedData&&this.props.collapseOnDataChange)&&(o.expanded={}),Object.assign(o,this.getSortedData(o))),r.filtered!==o.filtered&&(o.page=0),o.sortedData&&(o.pages=o.manual?o.pages:Math.ceil(o.sortedData.length/o.pageSize),o.page=o.manual?o.page:Math.max(o.page>=o.pages?o.pages-1:o.page,0)),this.setState(o,function(){t&&t(),r.page===o.page&&r.pageSize===o.pageSize&&r.sorted===o.sorted&&r.filtered===o.filtered||n.fireFetchData()})}}]),t}())));k.propTypes=O,k.defaultProps=N,e.ReactTableDefaults=R,e.default=k,Object.defineProperty(e,"__esModule",{value:!0})});