nsc-react-component 3.2.20 → 3.3.0

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.
@@ -361,4 +361,4 @@ class NscForm extends PureComponent {
361
361
  }
362
362
  }
363
363
  export default NscForm;
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsInV0aWxzIiwiTnNjRm9ybSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJmb3JtVmlzaWJsZSIsImZvcm1Nb2RhbFByb3BzIiwiZm9ybURyYXdlclByb3BzIiwiaXNDaGFuZ2UiLCJleHBhbmQiLCJzY29wZSIsInBhcmFtcyIsImJlZm9yZVJlbmRlciIsImNhbGxiYWNrQmVmb3JlQ2xvc2UiLCJjYWxsYmFjayIsImFmdGVyUmVuZGVyIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwibW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwic2hvd01vZGVsIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiLCJnZXRGaWVsZEVycm9yIiwibmFtZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50IiwiZ2V0RmllbGRJbnN0YW5jZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJnZXRGaWVsZHNFcnJvciIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0RmllbGRWYWx1ZSIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZFZhbGlkYXRpbmciLCJyZXNldEZpZWxkcyIsInNjcm9sbFRvRmllbGQiLCJvcHRpb25zIiwic2V0RmllbGRzIiwiZmlsZHMiLCJzZXRGaWVsZHNWYWx1ZSIsInZhbHVlcyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJzdWJtaXQiLCJvblN1Ym1pdCIsInVybCIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJ0b0xvd2VyQ2FzZSIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsIl9tZXNzYWdlIiwic3VjY2VzcyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwidmFsaWRhdGVGaWVsZHMiLCJoaWRlIiwiZSIsIl90aGlzIiwib25DYW5jZWwiLCJvbkNsb3NlIiwiaGlkZUZvcm0iLCJyZXNldFZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2V0U3RhdGUiLCJzaG93Rm9ybSIsInZhbHVlIiwib3B0aW9uIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsImNsb25lRWxlbWVudCIsIml0ZW0iLCJpbmRleCIsImtleSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwiQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsIm9uVmFsdWVzQ2hhbmdlIiwidmFsIiwiYWxsVmFsIiwicmVuZGVyUGFuZWwiLCJuZXdDaGlsZHJlbiIsImxvYWRpbmciLCJjaGFuZ2VWYWxpZCIsInN0YXRlIiwibGF5b3V0IiwibGFiZWxDb2wiLCJzcGFuIiwid3JhcHBlckNvbCIsIm5ld01vZGFsUHJvcHMiLCJuZXdEcmF3ZXJQcm9wcyIsImRlZmF1bHRwcm9wcyIsIm1hc2tDbG9zYWJsZSIsImZvcm1FeHBhbmQiLCJ2YWxpZCIsImNoYW5nZSIsInR5cGUiLCJtb2RhbHByb3BzIiwiYmluZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsIm9wZW4iLCJzcGlubmluZyIsIl9Gb3JtIiwicmVmIiwidmFsaWRhdGVUcmlnZ2VyIiwiZHJhZ2dhYmxlIiwicHJlc2VydmUiLCJGcmFnbWVudCIsInJlbmRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOuihqOWNlee7hOS7tlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDQtMDkgMDk6MTg6MzRcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE1OjIzOjU0XHJcbiAqL1xyXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBGb3JtLCBGb3JtUHJvcHMsIERyYXdlciwgRHJhd2VyUHJvcHMsIG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCB7IEZvcm1JbnN0YW5jZSB9IGZyb20gXCJhbnRkL2xpYi9mb3JtXCI7XHJcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IE5zY01vZGFsUG9ycHMgfSBmcm9tIFwiLi4vbW9kYWxcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uL3NwaW5cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Qcm9wcyBleHRlbmRzIEZvcm1Qcm9wcyB7XHJcbiAgc2hvd01vZGVsPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwiYXV0b1wiO1xyXG4gIG1vZGFsUHJvcHM/OiBOc2NNb2RhbFBvcnBzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHMgJiB7XHJcbiAgICBvbk9rPzogYW55O1xyXG4gICAgb2tCdXR0b25Qcm9wcz86IE9iamVjdDtcclxuICAgIGZvcm1FeHBhbmQ/OiBPYmplY3Q7XHJcbiAgfTtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZW5jcnlwdEZpZWxkcz86IEFycmF5PFN0cmluZz47XHJcbiAgY2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+aVsOaNruS/ruaUueWFs+mXreagoemqjFxyXG4gIGxvYWRpbmc/OiBib29sZWFuOyAvL+ihqOWNleWKoOi9veeKtuaAgVxyXG59XHJcblxyXG5jbGFzcyBOc2NGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJRm9ybVByb3BzPiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxGb3JtSW5zdGFuY2U+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICBmb3JtTW9kYWxQcm9wczoge30sXHJcbiAgICBmb3JtRHJhd2VyUHJvcHM6IHt9LFxyXG4gICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgZXhwYW5kOiBmYWxzZSxcclxuICB9O1xyXG4gIG9wdGlvbjogYW55ID0ge1xyXG4gICAgLy/lm57osIPkvZznlKjln59cclxuICAgIHNjb3BlOiB0aGlzLFxyXG4gICAgLy9vcGVu5Lyg6YCS6L+H5p2l55qE6aG16Z2i5Y+C5pWwXHJcbiAgICBwYXJhbXM6IHt9LFxyXG4gICAgLy/mmL7npLrkuYvliY3lm57osINcclxuICAgIGJlZm9yZVJlbmRlcjogbnVsbCxcclxuICAgIC8v5YWz6Zet5LmL5YmN5Zue6LCD77yM5aaC5p6ccmV0dXJuIGZhbHNl77yM5LiU56qX5Y+j5LiN5YWz6ZetXHJcbiAgICBjYWxsYmFja0JlZm9yZUNsb3NlOiBudWxsLFxyXG4gICAgLy/lhbPpl63lkI7lm57osIPvvIzlvILmraXmk43kvZxcclxuICAgIGNhbGxiYWNrOiBudWxsLFxyXG4gICAgLy/mmL7npLrkuYvlkI7lm57osINcclxuICAgIGFmdGVyUmVuZGVyOiBudWxsLFxyXG4gIH07XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcclxuICAgIGNvbnN0IHsgbW9kYWxQcm9wcywgZHJhd2VyUHJvcHMsIHNob3dNb2RlbCB9ID0gbmV4dFByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtTW9kYWxQcm9wcywgZm9ybURyYXdlclByb3BzIH0gPSBwcmV2U3RhdGU7XHJcbiAgICBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtTW9kYWxQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KG1vZGFsUHJvcHMpXHJcbiAgICAgIGlmICghT2JqZWN0LmlzKGZvcm1Nb2RhbFByb3BzLCBtb2RhbFByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogbW9kYWxQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobW9kYWxQcm9wcy52aXNpYmxlICE9PSBudWxsICYmIG1vZGFsUHJvcHMudmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IG1vZGFsUHJvcHMudmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiKSB7XHJcbiAgICAgIC8vIEpTT04uc3RyaW5naWZ5KGZvcm1EcmF3ZXJQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGRyYXdlclByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtRHJhd2VyUHJvcHMsIGRyYXdlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogZHJhd2VyUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGRyYXdlclByb3BzLnZpc2libGUgIT09IG51bGwgJiYgZHJhd2VyUHJvcHMudmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IGRyYXdlclByb3BzLnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOmUmeivr+S/oeaBr1xyXG4gIGdldEZpZWxkRXJyb3IobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEVycm9yKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlrp7kvotcclxuICBnZXRGaWVsZEluc3RhbmNlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRJbnN0YW5jZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE6ZSZ6K+v5L+h5oGv77yM6L+U5Zue5Li65pWw57uE5b2i5byPXHJcbiAgZ2V0RmllbGRzRXJyb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE5YC877yM5Lya5oyJ54Wn5a+55bqU57uT5p6E6L+U5ZueXHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE5YC8XHJcbiAgZ2V0RmllbGRWYWx1ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRWYWx1ZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5LiA57uE5a2X5q615piv5ZCm6KKr55So5oi35pON5L2c6L+HXHJcbiAgaXNGaWVsZHNUb3VjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LmlzRmllbGRzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6Xlr7nlupTlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkVG91Y2hlZChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuaXNGaWVsZFRvdWNoZWQobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuato+WcqOagoemqjFxyXG4gIGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5pc0ZpZWxkVmFsaWRhdGluZyhuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6YeN572u5LiA57uE5a2X5q615YiwXHJcbiAgcmVzZXRGaWVsZHMoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5zY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzKGZpbGRzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5zZXRGaWVsZHMoZmlsZHMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzVmFsdWUodmFsdWVzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnN1Ym1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogYW55LFxyXG4gICAgY2FsbGJhY2s/OiAocmVzPzogYW55KSA9PiB2b2lkLFxyXG4gICAgbXNnPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgeyB1cmw6IHByb3BzVXJsLCBlbmNyeXB0RmllbGRzOiBlbmNyeXB0UHJvcHBzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXVybCAmJiAhcHJvcHNVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwi5rKh5pyJ5LiK5Lyg55qEdXJsIVwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWV0aG9kID0gXCJwb3N0XCIgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgcmVxdWVzdFVybCA9IHVybCA/IHVybCA6IHByb3BzVXJsO1xyXG4gICAgbGV0IHJlcXVlc3REYXRhID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRQcm9wcHM7XHJcbiAgICBsZXQgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IG1ldGhvZCwgZGF0YTogcmVxdWVzdERhdGEgfSBhcyB7IGRhdGE6IGFueSB9O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlbmNyeXB0RmllbGRzLCAuLi5wYXJhbXMgfSA9IG9wdGlvbnM7XHJcbiAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMgfTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBkZWxldGUgcmVxdWVzdFBhcmFtLmRhdGE7XHJcbiAgICAgICAgaWYgKG1ldGhvZC50b0xvd2VyQ2FzZSgpID09IFwiZ2V0XCIpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIHBhcmFtczogZGF0YSB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBkYXRhOiBkYXRhIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmNyeXB0RmllbGRzKSB7XHJcbiAgICAgICAgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0RmllbGRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgIC4uLnJlcXVlc3RQYXJhbSxcclxuICAgICAgZW5jcnlwdEZpZWxkczogcmVxdWVzdEVuY3J5cHQsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICBpZiAobXNnKSB7XHJcbiAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuaPkOS6pOaIkOWKn1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmj5DkuqTlpLHotKVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmllbGRzKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC52YWxpZGF0ZUZpZWxkcyhuYW1lKTtcclxuICB9XHJcblxyXG4gIGhpZGUoZSkge1xyXG4gICAgY29uc3QgeyBzaG93TW9kZWwsIG1vZGFsUHJvcHMgPSB7fSwgZHJhd2VyUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCB7IG9uQ2FuY2VsIH0gPSBtb2RhbFByb3BzO1xyXG4gICAgY29uc3QgeyBvbkNsb3NlIH0gPSBkcmF3ZXJQcm9wcztcclxuICAgIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIiAmJiBvbkNsb3NlKSB7XHJcbiAgICAgIG9uQ2xvc2UoZSk7XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIgJiYgb25DYW5jZWwpIHtcclxuICAgICAgb25DYW5jZWwoZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfdGhpcy5oaWRlRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZUZvcm0ocmVzZXRWYWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIG9wdGlvbjogYW55ID0ge30pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHsgYWZ0ZXJSZW5kZXIgfSA9IG9wdGlvbjtcclxuICAgICAgICB1dGlscy5jYWxsYmFjayhhZnRlclJlbmRlciwgdGhpcyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9uZUVsZW1lbnQoaXRlbSwgaW5kZXggPSAwKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtO1xyXG4gICAgbGV0IHByb3BzID0ge30gYXMgeyBrZXk6IG51bWJlcjsgY2hpbGRyZW46IGFueSB9O1xyXG4gICAgcHJvcHMua2V5ID0gaW5kZXg7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaXRlbS5wcm9wcyAmJiBpdGVtLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgICBpdGVtLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNsb25lRWxlbWVudChjaGlsZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IHRoaXMuY2xvbmVFbGVtZW50KGl0ZW0ucHJvcHMuY2hpbGRyZW4sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHByb3BzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKSB7XHJcbiAgICBjb25zdCB7IG9uVmFsdWVzQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGlzQ2hhbmdlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBvblZhbHVlc0NoYW5nZSAmJiBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCk7XHJcbiAgfVxyXG4gIHJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIGRyYXdlclByb3BzID0ge30sXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgbG9hZGluZyA9IGZhbHNlLFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwpIHtcclxuICAgICAgbGV0IG5ld01vZGFsUHJvcHMgPSBvbWl0KG1vZGFsUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBuZXdNb2RhbFByb3BzID0geyAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBsZXQgZGVmYXVsdHByb3BzID0ge1xyXG4gICAgICAgIG1hc2tDbG9zYWJsZTogIXRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgZm9ybUV4cGFuZDoge1xyXG4gICAgICAgICAgZXhwYW5kOiB0cnVlLFxyXG4gICAgICAgICAgdmFsaWQ6IGNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRwcm9wcyxcclxuICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgIC4uLm5ld0RyYXdlclByb3BzLFxyXG4gICAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICAvLyBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWwgb3Blbj17Zm9ybVZpc2libGV9IHsuLi5tb2RhbHByb3BzfT5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHByZXNlcnZlPXtmYWxzZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBTSxVQUFVO0FBRTVCLFNBQVNDLE9BQU8sUUFBUSx1QkFBdUI7QUFDL0MsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFFMUIsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQWU3QyxNQUFNQyxPQUFPLFNBQVNOLGFBQWEsQ0FBYTtFQXVCOUNPLFdBQVdBLENBQUNDLEtBQUssRUFBRTtJQUNqQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDQyxlQUFBLCtCQXZCTFYsS0FBSyxDQUFDVyxTQUFTLENBQWUsQ0FBQztJQUFBRCxlQUFBLGdCQUNqQztNQUNORSxXQUFXLEVBQUUsS0FBSztNQUNsQkMsY0FBYyxFQUFFLENBQUMsQ0FBQztNQUNs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
364
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsInV0aWxzIiwiTnNjRm9ybSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJmb3JtVmlzaWJsZSIsImZvcm1Nb2RhbFByb3BzIiwiZm9ybURyYXdlclByb3BzIiwiaXNDaGFuZ2UiLCJleHBhbmQiLCJzY29wZSIsInBhcmFtcyIsImJlZm9yZVJlbmRlciIsImNhbGxiYWNrQmVmb3JlQ2xvc2UiLCJjYWxsYmFjayIsImFmdGVyUmVuZGVyIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwibW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwic2hvd01vZGVsIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiLCJnZXRGaWVsZEVycm9yIiwibmFtZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50IiwiZ2V0RmllbGRJbnN0YW5jZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJnZXRGaWVsZHNFcnJvciIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0RmllbGRWYWx1ZSIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZFZhbGlkYXRpbmciLCJyZXNldEZpZWxkcyIsInNjcm9sbFRvRmllbGQiLCJvcHRpb25zIiwic2V0RmllbGRzIiwiZmlsZHMiLCJzZXRGaWVsZHNWYWx1ZSIsInZhbHVlcyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJzdWJtaXQiLCJvblN1Ym1pdCIsInVybCIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJ0b0xvd2VyQ2FzZSIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsIl9tZXNzYWdlIiwic3VjY2VzcyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwidmFsaWRhdGVGaWVsZHMiLCJoaWRlIiwiZSIsIl90aGlzIiwib25DYW5jZWwiLCJvbkNsb3NlIiwiaGlkZUZvcm0iLCJyZXNldFZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2V0U3RhdGUiLCJzaG93Rm9ybSIsInZhbHVlIiwib3B0aW9uIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsImNsb25lRWxlbWVudCIsIml0ZW0iLCJpbmRleCIsImtleSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwiQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsIm9uVmFsdWVzQ2hhbmdlIiwidmFsIiwiYWxsVmFsIiwicmVuZGVyUGFuZWwiLCJuZXdDaGlsZHJlbiIsImxvYWRpbmciLCJjaGFuZ2VWYWxpZCIsInN0YXRlIiwibGF5b3V0IiwibGFiZWxDb2wiLCJzcGFuIiwid3JhcHBlckNvbCIsIm5ld01vZGFsUHJvcHMiLCJuZXdEcmF3ZXJQcm9wcyIsImRlZmF1bHRwcm9wcyIsIm1hc2tDbG9zYWJsZSIsImZvcm1FeHBhbmQiLCJ2YWxpZCIsImNoYW5nZSIsInR5cGUiLCJtb2RhbHByb3BzIiwiYmluZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsIm9wZW4iLCJzcGlubmluZyIsIl9Gb3JtIiwicmVmIiwidmFsaWRhdGVUcmlnZ2VyIiwiZHJhZ2dhYmxlIiwicHJlc2VydmUiLCJGcmFnbWVudCIsInJlbmRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOuihqOWNlee7hOS7tlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDQtMDkgMDk6MTg6MzRcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE1OjIzOjU0XHJcbiAqL1xyXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBGb3JtLCBGb3JtUHJvcHMsIERyYXdlciwgRHJhd2VyUHJvcHMsIG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCB7IEZvcm1JbnN0YW5jZSB9IGZyb20gXCJhbnRkL2xpYi9mb3JtXCI7XHJcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IE5zY01vZGFsUG9ycHMgfSBmcm9tIFwiLi4vbW9kYWxcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uL3NwaW5cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Qcm9wcyBleHRlbmRzIEZvcm1Qcm9wcyB7XHJcbiAgc2hvd01vZGVsPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwiYXV0b1wiO1xyXG4gIG1vZGFsUHJvcHM/OiBOc2NNb2RhbFBvcnBzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHMgJiB7XHJcbiAgICBvbk9rPzogYW55O1xyXG4gICAgb2tCdXR0b25Qcm9wcz86IE9iamVjdDtcclxuICAgIGZvcm1FeHBhbmQ/OiBPYmplY3Q7XHJcbiAgfTtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZW5jcnlwdEZpZWxkcz86IEFycmF5PFN0cmluZz47XHJcbiAgY2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+aVsOaNruS/ruaUueWFs+mXreagoemqjFxyXG4gIGxvYWRpbmc/OiBib29sZWFuOyAvL+ihqOWNleWKoOi9veeKtuaAgVxyXG4gIFxyXG59XHJcblxyXG5jbGFzcyBOc2NGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJRm9ybVByb3BzPiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxGb3JtSW5zdGFuY2U+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICBmb3JtTW9kYWxQcm9wczoge30sXHJcbiAgICBmb3JtRHJhd2VyUHJvcHM6IHt9LFxyXG4gICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgZXhwYW5kOiBmYWxzZSxcclxuICB9O1xyXG4gIG9wdGlvbjogYW55ID0ge1xyXG4gICAgLy/lm57osIPkvZznlKjln59cclxuICAgIHNjb3BlOiB0aGlzLFxyXG4gICAgLy9vcGVu5Lyg6YCS6L+H5p2l55qE6aG16Z2i5Y+C5pWwXHJcbiAgICBwYXJhbXM6IHt9LFxyXG4gICAgLy/mmL7npLrkuYvliY3lm57osINcclxuICAgIGJlZm9yZVJlbmRlcjogbnVsbCxcclxuICAgIC8v5YWz6Zet5LmL5YmN5Zue6LCD77yM5aaC5p6ccmV0dXJuIGZhbHNl77yM5LiU56qX5Y+j5LiN5YWz6ZetXHJcbiAgICBjYWxsYmFja0JlZm9yZUNsb3NlOiBudWxsLFxyXG4gICAgLy/lhbPpl63lkI7lm57osIPvvIzlvILmraXmk43kvZxcclxuICAgIGNhbGxiYWNrOiBudWxsLFxyXG4gICAgLy/mmL7npLrkuYvlkI7lm57osINcclxuICAgIGFmdGVyUmVuZGVyOiBudWxsLFxyXG4gIH07XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcclxuICAgIGNvbnN0IHsgbW9kYWxQcm9wcywgZHJhd2VyUHJvcHMsIHNob3dNb2RlbCB9ID0gbmV4dFByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtTW9kYWxQcm9wcywgZm9ybURyYXdlclByb3BzIH0gPSBwcmV2U3RhdGU7XHJcbiAgICBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtTW9kYWxQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KG1vZGFsUHJvcHMpXHJcbiAgICAgIGlmICghT2JqZWN0LmlzKGZvcm1Nb2RhbFByb3BzLCBtb2RhbFByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogbW9kYWxQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobW9kYWxQcm9wcy52aXNpYmxlICE9PSBudWxsICYmIG1vZGFsUHJvcHMudmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IG1vZGFsUHJvcHMudmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiKSB7XHJcbiAgICAgIC8vIEpTT04uc3RyaW5naWZ5KGZvcm1EcmF3ZXJQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGRyYXdlclByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtRHJhd2VyUHJvcHMsIGRyYXdlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogZHJhd2VyUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGRyYXdlclByb3BzLnZpc2libGUgIT09IG51bGwgJiYgZHJhd2VyUHJvcHMudmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IGRyYXdlclByb3BzLnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOmUmeivr+S/oeaBr1xyXG4gIGdldEZpZWxkRXJyb3IobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEVycm9yKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlrp7kvotcclxuICBnZXRGaWVsZEluc3RhbmNlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRJbnN0YW5jZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE6ZSZ6K+v5L+h5oGv77yM6L+U5Zue5Li65pWw57uE5b2i5byPXHJcbiAgZ2V0RmllbGRzRXJyb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE5YC877yM5Lya5oyJ54Wn5a+55bqU57uT5p6E6L+U5ZueXHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE5YC8XHJcbiAgZ2V0RmllbGRWYWx1ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRWYWx1ZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5LiA57uE5a2X5q615piv5ZCm6KKr55So5oi35pON5L2c6L+HXHJcbiAgaXNGaWVsZHNUb3VjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LmlzRmllbGRzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6Xlr7nlupTlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkVG91Y2hlZChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuaXNGaWVsZFRvdWNoZWQobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuato+WcqOagoemqjFxyXG4gIGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5pc0ZpZWxkVmFsaWRhdGluZyhuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6YeN572u5LiA57uE5a2X5q615YiwXHJcbiAgcmVzZXRGaWVsZHMoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5zY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzKGZpbGRzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5zZXRGaWVsZHMoZmlsZHMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzVmFsdWUodmFsdWVzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnN1Ym1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogYW55LFxyXG4gICAgY2FsbGJhY2s/OiAocmVzPzogYW55KSA9PiB2b2lkLFxyXG4gICAgbXNnPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgeyB1cmw6IHByb3BzVXJsLCBlbmNyeXB0RmllbGRzOiBlbmNyeXB0UHJvcHBzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXVybCAmJiAhcHJvcHNVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwi5rKh5pyJ5LiK5Lyg55qEdXJsIVwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWV0aG9kID0gXCJwb3N0XCIgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgcmVxdWVzdFVybCA9IHVybCA/IHVybCA6IHByb3BzVXJsO1xyXG4gICAgbGV0IHJlcXVlc3REYXRhID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRQcm9wcHM7XHJcbiAgICBsZXQgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IG1ldGhvZCwgZGF0YTogcmVxdWVzdERhdGEgfSBhcyB7IGRhdGE6IGFueSB9O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlbmNyeXB0RmllbGRzLCAuLi5wYXJhbXMgfSA9IG9wdGlvbnM7XHJcbiAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMgfTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBkZWxldGUgcmVxdWVzdFBhcmFtLmRhdGE7XHJcbiAgICAgICAgaWYgKG1ldGhvZC50b0xvd2VyQ2FzZSgpID09IFwiZ2V0XCIpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIHBhcmFtczogZGF0YSB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBkYXRhOiBkYXRhIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmNyeXB0RmllbGRzKSB7XHJcbiAgICAgICAgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0RmllbGRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgIC4uLnJlcXVlc3RQYXJhbSxcclxuICAgICAgZW5jcnlwdEZpZWxkczogcmVxdWVzdEVuY3J5cHQsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICBpZiAobXNnKSB7XHJcbiAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuaPkOS6pOaIkOWKn1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmj5DkuqTlpLHotKVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmllbGRzKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC52YWxpZGF0ZUZpZWxkcyhuYW1lKTtcclxuICB9XHJcblxyXG4gIGhpZGUoZSkge1xyXG4gICAgY29uc3QgeyBzaG93TW9kZWwsIG1vZGFsUHJvcHMgPSB7fSwgZHJhd2VyUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCB7IG9uQ2FuY2VsIH0gPSBtb2RhbFByb3BzO1xyXG4gICAgY29uc3QgeyBvbkNsb3NlIH0gPSBkcmF3ZXJQcm9wcztcclxuICAgIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIiAmJiBvbkNsb3NlKSB7XHJcbiAgICAgIG9uQ2xvc2UoZSk7XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIgJiYgb25DYW5jZWwpIHtcclxuICAgICAgb25DYW5jZWwoZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfdGhpcy5oaWRlRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZUZvcm0ocmVzZXRWYWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIG9wdGlvbjogYW55ID0ge30pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHsgYWZ0ZXJSZW5kZXIgfSA9IG9wdGlvbjtcclxuICAgICAgICB1dGlscy5jYWxsYmFjayhhZnRlclJlbmRlciwgdGhpcyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9uZUVsZW1lbnQoaXRlbSwgaW5kZXggPSAwKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtO1xyXG4gICAgbGV0IHByb3BzID0ge30gYXMgeyBrZXk6IG51bWJlcjsgY2hpbGRyZW46IGFueSB9O1xyXG4gICAgcHJvcHMua2V5ID0gaW5kZXg7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaXRlbS5wcm9wcyAmJiBpdGVtLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgICBpdGVtLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNsb25lRWxlbWVudChjaGlsZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IHRoaXMuY2xvbmVFbGVtZW50KGl0ZW0ucHJvcHMuY2hpbGRyZW4sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHByb3BzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKSB7XHJcbiAgICBjb25zdCB7IG9uVmFsdWVzQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGlzQ2hhbmdlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBvblZhbHVlc0NoYW5nZSAmJiBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCk7XHJcbiAgfVxyXG4gIHJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIGRyYXdlclByb3BzID0ge30sXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgbG9hZGluZyA9IGZhbHNlLFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwpIHtcclxuICAgICAgbGV0IG5ld01vZGFsUHJvcHMgPSBvbWl0KG1vZGFsUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBuZXdNb2RhbFByb3BzID0geyAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBsZXQgZGVmYXVsdHByb3BzID0ge1xyXG4gICAgICAgIG1hc2tDbG9zYWJsZTogIXRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgZm9ybUV4cGFuZDoge1xyXG4gICAgICAgICAgZXhwYW5kOiB0cnVlLFxyXG4gICAgICAgICAgdmFsaWQ6IGNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRwcm9wcyxcclxuICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgIC4uLm5ld0RyYXdlclByb3BzLFxyXG4gICAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICAvLyBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWwgb3Blbj17Zm9ybVZpc2libGV9IHsuLi5tb2RhbHByb3BzfT5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHByZXNlcnZlPXtmYWxzZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBTSxVQUFVO0FBRTVCLFNBQVNDLE9BQU8sUUFBUSx1QkFBdUI7QUFDL0MsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFFMUIsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQWdCN0MsTUFBTUMsT0FBTyxTQUFTTixhQUFhLENBQWE7RUF1QjlDTyxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQ0MsZUFBQSwrQkF2QkxWLEtBQUssQ0FBQ1csU0FBUyxDQUFlLENBQUM7SUFBQUQsZUFBQSxnQkFDakM7TUFDTkUsV0FBVyxFQUFFLEtBQUs7TUFDbEJDLGNBQWMsRUFBRSxDQUFDLENB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
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["React","PureComponent","Modal","request","omit","Spin","utils","NscForm","constructor","props","_defineProperty","createRef","formVisible","formModalProps","formDrawerProps","isChange","expand","scope","params","beforeRender","callbackBeforeClose","callback","afterRender","getDerivedStateFromProps","nextProps","prevState","modalProps","drawerProps","showModel","Object","is","newState","visible","undefined","getFieldError","name","_this$formRef$current","formRef","current","getFieldInstance","_this$formRef$current2","getFieldsError","getFieldsValue","getFieldValue","isFieldsTouched","isFieldTouched","isFieldValidating","resetFields","scrollToField","options","setFields","filds","setFieldsValue","values","_this$formRef$current3","submit","onSubmit","url","msg","propsUrl","encryptFields","encryptPropps","Error","method","requestUrl","requestData","requestEncrypt","requestParam","data","_objectWithoutProperties","_excluded","_objectSpread","toLowerCase","autoPrefix","then","res","code","_message","success","error","catch","console","log","validateFields","hide","e","_this","onCancel","onClose","hideForm","resetValue","arguments","length","setState","showForm","value","option","_this$formRef$current4","cloneElement","item","index","key","children","Array","isArray","Children","map","child","onValuesChange","val","allVal","renderPanel","newChildren","loading","changeValid","state","layout","labelCol","span","wrapperCol","newModalProps","newDrawerProps","defaultprops","maskClosable","formExpand","valid","change","type","modalprops","bind","createElement","_extends","open","spinning","_Form","ref","validateTrigger","draggable","preserve","Fragment","render"],"sources":["../../../src/components/base/form/Form.tsx"],"sourcesContent":["/*\r\n * @Descripttion:表单组件\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-04-09 09:18:34\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 15:23:54\r\n */\r\nimport React, { PureComponent } from \"react\";\r\nimport { Form, FormProps, Drawer, DrawerProps, message } from \"antd\";\r\nimport Modal from \"../modal\";\r\nimport { FormInstance } from \"antd/lib/form\";\r\nimport { request } from \"@bj-nsc/msn/lib/utils\";\r\nimport omit from \"omit.js\";\r\nimport { NscModalPorps } from \"../modal\";\r\nimport Spin from \"../spin\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nexport interface IFormProps extends FormProps {\r\n showModel?: \"modal\" | \"drawer\" | \"auto\";\r\n modalProps?: NscModalPorps;\r\n drawerProps?: DrawerProps & {\r\n onOk?: any;\r\n okButtonProps?: Object;\r\n formExpand?: Object;\r\n };\r\n url?: string;\r\n encryptFields?: Array<String>;\r\n changeValid?: boolean; //数据修改关闭校验\r\n loading?: boolean; //表单加载状态\r\n}\r\n\r\nclass NscForm extends PureComponent<IFormProps> {\r\n formRef = React.createRef<FormInstance>();\r\n state = {\r\n formVisible: false,\r\n formModalProps: {},\r\n formDrawerProps: {},\r\n isChange: false,\r\n expand: false,\r\n };\r\n option: any = {\r\n //回调作用域\r\n scope: this,\r\n //open传递过来的页面参数\r\n params: {},\r\n //显示之前回调\r\n beforeRender: null,\r\n //关闭之前回调,如果return false,且窗口不关闭\r\n callbackBeforeClose: null,\r\n //关闭后回调,异步操作\r\n callback: null,\r\n //显示之后回调\r\n afterRender: null,\r\n };\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const { modalProps, drawerProps, showModel } = nextProps;\r\n const { formModalProps, formDrawerProps } = prevState;\r\n if (showModel == \"modal\") {\r\n // JSON.stringify(formModalProps) !== JSON.stringify(modalProps)\r\n if (!Object.is(formModalProps, modalProps)) {\r\n let newState = {\r\n formDrawerProps: modalProps,\r\n } as any;\r\n if (modalProps.visible !== null && modalProps.visible !== undefined) {\r\n newState.formVisible = modalProps.visible;\r\n }\r\n return newState;\r\n }\r\n } else if (showModel == \"drawer\") {\r\n // JSON.stringify(formDrawerProps) !== JSON.stringify(drawerProps)\r\n if (!Object.is(formDrawerProps, drawerProps)) {\r\n let newState = {\r\n formDrawerProps: drawerProps,\r\n } as any;\r\n if (drawerProps.visible !== null && drawerProps.visible !== undefined) {\r\n newState.formVisible = drawerProps.visible;\r\n }\r\n return newState;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //获取对应字段名的错误信息\r\n getFieldError(name) {\r\n return this.formRef.current?.getFieldError(name);\r\n }\r\n\r\n //获取对应字段实例\r\n getFieldInstance(name) {\r\n return this.formRef.current?.getFieldInstance(name);\r\n }\r\n\r\n //获取一组字段名对应的错误信息,返回为数组形式\r\n getFieldsError() {\r\n return this.formRef.current.getFieldsError();\r\n }\r\n\r\n //获取一组字段名对应的值,会按照对应结构返回\r\n getFieldsValue() {\r\n return this.formRef.current.getFieldsValue();\r\n }\r\n\r\n //获取对应字段名的值\r\n getFieldValue(name) {\r\n return this.formRef.current.getFieldValue(name);\r\n }\r\n\r\n //检查一组字段是否被用户操作过\r\n isFieldsTouched() {\r\n return this.formRef.current.isFieldsTouched();\r\n }\r\n\r\n //检查对应字段是否被用户操作过\r\n isFieldTouched(name) {\r\n return this.formRef.current.isFieldTouched(name);\r\n }\r\n\r\n //检查一组字段是否正在校验\r\n isFieldValidating(name) {\r\n return this.formRef.current.isFieldValidating(name);\r\n }\r\n\r\n //重置一组字段到\r\n resetFields() {\r\n this.formRef.current.resetFields();\r\n }\r\n\r\n scrollToField(name, options) {\r\n this.formRef.current.scrollToField(name, options);\r\n }\r\n\r\n setFields(filds) {\r\n this.formRef.current.setFields(filds);\r\n }\r\n\r\n setFieldsValue(values) {\r\n this.formRef.current?.setFieldsValue(values);\r\n }\r\n\r\n submit() {\r\n this.formRef.current.submit();\r\n }\r\n\r\n onSubmit(\r\n url?: string,\r\n options?: any,\r\n callback?: (res?: any) => void,\r\n msg?: boolean\r\n ) {\r\n const { url: propsUrl, encryptFields: encryptPropps = [] } = this.props;\r\n if (!url && !propsUrl) {\r\n throw new Error(\"没有上传的url!\");\r\n }\r\n const { method = \"post\" } = options;\r\n let requestUrl = url ? url : propsUrl;\r\n let requestData = this.formRef.current.getFieldsValue();\r\n let requestEncrypt = encryptPropps;\r\n let requestParam = { method: method, data: requestData } as { data: any };\r\n if (options) {\r\n const { data, encryptFields, ...params } = options;\r\n requestParam = { ...requestParam, ...params };\r\n if (data) {\r\n delete requestParam.data;\r\n if (method.toLowerCase() == \"get\") {\r\n requestParam = { ...requestParam, ...params, params: data };\r\n } else {\r\n requestParam = { ...requestParam, ...params, data: data };\r\n }\r\n }\r\n if (encryptFields) {\r\n requestEncrypt = encryptFields;\r\n }\r\n }\r\n\r\n request(requestUrl, {\r\n autoPrefix: true,\r\n ...requestParam,\r\n encryptFields: requestEncrypt,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (msg) {\r\n if (code === 200) {\r\n message.success(\"提交成功\");\r\n } else {\r\n message.error(\"提交失败\");\r\n }\r\n }\r\n callback && callback(res);\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n }\r\n\r\n validateFields(name) {\r\n return this.formRef.current.validateFields(name);\r\n }\r\n\r\n hide(e) {\r\n const { showModel, modalProps = {}, drawerProps = {} } = this.props;\r\n let _this = this;\r\n const { onCancel } = modalProps;\r\n const { onClose } = drawerProps;\r\n if (showModel == \"drawer\" && onClose) {\r\n onClose(e);\r\n } else if (showModel == \"modal\" && onCancel) {\r\n onCancel(e);\r\n } else {\r\n _this.hideForm();\r\n }\r\n }\r\n\r\n hideForm(resetValue = true) {\r\n this.setState(\r\n {\r\n formVisible: false,\r\n isChange: false,\r\n },\r\n () => {\r\n if (resetValue) {\r\n this.formRef.current.resetFields();\r\n }\r\n }\r\n );\r\n }\r\n\r\n showForm(value?: any, option: any = {}) {\r\n this.setState(\r\n {\r\n formVisible: true,\r\n isChange: false,\r\n },\r\n () => {\r\n this.formRef.current?.setFieldsValue(value);\r\n const { afterRender } = option;\r\n utils.callback(afterRender, this);\r\n }\r\n );\r\n }\r\n\r\n cloneElement(item, index = 0) {\r\n let _this = this;\r\n if (typeof item == \"string\") return item;\r\n let props = {} as { key: number; children: any };\r\n props.key = index;\r\n try {\r\n if (item.props && item.props.children) {\r\n if (Array.isArray(item.props.children)) {\r\n props.children = React.Children.map(\r\n item.props.children,\r\n function (child, index) {\r\n return _this.cloneElement(child, index);\r\n }\r\n );\r\n } else {\r\n props.children = this.cloneElement(item.props.children, 0);\r\n }\r\n }\r\n return React.cloneElement(item, props);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n onValuesChange(val, allVal) {\r\n const { onValuesChange } = this.props;\r\n this.setState({\r\n isChange: true,\r\n });\r\n onValuesChange && onValuesChange(val, allVal);\r\n }\r\n renderPanel(newChildren, props) {\r\n const {\r\n showModel,\r\n drawerProps = {},\r\n modalProps = {},\r\n loading = false,\r\n changeValid = true,\r\n } = this.props;\r\n const { formVisible } = this.state;\r\n const layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 20 },\r\n };\r\n if (showModel) {\r\n let newModalProps = omit(modalProps, [\"visible\"]);\r\n newModalProps = { ...newModalProps };\r\n let newDrawerProps = omit(drawerProps, [\"visible\"]);\r\n let defaultprops = {\r\n maskClosable: !this.state.isChange,\r\n formExpand: {\r\n expand: true,\r\n valid: changeValid,\r\n change: this.state.isChange,\r\n },\r\n type: showModel,\r\n } as any;\r\n let modalprops = { ...defaultprops };\r\n modalprops = {\r\n ...defaultprops,\r\n ...newModalProps,\r\n ...newDrawerProps,\r\n onCancel: this.hide.bind(this),\r\n // onClose: this.hide.bind(this),\r\n };\r\n return (\r\n <Modal open={formVisible} {...modalprops}>\r\n {loading ? (\r\n <Spin spinning={loading}>\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n draggable={true}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n </Spin>\r\n ) : (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n )}\r\n </Modal>\r\n );\r\n } else {\r\n return (\r\n <>\r\n {loading ? (\r\n <Spin spinning={loading}>\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n />\r\n </Spin>\r\n ) : (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n }\r\n render() {\r\n const props = omit(this.props, [\r\n \"form\",\r\n \"showModel\",\r\n \"modalProps\",\r\n \"drawerProps\",\r\n \"url\",\r\n \"encryptFields\",\r\n \"changeValid\",\r\n ]);\r\n\r\n return <>{this.renderPanel(props.children, props)}</>;\r\n }\r\n}\r\nexport default NscForm;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","names":["React","PureComponent","Modal","request","omit","Spin","utils","NscForm","constructor","props","_defineProperty","createRef","formVisible","formModalProps","formDrawerProps","isChange","expand","scope","params","beforeRender","callbackBeforeClose","callback","afterRender","getDerivedStateFromProps","nextProps","prevState","modalProps","drawerProps","showModel","Object","is","newState","visible","undefined","getFieldError","name","_this$formRef$current","formRef","current","getFieldInstance","_this$formRef$current2","getFieldsError","getFieldsValue","getFieldValue","isFieldsTouched","isFieldTouched","isFieldValidating","resetFields","scrollToField","options","setFields","filds","setFieldsValue","values","_this$formRef$current3","submit","onSubmit","url","msg","propsUrl","encryptFields","encryptPropps","Error","method","requestUrl","requestData","requestEncrypt","requestParam","data","_objectWithoutProperties","_excluded","_objectSpread","toLowerCase","autoPrefix","then","res","code","_message","success","error","catch","console","log","validateFields","hide","e","_this","onCancel","onClose","hideForm","resetValue","arguments","length","setState","showForm","value","option","_this$formRef$current4","cloneElement","item","index","key","children","Array","isArray","Children","map","child","onValuesChange","val","allVal","renderPanel","newChildren","loading","changeValid","state","layout","labelCol","span","wrapperCol","newModalProps","newDrawerProps","defaultprops","maskClosable","formExpand","valid","change","type","modalprops","bind","createElement","_extends","open","spinning","_Form","ref","validateTrigger","draggable","preserve","Fragment","render"],"sources":["../../../src/components/base/form/Form.tsx"],"sourcesContent":["/*\r\n * @Descripttion:表单组件\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-04-09 09:18:34\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 15:23:54\r\n */\r\nimport React, { PureComponent } from \"react\";\r\nimport { Form, FormProps, Drawer, DrawerProps, message } from \"antd\";\r\nimport Modal from \"../modal\";\r\nimport { FormInstance } from \"antd/lib/form\";\r\nimport { request } from \"@bj-nsc/msn/lib/utils\";\r\nimport omit from \"omit.js\";\r\nimport { NscModalPorps } from \"../modal\";\r\nimport Spin from \"../spin\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nexport interface IFormProps extends FormProps {\r\n showModel?: \"modal\" | \"drawer\" | \"auto\";\r\n modalProps?: NscModalPorps;\r\n drawerProps?: DrawerProps & {\r\n onOk?: any;\r\n okButtonProps?: Object;\r\n formExpand?: Object;\r\n };\r\n url?: string;\r\n encryptFields?: Array<String>;\r\n changeValid?: boolean; //数据修改关闭校验\r\n loading?: boolean; //表单加载状态\r\n \r\n}\r\n\r\nclass NscForm extends PureComponent<IFormProps> {\r\n formRef = React.createRef<FormInstance>();\r\n state = {\r\n formVisible: false,\r\n formModalProps: {},\r\n formDrawerProps: {},\r\n isChange: false,\r\n expand: false,\r\n };\r\n option: any = {\r\n //回调作用域\r\n scope: this,\r\n //open传递过来的页面参数\r\n params: {},\r\n //显示之前回调\r\n beforeRender: null,\r\n //关闭之前回调,如果return false,且窗口不关闭\r\n callbackBeforeClose: null,\r\n //关闭后回调,异步操作\r\n callback: null,\r\n //显示之后回调\r\n afterRender: null,\r\n };\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const { modalProps, drawerProps, showModel } = nextProps;\r\n const { formModalProps, formDrawerProps } = prevState;\r\n if (showModel == \"modal\") {\r\n // JSON.stringify(formModalProps) !== JSON.stringify(modalProps)\r\n if (!Object.is(formModalProps, modalProps)) {\r\n let newState = {\r\n formDrawerProps: modalProps,\r\n } as any;\r\n if (modalProps.visible !== null && modalProps.visible !== undefined) {\r\n newState.formVisible = modalProps.visible;\r\n }\r\n return newState;\r\n }\r\n } else if (showModel == \"drawer\") {\r\n // JSON.stringify(formDrawerProps) !== JSON.stringify(drawerProps)\r\n if (!Object.is(formDrawerProps, drawerProps)) {\r\n let newState = {\r\n formDrawerProps: drawerProps,\r\n } as any;\r\n if (drawerProps.visible !== null && drawerProps.visible !== undefined) {\r\n newState.formVisible = drawerProps.visible;\r\n }\r\n return newState;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //获取对应字段名的错误信息\r\n getFieldError(name) {\r\n return this.formRef.current?.getFieldError(name);\r\n }\r\n\r\n //获取对应字段实例\r\n getFieldInstance(name) {\r\n return this.formRef.current?.getFieldInstance(name);\r\n }\r\n\r\n //获取一组字段名对应的错误信息,返回为数组形式\r\n getFieldsError() {\r\n return this.formRef.current.getFieldsError();\r\n }\r\n\r\n //获取一组字段名对应的值,会按照对应结构返回\r\n getFieldsValue() {\r\n return this.formRef.current.getFieldsValue();\r\n }\r\n\r\n //获取对应字段名的值\r\n getFieldValue(name) {\r\n return this.formRef.current.getFieldValue(name);\r\n }\r\n\r\n //检查一组字段是否被用户操作过\r\n isFieldsTouched() {\r\n return this.formRef.current.isFieldsTouched();\r\n }\r\n\r\n //检查对应字段是否被用户操作过\r\n isFieldTouched(name) {\r\n return this.formRef.current.isFieldTouched(name);\r\n }\r\n\r\n //检查一组字段是否正在校验\r\n isFieldValidating(name) {\r\n return this.formRef.current.isFieldValidating(name);\r\n }\r\n\r\n //重置一组字段到\r\n resetFields() {\r\n this.formRef.current.resetFields();\r\n }\r\n\r\n scrollToField(name, options) {\r\n this.formRef.current.scrollToField(name, options);\r\n }\r\n\r\n setFields(filds) {\r\n this.formRef.current.setFields(filds);\r\n }\r\n\r\n setFieldsValue(values) {\r\n this.formRef.current?.setFieldsValue(values);\r\n }\r\n\r\n submit() {\r\n this.formRef.current.submit();\r\n }\r\n\r\n onSubmit(\r\n url?: string,\r\n options?: any,\r\n callback?: (res?: any) => void,\r\n msg?: boolean\r\n ) {\r\n const { url: propsUrl, encryptFields: encryptPropps = [] } = this.props;\r\n if (!url && !propsUrl) {\r\n throw new Error(\"没有上传的url!\");\r\n }\r\n const { method = \"post\" } = options;\r\n let requestUrl = url ? url : propsUrl;\r\n let requestData = this.formRef.current.getFieldsValue();\r\n let requestEncrypt = encryptPropps;\r\n let requestParam = { method: method, data: requestData } as { data: any };\r\n if (options) {\r\n const { data, encryptFields, ...params } = options;\r\n requestParam = { ...requestParam, ...params };\r\n if (data) {\r\n delete requestParam.data;\r\n if (method.toLowerCase() == \"get\") {\r\n requestParam = { ...requestParam, ...params, params: data };\r\n } else {\r\n requestParam = { ...requestParam, ...params, data: data };\r\n }\r\n }\r\n if (encryptFields) {\r\n requestEncrypt = encryptFields;\r\n }\r\n }\r\n\r\n request(requestUrl, {\r\n autoPrefix: true,\r\n ...requestParam,\r\n encryptFields: requestEncrypt,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (msg) {\r\n if (code === 200) {\r\n message.success(\"提交成功\");\r\n } else {\r\n message.error(\"提交失败\");\r\n }\r\n }\r\n callback && callback(res);\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n }\r\n\r\n validateFields(name) {\r\n return this.formRef.current.validateFields(name);\r\n }\r\n\r\n hide(e) {\r\n const { showModel, modalProps = {}, drawerProps = {} } = this.props;\r\n let _this = this;\r\n const { onCancel } = modalProps;\r\n const { onClose } = drawerProps;\r\n if (showModel == \"drawer\" && onClose) {\r\n onClose(e);\r\n } else if (showModel == \"modal\" && onCancel) {\r\n onCancel(e);\r\n } else {\r\n _this.hideForm();\r\n }\r\n }\r\n\r\n hideForm(resetValue = true) {\r\n this.setState(\r\n {\r\n formVisible: false,\r\n isChange: false,\r\n },\r\n () => {\r\n if (resetValue) {\r\n this.formRef.current.resetFields();\r\n }\r\n }\r\n );\r\n }\r\n\r\n showForm(value?: any, option: any = {}) {\r\n this.setState(\r\n {\r\n formVisible: true,\r\n isChange: false,\r\n },\r\n () => {\r\n this.formRef.current?.setFieldsValue(value);\r\n const { afterRender } = option;\r\n utils.callback(afterRender, this);\r\n }\r\n );\r\n }\r\n\r\n cloneElement(item, index = 0) {\r\n let _this = this;\r\n if (typeof item == \"string\") return item;\r\n let props = {} as { key: number; children: any };\r\n props.key = index;\r\n try {\r\n if (item.props && item.props.children) {\r\n if (Array.isArray(item.props.children)) {\r\n props.children = React.Children.map(\r\n item.props.children,\r\n function (child, index) {\r\n return _this.cloneElement(child, index);\r\n }\r\n );\r\n } else {\r\n props.children = this.cloneElement(item.props.children, 0);\r\n }\r\n }\r\n return React.cloneElement(item, props);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n onValuesChange(val, allVal) {\r\n const { onValuesChange } = this.props;\r\n this.setState({\r\n isChange: true,\r\n });\r\n onValuesChange && onValuesChange(val, allVal);\r\n }\r\n renderPanel(newChildren, props) {\r\n const {\r\n showModel,\r\n drawerProps = {},\r\n modalProps = {},\r\n loading = false,\r\n changeValid = true,\r\n } = this.props;\r\n const { formVisible } = this.state;\r\n const layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 20 },\r\n };\r\n if (showModel) {\r\n let newModalProps = omit(modalProps, [\"visible\"]);\r\n newModalProps = { ...newModalProps };\r\n let newDrawerProps = omit(drawerProps, [\"visible\"]);\r\n let defaultprops = {\r\n maskClosable: !this.state.isChange,\r\n formExpand: {\r\n expand: true,\r\n valid: changeValid,\r\n change: this.state.isChange,\r\n },\r\n type: showModel,\r\n } as any;\r\n let modalprops = { ...defaultprops };\r\n modalprops = {\r\n ...defaultprops,\r\n ...newModalProps,\r\n ...newDrawerProps,\r\n onCancel: this.hide.bind(this),\r\n // onClose: this.hide.bind(this),\r\n };\r\n return (\r\n <Modal open={formVisible} {...modalprops}>\r\n {loading ? (\r\n <Spin spinning={loading}>\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n draggable={true}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n </Spin>\r\n ) : (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n )}\r\n </Modal>\r\n );\r\n } else {\r\n return (\r\n <>\r\n {loading ? (\r\n <Spin spinning={loading}>\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n />\r\n </Spin>\r\n ) : (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n }\r\n render() {\r\n const props = omit(this.props, [\r\n \"form\",\r\n \"showModel\",\r\n \"modalProps\",\r\n \"drawerProps\",\r\n \"url\",\r\n \"encryptFields\",\r\n \"changeValid\",\r\n ]);\r\n\r\n return <>{this.renderPanel(props.children, props)}</>;\r\n }\r\n}\r\nexport default NscForm;\r\n"],"mappings":"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"}
@@ -253,7 +253,7 @@ const withCustomUpload = Component => {
253
253
  } = this.props;
254
254
  const names = file.name.split(".");
255
255
  const suffix = names[names.length - 1];
256
- if (allowFileSuffix.indexOf(suffix) > -1) {
256
+ if (allowFileSuffix.indexOf(suffix) > -1 || allowFileSuffix.indexOf(suffix.toLowerCase()) > -1 || allowFileSuffix.indexOf(suffix.toUperrcase()) > -1) {
257
257
  return true;
258
258
  }
259
259
  return false;
@@ -464,4 +464,4 @@ const NscUpload = withCustomUpload(_Upload);
464
464
  const NscUploadDragger = withCustomUpload(_Upload.Dragger);
465
465
  NscUpload.Dragger = NscUploadDragger;
466
466
  export default NscUpload;
467
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJjYW5jbGVVcGxvYWQiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsInVwbG9hZGluZ0tleSIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInVwbG9hZEtleUNhbGxiYWNrIiwia2V5Iiwic3RhdGUiLCJuZXdMaXN0IiwibWFwIiwiaXRlbSIsIm5hbWUiLCJmaWxlSWQiLCJ1aWQiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsInNldFN0YXRlIiwicmVxdWVzdENvbmZpZyIsInVwbG9hZEluZ1NpemUiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwibGlzdFR5cGUiLCJvbkVycm9yIiwidXBsb2FkSW5nTGlzdCIsInN0YXR1cyIsInVybCIsImUiLCJjb21wb25lbnREaWRNb3VudCIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJpIiwibGVuZ3RoIiwidGVtcCIsImZpbGVOYW1lIiwidHlwZSIsInNpemUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJpbmRleE9mIiwic3BsaWNlIiwidXBsb2FkU2l6ZSIsIm5hbWVzIiwic3BsaXQiLCJzdWZmaXgiLCJfcmVmIiwibmV3RmlsZSIsImZpbGVzIiwiaW5kZXgiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwicHJlZml4Iiwib25EZWxldGUiLCJyZW5kZXIiLCJmaWxlQ2FyZCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvblByZXZpZXciLCJzdHlsZSIsImN1cnNvciIsIm9uRG93bmxvYWQiLCJvblJlbW92ZSIsIndpZHRoIiwiRnJhZ21lbnQiLCJfZXh0ZW5kcyIsIk5zY1VwbG9hZCIsIl9VcGxvYWQiLCJOc2NVcGxvYWREcmFnZ2VyIiwiRHJhZ2dlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBGaWxlSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ZpbGVJY29uXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbiAgRG93bmxvYWRPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuY29uc3QgeyB1cGxvYWQsIGRvd25sb2FkLCBwcmV2aWV3RG9jdW1lbnQsIHByZXZpZXdJbWFnZSxjYW5jbGVVcGxvYWQgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIG5ld1ZlcnNpb24/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCB3aXRoQ3VzdG9tVXBsb2FkID0gKENvbXBvbmVudCkgPT4ge1xyXG4gIC8vIOi/lOWbnuS4gOS4quexu+e7hOS7tlxyXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICAgIHN0YXRlID0ge1xyXG4gICAgICBmaWxlTGlzdDogW10sXHJcbiAgICAgIHZpZXdJZDogXCJcIixcclxuICAgICAgZmlsZUxpc3RTdG9yZTogW10sXHJcbiAgICAgIGZpbGVOYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRTaXplID0gMDtcclxuICAgIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgIHByZXZpZXdVcmwgPSB7fTtcclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb252ZXJ0RmlsZUxpc3QobGlzdD86IEFycmF5PE9iamVjdD4pIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlTGlzdFN0b3JlOiBbLi4uZmlsZUxpc3RdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSBvbGRMaXN0W2ldO1xyXG4gICAgICAgICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgaWYgKGxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgIWl0ZW0udXJsICYmIGl0ZW0uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRlbXAudXJsID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEZpbGVMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maWxlTGlzdDtcclxuICAgIH1cclxuICAgIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KGZpbGVMaXN0KTtcclxuICAgIH1cclxuICAgIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgICAgbGV0IHtcclxuICAgICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgICBjaGVja1NhbWVGaWxlID0gdHJ1ZSxcclxuICAgICAgICBtYXhDb3VudCxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgICBmaWxlTGlzdDogcHJvcHNMaXN0LFxyXG4gICAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAobWF4U2l6ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgICAgY2hlY2tMaXN0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZmlsZU5hbWVzLmluZGV4T2YoZmlsZS5uYW1lKSA+IC0xICYmIHNob3dVcGxvYWRMaXN0ICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnByb3BzLmJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpO1xyXG4gICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgICBvZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGl0ZW0pKSB8fFxyXG4gICAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgICAgdWlkOiBpdGVtLnVpZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IG5ld0xpc3QubGVuZ3RoIC0gbWF4Q291bnQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogbmV3TGlzdCB9LCgpPT57XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXBsb2FkU2l6ZSA9IG9maWxlTGlzdC5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICAgIH0sKCk9PntcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgIFxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25Db21wbGV0ZShmaWxlcykge1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZFNpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgeyBuZXdWZXJzaW9uID0gdHJ1ZSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGZpbGVzLm1hcChhc3luYyAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUuZmlsZUlkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICAgIGlmICghbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICAgIGxldCB1cmwgPSBgL2pxdWljay1yZXNvdXJjZS9vc3MvZW5kcG9pbnQvZG93bmxvYWQtZmlsZXM/YXR0YWNoSWQ9JHtcclxuICAgICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgICAgfSZfdHBrPSR7d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIil9YDtcclxuICAgICAgICAgICAgICBuZXdGaWxlLnVybCA9IHJlcXVlc3RDb25maWcucHJlZml4XHJcbiAgICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgICA6IFwiL2FwaVwiICsgdXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdMaXN0XSxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY3VzdG9tUmVxdWVzdCA9IGFzeW5jIChvcHRpb25zKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICAgIGxldCB1cGxvYWRpbmdLZXkgPSAnJ1xyXG4gICAgICBjb25zdCB7XHJcbiAgICAgICAgb25Db21wbGV0ZSxcclxuICAgICAgICBvblByb2Nlc3MsXHJcbiAgICAgICAgc2xpY2VTaXplLFxyXG4gICAgICAgIG5ld1ZlcnNpb24gPSB0cnVlLFxyXG4gICAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICAgIHRoaXMub25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgICAgfTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICAgICAgb25Qcm9ncmVzczogb25Qcm9ncmVzcyxcclxuICAgICAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgICAgICAgdXBsb2FkS2V5Q2FsbGJhY2s6IChrZXkpID0+IHtcclxuICAgICAgICAgICAgIHVwbG9hZGluZ0tleSA9IGtleVxyXG4gICAgICAgICAgICBjb25zdCB7ZmlsZUxpc3R9ICA9IHRoaXMuc3RhdGVcclxuICAgICAgICAgICAgbGV0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8v6YCa6L+H5paH5Lu25ZCN5Yik5pat77yM5LiK5Lyg5piv5paH5Lu25ZCN5piv5ZSv5LiA55qEXHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAoIGl0ZW0ubmFtZSAhPT0gZmlsZS5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICBpdGVtLmZpbGVJZCAhPT0gZmlsZS5maWxlSWQgfHxcclxuICAgICAgICAgICAgICAgIGl0ZW0udWlkICE9PSBmaWxlLnVpZClcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIG5ld0xpc3QucHVzaCh7Li4uaXRlbSwgdXBsb2FkaW5nS2V5OiBpdGVtLnVwbG9hZGluZ0tleSB8fCB1cGxvYWRpbmdLZXl9KTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIG5ld0xpc3QucHVzaCh7Li4uaXRlbX0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIGZpbGVMaXN0OiBbLi4ubmV3TGlzdF0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSB0aGlzLnVwbG9hZEluZ1NpemUgKyAxO1xyXG4gICAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLmxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICBJbWdSZXMgPSBhd2FpdCBwcmV2aWV3SW1hZ2UoZmlsZUlkLCB0aGlzLnByb3BzLnJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdMaXN0LnB1c2goe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGNhbmNsZVVwbG9hZChpdGVtLnVwbG9hZGluZ0tleSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgfVxyXG4gICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgZmlsZUxpc3QsXHJcbiAgICAgICAgZmlsZUNhcmQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICAgIH0gYXMgYW55LFxyXG4gICAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgICBcIm1heFNpemVcIixcclxuICAgICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICAgIFwicmVxdWVzdENvbmZpZ1wiLFxyXG4gICAgICBdKTtcclxuICAgICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXZpZXcoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2ZpbGUuc3RhdHVzID09IFwidXBsb2FkaW5nXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uUmVtb3ZlOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uUHJldmlldzogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZmlsZT8uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8Q29tcG9uZW50XHJcbiAgICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICAgIHsuLi5uZXdwcm9wc31cclxuICAgICAgICAgICAgYmVmb3JlVXBsb2FkPXt0aGlzLmJlZm9yZVVwbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IE5zY1VwbG9hZDogYW55ID0gd2l0aEN1c3RvbVVwbG9hZChVcGxvYWQpO1xyXG4vLyAvLyDkvb/nlKggd2l0aEN1c3RvbVVwbG9hZCDlsIHoo4UgVXBsb2FkLkRyYWdnZXIg57uE5Lu2XHJcbmNvbnN0IE5zY1VwbG9hZERyYWdnZXIgPSB3aXRoQ3VzdG9tVXBsb2FkKFVwbG9hZC5EcmFnZ2VyKTtcclxuTnNjVXBsb2FkLkRyYWdnZXIgPSBOc2NVcGxvYWREcmFnZ2VyO1xyXG5leHBvcnQgZGVmYXVsdCBOc2NVcGxvYWQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFFOUIsT0FBT0MsSUFBSSxNQUFNLFVBQVU7QUFDM0IsT0FBT0MsT0FBTyxNQUFNLFlBQVk7QUFDaEMsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7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
467
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJjYW5jbGVVcGxvYWQiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsInVwbG9hZGluZ0tleSIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInVwbG9hZEtleUNhbGxiYWNrIiwia2V5Iiwic3RhdGUiLCJuZXdMaXN0IiwibWFwIiwiaXRlbSIsIm5hbWUiLCJmaWxlSWQiLCJ1aWQiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsInNldFN0YXRlIiwicmVxdWVzdENvbmZpZyIsInVwbG9hZEluZ1NpemUiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwibGlzdFR5cGUiLCJvbkVycm9yIiwidXBsb2FkSW5nTGlzdCIsInN0YXR1cyIsInVybCIsImUiLCJjb21wb25lbnREaWRNb3VudCIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJpIiwibGVuZ3RoIiwidGVtcCIsImZpbGVOYW1lIiwidHlwZSIsInNpemUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJpbmRleE9mIiwic3BsaWNlIiwidXBsb2FkU2l6ZSIsIm5hbWVzIiwic3BsaXQiLCJzdWZmaXgiLCJ0b0xvd2VyQ2FzZSIsInRvVXBlcnJjYXNlIiwiX3JlZiIsIm5ld0ZpbGUiLCJmaWxlcyIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX2V4dGVuZHMiLCJOc2NVcGxvYWQiLCJfVXBsb2FkIiwiTnNjVXBsb2FkRHJhZ2dlciIsIkRyYWdnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3VwbG9hZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50LCBwcmV2aWV3SW1hZ2UsY2FuY2xlVXBsb2FkIH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBuZXdWZXJzaW9uPzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgd2l0aEN1c3RvbVVwbG9hZCA9IChDb21wb25lbnQpID0+IHtcclxuICAvLyDov5Tlm57kuIDkuKrnsbvnu4Tku7ZcclxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgICBzdGF0ZSA9IHtcclxuICAgICAgZmlsZUxpc3Q6IFtdLFxyXG4gICAgICB2aWV3SWQ6IFwiXCIsXHJcbiAgICAgIGZpbGVMaXN0U3RvcmU6IFtdLFxyXG4gICAgICBmaWxlTmFtZXM6IFtdLFxyXG4gICAgfTtcclxuICAgIHVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdXBsb2FkU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRJbmdMaXN0ID0gW107XHJcbiAgICBwcmV2aWV3VXJsID0ge307XHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZUxpc3QsIGxpc3RUeXBlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdGaWxlTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsZUxpc3RTdG9yZTogWy4uLmZpbGVMaXN0XSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogYW55ID0gb2xkTGlzdFtpXTtcclxuICAgICAgICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0uc3RhdHVzLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSB8fCBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCxcclxuICAgICAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgICAgIGlmIChsaXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmICFpdGVtLnVybCAmJiBpdGVtLmZpbGVJZCkge1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHByZXZpZXdJbWFnZShcclxuICAgICAgICAgICAgICAgIGl0ZW0uZmlsZUlkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wLnVybCA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGZpbGVMaXN0OiBbLi4ubmV3RmlsZUxpc3RdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWxlTGlzdFN0b3JlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QodGhpcy5wcm9wcy5maWxlTGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXRGaWxlTGlzdCgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgICB9XHJcbiAgICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgbWF4U2l6ZSA9IDEwMCxcclxuICAgICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgICAgbWF4Q291bnQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgICBvbkxpc3RDaGFuZ2UsXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgbGV0IHNpemU6IG51bWJlcjtcclxuICAgICAgaWYgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICAgIGAke2ZpbGUubmFtZX3mlofku7bnsbvlnovkuI3lhYHorrjkuIrkvKDvvIzor7fkuIrkvKDlkI7nvIDkuLoke2FsbG93RmlsZVN1ZmZpeH3nmoTnsbvlnovmlofku7bvvIFgXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1heFNpemUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICAgIG1heFNpemUgPSAxMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgICAgaWYgKHNpemUgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoYCR7ZmlsZS5uYW1lfeaWh+S7tuWkp+Wwj+i2hei/hyR7bWF4U2l6ZX1N77yM6K+36YeN5paw5LiK5Lyg77yBYCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgICAgaWYgKGNoZWNrU2FtZUZpbGUpIHtcclxuICAgICAgICBjb25zdCBjaGVja0xpc3QgPSB0aGlzLnByb3BzLmZpbGVMaXN0ID8gZmlsZUxpc3RTdG9yZSA6IGZpbGVMaXN0O1xyXG4gICAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGZpbGVOYW1lcy5wdXNoKGl0ZW0ubmFtZSB8fCBpdGVtLmZpbGVOYW1lKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoYOaWh+S7tiR7ZmlsZS5uYW1lfeW3suWcqOS4iuS8oOWIl+ihqOS4re+8jOivt+mHjeaWsOmAieaLqeaWh+S7tu+8gWApO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgICBpZiAocmVzID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmZpbGVMaXN0XTtcclxuICAgICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgICAgc2l6ZSA8IGl0ZW0uc2l6ZSB8fFxyXG4gICAgICAgICAgICAoY2hlY2tTYW1lRmlsZSAmJiBmaWxlTmFtZXMuaW5kZXhPZihpdGVtLm5hbWUpID4gLTEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCB0ZW1wID0ge1xyXG4gICAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICBwZXJjZW50OiAwLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbmV3TGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld0xpc3Quc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVwbG9hZFNpemUgPSBvZmlsZUxpc3QubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgY2hlY2tGaWxlVHlwZShmaWxlKSB7XHJcbiAgICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuYW1lcyA9IGZpbGUubmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xIHx8IGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeC50b0xvd2VyQ2FzZSgpKSA+IC0xIHx8IGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeC50b1VwZXJyY2FzZSgpKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgb25Qcm9jZXNzKHsgcGVyY2VudCwgZmlsZSB9OiBhbnkpIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBpZiAoZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgICB9LCgpPT57XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShmaWxlTGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICBcclxuICAgIH1cclxuICAgIGFzeW5jIG9uQ29tcGxldGUoZmlsZXMpIHtcclxuICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gMDtcclxuICAgICAgdGhpcy51cGxvYWRTaXplID0gMDtcclxuICAgICAgdGhpcy51cGxvYWRJbmdMaXN0ID0gW107XHJcbiAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgIGNvbnN0IHsgbmV3VmVyc2lvbiA9IHRydWUsIHJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGUpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlLmZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgICAgICBuZXdGaWxlLnVybCA9IGZpbGUudXJsO1xyXG4gICAgICAgICAgICBpZiAoIW5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgICBsZXQgdXJsID0gYC9qcXVpY2stcmVzb3VyY2Uvb3NzL2VuZHBvaW50L2Rvd25sb2FkLWZpbGVzP2F0dGFjaElkPSR7XHJcbiAgICAgICAgICAgICAgICBmaWxlLmZpbGVJZFxyXG4gICAgICAgICAgICAgIH0mX3Rwaz0ke3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpfWA7XHJcbiAgICAgICAgICAgICAgbmV3RmlsZS51cmwgPSByZXF1ZXN0Q29uZmlnLnByZWZpeFxyXG4gICAgICAgICAgICAgICAgPyByZXF1ZXN0Q29uZmlnLnByZWZpeCArIHVybFxyXG4gICAgICAgICAgICAgICAgOiBcIi9hcGlcIiArIHVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbGVMaXN0OiBbLi4ubmV3TGlzdF0sXHJcbiAgICAgIH0sKCk9PntcclxuICAgICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlID0gb3B0aW9ucy5maWxlO1xyXG4gICAgICBsZXQgdXBsb2FkaW5nS2V5ID0gJydcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIG9uQ29tcGxldGUsXHJcbiAgICAgICAgb25Qcm9jZXNzLFxyXG4gICAgICAgIHNsaWNlU2l6ZSxcclxuICAgICAgICBuZXdWZXJzaW9uID0gdHJ1ZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgICAgb25Qcm9jZXNzICYmIG9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB1cGxvYWQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgICAgIHVwbG9hZEtleUNhbGxiYWNrOiAoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICB1cGxvYWRpbmdLZXkgPSBrZXlcclxuICAgICAgICAgICAgY29uc3Qge2ZpbGVMaXN0fSAgPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgIGxldCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAvL+mAmui/h+aWh+S7tuWQjeWIpOaWre+8jOS4iuS8oOaYr+aWh+S7tuWQjeaYr+WUr+S4gOeahFxyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgKCBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWQpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdMaXN0LnB1c2goey4uLml0ZW0sIHVwbG9hZGluZ0tleTogaXRlbS51cGxvYWRpbmdLZXkgfHwgdXBsb2FkaW5nS2V5fSk7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBuZXdMaXN0LnB1c2goey4uLml0ZW19KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgICBsZXQgSW1nUmVzID0gbnVsbDtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBmaWxlSWQgPSByZXMuZGF0YS5hdHRhY2hJZDtcclxuICAgICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5saXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmIG5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgSW1nUmVzID0gYXdhaXQgcHJldmlld0ltYWdlKGZpbGVJZCwgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBsb2FkSW5nTGlzdC5wdXNoKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICAgIHVybDogSW1nUmVzID8gSW1nUmVzLmRhdGEgOiBudWxsLFxyXG4gICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIC8v6YCa6L+H5paH5Lu25ZCN5Yik5pat77yM5LiK5Lyg5piv5paH5Lu25ZCN5piv5ZSv5LiA55qEXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaXRlbS5uYW1lICE9PSBmaWxlLm5hbWUgfHxcclxuICAgICAgICAgIGl0ZW0uZmlsZUlkICE9PSBmaWxlLmZpbGVJZCB8fFxyXG4gICAgICAgICAgaXRlbS51aWQgIT09IGZpbGUudWlkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBuZXdMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBjYW5jbGVVcGxvYWQoaXRlbS51cGxvYWRpbmdLZXkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICAgIH0sKCk9PntcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgICB9KTtcclxuICAgICBcclxuICAgIH1cclxuICAgIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgICBsZXQge1xyXG4gICAgICAgIGZpbGVMaXN0LFxyXG4gICAgICAgIGZpbGVDYXJkLFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0ID0ge1xyXG4gICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgICBzaG93UmVtb3ZlSWNvbjogdHJ1ZSxcclxuICAgICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgICBwcmV2aWV3SWNvbjogbnVsbCxcclxuICAgICAgICB9IGFzIGFueSxcclxuICAgICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgICAgXCJvbkNvbXBsZXRlXCIsXHJcbiAgICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICAgIFwidXNlRGVmYXVsdExpc3RcIixcclxuICAgICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgICAgICBcIm5ld1ZlcnNpb25cIixcclxuICAgICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgICAgXSk7XHJcbiAgICAgIGxldCBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgIH0gYXMgSVVwbG9hZFByb3BzO1xyXG4gICAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWU/LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZpbGUtaXRlbVwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudF9lcnJvclwiKV06IGZpbGUuc3RhdHVzID09IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJtYXJrLXBpY3R1cmVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuYW1lXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZS5zdGF0dXMgPT0gXCJkb25lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25Eb3dubG9hZChmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dSZW1vdmVJY29uICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIHtmaWxlLnN0YXR1cyA9PSBcInVwbG9hZGluZ1wiICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInByb2Nlc3NcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicGVyY2VudFwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBmaWxlLnBlcmNlbnQgKyBcIiVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICAgIG9uRG93bmxvYWQ6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25Eb3dubG9hZChmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXZpZXcoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGU/LmZpbGVJZCkge1xyXG4gICAgICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaG93VXBsb2FkTGlzdDogeyAuLi5zaG93VXBsb2FkTGlzdCB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPENvbXBvbmVudFxyXG4gICAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxyXG4gICAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICAgIGJlZm9yZVVwbG9hZD17dGhpcy5iZWZvcmVVcGxvYWQuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3R9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBOc2NVcGxvYWQ6IGFueSA9IHdpdGhDdXN0b21VcGxvYWQoVXBsb2FkKTtcclxuLy8gLy8g5L2/55SoIHdpdGhDdXN0b21VcGxvYWQg5bCB6KOFIFVwbG9hZC5EcmFnZ2VyIOe7hOS7tlxyXG5jb25zdCBOc2NVcGxvYWREcmFnZ2VyID0gd2l0aEN1c3RvbVVwbG9hZChVcGxvYWQuRHJhZ2dlcik7XHJcbk5zY1VwbG9hZC5EcmFnZ2VyID0gTnNjVXBsb2FkRHJhZ2dlcjtcclxuZXhwb3J0IGRlZmF1bHQgTnNjVXBsb2FkO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFP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