nsc-react-component 4.3.5 → 4.3.6

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.
@@ -254,4 +254,4 @@ class HeaderSearch extends PureComponent {
254
254
  }
255
255
  }
256
256
  export default HeaderSearch;
257
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiQnV0dG9uIiwiY2xzIiwiQ29sIiwiUm93IiwiaXNFbXB0eU9iaiIsIkRvd25PdXRsaW5lZCIsIlVwT3V0bGluZWQiLCJSZWxvYWRPdXRsaW5lZCIsIlNlYXJjaE91dGxpbmVkIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJkYXlqcyIsInN0eWxlcyIsIkhlYWRlclNlYXJjaCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZXhwYW5kIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJuZXdQYXJhbXMiLCJfb2JqZWN0U3ByZWFkIiwiZGF0ZUZvcm1hdCIsImtleSIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldEZpZWxkc1ZhbHVlIiwiZ2V0U2VhcmNoVmFsdWVzIiwiZm9ybVZhbHVlIiwiZm9ybWF0VmFsdWUiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwiZ2V0RmllbGRzVmFsdWUiLCJvbGRkYXRhIiwibGVuZ3RoIiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImUiLCJvblNlYXJjaCIsInByb3BzIiwiZnJvbVZhbHVlIiwicmVzZXRGaWVsZHMiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmU0Iiwib25SZXNldCIsInJlbmRlciIsInNlYXJjaEZvcm1zIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwic2VhcmNoRm9ybVByb3BzIiwiY29sU3BhbiIsImhlYWRlckNvdW50IiwiaGVhZGVyUm91dCIsImNyZWF0ZUVsZW1lbnQiLCJndXR0ZXIiLCJ3cmFwIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJyZWYiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJzdHlsZSIsIndpZHRoIiwiZGlzcGxheSIsImZsZXhXcmFwIiwib25GaW5pc2giLCJiaW5kIiwibWFwIiwiaXRlbSIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzdGF0ZSIsImFsbG93Q2hhcnMiLCJzZWFyY2hEaXNhYmxlZCIsInR5cGUiLCJkZWZhdWx0SXRlbSIsImxhYmVsIiwicnVsZXMiLCJjb21wb25lbnROYW1lIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJzcGxpdCIsInJhbmdlckZpZWxkcyIsIm1kIiwic3BhbiIsInNtIiwibGciLCJwYWRkaW5nUmlnaHQiLCJJdGVtIiwiZGlzYWJsZWQiLCJvZmZzZXQiLCJtYXJnaW5Ub3AiLCJidXR0b25SZXZlcnMiLCJpY29uIiwibWFyZ2luTGVmdCIsImh0bWxUeXBlIiwib25DbGljayIsInNldFN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9IZWFkZXJTZWFyY2gvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBVcE91dGxpbmVkLFxyXG4gIFJlbG9hZE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNlYXJjaEl0ZW1Qcm9wcyB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxDb2w/OiBhbnk7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICB3cmFwcGVyQ29sPzogYW55O1xyXG4gIHByb3BzPzogYW55O1xyXG59XHJcbmludGVyZmFjZSBTZWFyY2hQcm9wcyB7XHJcbiAgc2VhcmNoRm9ybXM6IEFycmF5PFNlYXJjaEl0ZW1Qcm9wcz47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogc3RyaW5nO1xyXG4gIG9uU2VhcmNoPzogYW55O1xyXG4gIG9uUmVzZXQ/OiBhbnk7XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogb2JqZWN0O1xyXG4gIGJ1dHRvblJldmVycz86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG59XHJcblxyXG5jbGFzcyBIZWFkZXJTZWFyY2ggZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFNlYXJjaFByb3BzLCBhbnk+IHtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICBzdGF0ZSA9IHsgZXhwYW5kOiBmYWxzZSB9O1xyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICBsZXQgbmV3UGFyYW1zID0geyAuLi5wYXJhbXMgfTtcclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBuZXdQYXJhbXNba2V5XTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBuZXdQYXJhbXNba2V5XSA9IGRheWpzKHZhbHVlLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVswXSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBuZXdQYXJhbXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyh2YWx1ZVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKHZhbHVlWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdQYXJhbXMpO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICByZXR1cm4gZm9ybVZhbHVlO1xyXG4gIH1cclxuICBmb3JtYXRWYWx1ZSgpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBmb3JtVmFsdWVba2V5XTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgaWYgKG9sZGRhdGEubGVuZ3RoID4gMCAmJiBvbGRkYXRhWzBdICYmIG9sZGRhdGFbMV0pIHtcclxuICAgICAgICAgICAgZm9ybVZhbHVlW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgZm9ybVZhbHVlW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXSA9IGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBmb3JtVmFsdWVbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGRlbGV0ZSBmb3JtVmFsdWVba2V5XVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgfSBcclxuICAgICAgICB9IGVsc2UgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGZvcm1WYWx1ZVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtVmFsdWU7XHJcbiAgfVxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmcm9tVmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEZvcm1zID0gW10sXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbixcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uUmVzZXQsXHJcbiAgICAgIHNlYXJjaEZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29sU3BhbiA9IDA7XHJcbiAgICBjb25zdCBoZWFkZXJDb3VudCA9IHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgPyAxIDogMjtcclxuICAgIGNvbnN0IGhlYWRlclJvdXQgPSBzZWFyY2hGb3Jtcy5sZW5ndGggJSA0O1xyXG4gICAgaWYgKGhlYWRlclJvdXQgPT0gMCkge1xyXG4gICAgICBjb2xTcGFuID0gMTg7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMSkge1xyXG4gICAgICBjb2xTcGFuID0gMTI7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMikge1xyXG4gICAgICBjb2xTcGFuID0gNjtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxSb3cgZ3V0dGVyPXsyNH0gd3JhcD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1oZWFkZXJcIiksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1oZWFkZXItcGFkZGluZ1wiKV06XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcy5sZW5ndGggPiAzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtZm9ybVwiKSl9PlxyXG4gICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgIHdyYXBwZXJDb2w9e3t9fVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhXcmFwOiBcIndyYXBcIiB9fVxyXG4gICAgICAgICAgICAgIG9uRmluaXNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgLy8gbGFiZWxBbGlnbj17J2xlZnQnfVxyXG4gICAgICAgICAgICAgIHsuLi5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiBoZWFkZXJDb3VudCAmJiAhdGhpcy5zdGF0ZS5leHBhbmQpIHtcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICAgICAgICAvL3JldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtPy5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wcyA9IHsgLi4uaXRlbVByb3BzIH07XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoRGlzYWJsZWQgPVxyXG4gICAgICAgICAgICAgICAgICBwcm9wcy5zZWFyY2hEaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy5zZWFyY2hEaXNhYmxlZDtcclxuICAgICAgICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuYWxsb3dDaGFycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0SXRlbSA9IHtcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFyczogYWxsb3dDaGFycyxcclxuICAgICAgICAgICAgICAgICAgcnVsZXM6IGl0ZW0ucnVsZXMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU6IGl0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIixcclxuICAgICAgICAgICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFiZWxDb2wpIHtcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW0gPSB7IC4uLmRlZmF1bHRJdGVtLCBsYWJlbENvbDogaXRlbS5sYWJlbENvbCB9O1xyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5sYWJlbENvbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLndyYXBwZXJDb2wpIHtcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW0gPSB7IC4uLmRlZmF1bHRJdGVtLCB3cmFwcGVyQ29sOiBpdGVtLndyYXBwZXJDb2wgfTtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0ud3JhcHBlckNvbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlcjogYW55ID1cclxuICAgICAgICAgICAgICAgICAgaXRlbS50eXBlID09IFwiU2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICA/IGDor7fpgInmi6kke2l0ZW0ubGFiZWx9YFxyXG4gICAgICAgICAgICAgICAgICAgIDogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBbXCLlvIDlp4vml7bpl7RcIiwgXCLnu5PmnZ/ml7bpl7RcIl07XHJcbiAgICAgICAgICAgICAgICAgIGlmICgoaXRlbS5uYW1lLnNwbGl0KFwiLFwiKS5sZW5ndGggPiAxKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2VyRGF0ZVtpdGVtLm5hbWVdID0gaXRlbS5uYW1lLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzLnJhbmdlckZpZWxkcztcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAxMiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNtPXt7IHNwYW46IDI0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgbGc9e3sgc3BhbjogNiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZ1JpZ2h0OiAwLCBkaXNwbGF5OiBkaXNwbGF5IH19XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtIHsuLi5kZWZhdWx0SXRlbX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogeyB3aWR0aDogXCIxMDAlXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBzZWFyY2hEaXNhYmxlZCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgbWQ9e3sgc3BhbjogMTIgfX1cclxuICAgICAgICAgICAgICAgIHNtPXt7IHNwYW46IDI0IH19XHJcbiAgICAgICAgICAgICAgICBsZz17eyBzcGFuOiB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJyaWdodFwiID8gMTIgOiA2IH19XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAgfX1cclxuICAgICAgICAgICAgICAgIG9mZnNldD17XHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLnN0YXRlLmV4cGFuZCB8fCBzZWFyY2hGb3Jtcy5sZW5ndGggPCA0KSAmJlxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjb2xTcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgOiAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtaGVhZGVyc2VhcmNoLXNlYXJjaC1idXR0b25zXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtaGVhZGVyc2VhcmNoLXNlYXJjaC1idXR0b25zLWZsZXhcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcy5sZW5ndGggPiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luVG9wOiAwIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nscyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1idXR0b24tcmV2ZXJzZVwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYnV0dG9uUmV2ZXJzID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIG9uQ2xpY2s9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICAgIGljb249ezxTZWFyY2hPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIGh0bWxUeXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnJlc2V0U2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249ezxSZWxvYWRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAg6YeN572uXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLmxlbmd0aCA+IDMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3MoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtaGVhZGVyc2VhcmNoLWV4cGFuZC1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGV4cGFuZCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kOiAhZXhwYW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gXCLmlLbotbdcIiA6IFwi5bGV5byAXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5leHBhbmQgPyA8VXBPdXRsaW5lZCAvPiA6IDxEb3duT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L1Jvdz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEhlYWRlclNlYXJjaDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLFNBQ0VDLFlBQVksRUFDWkMsVUFBVSxFQUNWQyxjQUFjLEVBQ2RDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsT0FBTyxFQUFFQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQW1CbkIsTUFBTUMsWUFBWSxTQUFTZixhQUFhLENBQW1CO0VBQUFnQixZQUFBO0lBQUEsU0FBQUMsU0FBQTtJQUFBQyxlQUFBLGlDQUM3Q25CLEtBQUssQ0FBQ29CLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEscUJBQ3JCLENBQUMsQ0FBQztJQUFBQSxlQUFBLHFCQUNGLENBQUMsQ0FBQztJQUFBQSxlQUFBLGdCQUNQO01BQUVFLE1BQU0sRUFBRTtJQUFNLENBQUM7RUFB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
257
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiQnV0dG9uIiwiY2xzIiwiQ29sIiwiUm93IiwiaXNFbXB0eU9iaiIsIkRvd25PdXRsaW5lZCIsIlVwT3V0bGluZWQiLCJSZWxvYWRPdXRsaW5lZCIsIlNlYXJjaE91dGxpbmVkIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJkYXlqcyIsInN0eWxlcyIsIkhlYWRlclNlYXJjaCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZXhwYW5kIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJuZXdQYXJhbXMiLCJfb2JqZWN0U3ByZWFkIiwiZGF0ZUZvcm1hdCIsImtleSIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldEZpZWxkc1ZhbHVlIiwiZ2V0U2VhcmNoVmFsdWVzIiwiZm9ybVZhbHVlIiwiZm9ybWF0VmFsdWUiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwiZ2V0RmllbGRzVmFsdWUiLCJvbGRkYXRhIiwibGVuZ3RoIiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImUiLCJvblNlYXJjaCIsInByb3BzIiwiZnJvbVZhbHVlIiwicmVzZXRGaWVsZHMiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmU0Iiwib25SZXNldCIsInJlbmRlciIsInNlYXJjaEZvcm1zIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwic2VhcmNoRm9ybVByb3BzIiwiY29sU3BhbiIsImhlYWRlckNvdW50IiwiaGVhZGVyUm91dCIsImNyZWF0ZUVsZW1lbnQiLCJndXR0ZXIiLCJ3cmFwIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJyZWYiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJzdHlsZSIsIndpZHRoIiwiZGlzcGxheSIsImZsZXhXcmFwIiwib25GaW5pc2giLCJiaW5kIiwibWFwIiwiaXRlbSIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzdGF0ZSIsImFsbG93Q2hhcnMiLCJzZWFyY2hEaXNhYmxlZCIsInR5cGUiLCJkZWZhdWx0SXRlbSIsImxhYmVsIiwicnVsZXMiLCJjb21wb25lbnROYW1lIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJzcGxpdCIsInJhbmdlckZpZWxkcyIsIm1kIiwic3BhbiIsInNtIiwibGciLCJwYWRkaW5nUmlnaHQiLCJJdGVtIiwiZGlzYWJsZWQiLCJvZmZzZXQiLCJtYXJnaW5Ub3AiLCJidXR0b25SZXZlcnMiLCJpY29uIiwibWFyZ2luTGVmdCIsImh0bWxUeXBlIiwib25DbGljayIsInNldFN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9IZWFkZXJTZWFyY2gvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBVcE91dGxpbmVkLFxyXG4gIFJlbG9hZE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNlYXJjaEl0ZW1Qcm9wcyB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxDb2w/OiBhbnk7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICB3cmFwcGVyQ29sPzogYW55O1xyXG4gIHByb3BzPzogYW55O1xyXG59XHJcbmludGVyZmFjZSBTZWFyY2hQcm9wcyB7XHJcbiAgc2VhcmNoRm9ybXM6IEFycmF5PFNlYXJjaEl0ZW1Qcm9wcz47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogc3RyaW5nO1xyXG4gIG9uU2VhcmNoPzogYW55O1xyXG4gIG9uUmVzZXQ/OiBhbnk7XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogb2JqZWN0O1xyXG4gIGJ1dHRvblJldmVycz86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG59XHJcblxyXG5jbGFzcyBIZWFkZXJTZWFyY2ggZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFNlYXJjaFByb3BzLCBhbnk+IHtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICBzdGF0ZSA9IHsgZXhwYW5kOiBmYWxzZSB9O1xyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICBsZXQgbmV3UGFyYW1zID0geyAuLi5wYXJhbXMgfTtcclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBuZXdQYXJhbXNba2V5XTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBuZXdQYXJhbXNba2V5XSA9IGRheWpzKHZhbHVlLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVswXSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBuZXdQYXJhbXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyh2YWx1ZVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKHZhbHVlWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdQYXJhbXMpO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICByZXR1cm4gZm9ybVZhbHVlO1xyXG4gIH1cclxuICBmb3JtYXRWYWx1ZSgpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBmb3JtVmFsdWVba2V5XTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgaWYgKG9sZGRhdGEubGVuZ3RoID4gMCAmJiBvbGRkYXRhWzBdICYmIG9sZGRhdGFbMV0pIHtcclxuICAgICAgICAgICAgZm9ybVZhbHVlW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgZm9ybVZhbHVlW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXSA9IGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBmb3JtVmFsdWVbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGRlbGV0ZSBmb3JtVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGZvcm1WYWx1ZVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtVmFsdWU7XHJcbiAgfVxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmcm9tVmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEZvcm1zID0gW10sXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbixcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uUmVzZXQsXHJcbiAgICAgIHNlYXJjaEZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29sU3BhbiA9IDA7XHJcbiAgICBjb25zdCBoZWFkZXJDb3VudCA9IHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgPyAxIDogMjtcclxuICAgIGNvbnN0IGhlYWRlclJvdXQgPSBzZWFyY2hGb3Jtcy5sZW5ndGggJSA0O1xyXG4gICAgaWYgKGhlYWRlclJvdXQgPT0gMCkge1xyXG4gICAgICBjb2xTcGFuID0gMTg7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMSkge1xyXG4gICAgICBjb2xTcGFuID0gMTI7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMikge1xyXG4gICAgICBjb2xTcGFuID0gNjtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxSb3cgZ3V0dGVyPXsyNH0gd3JhcD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1oZWFkZXJcIiksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1oZWFkZXItcGFkZGluZ1wiKV06XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcy5sZW5ndGggPiAzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtZm9ybVwiKSl9PlxyXG4gICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgIHdyYXBwZXJDb2w9e3t9fVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhXcmFwOiBcIndyYXBcIiB9fVxyXG4gICAgICAgICAgICAgIG9uRmluaXNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgLy8gbGFiZWxBbGlnbj17J2xlZnQnfVxyXG4gICAgICAgICAgICAgIHsuLi5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiBoZWFkZXJDb3VudCAmJiAhdGhpcy5zdGF0ZS5leHBhbmQpIHtcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICAgICAgICAvL3JldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtPy5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wcyA9IHsgLi4uaXRlbVByb3BzIH07XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoRGlzYWJsZWQgPVxyXG4gICAgICAgICAgICAgICAgICBwcm9wcy5zZWFyY2hEaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy5zZWFyY2hEaXNhYmxlZDtcclxuICAgICAgICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuYWxsb3dDaGFycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0SXRlbSA9IHtcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFyczogYWxsb3dDaGFycyxcclxuICAgICAgICAgICAgICAgICAgcnVsZXM6IGl0ZW0ucnVsZXMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU6IGl0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIixcclxuICAgICAgICAgICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFiZWxDb2wpIHtcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW0gPSB7IC4uLmRlZmF1bHRJdGVtLCBsYWJlbENvbDogaXRlbS5sYWJlbENvbCB9O1xyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5sYWJlbENvbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLndyYXBwZXJDb2wpIHtcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW0gPSB7IC4uLmRlZmF1bHRJdGVtLCB3cmFwcGVyQ29sOiBpdGVtLndyYXBwZXJDb2wgfTtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0ud3JhcHBlckNvbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlcjogYW55ID1cclxuICAgICAgICAgICAgICAgICAgaXRlbS50eXBlID09IFwiU2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICA/IGDor7fpgInmi6kke2l0ZW0ubGFiZWx9YFxyXG4gICAgICAgICAgICAgICAgICAgIDogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBbXCLlvIDlp4vml7bpl7RcIiwgXCLnu5PmnZ/ml7bpl7RcIl07XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUuc3BsaXQoXCIsXCIpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy5yYW5nZXJGaWVsZHM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICAgICAgbWQ9e3sgc3BhbjogMTIgfX1cclxuICAgICAgICAgICAgICAgICAgICBzbT17eyBzcGFuOiAyNCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIGxnPXt7IHNwYW46IDYgfX1cclxuICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCwgZGlzcGxheTogZGlzcGxheSB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZvcm0uSXRlbSB7Li4uZGVmYXVsdEl0ZW19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgd2lkdGg6IFwiMTAwJVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogc2VhcmNoRGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIG1kPXt7IHNwYW46IDEyIH19XHJcbiAgICAgICAgICAgICAgICBzbT17eyBzcGFuOiAyNCB9fVxyXG4gICAgICAgICAgICAgICAgbGc9e3sgc3BhbjogdG9vbEJ1dHRvblBvc2l0aW9uID09IFwicmlnaHRcIiA/IDEyIDogNiB9fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZ1JpZ2h0OiAwIH19XHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ9e1xyXG4gICAgICAgICAgICAgICAgICAodGhpcy5zdGF0ZS5leHBhbmQgfHwgc2VhcmNoRm9ybXMubGVuZ3RoIDwgNCkgJiZcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXMubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgID8gY29sU3BhblxyXG4gICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1zZWFyY2gtYnV0dG9uc1wiKSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWhlYWRlcnNlYXJjaC1zZWFyY2gtYnV0dG9ucy1mbGV4XCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXMubGVuZ3RoID4gMSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblRvcDogMCB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtYnV0dG9uLXJldmVyc2VcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmJ1dHRvblJldmVycyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvbkNsaWNrPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXs8U2VhcmNoT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBodG1sVHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLmxlbmd0aCA+IDEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5yZXNldFNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPXs8UmVsb2FkT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOmHjee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5sZW5ndGggPiAzICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWhlYWRlcnNlYXJjaC1leHBhbmQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBleHBhbmQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZDogIWV4cGFuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IFwi5pS26LW3XCIgOiBcIuWxleW8gFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gPFVwT3V0bGluZWQgLz4gOiA8RG93bk91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBIZWFkZXJTZWFyY2g7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8sY0FBYztBQUNyQixPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxTQUNFQyxZQUFZLEVBQ1pDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsTUFBTUMsTUFBTSxHQUFHLElBQUk7QUFtQm5CLE1BQU1DLFlBQVksU0FBU2YsYUFBYSxDQUFtQjtFQUFBZ0IsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSxpQ0FDN0NuQixLQUFLLENBQUNvQixTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLHFCQUNyQixDQUFDLENBQUM7SUFBQUEsZUFBQSxxQkFDRixDQUFDLENBQUM7SUFBQUEsZUFBQSxnQkFDUDtNQUFFRSxNQUFNLEVBQUU7SUFBTSxDQUFDO0VBQUE7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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Form","Button","cls","Col","Row","isEmptyObj","DownOutlined","UpOutlined","ReloadOutlined","SearchOutlined","getLess","getNode","dayjs","styles","HeaderSearch","constructor","arguments","_defineProperty","createRef","expand","setSearchParams","params","callBack","_this$searchRef$curre","newParams","_objectSpread","dateFormat","key","value","Array","isArray","searchRef","current","setFieldsValue","getSearchValues","formValue","formatValue","_this$searchRef$curre2","getFieldsValue","olddata","length","format","rangerDate","e","onSearch","props","fromValue","resetFields","_this$searchRef$curre3","resetSearch","_this$searchRef$curre4","onReset","render","searchForms","toolButtonPosition","searchFormProps","colSpan","headerCount","headerRout","createElement","gutter","wrap","className","_extends","ref","labelCol","wrapperCol","style","width","display","flexWrap","onFinish","bind","map","item","index","_item$props","itemProps","valueFormat","name","state","allowChars","searchDisabled","type","defaultItem","label","rules","componentName","placeholder","concat","split","rangerFields","md","span","sm","lg","paddingRight","Item","disabled","offset","marginTop","buttonRevers","icon","marginLeft","htmlType","onClick","setState"],"sources":["../../../src/components/page/HeaderSearch/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport {\r\n DownOutlined,\r\n UpOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport dayjs from \"dayjs\";\r\nconst styles = null;\r\ninterface SearchItemProps {\r\n label: string;\r\n name: string;\r\n labelCol?: any;\r\n type?: string;\r\n wrapperCol?: any;\r\n props?: any;\r\n}\r\ninterface SearchProps {\r\n searchForms: Array<SearchItemProps>; //是否显示操作列\r\n toolButtonPosition?: string;\r\n onSearch?: any;\r\n onReset?: any;\r\n searchFormProps?: object;\r\n buttonRevers?: boolean;\r\n className?: any;\r\n}\r\n\r\nclass HeaderSearch extends PureComponent<SearchProps, any> {\r\n searchRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n rangerDate = {} as any;\r\n state = { expand: false };\r\n setSearchParams(params, callBack) {\r\n let newParams = { ...params };\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let value = newParams[key];\r\n if (typeof value === \"string\") {\r\n newParams[key] = dayjs(value, this.dateFormat[key]);\r\n } else if (Array.isArray(value)) {\r\n if (typeof value[0] === \"string\") {\r\n newParams[key] = [\r\n dayjs(value[0], this.dateFormat[key]),\r\n dayjs(value[1], this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n this.searchRef.current?.setFieldsValue(newParams);\r\n }\r\n getSearchValues() {\r\n const formValue = this.formatValue();\r\n return formValue;\r\n }\r\n formatValue() {\r\n const formValue = this.searchRef.current?.getFieldsValue();\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = formValue[key];\r\n if (Array.isArray(olddata)) {\r\n if (olddata.length > 0 && olddata[0] && olddata[1]) {\r\n formValue[key] = [\r\n dayjs(olddata[0]).format(this.dateFormat[key]),\r\n dayjs(olddata[1]).format(this.dateFormat[key]),\r\n ];\r\n }\r\n if (this.rangerDate[key]) {\r\n try {\r\n formValue[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n formValue[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete formValue[key]\r\n } catch (e) {}\r\n } \r\n } else if (olddata) {\r\n formValue[key] = dayjs(olddata).format(this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n return formValue;\r\n }\r\n onSearch() {\r\n const { onSearch } = this.props;\r\n const fromValue = this.formatValue();\r\n if (onSearch) {\r\n onSearch(fromValue);\r\n return;\r\n }\r\n }\r\n resetFields() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n resetSearch() {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n }\r\n render() {\r\n const {\r\n searchForms = [],\r\n toolButtonPosition,\r\n onSearch,\r\n onReset,\r\n searchFormProps = {},\r\n } = this.props;\r\n let colSpan = 0;\r\n const headerCount = toolButtonPosition == \"right\" ? 1 : 2;\r\n const headerRout = searchForms.length % 4;\r\n if (headerRout == 0) {\r\n colSpan = 18;\r\n } else if (headerRout == 1) {\r\n colSpan = 12;\r\n } else if (headerRout == 2) {\r\n colSpan = 6;\r\n }\r\n return (\r\n <Row gutter={24} wrap>\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-header\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-header-padding\")]:\r\n searchForms.length > 3,\r\n },\r\n this.props.className\r\n )}\r\n >\r\n <div className={cls(getLess(styles, \"nsc-headersearch-form\"))}>\r\n <Form\r\n ref={this.searchRef}\r\n labelCol={{}}\r\n wrapperCol={{}}\r\n style={{ width: \"100%\", display: \"flex\", flexWrap: \"wrap\" }}\r\n onFinish={this.onSearch.bind(this)}\r\n // labelAlign={'left'}\r\n {...searchFormProps}\r\n >\r\n {searchForms.map((item: any, index: any) => {\r\n const itemProps = item.props || {};\r\n let display = \"block\";\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (index > headerCount && !this.state.expand) {\r\n display = \"none\";\r\n //return\r\n }\r\n let allowChars = item?.props?.allowChars || false;\r\n let props = { ...itemProps };\r\n let searchDisabled =\r\n props.searchDisabled === true ? true : false;\r\n delete props.searchDisabled;\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n } else {\r\n delete props.allowChars;\r\n }\r\n let defaultItem = {\r\n label: item.label,\r\n name: item.name,\r\n allowChars: allowChars,\r\n rules: item.rules,\r\n componentName: item.type ? item.type : \"Input\",\r\n } as any;\r\n if (item.labelCol) {\r\n defaultItem = { ...defaultItem, labelCol: item.labelCol };\r\n delete item.labelCol;\r\n }\r\n if (item.wrapperCol) {\r\n defaultItem = { ...defaultItem, wrapperCol: item.wrapperCol };\r\n delete item.wrapperCol;\r\n }\r\n let placeholder: any =\r\n item.type == \"Select\"\r\n ? `请选择${item.label}`\r\n : `请输入${item.label}`;\r\n if (item.type == \"RangePicker\") {\r\n placeholder = [\"开始时间\", \"结束时间\"];\r\n if ((item.name.split(\",\").length > 1)) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n }\r\n delete props.rangerFields;\r\n return (\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: 6 }}\r\n key={index}\r\n style={{ paddingRight: 0, display: display }}\r\n >\r\n <Form.Item {...defaultItem}>\r\n {getNode(item.type, {\r\n placeholder: placeholder,\r\n style: { width: \"100%\" },\r\n ...props,\r\n disabled: searchDisabled,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n })}\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: toolButtonPosition == \"right\" ? 12 : 6 }}\r\n style={{ paddingRight: 0 }}\r\n offset={\r\n (this.state.expand || searchForms.length < 4) &&\r\n searchForms.length > 1\r\n ? colSpan\r\n : 0\r\n }\r\n >\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-search-buttons\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-search-buttons-flex\")]:\r\n searchForms.length > 1,\r\n }\r\n )}\r\n style={{ marginTop: 0 }}\r\n >\r\n <div\r\n className={cls({\r\n [getLess(styles, \"nsc-headersearch-button-reverse\")]:\r\n this.props.buttonRevers == true,\r\n })}\r\n >\r\n <Button\r\n type={\"primary\"}\r\n // onClick={this.onSearch.bind(this)}\r\n icon={<SearchOutlined />}\r\n style={{ marginLeft: 0 }}\r\n htmlType=\"submit\"\r\n >\r\n 查询\r\n </Button>\r\n {searchForms.length > 1 && (\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.resetSearch.bind(this)}\r\n icon={<ReloadOutlined />}\r\n >\r\n 重置\r\n </Button>\r\n )}\r\n </div>\r\n {searchForms.length > 3 && (\r\n <a\r\n className={getLess(\r\n styles,\r\n \"nsc-headersearch-expand-style\"\r\n )}\r\n onClick={() => {\r\n const { expand } = this.state;\r\n this.setState({\r\n expand: !expand,\r\n });\r\n }}\r\n >\r\n {this.state.expand ? \"收起\" : \"展开\"}\r\n {this.state.expand ? <UpOutlined /> : <DownOutlined />}\r\n </a>\r\n )}\r\n </div>\r\n </Col>\r\n </Form>\r\n </div>\r\n </div>\r\n </Row>\r\n );\r\n }\r\n}\r\nexport default HeaderSearch;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Form","Button","cls","Col","Row","isEmptyObj","DownOutlined","UpOutlined","ReloadOutlined","SearchOutlined","getLess","getNode","dayjs","styles","HeaderSearch","constructor","arguments","_defineProperty","createRef","expand","setSearchParams","params","callBack","_this$searchRef$curre","newParams","_objectSpread","dateFormat","key","value","Array","isArray","searchRef","current","setFieldsValue","getSearchValues","formValue","formatValue","_this$searchRef$curre2","getFieldsValue","olddata","length","format","rangerDate","e","onSearch","props","fromValue","resetFields","_this$searchRef$curre3","resetSearch","_this$searchRef$curre4","onReset","render","searchForms","toolButtonPosition","searchFormProps","colSpan","headerCount","headerRout","createElement","gutter","wrap","className","_extends","ref","labelCol","wrapperCol","style","width","display","flexWrap","onFinish","bind","map","item","index","_item$props","itemProps","valueFormat","name","state","allowChars","searchDisabled","type","defaultItem","label","rules","componentName","placeholder","concat","split","rangerFields","md","span","sm","lg","paddingRight","Item","disabled","offset","marginTop","buttonRevers","icon","marginLeft","htmlType","onClick","setState"],"sources":["../../../src/components/page/HeaderSearch/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport {\r\n DownOutlined,\r\n UpOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport dayjs from \"dayjs\";\r\nconst styles = null;\r\ninterface SearchItemProps {\r\n label: string;\r\n name: string;\r\n labelCol?: any;\r\n type?: string;\r\n wrapperCol?: any;\r\n props?: any;\r\n}\r\ninterface SearchProps {\r\n searchForms: Array<SearchItemProps>; //是否显示操作列\r\n toolButtonPosition?: string;\r\n onSearch?: any;\r\n onReset?: any;\r\n searchFormProps?: object;\r\n buttonRevers?: boolean;\r\n className?: any;\r\n}\r\n\r\nclass HeaderSearch extends PureComponent<SearchProps, any> {\r\n searchRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n rangerDate = {} as any;\r\n state = { expand: false };\r\n setSearchParams(params, callBack) {\r\n let newParams = { ...params };\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let value = newParams[key];\r\n if (typeof value === \"string\") {\r\n newParams[key] = dayjs(value, this.dateFormat[key]);\r\n } else if (Array.isArray(value)) {\r\n if (typeof value[0] === \"string\") {\r\n newParams[key] = [\r\n dayjs(value[0], this.dateFormat[key]),\r\n dayjs(value[1], this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n this.searchRef.current?.setFieldsValue(newParams);\r\n }\r\n getSearchValues() {\r\n const formValue = this.formatValue();\r\n return formValue;\r\n }\r\n formatValue() {\r\n const formValue = this.searchRef.current?.getFieldsValue();\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = formValue[key];\r\n if (Array.isArray(olddata)) {\r\n if (olddata.length > 0 && olddata[0] && olddata[1]) {\r\n formValue[key] = [\r\n dayjs(olddata[0]).format(this.dateFormat[key]),\r\n dayjs(olddata[1]).format(this.dateFormat[key]),\r\n ];\r\n }\r\n if (this.rangerDate[key]) {\r\n try {\r\n formValue[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n formValue[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete formValue[key];\r\n } catch (e) {}\r\n }\r\n } else if (olddata) {\r\n formValue[key] = dayjs(olddata).format(this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n return formValue;\r\n }\r\n onSearch() {\r\n const { onSearch } = this.props;\r\n const fromValue = this.formatValue();\r\n if (onSearch) {\r\n onSearch(fromValue);\r\n return;\r\n }\r\n }\r\n resetFields() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n resetSearch() {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n }\r\n render() {\r\n const {\r\n searchForms = [],\r\n toolButtonPosition,\r\n onSearch,\r\n onReset,\r\n searchFormProps = {},\r\n } = this.props;\r\n let colSpan = 0;\r\n const headerCount = toolButtonPosition == \"right\" ? 1 : 2;\r\n const headerRout = searchForms.length % 4;\r\n if (headerRout == 0) {\r\n colSpan = 18;\r\n } else if (headerRout == 1) {\r\n colSpan = 12;\r\n } else if (headerRout == 2) {\r\n colSpan = 6;\r\n }\r\n return (\r\n <Row gutter={24} wrap>\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-header\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-header-padding\")]:\r\n searchForms.length > 3,\r\n },\r\n this.props.className\r\n )}\r\n >\r\n <div className={cls(getLess(styles, \"nsc-headersearch-form\"))}>\r\n <Form\r\n ref={this.searchRef}\r\n labelCol={{}}\r\n wrapperCol={{}}\r\n style={{ width: \"100%\", display: \"flex\", flexWrap: \"wrap\" }}\r\n onFinish={this.onSearch.bind(this)}\r\n // labelAlign={'left'}\r\n {...searchFormProps}\r\n >\r\n {searchForms.map((item: any, index: any) => {\r\n const itemProps = item.props || {};\r\n let display = \"block\";\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (index > headerCount && !this.state.expand) {\r\n display = \"none\";\r\n //return\r\n }\r\n let allowChars = item?.props?.allowChars || false;\r\n let props = { ...itemProps };\r\n let searchDisabled =\r\n props.searchDisabled === true ? true : false;\r\n delete props.searchDisabled;\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n } else {\r\n delete props.allowChars;\r\n }\r\n let defaultItem = {\r\n label: item.label,\r\n name: item.name,\r\n allowChars: allowChars,\r\n rules: item.rules,\r\n componentName: item.type ? item.type : \"Input\",\r\n } as any;\r\n if (item.labelCol) {\r\n defaultItem = { ...defaultItem, labelCol: item.labelCol };\r\n delete item.labelCol;\r\n }\r\n if (item.wrapperCol) {\r\n defaultItem = { ...defaultItem, wrapperCol: item.wrapperCol };\r\n delete item.wrapperCol;\r\n }\r\n let placeholder: any =\r\n item.type == \"Select\"\r\n ? `请选择${item.label}`\r\n : `请输入${item.label}`;\r\n if (item.type == \"RangePicker\") {\r\n placeholder = [\"开始时间\", \"结束时间\"];\r\n if (item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n }\r\n delete props.rangerFields;\r\n return (\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: 6 }}\r\n key={index}\r\n style={{ paddingRight: 0, display: display }}\r\n >\r\n <Form.Item {...defaultItem}>\r\n {getNode(item.type, {\r\n placeholder: placeholder,\r\n style: { width: \"100%\" },\r\n ...props,\r\n disabled: searchDisabled,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n })}\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: toolButtonPosition == \"right\" ? 12 : 6 }}\r\n style={{ paddingRight: 0 }}\r\n offset={\r\n (this.state.expand || searchForms.length < 4) &&\r\n searchForms.length > 1\r\n ? colSpan\r\n : 0\r\n }\r\n >\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-search-buttons\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-search-buttons-flex\")]:\r\n searchForms.length > 1,\r\n }\r\n )}\r\n style={{ marginTop: 0 }}\r\n >\r\n <div\r\n className={cls({\r\n [getLess(styles, \"nsc-headersearch-button-reverse\")]:\r\n this.props.buttonRevers == true,\r\n })}\r\n >\r\n <Button\r\n type={\"primary\"}\r\n // onClick={this.onSearch.bind(this)}\r\n icon={<SearchOutlined />}\r\n style={{ marginLeft: 0 }}\r\n htmlType=\"submit\"\r\n >\r\n 查询\r\n </Button>\r\n {searchForms.length > 1 && (\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.resetSearch.bind(this)}\r\n icon={<ReloadOutlined />}\r\n >\r\n 重置\r\n </Button>\r\n )}\r\n </div>\r\n {searchForms.length > 3 && (\r\n <a\r\n className={getLess(\r\n styles,\r\n \"nsc-headersearch-expand-style\"\r\n )}\r\n onClick={() => {\r\n const { expand } = this.state;\r\n this.setState({\r\n expand: !expand,\r\n });\r\n }}\r\n >\r\n {this.state.expand ? \"收起\" : \"展开\"}\r\n {this.state.expand ? <UpOutlined /> : <DownOutlined />}\r\n </a>\r\n )}\r\n </div>\r\n </Col>\r\n </Form>\r\n </div>\r\n </div>\r\n </Row>\r\n );\r\n }\r\n}\r\nexport default HeaderSearch;\r\n"],"mappings":"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"}
@@ -16,6 +16,7 @@ import React from "react";
16
16
  import NscRequest from "nsc-request";
17
17
  import cls from "classnames";
18
18
  import { defaultComFuncs, defaultUtil, ModalForm, renderSelfColumnButton, renderSelfToolButton, ModalManager } from "../SettingUtil/utils";
19
+ import { deepMerge } from "../../utils";
19
20
  const getPageData = params => {
20
21
  return NscRequest.get("/jquick-setting/setting/table/info/", {
21
22
  params,
@@ -380,6 +381,8 @@ export default class SettingTable extends React.Component {
380
381
  codeFormButtons.push(children);
381
382
  }
382
383
  }
384
+ let newTableProps = deepMerge(_objectSpread({}, tableProps), _objectSpread({}, settingTableProps));
385
+ let newTreeProps = deepMerge(_objectSpread({}, treeProps), _objectSpread({}, settingTreeProps));
383
386
  return /*#__PURE__*/React.createElement("div", {
384
387
  className: cls("nsc-framework-tablepage", className)
385
388
  }, pageLoading ? /*#__PURE__*/React.createElement("div", {
@@ -390,8 +393,8 @@ export default class SettingTable extends React.Component {
390
393
  }, /*#__PURE__*/React.createElement(Spin, {
391
394
  spinning: pageLoading
392
395
  })) : /*#__PURE__*/React.createElement(BasePage, _extends({}, pageProps, {
393
- treeProps: _objectSpread(_objectSpread({}, treeProps), settingTreeProps),
394
- tableProps: _objectSpread(_objectSpread({}, tableProps), settingTableProps),
396
+ treeProps: _objectSpread({}, newTreeProps),
397
+ tableProps: _objectSpread({}, newTableProps),
395
398
  formProps: {},
396
399
  Utils: _objectSpread({}, defaultUtil),
397
400
  ref: this.pageRef,
@@ -407,10 +410,10 @@ export default class SettingTable extends React.Component {
407
410
  },
408
411
  funcs: _objectSpread(_objectSpread({}, deaultFuncs), funcs),
409
412
  initData: this.initData,
410
- formPageProps: {
413
+ formPageProps: _objectSpread({
411
414
  formType: formPageProps.formType || "modal",
412
415
  props: formPageProps === null || formPageProps === void 0 ? void 0 : formPageProps.props
413
- },
416
+ }, formPageProps === null || formPageProps === void 0 ? void 0 : formPageProps.otherProps),
414
417
  tableCode: this.props.tableCode
415
418
  }, otherProps), renderSelfToolButton({
416
419
  selfButton: selfToolButton,
@@ -438,4 +441,4 @@ export default class SettingTable extends React.Component {
438
441
  }));
439
442
  }
440
443
  }
441
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJjbHMiLCJkZWZhdWx0Q29tRnVuY3MiLCJkZWZhdWx0VXRpbCIsIk1vZGFsRm9ybSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJyZW5kZXJTZWxmVG9vbEJ1dHRvbiIsIk1vZGFsTWFuYWdlciIsImdldFBhZ2VEYXRhIiwicGFyYW1zIiwiZ2V0IiwieHNzRmlsdGVyIiwiYXV0b1ByZWZpeCIsInNldEZpZWxkRGlzYWJsZWQiLCJkYXRhIiwia2V5IiwiZGlzYWJsZWQiLCJjb2x1bW5zIiwibmV3Q29sdW1ucyIsIm1hcCIsIml0ZW0iLCJvYmoiLCJfb2JqZWN0U3ByZWFkIiwiZGF0YUluZGV4IiwiaW5kZXhPZiIsInByb3BzIiwicHVzaCIsInNldEZpZWxkVmlzaWJsZSIsInZpc2libGUiLCJlZGl0b3IiLCJzZXRGaWVsZFByb3BzRGF0YSIsInByb3BzRGF0YSIsImRlZmF1bHRTdGF0ZVZhbHVlIiwicGFnZVByb3BzIiwidHJlZVByb3BzIiwic3RvcmUiLCJ1cmwiLCJhdXRvTG9hZCIsInRhYmxlUHJvcHMiLCJzZWxmVG9vbEJ1dHRvbiIsInNlbGZDb2x1bW5CdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsImZ1bmMiLCJGdW5jdGlvbiIsInBhZ2VSZWYiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJyZWdpc3RlciIsIm1vZGFsUmVmIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ0YWJsZUNvZGUiLCJzZXRTdGF0ZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiY29kZSIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsInNlbGZCdXR0b24iLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJmdW5jcyIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJsb2FkaW5nIiwib3BlbkZvcm1Nb2RhbCIsInNob3dNb2RhbCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwicGFnZVR5cGUiLCJfaXRlbSRwcm9wcyIsIl9pdGVtJHByb3BzMiIsIl9pdGVtJHByb3BzMyIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0Iiwic3Bpbm5pbmciLCJfZXh0ZW5kcyIsInJlZiIsIm9uSGlkZUZvcm0iLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQxMCIsImhpZGVGb3JtIiwiaW5pdERhdGEiLCJmb3JtVHlwZSIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL1NldHRpbmdUYWJsZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgQmFzZVBhZ2UsIHsgTlNDQmFzZUJhZ2VQcm9wcyB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQge1xyXG4gIGRlZmF1bHRDb21GdW5jcyxcclxuICBkZWZhdWx0VXRpbCxcclxuICBNb2RhbEZvcm0sXHJcbiAgcmVuZGVyU2VsZkNvbHVtbkJ1dHRvbixcclxuICByZW5kZXJTZWxmVG9vbEJ1dHRvbixcclxuICBNb2RhbE1hbmFnZXIsXHJcbiAgT3BlblBhcm1zLFxyXG59IGZyb20gXCIuLi9TZXR0aW5nVXRpbC91dGlsc1wiO1xyXG5cclxuY29uc3QgZ2V0UGFnZURhdGEgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuICByZXR1cm4gTnNjUmVxdWVzdC5nZXQoYC9qcXVpY2stc2V0dGluZy9zZXR0aW5nL3RhYmxlL2luZm8vYCwge1xyXG4gICAgcGFyYW1zLFxyXG4gICAgeHNzRmlsdGVyOiBmYWxzZSxcclxuICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgfSk7XHJcbn07XHJcblxyXG4vL+iuvue9ruihqOWNleWtl+auteWPquivu1xyXG5jb25zdCBzZXRGaWVsZERpc2FibGVkID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgZGlzYWJsZWQpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuLy/orr7nva7ooajljZXlrZfmrrXpmpDol49cclxuY29uc3Qgc2V0RmllbGRWaXNpYmxlID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgdmlzaWJsZSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgb2JqLmVkaXRvciA9IHZpc2libGU7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuXHJcbmNvbnN0IHNldEZpZWxkUHJvcHNEYXRhID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgcHJvcHNEYXRhKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRhdGEgPSBwcm9wc0RhdGE7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbmludGVyZmFjZSBJUHJvcHMge1xyXG4gIHRhYmxlQ29kZTogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBmdW5jcz86IGFueTtcclxuICBwdWJsaXNoZWQ/OiBib29sZWFuO1xyXG4gIGluc3RhbmNlUmVmPzogYW55O1xyXG4gIHRhYlBhcmFtcz86IGFueTtcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgYmFzZVByb3BzPzogTlNDQmFzZUJhZ2VQcm9wcztcclxuICBhdXRvTG9hZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRTdGF0ZVZhbHVlID0ge1xyXG4gIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gIHRyZWVQcm9wczogeyBzdG9yZTogeyB1cmw6IFwiXCIsIGF1dG9Mb2FkOiBmYWxzZSB9IH0gYXMgYW55LFxyXG4gIHRhYmxlUHJvcHM6IHt9IGFzIGFueSxcclxuICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZDb2x1bW5CdXR0b246IFtdIGFzIGFueSxcclxuICBzZWxmRm9ybUJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gIGRlZmF1bHRDb2x1bW5zOiBbXSBhcyBhbnksXHJcbiAgb3RoZXJQcm9wczoge30gYXMgYW55LFxyXG4gIGJ1dHRvbkxvYWRpbmc6IHt9IGFzIGFueSxcclxuICBmb3JtUGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0ge1xyXG4gICAgLi4uZGVmYXVsdFN0YXRlVmFsdWUsXHJcbiAgfTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBtb2RhbFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICBNb2RhbE1hbmFnZXIucmVnaXN0ZXIodGhpcy5tb2RhbFJlZik7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PElQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PGFueT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy50YWJsZUNvZGUgIT0gdGhpcy5wcm9wcy50YWJsZUNvZGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0U3RhdGVWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREYXRhID0gKHJlczogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG90aGVyUHJvcHMsIHBhZ2VQcm9wcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChcclxuICAgICAgcGFnZVByb3BzLnNob3dTZWFyY2ggIT09IGZhbHNlICYmXHJcbiAgICAgIG90aGVyUHJvcHMuZGVmYXVsdFNlYXJjaCAmJlxyXG4gICAgICBvdGhlclByb3BzLnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCJcclxuICAgICkge1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIG90aGVyUHJvcHMuZGVmYXVsdFNlYXJjaCk7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGZ1bmMoZGVmYXVsdFV0aWwsIHsgcGFnZVJlZjogdGhpcy5wYWdlUmVmIH0pO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVMb2FkKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgIH0sIDUwKTsgLy/nm7TmjqXorr7nva7vvIxwYWdlUmVm5rKh57uR5a6a77yM5pqC5pe26YCa6L+H5bu26L+f5Ye95pWw6L+b6KGM6Kej5YazXHJcbiAgICB9XHJcbiAgfTtcclxuICAvLyDojrflj5bmlbDmja5cclxuICBnZXREYXRhKCkge1xyXG4gICAgLy8g5LuOcHJvcHPkuK3ojrflj5Z0YWJsZUNvZGXjgIFwdWJsaXNoZWTjgIFtZW51Q29kZVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHRhYmxlQ29kZSwgcHVibGlzaGVkID0gdHJ1ZSwgbWVudUNvZGUsIHRhYlBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIC8vIOWmguaenHRhYmxlQ29kZeWtmOWcqFxyXG4gICAgaWYgKHRhYmxlQ29kZSkge1xyXG4gICAgICAvLyDlrprkuYnlj4LmlbBcclxuICAgICAgbGV0IHBhcmFtcyA9IHsgY29kZTogdGFibGVDb2RlIH0gYXMgYW55O1xyXG4gICAgICAvLyDlpoLmnpxwdWJsaXNoZWTkuLp0cnVlXHJcbiAgICAgIGlmIChwdWJsaXNoZWQpIHtcclxuICAgICAgICAvLyDorr7nva7lj4LmlbBpc1B1Ymxpc2hlZOS4ujFcclxuICAgICAgICBwYXJhbXMuaXNQdWJsaXNoZWQgPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiwg+eUqGdldFBhZ2VEYXRh5pa55rOV6I635Y+W5pWw5o2uXHJcbiAgICAgIGdldFBhZ2VEYXRhKHsgLi4ucGFyYW1zIH0pLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgbGV0IHRhYmxlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50YWJsZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgdHJlZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudHJlZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgcGFnZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEucGFnZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgb3RoZXJfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLm90aGVyUGFyYW1zIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgZm9ybV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEuZm9ybVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBpZiAocGFnZV9wcm9wcy5wZXJtaXNzaW9uPy5oYXMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24ubWVudUNvZGUgPSBtZW51Q29kZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwdWJsaXNoZWQgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIChwYWdlX3Byb3BzLnNob3dTZWFyY2ggIT09IGZhbHNlICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHMuZGVmYXVsdFNlYXJjaCAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzPy50YWJsZURhdGFSZXNvdXJjZSA9PSBcInVybFwiKSB8fFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmF1dG9Mb2FkID09PSBmYWxzZVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRhYmxlX3Byb3BzLnN0b3JlLmF1dG9Mb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGFiUGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0gZGVmYXVsdFV0aWwgfHwge307XHJcbiAgICAgICAgICAgIGxldCBwYXJhbUZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCB0YWJQYXJhbXMpO1xyXG4gICAgICAgICAgICBsZXQgY29udmVyVGFiUGFyYW1zID0gcGFyYW1GdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGxldCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gcGFnZV9wcm9wcztcclxuICAgICAgICAgICAgICBsZXQgbmV3UmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG5ld1JlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0UGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCByZXF1ZXN0UGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwgLi4ub3RoZXIgfSA9IGNvbnZlclBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld1BhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcywgLi4uZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLm90aGVyLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSBuZXdQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0geyAuLi5uZXdSZXF1ZXN0UGFyYW1zIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4ucGFnZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRyZWVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udHJlZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRhYmxlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRhYmxlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wczogeyAuLi5vdGhlcl9wcm9wcyB9LFxyXG4gICAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEuY29sdW1uQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgc2VsZlRvb2xCdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEudG9vbEJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zOiBwYWdlX3Byb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgZm9ybVBhZ2VQcm9wczogZm9ybV9wcm9wcyxcclxuICAgICAgICAgICAgICBzZWxmRm9ybUJ1dHRvbjogZm9ybV9wcm9wcz8uc2VsZkJ1dHRvbiB8fCBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gb25TZWFyY2goKSB7fVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZChwYXJhbXMsIHJlcXVlc3RDb25maWcpO1xyXG4gIH1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVSZWxvYWQocGFyYW1zLCBhdXRvTG9hZCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgZnVuY3MgPSB7fSxcclxuICAgICAgYmFzZVByb3BzID0ge30gYXMgTlNDQmFzZUJhZ2VQcm9wcyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBwYWdlUHJvcHMsXHJcbiAgICAgIHRyZWVQcm9wcyxcclxuICAgICAgdGFibGVQcm9wcyxcclxuICAgICAgc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgIHNlbGZDb2x1bW5CdXR0b24sXHJcbiAgICAgIHBhZ2VMb2FkaW5nLFxyXG4gICAgICBkZWZhdWx0Q29sdW1ucyxcclxuICAgICAgYnV0dG9uTG9hZGluZyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyZWVQcm9wczogc2V0dGluZ1RyZWVQcm9wcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzOiBzZXR0aW5nVGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gYmFzZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IGRlYXVsdEZ1bmNzID0ge1xyXG4gICAgICBzZXRGaWVsZERpc2FibGVkOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZERpc2FibGVkKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRpc2FibGVkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgc2V0RmllbGRWaXNpYmxlOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFZpc2libGUocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFByb3BzRGF0YTogKGtleSwgZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFByb3BzRGF0YShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkYXRhKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gaGlzdG9yeTogKHBhcmFtcywgdHlwZSkgPT4ge1xyXG4gICAgICAvLyAgIGp1bXBQYWdlKHBhcmFtcywgdHlwZSk7XHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHNldEJ1dHRvbkxvYWRpbmc6IChjb2RlLCBsb2FkaW5nKSA9PiB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogeyAuLi5idXR0b25Mb2FkaW5nLCBbY29kZV06IGxvYWRpbmcgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLi4uZGVmYXVsdENvbUZ1bmNzLFxyXG4gICAgICBvcGVuRm9ybU1vZGFsOiAocGFyYW1zOk9wZW5QYXJtcykgPT4ge1xyXG4gICAgICAgIE1vZGFsTWFuYWdlci5zaG93TW9kYWwocGFyYW1zKTtcclxuICAgICAgfSxcclxuICAgICAgLy8gZ2V0Q3VycmVudFByb2plY3Q6ICgpID0+IHtcclxuICAgICAgLy8gICByZXR1cm4gZ2V0UHJvamVjdCgpO1xyXG4gICAgICAvLyB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29kZVNlbGZCdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZWNvbHVtbkJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2RlRm9ybUJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKFwibnNjLWZyYW1ld29yay10YWJsZXBhZ2VcIiwgY2xhc3NOYW1lKX0+XHJcbiAgICAgICAge3BhZ2VMb2FkaW5nID8gKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIgfX0+XHJcbiAgICAgICAgICAgIDxTcGluIHNwaW5uaW5nPXtwYWdlTG9hZGluZ30+PC9TcGluPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDxCYXNlUGFnZVxyXG4gICAgICAgICAgICB7Li4ucGFnZVByb3BzfVxyXG4gICAgICAgICAgICB0cmVlUHJvcHM9e3sgLi4udHJlZVByb3BzLCAuLi5zZXR0aW5nVHJlZVByb3BzIH19XHJcbiAgICAgICAgICAgIHRhYmxlUHJvcHM9e3sgLi4udGFibGVQcm9wcywgLi4uc2V0dGluZ1RhYmxlUHJvcHMgfX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXt7fX1cclxuICAgICAgICAgICAgVXRpbHM9e3sgLi4uZGVmYXVsdFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdGFibGVDb2RlPXt0aGlzLnByb3BzLnRhYmxlQ29kZX1cclxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJmb3JtQnV0dG9uXCIsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZUZvcm1CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8TW9kYWxGb3JtIHJlZj17dGhpcy5tb2RhbFJlZn0gLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsUUFBUSxNQUE0QixhQUFhO0FBQ3hELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFFbEMsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLFVBQVUsTUFBTSxhQUFhO0FBQ3BDLE9B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
444
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJjbHMiLCJkZWZhdWx0Q29tRnVuY3MiLCJkZWZhdWx0VXRpbCIsIk1vZGFsRm9ybSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJyZW5kZXJTZWxmVG9vbEJ1dHRvbiIsIk1vZGFsTWFuYWdlciIsImRlZXBNZXJnZSIsImdldFBhZ2VEYXRhIiwicGFyYW1zIiwiZ2V0IiwieHNzRmlsdGVyIiwiYXV0b1ByZWZpeCIsInNldEZpZWxkRGlzYWJsZWQiLCJkYXRhIiwia2V5IiwiZGlzYWJsZWQiLCJjb2x1bW5zIiwibmV3Q29sdW1ucyIsIm1hcCIsIml0ZW0iLCJvYmoiLCJfb2JqZWN0U3ByZWFkIiwiZGF0YUluZGV4IiwiaW5kZXhPZiIsInByb3BzIiwicHVzaCIsInNldEZpZWxkVmlzaWJsZSIsInZpc2libGUiLCJlZGl0b3IiLCJzZXRGaWVsZFByb3BzRGF0YSIsInByb3BzRGF0YSIsImRlZmF1bHRTdGF0ZVZhbHVlIiwicGFnZVByb3BzIiwidHJlZVByb3BzIiwic3RvcmUiLCJ1cmwiLCJhdXRvTG9hZCIsInRhYmxlUHJvcHMiLCJzZWxmVG9vbEJ1dHRvbiIsInNlbGZDb2x1bW5CdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsImZ1bmMiLCJGdW5jdGlvbiIsInBhZ2VSZWYiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJyZWdpc3RlciIsIm1vZGFsUmVmIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ0YWJsZUNvZGUiLCJzZXRTdGF0ZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiY29kZSIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsInNlbGZCdXR0b24iLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJmdW5jcyIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJsb2FkaW5nIiwib3BlbkZvcm1Nb2RhbCIsInNob3dNb2RhbCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwicGFnZVR5cGUiLCJfaXRlbSRwcm9wcyIsIl9pdGVtJHByb3BzMiIsIl9pdGVtJHByb3BzMyIsIm5ld1RhYmxlUHJvcHMiLCJuZXdUcmVlUHJvcHMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsInNwaW5uaW5nIiwiX2V4dGVuZHMiLCJyZWYiLCJvbkhpZGVGb3JtIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MTAiLCJoaWRlRm9ybSIsImluaXREYXRhIiwiZm9ybVR5cGUiLCJ0eXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nVGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEJhc2VQYWdlLCB7IE5TQ0Jhc2VCYWdlUHJvcHMgfSBmcm9tIFwiLi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uLy4uL2Jhc2Uvc3BpblwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHtcclxuICBkZWZhdWx0Q29tRnVuY3MsXHJcbiAgZGVmYXVsdFV0aWwsXHJcbiAgTW9kYWxGb3JtLFxyXG4gIHJlbmRlclNlbGZDb2x1bW5CdXR0b24sXHJcbiAgcmVuZGVyU2VsZlRvb2xCdXR0b24sXHJcbiAgTW9kYWxNYW5hZ2VyLFxyXG4gIE9wZW5QYXJtcyxcclxufSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcblxyXG5jb25zdCBnZXRQYWdlRGF0YSA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldChgL2pxdWljay1zZXR0aW5nL3NldHRpbmcvdGFibGUvaW5mby9gLCB7XHJcbiAgICBwYXJhbXMsXHJcbiAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbi8v6K6+572u6KGo5Y2V5a2X5q615Y+q6K+7XHJcbmNvbnN0IHNldEZpZWxkRGlzYWJsZWQgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG4vL+iuvue9ruihqOWNleWtl+autemakOiXj1xyXG5jb25zdCBzZXRGaWVsZFZpc2libGUgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCB2aXNpYmxlKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBvYmouZWRpdG9yID0gdmlzaWJsZTtcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5cclxuY29uc3Qgc2V0RmllbGRQcm9wc0RhdGEgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBwcm9wc0RhdGEpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5KSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGF0YSA9IHByb3BzRGF0YTtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgdGFibGVDb2RlOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHB1Ymxpc2hlZD86IGJvb2xlYW47XHJcbiAgaW5zdGFuY2VSZWY/OiBhbnk7XHJcbiAgdGFiUGFyYW1zPzogYW55O1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBiYXNlUHJvcHM/OiBOU0NCYXNlQmFnZVByb3BzO1xyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgZGVmYXVsdFN0YXRlVmFsdWUgPSB7XHJcbiAgcGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbiAgdHJlZVByb3BzOiB7IHN0b3JlOiB7IHVybDogXCJcIiwgYXV0b0xvYWQ6IGZhbHNlIH0gfSBhcyBhbnksXHJcbiAgdGFibGVQcm9wczoge30gYXMgYW55LFxyXG4gIHNlbGZUb29sQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgc2VsZkNvbHVtbkJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZGb3JtQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgZGVmYXVsdENvbHVtbnM6IFtdIGFzIGFueSxcclxuICBvdGhlclByb3BzOiB7fSBhcyBhbnksXHJcbiAgYnV0dG9uTG9hZGluZzoge30gYXMgYW55LFxyXG4gIGZvcm1QYWdlUHJvcHM6IHt9IGFzIGFueSxcclxufTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICAuLi5kZWZhdWx0U3RhdGVWYWx1ZSxcclxuICB9O1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIG1vZGFsUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICAgIE1vZGFsTWFuYWdlci5yZWdpc3Rlcih0aGlzLm1vZGFsUmVmKTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8SVByb3BzPixcclxuICAgIHByZXZTdGF0ZTogUmVhZG9ubHk8YW55PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAocHJldlByb3BzLnRhYmxlQ29kZSAhPSB0aGlzLnByb3BzLnRhYmxlQ29kZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRTdGF0ZVZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEgPSAocmVzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgb3RoZXJQcm9wcywgcGFnZVByb3BzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKFxyXG4gICAgICBwYWdlUHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgIG90aGVyUHJvcHMudGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gZnVuYyhkZWZhdWx0VXRpbCwgeyBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZUxvYWQoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgfSwgNTApOyAvL+ebtOaOpeiuvue9ru+8jHBhZ2VSZWbmsqHnu5HlrprvvIzmmoLml7bpgJrov4flu7bov5/lh73mlbDov5vooYzop6PlhrNcclxuICAgIH1cclxuICB9O1xyXG4gIC8vIOiOt+WPluaVsOaNrlxyXG4gIGdldERhdGEoKSB7XHJcbiAgICAvLyDku45wcm9wc+S4reiOt+WPlnRhYmxlQ29kZeOAgXB1Ymxpc2hlZOOAgW1lbnVDb2RlXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgdGFibGVDb2RlLCBwdWJsaXNoZWQgPSB0cnVlLCBtZW51Q29kZSwgdGFiUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy8g5aaC5p6cdGFibGVDb2Rl5a2Y5ZyoXHJcbiAgICBpZiAodGFibGVDb2RlKSB7XHJcbiAgICAgIC8vIOWumuS5ieWPguaVsFxyXG4gICAgICBsZXQgcGFyYW1zID0geyBjb2RlOiB0YWJsZUNvZGUgfSBhcyBhbnk7XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6LCD55SoZ2V0UGFnZURhdGHmlrnms5Xojrflj5bmlbDmja5cclxuICAgICAgZ2V0UGFnZURhdGEoeyAuLi5wYXJhbXMgfSkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsZXQgdGFibGVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRhYmxlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCB0cmVlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50cmVlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBwYWdlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5wYWdlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBvdGhlcl9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEub3RoZXJQYXJhbXMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBmb3JtX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5mb3JtUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnBlcm1pc3Npb24/LmhhcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbi5tZW51Q29kZSA9IG1lbnVDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHB1Ymxpc2hlZCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHBhZ2VfcHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgICAgICAgICBvdGhlcl9wcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHM/LnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCIpIHx8XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYXV0b0xvYWQgPT09IGZhbHNlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGFibGVfcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0YWJQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSBkZWZhdWx0VXRpbCB8fCB7fTtcclxuICAgICAgICAgICAgbGV0IHBhcmFtRnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHRhYlBhcmFtcyk7XHJcbiAgICAgICAgICAgIGxldCBjb252ZXJUYWJQYXJhbXMgPSBwYXJhbUZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICBpZiAocGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSBwYWdlX3Byb3BzO1xyXG4gICAgICAgICAgICAgIGxldCBuZXdSZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gbmV3UmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RQYXJhbXNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHJlcXVlc3RQYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhLCAuLi5vdGhlciB9ID0gY29udmVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ub3RoZXIsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IG5ld1BhcmFtcztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7IC4uLm5ld1JlcXVlc3RQYXJhbXMgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5wYWdlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdHJlZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50cmVlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdGFibGVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udGFibGVfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvdGhlclByb3BzOiB7IC4uLm90aGVyX3Byb3BzIH0sXHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS5jb2x1bW5CdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgICBzZWxmVG9vbEJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS50b29sQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgZGVmYXVsdENvbHVtbnM6IHBhZ2VfcHJvcHMuY29sdW1ucyxcclxuICAgICAgICAgICAgICBmb3JtUGFnZVByb3BzOiBmb3JtX3Byb3BzLFxyXG4gICAgICAgICAgICAgIHNlbGZGb3JtQnV0dG9uOiBmb3JtX3Byb3BzPy5zZWxmQnV0dG9uIHx8IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuacquaJvuWIsOmFjee9ruS/oeaBr++8gVwiKTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBvblNlYXJjaCgpIHt9XHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVMb2FkKHBhcmFtcywgcmVxdWVzdENvbmZpZyk7XHJcbiAgfVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZVJlbG9hZChwYXJhbXMsIGF1dG9Mb2FkKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICBmdW5jcyA9IHt9LFxyXG4gICAgICBiYXNlUHJvcHMgPSB7fSBhcyBOU0NCYXNlQmFnZVByb3BzLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHBhZ2VQcm9wcyxcclxuICAgICAgdHJlZVByb3BzLFxyXG4gICAgICB0YWJsZVByb3BzLFxyXG4gICAgICBzZWxmVG9vbEJ1dHRvbixcclxuICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgcGFnZUxvYWRpbmcsXHJcbiAgICAgIGRlZmF1bHRDb2x1bW5zLFxyXG4gICAgICBidXR0b25Mb2FkaW5nID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2VsZkZvcm1CdXR0b24sXHJcbiAgICB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgdHJlZVByb3BzOiBzZXR0aW5nVHJlZVByb3BzID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHM6IHNldHRpbmdUYWJsZVByb3BzID0ge30sXHJcbiAgICAgIC4uLm90aGVyUHJvcHNcclxuICAgIH0gPSBiYXNlUHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3QgZGVhdWx0RnVuY3MgPSB7XHJcbiAgICAgIHNldEZpZWxkRGlzYWJsZWQ6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkRGlzYWJsZWQocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFZpc2libGU6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkVmlzaWJsZShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkaXNhYmxlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkUHJvcHNEYXRhOiAoa2V5LCBkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkUHJvcHNEYXRhKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICAvLyBoaXN0b3J5OiAocGFyYW1zLCB0eXBlKSA9PiB7XHJcbiAgICAgIC8vICAganVtcFBhZ2UocGFyYW1zLCB0eXBlKTtcclxuICAgICAgLy8gfSxcclxuICAgICAgc2V0QnV0dG9uTG9hZGluZzogKGNvZGUsIGxvYWRpbmcpID0+IHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBidXR0b25Mb2FkaW5nOiB7IC4uLmJ1dHRvbkxvYWRpbmcsIFtjb2RlXTogbG9hZGluZyB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICAuLi5kZWZhdWx0Q29tRnVuY3MsXHJcbiAgICAgIG9wZW5Gb3JtTW9kYWw6IChwYXJhbXM6IE9wZW5QYXJtcykgPT4ge1xyXG4gICAgICAgIE1vZGFsTWFuYWdlci5zaG93TW9kYWwocGFyYW1zKTtcclxuICAgICAgfSxcclxuICAgICAgLy8gZ2V0Q3VycmVudFByb2plY3Q6ICgpID0+IHtcclxuICAgICAgLy8gICByZXR1cm4gZ2V0UHJvamVjdCgpO1xyXG4gICAgICAvLyB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29kZVNlbGZCdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZWNvbHVtbkJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2RlRm9ybUJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3VGFibGVQcm9wcyA9IGRlZXBNZXJnZSh7IC4uLnRhYmxlUHJvcHMgfSwgeyAuLi5zZXR0aW5nVGFibGVQcm9wcyB9KTtcclxuICAgIGxldCBuZXdUcmVlUHJvcHMgPSBkZWVwTWVyZ2UoeyAuLi50cmVlUHJvcHMgfSwgeyAuLi5zZXR0aW5nVHJlZVByb3BzIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLm5ld1RyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLm5ld1RhYmxlUHJvcHMgfX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXt7fX1cclxuICAgICAgICAgICAgVXRpbHM9e3sgLi4uZGVmYXVsdFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgICAuLi5mb3JtUGFnZVByb3BzPy5vdGhlclByb3BzLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB0YWJsZUNvZGU9e3RoaXMucHJvcHMudGFibGVDb2RlfVxyXG4gICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3JlbmRlclNlbGZUb29sQnV0dG9uKHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9uOiBzZWxmVG9vbEJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgICAgbG9hZGluZzogdGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge2NvZGVTZWxmQnV0dG9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmQ29sdW1uQnV0dG9uKHtcclxuICAgICAgICAgICAgICBzZWxmQ29sdW1uQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZkZvcm1CdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgICB0eXBlOiBcImZvcm1CdXR0b25cIixcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlRm9ybUJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxNb2RhbEZvcm0gcmVmPXt0aGlzLm1vZGFsUmVmfSAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxRQUFRLE1BQTRCLGFBQWE7QUFDeEQsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUVsQyxPQUFPLGNBQWM7QUFDckIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsVUFBVSxNQUFNLGFBQWE7QUFDcEMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFFNUIsU0FDRUMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLFlBQVksUUFFUCxzQkFBc0I7QUFDN0IsU0FBU0MsU0FBUyxRQUFRLGFBQWE7QUFFdkMsTUFBTUMsV0FBVyxHQUFJQyxNQUFXLElBQUs7RUFDbkMsT0FBT1YsVUFBVSxDQUFDVyxHQUFHLHdDQUF3QztJQUMzREQsTUFBTTtJQUNORSxTQUFTLEVBQUUsS0FBSztJQUNoQkMsVUFBVSxFQUFFO0VBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFFRDtBQUNBLE1BQU1DLGdCQUFnQixHQUFHQSxDQUFDQyxJQUFnQixFQUFFQyxHQUFHLEVBQUVDLFFBQVEsS0FBSztFQUM1RCxNQUFNQyxPQUFPLEdBQUcsQ0FBQyxHQUFHSCxJQUFJLENBQUM7RUFDekIsSUFBSUksVUFBVSxHQUFHLEVBQVM7RUFDMUJELE9BQU8sQ0FBQ0UsR0FBRyxDQUFFQyxJQUFJLElBQUs7SUFDcEIsSUFBSUMsR0FBRyxHQUFBQyxhQUFBLEtBQVFGLElBQUksQ0FBRTtJQUNyQixJQUFJQSxJQUFJLENBQUNHLFNBQVMsSUFBSVIsR0FBRyxJQUFJQSxHQUFHLENBQUNTLE9BQU8sQ0FBQ0osSUFBSSxDQUFDRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUM3RCxJQUFJRSxLQUFLLEdBQUdKLEdBQUcs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