nsc-react-component 2.8.53 → 2.8.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/table/index.js +1 -2
- package/package.json +1 -1
package/lib/base/table/index.js
CHANGED
|
@@ -564,7 +564,6 @@ var NSCTable = /*#__PURE__*/function (_React$Component) {
|
|
|
564
564
|
columns = _this$state.columns,
|
|
565
565
|
sortType = _this$state.sortType,
|
|
566
566
|
sortInfo = _this$state.sortInfo;
|
|
567
|
-
console.log("columns", columns);
|
|
568
567
|
var _this$props$sortField = this.props.sortFields,
|
|
569
568
|
sortFields = _this$props$sortField === void 0 ? [] : _this$props$sortField;
|
|
570
569
|
var defaultShowCols = columns.filter(function (cols) {
|
|
@@ -1022,4 +1021,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
1022
1021
|
});
|
|
1023
1022
|
|
|
1024
1023
|
export default withZhLocale(NSCTable);
|
|
1025
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJSZWRvT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiZ2V0U3RvcmFnZSIsImNvbmZpZyIsIlJlc2l6ZWFibGVUaXRsZSIsInByb3BzIiwib25SZXNpemUiLCJ3aWR0aCIsInJlc3RQcm9wcyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJjcmVhdGVSZWYiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsInNldFN0YXRlIiwiZXYiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiX3RoaXMiLCJldmVudFR5cGUiLCJwYXlsb2FkIiwidGFibGVTaXplIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJkcmFnTm9kZSIsInJlY29yZCIsInRhcmdldE5vZGUiLCJtb3ZlQXJyYXkiLCJpZHMiLCJwYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlSWRzIiwicGFyYW1zIiwiaWQiLCJwYXJlbnRJZCIsImF0dHJpYnV0ZSIsIm1vdmVSb3ciLCJzdG9yZSIsInJlbG9hZCIsIm1vZGFsIiwidHlwZSIsInN0b3JlUHJlZml4IiwiYXV0b1R5cGUiLCJjb250ZW50IiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJzb3J0cyIsImZpbHRlclBhcmFtcyIsInNvcnRUeXBlIiwic29ydGVyIiwic29ydEluZm8iLCJkZWZhdWx0U29ydCIsImNoZWNrQ29sdW1uIiwiZGVmYXVsdENoZWNrIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJkYXRhQ2hhbmdlZCIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsImNvbnNvbGUiLCJsb2ciLCJzb3J0RmllbGRzIiwiZGVmYXVsdFNob3dDb2xzIiwiZmlsdGVyIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwidGl0bGUiLCJwbGFjZWhvbGRlciIsInJlZiIsInRhYmxlU2VhcmNoUmVmIiwiZmlsdGVyRHJvcGRvd24iLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwiZmlsdGVyQ29sdW1uIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiYmluZCIsImxhYmVsIiwidmFsdWUiLCJkaXNhYmxlZCIsImZvbnRTaXplIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsIm1hcmdpblJpZ2h0Iiwib25SZWZyZXNoIiwib21pdCIsInJvd0tleSIsImNsaWNrQ2hhbmdlQ29sb3IiLCJwb3NpdGlvbiIsInNob3dTaXplQ2hhbmdlciIsInNob3dRdWlja0p1bXBlciIsInNob3dUb3RhbCIsInRvdGFsIiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwib25DbGljayIsImV2ZW50Iiwicm93Q2xhc3NOYW1lIiwiY2xpY2tSb3dTdHlsZSIsIm5ld0RhdGFTb3VyY2UiLCJnZXRTZWFyY2hNZW51RGF0YXMiLCJ0cmVlRGF0YXMiLCJleHBhbmRlZFJvd0tleXMiLCJvcGVuS2V5cyIsImRyYWdhYmxlIiwiZHJhZ2FibGVQcm9wcyIsImNvbXBvbmVudHMiLCJyZXNpemVQcm9wcyIsInRvb2xGbGFnIiwidG9vbHByb3BzIiwic2hvdyIsIkRlZmF1bHRUYWJsZSIsInJlbmRlclRvb2xCYXIiLCJnZXRDb2x1bW5zIiwiZW1wdHlUZXh0IiwieCIsIkNvbXBvbmVudCIsImRyYWdVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLGdCQURGLEVBRUVDLGFBRkYsRUFHRUMsb0JBSEYsRUFJRUMsY0FKRixFQUtFQyxxQkFMRixFQU1FQyxzQkFORixFQU9FQyxZQVBGLFFBUU8sbUJBUlA7QUFTQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLE9BQU9DLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQTZDLGFBQTdDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFjQSxPQUFPLEtBQUtDLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUFTQyxXQUFULFFBQTRCLFdBQTVCO0FBQ0EsT0FBT0MsT0FBUCxJQUFrQkMsY0FBbEIsRUFBa0NDLGFBQWxDLFFBQXVELG1CQUF2RDtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsaUJBQXRCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7QUFDQSxJQUFRQyxnQkFBUixHQUEyQ0wsT0FBM0MsQ0FBUUssZ0JBQVI7QUFBQSxJQUEw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Q0FBM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQb3BvdmVyLFxyXG4gIFNwYWNlLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERuZFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LWRuZFwiO1xyXG5pbXBvcnQgQm9keVJvdywgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9IGZyb20gXCIuLi9jb21tb24vQm9keVJvd1wiO1xyXG5pbXBvcnQgdHJlZVV0aWxzIGZyb20gXCIuLi8uLi90cmVlVXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5jb25zdCB7IEJvZHlSb3dDb21wb25lbnQsIEhUTUw1QmFja2VuZCB9ID0gQm9keVJvdztcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgeyBSZXNpemFibGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlXCI7XHJcbmltcG9ydCBcIi4vcmVzaXplLm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IE5vRGF0YSBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vTm9EYXRhXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRvb2xCYXJQcm9wcyB7XHJcbiAgc2hvdzogYm9vbGVhbjtcclxuICB0b29scz86IEFycmF5PHN0cmluZz47XHJcbiAgb25Ub29sQ2xpY2s/OiB7IG9uUmVmcmVzaD86IGFueTsgb25Tb3J0PzogYW55IH07XHJcbn1cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGRzPzogQXJyYXk8c3RyaW5nPjsgLy/pnIDopoHmjpLluo/nmoTlrZfmrrVJbmRleFxyXG4gIHRvb2xiYXI/OiBUb29sQmFyUHJvcHMgfCBib29sZWFuO1xyXG4gIGF1dG9TaXplPzogYm9vbGVhbjtcclxuICBzb3J0U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmt7vliqDmjpLluo/mn6Xor6Is6buY6K6kdHJ1ZVxyXG4gIC8vIHRhYmxlU2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIC8vIHNpemU/OiBcInNtYWxsXCIgfCBcIm1pZGRsZVwiIHwgXCJkZWZhdWx0XCIgfCBcImF1dG9cIjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocGFnaW5nICYmICF0aGlzLnByb3BzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHN0b3JlLmdldFBhZ2luYXRpb24oKSxcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEsIGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5kYXRhQ2hhbmdlZCwgdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICAgIHBhZ2luZyxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMubG9hZCwgdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkVycm9yTG9hZDogKGVyciwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkVycm9yTG9hZCwgdGhpcywgW2VyciwgcmVzcG9uc2VdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgPyByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgOiBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA/IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgIChlOiBhbnksIHsgc2l6ZSB9OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgbmV4dENvbHVtbnNbaW5kZXhdID0ge1xyXG4gICAgICAgIC4uLm5leHRDb2x1bW5zW2luZGV4XSxcclxuICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogbmV4dENvbHVtbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJjaGFuZ2VUYWJsZVNpemVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJkZWZhdWx0XCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJzbWFsbFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwibWlkZGxlXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHBheWxvYWQuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocHJlU3RhdGUuY29scyAhPT0gdGhpcy5zdGF0ZS5jb2xzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbHVtbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJldlByb3BzLnNpemUgIT09IHRoaXMucHJvcHMuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgYXV0b09uQ2hhbmdlID0gdHJ1ZSxcclxuICAgICAgYXV0b1NvcnQsXHJcbiAgICAgIGF1dG9QYWdpbmF0aW9uLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnNvbGUubG9nKFwiY29sdW1uc1wiLCBjb2x1bW5zKTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8VG9vbHRpcCBwbGFjZW1lbnQ9XCJ0b3BMZWZ0XCIgdGl0bGU9e3RleHR9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L1Rvb2x0aXA+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzcGFjZVwiKX0+e0Rpdn08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYnV0dG9uXCIpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9TcGFjZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWx0ZXJJY29uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8U2VhcmNoT3V0bGluZWQgLz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sc1tpbmRleF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG4gIHJlbmRlclRvb2xCYXIoKSB7XHJcbiAgICBsZXQgeyB0YWJsZVNpemUsIGNvbHVtbnMsIHNvcnRUeXBlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgZmlsdGVyQ29sdW1uLCBjb2x1bW5zOiBjb2xMaXN0cywgdG9vbGJhciB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9PuihqOagvOWvhuW6pjwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgICAvLyBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYXBwLXN0b3JlLWljb25cIil9IC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPD5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS1ub2RhdGFcIil9IC8+LFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
|
|
1024
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJSZWRvT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiZ2V0U3RvcmFnZSIsImNvbmZpZyIsIlJlc2l6ZWFibGVUaXRsZSIsInByb3BzIiwib25SZXNpemUiLCJ3aWR0aCIsInJlc3RQcm9wcyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJjcmVhdGVSZWYiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsInNldFN0YXRlIiwiZXYiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiX3RoaXMiLCJldmVudFR5cGUiLCJwYXlsb2FkIiwidGFibGVTaXplIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJkcmFnTm9kZSIsInJlY29yZCIsInRhcmdldE5vZGUiLCJtb3ZlQXJyYXkiLCJpZHMiLCJwYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlSWRzIiwicGFyYW1zIiwiaWQiLCJwYXJlbnRJZCIsImF0dHJpYnV0ZSIsIm1vdmVSb3ciLCJzdG9yZSIsInJlbG9hZCIsIm1vZGFsIiwidHlwZSIsInN0b3JlUHJlZml4IiwiYXV0b1R5cGUiLCJjb250ZW50IiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJzb3J0cyIsImZpbHRlclBhcmFtcyIsInNvcnRUeXBlIiwic29ydGVyIiwic29ydEluZm8iLCJkZWZhdWx0U29ydCIsImNoZWNrQ29sdW1uIiwiZGVmYXVsdENoZWNrIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJkYXRhQ2hhbmdlZCIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJzZWFyY2hLZXkiLCJEaXYiLCJ0aXRsZSIsInBsYWNlaG9sZGVyIiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsInNldFNlbGVjdGVkS2V5cyIsInNlbGVjdGVkS2V5cyIsImNvbmZpcm0iLCJjbGVhckZpbHRlcnMiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJmaWx0ZXJDb2x1bW4iLCJjb2xMaXN0cyIsInRvb2xiYXIiLCJ0YWJsZVRvb2wiLCJ0b29scyIsInRvb2xzQ2xpY2siLCJvblRvb2xDbGljayIsInNpemVJdGVtIiwic29ydEl0ZW0iLCJzb3J0Q29udGVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJvbWl0Iiwicm93S2V5IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJvbkNsaWNrIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93IiwiRGVmYXVsdFRhYmxlIiwicmVuZGVyVG9vbEJhciIsImdldENvbHVtbnMiLCJlbXB0eVRleHQiLCJ4IiwiQ29tcG9uZW50IiwiZHJhZ1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBREYsRUFFRUMsYUFGRixFQUdFQyxvQkFIRixFQUlFQyxjQUpGLEVBS0VDLHFCQUxGLEVBTUVDLHNCQU5GLEVBT0VDLFlBUEYsUUFRTyxtQkFSUDtBQVNBLFNBQVNDLFVBQVQsUUFBMkIsbUJBQTNCO0FBQ0EsT0FBT0MsS0FBUCxJQUFnQkMsU0FBaEIsUUFBNkMsYUFBN0M7QUFDQSxTQUFTQyxLQUFULFFBQXNCLHVCQUF0QjtBQWNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixPQUF2QjtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsV0FBNUI7QUFDQSxPQUFPQyxPQUFQLElBQWtCQyxjQUFsQixFQUFrQ0MsYUFBbEMsUUFBdUQsbUJBQXZEO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixpQkFBdEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLHFCQUFuQjtBQUNBLElBQVFDLGdCQUFSLEdBQTJDTCxPQUEzQyxDQUFRSyxnQkFBUjtBQUFBLElBQTBCQyxZQUExQixHQUEyQ04s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IEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTIzIDA4OjQ2OjIwXHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wMy0yMyAxMDozMDo0MlxyXG4gKi9cclxuaW1wb3J0IHtcclxuICBBcHBzdG9yZU91dGxpbmVkLFxyXG4gIENoZWNrT3V0bGluZWQsXHJcbiAgQ29sdW1uSGVpZ2h0T3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbiAgU29ydEFzY2VuZGluZ091dGxpbmVkLFxyXG4gIFNvcnREZXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgUmVkb091dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uLFxyXG4gIENoZWNrYm94LFxyXG4gIENoZWNrYm94T3B0aW9uVHlwZSxcclxuICBNZW51LFxyXG4gIG1lc3NhZ2UsXHJcbiAgUG9wb3ZlcixcclxuICBTcGFjZSxcclxuICBUYWJsZSxcclxuICBUYWJsZVByb3BzLFxyXG4gIFRvb2x0aXAsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSwgVGFibGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEbmRQcm92aWRlciB9IGZyb20gXCJyZWFjdC1kbmRcIjtcclxuaW1wb3J0IEJvZHlSb3csIHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL0JvZHlSb3dcIjtcclxuaW1wb3J0IHRyZWVVdGlscyBmcm9tIFwiLi4vLi4vdHJlZVV0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgUmVzaXphYmxlIH0gZnJvbSBcInJlYWN0LXJlc2l6YWJsZVwiO1xyXG5pbXBvcnQgXCIuL3Jlc2l6ZS5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICAvLyB0YWJsZVNpemU/OiBcInNtYWxsXCIgfCBcIm1pZGRsZVwiIHwgXCJkZWZhdWx0XCIgfCBcImF1dG9cIjtcclxuICAvLyBzaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElOU0NUYWJsZVByb3BzID0gdHlwZW9mIE5TQ1RhYmxlLmRlZmF1bHRQcm9wcyAmIE5TQ1RhYmxlUHJvcHM7XHJcbmV4cG9ydCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH07XHJcblxyXG5jb25zdCBSZXNpemVhYmxlVGl0bGUgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIGNvbnN0IHsgb25SZXNpemUsIHdpZHRoLCAuLi5yZXN0UHJvcHMgfSA9IHByb3BzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8UmVzaXphYmxlXHJcbiAgICAgIHdpZHRoPXt3aWR0aCB8fCAxNTB9XHJcbiAgICAgIGhlaWdodD17MH1cclxuICAgICAgb25SZXNpemU9e29uUmVzaXplfVxyXG4gICAgICBkcmFnZ2FibGVPcHRzPXt7IGVuYWJsZVVzZXJTZWxlY3RIYWNrOiBmYWxzZSB9fVxyXG4gICAgPlxyXG4gICAgICA8dGggey4uLnJlc3RQcm9wc30gLz5cclxuICAgIDwvUmVzaXphYmxlPlxyXG4gICk7XHJcbn07XHJcbmNsYXNzIE5TQ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElOU0NUYWJsZVByb3BzLCBhbnk+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgICByZXNpemVDb2x1bW46IHRydWUsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIG9uVG9vbENsaWNrOiB7fSBhcyBhbnksXHJcbiAgICB9IGFzIGFueSxcclxuICB9O1xyXG5cclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgdGhJY29uUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIHRhYmxlU2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgbGlzdGVuZXJzID0ge1xyXG4gICAgb25CZWZvcmVMb2FkOiBudWxsLFxyXG4gICAgbG9hZDogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb21wb25lbnRzID0ge1xyXG4gICAgaGVhZGVyOiB7XHJcbiAgICAgIGNlbGw6IFJlc2l6ZWFibGVUaXRsZSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCBtb2RhbCA9IHByb3BzLnR5cGUgfHwgXCJhdXRvXCI7XHJcbiAgICBsZXQgc3RvcmVQcmVmaXggPSBnZXRTdG9yYWdlKFwic3RvcmUtcHJlLWtleVwiKTtcclxuICAgIGxldCBhdXRvVHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIGF1dG9UeXBlID0gYXV0b1R5cGU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICBkYXRhU291cmNlOiBbXSxcclxuICAgICAgY29sdW1uczogW10sXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAvL+aQnOe0ouaWh+acrFxyXG4gICAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogbnVsbCxcclxuICAgICAgc2VhcmNoQ29sb3I6IG51bGwsXHJcbiAgICAgIGNvbHM6IFtdLFxyXG4gICAgICBzb3J0czogW10sXHJcbiAgICAgIGZpbHRlclBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8IGF1dG9UeXBlIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICBzb3J0VHlwZTogXCJzaW5nbGVcIixcclxuICAgICAgc29ydGVyOiBbXSwgLy/orrDlvZXlvZPliY3mjpLluo/lrZfmrrVcclxuICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICBkZWZhdWx0U29ydDogdHJ1ZSxcclxuICAgICAgY2hlY2tDb2x1bW46IFtdLFxyXG4gICAgICBkZWZhdWx0Q2hlY2s6IHRydWUsXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uID0gKCkgPT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0ge30gYXMge1xyXG4gICAgICAgIHNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgcGFnZVNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgYXNjcz86IHN0cmluZztcclxuICAgICAgICBkZXNjcz86IHN0cmluZztcclxuICAgICAgICBbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZztcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy5nZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHx8IHt9O1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFzY1BhcmFtcyA9IHRoaXMuZ2V0U29ydFBhcmFtKHNvcnRlciwgdHJ1ZSk7XHJcbiAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlciB9KTtcclxuICAgICAgfSBlbHNlIGlmICghaXNNdWx0aXBsZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgc29ydGVyLmNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW3NvcnRlcl0sIGRlZmF1bHRTb3J0OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSB9KTtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG5cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGlmIChjaGVja2VkVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6Iez5bCR5pi+56S65LiA5YiX77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcCgoY29sOiBDb2x1bW5UeXBlPHt9PikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdDb2wgPSB7IC4uLmNvbCB9IGFzIENvbHVtblR5cGU8e30+ICYgeyBpbml0U2hvdzogYm9vbGVhbiB9O1xyXG4gICAgICBpZiAoY2hlY2tlZFZhbHVlLmluY2x1ZGVzKGNvbC5kYXRhSW5kZXgpKSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Q29sO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHVtbnM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U29ydFBhcmFtKHNvcnRlciwgc29ydFN0YXRlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBjb25zdCB7IHNvcnRTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzb3J0U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBzb3J0SW5mbyA9IHt9O1xyXG4gICAgbGV0IG9yZGVySXRlbXMgPSBbXTtcclxuICAgIGlmICghaXNFbXB0eU9iaihzb3J0ZXIpICYmICFpc011bHRpcGxlICYmIHNvcnRlci5jb2x1bW4pIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmVsbGlwc2lzICYmICFjb2wucmVuZGVyKSB7XHJcbiAgICAgICAgY29sLmVsbGlwc2lzID0ge1xyXG4gICAgICAgICAgc2hvd1RpdGxlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbC5yZW5kZXIgPSAodGV4dCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFRvb2x0aXAgcGxhY2VtZW50PVwidG9wTGVmdFwiIHRpdGxlPXt0ZXh0fT5cclxuICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOaQnOe0oiR7dGV4dH1gLFxyXG4gICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbHMgPSBbXCJyZWZyZXNoXCIsIFwic2l6ZVwiLCBcInNvcnRcIiwgXCJjb2x1bW5cIl07XHJcbiAgICBsZXQgdG9vbHNDbGljayA9IHt9IGFzIGFueTtcclxuICAgIGlmICh0b29sYmFyID09IHRydWUpIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLm9uVG9vbENsaWNrXHJcbiAgICAgICAgPyB0b29sYmFyLm9uVG9vbENsaWNrXHJcbiAgICAgICAgOiBbXCJyZWZyZXNoXCIsIFwic2l6ZVwiLCBcInNvcnRcIiwgXCJjb2x1bW5cIl07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIudG9vbHNcclxuICAgICAgICA/IHRvb2xiYXIudG9vbHNcclxuICAgICAgICA6IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgID8gdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgOiB0b29scztcclxuICAgICAgdG9vbHNDbGljayA9IHRvb2xiYXIub25Ub29sQ2xpY2sgPyB0b29sYmFyLm9uVG9vbENsaWNrIDoge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfT7ooajmoLzlr4bluqY8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgICAgLy8gZ2V0UG9wdXBDb250YWluZXI9eygpID0+IHRoaXMudGhJY29uUmVmLmN1cnJlbnR9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZCBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFwcC1zdG9yZS1pY29uXCIpfSAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic29ydFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c29ydENvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNpemVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8Q29sdW1uSGVpZ2h0T3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInJlZnJlc2hcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQsIGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICBpZiAodG9vbHNDbGljay5vblJlZnJlc2gpIHtcclxuICAgICAgICAgICAgICAgIHRvb2xzQ2xpY2sub25SZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxSZWRvT3V0bGluZWQgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBgJHtzdHlsZXMuY2xpY2tSb3dTdHlsZX1gXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRyZWVVdGlscy5nZXRTZWFyY2hNZW51RGF0YXMoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yXHJcbiAgICAgICk7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhLnRyZWVEYXRhcztcclxuICAgICAgcHJvcHMuZXhwYW5kZWRSb3dLZXlzID0gZGF0YS5vcGVuS2V5cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHJvcHMuc3RvcmUgPSBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgIHByb3BzLnN0b3JlLmF1dG9Mb2FkID0gcHJvcHMuc3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgY29uc3QgeyBkcmFnYWJsZSB9ID0gX3RoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkcmFnYWJsZVByb3BzID1cclxuICAgICAgZHJhZ2FibGUgPT09IHRydWVcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJhcigpfVxyXG4gICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgICBzaGVpdGVtXHJcbiAgICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJuc2MtdGFibGVcIl19XHJcbiAgICAgICAgICBsb2NhbGU9e3tcclxuICAgICAgICAgICAgZW1wdHlUZXh0OiA8Tm9EYXRhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtbm9kYXRhXCIpfSAvPixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBzY3JvbGw9e3sgeDogXCJtYXgtY29udGVudFwiIH19XHJcbiAgICAgICAgICB7Li4ucmVzaXplUHJvcHN9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4uZHJhZ2FibGVQcm9wc31cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB3aXRoWmhMb2NhbGUoTlNDVGFibGUpO1xyXG4iXX0=
|