mirror of
https://github.com/DOI-DO/j40-cejst-2.git
synced 2025-02-23 01:54:18 -08:00
1 line
No EOL
608 KiB
JavaScript
1 line
No EOL
608 KiB
JavaScript
(self.webpackChunkjustice40_tool=self.webpackChunkjustice40_tool||[]).push([[947],{7228:function(module){eval("function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanM/NWE0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBLHdDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6IjcyMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnIyW2ldID0gYXJyW2ldO1xuICB9XG5cbiAgcmV0dXJuIGFycjI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7228\n")},2858:function(module){eval("function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzP2MxMzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXlCLG1CQUFtQix5QkFBeUIiLCJmaWxlIjoiMjg1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXM7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2858\n")},3646:function(module,__unused_webpack_exports,__webpack_require__){eval("var arrayLikeToArray = __webpack_require__(7228);\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzPzIyMzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsSUFBdUI7O0FBRXREO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6IjM2NDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXM7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3646\n")},9713:function(module){eval("function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzPzk1MjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6Ijk3MTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9713\n")},6860:function(module){eval('function _iterableToArray(iter) {\n if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcz8xMWIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6IjY4NjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6860\n')},3884:function(module){eval('function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"] != null) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzPzliNDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDJCQUEyQiwrQkFBK0I7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBeUIsbUJBQW1CLHlCQUF5QiIsImZpbGUiOiIzODg0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl07XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3884\n')},521:function(module){eval('function _nonIterableRest() {\n throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcz9jMjQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6IjUyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdDtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///521\n')},8206:function(module){eval('function _nonIterableSpread() {\n throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzPzA2NzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXlCLG1CQUFtQix5QkFBeUIiLCJmaWxlIjoiODIwNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8206\n')},3038:function(module,__unused_webpack_exports,__webpack_require__){eval("var arrayWithHoles = __webpack_require__(2858);\n\nvar iterableToArrayLimit = __webpack_require__(3884);\n\nvar unsupportedIterableToArray = __webpack_require__(379);\n\nvar nonIterableRest = __webpack_require__(521);\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanM/Mjc4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxJQUFxQjs7QUFFbEQsMkJBQTJCLG1CQUFPLENBQUMsSUFBMkI7O0FBRTlELGlDQUFpQyxtQkFBTyxDQUFDLEdBQWlDOztBQUUxRSxzQkFBc0IsbUJBQU8sQ0FBQyxHQUFzQjs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXlCLG1CQUFtQix5QkFBeUIiLCJmaWxlIjoiMzAzOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xuXG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcblxudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3038\n")},319:function(module,__unused_webpack_exports,__webpack_require__){eval("var arrayWithoutHoles = __webpack_require__(3646);\n\nvar iterableToArray = __webpack_require__(6860);\n\nvar unsupportedIterableToArray = __webpack_require__(379);\n\nvar nonIterableSpread = __webpack_require__(8206);\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzPzQ0OGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCLG1CQUFPLENBQUMsSUFBd0I7O0FBRXhELHNCQUFzQixtQkFBTyxDQUFDLElBQXNCOztBQUVwRCxpQ0FBaUMsbUJBQU8sQ0FBQyxHQUFpQzs7QUFFMUUsd0JBQXdCLG1CQUFPLENBQUMsSUFBd0I7O0FBRXhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUF5QixtQkFBbUIseUJBQXlCIiwiZmlsZSI6IjMxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xuXG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xuXG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///319\n")},379:function(module,__unused_webpack_exports,__webpack_require__){eval('var arrayLikeToArray = __webpack_require__(7228);\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === "string") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === "Object" && o.constructor) n = o.constructor.name;\n if (n === "Map" || n === "Set") return Array.from(o);\n if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports.default = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzPzY2MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsSUFBdUI7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBeUIsbUJBQW1CLHlCQUF5QiIsImZpbGUiOiIzNzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///379\n')},5477:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"kG\": function() { return /* binding */ invariant; }\n/* harmony export */ });\n/* unused harmony exports getMagnitude, repeat, setInternalSlot, setMultiInternalSlots, getInternalSlot, getMultiInternalSlots, isLiteralPart, defineProperty, UNICODE_EXTENSION_SEQUENCE_REGEX */\n/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nfunction getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\nfunction repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n\n var arr = new Array(times);\n\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n\n return arr.join('');\n}\nfunction setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n\n var slots = map.get(pl);\n slots[field] = value;\n}\nfunction setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nfunction getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nfunction getMultiInternalSlots(map, pl) {\n var fields = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n\n var slots = map.get(pl);\n\n if (!slots) {\n throw new TypeError(pl + \" InternalSlot has not been initialized\");\n }\n\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nfunction isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\n\nfunction defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value\n });\n}\nvar UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nfunction invariant(condition, message, Err) {\n if (Err === void 0) {\n Err = Error;\n }\n\n if (!condition) {\n throw new Err(message);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvZWNtYTQwMi1hYnN0cmFjdC9saWIvdXRpbHMuanM/MWM2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQLDJDQUEyQyxnQkFBZ0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QztBQUM5QyxtREFBbUQ7QUFDbkQ7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDTyx1REFBdUQsSUFBSTtBQUMzRDtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1NDc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYW5ub3QgZG8gTWF0aC5sb2coeCkgLyBNYXRoLmxvZygxMCkgYmMgaWYgSUVFRSBmbG9hdGluZyBwb2ludCBpc3N1ZVxuICogQHBhcmFtIHggbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWduaXR1ZGUoeCkge1xuICAvLyBDYW5ub3QgY291bnQgc3RyaW5nIGxlbmd0aCB2aWEgTnVtYmVyLnRvU3RyaW5nIGJlY2F1c2UgaXQgbWF5IHVzZSBzY2llbnRpZmljIG5vdGF0aW9uXG4gIC8vIGZvciB2ZXJ5IHNtYWxsIG9yIHZlcnkgbGFyZ2UgbnVtYmVycy5cbiAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2coeCkgKiBNYXRoLkxPRzEwRSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVwZWF0KHMsIHRpbWVzKSB7XG4gIGlmICh0eXBlb2Ygcy5yZXBlYXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcy5yZXBlYXQodGltZXMpO1xuICB9XG5cbiAgdmFyIGFyciA9IG5ldyBBcnJheSh0aW1lcyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBhcnJbaV0gPSBzO1xuICB9XG5cbiAgcmV0dXJuIGFyci5qb2luKCcnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgZmllbGQsIHZhbHVlKSB7XG4gIGlmICghbWFwLmdldChwbCkpIHtcbiAgICBtYXAuc2V0KHBsLCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgfVxuXG4gIHZhciBzbG90cyA9IG1hcC5nZXQocGwpO1xuICBzbG90c1tmaWVsZF0gPSB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRNdWx0aUludGVybmFsU2xvdHMobWFwLCBwbCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IE9iamVjdC5rZXlzKHByb3BzKTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgayA9IF9hW19pXTtcbiAgICBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgaywgcHJvcHNba10pO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJuYWxTbG90KG1hcCwgcGwsIGZpZWxkKSB7XG4gIHJldHVybiBnZXRNdWx0aUludGVybmFsU2xvdHMobWFwLCBwbCwgZmllbGQpW2ZpZWxkXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRNdWx0aUludGVybmFsU2xvdHMobWFwLCBwbCkge1xuICB2YXIgZmllbGRzID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBmaWVsZHNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICB2YXIgc2xvdHMgPSBtYXAuZ2V0KHBsKTtcblxuICBpZiAoIXNsb3RzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihwbCArIFwiIEludGVybmFsU2xvdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcIik7XG4gIH1cblxuICByZXR1cm4gZmllbGRzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBmKSB7XG4gICAgYWxsW2ZdID0gc2xvdHNbZl07XG4gICAgcmV0dXJuIGFsbDtcbiAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMaXRlcmFsUGFydChwYXR0ZXJuUGFydCkge1xuICByZXR1cm4gcGF0dGVyblBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnO1xufVxuLypcbiAgMTcgRUNNQVNjcmlwdCBTdGFuZGFyZCBCdWlsdC1pbiBPYmplY3RzOlxuICAgIEV2ZXJ5IGJ1aWx0LWluIEZ1bmN0aW9uIG9iamVjdCwgaW5jbHVkaW5nIGNvbnN0cnVjdG9ycywgdGhhdCBpcyBub3RcbiAgICBpZGVudGlmaWVkIGFzIGFuIGFub255bW91cyBmdW5jdGlvbiBoYXMgYSBuYW1lIHByb3BlcnR5IHdob3NlIHZhbHVlXG4gICAgaXMgYSBTdHJpbmcuXG5cbiAgICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgdGhlIG5hbWUgcHJvcGVydHkgb2YgYSBidWlsdC1pbiBGdW5jdGlvblxuICAgIG9iamVjdCwgaWYgaXQgZXhpc3RzLCBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLFxuICAgIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LlxuKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwgX2EpIHtcbiAgdmFyIHZhbHVlID0gX2EudmFsdWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuZXhwb3J0IHZhciBVTklDT0RFX0VYVEVOU0lPTl9TRVFVRU5DRV9SRUdFWCA9IC8tdSg/Oi1bMC05YS16XXsyLDh9KSsvZ2k7XG5leHBvcnQgZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSwgRXJyKSB7XG4gIGlmIChFcnIgPT09IHZvaWQgMCkge1xuICAgIEVyciA9IEVycm9yO1xuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyKG1lc3NhZ2UpO1xuICB9XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5477\n")},289:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Z\": function() { return /* binding */ memoize; },\n/* harmony export */ \"A\": function() { return /* binding */ strategies; }\n/* harmony export */ });\n//\n// Main\n//\nfunction memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer\n });\n} //\n// Strategy\n//\n\nfunction isPrimitive(value) {\n return value == null || typeof value === 'number' || typeof value === 'boolean'; // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\n\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n\n return computedValue;\n}\n\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n\n return computedValue;\n}\n\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\n\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\n\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\n\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n} //\n// Serializer\n//\n\n\nvar serializerDefault = function serializerDefault() {\n return JSON.stringify(arguments);\n}; //\n// Cache\n//\n\n\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\n\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n return key in this.cache;\n};\n\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\n\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\n\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n }\n};\nvar strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvZmFzdC1tZW1vaXplL2xpYi9pbmRleC5qcz83NGI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBLGtGQUFrRjtBQUNsRjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIyODkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gTWFpblxuLy9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lbW9pemUoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGNhY2hlID0gb3B0aW9ucyAmJiBvcHRpb25zLmNhY2hlID8gb3B0aW9ucy5jYWNoZSA6IGNhY2hlRGVmYXVsdDtcbiAgdmFyIHNlcmlhbGl6ZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuc2VyaWFsaXplciA/IG9wdGlvbnMuc2VyaWFsaXplciA6IHNlcmlhbGl6ZXJEZWZhdWx0O1xuICB2YXIgc3RyYXRlZ3kgPSBvcHRpb25zICYmIG9wdGlvbnMuc3RyYXRlZ3kgPyBvcHRpb25zLnN0cmF0ZWd5IDogc3RyYXRlZ3lEZWZhdWx0O1xuICByZXR1cm4gc3RyYXRlZ3koZm4sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplcjogc2VyaWFsaXplclxuICB9KTtcbn0gLy9cbi8vIFN0cmF0ZWd5XG4vL1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nOyAvLyB8fCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJ3Vuc2FmZScgcHJpbWl0aXZlIGZvciBvdXIgbmVlZHNcbn1cblxuZnVuY3Rpb24gbW9uYWRpYyhmbiwgY2FjaGUsIHNlcmlhbGl6ZXIsIGFyZykge1xuICB2YXIgY2FjaGVLZXkgPSBpc1ByaW1pdGl2ZShhcmcpID8gYXJnIDogc2VyaWFsaXplcihhcmcpO1xuICB2YXIgY29tcHV0ZWRWYWx1ZSA9IGNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgaWYgKHR5cGVvZiBjb21wdXRlZFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIGNvbXB1dGVkVmFsdWUgPSBmbi5jYWxsKHRoaXMsIGFyZyk7XG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCBjb21wdXRlZFZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBjb21wdXRlZFZhbHVlO1xufVxuXG5mdW5jdGlvbiB2YXJpYWRpYyhmbiwgY2FjaGUsIHNlcmlhbGl6ZXIpIHtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpO1xuICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemVyKGFyZ3MpO1xuICB2YXIgY29tcHV0ZWRWYWx1ZSA9IGNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgaWYgKHR5cGVvZiBjb21wdXRlZFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIGNvbXB1dGVkVmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICBjYWNoZS5zZXQoY2FjaGVLZXksIGNvbXB1dGVkVmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGVkVmFsdWU7XG59XG5cbmZ1bmN0aW9uIGFzc2VtYmxlKGZuLCBjb250ZXh0LCBzdHJhdGVneSwgY2FjaGUsIHNlcmlhbGl6ZSkge1xuICByZXR1cm4gc3RyYXRlZ3kuYmluZChjb250ZXh0LCBmbiwgY2FjaGUsIHNlcmlhbGl6ZSk7XG59XG5cbmZ1bmN0aW9uIHN0cmF0ZWd5RGVmYXVsdChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSBmbi5sZW5ndGggPT09IDEgPyBtb25hZGljIDogdmFyaWFkaWM7XG4gIHJldHVybiBhc3NlbWJsZShmbiwgdGhpcywgc3RyYXRlZ3ksIG9wdGlvbnMuY2FjaGUuY3JlYXRlKCksIG9wdGlvbnMuc2VyaWFsaXplcik7XG59XG5cbmZ1bmN0aW9uIHN0cmF0ZWd5VmFyaWFkaWMoZm4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGFzc2VtYmxlKGZuLCB0aGlzLCB2YXJpYWRpYywgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSwgb3B0aW9ucy5zZXJpYWxpemVyKTtcbn1cblxuZnVuY3Rpb24gc3RyYXRlZ3lNb25hZGljKGZuLCBvcHRpb25zKSB7XG4gIHJldHVybiBhc3NlbWJsZShmbiwgdGhpcywgbW9uYWRpYywgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSwgb3B0aW9ucy5zZXJpYWxpemVyKTtcbn0gLy9cbi8vIFNlcmlhbGl6ZXJcbi8vXG5cblxudmFyIHNlcmlhbGl6ZXJEZWZhdWx0ID0gZnVuY3Rpb24gc2VyaWFsaXplckRlZmF1bHQoKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmd1bWVudHMpO1xufTsgLy9cbi8vIENhY2hlXG4vL1xuXG5cbmZ1bmN0aW9uIE9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZSgpIHtcbiAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5IGluIHRoaXMuY2FjaGU7XG59O1xuXG5PYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuY2FjaGVba2V5XTtcbn07XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdGhpcy5jYWNoZVtrZXldID0gdmFsdWU7XG59O1xuXG52YXIgY2FjaGVEZWZhdWx0ID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBPYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUoKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgc3RyYXRlZ2llcyA9IHtcbiAgdmFyaWFkaWM6IHN0cmF0ZWd5VmFyaWFkaWMsXG4gIG1vbmFkaWM6IHN0cmF0ZWd5TW9uYWRpY1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///289\n")},1895:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"wD\": function() { return /* reexport */ TYPE; },\n \"VG\": function() { return /* reexport */ isArgumentElement; },\n \"rp\": function() { return /* reexport */ isDateElement; },\n \"Ii\": function() { return /* reexport */ isDateTimeSkeleton; },\n \"O4\": function() { return /* reexport */ isLiteralElement; },\n \"uf\": function() { return /* reexport */ isNumberElement; },\n \"Wh\": function() { return /* reexport */ isNumberSkeleton; },\n \"Jo\": function() { return /* reexport */ isPluralElement; },\n \"yx\": function() { return /* reexport */ isPoundElement; },\n \"Wi\": function() { return /* reexport */ isSelectElement; },\n \"HI\": function() { return /* reexport */ isTagElement; },\n \"pe\": function() { return /* reexport */ isTimeElement; },\n \"Qc\": function() { return /* binding */ parse; }\n});\n\n// UNUSED EXPORTS: SKELETON_TYPE, createLiteralElement, createNumberElement\n\n// EXTERNAL MODULE: ./node_modules/tslib/tslib.es6.js\nvar tslib_es6 = __webpack_require__(9900);\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/error.js\nvar ErrorKind;\n\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.from-entries.js\nvar es_object_from_entries = __webpack_require__(8559);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim-start.js\nvar es_string_trim_start = __webpack_require__(5674);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim-end.js\nvar es_string_trim_end = __webpack_require__(8702);\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/types.js\nvar TYPE;\n\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\n\nvar SKELETON_TYPE;\n\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\n\n\nfunction isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nfunction isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nfunction isNumberElement(el) {\n return el.type === TYPE.number;\n}\nfunction isDateElement(el) {\n return el.type === TYPE.date;\n}\nfunction isTimeElement(el) {\n return el.type === TYPE.time;\n}\nfunction isSelectElement(el) {\n return el.type === TYPE.select;\n}\nfunction isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nfunction isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nfunction isTagElement(el) {\n return el.type === TYPE.tag;\n}\nfunction isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nfunction isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nfunction createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value\n };\n}\nfunction createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style\n };\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js\n// @generated from regex-gen.ts\nvar SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\n\nfunction parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n\n case 'a':\n // AM, PM\n result.hour12 = true;\n break;\n\n case 'b': // am, pm, noon, midnight\n\n case 'B':\n // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n\n case 'z':\n // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n\n case 'O': // 1, 4: miliseconds in day short, long\n\n case 'v': // 1, 4: generic non-location format\n\n case 'V': // 1, 2, 3, 4: time zone ID or city\n\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n\n return '';\n });\n return result;\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js\n// @generated from regex-gen.ts\nvar regex_generated_WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-skeleton-parser/lib/number.js\n\n\nfunction parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n } // Parse the skeleton\n\n\n var stringTokens = skeleton.split(regex_generated_WHITE_SPACE_REGEX).filter(function (x) {\n return x.length > 0;\n });\n var tokens = [];\n\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n\n var stem = stemAndOptions[0],\n options = stemAndOptions.slice(1);\n\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n\n tokens.push({\n stem: stem,\n options: options\n });\n }\n\n return tokens;\n}\n\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\n\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\n\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n } // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n } // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n } // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n\n return '';\n });\n return result;\n}\n\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto'\n };\n\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting'\n };\n\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always'\n };\n\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting'\n };\n\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero'\n };\n\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting'\n };\n\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never'\n };\n }\n}\n\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering'\n };\n stem = stem.slice(2);\n } else if (stem[0] === 'E') {\n result = {\n notation: 'scientific'\n };\n stem = stem.slice(1);\n }\n\n if (result) {\n var signDisplay = stem.slice(0, 2);\n\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n } else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n\n result.minimumIntegerDigits = stem.length;\n }\n\n return result;\n}\n\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n\n if (signOpts) {\n return signOpts;\n }\n\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\n\n\nfunction parseNumberSkeleton(tokens) {\n var result = {};\n\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n\n case 'scientific':\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), {\n notation: 'scientific'\n }), token.options.reduce(function (all, opt) {\n return (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, all), parseNotationOptions(opt));\n }, {}));\n continue;\n\n case 'engineering':\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), {\n notation: 'engineering'\n }), token.options.reduce(function (all, opt) {\n return (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, all), parseNotationOptions(opt));\n }, {}));\n continue;\n\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n } else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n } else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n\n return '';\n });\n continue;\n } // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n\n\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n } // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n } // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n } else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n\n return '';\n });\n\n if (token.options.length) {\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), parseSignificantPrecision(token.options[0]));\n }\n\n continue;\n } // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n\n\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n\n var signOpts = parseSign(token.stem);\n\n if (signOpts) {\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), signOpts);\n }\n\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n\n if (conciseScientificAndEngineeringOpts) {\n result = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n\n return result;\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js\n\n\n\n\nvar _a;\n\n\n\n\n\n\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\" + SPACE_SEPARATOR_REGEX.source + \"*\");\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(SPACE_SEPARATOR_REGEX.source + \"*$\");\n\nfunction createLocation(start, end) {\n return {\n start: start,\n end: end\n };\n} // #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\n\n\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger ? Number.isSafeInteger : function (n) {\n return typeof n === 'number' && isFinite(n) && Math.floor(n) === n && Math.abs(n) <= 0x1fffffffffffff;\n}; // IE11 does not support y and u.\n\nvar REGEX_SUPPORTS_U_AND_Y = true;\n\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n} catch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\n\nvar startsWith = hasNativeStartsWith ? // Native\nfunction startsWith(s, search, position) {\n return s.startsWith(search, position);\n} : // For IE11\nfunction startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n};\nvar fromCodePoint = hasNativeFromCodePoint ? String.fromCodePoint : // IE11\nfunction fromCodePoint() {\n var codePoints = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff) throw RangeError(code + ' is not a valid code point');\n elements += code < 0x10000 ? String.fromCharCode(code) : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00);\n }\n\n return elements;\n};\nvar fromEntries = // native\nhasNativeFromEntries ? Object.fromEntries : // Ponyfill\nfunction fromEntries(entries) {\n var obj = {};\n\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i],\n k = _a[0],\n v = _a[1];\n obj[k] = v;\n }\n\n return obj;\n};\nvar codePointAt = hasNativeCodePointAt ? // Native\nfunction codePointAt(s, index) {\n return s.codePointAt(index);\n} : // IE 11\nfunction codePointAt(s, index) {\n var size = s.length;\n\n if (index < 0 || index >= size) {\n return undefined;\n }\n\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 || first > 0xdbff || index + 1 === size || (second = s.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? first : (first - 0xd800 << 10) + (second - 0xdc00) + 0x10000;\n};\nvar trimStart = hasTrimStart ? // Native\nfunction trimStart(s) {\n return s.trimStart();\n} : // Ponyfill\nfunction trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n};\nvar trimEnd = hasTrimEnd ? // Native\nfunction trimEnd(s) {\n return s.trimEnd();\n} : // Ponyfill\nfunction trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n}; // Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\n\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n} // #endregion\n\n\nvar matchIdentifierAtIndex;\n\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n} else {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n\n while (true) {\n var c = codePointAt(s, index);\n\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n\n return fromCodePoint.apply(void 0, match);\n };\n}\n\nvar Parser =\n/** @class */\nfunction () {\n function Parser(message, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.message = message;\n this.position = {\n offset: 0,\n line: 1,\n column: 1\n };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n\n return this.parseMessage(0, '', false);\n };\n\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n\n while (!this.isEOF()) {\n var char = this.char();\n\n if (char === 123\n /* `{` */\n ) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n\n if (result.err) {\n return result;\n }\n\n elements.push(result.val);\n } else if (char === 125\n /* `}` */\n && nestingLevel > 0) {\n break;\n } else if (char === 35\n /* `#` */\n && (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition())\n });\n } else if (char === 60\n /* `<` */\n && !this.ignoreTag && this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n } else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n } else if (char === 60\n /* `<` */\n && !this.ignoreTag && _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n\n if (result.err) {\n return result;\n }\n\n elements.push(result.val);\n } else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n\n if (result.err) {\n return result;\n }\n\n elements.push(result.val);\n }\n }\n\n return {\n val: elements,\n err: null\n };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n\n\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n\n var tagName = this.parseTagName();\n this.bumpSpace();\n\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\" + tagName + \"/>\",\n location: createLocation(startPosition, this.clonePosition())\n },\n err: null\n };\n } else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n\n if (childrenResult.err) {\n return childrenResult;\n }\n\n var children = childrenResult.val; // Expecting a close tag\n\n var endTagStartPosition = this.clonePosition();\n\n if (this.bumpIf('</')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n\n if (tagName !== closingTagName) {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n\n this.bumpSpace();\n\n if (!this.bumpIf('>')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition())\n },\n err: null\n };\n } else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n } else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n\n\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n\n return this.message.slice(startOffset, this.offset());\n };\n\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n\n break;\n }\n\n var location = createLocation(start, this.clonePosition());\n return {\n val: {\n type: TYPE.literal,\n value: value,\n location: location\n },\n err: null\n };\n };\n\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() && this.char() === 60\n /* `<` */\n && (this.ignoreTag || // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n\n return '<';\n }\n\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n\n\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39\n /* `'` */\n ) {\n return null;\n } // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n\n\n switch (this.peek()) {\n case 39\n /* `'` */\n :\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n\n case 35:\n // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n\n return null;\n\n default:\n return null;\n }\n\n this.bump(); // apostrophe\n\n var codePoints = [this.char()]; // escaped char\n\n this.bump(); // read chars until the optional closing apostrophe is found\n\n while (!this.isEOF()) {\n var ch = this.char();\n\n if (ch === 39\n /* `'` */\n ) {\n if (this.peek() === 39\n /* `'` */\n ) {\n codePoints.push(39); // Bump one more time because we need to skip 2 characters.\n\n this.bump();\n } else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n } else {\n codePoints.push(ch);\n }\n\n this.bump();\n }\n\n return fromCodePoint.apply(void 0, codePoints);\n };\n\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n\n var ch = this.char();\n\n if (ch === 60\n /* `<` */\n || ch === 123\n /* `{` */\n || ch === 35\n /* `#` */\n && (parentArgType === 'plural' || parentArgType === 'selectordinal') || ch === 125\n /* `}` */\n && nestingLevel > 0) {\n return null;\n } else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n\n this.bumpSpace();\n\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n\n if (this.char() === 125\n /* `}` */\n ) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n } // argument name\n\n\n var value = this.parseIdentifierIfPossible().value;\n\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n\n this.bumpSpace();\n\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125\n /* `}` */\n :\n {\n this.bump(); // `}`\n\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition())\n },\n err: null\n };\n }\n // Argument with options: `{name, format, ...}`\n\n case 44\n /* `,` */\n :\n {\n this.bump(); // `,`\n\n this.bumpSpace();\n\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n\n\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return {\n value: value,\n location: location\n };\n };\n\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a; // Parse this range:\n // {name, type, style}\n // ^---^\n\n\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n\n case 'number':\n case 'date':\n case 'time':\n {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n\n if (result.err) {\n return result;\n }\n\n var style = trimEnd(result.val);\n\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = {\n style: style,\n styleLocation: styleLocation\n };\n }\n\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\n if (argCloseResult.err) {\n return argCloseResult;\n }\n\n var location_1 = createLocation(openingBracePosition, this.clonePosition()); // Extract style or skeleton\n\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n\n if (result.err) {\n return result;\n }\n\n return {\n val: {\n type: TYPE.number,\n value: value,\n location: location_1,\n style: result.val\n },\n err: null\n };\n } else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons ? parseDateTimeSkeleton(skeleton) : {}\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: {\n type: type,\n value: value,\n location: location_1,\n style: style\n },\n err: null\n };\n }\n } // Regular style or no style.\n\n\n return {\n val: {\n type: argType === 'number' ? TYPE.number : argType === 'date' ? TYPE.date : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null\n },\n err: null\n };\n }\n\n case 'plural':\n case 'selectordinal':\n case 'select':\n {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, (0,tslib_es6/* __assign */.pi)({}, typeEndPosition_1)));\n }\n\n this.bumpSpace(); // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n\n if (result.err) {\n return result;\n } // Parse another identifier for option parsing\n\n\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n\n if (optionsResult.err) {\n return optionsResult;\n }\n\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\n if (argCloseResult.err) {\n return argCloseResult;\n }\n\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2\n },\n err: null\n };\n } else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2\n },\n err: null\n };\n }\n }\n\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125\n /* `}` */\n ) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n\n this.bump(); // `}`\n\n return {\n val: true,\n err: null\n };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n\n\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n\n while (!this.isEOF()) {\n var ch = this.char();\n\n switch (ch) {\n case 39\n /* `'` */\n :\n {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n\n this.bump();\n break;\n }\n\n case 123\n /* `{` */\n :\n {\n nestedBraces += 1;\n this.bump();\n break;\n }\n\n case 125\n /* `}` */\n :\n {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n } else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null\n };\n }\n\n break;\n }\n\n default:\n this.bump();\n break;\n }\n }\n\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null\n };\n };\n\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n } catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons ? parseNumberSkeleton(tokens) : {}\n },\n err: null\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n\n\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value,\n selectorLocation = parsedFirstIdentifier.location; // Parse:\n // one {one apple}\n // ^--^\n\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n\n if (result.err) {\n return result;\n }\n\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n } else {\n break;\n }\n } // Duplicate selector clauses\n\n\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select' ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n\n if (selector === 'other') {\n hasOtherClause = true;\n } // Parse:\n // one {one apple}\n // ^----------^\n\n\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select' ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n\n if (fragmentResult.err) {\n return fragmentResult;\n }\n\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\n if (argCloseResult.err) {\n return argCloseResult;\n }\n\n options.push([selector, {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition())\n }]); // Keep track of the existing selectors\n\n parsedSelectors.add(selector); // Prep next selector clause.\n\n this.bumpSpace();\n _a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location;\n }\n\n if (options.length === 0) {\n return this.error(parentArgType === 'select' ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n\n return {\n val: options,\n err: null\n };\n };\n\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n\n if (this.bumpIf('+')) {} else if (this.bumpIf('-')) {\n sign = -1;\n }\n\n var hasDigits = false;\n var decimal = 0;\n\n while (!this.isEOF()) {\n var ch = this.char();\n\n if (ch >= 48\n /* `0` */\n && ch <= 57\n /* `9` */\n ) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n } else {\n break;\n }\n }\n\n var location = createLocation(startingPosition, this.clonePosition());\n\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n\n decimal *= sign;\n\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n\n return {\n val: decimal,\n err: null\n };\n };\n\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n\n\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n\n var code = codePointAt(this.message, offset);\n\n if (code === undefined) {\n throw Error(\"Offset \" + offset + \" is at invalid UTF-16 code unit boundary\");\n }\n\n return code;\n };\n\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location\n }\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n\n\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n\n var code = this.char();\n\n if (code === 10\n /* '\\n' */\n ) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n } else {\n this.position.column += 1; // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n\n\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n\n return true;\n }\n\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n\n\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n } else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n\n\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" must be greater than or equal to the current offset \" + this.offset());\n }\n\n targetOffset = Math.min(targetOffset, this.message.length);\n\n while (true) {\n var offset = this.offset();\n\n if (offset === targetOffset) {\n break;\n }\n\n if (offset > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" is at invalid UTF-16 code unit boundary\");\n }\n\n this.bump();\n\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n\n\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n\n\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n\n return Parser;\n}();\n\n\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\n\nfunction _isAlpha(codepoint) {\n return codepoint >= 97 && codepoint <= 122 || codepoint >= 65 && codepoint <= 90;\n}\n\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47;\n /* '/' */\n}\n/** See `parseTag` function docs. */\n\n\nfunction _isPotentialElementNameChar(c) {\n return c === 45\n /* '-' */\n || c === 46\n /* '.' */\n || c >= 48 && c <= 57\n /* 0..9 */\n || c === 95\n /* '_' */\n || c >= 97 && c <= 122\n /** a..z */\n || c >= 65 && c <= 90\n /* A..Z */\n || c == 0xb7 || c >= 0xc0 && c <= 0xd6 || c >= 0xd8 && c <= 0xf6 || c >= 0xf8 && c <= 0x37d || c >= 0x37f && c <= 0x1fff || c >= 0x200c && c <= 0x200d || c >= 0x203f && c <= 0x2040 || c >= 0x2070 && c <= 0x218f || c >= 0x2c00 && c <= 0x2fef || c >= 0x3001 && c <= 0xd7ff || c >= 0xf900 && c <= 0xfdcf || c >= 0xfdf0 && c <= 0xfffd || c >= 0x10000 && c <= 0xeffff;\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\n\n\nfunction _isWhiteSpace(c) {\n return c >= 0x0009 && c <= 0x000d || c === 0x0020 || c === 0x0085 || c >= 0x200e && c <= 0x200f || c === 0x2028 || c === 0x2029;\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\n\n\nfunction _isPatternSyntax(c) {\n return c >= 0x0021 && c <= 0x0023 || c === 0x0024 || c >= 0x0025 && c <= 0x0027 || c === 0x0028 || c === 0x0029 || c === 0x002a || c === 0x002b || c === 0x002c || c === 0x002d || c >= 0x002e && c <= 0x002f || c >= 0x003a && c <= 0x003b || c >= 0x003c && c <= 0x003e || c >= 0x003f && c <= 0x0040 || c === 0x005b || c === 0x005c || c === 0x005d || c === 0x005e || c === 0x0060 || c === 0x007b || c === 0x007c || c === 0x007d || c === 0x007e || c === 0x00a1 || c >= 0x00a2 && c <= 0x00a5 || c === 0x00a6 || c === 0x00a7 || c === 0x00a9 || c === 0x00ab || c === 0x00ac || c === 0x00ae || c === 0x00b0 || c === 0x00b1 || c === 0x00b6 || c === 0x00bb || c === 0x00bf || c === 0x00d7 || c === 0x00f7 || c >= 0x2010 && c <= 0x2015 || c >= 0x2016 && c <= 0x2017 || c === 0x2018 || c === 0x2019 || c === 0x201a || c >= 0x201b && c <= 0x201c || c === 0x201d || c === 0x201e || c === 0x201f || c >= 0x2020 && c <= 0x2027 || c >= 0x2030 && c <= 0x2038 || c === 0x2039 || c === 0x203a || c >= 0x203b && c <= 0x203e || c >= 0x2041 && c <= 0x2043 || c === 0x2044 || c === 0x2045 || c === 0x2046 || c >= 0x2047 && c <= 0x2051 || c === 0x2052 || c === 0x2053 || c >= 0x2055 && c <= 0x205e || c >= 0x2190 && c <= 0x2194 || c >= 0x2195 && c <= 0x2199 || c >= 0x219a && c <= 0x219b || c >= 0x219c && c <= 0x219f || c === 0x21a0 || c >= 0x21a1 && c <= 0x21a2 || c === 0x21a3 || c >= 0x21a4 && c <= 0x21a5 || c === 0x21a6 || c >= 0x21a7 && c <= 0x21ad || c === 0x21ae || c >= 0x21af && c <= 0x21cd || c >= 0x21ce && c <= 0x21cf || c >= 0x21d0 && c <= 0x21d1 || c === 0x21d2 || c === 0x21d3 || c === 0x21d4 || c >= 0x21d5 && c <= 0x21f3 || c >= 0x21f4 && c <= 0x22ff || c >= 0x2300 && c <= 0x2307 || c === 0x2308 || c === 0x2309 || c === 0x230a || c === 0x230b || c >= 0x230c && c <= 0x231f || c >= 0x2320 && c <= 0x2321 || c >= 0x2322 && c <= 0x2328 || c === 0x2329 || c === 0x232a || c >= 0x232b && c <= 0x237b || c === 0x237c || c >= 0x237d && c <= 0x239a || c >= 0x239b && c <= 0x23b3 || c >= 0x23b4 && c <= 0x23db || c >= 0x23dc && c <= 0x23e1 || c >= 0x23e2 && c <= 0x2426 || c >= 0x2427 && c <= 0x243f || c >= 0x2440 && c <= 0x244a || c >= 0x244b && c <= 0x245f || c >= 0x2500 && c <= 0x25b6 || c === 0x25b7 || c >= 0x25b8 && c <= 0x25c0 || c === 0x25c1 || c >= 0x25c2 && c <= 0x25f7 || c >= 0x25f8 && c <= 0x25ff || c >= 0x2600 && c <= 0x266e || c === 0x266f || c >= 0x2670 && c <= 0x2767 || c === 0x2768 || c === 0x2769 || c === 0x276a || c === 0x276b || c === 0x276c || c === 0x276d || c === 0x276e || c === 0x276f || c === 0x2770 || c === 0x2771 || c === 0x2772 || c === 0x2773 || c === 0x2774 || c === 0x2775 || c >= 0x2794 && c <= 0x27bf || c >= 0x27c0 && c <= 0x27c4 || c === 0x27c5 || c === 0x27c6 || c >= 0x27c7 && c <= 0x27e5 || c === 0x27e6 || c === 0x27e7 || c === 0x27e8 || c === 0x27e9 || c === 0x27ea || c === 0x27eb || c === 0x27ec || c === 0x27ed || c === 0x27ee || c === 0x27ef || c >= 0x27f0 && c <= 0x27ff || c >= 0x2800 && c <= 0x28ff || c >= 0x2900 && c <= 0x2982 || c === 0x2983 || c === 0x2984 || c === 0x2985 || c === 0x2986 || c === 0x2987 || c === 0x2988 || c === 0x2989 || c === 0x298a || c === 0x298b || c === 0x298c || c === 0x298d || c === 0x298e || c === 0x298f || c === 0x2990 || c === 0x2991 || c === 0x2992 || c === 0x2993 || c === 0x2994 || c === 0x2995 || c === 0x2996 || c === 0x2997 || c === 0x2998 || c >= 0x2999 && c <= 0x29d7 || c === 0x29d8 || c === 0x29d9 || c === 0x29da || c === 0x29db || c >= 0x29dc && c <= 0x29fb || c === 0x29fc || c === 0x29fd || c >= 0x29fe && c <= 0x2aff || c >= 0x2b00 && c <= 0x2b2f || c >= 0x2b30 && c <= 0x2b44 || c >= 0x2b45 && c <= 0x2b46 || c >= 0x2b47 && c <= 0x2b4c || c >= 0x2b4d && c <= 0x2b73 || c >= 0x2b74 && c <= 0x2b75 || c >= 0x2b76 && c <= 0x2b95 || c === 0x2b96 || c >= 0x2b97 && c <= 0x2bff || c >= 0x2e00 && c <= 0x2e01 || c === 0x2e02 || c === 0x2e03 || c === 0x2e04 || c === 0x2e05 || c >= 0x2e06 && c <= 0x2e08 || c === 0x2e09 || c === 0x2e0a || c === 0x2e0b || c === 0x2e0c || c === 0x2e0d || c >= 0x2e0e && c <= 0x2e16 || c === 0x2e17 || c >= 0x2e18 && c <= 0x2e19 || c === 0x2e1a || c === 0x2e1b || c === 0x2e1c || c === 0x2e1d || c >= 0x2e1e && c <= 0x2e1f || c === 0x2e20 || c === 0x2e21 || c === 0x2e22 || c === 0x2e23 || c === 0x2e24 || c === 0x2e25 || c === 0x2e26 || c === 0x2e27 || c === 0x2e28 || c === 0x2e29 || c >= 0x2e2a && c <= 0x2e2e || c === 0x2e2f || c >= 0x2e30 && c <= 0x2e39 || c >= 0x2e3a && c <= 0x2e3b || c >= 0x2e3c && c <= 0x2e3f || c === 0x2e40 || c === 0x2e41 || c === 0x2e42 || c >= 0x2e43 && c <= 0x2e4f || c >= 0x2e50 && c <= 0x2e51 || c === 0x2e52 || c >= 0x2e53 && c <= 0x2e7f || c >= 0x3001 && c <= 0x3003 || c === 0x3008 || c === 0x3009 || c === 0x300a || c === 0x300b || c === 0x300c || c === 0x300d || c === 0x300e || c === 0x300f || c === 0x3010 || c === 0x3011 || c >= 0x3012 && c <= 0x3013 || c === 0x3014 || c === 0x3015 || c === 0x3016 || c === 0x3017 || c === 0x3018 || c === 0x3019 || c === 0x301a || c === 0x301b || c === 0x301c || c === 0x301d || c >= 0x301e && c <= 0x301f || c === 0x3020 || c === 0x3030 || c === 0xfd3e || c === 0xfd3f || c >= 0xfe45 && c <= 0xfe46;\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/index.js\n\n\n\n\n\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n } else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n } else if ((isDateElement(el) || isTimeElement(el)) && isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n } else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\n\nfunction parse(message, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n opts = (0,tslib_es6/* __assign */.pi)({\n shouldParseSkeletons: true,\n requiresOtherClause: true\n }, opts);\n var result = new Parser(message, opts).parse();\n\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]); // @ts-expect-error Assign to error object\n\n error.location = result.err.location; // @ts-expect-error Assign to error object\n\n error.originalMessage = result.err.message;\n throw error;\n }\n\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n\n return result.val;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaWN1LW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL2xpYi9lcnJvci5qcz9jYWFlIiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pY3UtbWVzc2FnZWZvcm1hdC1wYXJzZXIvbGliL3R5cGVzLmpzP2MwY2QiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ljdS1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvcmVnZXguZ2VuZXJhdGVkLmpzP2E1ZTUiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ljdS1za2VsZXRvbi1wYXJzZXIvbGliL2RhdGUtdGltZS5qcz8xYThjIiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pY3Utc2tlbGV0b24tcGFyc2VyL2xpYi9yZWdleC5nZW5lcmF0ZWQuanM/ODc2MiIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaWN1LXNrZWxldG9uLXBhcnNlci9saWIvbnVtYmVyLmpzPzdhM2QiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ljdS1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvcGFyc2VyLmpzPzFjYTIiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ljdS1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvaW5kZXguanM/YTM4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPOztBQUVQO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBLG9DQUFvQyxLQUFLOztBQUV6QztBQUNBLHNDQUFzQyxLQUFLOztBQUUzQztBQUNBLHdDQUF3QyxRQUFROztBQUVoRDtBQUNBLHVDQUF1QyxjQUFjOztBQUVyRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwwREFBMEQsZ0JBQWdCOztBQUUxRTtBQUNBLDZEQUE2RCxjQUFjOztBQUUzRTtBQUNBLDBEQUEwRDs7QUFFMUQ7QUFDQSw4Q0FBOEMsWUFBWTs7QUFFMUQ7QUFDQSwrRUFBK0Usb0JBQW9COztBQUVuRztBQUNBLHFFQUFxRSx1QkFBdUI7O0FBRTVGO0FBQ0EsdURBQXVELFlBQVk7O0FBRW5FO0FBQ0EsMEVBQTBFLFlBQVk7O0FBRXRGO0FBQ0EsdUVBQXVFLG1CQUFtQjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUI7O0FBRUE7QUFDQSxtRUFBbUUsaUJBQWlCLEdBQUc7O0FBRXZGO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCLEVBQUUsTUFBTSxHQUFHO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQSxZQUFZLG9CQUFvQixNQUFNLFFBQVEsT0FBTztBQUNyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLDhCQUE4QixHOzs7Ozs7OztBQ3hGeEI7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELElBQUk7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsb0JBQW9COztBQUVkOztBQUVQO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0NBQXNDO0FBQ3ZDO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQzs7QUMxR0E7QUFDTztBQUNBLCtEOztBQ0ZQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLGNBQWMsSUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsT0FBTyxJQUFJLFFBQVEsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksV0FBVyxJQUFJO0FBQ3JLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDOztBQzdKQTtBQUNPLElBQUksaUNBQWlCLDJDOztBQ0RLO0FBQ3FCO0FBQy9DO0FBQ1A7QUFDQTtBQUNBLEdBQUc7OztBQUdILG9DQUFvQyxpQ0FBaUI7QUFDckQ7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaURBQWlELDRCQUE0QjtBQUM3RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5Qyx1QkFBdUI7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQOztBQUVBLHFDQUFxQyxzQkFBc0I7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4QkFBUSxDQUFDLDhCQUFRLENBQUMsOEJBQVEsR0FBRztBQUM5QztBQUNBLFNBQVM7QUFDVCxpQkFBaUIsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHO0FBQ3JDLFNBQVMsSUFBSTtBQUNiOztBQUVBO0FBQ0EsaUJBQWlCLDhCQUFRLENBQUMsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHO0FBQzlDO0FBQ0EsU0FBUztBQUNULGlCQUFpQiw4QkFBUSxDQUFDLDhCQUFRLEdBQUc7QUFDckMsU0FBUyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLGlCQUFpQiw4QkFBUSxDQUFDLDhCQUFRLEdBQUc7QUFDckM7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLGVBQWUsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHO0FBQ25DO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxlQUFlLDhCQUFRLENBQUMsOEJBQVEsR0FBRztBQUNuQzs7QUFFQTs7QUFFQTtBQUNBLGVBQWUsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxDOztBQzNWbUQ7QUFDRjtBQUNGOztBQUUvQzs7QUFFaUM7QUFDRztBQUNVO0FBQ1k7QUFDZ0U7QUFDMUgsbURBQW1ELDRCQUE0QjtBQUMvRSwyQ0FBMkMsNEJBQTRCOztBQUV2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0Esc0JBQXNCLFlBQVksSUFBSSxlQUFlO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVDQUF1Qyx1QkFBdUI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsQ0FBQzs7O0FBR0Q7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxZQUFZLElBQUksZUFBZTs7QUFFekU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxXQUFXO0FBQ1g7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsOEJBQThCLCtCQUErQjtBQUM3RDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLCtCQUErQjtBQUMzRDs7QUFFQTs7QUFFQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQLDBCQUEwQixzQkFBc0I7QUFDaEQ7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCLHFCQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsWUFBWTtBQUMxQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGdCQUFnQjs7QUFFaEIsbUNBQW1DOztBQUVuQyxnQkFBZ0I7O0FBRWhCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixNQUFNOztBQUV0Qjs7QUFFQTtBQUNBLHdCQUF3Qix1Q0FBdUM7QUFDL0Q7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDBCQUEwQix3QkFBd0I7QUFDbEQsT0FBTzs7O0FBR1A7O0FBRUE7QUFDQSx3QkFBd0IsNEJBQTRCO0FBQ3BEOztBQUVBOztBQUVBO0FBQ0Esd0JBQXdCLHVDQUF1QztBQUMvRDs7QUFFQTtBQUNBLDRCQUE0QixLQUFLO0FBQ2pDO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxzQkFBc0IsTUFBTTs7QUFFNUI7QUFDQTtBQUNBLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msa0JBQWtCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7O0FBRUE7QUFDQSw4QkFBOEIsdUNBQXVDO0FBQ3JFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXO0FBQ1gsUUFBUTtBQUNSOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhCQUE4Qjs7QUFFeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0NBQWdDLCtCQUErQjtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNGQUFzRjs7QUFFdEY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsV0FBVztBQUNuQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGtDQUFrQyxtQ0FBbUM7QUFDckU7O0FBRUE7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQSwyREFBMkQscUJBQXFCO0FBQ2hGO0FBQ0EsOENBQThDLFNBQVMsR0FBRyxTQUFTO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBO0FBQ0EsMkNBQTJDLFdBQVcsd0JBQXdCLFNBQVMsR0FBRyxTQUFTO0FBQ25HO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsd0NBQXdDLG9DQUFvQyw4QkFBUSxHQUFHO0FBQ3JIOztBQUVBLDJCQUEyQjtBQUMzQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFtQixJQUFJLFFBQVE7QUFDN0M7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0NBQWdDLDZDQUE2QztBQUM3RTs7QUFFQTtBQUNBLHFEQUFxRCw2Q0FBNkMsRUFBRSw4Q0FBOEM7O0FBRWxKO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixXQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxzQkFBc0IsV0FBVztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLCtCQUErQjtBQUN6RDtBQUNBOztBQUVBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSwwQkFBMEIsdUNBQXVDO0FBQ2pFOztBQUVBLGdCQUFnQixNQUFNOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0MsMENBQTBDO0FBQzFFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSw2QkFBNkI7QUFDNUMsS0FBSztBQUNMLHdCQUF3QixpQ0FBaUM7QUFDekQ7O0FBRUE7QUFDQTtBQUNBLGNBQWMsb0JBQW9CO0FBQ2xDO0FBQ0E7QUFDQSxtREFBbUQsbUJBQW1CO0FBQ3RFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRCxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLE9BQU87QUFDakMsbURBQW1ELHlDQUF5QyxFQUFFLDBDQUEwQzs7QUFFeEk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsdURBQXVELDRDQUE0QyxHQUFHLDRDQUE0QztBQUNsSjs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLGNBQWM7QUFDZDs7O0FBR0E7QUFDQTs7QUFFQSx5QkFBeUI7QUFDekIsdURBQXVELGtEQUFrRCxHQUFHLGtEQUFrRDtBQUM5Sjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sR0FBRzs7QUFFVixvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFEQUFxRCx5Q0FBeUMsR0FBRyx5Q0FBeUM7QUFDMUk7O0FBRUE7QUFDQSx3QkFBd0IsOEJBQThCO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUE0QjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVpQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxZQUFZO0FBQ2xEO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGVBQWU7QUFDckQ7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLEM7O0FDbHVDaUM7QUFDRztBQUNGO0FBQzRIOztBQUU5SjtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxlQUFlLFFBQVEsZUFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssVUFBVSxlQUFlLFFBQVEsZ0JBQWdCO0FBQ3REO0FBQ0EsS0FBSyxXQUFXLGFBQWEsUUFBUSxhQUFhLFNBQVMsa0JBQWtCO0FBQzdFO0FBQ0EsS0FBSyxVQUFVLFlBQVk7QUFDM0I7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDhCQUFRO0FBQ2pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsbUJBQW1CLE1BQU07O0FBRXpCO0FBQ0EsNEJBQTRCLFNBQVMsbUJBQW1COztBQUV4RCx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIxODk1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBFcnJvcktpbmQ7XG5cbihmdW5jdGlvbiAoRXJyb3JLaW5kKSB7XG4gIC8qKiBBcmd1bWVudCBpcyB1bmNsb3NlZCAoZS5nLiBgezBgKSAqL1xuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX0FSR1VNRU5UX0NMT1NJTkdfQlJBQ0VcIl0gPSAxXSA9IFwiRVhQRUNUX0FSR1VNRU5UX0NMT1NJTkdfQlJBQ0VcIjtcbiAgLyoqIEFyZ3VtZW50IGlzIGVtcHR5IChlLmcuIGB7fWApLiAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJFTVBUWV9BUkdVTUVOVFwiXSA9IDJdID0gXCJFTVBUWV9BUkdVTUVOVFwiO1xuICAvKiogQXJndW1lbnQgaXMgbWFsZm9ybWVkIChlLmcuIGB7Zm9vIX1gYCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiTUFMRk9STUVEX0FSR1VNRU5UXCJdID0gM10gPSBcIk1BTEZPUk1FRF9BUkdVTUVOVFwiO1xuICAvKiogRXhwZWN0IGFuIGFyZ3VtZW50IHR5cGUgKGUuZy4gYHtmb28sfWApICovXG5cbiAgRXJyb3JLaW5kW0Vycm9yS2luZFtcIkVYUEVDVF9BUkdVTUVOVF9UWVBFXCJdID0gNF0gPSBcIkVYUEVDVF9BUkdVTUVOVF9UWVBFXCI7XG4gIC8qKiBVbnN1cHBvcnRlZCBhcmd1bWVudCB0eXBlIChlLmcuIGB7Zm9vLGZvb31gKSAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJJTlZBTElEX0FSR1VNRU5UX1RZUEVcIl0gPSA1XSA9IFwiSU5WQUxJRF9BUkdVTUVOVF9UWVBFXCI7XG4gIC8qKiBFeHBlY3QgYW4gYXJndW1lbnQgc3R5bGUgKGUuZy4gYHtmb28sIG51bWJlciwgfWApICovXG5cbiAgRXJyb3JLaW5kW0Vycm9yS2luZFtcIkVYUEVDVF9BUkdVTUVOVF9TVFlMRVwiXSA9IDZdID0gXCJFWFBFQ1RfQVJHVU1FTlRfU1RZTEVcIjtcbiAgLyoqIFRoZSBudW1iZXIgc2tlbGV0b24gaXMgaW52YWxpZC4gKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiSU5WQUxJRF9OVU1CRVJfU0tFTEVUT05cIl0gPSA3XSA9IFwiSU5WQUxJRF9OVU1CRVJfU0tFTEVUT05cIjtcbiAgLyoqIFRoZSBkYXRlIHRpbWUgc2tlbGV0b24gaXMgaW52YWxpZC4gKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiSU5WQUxJRF9EQVRFX1RJTUVfU0tFTEVUT05cIl0gPSA4XSA9IFwiSU5WQUxJRF9EQVRFX1RJTUVfU0tFTEVUT05cIjtcbiAgLyoqIEV4ZXBjdCBhIG51bWJlciBza2VsZXRvbiBmb2xsb3dpbmcgdGhlIGA6OmAgKGUuZy4gYHtmb28sIG51bWJlciwgOjp9YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX05VTUJFUl9TS0VMRVRPTlwiXSA9IDldID0gXCJFWFBFQ1RfTlVNQkVSX1NLRUxFVE9OXCI7XG4gIC8qKiBFeGVwY3QgYSBkYXRlIHRpbWUgc2tlbGV0b24gZm9sbG93aW5nIHRoZSBgOjpgIChlLmcuIGB7Zm9vLCBkYXRlLCA6On1gKSAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJFWFBFQ1RfREFURV9USU1FX1NLRUxFVE9OXCJdID0gMTBdID0gXCJFWFBFQ1RfREFURV9USU1FX1NLRUxFVE9OXCI7XG4gIC8qKiBVbm1hdGNoZWQgYXBvc3Ryb3BoZXMgaW4gdGhlIGFyZ3VtZW50IHN0eWxlIChlLmcuIGB7Zm9vLCBudW1iZXIsICd0ZXN0YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiVU5DTE9TRURfUVVPVEVfSU5fQVJHVU1FTlRfU1RZTEVcIl0gPSAxMV0gPSBcIlVOQ0xPU0VEX1FVT1RFX0lOX0FSR1VNRU5UX1NUWUxFXCI7XG4gIC8qKiBNaXNzaW5nIHNlbGVjdCBhcmd1bWVudCBvcHRpb25zIChlLmcuIGB7Zm9vLCBzZWxlY3R9YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX1NFTEVDVF9BUkdVTUVOVF9PUFRJT05TXCJdID0gMTJdID0gXCJFWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX09QVElPTlNcIjtcbiAgLyoqIEV4cGVjdGluZyBhbiBvZmZzZXQgdmFsdWUgaW4gYHBsdXJhbGAgb3IgYHNlbGVjdG9yZGluYWxgIGFyZ3VtZW50IChlLmcgYHtmb28sIHBsdXJhbCwgb2Zmc2V0fWApICovXG5cbiAgRXJyb3JLaW5kW0Vycm9yS2luZFtcIkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfT0ZGU0VUX1ZBTFVFXCJdID0gMTNdID0gXCJFWFBFQ1RfUExVUkFMX0FSR1VNRU5UX09GRlNFVF9WQUxVRVwiO1xuICAvKiogT2Zmc2V0IHZhbHVlIGluIGBwbHVyYWxgIG9yIGBzZWxlY3RvcmRpbmFsYCBpcyBpbnZhbGlkIChlLmcuIGB7Zm9vLCBwbHVyYWwsIG9mZnNldDogeH1gKSAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJJTlZBTElEX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUVcIl0gPSAxNF0gPSBcIklOVkFMSURfUExVUkFMX0FSR1VNRU5UX09GRlNFVF9WQUxVRVwiO1xuICAvKiogRXhwZWN0aW5nIGEgc2VsZWN0b3IgaW4gYHNlbGVjdGAgYXJndW1lbnQgKGUuZyBge2Zvbywgc2VsZWN0fWApICovXG5cbiAgRXJyb3JLaW5kW0Vycm9yS2luZFtcIkVYUEVDVF9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1JcIl0gPSAxNV0gPSBcIkVYUEVDVF9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1JcIjtcbiAgLyoqIEV4cGVjdGluZyBhIHNlbGVjdG9yIGluIGBwbHVyYWxgIG9yIGBzZWxlY3RvcmRpbmFsYCBhcmd1bWVudCAoZS5nIGB7Zm9vLCBwbHVyYWx9YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUlwiXSA9IDE2XSA9IFwiRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUlwiO1xuICAvKiogRXhwZWN0aW5nIGEgbWVzc2FnZSBmcmFnbWVudCBhZnRlciB0aGUgYHNlbGVjdGAgc2VsZWN0b3IgKGUuZy4gYHtmb28sIHNlbGVjdCwgYXBwbGV9YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVFwiXSA9IDE3XSA9IFwiRVhQRUNUX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVFwiO1xuICAvKipcbiAgICogRXhwZWN0aW5nIGEgbWVzc2FnZSBmcmFnbWVudCBhZnRlciB0aGUgYHBsdXJhbGAgb3IgYHNlbGVjdG9yZGluYWxgIHNlbGVjdG9yXG4gICAqIChlLmcuIGB7Zm9vLCBwbHVyYWwsIG9uZX1gKVxuICAgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVFwiXSA9IDE4XSA9IFwiRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVFwiO1xuICAvKiogU2VsZWN0b3IgaW4gYHBsdXJhbGAgb3IgYHNlbGVjdG9yZGluYWxgIGlzIG1hbGZvcm1lZCAoZS5nLiBge2ZvbywgcGx1cmFsLCA9eCB7I319YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiSU5WQUxJRF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1JcIl0gPSAxOV0gPSBcIklOVkFMSURfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SXCI7XG4gIC8qKlxuICAgKiBEdXBsaWNhdGUgc2VsZWN0b3JzIGluIGBwbHVyYWxgIG9yIGBzZWxlY3RvcmRpbmFsYCBhcmd1bWVudC5cbiAgICogKGUuZy4ge2ZvbywgcGx1cmFsLCBvbmUgeyN9IG9uZSB7I319KVxuICAgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRFVQTElDQVRFX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUlwiXSA9IDIwXSA9IFwiRFVQTElDQVRFX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUlwiO1xuICAvKiogRHVwbGljYXRlIHNlbGVjdG9ycyBpbiBgc2VsZWN0YCBhcmd1bWVudC5cbiAgICogKGUuZy4ge2Zvbywgc2VsZWN0LCBhcHBsZSB7YXBwbGV9IGFwcGxlIHthcHBsZX19KVxuICAgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiRFVQTElDQVRFX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUlwiXSA9IDIxXSA9IFwiRFVQTElDQVRFX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUlwiO1xuICAvKiogUGx1cmFsIG9yIHNlbGVjdCBhcmd1bWVudCBvcHRpb24gbXVzdCBoYXZlIGBvdGhlcmAgY2xhdXNlLiAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJNSVNTSU5HX09USEVSX0NMQVVTRVwiXSA9IDIyXSA9IFwiTUlTU0lOR19PVEhFUl9DTEFVU0VcIjtcbiAgLyoqIFRoZSB0YWcgaXMgbWFsZm9ybWVkLiAoZS5nLiBgPGJvbGQhPmZvbzwvYm9sZCE+KSAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJJTlZBTElEX1RBR1wiXSA9IDIzXSA9IFwiSU5WQUxJRF9UQUdcIjtcbiAgLyoqIFRoZSB0YWcgbmFtZSBpcyBpbnZhbGlkLiAoZS5nLiBgPDEyMz5mb288LzEyMz5gKSAqL1xuXG4gIEVycm9yS2luZFtFcnJvcktpbmRbXCJJTlZBTElEX1RBR19OQU1FXCJdID0gMjVdID0gXCJJTlZBTElEX1RBR19OQU1FXCI7XG4gIC8qKiBUaGUgY2xvc2luZyB0YWcgZG9lcyBub3QgbWF0Y2ggdGhlIG9wZW5pbmcgdGFnLiAoZS5nLiBgPGJvbGQ+Zm9vPC9pdGFsaWM+YCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiVU5NQVRDSEVEX0NMT1NJTkdfVEFHXCJdID0gMjZdID0gXCJVTk1BVENIRURfQ0xPU0lOR19UQUdcIjtcbiAgLyoqIFRoZSBvcGVuaW5nIHRhZyBoYXMgdW5tYXRjaGVkIGNsb3NpbmcgdGFnLiAoZS5nLiBgPGJvbGQ+Zm9vYCkgKi9cblxuICBFcnJvcktpbmRbRXJyb3JLaW5kW1wiVU5DTE9TRURfVEFHXCJdID0gMjddID0gXCJVTkNMT1NFRF9UQUdcIjtcbn0pKEVycm9yS2luZCB8fCAoRXJyb3JLaW5kID0ge30pKTsiLCJleHBvcnQgdmFyIFRZUEU7XG5cbihmdW5jdGlvbiAoVFlQRSkge1xuICAvKipcbiAgICogUmF3IHRleHRcbiAgICovXG4gIFRZUEVbVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAvKipcbiAgICogVmFyaWFibGUgdy9vIGFueSBmb3JtYXQsIGUuZyBgdmFyYCBpbiBgdGhpcyBpcyBhIHt2YXJ9YFxuICAgKi9cblxuICBUWVBFW1RZUEVbXCJhcmd1bWVudFwiXSA9IDFdID0gXCJhcmd1bWVudFwiO1xuICAvKipcbiAgICogVmFyaWFibGUgdy8gbnVtYmVyIGZvcm1hdFxuICAgKi9cblxuICBUWVBFW1RZUEVbXCJudW1iZXJcIl0gPSAyXSA9IFwibnVtYmVyXCI7XG4gIC8qKlxuICAgKiBWYXJpYWJsZSB3LyBkYXRlIGZvcm1hdFxuICAgKi9cblxuICBUWVBFW1RZUEVbXCJkYXRlXCJdID0gM10gPSBcImRhdGVcIjtcbiAgLyoqXG4gICAqIFZhcmlhYmxlIHcvIHRpbWUgZm9ybWF0XG4gICAqL1xuXG4gIFRZUEVbVFlQRVtcInRpbWVcIl0gPSA0XSA9IFwidGltZVwiO1xuICAvKipcbiAgICogVmFyaWFibGUgdy8gc2VsZWN0IGZvcm1hdFxuICAgKi9cblxuICBUWVBFW1RZUEVbXCJzZWxlY3RcIl0gPSA1XSA9IFwic2VsZWN0XCI7XG4gIC8qKlxuICAgKiBWYXJpYWJsZSB3LyBwbHVyYWwgZm9ybWF0XG4gICAqL1xuXG4gIFRZUEVbVFlQRVtcInBsdXJhbFwiXSA9IDZdID0gXCJwbHVyYWxcIjtcbiAgLyoqXG4gICAqIE9ubHkgcG9zc2libGUgd2l0aGluIHBsdXJhbCBhcmd1bWVudC5cbiAgICogVGhpcyBpcyB0aGUgYCNgIHN5bWJvbCB0aGF0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgY291bnQuXG4gICAqL1xuXG4gIFRZUEVbVFlQRVtcInBvdW5kXCJdID0gN10gPSBcInBvdW5kXCI7XG4gIC8qKlxuICAgKiBYTUwtbGlrZSB0YWdcbiAgICovXG5cbiAgVFlQRVtUWVBFW1widGFnXCJdID0gOF0gPSBcInRhZ1wiO1xufSkoVFlQRSB8fCAoVFlQRSA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgU0tFTEVUT05fVFlQRTtcblxuKGZ1bmN0aW9uIChTS0VMRVRPTl9UWVBFKSB7XG4gIFNLRUxFVE9OX1RZUEVbU0tFTEVUT05fVFlQRVtcIm51bWJlclwiXSA9IDBdID0gXCJudW1iZXJcIjtcbiAgU0tFTEVUT05fVFlQRVtTS0VMRVRPTl9UWVBFW1wiZGF0ZVRpbWVcIl0gPSAxXSA9IFwiZGF0ZVRpbWVcIjtcbn0pKFNLRUxFVE9OX1RZUEUgfHwgKFNLRUxFVE9OX1RZUEUgPSB7fSkpO1xuLyoqXG4gKiBUeXBlIEd1YXJkc1xuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGl0ZXJhbEVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubGl0ZXJhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0FyZ3VtZW50RWxlbWVudChlbCkge1xuICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5hcmd1bWVudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlckVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubnVtYmVyO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZUVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUuZGF0ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1RpbWVFbGVtZW50KGVsKSB7XG4gIHJldHVybiBlbC50eXBlID09PSBUWVBFLnRpbWU7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RFbGVtZW50KGVsKSB7XG4gIHJldHVybiBlbC50eXBlID09PSBUWVBFLnNlbGVjdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1BsdXJhbEVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucGx1cmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUG91bmRFbGVtZW50KGVsKSB7XG4gIHJldHVybiBlbC50eXBlID09PSBUWVBFLnBvdW5kO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnRWxlbWVudChlbCkge1xuICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS50YWc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJTa2VsZXRvbihlbCkge1xuICByZXR1cm4gISEoZWwgJiYgdHlwZW9mIGVsID09PSAnb2JqZWN0JyAmJiBlbC50eXBlID09PSBTS0VMRVRPTl9UWVBFLm51bWJlcik7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlVGltZVNrZWxldG9uKGVsKSB7XG4gIHJldHVybiAhIShlbCAmJiB0eXBlb2YgZWwgPT09ICdvYmplY3QnICYmIGVsLnR5cGUgPT09IFNLRUxFVE9OX1RZUEUuZGF0ZVRpbWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpdGVyYWxFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVFlQRS5saXRlcmFsLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU51bWJlckVsZW1lbnQodmFsdWUsIHN0eWxlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVFlQRS5udW1iZXIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIHN0eWxlOiBzdHlsZVxuICB9O1xufSIsIi8vIEBnZW5lcmF0ZWQgZnJvbSByZWdleC1nZW4udHNcbmV4cG9ydCB2YXIgU1BBQ0VfU0VQQVJBVE9SX1JFR0VYID0gL1sgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXS87XG5leHBvcnQgdmFyIFdISVRFX1NQQUNFX1JFR0VYID0gL1tcXHQtXFxyIFxceDg1XFx1MjAwRVxcdTIwMEZcXHUyMDI4XFx1MjAyOV0vOyIsIi8qKlxuICogaHR0cHM6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9jYXJpZHkvaW50bC1kYXRldGltZWZvcm1hdC1wYXR0ZXJuL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gKiB3aXRoIHNvbWUgdHdlYWtzXG4gKi9cbnZhciBEQVRFX1RJTUVfUkVHRVggPSAvKD86W0VlY117MSw2fXxHezEsNX18W1FxXXsxLDV9fCg/Olt5WXVyXSt8VXsxLDV9KXxbTUxdezEsNX18ZHsxLDJ9fER7MSwzfXxGezF9fFthYkJdezEsNX18W2hrSEtdezEsMn18d3sxLDJ9fFd7MX18bXsxLDJ9fHN7MSwyfXxbelpPdlZ4WF17MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2c7XG4vKipcbiAqIFBhcnNlIERhdGUgdGltZSBza2VsZXRvbiBpbnRvIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gKiBSZWY6IGh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogQHB1YmxpY1xuICogQHBhcmFtIHNrZWxldG9uIHNrZWxldG9uIHN0cmluZ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVUaW1lU2tlbGV0b24oc2tlbGV0b24pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBza2VsZXRvbi5yZXBsYWNlKERBVEVfVElNRV9SRUdFWCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgdmFyIGxlbiA9IG1hdGNoLmxlbmd0aDtcblxuICAgIHN3aXRjaCAobWF0Y2hbMF0pIHtcbiAgICAgIC8vIEVyYVxuICAgICAgY2FzZSAnRyc6XG4gICAgICAgIHJlc3VsdC5lcmEgPSBsZW4gPT09IDQgPyAnbG9uZycgOiBsZW4gPT09IDUgPyAnbmFycm93JyA6ICdzaG9ydCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gWWVhclxuXG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgcmVzdWx0LnllYXIgPSBsZW4gPT09IDIgPyAnMi1kaWdpdCcgOiAnbnVtZXJpYyc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdZJzpcbiAgICAgIGNhc2UgJ3UnOlxuICAgICAgY2FzZSAnVSc6XG4gICAgICBjYXNlICdyJzpcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BZL3UvVS9yYCAoeWVhcikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgeWAgaW5zdGVhZCcpO1xuICAgICAgLy8gUXVhcnRlclxuXG4gICAgICBjYXNlICdxJzpcbiAgICAgIGNhc2UgJ1EnOlxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHEvUWAgKHF1YXJ0ZXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAvLyBNb250aFxuXG4gICAgICBjYXNlICdNJzpcbiAgICAgIGNhc2UgJ0wnOlxuICAgICAgICByZXN1bHQubW9udGggPSBbJ251bWVyaWMnLCAnMi1kaWdpdCcsICdzaG9ydCcsICdsb25nJywgJ25hcnJvdyddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIFdlZWtcblxuICAgICAgY2FzZSAndyc6XG4gICAgICBjYXNlICdXJzpcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2B3L1dgICh3ZWVrKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuXG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgcmVzdWx0LmRheSA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdEJzpcbiAgICAgIGNhc2UgJ0YnOlxuICAgICAgY2FzZSAnZyc6XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgRC9GL2dgIChkYXkpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYGRgIGluc3RlYWQnKTtcbiAgICAgIC8vIFdlZWtkYXlcblxuICAgICAgY2FzZSAnRSc6XG4gICAgICAgIHJlc3VsdC53ZWVrZGF5ID0gbGVuID09PSA0ID8gJ3Nob3J0JyA6IGxlbiA9PT0gNSA/ICduYXJyb3cnIDogJ3Nob3J0JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2UnOlxuICAgICAgICBpZiAobGVuIDwgNCkge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgZS4uZWVlYCAod2Vla2RheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC53ZWVrZGF5ID0gWydzaG9ydCcsICdsb25nJywgJ25hcnJvdycsICdzaG9ydCddW2xlbiAtIDRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYyc6XG4gICAgICAgIGlmIChsZW4gPCA0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BjLi5jY2NgICh3ZWVrZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBbJ3Nob3J0JywgJ2xvbmcnLCAnbmFycm93JywgJ3Nob3J0J11bbGVuIC0gNF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gUGVyaW9kXG5cbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICAvLyBBTSwgUE1cbiAgICAgICAgcmVzdWx0LmhvdXIxMiA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiJzogLy8gYW0sIHBtLCBub29uLCBtaWRuaWdodFxuXG4gICAgICBjYXNlICdCJzpcbiAgICAgICAgLy8gZmxleGlibGUgZGF5IHBlcmlvZHNcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BiL0JgIChwZXJpb2QpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYGFgIGluc3RlYWQnKTtcbiAgICAgIC8vIEhvdXJcblxuICAgICAgY2FzZSAnaCc6XG4gICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDEyJztcbiAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSCc6XG4gICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDIzJztcbiAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSyc6XG4gICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDExJztcbiAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnayc6XG4gICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDI0JztcbiAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnaic6XG4gICAgICBjYXNlICdKJzpcbiAgICAgIGNhc2UgJ0MnOlxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGovSi9DYCAoaG91cikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgaC9IL0sva2AgaW5zdGVhZCcpO1xuICAgICAgLy8gTWludXRlXG5cbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICByZXN1bHQubWludXRlID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBTZWNvbmRcblxuICAgICAgY2FzZSAncyc6XG4gICAgICAgIHJlc3VsdC5zZWNvbmQgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUyc6XG4gICAgICBjYXNlICdBJzpcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BTL0FgIChzZWNvbmQpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHNgIGluc3RlYWQnKTtcbiAgICAgIC8vIFpvbmVcblxuICAgICAgY2FzZSAneic6XG4gICAgICAgIC8vIDEuLjMsIDQ6IHNwZWNpZmljIG5vbi1sb2NhdGlvbiBmb3JtYXRcbiAgICAgICAgcmVzdWx0LnRpbWVab25lTmFtZSA9IGxlbiA8IDQgPyAnc2hvcnQnIDogJ2xvbmcnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnWic6IC8vIDEuLjMsIDQsIDU6IFRoZSBJU084NjAxIHZhcmlvcyBmb3JtYXRzXG5cbiAgICAgIGNhc2UgJ08nOiAvLyAxLCA0OiBtaWxpc2Vjb25kcyBpbiBkYXkgc2hvcnQsIGxvbmdcblxuICAgICAgY2FzZSAndic6IC8vIDEsIDQ6IGdlbmVyaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuXG4gICAgICBjYXNlICdWJzogLy8gMSwgMiwgMywgNDogdGltZSB6b25lIElEIG9yIGNpdHlcblxuICAgICAgY2FzZSAnWCc6IC8vIDEsIDIsIDMsIDQ6IFRoZSBJU084NjAxIHZhcmlvcyBmb3JtYXRzXG5cbiAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAvLyAxLCAyLCAzLCA0OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYFovTy92L1YvWC94YCAodGltZVpvbmUpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHpgIGluc3RlYWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSIsIi8vIEBnZW5lcmF0ZWQgZnJvbSByZWdleC1nZW4udHNcbmV4cG9ydCB2YXIgV0hJVEVfU1BBQ0VfUkVHRVggPSAvW1xcdC1cXHIgXFx4ODVcXHUyMDBFXFx1MjAwRlxcdTIwMjhcXHUyMDI5XS9pOyIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBXSElURV9TUEFDRV9SRUdFWCB9IGZyb20gJy4vcmVnZXguZ2VuZXJhdGVkJztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWJlclNrZWxldG9uRnJvbVN0cmluZyhza2VsZXRvbikge1xuICBpZiAoc2tlbGV0b24ubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXIgc2tlbGV0b24gY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH0gLy8gUGFyc2UgdGhlIHNrZWxldG9uXG5cblxuICB2YXIgc3RyaW5nVG9rZW5zID0gc2tlbGV0b24uc3BsaXQoV0hJVEVfU1BBQ0VfUkVHRVgpLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4Lmxlbmd0aCA+IDA7XG4gIH0pO1xuICB2YXIgdG9rZW5zID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBzdHJpbmdUb2tlbnNfMSA9IHN0cmluZ1Rva2VuczsgX2kgPCBzdHJpbmdUb2tlbnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgc3RyaW5nVG9rZW4gPSBzdHJpbmdUb2tlbnNfMVtfaV07XG4gICAgdmFyIHN0ZW1BbmRPcHRpb25zID0gc3RyaW5nVG9rZW4uc3BsaXQoJy8nKTtcblxuICAgIGlmIChzdGVtQW5kT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgc2tlbGV0b24nKTtcbiAgICB9XG5cbiAgICB2YXIgc3RlbSA9IHN0ZW1BbmRPcHRpb25zWzBdLFxuICAgICAgICBvcHRpb25zID0gc3RlbUFuZE9wdGlvbnMuc2xpY2UoMSk7XG5cbiAgICBmb3IgKHZhciBfYSA9IDAsIG9wdGlvbnNfMSA9IG9wdGlvbnM7IF9hIDwgb3B0aW9uc18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgdmFyIG9wdGlvbiA9IG9wdGlvbnNfMVtfYV07XG5cbiAgICAgIGlmIChvcHRpb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgc2tlbGV0b24nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0b2tlbnMucHVzaCh7XG4gICAgICBzdGVtOiBzdGVtLFxuICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gaWN1VW5pdFRvRWNtYSh1bml0KSB7XG4gIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59XG5cbnZhciBGUkFDVElPTl9QUkVDSVNJT05fUkVHRVggPSAvXlxcLig/OigwKykoXFwqKT98KCMrKXwoMCspKCMrKSkkL2c7XG52YXIgU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYID0gL14oQCspPyhcXCt8IyspPyQvZztcbnZhciBJTlRFR0VSX1dJRFRIX1JFR0VYID0gLyhcXCopKDArKXwoIyspKDArKXwoMCspL2c7XG52YXIgQ09OQ0lTRV9JTlRFR0VSX1dJRFRIX1JFR0VYID0gL14oMCspJC87XG5cbmZ1bmN0aW9uIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24oc3RyKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgc3RyLnJlcGxhY2UoU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYLCBmdW5jdGlvbiAoXywgZzEsIGcyKSB7XG4gICAgLy8gQEBAIGNhc2VcbiAgICBpZiAodHlwZW9mIGcyICE9PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgfSAvLyBAQEArIGNhc2VcbiAgICBlbHNlIGlmIChnMiA9PT0gJysnKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICB9IC8vIC4jIyMgY2FzZVxuICAgICAgZWxzZSBpZiAoZzFbMF0gPT09ICcjJykge1xuICAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgIH0gLy8gLkBAIyMgb3IgLkBAQCBjYXNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGggKyAodHlwZW9mIGcyID09PSAnc3RyaW5nJyA/IGcyLmxlbmd0aCA6IDApO1xuICAgICAgICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2lnbihzdHIpIHtcbiAgc3dpdGNoIChzdHIpIHtcbiAgICBjYXNlICdzaWduLWF1dG8nOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2lnbkRpc3BsYXk6ICdhdXRvJ1xuICAgICAgfTtcblxuICAgIGNhc2UgJ3NpZ24tYWNjb3VudGluZyc6XG4gICAgY2FzZSAnKCknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZydcbiAgICAgIH07XG5cbiAgICBjYXNlICdzaWduLWFsd2F5cyc6XG4gICAgY2FzZSAnKyEnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2lnbkRpc3BsYXk6ICdhbHdheXMnXG4gICAgICB9O1xuXG4gICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nLWFsd2F5cyc6XG4gICAgY2FzZSAnKCkhJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNpZ25EaXNwbGF5OiAnYWx3YXlzJyxcbiAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZydcbiAgICAgIH07XG5cbiAgICBjYXNlICdzaWduLWV4Y2VwdC16ZXJvJzpcbiAgICBjYXNlICcrPyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzaWduRGlzcGxheTogJ2V4Y2VwdFplcm8nXG4gICAgICB9O1xuXG4gICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvJzpcbiAgICBjYXNlICcoKT8nOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2lnbkRpc3BsYXk6ICdleGNlcHRaZXJvJyxcbiAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZydcbiAgICAgIH07XG5cbiAgICBjYXNlICdzaWduLW5ldmVyJzpcbiAgICBjYXNlICcrXyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzaWduRGlzcGxheTogJ25ldmVyJ1xuICAgICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNvbmNpc2VTY2llbnRpZmljQW5kRW5naW5lZXJpbmdTdGVtKHN0ZW0pIHtcbiAgLy8gRW5naW5lZXJpbmdcbiAgdmFyIHJlc3VsdDtcblxuICBpZiAoc3RlbVswXSA9PT0gJ0UnICYmIHN0ZW1bMV0gPT09ICdFJykge1xuICAgIHJlc3VsdCA9IHtcbiAgICAgIG5vdGF0aW9uOiAnZW5naW5lZXJpbmcnXG4gICAgfTtcbiAgICBzdGVtID0gc3RlbS5zbGljZSgyKTtcbiAgfSBlbHNlIGlmIChzdGVtWzBdID09PSAnRScpIHtcbiAgICByZXN1bHQgPSB7XG4gICAgICBub3RhdGlvbjogJ3NjaWVudGlmaWMnXG4gICAgfTtcbiAgICBzdGVtID0gc3RlbS5zbGljZSgxKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQpIHtcbiAgICB2YXIgc2lnbkRpc3BsYXkgPSBzdGVtLnNsaWNlKDAsIDIpO1xuXG4gICAgaWYgKHNpZ25EaXNwbGF5ID09PSAnKyEnKSB7XG4gICAgICByZXN1bHQuc2lnbkRpc3BsYXkgPSAnYWx3YXlzJztcbiAgICAgIHN0ZW0gPSBzdGVtLnNsaWNlKDIpO1xuICAgIH0gZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT09ICcrPycpIHtcbiAgICAgIHJlc3VsdC5zaWduRGlzcGxheSA9ICdleGNlcHRaZXJvJztcbiAgICAgIHN0ZW0gPSBzdGVtLnNsaWNlKDIpO1xuICAgIH1cblxuICAgIGlmICghQ09OQ0lTRV9JTlRFR0VSX1dJRFRIX1JFR0VYLnRlc3Qoc3RlbSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIGNvbmNpc2UgZW5nL3NjaWVudGlmaWMgbm90YXRpb24nKTtcbiAgICB9XG5cbiAgICByZXN1bHQubWluaW11bUludGVnZXJEaWdpdHMgPSBzdGVtLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTm90YXRpb25PcHRpb25zKG9wdCkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBzaWduT3B0cyA9IHBhcnNlU2lnbihvcHQpO1xuXG4gIGlmIChzaWduT3B0cykge1xuICAgIHJldHVybiBzaWduT3B0cztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NrZWxldG9uLXN0ZW1zLWFuZC1vcHRpb25zXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXJTa2VsZXRvbih0b2tlbnMpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGZvciAodmFyIF9pID0gMCwgdG9rZW5zXzEgPSB0b2tlbnM7IF9pIDwgdG9rZW5zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHRva2VuID0gdG9rZW5zXzFbX2ldO1xuXG4gICAgc3dpdGNoICh0b2tlbi5zdGVtKSB7XG4gICAgICBjYXNlICdwZXJjZW50JzpcbiAgICAgIGNhc2UgJyUnOlxuICAgICAgICByZXN1bHQuc3R5bGUgPSAncGVyY2VudCc7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlICcleDEwMCc6XG4gICAgICAgIHJlc3VsdC5zdHlsZSA9ICdwZXJjZW50JztcbiAgICAgICAgcmVzdWx0LnNjYWxlID0gMTAwO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICByZXN1bHQuc3R5bGUgPSAnY3VycmVuY3knO1xuICAgICAgICByZXN1bHQuY3VycmVuY3kgPSB0b2tlbi5vcHRpb25zWzBdO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnZ3JvdXAtb2ZmJzpcbiAgICAgIGNhc2UgJyxfJzpcbiAgICAgICAgcmVzdWx0LnVzZUdyb3VwaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlICdwcmVjaXNpb24taW50ZWdlcic6XG4gICAgICBjYXNlICcuJzpcbiAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlICdtZWFzdXJlLXVuaXQnOlxuICAgICAgY2FzZSAndW5pdCc6XG4gICAgICAgIHJlc3VsdC5zdHlsZSA9ICd1bml0JztcbiAgICAgICAgcmVzdWx0LnVuaXQgPSBpY3VVbml0VG9FY21hKHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnY29tcGFjdC1zaG9ydCc6XG4gICAgICBjYXNlICdLJzpcbiAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICByZXN1bHQuY29tcGFjdERpc3BsYXkgPSAnc2hvcnQnO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnY29tcGFjdC1sb25nJzpcbiAgICAgIGNhc2UgJ0tLJzpcbiAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICByZXN1bHQuY29tcGFjdERpc3BsYXkgPSAnbG9uZyc7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlICdzY2llbnRpZmljJzpcbiAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHtcbiAgICAgICAgICBub3RhdGlvbjogJ3NjaWVudGlmaWMnXG4gICAgICAgIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHtcbiAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGFsbCksIHBhcnNlTm90YXRpb25PcHRpb25zKG9wdCkpO1xuICAgICAgICB9LCB7fSkpO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnZW5naW5lZXJpbmcnOlxuICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwge1xuICAgICAgICAgIG5vdGF0aW9uOiAnZW5naW5lZXJpbmcnXG4gICAgICAgIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHtcbiAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGFsbCksIHBhcnNlTm90YXRpb25PcHRpb25zKG9wdCkpO1xuICAgICAgICB9LCB7fSkpO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnbm90YXRpb24tc2ltcGxlJzpcbiAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ3N0YW5kYXJkJztcbiAgICAgICAgY29udGludWU7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2ljdTRjL3NvdXJjZS9pMThuL3VuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oXG5cbiAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtbmFycm93JzpcbiAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICduYXJyb3dTeW1ib2wnO1xuICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnbmFycm93JztcbiAgICAgICAgY29udGludWU7XG5cbiAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtc2hvcnQnOlxuICAgICAgICByZXN1bHQuY3VycmVuY3lEaXNwbGF5ID0gJ2NvZGUnO1xuICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnc2hvcnQnO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAndW5pdC13aWR0aC1mdWxsLW5hbWUnOlxuICAgICAgICByZXN1bHQuY3VycmVuY3lEaXNwbGF5ID0gJ25hbWUnO1xuICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnbG9uZyc7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlICd1bml0LXdpZHRoLWlzby1jb2RlJzpcbiAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICdzeW1ib2wnO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAnc2NhbGUnOlxuICAgICAgICByZXN1bHQuc2NhbGUgPSBwYXJzZUZsb2F0KHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjaW50ZWdlci13aWR0aFxuXG4gICAgICBjYXNlICdpbnRlZ2VyLXdpZHRoJzpcbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbnRlZ2VyLXdpZHRoIHN0ZW1zIG9ubHkgYWNjZXB0IGEgc2luZ2xlIG9wdGlvbmFsIG9wdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9rZW4ub3B0aW9uc1swXS5yZXBsYWNlKElOVEVHRVJfV0lEVEhfUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIsIGczLCBnNCwgZzUpIHtcbiAgICAgICAgICBpZiAoZzEpIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IGcyLmxlbmd0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGczICYmIGc0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBtYXhpbXVtIGludGVnZXIgZGlnaXRzJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChnNSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgZXhhY3QgaW50ZWdlciBkaWdpdHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICB9IC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjaW50ZWdlci13aWR0aFxuXG5cbiAgICBpZiAoQ09OQ0lTRV9JTlRFR0VSX1dJRFRIX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IHRva2VuLnN0ZW0ubGVuZ3RoO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWC50ZXN0KHRva2VuLnN0ZW0pKSB7XG4gICAgICAvLyBQcmVjaXNpb25cbiAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjZnJhY3Rpb24tcHJlY2lzaW9uXG4gICAgICAvLyBwcmVjaXNpb24taW50ZWdlciBjYXNlXG4gICAgICBpZiAodG9rZW4ub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdGcmFjdGlvbi1wcmVjaXNpb24gc3RlbXMgb25seSBhY2NlcHQgYSBzaW5nbGUgb3B0aW9uYWwgb3B0aW9uJyk7XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnN0ZW0ucmVwbGFjZShGUkFDVElPTl9QUkVDSVNJT05fUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIsIGczLCBnNCwgZzUpIHtcbiAgICAgICAgLy8gLjAwMCogY2FzZSAoYmVmb3JlIElDVTY3IGl0IHdhcyAuMDAwKylcbiAgICAgICAgaWYgKGcyID09PSAnKicpIHtcbiAgICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9IC8vIC4jIyMgY2FzZVxuICAgICAgICBlbHNlIGlmIChnMyAmJiBnM1swXSA9PT0gJyMnKSB7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzMubGVuZ3RoO1xuICAgICAgICAgIH0gLy8gLjAwIyMgY2FzZVxuICAgICAgICAgIGVsc2UgaWYgKGc0ICYmIGc1KSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGg7XG4gICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGggKyBnNS5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG9rZW4ub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24odG9rZW4ub3B0aW9uc1swXSkpO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvblxuXG5cbiAgICBpZiAoU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHRva2VuLnN0ZW0pKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBzaWduT3B0cyA9IHBhcnNlU2lnbih0b2tlbi5zdGVtKTtcblxuICAgIGlmIChzaWduT3B0cykge1xuICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHNpZ25PcHRzKTtcbiAgICB9XG5cbiAgICB2YXIgY29uY2lzZVNjaWVudGlmaWNBbmRFbmdpbmVlcmluZ09wdHMgPSBwYXJzZUNvbmNpc2VTY2llbnRpZmljQW5kRW5naW5lZXJpbmdTdGVtKHRva2VuLnN0ZW0pO1xuXG4gICAgaWYgKGNvbmNpc2VTY2llbnRpZmljQW5kRW5naW5lZXJpbmdPcHRzKSB7XG4gICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgY29uY2lzZVNjaWVudGlmaWNBbmRFbmdpbmVlcmluZ09wdHMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5mcm9tLWVudHJpZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS1zdGFydC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLWVuZC5qc1wiO1xuXG52YXIgX2E7XG5cbmltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFcnJvcktpbmQgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IFNLRUxFVE9OX1RZUEUsIFRZUEUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNQQUNFX1NFUEFSQVRPUl9SRUdFWCB9IGZyb20gJy4vcmVnZXguZ2VuZXJhdGVkJztcbmltcG9ydCB7IHBhcnNlTnVtYmVyU2tlbGV0b24sIHBhcnNlTnVtYmVyU2tlbGV0b25Gcm9tU3RyaW5nLCBwYXJzZURhdGVUaW1lU2tlbGV0b24gfSBmcm9tICdAZm9ybWF0anMvaWN1LXNrZWxldG9uLXBhcnNlcic7XG52YXIgU1BBQ0VfU0VQQVJBVE9SX1NUQVJUX1JFR0VYID0gbmV3IFJlZ0V4cChcIl5cIiArIFNQQUNFX1NFUEFSQVRPUl9SRUdFWC5zb3VyY2UgKyBcIipcIik7XG52YXIgU1BBQ0VfU0VQQVJBVE9SX0VORF9SRUdFWCA9IG5ldyBSZWdFeHAoU1BBQ0VfU0VQQVJBVE9SX1JFR0VYLnNvdXJjZSArIFwiKiRcIik7XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW5kOiBlbmRcbiAgfTtcbn0gLy8gI3JlZ2lvbiBQb255ZmlsbHNcbi8vIENvbnNvbGlkYXRlIHRoZXNlIHZhcmlhYmxlcyB1cCB0b3AgZm9yIGVhc2llciB0b2dnbGluZyBkdXJpbmcgZGVidWdnaW5nXG5cblxudmFyIGhhc05hdGl2ZVN0YXJ0c1dpdGggPSAhIVN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aDtcbnZhciBoYXNOYXRpdmVGcm9tQ29kZVBvaW50ID0gISFTdHJpbmcuZnJvbUNvZGVQb2ludDtcbnZhciBoYXNOYXRpdmVGcm9tRW50cmllcyA9ICEhT2JqZWN0LmZyb21FbnRyaWVzO1xudmFyIGhhc05hdGl2ZUNvZGVQb2ludEF0ID0gISFTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0O1xudmFyIGhhc1RyaW1TdGFydCA9ICEhU3RyaW5nLnByb3RvdHlwZS50cmltU3RhcnQ7XG52YXIgaGFzVHJpbUVuZCA9ICEhU3RyaW5nLnByb3RvdHlwZS50cmltRW5kO1xudmFyIGhhc05hdGl2ZUlzU2FmZUludGVnZXIgPSAhIU51bWJlci5pc1NhZmVJbnRlZ2VyO1xudmFyIGlzU2FmZUludGVnZXIgPSBoYXNOYXRpdmVJc1NhZmVJbnRlZ2VyID8gTnVtYmVyLmlzU2FmZUludGVnZXIgOiBmdW5jdGlvbiAobikge1xuICByZXR1cm4gdHlwZW9mIG4gPT09ICdudW1iZXInICYmIGlzRmluaXRlKG4pICYmIE1hdGguZmxvb3IobikgPT09IG4gJiYgTWF0aC5hYnMobikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbn07IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCB5IGFuZCB1LlxuXG52YXIgUkVHRVhfU1VQUE9SVFNfVV9BTkRfWSA9IHRydWU7XG5cbnRyeSB7XG4gIHZhciByZSA9IFJFKCcoW15cXFxccHtXaGl0ZV9TcGFjZX1cXFxccHtQYXR0ZXJuX1N5bnRheH1dKiknLCAneXUnKTtcbiAgLyoqXG4gICAqIGxlZ2FjeSBFZGdlIG9yIFhib3ggT25lIGJyb3dzZXJcbiAgICogVW5pY29kZSBmbGFnIHN1cHBvcnQ6IHN1cHBvcnRlZFxuICAgKiBQYXR0ZXJuX1N5bnRheCBzdXBwb3J0OiBub3Qgc3VwcG9ydGVkXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm9ybWF0anMvZm9ybWF0anMvaXNzdWVzLzI4MjJcbiAgICovXG5cbiAgUkVHRVhfU1VQUE9SVFNfVV9BTkRfWSA9ICgoX2EgPSByZS5leGVjKCdhJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVswXSkgPT09ICdhJztcbn0gY2F0Y2ggKF8pIHtcbiAgUkVHRVhfU1VQUE9SVFNfVV9BTkRfWSA9IGZhbHNlO1xufVxuXG52YXIgc3RhcnRzV2l0aCA9IGhhc05hdGl2ZVN0YXJ0c1dpdGggPyAvLyBOYXRpdmVcbmZ1bmN0aW9uIHN0YXJ0c1dpdGgocywgc2VhcmNoLCBwb3NpdGlvbikge1xuICByZXR1cm4gcy5zdGFydHNXaXRoKHNlYXJjaCwgcG9zaXRpb24pO1xufSA6IC8vIEZvciBJRTExXG5mdW5jdGlvbiBzdGFydHNXaXRoKHMsIHNlYXJjaCwgcG9zaXRpb24pIHtcbiAgcmV0dXJuIHMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbn07XG52YXIgZnJvbUNvZGVQb2ludCA9IGhhc05hdGl2ZUZyb21Db2RlUG9pbnQgPyBTdHJpbmcuZnJvbUNvZGVQb2ludCA6IC8vIElFMTFcbmZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoKSB7XG4gIHZhciBjb2RlUG9pbnRzID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBjb2RlUG9pbnRzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICB2YXIgZWxlbWVudHMgPSAnJztcbiAgdmFyIGxlbmd0aCA9IGNvZGVQb2ludHMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjb2RlO1xuXG4gIHdoaWxlIChsZW5ndGggPiBpKSB7XG4gICAgY29kZSA9IGNvZGVQb2ludHNbaSsrXTtcbiAgICBpZiAoY29kZSA+IDB4MTBmZmZmKSB0aHJvdyBSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICBlbGVtZW50cyArPSBjb2RlIDwgMHgxMDAwMCA/IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweGQ4MDAsIGNvZGUgJSAweDQwMCArIDB4ZGMwMCk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudHM7XG59O1xudmFyIGZyb21FbnRyaWVzID0gLy8gbmF0aXZlXG5oYXNOYXRpdmVGcm9tRW50cmllcyA/IE9iamVjdC5mcm9tRW50cmllcyA6IC8vIFBvbnlmaWxsXG5mdW5jdGlvbiBmcm9tRW50cmllcyhlbnRyaWVzKSB7XG4gIHZhciBvYmogPSB7fTtcblxuICBmb3IgKHZhciBfaSA9IDAsIGVudHJpZXNfMSA9IGVudHJpZXM7IF9pIDwgZW50cmllc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfYSA9IGVudHJpZXNfMVtfaV0sXG4gICAgICAgIGsgPSBfYVswXSxcbiAgICAgICAgdiA9IF9hWzFdO1xuICAgIG9ialtrXSA9IHY7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcbnZhciBjb2RlUG9pbnRBdCA9IGhhc05hdGl2ZUNvZGVQb2ludEF0ID8gLy8gTmF0aXZlXG5mdW5jdGlvbiBjb2RlUG9pbnRBdChzLCBpbmRleCkge1xuICByZXR1cm4gcy5jb2RlUG9pbnRBdChpbmRleCk7XG59IDogLy8gSUUgMTFcbmZ1bmN0aW9uIGNvZGVQb2ludEF0KHMsIGluZGV4KSB7XG4gIHZhciBzaXplID0gcy5sZW5ndGg7XG5cbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzaXplKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHZhciBmaXJzdCA9IHMuY2hhckNvZGVBdChpbmRleCk7XG4gIHZhciBzZWNvbmQ7XG4gIHJldHVybiBmaXJzdCA8IDB4ZDgwMCB8fCBmaXJzdCA+IDB4ZGJmZiB8fCBpbmRleCArIDEgPT09IHNpemUgfHwgKHNlY29uZCA9IHMuY2hhckNvZGVBdChpbmRleCArIDEpKSA8IDB4ZGMwMCB8fCBzZWNvbmQgPiAweGRmZmYgPyBmaXJzdCA6IChmaXJzdCAtIDB4ZDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhkYzAwKSArIDB4MTAwMDA7XG59O1xudmFyIHRyaW1TdGFydCA9IGhhc1RyaW1TdGFydCA/IC8vIE5hdGl2ZVxuZnVuY3Rpb24gdHJpbVN0YXJ0KHMpIHtcbiAgcmV0dXJuIHMudHJpbVN0YXJ0KCk7XG59IDogLy8gUG9ueWZpbGxcbmZ1bmN0aW9uIHRyaW1TdGFydChzKSB7XG4gIHJldHVybiBzLnJlcGxhY2UoU1BBQ0VfU0VQQVJBVE9SX1NUQVJUX1JFR0VYLCAnJyk7XG59O1xudmFyIHRyaW1FbmQgPSBoYXNUcmltRW5kID8gLy8gTmF0aXZlXG5mdW5jdGlvbiB0cmltRW5kKHMpIHtcbiAgcmV0dXJuIHMudHJpbUVuZCgpO1xufSA6IC8vIFBvbnlmaWxsXG5mdW5jdGlvbiB0cmltRW5kKHMpIHtcbiAgcmV0dXJuIHMucmVwbGFjZShTUEFDRV9TRVBBUkFUT1JfRU5EX1JFR0VYLCAnJyk7XG59OyAvLyBQcmV2ZW50IG1pbmlmaWVyIHRvIHRyYW5zbGF0ZSBuZXcgUmVnRXhwIHRvIGxpdGVyYWwgZm9ybSB0aGF0IG1pZ2h0IGNhdXNlIHN5bnRheCBlcnJvciBvbiBJRTExLlxuXG5mdW5jdGlvbiBSRShzLCBmbGFnKSB7XG4gIHJldHVybiBuZXcgUmVnRXhwKHMsIGZsYWcpO1xufSAvLyAjZW5kcmVnaW9uXG5cblxudmFyIG1hdGNoSWRlbnRpZmllckF0SW5kZXg7XG5cbmlmIChSRUdFWF9TVVBQT1JUU19VX0FORF9ZKSB7XG4gIC8vIE5hdGl2ZVxuICB2YXIgSURFTlRJRklFUl9QUkVGSVhfUkVfMSA9IFJFKCcoW15cXFxccHtXaGl0ZV9TcGFjZX1cXFxccHtQYXR0ZXJuX1N5bnRheH1dKiknLCAneXUnKTtcblxuICBtYXRjaElkZW50aWZpZXJBdEluZGV4ID0gZnVuY3Rpb24gbWF0Y2hJZGVudGlmaWVyQXRJbmRleChzLCBpbmRleCkge1xuICAgIHZhciBfYTtcblxuICAgIElERU5USUZJRVJfUFJFRklYX1JFXzEubGFzdEluZGV4ID0gaW5kZXg7XG4gICAgdmFyIG1hdGNoID0gSURFTlRJRklFUl9QUkVGSVhfUkVfMS5leGVjKHMpO1xuICAgIHJldHVybiAoX2EgPSBtYXRjaFsxXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gIH07XG59IGVsc2Uge1xuICAvLyBJRTExXG4gIG1hdGNoSWRlbnRpZmllckF0SW5kZXggPSBmdW5jdGlvbiBtYXRjaElkZW50aWZpZXJBdEluZGV4KHMsIGluZGV4KSB7XG4gICAgdmFyIG1hdGNoID0gW107XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdmFyIGMgPSBjb2RlUG9pbnRBdChzLCBpbmRleCk7XG5cbiAgICAgIGlmIChjID09PSB1bmRlZmluZWQgfHwgX2lzV2hpdGVTcGFjZShjKSB8fCBfaXNQYXR0ZXJuU3ludGF4KGMpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBtYXRjaC5wdXNoKGMpO1xuICAgICAgaW5kZXggKz0gYyA+PSAweDEwMDAwID8gMiA6IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb21Db2RlUG9pbnQuYXBwbHkodm9pZCAwLCBtYXRjaCk7XG4gIH07XG59XG5cbnZhciBQYXJzZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIobWVzc2FnZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICBvZmZzZXQ6IDAsXG4gICAgICBsaW5lOiAxLFxuICAgICAgY29sdW1uOiAxXG4gICAgfTtcbiAgICB0aGlzLmlnbm9yZVRhZyA9ICEhb3B0aW9ucy5pZ25vcmVUYWc7XG4gICAgdGhpcy5yZXF1aXJlc090aGVyQ2xhdXNlID0gISFvcHRpb25zLnJlcXVpcmVzT3RoZXJDbGF1c2U7XG4gICAgdGhpcy5zaG91bGRQYXJzZVNrZWxldG9ucyA9ICEhb3B0aW9ucy5zaG91bGRQYXJzZVNrZWxldG9ucztcbiAgfVxuXG4gIFBhcnNlci5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMub2Zmc2V0KCkgIT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKCdwYXJzZXIgY2FuIG9ubHkgYmUgdXNlZCBvbmNlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyc2VNZXNzYWdlKDAsICcnLCBmYWxzZSk7XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZU1lc3NhZ2UgPSBmdW5jdGlvbiAobmVzdGluZ0xldmVsLCBwYXJlbnRBcmdUeXBlLCBleHBlY3RpbmdDbG9zZVRhZykge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuXG4gICAgd2hpbGUgKCF0aGlzLmlzRU9GKCkpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jaGFyKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSAxMjNcbiAgICAgIC8qIGB7YCAqL1xuICAgICAgKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VBcmd1bWVudChuZXN0aW5nTGV2ZWwsIGV4cGVjdGluZ0Nsb3NlVGFnKTtcblxuICAgICAgICAgIGlmIChyZXN1bHQuZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gMTI1XG4gICAgICAvKiBgfWAgKi9cbiAgICAgICYmIG5lc3RpbmdMZXZlbCA+IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IDM1XG4gICAgICAvKiBgI2AgKi9cbiAgICAgICYmIChwYXJlbnRBcmdUeXBlID09PSAncGx1cmFsJyB8fCBwYXJlbnRBcmdUeXBlID09PSAnc2VsZWN0b3JkaW5hbCcpKSB7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmJ1bXAoKTtcbiAgICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogVFlQRS5wb3VuZCxcbiAgICAgICAgICBsb2NhdGlvbjogY3JlYXRlTG9jYXRpb24ocG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gNjBcbiAgICAgIC8qIGA8YCAqL1xuICAgICAgJiYgIXRoaXMuaWdub3JlVGFnICYmIHRoaXMucGVlaygpID09PSA0NyAvLyBjaGFyIGNvZGUgZm9yICcvJ1xuICAgICAgKSB7XG4gICAgICAgICAgaWYgKGV4cGVjdGluZ0Nsb3NlVGFnKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLlVOTUFUQ0hFRF9DTE9TSU5HX1RBRywgY3JlYXRlTG9jYXRpb24odGhpcy5jbG9uZVBvc2l0aW9uKCksIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IDYwXG4gICAgICAvKiBgPGAgKi9cbiAgICAgICYmICF0aGlzLmlnbm9yZVRhZyAmJiBfaXNBbHBoYSh0aGlzLnBlZWsoKSB8fCAwKSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZVRhZyhuZXN0aW5nTGV2ZWwsIHBhcmVudEFyZ1R5cGUpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZUxpdGVyYWwobmVzdGluZ0xldmVsLCBwYXJlbnRBcmdUeXBlKTtcblxuICAgICAgICBpZiAocmVzdWx0LmVycikge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50cy5wdXNoKHJlc3VsdC52YWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWw6IGVsZW1lbnRzLFxuICAgICAgZXJyOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEEgdGFnIG5hbWUgbXVzdCBzdGFydCB3aXRoIGFuIEFTQ0lJIGxvd2VyL3VwcGVyIGNhc2UgbGV0dGVyLiBUaGUgZ3JhbW1hciBpcyBiYXNlZCBvbiB0aGVcbiAgICogW2N1c3RvbSBlbGVtZW50IG5hbWVdW10gZXhjZXB0IHRoYXQgYSBkYXNoIGlzIE5PVCBhbHdheXMgbWFuZGF0b3J5IGFuZCB1cHBlcmNhc2UgbGV0dGVyc1xuICAgKiBhcmUgYWNjZXB0ZWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB0YWcgOjo9IFwiPFwiIHRhZ05hbWUgKHdoaXRlc3BhY2UpKiBcIi8+XCIgfCBcIjxcIiB0YWdOYW1lICh3aGl0ZXNwYWNlKSogXCI+XCIgbWVzc2FnZSBcIjwvXCIgdGFnTmFtZSAod2hpdGVzcGFjZSkqIFwiPlwiXG4gICAqIHRhZ05hbWUgOjo9IFthLXpdIChQRU5DaGFyKSpcbiAgICogUEVOQ2hhciA6Oj1cbiAgICogICAgIFwiLVwiIHwgXCIuXCIgfCBbMC05XSB8IFwiX1wiIHwgW2Etel0gfCBbQS1aXSB8ICN4QjcgfCBbI3hDMC0jeEQ2XSB8IFsjeEQ4LSN4RjZdIHwgWyN4RjgtI3gzN0RdIHxcbiAgICogICAgIFsjeDM3Ri0jeDFGRkZdIHwgWyN4MjAwQy0jeDIwMERdIHwgWyN4MjAzRi0jeDIwNDBdIHwgWyN4MjA3MC0jeDIxOEZdIHwgWyN4MkMwMC0jeDJGRUZdIHxcbiAgICogICAgIFsjeDMwMDEtI3hEN0ZGXSB8IFsjeEY5MDAtI3hGRENGXSB8IFsjeEZERjAtI3hGRkZEXSB8IFsjeDEwMDAwLSN4RUZGRkZdXG4gICAqIGBgYFxuICAgKlxuICAgKiBbY3VzdG9tIGVsZW1lbnQgbmFtZV06IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI3ZhbGlkLWN1c3RvbS1lbGVtZW50LW5hbWVcbiAgICogTk9URTogV2UncmUgYSBiaXQgbW9yZSBsYXggaGVyZSBzaW5jZSBIVE1MIHRlY2huaWNhbGx5IGRvZXMgbm90IGFsbG93IHVwcGVyY2FzZSBIVE1MIGVsZW1lbnQgYnV0IHdlIGRvXG4gICAqIHNpbmNlIG90aGVyIHRhZy1iYXNlZCBlbmdpbmVzIGxpa2UgUmVhY3QgYWxsb3cgaXRcbiAgICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlVGFnID0gZnVuY3Rpb24gKG5lc3RpbmdMZXZlbCwgcGFyZW50QXJnVHlwZSkge1xuICAgIHZhciBzdGFydFBvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5idW1wKCk7IC8vIGA8YFxuXG4gICAgdmFyIHRhZ05hbWUgPSB0aGlzLnBhcnNlVGFnTmFtZSgpO1xuICAgIHRoaXMuYnVtcFNwYWNlKCk7XG5cbiAgICBpZiAodGhpcy5idW1wSWYoJy8+JykpIHtcbiAgICAgIC8vIFNlbGYgY2xvc2luZyB0YWdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbDoge1xuICAgICAgICAgIHR5cGU6IFRZUEUubGl0ZXJhbCxcbiAgICAgICAgICB2YWx1ZTogXCI8XCIgKyB0YWdOYW1lICsgXCIvPlwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBjcmVhdGVMb2NhdGlvbihzdGFydFBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSlcbiAgICAgICAgfSxcbiAgICAgICAgZXJyOiBudWxsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5idW1wSWYoJz4nKSkge1xuICAgICAgdmFyIGNoaWxkcmVuUmVzdWx0ID0gdGhpcy5wYXJzZU1lc3NhZ2UobmVzdGluZ0xldmVsICsgMSwgcGFyZW50QXJnVHlwZSwgdHJ1ZSk7XG5cbiAgICAgIGlmIChjaGlsZHJlblJlc3VsdC5lcnIpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBjaGlsZHJlblJlc3VsdC52YWw7IC8vIEV4cGVjdGluZyBhIGNsb3NlIHRhZ1xuXG4gICAgICB2YXIgZW5kVGFnU3RhcnRQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5idW1wSWYoJzwvJykpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFT0YoKSB8fCAhX2lzQWxwaGEodGhpcy5jaGFyKCkpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLklOVkFMSURfVEFHLCBjcmVhdGVMb2NhdGlvbihlbmRUYWdTdGFydFBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNsb3NpbmdUYWdOYW1lU3RhcnRQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuICAgICAgICB2YXIgY2xvc2luZ1RhZ05hbWUgPSB0aGlzLnBhcnNlVGFnTmFtZSgpO1xuXG4gICAgICAgIGlmICh0YWdOYW1lICE9PSBjbG9zaW5nVGFnTmFtZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5VTk1BVENIRURfQ0xPU0lOR19UQUcsIGNyZWF0ZUxvY2F0aW9uKGNsb3NpbmdUYWdOYW1lU3RhcnRQb3NpdGlvbiwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVtcFNwYWNlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmJ1bXBJZignPicpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLklOVkFMSURfVEFHLCBjcmVhdGVMb2NhdGlvbihlbmRUYWdTdGFydFBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWw6IHtcbiAgICAgICAgICAgIHR5cGU6IFRZUEUudGFnLFxuICAgICAgICAgICAgdmFsdWU6IHRhZ05hbWUsXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICAgICAgICBsb2NhdGlvbjogY3JlYXRlTG9jYXRpb24oc3RhcnRQb3NpdGlvbiwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnI6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5VTkNMT1NFRF9UQUcsIGNyZWF0ZUxvY2F0aW9uKHN0YXJ0UG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5JTlZBTElEX1RBRywgY3JlYXRlTG9jYXRpb24oc3RhcnRQb3NpdGlvbiwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlciBoYXMgcGVla2VkIGFoZWFkIGZvciB0aGUgZmlyc3QgdGFnIGNoYXJhY3Rlci5cbiAgICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlVGFnTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhcnRPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuICAgIHRoaXMuYnVtcCgpOyAvLyB0aGUgZmlyc3QgdGFnIG5hbWUgY2hhcmFjdGVyXG5cbiAgICB3aGlsZSAoIXRoaXMuaXNFT0YoKSAmJiBfaXNQb3RlbnRpYWxFbGVtZW50TmFtZUNoYXIodGhpcy5jaGFyKCkpKSB7XG4gICAgICB0aGlzLmJ1bXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlLnNsaWNlKHN0YXJ0T2Zmc2V0LCB0aGlzLm9mZnNldCgpKTtcbiAgfTtcblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTGl0ZXJhbCA9IGZ1bmN0aW9uIChuZXN0aW5nTGV2ZWwsIHBhcmVudEFyZ1R5cGUpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLmNsb25lUG9zaXRpb24oKTtcbiAgICB2YXIgdmFsdWUgPSAnJztcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB2YXIgcGFyc2VRdW90ZVJlc3VsdCA9IHRoaXMudHJ5UGFyc2VRdW90ZShwYXJlbnRBcmdUeXBlKTtcblxuICAgICAgaWYgKHBhcnNlUXVvdGVSZXN1bHQpIHtcbiAgICAgICAgdmFsdWUgKz0gcGFyc2VRdW90ZVJlc3VsdDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJzZVVucXVvdGVkUmVzdWx0ID0gdGhpcy50cnlQYXJzZVVucXVvdGVkKG5lc3RpbmdMZXZlbCwgcGFyZW50QXJnVHlwZSk7XG5cbiAgICAgIGlmIChwYXJzZVVucXVvdGVkUmVzdWx0KSB7XG4gICAgICAgIHZhbHVlICs9IHBhcnNlVW5xdW90ZWRSZXN1bHQ7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFyc2VMZWZ0QW5nbGVSZXN1bHQgPSB0aGlzLnRyeVBhcnNlTGVmdEFuZ2xlQnJhY2tldCgpO1xuXG4gICAgICBpZiAocGFyc2VMZWZ0QW5nbGVSZXN1bHQpIHtcbiAgICAgICAgdmFsdWUgKz0gcGFyc2VMZWZ0QW5nbGVSZXN1bHQ7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGFydCwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWw6IHtcbiAgICAgICAgdHlwZTogVFlQRS5saXRlcmFsLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgfSxcbiAgICAgIGVycjogbnVsbFxuICAgIH07XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS50cnlQYXJzZUxlZnRBbmdsZUJyYWNrZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmlzRU9GKCkgJiYgdGhpcy5jaGFyKCkgPT09IDYwXG4gICAgLyogYDxgICovXG4gICAgJiYgKHRoaXMuaWdub3JlVGFnIHx8IC8vIElmIGF0IHRoZSBvcGVuaW5nIHRhZyBvciBjbG9zaW5nIHRhZyBwb3NpdGlvbiwgYmFpbC5cbiAgICAhX2lzQWxwaGFPclNsYXNoKHRoaXMucGVlaygpIHx8IDApKSkge1xuICAgICAgdGhpcy5idW1wKCk7IC8vIGA8YFxuXG4gICAgICByZXR1cm4gJzwnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICAvKipcbiAgICogU3RhcnRpbmcgd2l0aCBJQ1UgNC44LCBhbiBBU0NJSSBhcG9zdHJvcGhlIG9ubHkgc3RhcnRzIHF1b3RlZCB0ZXh0IGlmIGl0IGltbWVkaWF0ZWx5IHByZWNlZGVzXG4gICAqIGEgY2hhcmFjdGVyIHRoYXQgcmVxdWlyZXMgcXVvdGluZyAodGhhdCBpcywgXCJvbmx5IHdoZXJlIG5lZWRlZFwiKSwgYW5kIHdvcmtzIHRoZSBzYW1lIGluXG4gICAqIG5lc3RlZCBtZXNzYWdlcyBhcyBvbiB0aGUgdG9wIGxldmVsIG9mIHRoZSBwYXR0ZXJuLiBUaGUgbmV3IGJlaGF2aW9yIGlzIG90aGVyd2lzZSBjb21wYXRpYmxlLlxuICAgKi9cblxuXG4gIFBhcnNlci5wcm90b3R5cGUudHJ5UGFyc2VRdW90ZSA9IGZ1bmN0aW9uIChwYXJlbnRBcmdUeXBlKSB7XG4gICAgaWYgKHRoaXMuaXNFT0YoKSB8fCB0aGlzLmNoYXIoKSAhPT0gMzlcbiAgICAvKiBgJ2AgKi9cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IC8vIFBhcnNlIGVzY2FwZWQgY2hhciBmb2xsb3dpbmcgdGhlIGFwb3N0cm9waGUsIG9yIGVhcmx5IHJldHVybiBpZiB0aGVyZSBpcyBubyBlc2NhcGVkIGNoYXIuXG4gICAgLy8gQ2hlY2sgaWYgaXMgdmFsaWQgZXNjYXBlZCBjaGFyYWN0ZXJcblxuXG4gICAgc3dpdGNoICh0aGlzLnBlZWsoKSkge1xuICAgICAgY2FzZSAzOVxuICAgICAgLyogYCdgICovXG4gICAgICA6XG4gICAgICAgIC8vIGRvdWJsZSBxdW90ZSwgc2hvdWxkIHJldHVybiBhcyBhIHNpbmdsZSBxdW90ZS5cbiAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgIHRoaXMuYnVtcCgpO1xuICAgICAgICByZXR1cm4gXCInXCI7XG4gICAgICAvLyAneycsICc8JywgJz4nLCAnfSdcblxuICAgICAgY2FzZSAxMjM6XG4gICAgICBjYXNlIDYwOlxuICAgICAgY2FzZSA2MjpcbiAgICAgIGNhc2UgMTI1OlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzNTpcbiAgICAgICAgLy8gJyMnXG4gICAgICAgIGlmIChwYXJlbnRBcmdUeXBlID09PSAncGx1cmFsJyB8fCBwYXJlbnRBcmdUeXBlID09PSAnc2VsZWN0b3JkaW5hbCcpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmJ1bXAoKTsgLy8gYXBvc3Ryb3BoZVxuXG4gICAgdmFyIGNvZGVQb2ludHMgPSBbdGhpcy5jaGFyKCldOyAvLyBlc2NhcGVkIGNoYXJcblxuICAgIHRoaXMuYnVtcCgpOyAvLyByZWFkIGNoYXJzIHVudGlsIHRoZSBvcHRpb25hbCBjbG9zaW5nIGFwb3N0cm9waGUgaXMgZm91bmRcblxuICAgIHdoaWxlICghdGhpcy5pc0VPRigpKSB7XG4gICAgICB2YXIgY2ggPSB0aGlzLmNoYXIoKTtcblxuICAgICAgaWYgKGNoID09PSAzOVxuICAgICAgLyogYCdgICovXG4gICAgICApIHtcbiAgICAgICAgICBpZiAodGhpcy5wZWVrKCkgPT09IDM5XG4gICAgICAgICAgLyogYCdgICovXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludHMucHVzaCgzOSk7IC8vIEJ1bXAgb25lIG1vcmUgdGltZSBiZWNhdXNlIHdlIG5lZWQgdG8gc2tpcCAyIGNoYXJhY3RlcnMuXG5cbiAgICAgICAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3B0aW9uYWwgY2xvc2luZyBhcG9zdHJvcGhlLlxuICAgICAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGVQb2ludHMucHVzaChjaCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYnVtcCgpO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tQ29kZVBvaW50LmFwcGx5KHZvaWQgMCwgY29kZVBvaW50cyk7XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS50cnlQYXJzZVVucXVvdGVkID0gZnVuY3Rpb24gKG5lc3RpbmdMZXZlbCwgcGFyZW50QXJnVHlwZSkge1xuICAgIGlmICh0aGlzLmlzRU9GKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjaCA9IHRoaXMuY2hhcigpO1xuXG4gICAgaWYgKGNoID09PSA2MFxuICAgIC8qIGA8YCAqL1xuICAgIHx8IGNoID09PSAxMjNcbiAgICAvKiBge2AgKi9cbiAgICB8fCBjaCA9PT0gMzVcbiAgICAvKiBgI2AgKi9cbiAgICAmJiAocGFyZW50QXJnVHlwZSA9PT0gJ3BsdXJhbCcgfHwgcGFyZW50QXJnVHlwZSA9PT0gJ3NlbGVjdG9yZGluYWwnKSB8fCBjaCA9PT0gMTI1XG4gICAgLyogYH1gICovXG4gICAgJiYgbmVzdGluZ0xldmVsID4gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVtcCgpO1xuICAgICAgcmV0dXJuIGZyb21Db2RlUG9pbnQoY2gpO1xuICAgIH1cbiAgfTtcblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQXJndW1lbnQgPSBmdW5jdGlvbiAobmVzdGluZ0xldmVsLCBleHBlY3RpbmdDbG9zZVRhZykge1xuICAgIHZhciBvcGVuaW5nQnJhY2VQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuICAgIHRoaXMuYnVtcCgpOyAvLyBge2BcblxuICAgIHRoaXMuYnVtcFNwYWNlKCk7XG5cbiAgICBpZiAodGhpcy5pc0VPRigpKSB7XG4gICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRVhQRUNUX0FSR1VNRU5UX0NMT1NJTkdfQlJBQ0UsIGNyZWF0ZUxvY2F0aW9uKG9wZW5pbmdCcmFjZVBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoYXIoKSA9PT0gMTI1XG4gICAgLyogYH1gICovXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYnVtcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRU1QVFlfQVJHVU1FTlQsIGNyZWF0ZUxvY2F0aW9uKG9wZW5pbmdCcmFjZVBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgICAgfSAvLyBhcmd1bWVudCBuYW1lXG5cblxuICAgIHZhciB2YWx1ZSA9IHRoaXMucGFyc2VJZGVudGlmaWVySWZQb3NzaWJsZSgpLnZhbHVlO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLk1BTEZPUk1FRF9BUkdVTUVOVCwgY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5idW1wU3BhY2UoKTtcblxuICAgIGlmICh0aGlzLmlzRU9GKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5FWFBFQ1RfQVJHVU1FTlRfQ0xPU0lOR19CUkFDRSwgY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLmNoYXIoKSkge1xuICAgICAgLy8gU2ltcGxlIGFyZ3VtZW50OiBge25hbWV9YFxuICAgICAgY2FzZSAxMjVcbiAgICAgIC8qIGB9YCAqL1xuICAgICAgOlxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5idW1wKCk7IC8vIGB9YFxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbDoge1xuICAgICAgICAgICAgICB0eXBlOiBUWVBFLmFyZ3VtZW50LFxuICAgICAgICAgICAgICAvLyB2YWx1ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNlcy5cbiAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICBsb2NhdGlvbjogY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycjogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIC8vIEFyZ3VtZW50IHdpdGggb3B0aW9uczogYHtuYW1lLCBmb3JtYXQsIC4uLn1gXG5cbiAgICAgIGNhc2UgNDRcbiAgICAgIC8qIGAsYCAqL1xuICAgICAgOlxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5idW1wKCk7IC8vIGAsYFxuXG4gICAgICAgICAgdGhpcy5idW1wU3BhY2UoKTtcblxuICAgICAgICAgIGlmICh0aGlzLmlzRU9GKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5FWFBFQ1RfQVJHVU1FTlRfQ0xPU0lOR19CUkFDRSwgY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VBcmd1bWVudE9wdGlvbnMobmVzdGluZ0xldmVsLCBleHBlY3RpbmdDbG9zZVRhZywgdmFsdWUsIG9wZW5pbmdCcmFjZVBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuTUFMRk9STUVEX0FSR1VNRU5ULCBjcmVhdGVMb2NhdGlvbihvcGVuaW5nQnJhY2VQb3NpdGlvbiwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBBZHZhbmNlIHRoZSBwYXJzZXIgdW50aWwgdGhlIGVuZCBvZiB0aGUgaWRlbnRpZmllciwgaWYgaXQgaXMgY3VycmVudGx5IG9uXG4gICAqIGFuIGlkZW50aWZpZXIgY2hhcmFjdGVyLiBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIG90aGVyd2lzZS5cbiAgICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXJ0aW5nUG9zaXRpb24gPSB0aGlzLmNsb25lUG9zaXRpb24oKTtcbiAgICB2YXIgc3RhcnRPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuICAgIHZhciB2YWx1ZSA9IG1hdGNoSWRlbnRpZmllckF0SW5kZXgodGhpcy5tZXNzYWdlLCBzdGFydE9mZnNldCk7XG4gICAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgdmFsdWUubGVuZ3RoO1xuICAgIHRoaXMuYnVtcFRvKGVuZE9mZnNldCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG4gICAgdmFyIGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oc3RhcnRpbmdQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICB9O1xuICB9O1xuXG4gIFBhcnNlci5wcm90b3R5cGUucGFyc2VBcmd1bWVudE9wdGlvbnMgPSBmdW5jdGlvbiAobmVzdGluZ0xldmVsLCBleHBlY3RpbmdDbG9zZVRhZywgdmFsdWUsIG9wZW5pbmdCcmFjZVBvc2l0aW9uKSB7XG4gICAgdmFyIF9hOyAvLyBQYXJzZSB0aGlzIHJhbmdlOlxuICAgIC8vIHtuYW1lLCB0eXBlLCBzdHlsZX1cbiAgICAvLyAgICAgICAgXi0tLV5cblxuXG4gICAgdmFyIHR5cGVTdGFydFBvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG4gICAgdmFyIGFyZ1R5cGUgPSB0aGlzLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGUoKS52YWx1ZTtcbiAgICB2YXIgdHlwZUVuZFBvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG5cbiAgICBzd2l0Y2ggKGFyZ1R5cGUpIHtcbiAgICAgIGNhc2UgJyc6XG4gICAgICAgIC8vIEV4cGVjdGluZyBhIHN0eWxlIHN0cmluZyBudW1iZXIsIGRhdGUsIHRpbWUsIHBsdXJhbCwgc2VsZWN0b3JkaW5hbCwgb3Igc2VsZWN0LlxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRVhQRUNUX0FSR1VNRU5UX1RZUEUsIGNyZWF0ZUxvY2F0aW9uKHR5cGVTdGFydFBvc2l0aW9uLCB0eXBlRW5kUG9zaXRpb24pKTtcblxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBQYXJzZSB0aGlzIHJhbmdlOlxuICAgICAgICAgIC8vIHtuYW1lLCBudW1iZXIsIHN0eWxlfVxuICAgICAgICAgIC8vICAgICAgICAgICAgICBeLS0tLS0tLV5cbiAgICAgICAgICB0aGlzLmJ1bXBTcGFjZSgpO1xuICAgICAgICAgIHZhciBzdHlsZUFuZExvY2F0aW9uID0gbnVsbDtcblxuICAgICAgICAgIGlmICh0aGlzLmJ1bXBJZignLCcpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1bXBTcGFjZSgpO1xuICAgICAgICAgICAgdmFyIHN0eWxlU3RhcnRQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VTaW1wbGVBcmdTdHlsZUlmUG9zc2libGUoKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlID0gdHJpbUVuZChyZXN1bHQudmFsKTtcblxuICAgICAgICAgICAgaWYgKHN0eWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRVhQRUNUX0FSR1VNRU5UX1NUWUxFLCBjcmVhdGVMb2NhdGlvbih0aGlzLmNsb25lUG9zaXRpb24oKSwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlTG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdHlsZVN0YXJ0UG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKTtcbiAgICAgICAgICAgIHN0eWxlQW5kTG9jYXRpb24gPSB7XG4gICAgICAgICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgICAgICAgc3R5bGVMb2NhdGlvbjogc3R5bGVMb2NhdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgYXJnQ2xvc2VSZXN1bHQgPSB0aGlzLnRyeVBhcnNlQXJndW1lbnRDbG9zZShvcGVuaW5nQnJhY2VQb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoYXJnQ2xvc2VSZXN1bHQuZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJnQ2xvc2VSZXN1bHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGxvY2F0aW9uXzEgPSBjcmVhdGVMb2NhdGlvbihvcGVuaW5nQnJhY2VQb3NpdGlvbiwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpOyAvLyBFeHRyYWN0IHN0eWxlIG9yIHNrZWxldG9uXG5cbiAgICAgICAgICBpZiAoc3R5bGVBbmRMb2NhdGlvbiAmJiBzdGFydHNXaXRoKHN0eWxlQW5kTG9jYXRpb24gPT09IG51bGwgfHwgc3R5bGVBbmRMb2NhdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVBbmRMb2NhdGlvbi5zdHlsZSwgJzo6JywgMCkpIHtcbiAgICAgICAgICAgIC8vIFNrZWxldG9uIHN0YXJ0cyB3aXRoIGA6OmAuXG4gICAgICAgICAgICB2YXIgc2tlbGV0b24gPSB0cmltU3RhcnQoc3R5bGVBbmRMb2NhdGlvbi5zdHlsZS5zbGljZSgyKSk7XG5cbiAgICAgICAgICAgIGlmIChhcmdUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZU51bWJlclNrZWxldG9uRnJvbVN0cmluZyhza2VsZXRvbiwgc3R5bGVBbmRMb2NhdGlvbi5zdHlsZUxvY2F0aW9uKTtcblxuICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogVFlQRS5udW1iZXIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25fMSxcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiByZXN1bHQudmFsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnI6IG51bGxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChza2VsZXRvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRVhQRUNUX0RBVEVfVElNRV9TS0VMRVRPTiwgbG9jYXRpb25fMSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogU0tFTEVUT05fVFlQRS5kYXRlVGltZSxcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBza2VsZXRvbixcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogc3R5bGVBbmRMb2NhdGlvbi5zdHlsZUxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHBhcnNlZE9wdGlvbnM6IHRoaXMuc2hvdWxkUGFyc2VTa2VsZXRvbnMgPyBwYXJzZURhdGVUaW1lU2tlbGV0b24oc2tlbGV0b24pIDoge31cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdmFyIHR5cGUgPSBhcmdUeXBlID09PSAnZGF0ZScgPyBUWVBFLmRhdGUgOiBUWVBFLnRpbWU7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXzEsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycjogbnVsbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gUmVndWxhciBzdHlsZSBvciBubyBzdHlsZS5cblxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbDoge1xuICAgICAgICAgICAgICB0eXBlOiBhcmdUeXBlID09PSAnbnVtYmVyJyA/IFRZUEUubnVtYmVyIDogYXJnVHlwZSA9PT0gJ2RhdGUnID8gVFlQRS5kYXRlIDogVFlQRS50aW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbl8xLFxuICAgICAgICAgICAgICBzdHlsZTogKF9hID0gc3R5bGVBbmRMb2NhdGlvbiA9PT0gbnVsbCB8fCBzdHlsZUFuZExvY2F0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZUFuZExvY2F0aW9uLnN0eWxlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyOiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdwbHVyYWwnOlxuICAgICAgY2FzZSAnc2VsZWN0b3JkaW5hbCc6XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gUGFyc2UgdGhpcyByYW5nZTpcbiAgICAgICAgICAvLyB7bmFtZSwgcGx1cmFsLCBvcHRpb25zfVxuICAgICAgICAgIC8vICAgICAgICAgICAgICBeLS0tLS0tLS0tXlxuICAgICAgICAgIHZhciB0eXBlRW5kUG9zaXRpb25fMSA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuICAgICAgICAgIHRoaXMuYnVtcFNwYWNlKCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuYnVtcElmKCcsJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX09QVElPTlMsIGNyZWF0ZUxvY2F0aW9uKHR5cGVFbmRQb3NpdGlvbl8xLCBfX2Fzc2lnbih7fSwgdHlwZUVuZFBvc2l0aW9uXzEpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5idW1wU3BhY2UoKTsgLy8gUGFyc2Ugb2Zmc2V0OlxuICAgICAgICAgIC8vIHtuYW1lLCBwbHVyYWwsIG9mZnNldDoxLCBvcHRpb25zfVxuICAgICAgICAgIC8vICAgICAgICAgICAgICAgIF4tLS0tLV5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIG9yIHRoZSBmaXJzdCBvcHRpb246XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyB7bmFtZSwgcGx1cmFsLCBvbmUgey4uLn0gb3RoZXIgey4uLn19XG4gICAgICAgICAgLy8gICAgICAgICAgICAgICAgXi0tXlxuXG4gICAgICAgICAgdmFyIGlkZW50aWZpZXJBbmRMb2NhdGlvbiA9IHRoaXMucGFyc2VJZGVudGlmaWVySWZQb3NzaWJsZSgpO1xuICAgICAgICAgIHZhciBwbHVyYWxPZmZzZXQgPSAwO1xuXG4gICAgICAgICAgaWYgKGFyZ1R5cGUgIT09ICdzZWxlY3QnICYmIGlkZW50aWZpZXJBbmRMb2NhdGlvbi52YWx1ZSA9PT0gJ29mZnNldCcpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5idW1wSWYoJzonKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUUsIGNyZWF0ZUxvY2F0aW9uKHRoaXMuY2xvbmVQb3NpdGlvbigpLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmJ1bXBTcGFjZSgpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMudHJ5UGFyc2VEZWNpbWFsSW50ZWdlcihFcnJvcktpbmQuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUUsIEVycm9yS2luZC5JTlZBTElEX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUUpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0LmVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSAvLyBQYXJzZSBhbm90aGVyIGlkZW50aWZpZXIgZm9yIG9wdGlvbiBwYXJzaW5nXG5cblxuICAgICAgICAgICAgdGhpcy5idW1wU3BhY2UoKTtcbiAgICAgICAgICAgIGlkZW50aWZpZXJBbmRMb2NhdGlvbiA9IHRoaXMucGFyc2VJZGVudGlmaWVySWZQb3NzaWJsZSgpO1xuICAgICAgICAgICAgcGx1cmFsT2Zmc2V0ID0gcmVzdWx0LnZhbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgb3B0aW9uc1Jlc3VsdCA9IHRoaXMudHJ5UGFyc2VQbHVyYWxPclNlbGVjdE9wdGlvbnMobmVzdGluZ0xldmVsLCBhcmdUeXBlLCBleHBlY3RpbmdDbG9zZVRhZywgaWRlbnRpZmllckFuZExvY2F0aW9uKTtcblxuICAgICAgICAgIGlmIChvcHRpb25zUmVzdWx0LmVycikge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNSZXN1bHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGFyZ0Nsb3NlUmVzdWx0ID0gdGhpcy50cnlQYXJzZUFyZ3VtZW50Q2xvc2Uob3BlbmluZ0JyYWNlUG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKGFyZ0Nsb3NlUmVzdWx0LmVycikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ0Nsb3NlUmVzdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBsb2NhdGlvbl8yID0gY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKTtcblxuICAgICAgICAgIGlmIChhcmdUeXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVFlQRS5zZWxlY3QsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZyb21FbnRyaWVzKG9wdGlvbnNSZXN1bHQudmFsKSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25fMlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnI6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRZUEUucGx1cmFsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBmcm9tRW50cmllcyhvcHRpb25zUmVzdWx0LnZhbCksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBwbHVyYWxPZmZzZXQsXG4gICAgICAgICAgICAgICAgcGx1cmFsVHlwZTogYXJnVHlwZSA9PT0gJ3BsdXJhbCcgPyAnY2FyZGluYWwnIDogJ29yZGluYWwnLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbl8yXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVycjogbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLklOVkFMSURfQVJHVU1FTlRfVFlQRSwgY3JlYXRlTG9jYXRpb24odHlwZVN0YXJ0UG9zaXRpb24sIHR5cGVFbmRQb3NpdGlvbikpO1xuICAgIH1cbiAgfTtcblxuICBQYXJzZXIucHJvdG90eXBlLnRyeVBhcnNlQXJndW1lbnRDbG9zZSA9IGZ1bmN0aW9uIChvcGVuaW5nQnJhY2VQb3NpdGlvbikge1xuICAgIC8vIFBhcnNlOiB7dmFsdWUsIG51bWJlciwgOjpjdXJyZW5jeS9HQlAgfVxuICAgIC8vXG4gICAgaWYgKHRoaXMuaXNFT0YoKSB8fCB0aGlzLmNoYXIoKSAhPT0gMTI1XG4gICAgLyogYH1gICovXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5FWFBFQ1RfQVJHVU1FTlRfQ0xPU0lOR19CUkFDRSwgY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7XG4gICAgICB9XG5cbiAgICB0aGlzLmJ1bXAoKTsgLy8gYH1gXG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsOiB0cnVlLFxuICAgICAgZXJyOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL2FmN2VkMWY2ZDIyOTgwMTNkYzMwMzYyODQzOGVjNGFiZTFmMTY0NzkvaWN1NGMvc291cmNlL2NvbW1vbi9tZXNzYWdlcGF0dGVybi5jcHAjTDY1OVxuICAgKi9cblxuXG4gIFBhcnNlci5wcm90b3R5cGUucGFyc2VTaW1wbGVBcmdTdHlsZUlmUG9zc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5lc3RlZEJyYWNlcyA9IDA7XG4gICAgdmFyIHN0YXJ0UG9zaXRpb24gPSB0aGlzLmNsb25lUG9zaXRpb24oKTtcblxuICAgIHdoaWxlICghdGhpcy5pc0VPRigpKSB7XG4gICAgICB2YXIgY2ggPSB0aGlzLmNoYXIoKTtcblxuICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICBjYXNlIDM5XG4gICAgICAgIC8qIGAnYCAqL1xuICAgICAgICA6XG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gVHJlYXQgYXBvc3Ryb3BoZSBhcyBxdW90aW5nIGJ1dCBpbmNsdWRlIGl0IGluIHRoZSBzdHlsZSBwYXJ0LlxuICAgICAgICAgICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSBxdW90ZWQgbGl0ZXJhbCB0ZXh0LlxuICAgICAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgICAgICB2YXIgYXBvc3Ryb3BoZVBvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5idW1wVW50aWwoXCInXCIpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKEVycm9yS2luZC5VTkNMT1NFRF9RVU9URV9JTl9BUkdVTUVOVF9TVFlMRSwgY3JlYXRlTG9jYXRpb24oYXBvc3Ryb3BoZVBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmJ1bXAoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIDEyM1xuICAgICAgICAvKiBge2AgKi9cbiAgICAgICAgOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5lc3RlZEJyYWNlcyArPSAxO1xuICAgICAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAxMjVcbiAgICAgICAgLyogYH1gICovXG4gICAgICAgIDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZiAobmVzdGVkQnJhY2VzID4gMCkge1xuICAgICAgICAgICAgICBuZXN0ZWRCcmFjZXMgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsOiB0aGlzLm1lc3NhZ2Uuc2xpY2Uoc3RhcnRQb3NpdGlvbi5vZmZzZXQsIHRoaXMub2Zmc2V0KCkpLFxuICAgICAgICAgICAgICAgIGVycjogbnVsbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmJ1bXAoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsOiB0aGlzLm1lc3NhZ2Uuc2xpY2Uoc3RhcnRQb3NpdGlvbi5vZmZzZXQsIHRoaXMub2Zmc2V0KCkpLFxuICAgICAgZXJyOiBudWxsXG4gICAgfTtcbiAgfTtcblxuICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTnVtYmVyU2tlbGV0b25Gcm9tU3RyaW5nID0gZnVuY3Rpb24gKHNrZWxldG9uLCBsb2NhdGlvbikge1xuICAgIHZhciB0b2tlbnMgPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICB0b2tlbnMgPSBwYXJzZU51bWJlclNrZWxldG9uRnJvbVN0cmluZyhza2VsZXRvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoRXJyb3JLaW5kLklOVkFMSURfTlVNQkVSX1NLRUxFVE9OLCBsb2NhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbDoge1xuICAgICAgICB0eXBlOiBTS0VMRVRPTl9UWVBFLm51bWJlcixcbiAgICAgICAgdG9rZW5zOiB0b2tlbnMsXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgcGFyc2VkT3B0aW9uczogdGhpcy5zaG91bGRQYXJzZVNrZWxldG9ucyA/IHBhcnNlTnVtYmVyU2tlbGV0b24odG9rZW5zKSA6IHt9XG4gICAgICB9LFxuICAgICAgZXJyOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSBuZXN0aW5nX2xldmVsIFRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgb2YgbWVzc2FnZXMuXG4gICAqICAgICBUaGlzIGNhbiBiZSBwb3NpdGl2ZSB3aGVuIHBhcnNpbmcgbWVzc2FnZSBmcmFnbWVudCBpbiBzZWxlY3Qgb3IgcGx1cmFsIGFyZ3VtZW50IG9wdGlvbnMuXG4gICAqIEBwYXJhbSBwYXJlbnRfYXJnX3R5cGUgVGhlIHBhcmVudCBhcmd1bWVudCdzIHR5cGUuXG4gICAqIEBwYXJhbSBwYXJzZWRfZmlyc3RfaWRlbnRpZmllciBJZiBwcm92aWRlZCwgdGhpcyBpcyB0aGUgZmlyc3QgaWRlbnRpZmllci1saWtlIHNlbGVjdG9yIG9mXG4gICAqICAgICB0aGUgYXJndW1lbnQuIEl0IGlzIGEgYnktcHJvZHVjdCBvZiBhIHByZXZpb3VzIHBhcnNpbmcgYXR0ZW1wdC5cbiAgICogQHBhcmFtIGV4cGVjdGluZ19jbG9zZV90YWcgSWYgdHJ1ZSwgdGhpcyBtZXNzYWdlIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgbmVzdGVkIGluc2lkZVxuICAgKiAgICAgYmV0d2VlbiBhIHBhaXIgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0YWdzLiBUaGUgbmVzdGVkIG1lc3NhZ2Ugd2lsbCBub3QgcGFyc2UgYmV5b25kXG4gICAqICAgICB0aGUgY2xvc2luZyB0YWcgYm91bmRhcnkuXG4gICAqL1xuXG5cbiAgUGFyc2VyLnByb3RvdHlwZS50cnlQYXJzZVBsdXJhbE9yU2VsZWN0T3B0aW9ucyA9IGZ1bmN0aW9uIChuZXN0aW5nTGV2ZWwsIHBhcmVudEFyZ1R5cGUsIGV4cGVjdENsb3NlVGFnLCBwYXJzZWRGaXJzdElkZW50aWZpZXIpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgaGFzT3RoZXJDbGF1c2UgPSBmYWxzZTtcbiAgICB2YXIgb3B0aW9ucyA9IFtdO1xuICAgIHZhciBwYXJzZWRTZWxlY3RvcnMgPSBuZXcgU2V0KCk7XG4gICAgdmFyIHNlbGVjdG9yID0gcGFyc2VkRmlyc3RJZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICBzZWxlY3RvckxvY2F0aW9uID0gcGFyc2VkRmlyc3RJZGVudGlmaWVyLmxvY2F0aW9uOyAvLyBQYXJzZTpcbiAgICAvLyBvbmUge29uZSBhcHBsZX1cbiAgICAvLyBeLS1eXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHNlbGVjdG9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIgc3RhcnRQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuXG4gICAgICAgIGlmIChwYXJlbnRBcmdUeXBlICE9PSAnc2VsZWN0JyAmJiB0aGlzLmJ1bXBJZignPScpKSB7XG4gICAgICAgICAgLy8gVHJ5IHBhcnNlIGA9e251bWJlcn1gIHNlbGVjdG9yXG4gICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMudHJ5UGFyc2VEZWNpbWFsSW50ZWdlcihFcnJvcktpbmQuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUiwgRXJyb3JLaW5kLklOVkFMSURfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SKTtcblxuICAgICAgICAgIGlmIChyZXN1bHQuZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNlbGVjdG9yTG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGFydFBvc2l0aW9uLCB0aGlzLmNsb25lUG9zaXRpb24oKSk7XG4gICAgICAgICAgc2VsZWN0b3IgPSB0aGlzLm1lc3NhZ2Uuc2xpY2Uoc3RhcnRQb3NpdGlvbi5vZmZzZXQsIHRoaXMub2Zmc2V0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IC8vIER1cGxpY2F0ZSBzZWxlY3RvciBjbGF1c2VzXG5cblxuICAgICAgaWYgKHBhcnNlZFNlbGVjdG9ycy5oYXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yKHBhcmVudEFyZ1R5cGUgPT09ICdzZWxlY3QnID8gRXJyb3JLaW5kLkRVUExJQ0FURV9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1IgOiBFcnJvcktpbmQuRFVQTElDQVRFX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUiwgc2VsZWN0b3JMb2NhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3RvciA9PT0gJ290aGVyJykge1xuICAgICAgICBoYXNPdGhlckNsYXVzZSA9IHRydWU7XG4gICAgICB9IC8vIFBhcnNlOlxuICAgICAgLy8gb25lIHtvbmUgYXBwbGV9XG4gICAgICAvLyAgICAgXi0tLS0tLS0tLS1eXG5cblxuICAgICAgdGhpcy5idW1wU3BhY2UoKTtcbiAgICAgIHZhciBvcGVuaW5nQnJhY2VQb3NpdGlvbiA9IHRoaXMuY2xvbmVQb3NpdGlvbigpO1xuXG4gICAgICBpZiAoIXRoaXMuYnVtcElmKCd7JykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IocGFyZW50QXJnVHlwZSA9PT0gJ3NlbGVjdCcgPyBFcnJvcktpbmQuRVhQRUNUX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVCA6IEVycm9yS2luZC5FWFBFQ1RfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SX0ZSQUdNRU5ULCBjcmVhdGVMb2NhdGlvbih0aGlzLmNsb25lUG9zaXRpb24oKSwgdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZyYWdtZW50UmVzdWx0ID0gdGhpcy5wYXJzZU1lc3NhZ2UobmVzdGluZ0xldmVsICsgMSwgcGFyZW50QXJnVHlwZSwgZXhwZWN0Q2xvc2VUYWcpO1xuXG4gICAgICBpZiAoZnJhZ21lbnRSZXN1bHQuZXJyKSB7XG4gICAgICAgIHJldHVybiBmcmFnbWVudFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ0Nsb3NlUmVzdWx0ID0gdGhpcy50cnlQYXJzZUFyZ3VtZW50Q2xvc2Uob3BlbmluZ0JyYWNlUG9zaXRpb24pO1xuXG4gICAgICBpZiAoYXJnQ2xvc2VSZXN1bHQuZXJyKSB7XG4gICAgICAgIHJldHVybiBhcmdDbG9zZVJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5wdXNoKFtzZWxlY3Rvciwge1xuICAgICAgICB2YWx1ZTogZnJhZ21lbnRSZXN1bHQudmFsLFxuICAgICAgICBsb2NhdGlvbjogY3JlYXRlTG9jYXRpb24ob3BlbmluZ0JyYWNlUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKVxuICAgICAgfV0pOyAvLyBLZWVwIHRyYWNrIG9mIHRoZSBleGlzdGluZyBzZWxlY3RvcnNcblxuICAgICAgcGFyc2VkU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7IC8vIFByZXAgbmV4dCBzZWxlY3RvciBjbGF1c2UuXG5cbiAgICAgIHRoaXMuYnVtcFNwYWNlKCk7XG4gICAgICBfYSA9IHRoaXMucGFyc2VJZGVudGlmaWVySWZQb3NzaWJsZSgpLCBzZWxlY3RvciA9IF9hLnZhbHVlLCBzZWxlY3RvckxvY2F0aW9uID0gX2EubG9jYXRpb247XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5lcnJvcihwYXJlbnRBcmdUeXBlID09PSAnc2VsZWN0JyA/IEVycm9yS2luZC5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX1NFTEVDVE9SIDogRXJyb3JLaW5kLkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1IsIGNyZWF0ZUxvY2F0aW9uKHRoaXMuY2xvbmVQb3NpdGlvbigpLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlcXVpcmVzT3RoZXJDbGF1c2UgJiYgIWhhc090aGVyQ2xhdXNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lcnJvcihFcnJvcktpbmQuTUlTU0lOR19PVEhFUl9DTEFVU0UsIGNyZWF0ZUxvY2F0aW9uKHRoaXMuY2xvbmVQb3NpdGlvbigpLCB0aGlzLmNsb25lUG9zaXRpb24oKSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWw6IG9wdGlvbnMsXG4gICAgICBlcnI6IG51bGxcbiAgICB9O1xuICB9O1xuXG4gIFBhcnNlci5wcm90b3R5cGUudHJ5UGFyc2VEZWNpbWFsSW50ZWdlciA9IGZ1bmN0aW9uIChleHBlY3ROdW1iZXJFcnJvciwgaW52YWxpZE51bWJlckVycm9yKSB7XG4gICAgdmFyIHNpZ24gPSAxO1xuICAgIHZhciBzdGFydGluZ1Bvc2l0aW9uID0gdGhpcy5jbG9uZVBvc2l0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5idW1wSWYoJysnKSkge30gZWxzZSBpZiAodGhpcy5idW1wSWYoJy0nKSkge1xuICAgICAgc2lnbiA9IC0xO1xuICAgIH1cblxuICAgIHZhciBoYXNEaWdpdHMgPSBmYWxzZTtcbiAgICB2YXIgZGVjaW1hbCA9IDA7XG5cbiAgICB3aGlsZSAoIXRoaXMuaXNFT0YoKSkge1xuICAgICAgdmFyIGNoID0gdGhpcy5jaGFyKCk7XG5cbiAgICAgIGlmIChjaCA+PSA0OFxuICAgICAgLyogYDBgICovXG4gICAgICAmJiBjaCA8PSA1N1xuICAgICAgLyogYDlgICovXG4gICAgICApIHtcbiAgICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgICAgIGRlY2ltYWwgPSBkZWNpbWFsICogMTAgKyAoY2ggLSA0OCk7XG4gICAgICAgICAgdGhpcy5idW1wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHN0YXJ0aW5nUG9zaXRpb24sIHRoaXMuY2xvbmVQb3NpdGlvbigpKTtcblxuICAgIGlmICghaGFzRGlnaXRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5lcnJvcihleHBlY3ROdW1iZXJFcnJvciwgbG9jYXRpb24pO1xuICAgIH1cblxuICAgIGRlY2ltYWwgKj0gc2lnbjtcblxuICAgIGlmICghaXNTYWZlSW50ZWdlcihkZWNpbWFsKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXJyb3IoaW52YWxpZE51bWJlckVycm9yLCBsb2NhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbDogZGVjaW1hbCxcbiAgICAgIGVycjogbnVsbFxuICAgIH07XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb24ub2Zmc2V0O1xuICB9O1xuXG4gIFBhcnNlci5wcm90b3R5cGUuaXNFT0YgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0KCkgPT09IHRoaXMubWVzc2FnZS5sZW5ndGg7XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS5jbG9uZVBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFRoaXMgaXMgbXVjaCBmYXN0ZXIgdGhhbiBgT2JqZWN0LmFzc2lnbmAgb3Igc3ByZWFkLlxuICAgIHJldHVybiB7XG4gICAgICBvZmZzZXQ6IHRoaXMucG9zaXRpb24ub2Zmc2V0LFxuICAgICAgbGluZTogdGhpcy5wb3NpdGlvbi5saW5lLFxuICAgICAgY29sdW1uOiB0aGlzLnBvc2l0aW9uLmNvbHVtblxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHBhcnNlci5cbiAgICogVGhyb3dzIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmQuXG4gICAqL1xuXG5cbiAgUGFyc2VyLnByb3RvdHlwZS5jaGFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLnBvc2l0aW9uLm9mZnNldDtcblxuICAgIGlmIChvZmZzZXQgPj0gdGhpcy5tZXNzYWdlLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ291dCBvZiBib3VuZCcpO1xuICAgIH1cblxuICAgIHZhciBjb2RlID0gY29kZVBvaW50QXQodGhpcy5tZXNzYWdlLCBvZmZzZXQpO1xuXG4gICAgaWYgKGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJPZmZzZXQgXCIgKyBvZmZzZXQgKyBcIiBpcyBhdCBpbnZhbGlkIFVURi0xNiBjb2RlIHVuaXQgYm91bmRhcnlcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG4gIH07XG5cbiAgUGFyc2VyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChraW5kLCBsb2NhdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICB2YWw6IG51bGwsXG4gICAgICBlcnI6IHtcbiAgICAgICAga2luZDoga2luZCxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICAvKiogQnVtcCB0aGUgcGFyc2VyIHRvIHRoZSBuZXh0IFVURi0xNiBjb2RlIHVuaXQuICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLmJ1bXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNFT0YoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjb2RlID0gdGhpcy5jaGFyKCk7XG5cbiAgICBpZiAoY29kZSA9PT0gMTBcbiAgICAvKiAnXFxuJyAqL1xuICAgICkge1xuICAgICAgICB0aGlzLnBvc2l0aW9uLmxpbmUgKz0gMTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbi5jb2x1bW4gPSAxO1xuICAgICAgICB0aGlzLnBvc2l0aW9uLm9mZnNldCArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9zaXRpb24uY29sdW1uICs9IDE7IC8vIDAgfiAweDEwMDAwIC0+IHVuaWNvZGUgQk1QLCBvdGhlcndpc2Ugc2tpcCB0aGUgc3Vycm9nYXRlIHBhaXIuXG5cbiAgICAgIHRoaXMucG9zaXRpb24ub2Zmc2V0ICs9IGNvZGUgPCAweDEwMDAwID8gMSA6IDI7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogSWYgdGhlIHN1YnN0cmluZyBzdGFydGluZyBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgcGFyc2VyIGhhc1xuICAgKiB0aGUgZ2l2ZW4gcHJlZml4LCB0aGVuIGJ1bXAgdGhlIHBhcnNlciB0byB0aGUgY2hhcmFjdGVyIGltbWVkaWF0ZWx5XG4gICAqIGZvbGxvd2luZyB0aGUgcHJlZml4IGFuZCByZXR1cm4gdHJ1ZS4gT3RoZXJ3aXNlLCBkb24ndCBidW1wIHRoZSBwYXJzZXJcbiAgICogYW5kIHJldHVybiBmYWxzZS5cbiAgICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLmJ1bXBJZiA9IGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICBpZiAoc3RhcnRzV2l0aCh0aGlzLm1lc3NhZ2UsIHByZWZpeCwgdGhpcy5vZmZzZXQoKSkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuYnVtcCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiBCdW1wIHRoZSBwYXJzZXIgdW50aWwgdGhlIHBhdHRlcm4gY2hhcmFjdGVyIGlzIGZvdW5kIGFuZCByZXR1cm4gYHRydWVgLlxuICAgKiBPdGhlcndpc2UgYnVtcCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGFuZCByZXR1cm4gYGZhbHNlYC5cbiAgICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLmJ1bXBVbnRpbCA9IGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuICAgIHZhciBpbmRleCA9IHRoaXMubWVzc2FnZS5pbmRleE9mKHBhdHRlcm4sIGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuYnVtcFRvKGluZGV4KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1bXBUbyh0aGlzLm1lc3NhZ2UubGVuZ3RoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBCdW1wIHRoZSBwYXJzZXIgdG8gdGhlIHRhcmdldCBvZmZzZXQuXG4gICAqIElmIHRhcmdldCBvZmZzZXQgaXMgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGlucHV0LCBidW1wIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQuXG4gICAqL1xuXG5cbiAgUGFyc2VyLnByb3RvdHlwZS5idW1wVG8gPSBmdW5jdGlvbiAodGFyZ2V0T2Zmc2V0KSB7XG4gICAgaWYgKHRoaXMub2Zmc2V0KCkgPiB0YXJnZXRPZmZzZXQpIHtcbiAgICAgIHRocm93IEVycm9yKFwidGFyZ2V0T2Zmc2V0IFwiICsgdGFyZ2V0T2Zmc2V0ICsgXCIgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGN1cnJlbnQgb2Zmc2V0IFwiICsgdGhpcy5vZmZzZXQoKSk7XG4gICAgfVxuXG4gICAgdGFyZ2V0T2Zmc2V0ID0gTWF0aC5taW4odGFyZ2V0T2Zmc2V0LCB0aGlzLm1lc3NhZ2UubGVuZ3RoKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgICAgaWYgKG9mZnNldCA9PT0gdGFyZ2V0T2Zmc2V0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAob2Zmc2V0ID4gdGFyZ2V0T2Zmc2V0KSB7XG4gICAgICAgIHRocm93IEVycm9yKFwidGFyZ2V0T2Zmc2V0IFwiICsgdGFyZ2V0T2Zmc2V0ICsgXCIgaXMgYXQgaW52YWxpZCBVVEYtMTYgY29kZSB1bml0IGJvdW5kYXJ5XCIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJ1bXAoKTtcblxuICAgICAgaWYgKHRoaXMuaXNFT0YoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKiBhZHZhbmNlIHRoZSBwYXJzZXIgdGhyb3VnaCBhbGwgd2hpdGVzcGFjZSB0byB0aGUgbmV4dCBub24td2hpdGVzcGFjZSBjb2RlIHVuaXQuICovXG5cblxuICBQYXJzZXIucHJvdG90eXBlLmJ1bXBTcGFjZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aGlsZSAoIXRoaXMuaXNFT0YoKSAmJiBfaXNXaGl0ZVNwYWNlKHRoaXMuY2hhcigpKSkge1xuICAgICAgdGhpcy5idW1wKCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogUGVlayBhdCB0aGUgKm5leHQqIFVuaWNvZGUgY29kZXBvaW50IGluIHRoZSBpbnB1dCB3aXRob3V0IGFkdmFuY2luZyB0aGUgcGFyc2VyLlxuICAgKiBJZiB0aGUgaW5wdXQgaGFzIGJlZW4gZXhoYXVzdGVkLCB0aGVuIHRoaXMgcmV0dXJucyBudWxsLlxuICAgKi9cblxuXG4gIFBhcnNlci5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5pc0VPRigpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY29kZSA9IHRoaXMuY2hhcigpO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuICAgIHZhciBuZXh0Q29kZSA9IHRoaXMubWVzc2FnZS5jaGFyQ29kZUF0KG9mZnNldCArIChjb2RlID49IDB4MTAwMDAgPyAyIDogMSkpO1xuICAgIHJldHVybiBuZXh0Q29kZSAhPT0gbnVsbCAmJiBuZXh0Q29kZSAhPT0gdm9pZCAwID8gbmV4dENvZGUgOiBudWxsO1xuICB9O1xuXG4gIHJldHVybiBQYXJzZXI7XG59KCk7XG5cbmV4cG9ydCB7IFBhcnNlciB9O1xuLyoqXG4gKiBUaGlzIGNoZWNrIGlmIGNvZGVwb2ludCBpcyBhbHBoYWJldCAobG93ZXIgJiB1cHBlcmNhc2UpXG4gKiBAcGFyYW0gY29kZXBvaW50XG4gKiBAcmV0dXJuc1xuICovXG5cbmZ1bmN0aW9uIF9pc0FscGhhKGNvZGVwb2ludCkge1xuICByZXR1cm4gY29kZXBvaW50ID49IDk3ICYmIGNvZGVwb2ludCA8PSAxMjIgfHwgY29kZXBvaW50ID49IDY1ICYmIGNvZGVwb2ludCA8PSA5MDtcbn1cblxuZnVuY3Rpb24gX2lzQWxwaGFPclNsYXNoKGNvZGVwb2ludCkge1xuICByZXR1cm4gX2lzQWxwaGEoY29kZXBvaW50KSB8fCBjb2RlcG9pbnQgPT09IDQ3O1xuICAvKiAnLycgKi9cbn1cbi8qKiBTZWUgYHBhcnNlVGFnYCBmdW5jdGlvbiBkb2NzLiAqL1xuXG5cbmZ1bmN0aW9uIF9pc1BvdGVudGlhbEVsZW1lbnROYW1lQ2hhcihjKSB7XG4gIHJldHVybiBjID09PSA0NVxuICAvKiAnLScgKi9cbiAgfHwgYyA9PT0gNDZcbiAgLyogJy4nICovXG4gIHx8IGMgPj0gNDggJiYgYyA8PSA1N1xuICAvKiAwLi45ICovXG4gIHx8IGMgPT09IDk1XG4gIC8qICdfJyAqL1xuICB8fCBjID49IDk3ICYmIGMgPD0gMTIyXG4gIC8qKiBhLi56ICovXG4gIHx8IGMgPj0gNjUgJiYgYyA8PSA5MFxuICAvKiBBLi5aICovXG4gIHx8IGMgPT0gMHhiNyB8fCBjID49IDB4YzAgJiYgYyA8PSAweGQ2IHx8IGMgPj0gMHhkOCAmJiBjIDw9IDB4ZjYgfHwgYyA+PSAweGY4ICYmIGMgPD0gMHgzN2QgfHwgYyA+PSAweDM3ZiAmJiBjIDw9IDB4MWZmZiB8fCBjID49IDB4MjAwYyAmJiBjIDw9IDB4MjAwZCB8fCBjID49IDB4MjAzZiAmJiBjIDw9IDB4MjA0MCB8fCBjID49IDB4MjA3MCAmJiBjIDw9IDB4MjE4ZiB8fCBjID49IDB4MmMwMCAmJiBjIDw9IDB4MmZlZiB8fCBjID49IDB4MzAwMSAmJiBjIDw9IDB4ZDdmZiB8fCBjID49IDB4ZjkwMCAmJiBjIDw9IDB4ZmRjZiB8fCBjID49IDB4ZmRmMCAmJiBjIDw9IDB4ZmZmZCB8fCBjID49IDB4MTAwMDAgJiYgYyA8PSAweGVmZmZmO1xufVxuLyoqXG4gKiBDb2RlIHBvaW50IGVxdWl2YWxlbnQgb2YgcmVnZXggYFxccHtXaGl0ZV9TcGFjZX1gLlxuICogRnJvbTogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL1VDRC9sYXRlc3QvdWNkL1Byb3BMaXN0LnR4dFxuICovXG5cblxuZnVuY3Rpb24gX2lzV2hpdGVTcGFjZShjKSB7XG4gIHJldHVybiBjID49IDB4MDAwOSAmJiBjIDw9IDB4MDAwZCB8fCBjID09PSAweDAwMjAgfHwgYyA9PT0gMHgwMDg1IHx8IGMgPj0gMHgyMDBlICYmIGMgPD0gMHgyMDBmIHx8IGMgPT09IDB4MjAyOCB8fCBjID09PSAweDIwMjk7XG59XG4vKipcbiAqIENvZGUgcG9pbnQgZXF1aXZhbGVudCBvZiByZWdleCBgXFxwe1BhdHRlcm5fU3ludGF4fWAuXG4gKiBTZWUgaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL1VDRC9sYXRlc3QvdWNkL1Byb3BMaXN0LnR4dFxuICovXG5cblxuZnVuY3Rpb24gX2lzUGF0dGVyblN5bnRheChjKSB7XG4gIHJldHVybiBjID49IDB4MDAyMSAmJiBjIDw9IDB4MDAyMyB8fCBjID09PSAweDAwMjQgfHwgYyA+PSAweDAwMjUgJiYgYyA8PSAweDAwMjcgfHwgYyA9PT0gMHgwMDI4IHx8IGMgPT09IDB4MDAyOSB8fCBjID09PSAweDAwMmEgfHwgYyA9PT0gMHgwMDJiIHx8IGMgPT09IDB4MDAyYyB8fCBjID09PSAweDAwMmQgfHwgYyA+PSAweDAwMmUgJiYgYyA8PSAweDAwMmYgfHwgYyA+PSAweDAwM2EgJiYgYyA8PSAweDAwM2IgfHwgYyA+PSAweDAwM2MgJiYgYyA8PSAweDAwM2UgfHwgYyA+PSAweDAwM2YgJiYgYyA8PSAweDAwNDAgfHwgYyA9PT0gMHgwMDViIHx8IGMgPT09IDB4MDA1YyB8fCBjID09PSAweDAwNWQgfHwgYyA9PT0gMHgwMDVlIHx8IGMgPT09IDB4MDA2MCB8fCBjID09PSAweDAwN2IgfHwgYyA9PT0gMHgwMDdjIHx8IGMgPT09IDB4MDA3ZCB8fCBjID09PSAweDAwN2UgfHwgYyA9PT0gMHgwMGExIHx8IGMgPj0gMHgwMGEyICYmIGMgPD0gMHgwMGE1IHx8IGMgPT09IDB4MDBhNiB8fCBjID09PSAweDAwYTcgfHwgYyA9PT0gMHgwMGE5IHx8IGMgPT09IDB4MDBhYiB8fCBjID09PSAweDAwYWMgfHwgYyA9PT0gMHgwMGFlIHx8IGMgPT09IDB4MDBiMCB8fCBjID09PSAweDAwYjEgfHwgYyA9PT0gMHgwMGI2IHx8IGMgPT09IDB4MDBiYiB8fCBjID09PSAweDAwYmYgfHwgYyA9PT0gMHgwMGQ3IHx8IGMgPT09IDB4MDBmNyB8fCBjID49IDB4MjAxMCAmJiBjIDw9IDB4MjAxNSB8fCBjID49IDB4MjAxNiAmJiBjIDw9IDB4MjAxNyB8fCBjID09PSAweDIwMTggfHwgYyA9PT0gMHgyMDE5IHx8IGMgPT09IDB4MjAxYSB8fCBjID49IDB4MjAxYiAmJiBjIDw9IDB4MjAxYyB8fCBjID09PSAweDIwMWQgfHwgYyA9PT0gMHgyMDFlIHx8IGMgPT09IDB4MjAxZiB8fCBjID49IDB4MjAyMCAmJiBjIDw9IDB4MjAyNyB8fCBjID49IDB4MjAzMCAmJiBjIDw9IDB4MjAzOCB8fCBjID09PSAweDIwMzkgfHwgYyA9PT0gMHgyMDNhIHx8IGMgPj0gMHgyMDNiICYmIGMgPD0gMHgyMDNlIHx8IGMgPj0gMHgyMDQxICYmIGMgPD0gMHgyMDQzIHx8IGMgPT09IDB4MjA0NCB8fCBjID09PSAweDIwNDUgfHwgYyA9PT0gMHgyMDQ2IHx8IGMgPj0gMHgyMDQ3ICYmIGMgPD0gMHgyMDUxIHx8IGMgPT09IDB4MjA1MiB8fCBjID09PSAweDIwNTMgfHwgYyA+PSAweDIwNTUgJiYgYyA8PSAweDIwNWUgfHwgYyA+PSAweDIxOTAgJiYgYyA8PSAweDIxOTQgfHwgYyA+PSAweDIxOTUgJiYgYyA8PSAweDIxOTkgfHwgYyA+PSAweDIxOWEgJiYgYyA8PSAweDIxOWIgfHwgYyA+PSAweDIxOWMgJiYgYyA8PSAweDIxOWYgfHwgYyA9PT0gMHgyMWEwIHx8IGMgPj0gMHgyMWExICYmIGMgPD0gMHgyMWEyIHx8IGMgPT09IDB4MjFhMyB8fCBjID49IDB4MjFhNCAmJiBjIDw9IDB4MjFhNSB8fCBjID09PSAweDIxYTYgfHwgYyA+PSAweDIxYTcgJiYgYyA8PSAweDIxYWQgfHwgYyA9PT0gMHgyMWFlIHx8IGMgPj0gMHgyMWFmICYmIGMgPD0gMHgyMWNkIHx8IGMgPj0gMHgyMWNlICYmIGMgPD0gMHgyMWNmIHx8IGMgPj0gMHgyMWQwICYmIGMgPD0gMHgyMWQxIHx8IGMgPT09IDB4MjFkMiB8fCBjID09PSAweDIxZDMgfHwgYyA9PT0gMHgyMWQ0IHx8IGMgPj0gMHgyMWQ1ICYmIGMgPD0gMHgyMWYzIHx8IGMgPj0gMHgyMWY0ICYmIGMgPD0gMHgyMmZmIHx8IGMgPj0gMHgyMzAwICYmIGMgPD0gMHgyMzA3IHx8IGMgPT09IDB4MjMwOCB8fCBjID09PSAweDIzMDkgfHwgYyA9PT0gMHgyMzBhIHx8IGMgPT09IDB4MjMwYiB8fCBjID49IDB4MjMwYyAmJiBjIDw9IDB4MjMxZiB8fCBjID49IDB4MjMyMCAmJiBjIDw9IDB4MjMyMSB8fCBjID49IDB4MjMyMiAmJiBjIDw9IDB4MjMyOCB8fCBjID09PSAweDIzMjkgfHwgYyA9PT0gMHgyMzJhIHx8IGMgPj0gMHgyMzJiICYmIGMgPD0gMHgyMzdiIHx8IGMgPT09IDB4MjM3YyB8fCBjID49IDB4MjM3ZCAmJiBjIDw9IDB4MjM5YSB8fCBjID49IDB4MjM5YiAmJiBjIDw9IDB4MjNiMyB8fCBjID49IDB4MjNiNCAmJiBjIDw9IDB4MjNkYiB8fCBjID49IDB4MjNkYyAmJiBjIDw9IDB4MjNlMSB8fCBjID49IDB4MjNlMiAmJiBjIDw9IDB4MjQyNiB8fCBjID49IDB4MjQyNyAmJiBjIDw9IDB4MjQzZiB8fCBjID49IDB4MjQ0MCAmJiBjIDw9IDB4MjQ0YSB8fCBjID49IDB4MjQ0YiAmJiBjIDw9IDB4MjQ1ZiB8fCBjID49IDB4MjUwMCAmJiBjIDw9IDB4MjViNiB8fCBjID09PSAweDI1YjcgfHwgYyA+PSAweDI1YjggJiYgYyA8PSAweDI1YzAgfHwgYyA9PT0gMHgyNWMxIHx8IGMgPj0gMHgyNWMyICYmIGMgPD0gMHgyNWY3IHx8IGMgPj0gMHgyNWY4ICYmIGMgPD0gMHgyNWZmIHx8IGMgPj0gMHgyNjAwICYmIGMgPD0gMHgyNjZlIHx8IGMgPT09IDB4MjY2ZiB8fCBjID49IDB4MjY3MCAmJiBjIDw9IDB4Mjc2NyB8fCBjID09PSAweDI3NjggfHwgYyA9PT0gMHgyNzY5IHx8IGMgPT09IDB4Mjc2YSB8fCBjID09PSAweDI3NmIgfHwgYyA9PT0gMHgyNzZjIHx8IGMgPT09IDB4Mjc2ZCB8fCBjID09PSAweDI3NmUgfHwgYyA9PT0gMHgyNzZmIHx8IGMgPT09IDB4Mjc3MCB8fCBjID09PSAweDI3NzEgfHwgYyA9PT0gMHgyNzcyIHx8IGMgPT09IDB4Mjc3MyB8fCBjID09PSAweDI3NzQgfHwgYyA9PT0gMHgyNzc1IHx8IGMgPj0gMHgyNzk0ICYmIGMgPD0gMHgyN2JmIHx8IGMgPj0gMHgyN2MwICYmIGMgPD0gMHgyN2M0IHx8IGMgPT09IDB4MjdjNSB8fCBjID09PSAweDI3YzYgfHwgYyA+PSAweDI3YzcgJiYgYyA8PSAweDI3ZTUgfHwgYyA9PT0gMHgyN2U2IHx8IGMgPT09IDB4MjdlNyB8fCBjID09PSAweDI3ZTggfHwgYyA9PT0gMHgyN2U5IHx8IGMgPT09IDB4MjdlYSB8fCBjID09PSAweDI3ZWIgfHwgYyA9PT0gMHgyN2VjIHx8IGMgPT09IDB4MjdlZCB8fCBjID09PSAweDI3ZWUgfHwgYyA9PT0gMHgyN2VmIHx8IGMgPj0gMHgyN2YwICYmIGMgPD0gMHgyN2ZmIHx8IGMgPj0gMHgyODAwICYmIGMgPD0gMHgyOGZmIHx8IGMgPj0gMHgyOTAwICYmIGMgPD0gMHgyOTgyIHx8IGMgPT09IDB4Mjk4MyB8fCBjID09PSAweDI5ODQgfHwgYyA9PT0gMHgyOTg1IHx8IGMgPT09IDB4Mjk4NiB8fCBjID09PSAweDI5ODcgfHwgYyA9PT0gMHgyOTg4IHx8IGMgPT09IDB4Mjk4OSB8fCBjID09PSAweDI5OGEgfHwgYyA9PT0gMHgyOThiIHx8IGMgPT09IDB4Mjk4YyB8fCBjID09PSAweDI5OGQgfHwgYyA9PT0gMHgyOThlIHx8IGMgPT09IDB4Mjk4ZiB8fCBjID09PSAweDI5OTAgfHwgYyA9PT0gMHgyOTkxIHx8IGMgPT09IDB4Mjk5MiB8fCBjID09PSAweDI5OTMgfHwgYyA9PT0gMHgyOTk0IHx8IGMgPT09IDB4Mjk5NSB8fCBjID09PSAweDI5OTYgfHwgYyA9PT0gMHgyOTk3IHx8IGMgPT09IDB4Mjk5OCB8fCBjID49IDB4Mjk5OSAmJiBjIDw9IDB4MjlkNyB8fCBjID09PSAweDI5ZDggfHwgYyA9PT0gMHgyOWQ5IHx8IGMgPT09IDB4MjlkYSB8fCBjID09PSAweDI5ZGIgfHwgYyA+PSAweDI5ZGMgJiYgYyA8PSAweDI5ZmIgfHwgYyA9PT0gMHgyOWZjIHx8IGMgPT09IDB4MjlmZCB8fCBjID49IDB4MjlmZSAmJiBjIDw9IDB4MmFmZiB8fCBjID49IDB4MmIwMCAmJiBjIDw9IDB4MmIyZiB8fCBjID49IDB4MmIzMCAmJiBjIDw9IDB4MmI0NCB8fCBjID49IDB4MmI0NSAmJiBjIDw9IDB4MmI0NiB8fCBjID49IDB4MmI0NyAmJiBjIDw9IDB4MmI0YyB8fCBjID49IDB4MmI0ZCAmJiBjIDw9IDB4MmI3MyB8fCBjID49IDB4MmI3NCAmJiBjIDw9IDB4MmI3NSB8fCBjID49IDB4MmI3NiAmJiBjIDw9IDB4MmI5NSB8fCBjID09PSAweDJiOTYgfHwgYyA+PSAweDJiOTcgJiYgYyA8PSAweDJiZmYgfHwgYyA+PSAweDJlMDAgJiYgYyA8PSAweDJlMDEgfHwgYyA9PT0gMHgyZTAyIHx8IGMgPT09IDB4MmUwMyB8fCBjID09PSAweDJlMDQgfHwgYyA9PT0gMHgyZTA1IHx8IGMgPj0gMHgyZTA2ICYmIGMgPD0gMHgyZTA4IHx8IGMgPT09IDB4MmUwOSB8fCBjID09PSAweDJlMGEgfHwgYyA9PT0gMHgyZTBiIHx8IGMgPT09IDB4MmUwYyB8fCBjID09PSAweDJlMGQgfHwgYyA+PSAweDJlMGUgJiYgYyA8PSAweDJlMTYgfHwgYyA9PT0gMHgyZTE3IHx8IGMgPj0gMHgyZTE4ICYmIGMgPD0gMHgyZTE5IHx8IGMgPT09IDB4MmUxYSB8fCBjID09PSAweDJlMWIgfHwgYyA9PT0gMHgyZTFjIHx8IGMgPT09IDB4MmUxZCB8fCBjID49IDB4MmUxZSAmJiBjIDw9IDB4MmUxZiB8fCBjID09PSAweDJlMjAgfHwgYyA9PT0gMHgyZTIxIHx8IGMgPT09IDB4MmUyMiB8fCBjID09PSAweDJlMjMgfHwgYyA9PT0gMHgyZTI0IHx8IGMgPT09IDB4MmUyNSB8fCBjID09PSAweDJlMjYgfHwgYyA9PT0gMHgyZTI3IHx8IGMgPT09IDB4MmUyOCB8fCBjID09PSAweDJlMjkgfHwgYyA+PSAweDJlMmEgJiYgYyA8PSAweDJlMmUgfHwgYyA9PT0gMHgyZTJmIHx8IGMgPj0gMHgyZTMwICYmIGMgPD0gMHgyZTM5IHx8IGMgPj0gMHgyZTNhICYmIGMgPD0gMHgyZTNiIHx8IGMgPj0gMHgyZTNjICYmIGMgPD0gMHgyZTNmIHx8IGMgPT09IDB4MmU0MCB8fCBjID09PSAweDJlNDEgfHwgYyA9PT0gMHgyZTQyIHx8IGMgPj0gMHgyZTQzICYmIGMgPD0gMHgyZTRmIHx8IGMgPj0gMHgyZTUwICYmIGMgPD0gMHgyZTUxIHx8IGMgPT09IDB4MmU1MiB8fCBjID49IDB4MmU1MyAmJiBjIDw9IDB4MmU3ZiB8fCBjID49IDB4MzAwMSAmJiBjIDw9IDB4MzAwMyB8fCBjID09PSAweDMwMDggfHwgYyA9PT0gMHgzMDA5IHx8IGMgPT09IDB4MzAwYSB8fCBjID09PSAweDMwMGIgfHwgYyA9PT0gMHgzMDBjIHx8IGMgPT09IDB4MzAwZCB8fCBjID09PSAweDMwMGUgfHwgYyA9PT0gMHgzMDBmIHx8IGMgPT09IDB4MzAxMCB8fCBjID09PSAweDMwMTEgfHwgYyA+PSAweDMwMTIgJiYgYyA8PSAweDMwMTMgfHwgYyA9PT0gMHgzMDE0IHx8IGMgPT09IDB4MzAxNSB8fCBjID09PSAweDMwMTYgfHwgYyA9PT0gMHgzMDE3IHx8IGMgPT09IDB4MzAxOCB8fCBjID09PSAweDMwMTkgfHwgYyA9PT0gMHgzMDFhIHx8IGMgPT09IDB4MzAxYiB8fCBjID09PSAweDMwMWMgfHwgYyA9PT0gMHgzMDFkIHx8IGMgPj0gMHgzMDFlICYmIGMgPD0gMHgzMDFmIHx8IGMgPT09IDB4MzAyMCB8fCBjID09PSAweDMwMzAgfHwgYyA9PT0gMHhmZDNlIHx8IGMgPT09IDB4ZmQzZiB8fCBjID49IDB4ZmU0NSAmJiBjIDw9IDB4ZmU0Njtcbn0iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgRXJyb3JLaW5kIH0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgeyBpc0RhdGVFbGVtZW50LCBpc0RhdGVUaW1lU2tlbGV0b24sIGlzTnVtYmVyRWxlbWVudCwgaXNOdW1iZXJTa2VsZXRvbiwgaXNQbHVyYWxFbGVtZW50LCBpc1NlbGVjdEVsZW1lbnQsIGlzVGFnRWxlbWVudCwgaXNUaW1lRWxlbWVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBwcnVuZUxvY2F0aW9uKGVscykge1xuICBlbHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICBkZWxldGUgZWwubG9jYXRpb247XG5cbiAgICBpZiAoaXNTZWxlY3RFbGVtZW50KGVsKSB8fCBpc1BsdXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICBmb3IgKHZhciBrIGluIGVsLm9wdGlvbnMpIHtcbiAgICAgICAgZGVsZXRlIGVsLm9wdGlvbnNba10ubG9jYXRpb247XG4gICAgICAgIHBydW5lTG9jYXRpb24oZWwub3B0aW9uc1trXS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc051bWJlckVsZW1lbnQoZWwpICYmIGlzTnVtYmVyU2tlbGV0b24oZWwuc3R5bGUpKSB7XG4gICAgICBkZWxldGUgZWwuc3R5bGUubG9jYXRpb247XG4gICAgfSBlbHNlIGlmICgoaXNEYXRlRWxlbWVudChlbCkgfHwgaXNUaW1lRWxlbWVudChlbCkpICYmIGlzRGF0ZVRpbWVTa2VsZXRvbihlbC5zdHlsZSkpIHtcbiAgICAgIGRlbGV0ZSBlbC5zdHlsZS5sb2NhdGlvbjtcbiAgICB9IGVsc2UgaWYgKGlzVGFnRWxlbWVudChlbCkpIHtcbiAgICAgIHBydW5lTG9jYXRpb24oZWwuY2hpbGRyZW4pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShtZXNzYWdlLCBvcHRzKSB7XG4gIGlmIChvcHRzID09PSB2b2lkIDApIHtcbiAgICBvcHRzID0ge307XG4gIH1cblxuICBvcHRzID0gX19hc3NpZ24oe1xuICAgIHNob3VsZFBhcnNlU2tlbGV0b25zOiB0cnVlLFxuICAgIHJlcXVpcmVzT3RoZXJDbGF1c2U6IHRydWVcbiAgfSwgb3B0cyk7XG4gIHZhciByZXN1bHQgPSBuZXcgUGFyc2VyKG1lc3NhZ2UsIG9wdHMpLnBhcnNlKCk7XG5cbiAgaWYgKHJlc3VsdC5lcnIpIHtcbiAgICB2YXIgZXJyb3IgPSBTeW50YXhFcnJvcihFcnJvcktpbmRbcmVzdWx0LmVyci5raW5kXSk7IC8vIEB0cy1leHBlY3QtZXJyb3IgQXNzaWduIHRvIGVycm9yIG9iamVjdFxuXG4gICAgZXJyb3IubG9jYXRpb24gPSByZXN1bHQuZXJyLmxvY2F0aW9uOyAvLyBAdHMtZXhwZWN0LWVycm9yIEFzc2lnbiB0byBlcnJvciBvYmplY3RcblxuICAgIGVycm9yLm9yaWdpbmFsTWVzc2FnZSA9IHJlc3VsdC5lcnIubWVzc2FnZTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGlmICghKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5jYXB0dXJlTG9jYXRpb24pKSB7XG4gICAgcHJ1bmVMb2NhdGlvbihyZXN1bHQudmFsKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQudmFsO1xufVxuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1895\n")},4889:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "bc": function() { return /* binding */ IntlErrorCode; },\n/* harmony export */ "Rw": function() { return /* binding */ IntlError; },\n/* harmony export */ "wI": function() { return /* binding */ UnsupportedFormatterError; },\n/* harmony export */ "OV": function() { return /* binding */ InvalidConfigError; },\n/* harmony export */ "gb": function() { return /* binding */ MissingDataError; },\n/* harmony export */ "X9": function() { return /* binding */ MessageFormatError; },\n/* harmony export */ "$6": function() { return /* binding */ MissingTranslationError; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9900);\n\nvar IntlErrorCode;\n\n(function (IntlErrorCode) {\n IntlErrorCode["FORMAT_ERROR"] = "FORMAT_ERROR";\n IntlErrorCode["UNSUPPORTED_FORMATTER"] = "UNSUPPORTED_FORMATTER";\n IntlErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";\n IntlErrorCode["MISSING_DATA"] = "MISSING_DATA";\n IntlErrorCode["MISSING_TRANSLATION"] = "MISSING_TRANSLATION";\n})(IntlErrorCode || (IntlErrorCode = {}));\n\nvar IntlError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(IntlError, _super);\n\n function IntlError(code, message, exception) {\n var _this = _super.call(this, "[@formatjs/intl Error " + code + "] " + message + " \\n" + (exception ? "\\n" + exception.message + "\\n" + exception.stack : \'\')) || this;\n\n _this.code = code;\n\n if (typeof Error.captureStackTrace === \'function\') {\n Error.captureStackTrace(_this, IntlError);\n }\n\n return _this;\n }\n\n return IntlError;\n}(Error);\n\n\n\nvar UnsupportedFormatterError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(UnsupportedFormatterError, _super);\n\n function UnsupportedFormatterError(message, exception) {\n return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message, exception) || this;\n }\n\n return UnsupportedFormatterError;\n}(IntlError);\n\n\n\nvar InvalidConfigError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(InvalidConfigError, _super);\n\n function InvalidConfigError(message, exception) {\n return _super.call(this, IntlErrorCode.INVALID_CONFIG, message, exception) || this;\n }\n\n return InvalidConfigError;\n}(IntlError);\n\n\n\nvar MissingDataError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(MissingDataError, _super);\n\n function MissingDataError(message, exception) {\n return _super.call(this, IntlErrorCode.MISSING_DATA, message, exception) || this;\n }\n\n return MissingDataError;\n}(IntlError);\n\n\n\nvar MessageFormatError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(MessageFormatError, _super);\n\n function MessageFormatError(message, locale, descriptor, exception) {\n var _this = _super.call(this, IntlErrorCode.FORMAT_ERROR, message + " \\nLocale: " + locale + "\\nMessageID: " + (descriptor === null || descriptor === void 0 ? void 0 : descriptor.id) + "\\nDefault Message: " + (descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage) + "\\nDescription: " + (descriptor === null || descriptor === void 0 ? void 0 : descriptor.description) + " \\n", exception) || this;\n\n _this.descriptor = descriptor;\n return _this;\n }\n\n return MessageFormatError;\n}(IntlError);\n\n\n\nvar MissingTranslationError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(MissingTranslationError, _super);\n\n function MissingTranslationError(descriptor, locale) {\n var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, "Missing message: \\"" + descriptor.id + "\\" for locale \\"" + locale + "\\", using " + (descriptor.defaultMessage ? \'default message\' : \'id\') + " as fallback.") || this;\n\n _this.descriptor = descriptor;\n return _this;\n }\n\n return MissingTranslationError;\n}(IntlError);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC9saWIvc3JjL2Vycm9yLmpzPzQ3ZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFrQztBQUMzQjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsRUFBRSwwREFBUzs7QUFFWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFb0I7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMERBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFb0M7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMERBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFNkI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMERBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFMkI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMERBQVM7O0FBRVg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUU2Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0EsRUFBRSwwREFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiNDg4OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IHZhciBJbnRsRXJyb3JDb2RlO1xuXG4oZnVuY3Rpb24gKEludGxFcnJvckNvZGUpIHtcbiAgSW50bEVycm9yQ29kZVtcIkZPUk1BVF9FUlJPUlwiXSA9IFwiRk9STUFUX0VSUk9SXCI7XG4gIEludGxFcnJvckNvZGVbXCJVTlNVUFBPUlRFRF9GT1JNQVRURVJcIl0gPSBcIlVOU1VQUE9SVEVEX0ZPUk1BVFRFUlwiO1xuICBJbnRsRXJyb3JDb2RlW1wiSU5WQUxJRF9DT05GSUdcIl0gPSBcIklOVkFMSURfQ09ORklHXCI7XG4gIEludGxFcnJvckNvZGVbXCJNSVNTSU5HX0RBVEFcIl0gPSBcIk1JU1NJTkdfREFUQVwiO1xuICBJbnRsRXJyb3JDb2RlW1wiTUlTU0lOR19UUkFOU0xBVElPTlwiXSA9IFwiTUlTU0lOR19UUkFOU0xBVElPTlwiO1xufSkoSW50bEVycm9yQ29kZSB8fCAoSW50bEVycm9yQ29kZSA9IHt9KSk7XG5cbnZhciBJbnRsRXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoSW50bEVycm9yLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEludGxFcnJvcihjb2RlLCBtZXNzYWdlLCBleGNlcHRpb24pIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBcIltAZm9ybWF0anMvaW50bCBFcnJvciBcIiArIGNvZGUgKyBcIl0gXCIgKyBtZXNzYWdlICsgXCIgXFxuXCIgKyAoZXhjZXB0aW9uID8gXCJcXG5cIiArIGV4Y2VwdGlvbi5tZXNzYWdlICsgXCJcXG5cIiArIGV4Y2VwdGlvbi5zdGFjayA6ICcnKSkgfHwgdGhpcztcblxuICAgIF90aGlzLmNvZGUgPSBjb2RlO1xuXG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX3RoaXMsIEludGxFcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEludGxFcnJvcjtcbn0oRXJyb3IpO1xuXG5leHBvcnQgeyBJbnRsRXJyb3IgfTtcblxudmFyIFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBVbnN1cHBvcnRlZEZvcm1hdHRlckVycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBJbnRsRXJyb3JDb2RlLlVOU1VQUE9SVEVEX0ZPUk1BVFRFUiwgbWVzc2FnZSwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICB9XG5cbiAgcmV0dXJuIFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3I7XG59KEludGxFcnJvcik7XG5cbmV4cG9ydCB7IFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IgfTtcblxudmFyIEludmFsaWRDb25maWdFcnJvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhJbnZhbGlkQ29uZmlnRXJyb3IsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gSW52YWxpZENvbmZpZ0Vycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBJbnRsRXJyb3JDb2RlLklOVkFMSURfQ09ORklHLCBtZXNzYWdlLCBleGNlcHRpb24pIHx8IHRoaXM7XG4gIH1cblxuICByZXR1cm4gSW52YWxpZENvbmZpZ0Vycm9yO1xufShJbnRsRXJyb3IpO1xuXG5leHBvcnQgeyBJbnZhbGlkQ29uZmlnRXJyb3IgfTtcblxudmFyIE1pc3NpbmdEYXRhRXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoTWlzc2luZ0RhdGFFcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBNaXNzaW5nRGF0YUVycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBJbnRsRXJyb3JDb2RlLk1JU1NJTkdfREFUQSwgbWVzc2FnZSwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1pc3NpbmdEYXRhRXJyb3I7XG59KEludGxFcnJvcik7XG5cbmV4cG9ydCB7IE1pc3NpbmdEYXRhRXJyb3IgfTtcblxudmFyIE1lc3NhZ2VGb3JtYXRFcnJvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhNZXNzYWdlRm9ybWF0RXJyb3IsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gTWVzc2FnZUZvcm1hdEVycm9yKG1lc3NhZ2UsIGxvY2FsZSwgZGVzY3JpcHRvciwgZXhjZXB0aW9uKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgSW50bEVycm9yQ29kZS5GT1JNQVRfRVJST1IsIG1lc3NhZ2UgKyBcIiBcXG5Mb2NhbGU6IFwiICsgbG9jYWxlICsgXCJcXG5NZXNzYWdlSUQ6IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5pZCkgKyBcIlxcbkRlZmF1bHQgTWVzc2FnZTogXCIgKyAoZGVzY3JpcHRvciA9PT0gbnVsbCB8fCBkZXNjcmlwdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXNjcmlwdG9yLmRlZmF1bHRNZXNzYWdlKSArIFwiXFxuRGVzY3JpcHRpb246IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5kZXNjcmlwdGlvbikgKyBcIiBcXG5cIiwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1lc3NhZ2VGb3JtYXRFcnJvcjtcbn0oSW50bEVycm9yKTtcblxuZXhwb3J0IHsgTWVzc2FnZUZvcm1hdEVycm9yIH07XG5cbnZhciBNaXNzaW5nVHJhbnNsYXRpb25FcnJvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhNaXNzaW5nVHJhbnNsYXRpb25FcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBNaXNzaW5nVHJhbnNsYXRpb25FcnJvcihkZXNjcmlwdG9yLCBsb2NhbGUpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBJbnRsRXJyb3JDb2RlLk1JU1NJTkdfVFJBTlNMQVRJT04sIFwiTWlzc2luZyBtZXNzYWdlOiBcXFwiXCIgKyBkZXNjcmlwdG9yLmlkICsgXCJcXFwiIGZvciBsb2NhbGUgXFxcIlwiICsgbG9jYWxlICsgXCJcXFwiLCB1c2luZyBcIiArIChkZXNjcmlwdG9yLmRlZmF1bHRNZXNzYWdlID8gJ2RlZmF1bHQgbWVzc2FnZScgOiAnaWQnKSArIFwiIGFzIGZhbGxiYWNrLlwiKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yO1xufShJbnRsRXJyb3IpO1xuXG5leHBvcnQgeyBNaXNzaW5nVHJhbnNsYXRpb25FcnJvciB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4889\n')},7143:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "L6": function() { return /* binding */ filterProps; },\n/* harmony export */ "Z0": function() { return /* binding */ DEFAULT_INTL_CONFIG; },\n/* harmony export */ "Sn": function() { return /* binding */ createIntlCache; },\n/* harmony export */ "ax": function() { return /* binding */ createFormatters; },\n/* harmony export */ "TB": function() { return /* binding */ getNamedFormat; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9900);\n/* harmony import */ var intl_messageformat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1482);\n/* harmony import */ var _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(289);\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4889);\n\n\n\n\nfunction filterProps(props, whitelist, defaults) {\n if (defaults === void 0) {\n defaults = {};\n }\n\n return whitelist.reduce(function (filtered, name) {\n if (name in props) {\n filtered[name] = props[name];\n } else if (name in defaults) {\n filtered[name] = defaults[name];\n }\n\n return filtered;\n }, {});\n}\n\nvar defaultErrorHandler = function defaultErrorHandler(error) {\n if (false) {}\n};\n\nvar DEFAULT_INTL_CONFIG = {\n formats: {},\n messages: {},\n timeZone: undefined,\n defaultLocale: \'en\',\n defaultFormats: {},\n onError: defaultErrorHandler\n};\nfunction createIntlCache() {\n return {\n dateTime: {},\n number: {},\n message: {},\n relativeTime: {},\n pluralRules: {},\n list: {},\n displayNames: {}\n };\n}\n\nfunction createFastMemoizeCache(store) {\n return {\n create: function create() {\n return {\n has: function has(key) {\n return key in store;\n },\n get: function get(key) {\n return store[key];\n },\n set: function set(key, value) {\n store[key] = value;\n }\n };\n }\n };\n}\n/**\n * Create intl formatters and populate cache\n * @param cache explicit cache to prevent leaking memory\n */\n\n\nfunction createFormatters(cache) {\n if (cache === void 0) {\n cache = createIntlCache();\n }\n\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n var ListFormat = Intl.ListFormat;\n var DisplayNames = Intl.DisplayNames;\n var getDateTimeFormat = (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n });\n var getNumberFormat = (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.NumberFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n });\n var getPluralRules = (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.PluralRules).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n });\n return {\n getDateTimeFormat: getDateTimeFormat,\n getNumberFormat: getNumberFormat,\n getMessageFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function (message, locales, overrideFormats, opts) {\n return new intl_messageformat__WEBPACK_IMPORTED_MODULE_2__/* .IntlMessageFormat */ .C(message, locales, overrideFormats, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__assign */ .pi)({\n formatters: {\n getNumberFormat: getNumberFormat,\n getDateTimeFormat: getDateTimeFormat,\n getPluralRules: getPluralRules\n }\n }, opts || {}));\n }, {\n cache: createFastMemoizeCache(cache.message),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n }),\n getRelativeTimeFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.relativeTime),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n }),\n getPluralRules: getPluralRules,\n getListFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new (ListFormat.bind.apply(ListFormat, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.list),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n }),\n getDisplayNames: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .default */ .Z)(function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new (DisplayNames.bind.apply(DisplayNames, (0,tslib__WEBPACK_IMPORTED_MODULE_1__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.displayNames),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_0__/* .strategies.variadic */ .A.variadic\n })\n };\n}\nfunction getNamedFormat(formats, type, name, onError) {\n var formatType = formats && formats[type];\n var format;\n\n if (formatType) {\n format = formatType[name];\n }\n\n if (format) {\n return format;\n }\n\n onError(new _error__WEBPACK_IMPORTED_MODULE_3__/* .UnsupportedFormatterError */ .wI("No " + type + " format named: " + name));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC9saWIvc3JjL3V0aWxzLmpzPzQzZjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDTztBQUNNO0FBQ1Q7QUFDN0M7QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBLE1BQU0sS0FBcUMsRUFBRSxFQUUxQztBQUNIOztBQUVPO0FBQ1AsYUFBYTtBQUNiLGNBQWM7QUFDZDtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsZ0JBQWdCO0FBQ2hCLGNBQWM7QUFDZCxlQUFlO0FBQ2Ysb0JBQW9CO0FBQ3BCLG1CQUFtQjtBQUNuQixZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix3RUFBTztBQUNqQzs7QUFFQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7O0FBRUEsMERBQTBELDhEQUFhO0FBQ3ZFLEdBQUc7QUFDSDtBQUNBLGNBQWMseUZBQW1CO0FBQ2pDLEdBQUc7QUFDSCx3QkFBd0Isd0VBQU87QUFDL0I7O0FBRUE7O0FBRUEsb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBOztBQUVBLHdEQUF3RCw4REFBYTtBQUNyRSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHlGQUFtQjtBQUNqQyxHQUFHO0FBQ0gsdUJBQXVCLHdFQUFPO0FBQzlCOztBQUVBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQSx1REFBdUQsOERBQWE7QUFDcEUsR0FBRztBQUNIO0FBQ0EsY0FBYyx5RkFBbUI7QUFDakMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3RUFBTztBQUM3QixpQkFBaUIsMEVBQWlCLG9DQUFvQyx5REFBUTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxZQUFZO0FBQ25CLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix5RkFBbUI7QUFDbkMsS0FBSztBQUNMLDJCQUEyQix3RUFBTztBQUNsQzs7QUFFQSxzQkFBc0IsdUJBQXVCO0FBQzdDO0FBQ0E7O0FBRUEsb0VBQW9FLDhEQUFhO0FBQ2pGLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix5RkFBbUI7QUFDbkMsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHdFQUFPO0FBQzFCOztBQUVBLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQSxvREFBb0QsOERBQWE7QUFDakUsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHlGQUFtQjtBQUNuQyxLQUFLO0FBQ0wscUJBQXFCLHdFQUFPO0FBQzVCOztBQUVBLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQSx3REFBd0QsOERBQWE7QUFDckUsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHlGQUFtQjtBQUNuQyxLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMsdUVBQXlCO0FBQ3ZDIiwiZmlsZSI6IjcxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgSW50bE1lc3NhZ2VGb3JtYXQgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IG1lbW9pemUsIHsgc3RyYXRlZ2llcyB9IGZyb20gJ0Bmb3JtYXRqcy9mYXN0LW1lbW9pemUnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclByb3BzKHByb3BzLCB3aGl0ZWxpc3QsIGRlZmF1bHRzKSB7XG4gIGlmIChkZWZhdWx0cyA9PT0gdm9pZCAwKSB7XG4gICAgZGVmYXVsdHMgPSB7fTtcbiAgfVxuXG4gIHJldHVybiB3aGl0ZWxpc3QucmVkdWNlKGZ1bmN0aW9uIChmaWx0ZXJlZCwgbmFtZSkge1xuICAgIGlmIChuYW1lIGluIHByb3BzKSB7XG4gICAgICBmaWx0ZXJlZFtuYW1lXSA9IHByb3BzW25hbWVdO1xuICAgIH0gZWxzZSBpZiAobmFtZSBpbiBkZWZhdWx0cykge1xuICAgICAgZmlsdGVyZWRbbmFtZV0gPSBkZWZhdWx0c1tuYW1lXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH0sIHt9KTtcbn1cblxudmFyIGRlZmF1bHRFcnJvckhhbmRsZXIgPSBmdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycm9yKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbn07XG5cbmV4cG9ydCB2YXIgREVGQVVMVF9JTlRMX0NPTkZJRyA9IHtcbiAgZm9ybWF0czoge30sXG4gIG1lc3NhZ2VzOiB7fSxcbiAgdGltZVpvbmU6IHVuZGVmaW5lZCxcbiAgZGVmYXVsdExvY2FsZTogJ2VuJyxcbiAgZGVmYXVsdEZvcm1hdHM6IHt9LFxuICBvbkVycm9yOiBkZWZhdWx0RXJyb3JIYW5kbGVyXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGxDYWNoZSgpIHtcbiAgcmV0dXJuIHtcbiAgICBkYXRlVGltZToge30sXG4gICAgbnVtYmVyOiB7fSxcbiAgICBtZXNzYWdlOiB7fSxcbiAgICByZWxhdGl2ZVRpbWU6IHt9LFxuICAgIHBsdXJhbFJ1bGVzOiB7fSxcbiAgICBsaXN0OiB7fSxcbiAgICBkaXNwbGF5TmFtZXM6IHt9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoc3RvcmUpIHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICAgIHJldHVybiBrZXkgaW4gc3RvcmU7XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgICAgIHJldHVybiBzdG9yZVtrZXldO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgc3RvcmVba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cbi8qKlxuICogQ3JlYXRlIGludGwgZm9ybWF0dGVycyBhbmQgcG9wdWxhdGUgY2FjaGVcbiAqIEBwYXJhbSBjYWNoZSBleHBsaWNpdCBjYWNoZSB0byBwcmV2ZW50IGxlYWtpbmcgbWVtb3J5XG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVycyhjYWNoZSkge1xuICBpZiAoY2FjaGUgPT09IHZvaWQgMCkge1xuICAgIGNhY2hlID0gY3JlYXRlSW50bENhY2hlKCk7XG4gIH1cblxuICB2YXIgUmVsYXRpdmVUaW1lRm9ybWF0ID0gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7XG4gIHZhciBMaXN0Rm9ybWF0ID0gSW50bC5MaXN0Rm9ybWF0O1xuICB2YXIgRGlzcGxheU5hbWVzID0gSW50bC5EaXNwbGF5TmFtZXM7XG4gIHZhciBnZXREYXRlVGltZUZvcm1hdCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBhcmdzID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuRGF0ZVRpbWVGb3JtYXQpLmJpbmQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgfSwge1xuICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLmRhdGVUaW1lKSxcbiAgICBzdHJhdGVneTogc3RyYXRlZ2llcy52YXJpYWRpY1xuICB9KTtcbiAgdmFyIGdldE51bWJlckZvcm1hdCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBhcmdzID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gIH0sIHtcbiAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5udW1iZXIpLFxuICAgIHN0cmF0ZWd5OiBzdHJhdGVnaWVzLnZhcmlhZGljXG4gIH0pO1xuICB2YXIgZ2V0UGx1cmFsUnVsZXMgPSBtZW1vaXplKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3ICgoX2EgPSBJbnRsLlBsdXJhbFJ1bGVzKS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gIH0sIHtcbiAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5wbHVyYWxSdWxlcyksXG4gICAgc3RyYXRlZ3k6IHN0cmF0ZWdpZXMudmFyaWFkaWNcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZ2V0RGF0ZVRpbWVGb3JtYXQ6IGdldERhdGVUaW1lRm9ybWF0LFxuICAgIGdldE51bWJlckZvcm1hdDogZ2V0TnVtYmVyRm9ybWF0LFxuICAgIGdldE1lc3NhZ2VGb3JtYXQ6IG1lbW9pemUoZnVuY3Rpb24gKG1lc3NhZ2UsIGxvY2FsZXMsIG92ZXJyaWRlRm9ybWF0cywgb3B0cykge1xuICAgICAgcmV0dXJuIG5ldyBJbnRsTWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGVzLCBvdmVycmlkZUZvcm1hdHMsIF9fYXNzaWduKHtcbiAgICAgICAgZm9ybWF0dGVyczoge1xuICAgICAgICAgIGdldE51bWJlckZvcm1hdDogZ2V0TnVtYmVyRm9ybWF0LFxuICAgICAgICAgIGdldERhdGVUaW1lRm9ybWF0OiBnZXREYXRlVGltZUZvcm1hdCxcbiAgICAgICAgICBnZXRQbHVyYWxSdWxlczogZ2V0UGx1cmFsUnVsZXNcbiAgICAgICAgfVxuICAgICAgfSwgb3B0cyB8fCB7fSkpO1xuICAgIH0sIHtcbiAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLm1lc3NhZ2UpLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWdpZXMudmFyaWFkaWNcbiAgICB9KSxcbiAgICBnZXRSZWxhdGl2ZVRpbWVGb3JtYXQ6IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IChSZWxhdGl2ZVRpbWVGb3JtYXQuYmluZC5hcHBseShSZWxhdGl2ZVRpbWVGb3JtYXQsIF9fc3ByZWFkQXJyYXkoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICB9LCB7XG4gICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5yZWxhdGl2ZVRpbWUpLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWdpZXMudmFyaWFkaWNcbiAgICB9KSxcbiAgICBnZXRQbHVyYWxSdWxlczogZ2V0UGx1cmFsUnVsZXMsXG4gICAgZ2V0TGlzdEZvcm1hdDogbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgKExpc3RGb3JtYXQuYmluZC5hcHBseShMaXN0Rm9ybWF0LCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgfSwge1xuICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUubGlzdCksXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ2llcy52YXJpYWRpY1xuICAgIH0pLFxuICAgIGdldERpc3BsYXlOYW1lczogbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgKERpc3BsYXlOYW1lcy5iaW5kLmFwcGx5KERpc3BsYXlOYW1lcywgX19zcHJlYWRBcnJheShbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgIH0sIHtcbiAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLmRpc3BsYXlOYW1lcyksXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ2llcy52YXJpYWRpY1xuICAgIH0pXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZWRGb3JtYXQoZm9ybWF0cywgdHlwZSwgbmFtZSwgb25FcnJvcikge1xuICB2YXIgZm9ybWF0VHlwZSA9IGZvcm1hdHMgJiYgZm9ybWF0c1t0eXBlXTtcbiAgdmFyIGZvcm1hdDtcblxuICBpZiAoZm9ybWF0VHlwZSkge1xuICAgIGZvcm1hdCA9IGZvcm1hdFR5cGVbbmFtZV07XG4gIH1cblxuICBpZiAoZm9ybWF0KSB7XG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIG9uRXJyb3IobmV3IFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IoXCJObyBcIiArIHR5cGUgKyBcIiBmb3JtYXQgbmFtZWQ6IFwiICsgbmFtZSkpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7143\n')},7091:function(module){"use strict";eval("\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': \"\\uFFFD\\uFFFD\",\n '%FF%FE': \"\\uFFFD\\uFFFD\"\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = \"\\uFFFD\";\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9kZWNvZGUtdXJpLWNvbXBvbmVudC9pbmRleC5qcz8yYWYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QixFQUFFO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGNBQWM7QUFDakI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUEsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI3MDkxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9rZW4gPSAnJVthLWYwLTldezJ9JztcbnZhciBzaW5nbGVNYXRjaGVyID0gbmV3IFJlZ0V4cCh0b2tlbiwgJ2dpJyk7XG52YXIgbXVsdGlNYXRjaGVyID0gbmV3IFJlZ0V4cCgnKCcgKyB0b2tlbiArICcpKycsICdnaScpO1xuXG5mdW5jdGlvbiBkZWNvZGVDb21wb25lbnRzKGNvbXBvbmVudHMsIHNwbGl0KSB7XG4gIHRyeSB7XG4gICAgLy8gVHJ5IHRvIGRlY29kZSB0aGUgZW50aXJlIHN0cmluZyBmaXJzdFxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoY29tcG9uZW50cy5qb2luKCcnKSk7XG4gIH0gY2F0Y2ggKGVycikgey8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBjb21wb25lbnRzO1xuICB9XG5cbiAgc3BsaXQgPSBzcGxpdCB8fCAxOyAvLyBTcGxpdCB0aGUgYXJyYXkgaW4gMiBwYXJ0c1xuXG4gIHZhciBsZWZ0ID0gY29tcG9uZW50cy5zbGljZSgwLCBzcGxpdCk7XG4gIHZhciByaWdodCA9IGNvbXBvbmVudHMuc2xpY2Uoc3BsaXQpO1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKFtdLCBkZWNvZGVDb21wb25lbnRzKGxlZnQpLCBkZWNvZGVDb21wb25lbnRzKHJpZ2h0KSk7XG59XG5cbmZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB2YXIgdG9rZW5zID0gaW5wdXQubWF0Y2goc2luZ2xlTWF0Y2hlcik7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgaW5wdXQgPSBkZWNvZGVDb21wb25lbnRzKHRva2VucywgaSkuam9pbignJyk7XG4gICAgICB0b2tlbnMgPSBpbnB1dC5tYXRjaChzaW5nbGVNYXRjaGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3VzdG9tRGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KSB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgYWxsIHRoZSByZXBsYWNlbWVudHMgYW5kIHByZWZpbGwgdGhlIG1hcCB3aXRoIHRoZSBgQk9NYFxuICB2YXIgcmVwbGFjZU1hcCA9IHtcbiAgICAnJUZFJUZGJzogXCJcXHVGRkZEXFx1RkZGRFwiLFxuICAgICclRkYlRkUnOiBcIlxcdUZGRkRcXHVGRkZEXCJcbiAgfTtcbiAgdmFyIG1hdGNoID0gbXVsdGlNYXRjaGVyLmV4ZWMoaW5wdXQpO1xuXG4gIHdoaWxlIChtYXRjaCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBEZWNvZGUgYXMgYmlnIGNodW5rcyBhcyBwb3NzaWJsZVxuICAgICAgcmVwbGFjZU1hcFttYXRjaFswXV0gPSBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMF0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFyIHJlc3VsdCA9IGRlY29kZShtYXRjaFswXSk7XG5cbiAgICAgIGlmIChyZXN1bHQgIT09IG1hdGNoWzBdKSB7XG4gICAgICAgIHJlcGxhY2VNYXBbbWF0Y2hbMF1dID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hdGNoID0gbXVsdGlNYXRjaGVyLmV4ZWMoaW5wdXQpO1xuICB9IC8vIEFkZCBgJUMyYCBhdCB0aGUgZW5kIG9mIHRoZSBtYXAgdG8gbWFrZSBzdXJlIGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlIGNvbWJpbmF0b3IgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZVxuXG5cbiAgcmVwbGFjZU1hcFsnJUMyJ10gPSBcIlxcdUZGRkRcIjtcbiAgdmFyIGVudHJpZXMgPSBPYmplY3Qua2V5cyhyZXBsYWNlTWFwKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBSZXBsYWNlIGFsbCBkZWNvZGVkIGNvbXBvbmVudHNcbiAgICB2YXIga2V5ID0gZW50cmllc1tpXTtcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UobmV3IFJlZ0V4cChrZXksICdnJyksIHJlcGxhY2VNYXBba2V5XSk7XG4gIH1cblxuICByZXR1cm4gaW5wdXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGVuY29kZWRVUkkpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGVkVVJJICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGBlbmNvZGVkVVJJYCB0byBiZSBvZiB0eXBlIGBzdHJpbmdgLCBnb3QgYCcgKyB0eXBlb2YgZW5jb2RlZFVSSSArICdgJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGVuY29kZWRVUkkgPSBlbmNvZGVkVVJJLnJlcGxhY2UoL1xcKy9nLCAnICcpOyAvLyBUcnkgdGhlIGJ1aWx0IGluIGRlY29kZXIgZmlyc3RcblxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIEZhbGxiYWNrIHRvIGEgbW9yZSBhZHZhbmNlZCBkZWNvZGVyXG4gICAgcmV0dXJuIGN1c3RvbURlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJKTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7091\n")},8616:function(module){"use strict";eval("\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n\n return ret;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9maWx0ZXItb2JqL2luZGV4LmpzPzI5Y2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiODYxNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJldCA9IHt9O1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIHZhciBpc0FyciA9IEFycmF5LmlzQXJyYXkocHJlZGljYXRlKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsID0gb2JqW2tleV07XG5cbiAgICBpZiAoaXNBcnIgPyBwcmVkaWNhdGUuaW5kZXhPZihrZXkpICE9PSAtMSA6IHByZWRpY2F0ZShrZXksIHZhbCwgb2JqKSkge1xuICAgICAgcmV0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8616\n")},1482:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"C\": function() { return /* binding */ IntlMessageFormat; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9900);\n/* harmony import */ var _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1895);\n/* harmony import */ var _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(289);\n/* harmony import */ var _formatters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4597);\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n\n\n // -- MessageFormat --------------------------------------------------------\n\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)((0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)((0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)({}, c1 || {}), c2 || {}), Object.keys(c1).reduce(function (all, k) {\n all[k] = (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)((0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)({}, c1[k]), c2[k] || {});\n return all;\n }, {}));\n}\n\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)({}, defaultConfig));\n}\n\nfunction createFastMemoizeCache(store) {\n return {\n create: function create() {\n return {\n has: function has(key) {\n return key in store;\n },\n get: function get(key) {\n return store[key];\n },\n set: function set(key, value) {\n store[key] = value;\n }\n };\n }\n };\n}\n\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) {\n cache = {\n number: {},\n dateTime: {},\n pluralRules: {}\n };\n }\n\n return {\n getNumberFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.NumberFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .strategies.variadic */ .A.variadic\n }),\n getDateTimeFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .strategies.variadic */ .A.variadic\n }),\n getPluralRules: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .default */ .Z)(function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new ((_a = Intl.PluralRules).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__spreadArray */ .ev)([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__/* .strategies.variadic */ .A.variadic\n })\n };\n}\n\nvar IntlMessageFormat =\n/** @class */\nfunction () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n\n if (locales === void 0) {\n locales = IntlMessageFormat.defaultLocale;\n }\n\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {}\n };\n\n this.format = function (values) {\n var parts = _this.formatToParts(values); // Hot path for straight simple msg translations\n\n\n if (parts.length === 1) {\n return parts[0].value;\n }\n\n var result = parts.reduce(function (all, part) {\n if (!all.length || part.type !== _formatters__WEBPACK_IMPORTED_MODULE_3__/* .PART_TYPE.literal */ .du.literal || typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n } else {\n all[all.length - 1] += part.value;\n }\n\n return all;\n }, []);\n\n if (result.length <= 1) {\n return result[0] || '';\n }\n\n return result;\n };\n\n this.formatToParts = function (values) {\n return (0,_formatters__WEBPACK_IMPORTED_MODULE_3__/* .formatToParts */ .FK)(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n\n this.resolvedOptions = function () {\n return {\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0]\n };\n };\n\n this.getAst = function () {\n return _this.ast;\n };\n\n if (typeof message === 'string') {\n this.message = message;\n\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n } // Parse string messages into an AST.\n\n\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag\n });\n } else {\n this.ast = message;\n }\n\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n } // Creates a new object with the specified `formats` merged with the default\n // formats.\n\n\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats); // Defined first because it's used to build the format pattern.\n\n this.locales = locales;\n this.formatters = opts && opts.formatters || createDefaultFormatters(this.formatterCache);\n }\n\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function get() {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n }\n\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .parse */ .Qc; // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0\n },\n currency: {\n style: 'currency'\n },\n percent: {\n style: 'percent'\n }\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit'\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n }\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric'\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short'\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short'\n }\n }\n };\n return IntlMessageFormat;\n}();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvbGliL3NyYy9jb3JlLmpzP2MzOTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDVztBQUNFO0FBQ0w7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMseURBQVEsQ0FBQyx5REFBUSxDQUFDLHlEQUFRLEdBQUcsVUFBVSxXQUFXO0FBQzNELGFBQWEseURBQVEsQ0FBQyx5REFBUSxHQUFHLHFCQUFxQjtBQUN0RDtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRSx5REFBUSxHQUFHO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLHdFQUFPO0FBQzVCOztBQUVBOztBQUVBLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQSwwREFBMEQsOERBQWE7QUFDdkUsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHlGQUFtQjtBQUNuQyxLQUFLO0FBQ0wsdUJBQXVCLHdFQUFPO0FBQzlCOztBQUVBOztBQUVBLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQSw0REFBNEQsOERBQWE7QUFDekUsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHlGQUFtQjtBQUNuQyxLQUFLO0FBQ0wsb0JBQW9CLHdFQUFPO0FBQzNCOztBQUVBOztBQUVBLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQSx5REFBeUQsOERBQWE7QUFDdEUsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHlGQUFtQjtBQUNuQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQixrQkFBa0I7QUFDbEI7QUFDQTs7QUFFQTtBQUNBLDhDQUE4Qzs7O0FBRzlDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5Qyw0RUFBaUI7QUFDMUQ7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLG9FQUFhO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0EsNEVBQTRFOztBQUU1RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsOEJBQThCLCtFQUFLLENBQUM7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTQ4Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0Bmb3JtYXRqcy9pY3UtbWVzc2FnZWZvcm1hdC1wYXJzZXInO1xuaW1wb3J0IG1lbW9pemUsIHsgc3RyYXRlZ2llcyB9IGZyb20gJ0Bmb3JtYXRqcy9mYXN0LW1lbW9pemUnO1xuaW1wb3J0IHsgZm9ybWF0VG9QYXJ0cywgUEFSVF9UWVBFIH0gZnJvbSAnLi9mb3JtYXR0ZXJzJzsgLy8gLS0gTWVzc2FnZUZvcm1hdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZyhjMSwgYzIpIHtcbiAgaWYgKCFjMikge1xuICAgIHJldHVybiBjMTtcbiAgfVxuXG4gIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYzEgfHwge30pLCBjMiB8fCB7fSksIE9iamVjdC5rZXlzKGMxKS5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgaykge1xuICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjMVtrXSksIGMyW2tdIHx8IHt9KTtcbiAgICByZXR1cm4gYWxsO1xuICB9LCB7fSkpO1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoZGVmYXVsdENvbmZpZywgY29uZmlncykge1xuICBpZiAoIWNvbmZpZ3MpIHtcbiAgICByZXR1cm4gZGVmYXVsdENvbmZpZztcbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyhkZWZhdWx0Q29uZmlnKS5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgaykge1xuICAgIGFsbFtrXSA9IG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWdba10sIGNvbmZpZ3Nba10pO1xuICAgIHJldHVybiBhbGw7XG4gIH0sIF9fYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoc3RvcmUpIHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICAgIHJldHVybiBrZXkgaW4gc3RvcmU7XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgICAgIHJldHVybiBzdG9yZVtrZXldO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgc3RvcmVba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEZvcm1hdHRlcnMoY2FjaGUpIHtcbiAgaWYgKGNhY2hlID09PSB2b2lkIDApIHtcbiAgICBjYWNoZSA9IHtcbiAgICAgIG51bWJlcjoge30sXG4gICAgICBkYXRlVGltZToge30sXG4gICAgICBwbHVyYWxSdWxlczoge31cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXROdW1iZXJGb3JtYXQ6IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgfSwge1xuICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUubnVtYmVyKSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVnaWVzLnZhcmlhZGljXG4gICAgfSksXG4gICAgZ2V0RGF0ZVRpbWVGb3JtYXQ6IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuRGF0ZVRpbWVGb3JtYXQpLmJpbmQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICB9LCB7XG4gICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5kYXRlVGltZSksXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ2llcy52YXJpYWRpY1xuICAgIH0pLFxuICAgIGdldFBsdXJhbFJ1bGVzOiBtZW1vaXplKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3ICgoX2EgPSBJbnRsLlBsdXJhbFJ1bGVzKS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgfSwge1xuICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUucGx1cmFsUnVsZXMpLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWdpZXMudmFyaWFkaWNcbiAgICB9KVxuICB9O1xufVxuXG52YXIgSW50bE1lc3NhZ2VGb3JtYXQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRsTWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGVzLCBvdmVycmlkZUZvcm1hdHMsIG9wdHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGxvY2FsZXMgPT09IHZvaWQgMCkge1xuICAgICAgbG9jYWxlcyA9IEludGxNZXNzYWdlRm9ybWF0LmRlZmF1bHRMb2NhbGU7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXR0ZXJDYWNoZSA9IHtcbiAgICAgIG51bWJlcjoge30sXG4gICAgICBkYXRlVGltZToge30sXG4gICAgICBwbHVyYWxSdWxlczoge31cbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtYXQgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgICB2YXIgcGFydHMgPSBfdGhpcy5mb3JtYXRUb1BhcnRzKHZhbHVlcyk7IC8vIEhvdCBwYXRoIGZvciBzdHJhaWdodCBzaW1wbGUgbXNnIHRyYW5zbGF0aW9uc1xuXG5cbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzWzBdLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gcGFydHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIHBhcnQpIHtcbiAgICAgICAgaWYgKCFhbGwubGVuZ3RoIHx8IHBhcnQudHlwZSAhPT0gUEFSVF9UWVBFLmxpdGVyYWwgfHwgdHlwZW9mIGFsbFthbGwubGVuZ3RoIC0gMV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgYWxsLnB1c2gocGFydC52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWxsW2FsbC5sZW5ndGggLSAxXSArPSBwYXJ0LnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICAgIH0sIFtdKTtcblxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdIHx8ICcnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICB0aGlzLmZvcm1hdFRvUGFydHMgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgICByZXR1cm4gZm9ybWF0VG9QYXJ0cyhfdGhpcy5hc3QsIF90aGlzLmxvY2FsZXMsIF90aGlzLmZvcm1hdHRlcnMsIF90aGlzLmZvcm1hdHMsIHZhbHVlcywgdW5kZWZpbmVkLCBfdGhpcy5tZXNzYWdlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5yZXNvbHZlZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGU6IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihfdGhpcy5sb2NhbGVzKVswXVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRBc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuYXN0O1xuICAgIH07XG5cbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZSBtdXN0IGJlIHNldCB0byBwcm9jZXNzIGBtZXNzYWdlYCBvZiB0eXBlIGBzdHJpbmdgJyk7XG4gICAgICB9IC8vIFBhcnNlIHN0cmluZyBtZXNzYWdlcyBpbnRvIGFuIEFTVC5cblxuXG4gICAgICB0aGlzLmFzdCA9IEludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UobWVzc2FnZSwge1xuICAgICAgICBpZ25vcmVUYWc6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pZ25vcmVUYWdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzdCA9IG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuYXN0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBtZXNzYWdlIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBTdHJpbmcgb3IgQVNULicpO1xuICAgIH0gLy8gQ3JlYXRlcyBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGBmb3JtYXRzYCBtZXJnZWQgd2l0aCB0aGUgZGVmYXVsdFxuICAgIC8vIGZvcm1hdHMuXG5cblxuICAgIHRoaXMuZm9ybWF0cyA9IG1lcmdlQ29uZmlncyhJbnRsTWVzc2FnZUZvcm1hdC5mb3JtYXRzLCBvdmVycmlkZUZvcm1hdHMpOyAvLyBEZWZpbmVkIGZpcnN0IGJlY2F1c2UgaXQncyB1c2VkIHRvIGJ1aWxkIHRoZSBmb3JtYXQgcGF0dGVybi5cblxuICAgIHRoaXMubG9jYWxlcyA9IGxvY2FsZXM7XG4gICAgdGhpcy5mb3JtYXR0ZXJzID0gb3B0cyAmJiBvcHRzLmZvcm1hdHRlcnMgfHwgY3JlYXRlRGVmYXVsdEZvcm1hdHRlcnModGhpcy5mb3JtYXR0ZXJDYWNoZSk7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50bE1lc3NhZ2VGb3JtYXQsIFwiZGVmYXVsdExvY2FsZVwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Lm1lbW9pemVkRGVmYXVsdExvY2FsZSkge1xuICAgICAgICBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGU7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIEludGxNZXNzYWdlRm9ybWF0Lm1lbW9pemVkRGVmYXVsdExvY2FsZSA9IG51bGw7XG4gIEludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UgPSBwYXJzZTsgLy8gRGVmYXVsdCBmb3JtYXQgb3B0aW9ucyB1c2VkIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIGBmb3JtYXRzYCBwcm92aWRlZCB0byB0aGVcbiAgLy8gY29uc3RydWN0b3IuIFRoZXNlIGFyZSB1c2VkIHdoZW4gY29uc3RydWN0aW5nIHRoZSBpbnRlcm5hbCBJbnRsLk51bWJlckZvcm1hdFxuICAvLyBhbmQgSW50bC5EYXRlVGltZUZvcm1hdCBpbnN0YW5jZXMuXG5cbiAgSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cyA9IHtcbiAgICBudW1iZXI6IHtcbiAgICAgIGludGVnZXI6IHtcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwXG4gICAgICB9LFxuICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgc3R5bGU6ICdjdXJyZW5jeSdcbiAgICAgIH0sXG4gICAgICBwZXJjZW50OiB7XG4gICAgICAgIHN0eWxlOiAncGVyY2VudCdcbiAgICAgIH1cbiAgICB9LFxuICAgIGRhdGU6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnMi1kaWdpdCdcbiAgICAgIH0sXG4gICAgICBtZWRpdW06IHtcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYydcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYydcbiAgICAgIH0sXG4gICAgICBmdWxsOiB7XG4gICAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJ1xuICAgICAgfVxuICAgIH0sXG4gICAgdGltZToge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJ1xuICAgICAgfSxcbiAgICAgIG1lZGl1bToge1xuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICBzZWNvbmQ6ICdudW1lcmljJ1xuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgIHRpbWVab25lTmFtZTogJ3Nob3J0J1xuICAgICAgfSxcbiAgICAgIGZ1bGw6IHtcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgIHRpbWVab25lTmFtZTogJ3Nob3J0J1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIEludGxNZXNzYWdlRm9ybWF0O1xufSgpO1xuXG5leHBvcnQgeyBJbnRsTWVzc2FnZUZvcm1hdCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1482\n")},8402:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "jK": function() { return /* binding */ ErrorCode; },\n/* harmony export */ "u_": function() { return /* binding */ FormatError; },\n/* harmony export */ "C8": function() { return /* binding */ InvalidValueError; },\n/* harmony export */ "YR": function() { return /* binding */ InvalidValueTypeError; },\n/* harmony export */ "HR": function() { return /* binding */ MissingValueError; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9900);\n\nvar ErrorCode;\n\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode["MISSING_VALUE"] = "MISSING_VALUE"; // When value supplied is invalid\n\n ErrorCode["INVALID_VALUE"] = "INVALID_VALUE"; // When we need specific Intl API but it\'s not available\n\n ErrorCode["MISSING_INTL_API"] = "MISSING_INTL_API";\n})(ErrorCode || (ErrorCode = {}));\n\nvar FormatError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(FormatError, _super);\n\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n\n FormatError.prototype.toString = function () {\n return "[formatjs Error: " + this.code + "] " + this.message;\n };\n\n return FormatError;\n}(Error);\n\n\n\nvar InvalidValueError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(InvalidValueError, _super);\n\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, "Invalid values for \\"" + variableId + "\\": \\"" + value + "\\". Options are \\"" + Object.keys(options).join(\'", "\') + "\\"", ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n\n return InvalidValueError;\n}(FormatError);\n\n\n\nvar InvalidValueTypeError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(InvalidValueTypeError, _super);\n\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, "Value for \\"" + value + "\\" must be of type " + type, ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n\n return InvalidValueTypeError;\n}(FormatError);\n\n\n\nvar MissingValueError =\n/** @class */\nfunction (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__/* .__extends */ .ZT)(MissingValueError, _super);\n\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, "The intl string context variable \\"" + variableId + "\\" was not provided to the string \\"" + originalMessage + "\\"", ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n\n return MissingValueError;\n}(FormatError);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvbGliL3NyYy9lcnJvci5qcz9iMjIxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtDO0FBQzNCOztBQUVQO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DLCtDQUErQzs7QUFFL0M7QUFDQSxDQUFDLDhCQUE4Qjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0EsRUFBRSwwREFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRXNCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLDBEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRTRCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLDBEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWdDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxFQUFFLDBEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiODQwMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IHZhciBFcnJvckNvZGU7XG5cbihmdW5jdGlvbiAoRXJyb3JDb2RlKSB7XG4gIC8vIFdoZW4gd2UgaGF2ZSBhIHBsYWNlaG9sZGVyIGJ1dCBubyB2YWx1ZSB0byBmb3JtYXRcbiAgRXJyb3JDb2RlW1wiTUlTU0lOR19WQUxVRVwiXSA9IFwiTUlTU0lOR19WQUxVRVwiOyAvLyBXaGVuIHZhbHVlIHN1cHBsaWVkIGlzIGludmFsaWRcblxuICBFcnJvckNvZGVbXCJJTlZBTElEX1ZBTFVFXCJdID0gXCJJTlZBTElEX1ZBTFVFXCI7IC8vIFdoZW4gd2UgbmVlZCBzcGVjaWZpYyBJbnRsIEFQSSBidXQgaXQncyBub3QgYXZhaWxhYmxlXG5cbiAgRXJyb3JDb2RlW1wiTUlTU0lOR19JTlRMX0FQSVwiXSA9IFwiTUlTU0lOR19JTlRMX0FQSVwiO1xufSkoRXJyb3JDb2RlIHx8IChFcnJvckNvZGUgPSB7fSkpO1xuXG52YXIgRm9ybWF0RXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRm9ybWF0RXJyb3IsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRm9ybWF0RXJyb3IobXNnLCBjb2RlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtc2cpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5jb2RlID0gY29kZTtcbiAgICBfdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBvcmlnaW5hbE1lc3NhZ2U7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgRm9ybWF0RXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBcIltmb3JtYXRqcyBFcnJvcjogXCIgKyB0aGlzLmNvZGUgKyBcIl0gXCIgKyB0aGlzLm1lc3NhZ2U7XG4gIH07XG5cbiAgcmV0dXJuIEZvcm1hdEVycm9yO1xufShFcnJvcik7XG5cbmV4cG9ydCB7IEZvcm1hdEVycm9yIH07XG5cbnZhciBJbnZhbGlkVmFsdWVFcnJvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhJbnZhbGlkVmFsdWVFcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBJbnZhbGlkVmFsdWVFcnJvcih2YXJpYWJsZUlkLCB2YWx1ZSwgb3B0aW9ucywgb3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiSW52YWxpZCB2YWx1ZXMgZm9yIFxcXCJcIiArIHZhcmlhYmxlSWQgKyBcIlxcXCI6IFxcXCJcIiArIHZhbHVlICsgXCJcXFwiLiBPcHRpb25zIGFyZSBcXFwiXCIgKyBPYmplY3Qua2V5cyhvcHRpb25zKS5qb2luKCdcIiwgXCInKSArIFwiXFxcIlwiLCBFcnJvckNvZGUuSU5WQUxJRF9WQUxVRSwgb3JpZ2luYWxNZXNzYWdlKSB8fCB0aGlzO1xuICB9XG5cbiAgcmV0dXJuIEludmFsaWRWYWx1ZUVycm9yO1xufShGb3JtYXRFcnJvcik7XG5cbmV4cG9ydCB7IEludmFsaWRWYWx1ZUVycm9yIH07XG5cbnZhciBJbnZhbGlkVmFsdWVUeXBlRXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoSW52YWxpZFZhbHVlVHlwZUVycm9yLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEludmFsaWRWYWx1ZVR5cGVFcnJvcih2YWx1ZSwgdHlwZSwgb3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVmFsdWUgZm9yIFxcXCJcIiArIHZhbHVlICsgXCJcXFwiIG11c3QgYmUgb2YgdHlwZSBcIiArIHR5cGUsIEVycm9yQ29kZS5JTlZBTElEX1ZBTFVFLCBvcmlnaW5hbE1lc3NhZ2UpIHx8IHRoaXM7XG4gIH1cblxuICByZXR1cm4gSW52YWxpZFZhbHVlVHlwZUVycm9yO1xufShGb3JtYXRFcnJvcik7XG5cbmV4cG9ydCB7IEludmFsaWRWYWx1ZVR5cGVFcnJvciB9O1xuXG52YXIgTWlzc2luZ1ZhbHVlRXJyb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoTWlzc2luZ1ZhbHVlRXJyb3IsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gTWlzc2luZ1ZhbHVlRXJyb3IodmFyaWFibGVJZCwgb3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVGhlIGludGwgc3RyaW5nIGNvbnRleHQgdmFyaWFibGUgXFxcIlwiICsgdmFyaWFibGVJZCArIFwiXFxcIiB3YXMgbm90IHByb3ZpZGVkIHRvIHRoZSBzdHJpbmcgXFxcIlwiICsgb3JpZ2luYWxNZXNzYWdlICsgXCJcXFwiXCIsIEVycm9yQ29kZS5NSVNTSU5HX1ZBTFVFLCBvcmlnaW5hbE1lc3NhZ2UpIHx8IHRoaXM7XG4gIH1cblxuICByZXR1cm4gTWlzc2luZ1ZhbHVlRXJyb3I7XG59KEZvcm1hdEVycm9yKTtcblxuZXhwb3J0IHsgTWlzc2luZ1ZhbHVlRXJyb3IgfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8402\n')},4597:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"du\": function() { return /* binding */ PART_TYPE; },\n/* harmony export */ \"Gt\": function() { return /* binding */ isFormatXMLElementFn; },\n/* harmony export */ \"FK\": function() { return /* binding */ formatToParts; }\n/* harmony export */ });\n/* harmony import */ var _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1895);\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8402);\n\n\nvar PART_TYPE;\n\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\n\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n\n if (!lastPart || lastPart.type !== PART_TYPE.literal || part.type !== PART_TYPE.literal) {\n all.push(part);\n } else {\n lastPart.value += part.value;\n }\n\n return all;\n }, []);\n}\n\nfunction isFormatXMLElementFn(el) {\n return typeof el === 'function';\n} // TODO(skeleton): add skeleton support\n\nfunction formatToParts(els, locales, formatters, formats, values, currentPluralValue, // For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isLiteralElement */ .O4)(els[0])) {\n return [{\n type: PART_TYPE.literal,\n value: els[0].value\n }];\n }\n\n var result = [];\n\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i]; // Exit early for string parts.\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isLiteralElement */ .O4)(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value\n });\n continue;\n } // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isPoundElement */ .yx)(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue)\n });\n }\n\n continue;\n }\n\n var varName = el.value; // Enforce that all required values are provided by the caller.\n\n if (!(values && varName in values)) {\n throw new _error__WEBPACK_IMPORTED_MODULE_1__/* .MissingValueError */ .HR(varName, originalMessage);\n }\n\n var value = values[varName];\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isArgumentElement */ .VG)(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value = typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n }\n\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value\n });\n continue;\n } // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isDateElement */ .rp)(el)) {\n var style = typeof el.style === 'string' ? formats.date[el.style] : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isDateTimeSkeleton */ .Ii)(el.style) ? el.style.parsedOptions : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getDateTimeFormat(locales, style).format(value)\n });\n continue;\n }\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isTimeElement */ .pe)(el)) {\n var style = typeof el.style === 'string' ? formats.time[el.style] : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isDateTimeSkeleton */ .Ii)(el.style) ? el.style.parsedOptions : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getDateTimeFormat(locales, style).format(value)\n });\n continue;\n }\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isNumberElement */ .uf)(el)) {\n var style = typeof el.style === 'string' ? formats.number[el.style] : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isNumberSkeleton */ .Wh)(el.style) ? el.style.parsedOptions : undefined;\n\n if (style && style.scale) {\n value = value * (style.scale || 1);\n }\n\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales, style).format(value)\n });\n continue;\n }\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isTagElement */ .HI)(el)) {\n var children = el.children,\n value_1 = el.value;\n var formatFn = values[value_1];\n\n if (!isFormatXMLElementFn(formatFn)) {\n throw new _error__WEBPACK_IMPORTED_MODULE_1__/* .InvalidValueTypeError */ .YR(value_1, 'function', originalMessage);\n }\n\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) {\n return p.value;\n }));\n\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c\n };\n }));\n }\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isSelectElement */ .Wi)(el)) {\n var opt = el.options[value] || el.options.other;\n\n if (!opt) {\n throw new _error__WEBPACK_IMPORTED_MODULE_1__/* .InvalidValueError */ .C8(el.value, value, Object.keys(el.options), originalMessage);\n }\n\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n\n if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__/* .isPluralElement */ .Jo)(el)) {\n var opt = el.options[\"=\" + value];\n\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new _error__WEBPACK_IMPORTED_MODULE_1__/* .FormatError */ .u_(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", _error__WEBPACK_IMPORTED_MODULE_1__/* .ErrorCode.MISSING_INTL_API */ .jK.MISSING_INTL_API, originalMessage);\n }\n\n var rule = formatters.getPluralRules(locales, {\n type: el.pluralType\n }).select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n\n if (!opt) {\n throw new _error__WEBPACK_IMPORTED_MODULE_1__/* .InvalidValueError */ .C8(el.value, value, Object.keys(el.options), originalMessage);\n }\n\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n\n return mergeLiteral(result);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvbGliL3NyYy9mb3JtYXR0ZXJzLmpzPzlhODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE4TztBQUNoSTtBQUN2Rzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxDQUFDLDhCQUE4Qjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRU87QUFDUDtBQUNBLENBQUM7O0FBRU07QUFDUDtBQUNBO0FBQ0EsMEJBQTBCLDhGQUFnQjtBQUMxQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUEsK0JBQStCLG1CQUFtQjtBQUNsRCx1QkFBdUI7O0FBRXZCLFFBQVEsOEZBQWdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDs7O0FBR0EsUUFBUSw0RkFBYztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBLDJCQUEyQjs7QUFFM0I7QUFDQSxnQkFBZ0IsK0RBQWlCO0FBQ2pDOztBQUVBOztBQUVBLFFBQVEsK0ZBQWlCO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7O0FBR0EsUUFBUSwyRkFBYTtBQUNyQiwwRUFBMEUsZ0dBQWtCO0FBQzVGO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBLFFBQVEsMkZBQWE7QUFDckIsMEVBQTBFLGdHQUFrQjtBQUM1RjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxRQUFRLDZGQUFlO0FBQ3ZCLDRFQUE0RSw4RkFBZ0I7O0FBRTVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxRQUFRLDBGQUFZO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixtRUFBcUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxRQUFRLDZGQUFlO0FBQ3ZCOztBQUVBO0FBQ0Esa0JBQWtCLCtEQUFpQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSw2RkFBZTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLHlEQUFXLHNIQUFzSCx5RkFBMEI7QUFDL0s7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLCtEQUFpQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjQ1OTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FyZ3VtZW50RWxlbWVudCwgaXNEYXRlRWxlbWVudCwgaXNEYXRlVGltZVNrZWxldG9uLCBpc0xpdGVyYWxFbGVtZW50LCBpc051bWJlckVsZW1lbnQsIGlzTnVtYmVyU2tlbGV0b24sIGlzUGx1cmFsRWxlbWVudCwgaXNQb3VuZEVsZW1lbnQsIGlzU2VsZWN0RWxlbWVudCwgaXNUaW1lRWxlbWVudCwgaXNUYWdFbGVtZW50IH0gZnJvbSAnQGZvcm1hdGpzL2ljdS1tZXNzYWdlZm9ybWF0LXBhcnNlcic7XG5pbXBvcnQgeyBNaXNzaW5nVmFsdWVFcnJvciwgSW52YWxpZFZhbHVlRXJyb3IsIEVycm9yQ29kZSwgRm9ybWF0RXJyb3IsIEludmFsaWRWYWx1ZVR5cGVFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuZXhwb3J0IHZhciBQQVJUX1RZUEU7XG5cbihmdW5jdGlvbiAoUEFSVF9UWVBFKSB7XG4gIFBBUlRfVFlQRVtQQVJUX1RZUEVbXCJsaXRlcmFsXCJdID0gMF0gPSBcImxpdGVyYWxcIjtcbiAgUEFSVF9UWVBFW1BBUlRfVFlQRVtcIm9iamVjdFwiXSA9IDFdID0gXCJvYmplY3RcIjtcbn0pKFBBUlRfVFlQRSB8fCAoUEFSVF9UWVBFID0ge30pKTtcblxuZnVuY3Rpb24gbWVyZ2VMaXRlcmFsKHBhcnRzKSB7XG4gIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBwYXJ0KSB7XG4gICAgdmFyIGxhc3RQYXJ0ID0gYWxsW2FsbC5sZW5ndGggLSAxXTtcblxuICAgIGlmICghbGFzdFBhcnQgfHwgbGFzdFBhcnQudHlwZSAhPT0gUEFSVF9UWVBFLmxpdGVyYWwgfHwgcGFydC50eXBlICE9PSBQQVJUX1RZUEUubGl0ZXJhbCkge1xuICAgICAgYWxsLnB1c2gocGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3RQYXJ0LnZhbHVlICs9IHBhcnQudmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbDtcbiAgfSwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGb3JtYXRYTUxFbGVtZW50Rm4oZWwpIHtcbiAgcmV0dXJuIHR5cGVvZiBlbCA9PT0gJ2Z1bmN0aW9uJztcbn0gLy8gVE9ETyhza2VsZXRvbik6IGFkZCBza2VsZXRvbiBzdXBwb3J0XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUb1BhcnRzKGVscywgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCBjdXJyZW50UGx1cmFsVmFsdWUsIC8vIEZvciBkZWJ1Z2dpbmdcbm9yaWdpbmFsTWVzc2FnZSkge1xuICAvLyBIb3QgcGF0aCBmb3Igc3RyYWlnaHQgc2ltcGxlIG1zZyB0cmFuc2xhdGlvbnNcbiAgaWYgKGVscy5sZW5ndGggPT09IDEgJiYgaXNMaXRlcmFsRWxlbWVudChlbHNbMF0pKSB7XG4gICAgcmV0dXJuIFt7XG4gICAgICB0eXBlOiBQQVJUX1RZUEUubGl0ZXJhbCxcbiAgICAgIHZhbHVlOiBlbHNbMF0udmFsdWVcbiAgICB9XTtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDAsIGVsc18xID0gZWxzOyBfaSA8IGVsc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBlbCA9IGVsc18xW19pXTsgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5nIHBhcnRzLlxuXG4gICAgaWYgKGlzTGl0ZXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHR5cGU6IFBBUlRfVFlQRS5saXRlcmFsLFxuICAgICAgICB2YWx1ZTogZWwudmFsdWVcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBUT0RPOiBzaG91bGQgdGhpcyBwYXJ0IGJlIGxpdGVyYWwgdHlwZT9cbiAgICAvLyBSZXBsYWNlIGAjYCBpbiBwbHVyYWwgcnVsZXMgd2l0aCB0aGUgYWN0dWFsIG51bWVyaWMgdmFsdWUuXG5cblxuICAgIGlmIChpc1BvdW5kRWxlbWVudChlbCkpIHtcbiAgICAgIGlmICh0eXBlb2YgY3VycmVudFBsdXJhbFZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgdHlwZTogUEFSVF9UWVBFLmxpdGVyYWwsXG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZXMpLmZvcm1hdChjdXJyZW50UGx1cmFsVmFsdWUpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgdmFyTmFtZSA9IGVsLnZhbHVlOyAvLyBFbmZvcmNlIHRoYXQgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxlci5cblxuICAgIGlmICghKHZhbHVlcyAmJiB2YXJOYW1lIGluIHZhbHVlcykpIHtcbiAgICAgIHRocm93IG5ldyBNaXNzaW5nVmFsdWVFcnJvcih2YXJOYW1lLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IHZhbHVlc1t2YXJOYW1lXTtcblxuICAgIGlmIChpc0FyZ3VtZW50RWxlbWVudChlbCkpIHtcbiAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gU3RyaW5nKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHR5cGU6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBQQVJUX1RZUEUubGl0ZXJhbCA6IFBBUlRfVFlQRS5vYmplY3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIFJlY3Vyc2l2ZWx5IGZvcm1hdCBwbHVyYWwgYW5kIHNlbGVjdCBwYXJ0cycgb3B0aW9uIOKAlCB3aGljaCBjYW4gYmUgYVxuICAgIC8vIG5lc3RlZCBwYXR0ZXJuIHN0cnVjdHVyZS4gVGhlIGNob29zaW5nIG9mIHRoZSBvcHRpb24gdG8gdXNlIGlzXG4gICAgLy8gYWJzdHJhY3RlZC1ieSBhbmQgZGVsZWdhdGVkLXRvIHRoZSBwYXJ0IGhlbHBlciBvYmplY3QuXG5cblxuICAgIGlmIChpc0RhdGVFbGVtZW50KGVsKSkge1xuICAgICAgdmFyIHN0eWxlID0gdHlwZW9mIGVsLnN0eWxlID09PSAnc3RyaW5nJyA/IGZvcm1hdHMuZGF0ZVtlbC5zdHlsZV0gOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpID8gZWwuc3R5bGUucGFyc2VkT3B0aW9ucyA6IHVuZGVmaW5lZDtcbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgdHlwZTogUEFSVF9UWVBFLmxpdGVyYWwsXG4gICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKS5mb3JtYXQodmFsdWUpXG4gICAgICB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc1RpbWVFbGVtZW50KGVsKSkge1xuICAgICAgdmFyIHN0eWxlID0gdHlwZW9mIGVsLnN0eWxlID09PSAnc3RyaW5nJyA/IGZvcm1hdHMudGltZVtlbC5zdHlsZV0gOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpID8gZWwuc3R5bGUucGFyc2VkT3B0aW9ucyA6IHVuZGVmaW5lZDtcbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgdHlwZTogUEFSVF9UWVBFLmxpdGVyYWwsXG4gICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKS5mb3JtYXQodmFsdWUpXG4gICAgICB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc051bWJlckVsZW1lbnQoZWwpKSB7XG4gICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnID8gZm9ybWF0cy5udW1iZXJbZWwuc3R5bGVdIDogaXNOdW1iZXJTa2VsZXRvbihlbC5zdHlsZSkgPyBlbC5zdHlsZS5wYXJzZWRPcHRpb25zIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoc3R5bGUgJiYgc3R5bGUuc2NhbGUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIChzdHlsZS5zY2FsZSB8fCAxKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICB0eXBlOiBQQVJUX1RZUEUubGl0ZXJhbCxcbiAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZXMsIHN0eWxlKS5mb3JtYXQodmFsdWUpXG4gICAgICB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc1RhZ0VsZW1lbnQoZWwpKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbixcbiAgICAgICAgICB2YWx1ZV8xID0gZWwudmFsdWU7XG4gICAgICB2YXIgZm9ybWF0Rm4gPSB2YWx1ZXNbdmFsdWVfMV07XG5cbiAgICAgIGlmICghaXNGb3JtYXRYTUxFbGVtZW50Rm4oZm9ybWF0Rm4pKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVmFsdWVUeXBlRXJyb3IodmFsdWVfMSwgJ2Z1bmN0aW9uJywgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcnRzID0gZm9ybWF0VG9QYXJ0cyhjaGlsZHJlbiwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCBjdXJyZW50UGx1cmFsVmFsdWUpO1xuICAgICAgdmFyIGNodW5rcyA9IGZvcm1hdEZuKHBhcnRzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gcC52YWx1ZTtcbiAgICAgIH0pKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gW2NodW5rc107XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgY2h1bmtzLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IFBBUlRfVFlQRS5saXRlcmFsIDogUEFSVF9UWVBFLm9iamVjdCxcbiAgICAgICAgICB2YWx1ZTogY1xuICAgICAgICB9O1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChpc1NlbGVjdEVsZW1lbnQoZWwpKSB7XG4gICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1t2YWx1ZV0gfHwgZWwub3B0aW9ucy5vdGhlcjtcblxuICAgICAgaWYgKCFvcHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRWYWx1ZUVycm9yKGVsLnZhbHVlLCB2YWx1ZSwgT2JqZWN0LmtleXMoZWwub3B0aW9ucyksIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgZm9ybWF0VG9QYXJ0cyhvcHQudmFsdWUsIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcykpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzUGx1cmFsRWxlbWVudChlbCkpIHtcbiAgICAgIHZhciBvcHQgPSBlbC5vcHRpb25zW1wiPVwiICsgdmFsdWVdO1xuXG4gICAgICBpZiAoIW9wdCkge1xuICAgICAgICBpZiAoIUludGwuUGx1cmFsUnVsZXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXBsdXJhbHJ1bGVzXFxcIlxcblwiLCBFcnJvckNvZGUuTUlTU0lOR19JTlRMX0FQSSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBydWxlID0gZm9ybWF0dGVycy5nZXRQbHVyYWxSdWxlcyhsb2NhbGVzLCB7XG4gICAgICAgICAgdHlwZTogZWwucGx1cmFsVHlwZVxuICAgICAgICB9KS5zZWxlY3QodmFsdWUgLSAoZWwub2Zmc2V0IHx8IDApKTtcbiAgICAgICAgb3B0ID0gZWwub3B0aW9uc1tydWxlXSB8fCBlbC5vcHRpb25zLm90aGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFZhbHVlRXJyb3IoZWwudmFsdWUsIHZhbHVlLCBPYmplY3Qua2V5cyhlbC5vcHRpb25zKSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBmb3JtYXRUb1BhcnRzKG9wdC52YWx1ZSwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCB2YWx1ZSAtIChlbC5vZmZzZXQgfHwgMCkpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZUxpdGVyYWwocmVzdWx0KTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4597\n")},2203:function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\n\nvar _defineProperty = __webpack_require__(9713);\n\nvar _slicedToArray = __webpack_require__(3038);\n\nvar _toConsumableArray = __webpack_require__(319);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar strictUriEncode = __webpack_require__(8936);\n\nvar decodeComponent = __webpack_require__(7091);\n\nvar splitOnFirst = __webpack_require__(4734);\n\nvar filterObject = __webpack_require__(8616);\n\nvar isNullOrUndefined = function isNullOrUndefined(value) {\n return value === null || value === undefined;\n};\n\nvar encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return function (key) {\n return function (result, value) {\n var index = result.length;\n\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[', index, ']'].join('')]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')]);\n };\n };\n\n case 'bracket':\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[]'].join('')]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[]=', encode(value, options)].join('')]);\n };\n };\n\n case 'comma':\n case 'separator':\n case 'bracket-separator':\n {\n var keyValueSep = options.arrayFormat === 'bracket-separator' ? '[]=' : '=';\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n } // Translate null to an empty string so that it doesn't serialize as 'null'\n\n\n value = value === null ? '' : value;\n\n if (result.length === 0) {\n return [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n }\n\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n };\n }\n\n default:\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [encode(key, options)]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '=', encode(value, options)].join('')]);\n };\n };\n }\n}\n\nfunction parserForArrayFormat(options) {\n var result;\n\n switch (options.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n case 'comma':\n case 'separator':\n return function (key, value, accumulator) {\n var isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n var isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n var newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(function (item) {\n return decode(item, options);\n }) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n\n case 'bracket-separator':\n return function (key, value, accumulator) {\n var isArray = /(\\[\\])$/.test(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!isArray) {\n accumulator[key] = value ? decode(value, options) : value;\n return;\n }\n\n var arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map(function (item) {\n return decode(item, options);\n });\n\n if (accumulator[key] === undefined) {\n accumulator[key] = arrayValue;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], arrayValue);\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\n\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nfunction removeHash(input) {\n var hashStart = input.indexOf('#');\n\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n\n return input;\n}\n\nfunction getHash(url) {\n var hash = '';\n var hashStart = url.indexOf('#');\n\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n\n return hash;\n}\n\nfunction extract(input) {\n input = removeHash(input);\n var queryStart = input.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n\n return value;\n}\n\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n var formatter = parserForArrayFormat(options); // Create an object with no prototype\n\n var ret = Object.create(null);\n\n if (typeof query !== 'string') {\n return ret;\n }\n\n query = query.trim().replace(/^[?#&]/, '');\n\n if (!query) {\n return ret;\n }\n\n var _iterator = _createForOfIteratorHelper(query.split('&')),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n\n if (param === '') {\n continue;\n }\n\n var _splitOnFirst = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '='),\n _splitOnFirst2 = _slicedToArray(_splitOnFirst, 2),\n _key = _splitOnFirst2[0],\n _value = _splitOnFirst2[1]; // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n\n _value = _value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? _value : decode(_value, options);\n formatter(decode(_key, options), _value, ret);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n for (var _i = 0, _Object$keys = Object.keys(ret); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n var value = ret[key];\n\n if (typeof value === 'object' && value !== null) {\n for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n\n if (options.sort === false) {\n return ret;\n }\n\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce(function (result, key) {\n var value = ret[key];\n\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (object, options) {\n if (!object) {\n return '';\n }\n\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n\n var shouldFilter = function shouldFilter(key) {\n return options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n };\n\n var formatter = encoderForArrayFormat(options);\n var objectCopy = {};\n\n for (var _i3 = 0, _Object$keys3 = Object.keys(object); _i3 < _Object$keys3.length; _i3++) {\n var key = _Object$keys3[_i3];\n\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n\n var keys = Object.keys(objectCopy);\n\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n\n return keys.map(function (key) {\n var value = object[key];\n\n if (value === undefined) {\n return '';\n }\n\n if (value === null) {\n return encode(key, options);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n return encode(key, options) + '[]';\n }\n\n return value.reduce(formatter(key), []).join('&');\n }\n\n return encode(key, options) + '=' + encode(value, options);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&');\n};\n\nexports.parseUrl = function (url, options) {\n options = Object.assign({\n decode: true\n }, options);\n\n var _splitOnFirst3 = splitOnFirst(url, '#'),\n _splitOnFirst4 = _slicedToArray(_splitOnFirst3, 2),\n url_ = _splitOnFirst4[0],\n hash = _splitOnFirst4[1];\n\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\n\nexports.stringifyUrl = function (object, options) {\n options = Object.assign(_defineProperty({\n encode: true,\n strict: true\n }, encodeFragmentIdentifier, true), options);\n var url = removeHash(object.url).split('?')[0] || '';\n var queryFromUrl = exports.extract(object.url);\n var parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n var query = Object.assign(parsedQueryFromUrl, object.query);\n var queryString = exports.stringify(query, options);\n\n if (queryString) {\n queryString = \"?\".concat(queryString);\n }\n\n var hash = getHash(object.url);\n\n if (object.fragmentIdentifier) {\n hash = \"#\".concat(options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier);\n }\n\n return \"\".concat(url).concat(queryString).concat(hash);\n};\n\nexports.pick = function (input, filter, options) {\n options = Object.assign(_defineProperty({\n parseFragmentIdentifier: true\n }, encodeFragmentIdentifier, false), options);\n\n var _exports$parseUrl = exports.parseUrl(input, options),\n url = _exports$parseUrl.url,\n query = _exports$parseUrl.query,\n fragmentIdentifier = _exports$parseUrl.fragmentIdentifier;\n\n return exports.stringifyUrl({\n url: url,\n query: filterObject(query, filter),\n fragmentIdentifier: fragmentIdentifier\n }, options);\n};\n\nexports.exclude = function (input, filter, options) {\n var exclusionFilter = Array.isArray(filter) ? function (key) {\n return !filter.includes(key);\n } : function (key, value) {\n return !filter(key, value);\n };\n return exports.pick(input, exclusionFilter, options);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9xdWVyeS1zdHJpbmcvaW5kZXguanM/MDIxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixzQkFBc0IsbUJBQU8sQ0FBQyxJQUEyRzs7QUFFekkscUJBQXFCLG1CQUFPLENBQUMsSUFBMEc7O0FBRXZJLHlCQUF5QixtQkFBTyxDQUFDLEdBQThHOztBQUUvSSx3REFBd0QsaUZBQWlGLFdBQVcsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQixpQkFBaUIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUVwK0IsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFckwsc0JBQXNCLG1CQUFPLENBQUMsSUFBbUI7O0FBRWpELHNCQUFzQixtQkFBTyxDQUFDLElBQXNCOztBQUVwRCxtQkFBbUIsbUJBQU8sQ0FBQyxJQUFnQjs7QUFFM0MsbUJBQW1CLG1CQUFPLENBQUMsSUFBWTs7QUFFdkM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0RBQWdEOztBQUVoRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsK0JBQStCO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLG1EQUFtRCwwQkFBMEI7QUFDN0U7QUFDQTs7QUFFQTtBQUNBLDJEQUEyRCw0QkFBNEI7QUFDdkY7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxlQUFlO0FBQ2YsYUFBYTs7QUFFYixpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0RBQXdELDRCQUE0QjtBQUNwRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUcsS0FBSztBQUNSOztBQUVBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWTtBQUNaO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIyMDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiL2hvbWUvcnVubmVyL3dvcmsvanVzdGljZTQwLXRvb2wvanVzdGljZTQwLXRvb2wvY2xpZW50L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpO1xuXG52YXIgX3NsaWNlZFRvQXJyYXkgPSByZXF1aXJlKFwiL2hvbWUvcnVubmVyL3dvcmsvanVzdGljZTQwLXRvb2wvanVzdGljZTQwLXRvb2wvY2xpZW50L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7XG5cbnZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSByZXF1aXJlKFwiL2hvbWUvcnVubmVyL3dvcmsvanVzdGljZTQwLXRvb2wvanVzdGljZTQwLXRvb2wvY2xpZW50L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTsgaWYgKCFpdCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBpdC5jYWxsKG8pOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbnZhciBzdHJpY3RVcmlFbmNvZGUgPSByZXF1aXJlKCdzdHJpY3QtdXJpLWVuY29kZScpO1xuXG52YXIgZGVjb2RlQ29tcG9uZW50ID0gcmVxdWlyZSgnZGVjb2RlLXVyaS1jb21wb25lbnQnKTtcblxudmFyIHNwbGl0T25GaXJzdCA9IHJlcXVpcmUoJ3NwbGl0LW9uLWZpcnN0Jyk7XG5cbnZhciBmaWx0ZXJPYmplY3QgPSByZXF1aXJlKCdmaWx0ZXItb2JqJyk7XG5cbnZhciBpc051bGxPclVuZGVmaW5lZCA9IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufTtcblxudmFyIGVuY29kZUZyYWdtZW50SWRlbnRpZmllciA9IFN5bWJvbCgnZW5jb2RlRnJhZ21lbnRJZGVudGlmaWVyJyk7XG5cbmZ1bmN0aW9uIGVuY29kZXJGb3JBcnJheUZvcm1hdChvcHRpb25zKSB7XG4gIHN3aXRjaCAob3B0aW9ucy5hcnJheUZvcm1hdCkge1xuICAgIGNhc2UgJ2luZGV4JzpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAocmVzdWx0LCB2YWx1ZSkge1xuICAgICAgICAgIHZhciBpbmRleCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsIHx8IG9wdGlvbnMuc2tpcEVtcHR5U3RyaW5nICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtbZW5jb2RlKGtleSwgb3B0aW9ucyksICdbJywgaW5kZXgsICddJ10uam9pbignJyldKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBbW2VuY29kZShrZXksIG9wdGlvbnMpLCAnWycsIGVuY29kZShpbmRleCwgb3B0aW9ucyksICddPScsIGVuY29kZSh2YWx1ZSwgb3B0aW9ucyldLmpvaW4oJycpXSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgY2FzZSAnYnJhY2tldCc6XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHJlc3VsdCwgdmFsdWUpIHtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsIHx8IG9wdGlvbnMuc2tpcEVtcHR5U3RyaW5nICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtbZW5jb2RlKGtleSwgb3B0aW9ucyksICdbXSddLmpvaW4oJycpXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgW1tlbmNvZGUoa2V5LCBvcHRpb25zKSwgJ1tdPScsIGVuY29kZSh2YWx1ZSwgb3B0aW9ucyldLmpvaW4oJycpXSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgY2FzZSAnY29tbWEnOlxuICAgIGNhc2UgJ3NlcGFyYXRvcic6XG4gICAgY2FzZSAnYnJhY2tldC1zZXBhcmF0b3InOlxuICAgICAge1xuICAgICAgICB2YXIga2V5VmFsdWVTZXAgPSBvcHRpb25zLmFycmF5Rm9ybWF0ID09PSAnYnJhY2tldC1zZXBhcmF0b3InID8gJ1tdPScgOiAnPSc7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChyZXN1bHQsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsIHx8IG9wdGlvbnMuc2tpcEVtcHR5U3RyaW5nICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSAvLyBUcmFuc2xhdGUgbnVsbCB0byBhbiBlbXB0eSBzdHJpbmcgc28gdGhhdCBpdCBkb2Vzbid0IHNlcmlhbGl6ZSBhcyAnbnVsbCdcblxuXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtbZW5jb2RlKGtleSwgb3B0aW9ucyksIGtleVZhbHVlU2VwLCBlbmNvZGUodmFsdWUsIG9wdGlvbnMpXS5qb2luKCcnKV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbW3Jlc3VsdCwgZW5jb2RlKHZhbHVlLCBvcHRpb25zKV0uam9pbihvcHRpb25zLmFycmF5Rm9ybWF0U2VwYXJhdG9yKV07XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHJlc3VsdCwgdmFsdWUpIHtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsIHx8IG9wdGlvbnMuc2tpcEVtcHR5U3RyaW5nICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtlbmNvZGUoa2V5LCBvcHRpb25zKV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtbZW5jb2RlKGtleSwgb3B0aW9ucyksICc9JywgZW5jb2RlKHZhbHVlLCBvcHRpb25zKV0uam9pbignJyldKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VyRm9yQXJyYXlGb3JtYXQob3B0aW9ucykge1xuICB2YXIgcmVzdWx0O1xuXG4gIHN3aXRjaCAob3B0aW9ucy5hcnJheUZvcm1hdCkge1xuICAgIGNhc2UgJ2luZGV4JzpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgICAgcmVzdWx0ID0gL1xcWyhcXGQqKVxcXSQvLmV4ZWMoa2V5KTtcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1xcW1xcZCpcXF0kLywgJycpO1xuXG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY2N1bXVsYXRvcltrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvcltrZXldID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBhY2N1bXVsYXRvcltrZXldW3Jlc3VsdFsxXV0gPSB2YWx1ZTtcbiAgICAgIH07XG5cbiAgICBjYXNlICdicmFja2V0JzpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgICAgcmVzdWx0ID0gLyhcXFtcXF0pJC8uZXhlYyhrZXkpO1xuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvXFxbXFxdJC8sICcnKTtcblxuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWNjdW11bGF0b3Jba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IFtdLmNvbmNhdChhY2N1bXVsYXRvcltrZXldLCB2YWx1ZSk7XG4gICAgICB9O1xuXG4gICAgY2FzZSAnY29tbWEnOlxuICAgIGNhc2UgJ3NlcGFyYXRvcic6XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICAgIHZhciBpc0FycmF5ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5pbmNsdWRlcyhvcHRpb25zLmFycmF5Rm9ybWF0U2VwYXJhdG9yKTtcbiAgICAgICAgdmFyIGlzRW5jb2RlZEFycmF5ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNBcnJheSAmJiBkZWNvZGUodmFsdWUsIG9wdGlvbnMpLmluY2x1ZGVzKG9wdGlvbnMuYXJyYXlGb3JtYXRTZXBhcmF0b3IpO1xuICAgICAgICB2YWx1ZSA9IGlzRW5jb2RlZEFycmF5ID8gZGVjb2RlKHZhbHVlLCBvcHRpb25zKSA6IHZhbHVlO1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSBpc0FycmF5IHx8IGlzRW5jb2RlZEFycmF5ID8gdmFsdWUuc3BsaXQob3B0aW9ucy5hcnJheUZvcm1hdFNlcGFyYXRvcikubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZShpdGVtLCBvcHRpb25zKTtcbiAgICAgICAgfSkgOiB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogZGVjb2RlKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgfTtcblxuICAgIGNhc2UgJ2JyYWNrZXQtc2VwYXJhdG9yJzpcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgICAgdmFyIGlzQXJyYXkgPSAvKFxcW1xcXSkkLy50ZXN0KGtleSk7XG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFtcXF0kLywgJycpO1xuXG4gICAgICAgIGlmICghaXNBcnJheSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yW2tleV0gPSB2YWx1ZSA/IGRlY29kZSh2YWx1ZSwgb3B0aW9ucykgOiB2YWx1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYXJyYXlWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gW10gOiB2YWx1ZS5zcGxpdChvcHRpb25zLmFycmF5Rm9ybWF0U2VwYXJhdG9yKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlKGl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWNjdW11bGF0b3Jba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IGFycmF5VmFsdWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IFtdLmNvbmNhdChhY2N1bXVsYXRvcltrZXldLCBhcnJheVZhbHVlKTtcbiAgICAgIH07XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgICBpZiAoYWNjdW11bGF0b3Jba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3Jba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjY3VtdWxhdG9yW2tleV0gPSBbXS5jb25jYXQoYWNjdW11bGF0b3Jba2V5XSwgdmFsdWUpO1xuICAgICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUFycmF5Rm9ybWF0U2VwYXJhdG9yKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FycmF5Rm9ybWF0U2VwYXJhdG9yIG11c3QgYmUgc2luZ2xlIGNoYXJhY3RlciBzdHJpbmcnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmNvZGUodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuZW5jb2RlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuc3RyaWN0ID8gc3RyaWN0VXJpRW5jb2RlKHZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGRlY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucy5kZWNvZGUpIHtcbiAgICByZXR1cm4gZGVjb2RlQ29tcG9uZW50KHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24ga2V5c1NvcnRlcihpbnB1dCkge1xuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXQuc29ydCgpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ga2V5c1NvcnRlcihPYmplY3Qua2V5cyhpbnB1dCkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBOdW1iZXIoYSkgLSBOdW1iZXIoYik7XG4gICAgfSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBpbnB1dFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0O1xufVxuXG5mdW5jdGlvbiByZW1vdmVIYXNoKGlucHV0KSB7XG4gIHZhciBoYXNoU3RhcnQgPSBpbnB1dC5pbmRleE9mKCcjJyk7XG5cbiAgaWYgKGhhc2hTdGFydCAhPT0gLTEpIHtcbiAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDAsIGhhc2hTdGFydCk7XG4gIH1cblxuICByZXR1cm4gaW5wdXQ7XG59XG5cbmZ1bmN0aW9uIGdldEhhc2godXJsKSB7XG4gIHZhciBoYXNoID0gJyc7XG4gIHZhciBoYXNoU3RhcnQgPSB1cmwuaW5kZXhPZignIycpO1xuXG4gIGlmIChoYXNoU3RhcnQgIT09IC0xKSB7XG4gICAgaGFzaCA9IHVybC5zbGljZShoYXNoU3RhcnQpO1xuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3QoaW5wdXQpIHtcbiAgaW5wdXQgPSByZW1vdmVIYXNoKGlucHV0KTtcbiAgdmFyIHF1ZXJ5U3RhcnQgPSBpbnB1dC5pbmRleE9mKCc/Jyk7XG5cbiAgaWYgKHF1ZXJ5U3RhcnQgPT09IC0xKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0LnNsaWNlKHF1ZXJ5U3RhcnQgKyAxKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VWYWx1ZSh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucy5wYXJzZU51bWJlcnMgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5wYXJzZUJvb2xlYW5zICYmIHZhbHVlICE9PSBudWxsICYmICh2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gcGFyc2UocXVlcnksIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIGRlY29kZTogdHJ1ZSxcbiAgICBzb3J0OiB0cnVlLFxuICAgIGFycmF5Rm9ybWF0OiAnbm9uZScsXG4gICAgYXJyYXlGb3JtYXRTZXBhcmF0b3I6ICcsJyxcbiAgICBwYXJzZU51bWJlcnM6IGZhbHNlLFxuICAgIHBhcnNlQm9vbGVhbnM6IGZhbHNlXG4gIH0sIG9wdGlvbnMpO1xuICB2YWxpZGF0ZUFycmF5Rm9ybWF0U2VwYXJhdG9yKG9wdGlvbnMuYXJyYXlGb3JtYXRTZXBhcmF0b3IpO1xuICB2YXIgZm9ybWF0dGVyID0gcGFyc2VyRm9yQXJyYXlGb3JtYXQob3B0aW9ucyk7IC8vIENyZWF0ZSBhbiBvYmplY3Qgd2l0aCBubyBwcm90b3R5cGVcblxuICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBpZiAodHlwZW9mIHF1ZXJ5ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBxdWVyeSA9IHF1ZXJ5LnRyaW0oKS5yZXBsYWNlKC9eWz8jJl0vLCAnJyk7XG5cbiAgaWYgKCFxdWVyeSkge1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIocXVlcnkuc3BsaXQoJyYnKSksXG4gICAgICBfc3RlcDtcblxuICB0cnkge1xuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XG4gICAgICB2YXIgcGFyYW0gPSBfc3RlcC52YWx1ZTtcblxuICAgICAgaWYgKHBhcmFtID09PSAnJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIF9zcGxpdE9uRmlyc3QgPSBzcGxpdE9uRmlyc3Qob3B0aW9ucy5kZWNvZGUgPyBwYXJhbS5yZXBsYWNlKC9cXCsvZywgJyAnKSA6IHBhcmFtLCAnPScpLFxuICAgICAgICAgIF9zcGxpdE9uRmlyc3QyID0gX3NsaWNlZFRvQXJyYXkoX3NwbGl0T25GaXJzdCwgMiksXG4gICAgICAgICAgX2tleSA9IF9zcGxpdE9uRmlyc3QyWzBdLFxuICAgICAgICAgIF92YWx1ZSA9IF9zcGxpdE9uRmlyc3QyWzFdOyAvLyBNaXNzaW5nIGA9YCBzaG91bGQgYmUgYG51bGxgOlxuICAgICAgLy8gaHR0cDovL3czLm9yZy9UUi8yMDEyL1dELXVybC0yMDEyMDUyNC8jY29sbGVjdC11cmwtcGFyYW1ldGVyc1xuXG5cbiAgICAgIF92YWx1ZSA9IF92YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IFsnY29tbWEnLCAnc2VwYXJhdG9yJywgJ2JyYWNrZXQtc2VwYXJhdG9yJ10uaW5jbHVkZXMob3B0aW9ucy5hcnJheUZvcm1hdCkgPyBfdmFsdWUgOiBkZWNvZGUoX3ZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGZvcm1hdHRlcihkZWNvZGUoX2tleSwgb3B0aW9ucyksIF92YWx1ZSwgcmV0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvci5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yLmYoKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgX09iamVjdCRrZXlzID0gT2JqZWN0LmtleXMocmV0KTsgX2kgPCBfT2JqZWN0JGtleXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGtleSA9IF9PYmplY3Qka2V5c1tfaV07XG4gICAgdmFyIHZhbHVlID0gcmV0W2tleV07XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZm9yICh2YXIgX2kyID0gMCwgX09iamVjdCRrZXlzMiA9IE9iamVjdC5rZXlzKHZhbHVlKTsgX2kyIDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBrID0gX09iamVjdCRrZXlzMltfaTJdO1xuICAgICAgICB2YWx1ZVtrXSA9IHBhcnNlVmFsdWUodmFsdWVba10sIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXRba2V5XSA9IHBhcnNlVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNvcnQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiAob3B0aW9ucy5zb3J0ID09PSB0cnVlID8gT2JqZWN0LmtleXMocmV0KS5zb3J0KCkgOiBPYmplY3Qua2V5cyhyZXQpLnNvcnQob3B0aW9ucy5zb3J0KSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGtleSkge1xuICAgIHZhciB2YWx1ZSA9IHJldFtrZXldO1xuXG4gICAgaWYgKEJvb2xlYW4odmFsdWUpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAvLyBTb3J0IG9iamVjdCBrZXlzLCBub3QgdmFsdWVzXG4gICAgICByZXN1bHRba2V5XSA9IGtleXNTb3J0ZXIodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufVxuXG5leHBvcnRzLmV4dHJhY3QgPSBleHRyYWN0O1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuXG5leHBvcnRzLnN0cmluZ2lmeSA9IGZ1bmN0aW9uIChvYmplY3QsIG9wdGlvbnMpIHtcbiAgaWYgKCFvYmplY3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZW5jb2RlOiB0cnVlLFxuICAgIHN0cmljdDogdHJ1ZSxcbiAgICBhcnJheUZvcm1hdDogJ25vbmUnLFxuICAgIGFycmF5Rm9ybWF0U2VwYXJhdG9yOiAnLCdcbiAgfSwgb3B0aW9ucyk7XG4gIHZhbGlkYXRlQXJyYXlGb3JtYXRTZXBhcmF0b3Iob3B0aW9ucy5hcnJheUZvcm1hdFNlcGFyYXRvcik7XG5cbiAgdmFyIHNob3VsZEZpbHRlciA9IGZ1bmN0aW9uIHNob3VsZEZpbHRlcihrZXkpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5za2lwTnVsbCAmJiBpc051bGxPclVuZGVmaW5lZChvYmplY3Rba2V5XSkgfHwgb3B0aW9ucy5za2lwRW1wdHlTdHJpbmcgJiYgb2JqZWN0W2tleV0gPT09ICcnO1xuICB9O1xuXG4gIHZhciBmb3JtYXR0ZXIgPSBlbmNvZGVyRm9yQXJyYXlGb3JtYXQob3B0aW9ucyk7XG4gIHZhciBvYmplY3RDb3B5ID0ge307XG5cbiAgZm9yICh2YXIgX2kzID0gMCwgX09iamVjdCRrZXlzMyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IF9pMyA8IF9PYmplY3Qka2V5czMubGVuZ3RoOyBfaTMrKykge1xuICAgIHZhciBrZXkgPSBfT2JqZWN0JGtleXMzW19pM107XG5cbiAgICBpZiAoIXNob3VsZEZpbHRlcihrZXkpKSB7XG4gICAgICBvYmplY3RDb3B5W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdENvcHkpO1xuXG4gIGlmIChvcHRpb25zLnNvcnQgIT09IGZhbHNlKSB7XG4gICAga2V5cy5zb3J0KG9wdGlvbnMuc29ydCk7XG4gIH1cblxuICByZXR1cm4ga2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbmNvZGUoa2V5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucy5hcnJheUZvcm1hdCA9PT0gJ2JyYWNrZXQtc2VwYXJhdG9yJykge1xuICAgICAgICByZXR1cm4gZW5jb2RlKGtleSwgb3B0aW9ucykgKyAnW10nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWUucmVkdWNlKGZvcm1hdHRlcihrZXkpLCBbXSkuam9pbignJicpO1xuICAgIH1cblxuICAgIHJldHVybiBlbmNvZGUoa2V5LCBvcHRpb25zKSArICc9JyArIGVuY29kZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4Lmxlbmd0aCA+IDA7XG4gIH0pLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydHMucGFyc2VVcmwgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBkZWNvZGU6IHRydWVcbiAgfSwgb3B0aW9ucyk7XG5cbiAgdmFyIF9zcGxpdE9uRmlyc3QzID0gc3BsaXRPbkZpcnN0KHVybCwgJyMnKSxcbiAgICAgIF9zcGxpdE9uRmlyc3Q0ID0gX3NsaWNlZFRvQXJyYXkoX3NwbGl0T25GaXJzdDMsIDIpLFxuICAgICAgdXJsXyA9IF9zcGxpdE9uRmlyc3Q0WzBdLFxuICAgICAgaGFzaCA9IF9zcGxpdE9uRmlyc3Q0WzFdO1xuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHtcbiAgICB1cmw6IHVybF8uc3BsaXQoJz8nKVswXSB8fCAnJyxcbiAgICBxdWVyeTogcGFyc2UoZXh0cmFjdCh1cmwpLCBvcHRpb25zKVxuICB9LCBvcHRpb25zICYmIG9wdGlvbnMucGFyc2VGcmFnbWVudElkZW50aWZpZXIgJiYgaGFzaCA/IHtcbiAgICBmcmFnbWVudElkZW50aWZpZXI6IGRlY29kZShoYXNoLCBvcHRpb25zKVxuICB9IDoge30pO1xufTtcblxuZXhwb3J0cy5zdHJpbmdpZnlVcmwgPSBmdW5jdGlvbiAob2JqZWN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgZW5jb2RlOiB0cnVlLFxuICAgIHN0cmljdDogdHJ1ZVxuICB9LCBlbmNvZGVGcmFnbWVudElkZW50aWZpZXIsIHRydWUpLCBvcHRpb25zKTtcbiAgdmFyIHVybCA9IHJlbW92ZUhhc2gob2JqZWN0LnVybCkuc3BsaXQoJz8nKVswXSB8fCAnJztcbiAgdmFyIHF1ZXJ5RnJvbVVybCA9IGV4cG9ydHMuZXh0cmFjdChvYmplY3QudXJsKTtcbiAgdmFyIHBhcnNlZFF1ZXJ5RnJvbVVybCA9IGV4cG9ydHMucGFyc2UocXVlcnlGcm9tVXJsLCB7XG4gICAgc29ydDogZmFsc2VcbiAgfSk7XG4gIHZhciBxdWVyeSA9IE9iamVjdC5hc3NpZ24ocGFyc2VkUXVlcnlGcm9tVXJsLCBvYmplY3QucXVlcnkpO1xuICB2YXIgcXVlcnlTdHJpbmcgPSBleHBvcnRzLnN0cmluZ2lmeShxdWVyeSwgb3B0aW9ucyk7XG5cbiAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgcXVlcnlTdHJpbmcgPSBcIj9cIi5jb25jYXQocXVlcnlTdHJpbmcpO1xuICB9XG5cbiAgdmFyIGhhc2ggPSBnZXRIYXNoKG9iamVjdC51cmwpO1xuXG4gIGlmIChvYmplY3QuZnJhZ21lbnRJZGVudGlmaWVyKSB7XG4gICAgaGFzaCA9IFwiI1wiLmNvbmNhdChvcHRpb25zW2VuY29kZUZyYWdtZW50SWRlbnRpZmllcl0gPyBlbmNvZGUob2JqZWN0LmZyYWdtZW50SWRlbnRpZmllciwgb3B0aW9ucykgOiBvYmplY3QuZnJhZ21lbnRJZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdCh1cmwpLmNvbmNhdChxdWVyeVN0cmluZykuY29uY2F0KGhhc2gpO1xufTtcblxuZXhwb3J0cy5waWNrID0gZnVuY3Rpb24gKGlucHV0LCBmaWx0ZXIsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oX2RlZmluZVByb3BlcnR5KHtcbiAgICBwYXJzZUZyYWdtZW50SWRlbnRpZmllcjogdHJ1ZVxuICB9LCBlbmNvZGVGcmFnbWVudElkZW50aWZpZXIsIGZhbHNlKSwgb3B0aW9ucyk7XG5cbiAgdmFyIF9leHBvcnRzJHBhcnNlVXJsID0gZXhwb3J0cy5wYXJzZVVybChpbnB1dCwgb3B0aW9ucyksXG4gICAgICB1cmwgPSBfZXhwb3J0cyRwYXJzZVVybC51cmwsXG4gICAgICBxdWVyeSA9IF9leHBvcnRzJHBhcnNlVXJsLnF1ZXJ5LFxuICAgICAgZnJhZ21lbnRJZGVudGlmaWVyID0gX2V4cG9ydHMkcGFyc2VVcmwuZnJhZ21lbnRJZGVudGlmaWVyO1xuXG4gIHJldHVybiBleHBvcnRzLnN0cmluZ2lmeVVybCh7XG4gICAgdXJsOiB1cmwsXG4gICAgcXVlcnk6IGZpbHRlck9iamVjdChxdWVyeSwgZmlsdGVyKSxcbiAgICBmcmFnbWVudElkZW50aWZpZXI6IGZyYWdtZW50SWRlbnRpZmllclxuICB9LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydHMuZXhjbHVkZSA9IGZ1bmN0aW9uIChpbnB1dCwgZmlsdGVyLCBvcHRpb25zKSB7XG4gIHZhciBleGNsdXNpb25GaWx0ZXIgPSBBcnJheS5pc0FycmF5KGZpbHRlcikgPyBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuICFmaWx0ZXIuaW5jbHVkZXMoa2V5KTtcbiAgfSA6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgcmV0dXJuICFmaWx0ZXIoa2V5LCB2YWx1ZSk7XG4gIH07XG4gIHJldHVybiBleHBvcnRzLnBpY2soaW5wdXQsIGV4Y2x1c2lvbkZpbHRlciwgb3B0aW9ucyk7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2203\n")},2993:function(module){eval("/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n } // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXN0LWNvbXBhcmUvaW5kZXguanM/MWMyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLFdBQVc7QUFDakM7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixXQUFXO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLFdBQVc7QUFDL0I7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7O0FBR0EsNkRBQTZEOztBQUU3RCxvQkFBb0IsV0FBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLEtBQUs7QUFDTDs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7OztBQUdEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBIiwiZmlsZSI6IjI5OTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgTWFwOnJlYWRvbmx5LCBTZXQ6cmVhZG9ubHksIEFycmF5QnVmZmVyOnJlYWRvbmx5ICovXG52YXIgaGFzRWxlbWVudFR5cGUgPSB0eXBlb2YgRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgaGFzTWFwID0gdHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJztcbnZhciBoYXNTZXQgPSB0eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nO1xudmFyIGhhc0FycmF5QnVmZmVyID0gdHlwZW9mIEFycmF5QnVmZmVyID09PSAnZnVuY3Rpb24nICYmICEhQXJyYXlCdWZmZXIuaXNWaWV3OyAvLyBOb3RlOiBXZSAqKmRvbid0KiogbmVlZCBgZW52SGFzQmlnSW50NjRBcnJheWAgaW4gZmRlIGVzNi9pbmRleC5qc1xuXG5mdW5jdGlvbiBlcXVhbChhLCBiKSB7XG4gIC8vIFNUQVJUOiBmYXN0LWRlZXAtZXF1YWwgZXM2L2luZGV4LmpzIDMuMS4xXG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnICYmIHR5cGVvZiBiID09ICdvYmplY3QnKSB7XG4gICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpIHJldHVybiBmYWxzZTtcbiAgICB2YXIgbGVuZ3RoLCBpLCBrZXlzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgICAgaWYgKCFlcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFNUQVJUOiBNb2RpZmljYXRpb25zOlxuICAgIC8vIDEuIEV4dHJhIGBoYXM8VHlwZT4gJiZgIGhlbHBlcnMgaW4gaW5pdGlhbCBjb25kaXRpb24gYWxsb3cgZXM2IGNvZGVcbiAgICAvLyAgICB0byBjby1leGlzdCB3aXRoIGVzNS5cbiAgICAvLyAyLiBSZXBsYWNlIGBmb3Igb2ZgIHdpdGggZXM1IGNvbXBsaWFudCBpdGVyYXRpb24gdXNpbmcgYGZvcmAuXG4gICAgLy8gICAgQmFzaWNhbGx5LCB0YWtlOlxuICAgIC8vXG4gICAgLy8gICAgYGBganNcbiAgICAvLyAgICBmb3IgKGkgb2YgYS5lbnRyaWVzKCkpXG4gICAgLy8gICAgICBpZiAoIWIuaGFzKGlbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgYGBgXG4gICAgLy9cbiAgICAvLyAgICAuLi4gYW5kIGNvbnZlcnQgdG86XG4gICAgLy9cbiAgICAvLyAgICBgYGBqc1xuICAgIC8vICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgLy8gICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSlcbiAgICAvLyAgICAgIGlmICghYi5oYXMoaS52YWx1ZVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICBgYGBcbiAgICAvL1xuICAgIC8vICAgICoqTm90ZSoqOiBgaWAgYWNjZXNzIHN3aXRjaGVzIHRvIGBpLnZhbHVlYC5cblxuXG4gICAgdmFyIGl0O1xuXG4gICAgaWYgKGhhc01hcCAmJiBhIGluc3RhbmNlb2YgTWFwICYmIGIgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcblxuICAgICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSkge1xuICAgICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG5cbiAgICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgaWYgKCFlcXVhbChpLnZhbHVlWzFdLCBiLmdldChpLnZhbHVlWzBdKSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhhc1NldCAmJiBhIGluc3RhbmNlb2YgU2V0ICYmIGIgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcblxuICAgICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSkge1xuICAgICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gRU5EOiBNb2RpZmljYXRpb25zXG5cblxuICAgIGlmIChoYXNBcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGIpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChhLmNvbnN0cnVjdG9yID09PSBSZWdFeHApIHJldHVybiBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncztcbiAgICBpZiAoYS52YWx1ZU9mICE9PSBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YpIHJldHVybiBhLnZhbHVlT2YoKSA9PT0gYi52YWx1ZU9mKCk7XG4gICAgaWYgKGEudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHJldHVybiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKTtcbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBFTkQ6IGZhc3QtZGVlcC1lcXVhbFxuICAgIC8vIFNUQVJUOiByZWFjdC1mYXN0LWNvbXBhcmVcbiAgICAvLyBjdXN0b20gaGFuZGxpbmcgZm9yIERPTSBlbGVtZW50c1xuXG5cbiAgICBpZiAoaGFzRWxlbWVudFR5cGUgJiYgYSBpbnN0YW5jZW9mIEVsZW1lbnQpIHJldHVybiBmYWxzZTsgLy8gY3VzdG9tIGhhbmRsaW5nIGZvciBSZWFjdC9QcmVhY3RcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgaWYgKChrZXlzW2ldID09PSAnX293bmVyJyB8fCBrZXlzW2ldID09PSAnX192JyB8fCBrZXlzW2ldID09PSAnX19vJykgJiYgYS4kJHR5cGVvZikge1xuICAgICAgICAvLyBSZWFjdC1zcGVjaWZpYzogYXZvaWQgdHJhdmVyc2luZyBSZWFjdCBlbGVtZW50cycgX293bmVyXG4gICAgICAgIC8vIFByZWFjdC1zcGVjaWZpYzogYXZvaWQgdHJhdmVyc2luZyBQcmVhY3QgZWxlbWVudHMnIF9fdiBhbmQgX19vXG4gICAgICAgIC8vICAgIF9fdiA9ICRfb3JpZ2luYWwgLyAkX3Zub2RlXG4gICAgICAgIC8vICAgIF9fbyA9ICRfb3duZXJcbiAgICAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBjb250YWluIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIGFyZSBub3QgbmVlZGVkIHdoZW5cbiAgICAgICAgLy8gY29tcGFyaW5nIHRoZSBhY3R1YWwgZWxlbWVudHMgKGFuZCBub3QgdGhlaXIgb3duZXJzKVxuICAgICAgICAvLyAuJCR0eXBlb2YgYW5kIC5fc3RvcmUgb24ganVzdCByZWFzb25hYmxlIG1hcmtlcnMgb2YgZWxlbWVudHNcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGFsbCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBiZSB0cmF2ZXJzZWQgYXMgdXN1YWxcblxuXG4gICAgICBpZiAoIWVxdWFsKGFba2V5c1tpXV0sIGJba2V5c1tpXV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBFTkQ6IHJlYWN0LWZhc3QtY29tcGFyZVxuICAgIC8vIFNUQVJUOiBmYXN0LWRlZXAtZXF1YWxcblxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufSAvLyBlbmQgZmFzdC1kZWVwLWVxdWFsXG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXF1YWwoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvci5tZXNzYWdlIHx8ICcnKS5tYXRjaCgvc3RhY2t8cmVjdXJzaW9uL2kpKSB7XG4gICAgICAvLyB3YXJuIG9uIGNpcmN1bGFyIHJlZmVyZW5jZXMsIGRvbid0IGNyYXNoXG4gICAgICAvLyBicm93c2VycyBnaXZlIHRoaXMgZGlmZmVyZW50IGVycm9ycyBuYW1lIGFuZCBtZXNzYWdlczpcbiAgICAgIC8vIGNocm9tZS9zYWZhcmk6IFwiUmFuZ2VFcnJvclwiLCBcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCJcbiAgICAgIC8vIGZpcmVmb3g6IFwiSW50ZXJuYWxFcnJvclwiLCB0b28gbXVjaCByZWN1cnNpb25cIlxuICAgICAgLy8gZWRnZTogXCJFcnJvclwiLCBcIk91dCBvZiBzdGFjayBzcGFjZVwiXG4gICAgICBjb25zb2xlLndhcm4oJ3JlYWN0LWZhc3QtY29tcGFyZSBjYW5ub3QgaGFuZGxlIGNpcmN1bGFyIHJlZnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIHNvbWUgb3RoZXIgZXJyb3IuIHdlIHNob3VsZCBkZWZpbml0ZWx5IGtub3cgYWJvdXQgdGhlc2VcblxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2993\n")},9084:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n "vU": function() { return /* binding */ defineMessages; }\n});\n\n// UNUSED EXPORTS: FormattedDate, FormattedDateParts, FormattedDateTimeRange, FormattedDisplayName, FormattedList, FormattedListParts, FormattedMessage, FormattedNumber, FormattedNumberParts, FormattedPlural, FormattedRelativeTime, FormattedTime, FormattedTimeParts, IntlContext, IntlProvider, InvalidConfigError, MessageFormatError, MissingDataError, MissingTranslationError, RawIntlProvider, ReactIntlError, ReactIntlErrorCode, UnsupportedFormatterError, createIntl, createIntlCache, defineMessage, injectIntl, useIntl\n\n// EXTERNAL MODULE: ./node_modules/tslib/tslib.es6.js\nvar tslib_es6 = __webpack_require__(9900);\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(7294);\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/src/components/useIntl.js\nvar components_useIntl = __webpack_require__(9785);\n;// CONCATENATED MODULE: ./node_modules/react-intl/lib/src/components/createFormattedComponent.js\n\n\n\nvar DisplayName;\n\n(function (DisplayName) {\n DisplayName["formatDate"] = "FormattedDate";\n DisplayName["formatTime"] = "FormattedTime";\n DisplayName["formatNumber"] = "FormattedNumber";\n DisplayName["formatList"] = "FormattedList"; // Note that this DisplayName is the locale display name, not to be confused with\n // the name of the enum, which is for React component display name in dev tools.\n\n DisplayName["formatDisplayName"] = "FormattedDisplayName";\n})(DisplayName || (DisplayName = {}));\n\nvar DisplayNameParts;\n\n(function (DisplayNameParts) {\n DisplayNameParts["formatDate"] = "FormattedDateParts";\n DisplayNameParts["formatTime"] = "FormattedTimeParts";\n DisplayNameParts["formatNumber"] = "FormattedNumberParts";\n DisplayNameParts["formatList"] = "FormattedListParts";\n})(DisplayNameParts || (DisplayNameParts = {}));\n\nvar FormattedNumberParts = function FormattedNumberParts(props) {\n var intl = (0,components_useIntl/* default */.Z)();\n\n var value = props.value,\n children = props.children,\n formatProps = (0,tslib_es6/* __rest */._T)(props, ["value", "children"]);\n\n return children(intl.formatNumberToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = \'FormattedNumberParts\';\nvar FormattedListParts = function FormattedListParts(props) {\n var intl = useIntl();\n\n var value = props.value,\n children = props.children,\n formatProps = __rest(props, ["value", "children"]);\n\n return children(intl.formatListToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = \'FormattedNumberParts\';\nfunction createFormattedDateTimePartsComponent(name) {\n var ComponentParts = function ComponentParts(props) {\n var intl = (0,components_useIntl/* default */.Z)();\n\n var value = props.value,\n children = props.children,\n formatProps = (0,tslib_es6/* __rest */._T)(props, ["value", "children"]);\n\n var date = typeof value === \'string\' ? new Date(value || 0) : value;\n var formattedParts = name === \'formatDate\' ? intl.formatDateToParts(date, formatProps) : intl.formatTimeToParts(date, formatProps);\n return children(formattedParts);\n };\n\n ComponentParts.displayName = DisplayNameParts[name];\n return ComponentParts;\n}\nfunction createFormattedComponent(name) {\n var Component = function Component(props) {\n var intl = (0,components_useIntl/* default */.Z)();\n\n var value = props.value,\n children = props.children,\n formatProps = (0,tslib_es6/* __rest */._T)(props // TODO: fix TS type definition for localeMatcher upstream\n , ["value", "children"]); // TODO: fix TS type definition for localeMatcher upstream\n\n\n var formattedValue = intl[name](value, formatProps);\n\n if (typeof children === \'function\') {\n return children(formattedValue);\n }\n\n var Text = intl.textComponent || react.Fragment;\n return react.createElement(Text, null, formattedValue);\n };\n\n Component.displayName = DisplayName[name];\n return Component;\n}\n;// CONCATENATED MODULE: ./node_modules/react-intl/lib/index.js\n\n\nfunction defineMessages(msgs) {\n return msgs;\n}\nfunction defineMessage(msg) {\n return msg;\n}\n\n\n // IMPORTANT: Explicit here to prevent api-extractor from outputing `import(\'./src/types\').CustomFormatConfig`\n\nvar FormattedDate = createFormattedComponent(\'formatDate\');\nvar FormattedTime = createFormattedComponent(\'formatTime\');\nvar FormattedNumber = createFormattedComponent(\'formatNumber\');\nvar FormattedList = createFormattedComponent(\'formatList\');\nvar FormattedDisplayName = createFormattedComponent(\'formatDisplayName\');\nvar FormattedDateParts = createFormattedDateTimePartsComponent(\'formatDate\');\nvar FormattedTimeParts = createFormattedDateTimePartsComponent(\'formatTime\');\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9zcmMvY29tcG9uZW50cy9jcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQuanM/N2E1MiIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9pbmRleC5qcz81M2ZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUErQjtBQUNBO0FBQ0M7QUFDaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7O0FBRUE7QUFDQSxDQUFDLGtDQUFrQzs7QUFFbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsNENBQTRDOztBQUV0QztBQUNQLGFBQWEscUNBQU87O0FBRXBCO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQU07O0FBRTFCO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxlQUFlLHFDQUFPOztBQUV0QjtBQUNBO0FBQ0Esc0JBQXNCLDRCQUFNOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsZUFBZSxxQ0FBTzs7QUFFdEI7QUFDQTtBQUNBLHNCQUFzQiw0QkFBTTtBQUM1Qiw2QkFBNkI7OztBQUc3Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLGNBQWM7QUFDbkQsV0FBVyxtQkFBbUI7QUFDOUI7O0FBRUE7QUFDQTtBQUNBLEM7O0FDbEY0SDtBQUNxRztBQUMxTjtBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDeUg7QUFDM0Q7QUFDa0I7O0FBRXpFLG9CQUFvQix3QkFBd0I7QUFDNUMsb0JBQW9CLHdCQUF3QjtBQUM1QyxzQkFBc0Isd0JBQXdCO0FBQzlDLG9CQUFvQix3QkFBd0I7QUFDNUMsMkJBQTJCLHdCQUF3QjtBQUNuRCx5QkFBeUIscUNBQXFDO0FBQzlELHlCQUF5QixxQ0FBcUM7QUFDZ0M7QUFDeEI7QUFDUjtBQUNFIiwiZmlsZSI6IjkwODQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VJbnRsIGZyb20gJy4vdXNlSW50bCc7XG52YXIgRGlzcGxheU5hbWU7XG5cbihmdW5jdGlvbiAoRGlzcGxheU5hbWUpIHtcbiAgRGlzcGxheU5hbWVbXCJmb3JtYXREYXRlXCJdID0gXCJGb3JtYXR0ZWREYXRlXCI7XG4gIERpc3BsYXlOYW1lW1wiZm9ybWF0VGltZVwiXSA9IFwiRm9ybWF0dGVkVGltZVwiO1xuICBEaXNwbGF5TmFtZVtcImZvcm1hdE51bWJlclwiXSA9IFwiRm9ybWF0dGVkTnVtYmVyXCI7XG4gIERpc3BsYXlOYW1lW1wiZm9ybWF0TGlzdFwiXSA9IFwiRm9ybWF0dGVkTGlzdFwiOyAvLyBOb3RlIHRoYXQgdGhpcyBEaXNwbGF5TmFtZSBpcyB0aGUgbG9jYWxlIGRpc3BsYXkgbmFtZSwgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGhcbiAgLy8gdGhlIG5hbWUgb2YgdGhlIGVudW0sIHdoaWNoIGlzIGZvciBSZWFjdCBjb21wb25lbnQgZGlzcGxheSBuYW1lIGluIGRldiB0b29scy5cblxuICBEaXNwbGF5TmFtZVtcImZvcm1hdERpc3BsYXlOYW1lXCJdID0gXCJGb3JtYXR0ZWREaXNwbGF5TmFtZVwiO1xufSkoRGlzcGxheU5hbWUgfHwgKERpc3BsYXlOYW1lID0ge30pKTtcblxudmFyIERpc3BsYXlOYW1lUGFydHM7XG5cbihmdW5jdGlvbiAoRGlzcGxheU5hbWVQYXJ0cykge1xuICBEaXNwbGF5TmFtZVBhcnRzW1wiZm9ybWF0RGF0ZVwiXSA9IFwiRm9ybWF0dGVkRGF0ZVBhcnRzXCI7XG4gIERpc3BsYXlOYW1lUGFydHNbXCJmb3JtYXRUaW1lXCJdID0gXCJGb3JtYXR0ZWRUaW1lUGFydHNcIjtcbiAgRGlzcGxheU5hbWVQYXJ0c1tcImZvcm1hdE51bWJlclwiXSA9IFwiRm9ybWF0dGVkTnVtYmVyUGFydHNcIjtcbiAgRGlzcGxheU5hbWVQYXJ0c1tcImZvcm1hdExpc3RcIl0gPSBcIkZvcm1hdHRlZExpc3RQYXJ0c1wiO1xufSkoRGlzcGxheU5hbWVQYXJ0cyB8fCAoRGlzcGxheU5hbWVQYXJ0cyA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgRm9ybWF0dGVkTnVtYmVyUGFydHMgPSBmdW5jdGlvbiBGb3JtYXR0ZWROdW1iZXJQYXJ0cyhwcm9wcykge1xuICB2YXIgaW50bCA9IHVzZUludGwoKTtcblxuICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBmb3JtYXRQcm9wcyA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiXSk7XG5cbiAgcmV0dXJuIGNoaWxkcmVuKGludGwuZm9ybWF0TnVtYmVyVG9QYXJ0cyh2YWx1ZSwgZm9ybWF0UHJvcHMpKTtcbn07XG5Gb3JtYXR0ZWROdW1iZXJQYXJ0cy5kaXNwbGF5TmFtZSA9ICdGb3JtYXR0ZWROdW1iZXJQYXJ0cyc7XG5leHBvcnQgdmFyIEZvcm1hdHRlZExpc3RQYXJ0cyA9IGZ1bmN0aW9uIEZvcm1hdHRlZExpc3RQYXJ0cyhwcm9wcykge1xuICB2YXIgaW50bCA9IHVzZUludGwoKTtcblxuICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBmb3JtYXRQcm9wcyA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiXSk7XG5cbiAgcmV0dXJuIGNoaWxkcmVuKGludGwuZm9ybWF0TGlzdFRvUGFydHModmFsdWUsIGZvcm1hdFByb3BzKSk7XG59O1xuRm9ybWF0dGVkTnVtYmVyUGFydHMuZGlzcGxheU5hbWUgPSAnRm9ybWF0dGVkTnVtYmVyUGFydHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlZERhdGVUaW1lUGFydHNDb21wb25lbnQobmFtZSkge1xuICB2YXIgQ29tcG9uZW50UGFydHMgPSBmdW5jdGlvbiBDb21wb25lbnRQYXJ0cyhwcm9wcykge1xuICAgIHZhciBpbnRsID0gdXNlSW50bCgpO1xuXG4gICAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIGZvcm1hdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImNoaWxkcmVuXCJdKTtcblxuICAgIHZhciBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlIHx8IDApIDogdmFsdWU7XG4gICAgdmFyIGZvcm1hdHRlZFBhcnRzID0gbmFtZSA9PT0gJ2Zvcm1hdERhdGUnID8gaW50bC5mb3JtYXREYXRlVG9QYXJ0cyhkYXRlLCBmb3JtYXRQcm9wcykgOiBpbnRsLmZvcm1hdFRpbWVUb1BhcnRzKGRhdGUsIGZvcm1hdFByb3BzKTtcbiAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkUGFydHMpO1xuICB9O1xuXG4gIENvbXBvbmVudFBhcnRzLmRpc3BsYXlOYW1lID0gRGlzcGxheU5hbWVQYXJ0c1tuYW1lXTtcbiAgcmV0dXJuIENvbXBvbmVudFBhcnRzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudChuYW1lKSB7XG4gIHZhciBDb21wb25lbnQgPSBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICB2YXIgaW50bCA9IHVzZUludGwoKTtcblxuICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBmb3JtYXRQcm9wcyA9IF9fcmVzdChwcm9wcyAvLyBUT0RPOiBmaXggVFMgdHlwZSBkZWZpbml0aW9uIGZvciBsb2NhbGVNYXRjaGVyIHVwc3RyZWFtXG4gICAgLCBbXCJ2YWx1ZVwiLCBcImNoaWxkcmVuXCJdKTsgLy8gVE9ETzogZml4IFRTIHR5cGUgZGVmaW5pdGlvbiBmb3IgbG9jYWxlTWF0Y2hlciB1cHN0cmVhbVxuXG5cbiAgICB2YXIgZm9ybWF0dGVkVmFsdWUgPSBpbnRsW25hbWVdKHZhbHVlLCBmb3JtYXRQcm9wcyk7XG5cbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkVmFsdWUpO1xuICAgIH1cblxuICAgIHZhciBUZXh0ID0gaW50bC50ZXh0Q29tcG9uZW50IHx8IFJlYWN0LkZyYWdtZW50O1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIG51bGwsIGZvcm1hdHRlZFZhbHVlKTtcbiAgfTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBEaXNwbGF5TmFtZVtuYW1lXTtcbiAgcmV0dXJuIENvbXBvbmVudDtcbn0iLCJpbXBvcnQgeyBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQsIGNyZWF0ZUZvcm1hdHRlZERhdGVUaW1lUGFydHNDb21wb25lbnQgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL2NyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCc7XG5leHBvcnQgeyBjcmVhdGVJbnRsQ2FjaGUsIFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IsIEludmFsaWRDb25maWdFcnJvciwgTWlzc2luZ0RhdGFFcnJvciwgTWVzc2FnZUZvcm1hdEVycm9yLCBNaXNzaW5nVHJhbnNsYXRpb25FcnJvciwgSW50bEVycm9yQ29kZSBhcyBSZWFjdEludGxFcnJvckNvZGUsIEludGxFcnJvciBhcyBSZWFjdEludGxFcnJvciB9IGZyb20gJ0Bmb3JtYXRqcy9pbnRsJztcbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVNZXNzYWdlcyhtc2dzKSB7XG4gIHJldHVybiBtc2dzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZU1lc3NhZ2UobXNnKSB7XG4gIHJldHVybiBtc2c7XG59XG5leHBvcnQgeyBkZWZhdWx0IGFzIGluamVjdEludGwsIFByb3ZpZGVyIGFzIFJhd0ludGxQcm92aWRlciwgQ29udGV4dCBhcyBJbnRsQ29udGV4dCB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvaW5qZWN0SW50bCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUludGwgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL3VzZUludGwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbnRsUHJvdmlkZXIsIGNyZWF0ZUludGwgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL3Byb3ZpZGVyJzsgLy8gSU1QT1JUQU5UOiBFeHBsaWNpdCBoZXJlIHRvIHByZXZlbnQgYXBpLWV4dHJhY3RvciBmcm9tIG91dHB1dGluZyBgaW1wb3J0KCcuL3NyYy90eXBlcycpLkN1c3RvbUZvcm1hdENvbmZpZ2BcblxuZXhwb3J0IHZhciBGb3JtYXR0ZWREYXRlID0gY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50KCdmb3JtYXREYXRlJyk7XG5leHBvcnQgdmFyIEZvcm1hdHRlZFRpbWUgPSBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQoJ2Zvcm1hdFRpbWUnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkTnVtYmVyID0gY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50KCdmb3JtYXROdW1iZXInKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkTGlzdCA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0TGlzdCcpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWREaXNwbGF5TmFtZSA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0RGlzcGxheU5hbWUnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkRGF0ZVBhcnRzID0gY3JlYXRlRm9ybWF0dGVkRGF0ZVRpbWVQYXJ0c0NvbXBvbmVudCgnZm9ybWF0RGF0ZScpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWRUaW1lUGFydHMgPSBjcmVhdGVGb3JtYXR0ZWREYXRlVGltZVBhcnRzQ29tcG9uZW50KCdmb3JtYXRUaW1lJyk7XG5leHBvcnQgeyBGb3JtYXR0ZWROdW1iZXJQYXJ0cywgRm9ybWF0dGVkTGlzdFBhcnRzIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9jcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL3JlbGF0aXZlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9ybWF0dGVkUGx1cmFsIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9wbHVyYWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9tZXNzYWdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9ybWF0dGVkRGF0ZVRpbWVSYW5nZSB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvZGF0ZVRpbWVSYW5nZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9084\n')},5333:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "zt": function() { return /* binding */ Provider; },\n/* harmony export */ "_y": function() { return /* binding */ Context; }\n/* harmony export */ });\n/* unused harmony export default */\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5706);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || \'Component\';\n} // TODO: We should provide initial value here\n\n\nvar IntlContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);\nvar IntlConsumer = IntlContext.Consumer,\n IntlProvider = IntlContext.Provider;\nvar Provider = IntlProvider;\nvar Context = IntlContext;\nfunction injectIntl(WrappedComponent, options) {\n var _a = options || {},\n _b = _a.intlPropName,\n intlPropName = _b === void 0 ? \'intl\' : _b,\n _c = _a.forwardRef,\n forwardRef = _c === void 0 ? false : _c,\n _d = _a.enforceContext,\n enforceContext = _d === void 0 ? true : _d;\n\n var WithIntl = function WithIntl(props) {\n return React.createElement(IntlConsumer, null, function (intl) {\n var _a;\n\n if (enforceContext) {\n invariantIntlContext(intl);\n }\n\n var intlProp = (_a = {}, _a[intlPropName] = intl, _a);\n return React.createElement(WrappedComponent, __assign({}, props, intlProp, {\n ref: forwardRef ? props.forwardedRef : null\n }));\n });\n };\n\n WithIntl.displayName = "injectIntl(" + getDisplayName(WrappedComponent) + ")";\n WithIntl.WrappedComponent = WrappedComponent;\n\n if (forwardRef) {\n return hoistNonReactStatics(React.forwardRef(function (props, ref) {\n return React.createElement(WithIntl, __assign({}, props, {\n forwardedRef: ref\n }));\n }), WrappedComponent);\n }\n\n return hoistNonReactStatics(WithIntl, WrappedComponent);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9zcmMvY29tcG9uZW50cy9pbmplY3RJbnRsLmpzP2RlYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBaUM7QUFDRjtBQUM0QjtBQUNYOztBQUVoRDtBQUNBO0FBQ0EsQ0FBQzs7O0FBR0Qsa0JBQWtCLGdEQUFtQjtBQUNyQztBQUNBO0FBQ087QUFDQTtBQUNRO0FBQ2Ysd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUE2QjtBQUM3Qiw4REFBOEQ7QUFDOUQ7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNEQUFzRDtBQUN0RDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQSIsImZpbGUiOiI1MzMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBob2lzdE5vblJlYWN0U3RhdGljcyBmcm9tICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnRJbnRsQ29udGV4dCB9IGZyb20gJy4uL3V0aWxzJztcblxuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoQ29tcG9uZW50KSB7XG4gIHJldHVybiBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG59IC8vIFRPRE86IFdlIHNob3VsZCBwcm92aWRlIGluaXRpYWwgdmFsdWUgaGVyZVxuXG5cbnZhciBJbnRsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG52YXIgSW50bENvbnN1bWVyID0gSW50bENvbnRleHQuQ29uc3VtZXIsXG4gICAgSW50bFByb3ZpZGVyID0gSW50bENvbnRleHQuUHJvdmlkZXI7XG5leHBvcnQgdmFyIFByb3ZpZGVyID0gSW50bFByb3ZpZGVyO1xuZXhwb3J0IHZhciBDb250ZXh0ID0gSW50bENvbnRleHQ7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbmplY3RJbnRsKFdyYXBwZWRDb21wb25lbnQsIG9wdGlvbnMpIHtcbiAgdmFyIF9hID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9iID0gX2EuaW50bFByb3BOYW1lLFxuICAgICAgaW50bFByb3BOYW1lID0gX2IgPT09IHZvaWQgMCA/ICdpbnRsJyA6IF9iLFxuICAgICAgX2MgPSBfYS5mb3J3YXJkUmVmLFxuICAgICAgZm9yd2FyZFJlZiA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLFxuICAgICAgX2QgPSBfYS5lbmZvcmNlQ29udGV4dCxcbiAgICAgIGVuZm9yY2VDb250ZXh0ID0gX2QgPT09IHZvaWQgMCA/IHRydWUgOiBfZDtcblxuICB2YXIgV2l0aEludGwgPSBmdW5jdGlvbiBXaXRoSW50bChwcm9wcykge1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEludGxDb25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgaWYgKGVuZm9yY2VDb250ZXh0KSB7XG4gICAgICAgIGludmFyaWFudEludGxDb250ZXh0KGludGwpO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW50bFByb3AgPSAoX2EgPSB7fSwgX2FbaW50bFByb3BOYW1lXSA9IGludGwsIF9hKTtcbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwcm9wcywgaW50bFByb3AsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkUmVmID8gcHJvcHMuZm9yd2FyZGVkUmVmIDogbnVsbFxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xuXG4gIFdpdGhJbnRsLmRpc3BsYXlOYW1lID0gXCJpbmplY3RJbnRsKFwiICsgZ2V0RGlzcGxheU5hbWUoV3JhcHBlZENvbXBvbmVudCkgKyBcIilcIjtcbiAgV2l0aEludGwuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG5cbiAgaWYgKGZvcndhcmRSZWYpIHtcbiAgICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV2l0aEludGwsIF9fYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICBmb3J3YXJkZWRSZWY6IHJlZlxuICAgICAgfSkpO1xuICAgIH0pLCBXcmFwcGVkQ29tcG9uZW50KTtcbiAgfVxuXG4gIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoSW50bCwgV3JhcHBlZENvbXBvbmVudCk7XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5333\n')},9785:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Z": function() { return /* binding */ useIntl; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var _injectIntl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5333);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5861);\n\n\n\nfunction useIntl() {\n var intl = react__WEBPACK_IMPORTED_MODULE_0__.useContext(_injectIntl__WEBPACK_IMPORTED_MODULE_1__/* .Context */ ._y);\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__/* .invariantIntlContext */ .lq)(intl);\n return intl;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9zcmMvY29tcG9uZW50cy91c2VJbnRsLmpzP2Y4NTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStCO0FBQ1E7QUFDUztBQUNqQztBQUNmLGFBQWEsNkNBQWdCLENBQUMsMERBQU87QUFDckMsRUFBRSxzRUFBb0I7QUFDdEI7QUFDQSIsImZpbGUiOiI5Nzg1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vaW5qZWN0SW50bCc7XG5pbXBvcnQgeyBpbnZhcmlhbnRJbnRsQ29udGV4dCB9IGZyb20gJy4uL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUludGwoKSB7XG4gIHZhciBpbnRsID0gUmVhY3QudXNlQ29udGV4dChDb250ZXh0KTtcbiAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gIHJldHVybiBpbnRsO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9785\n')},5861:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "lq": function() { return /* binding */ invariantIntlContext; },\n/* harmony export */ "Z0": function() { return /* binding */ DEFAULT_INTL_CONFIG; },\n/* harmony export */ "dt": function() { return /* binding */ assignUniqueKeysToParts; },\n/* harmony export */ "wU": function() { return /* binding */ shallowEqual; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9900);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var _formatjs_ecma402_abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5477);\n/* harmony import */ var _formatjs_intl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7143);\n\n\n\n\nfunction invariantIntlContext(intl) {\n (0,_formatjs_ecma402_abstract__WEBPACK_IMPORTED_MODULE_1__/* .invariant */ .kG)(intl, \'[React Intl] Could not find required `intl` object. \' + \'<IntlProvider> needs to exist in the component ancestry.\');\n}\nvar DEFAULT_INTL_CONFIG = (0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)((0,tslib__WEBPACK_IMPORTED_MODULE_2__/* .__assign */ .pi)({}, _formatjs_intl__WEBPACK_IMPORTED_MODULE_3__/* .DEFAULT_INTL_CONFIG */ .Z0), {\n textComponent: react__WEBPACK_IMPORTED_MODULE_0__.Fragment\n});\n/**\n * Takes a `formatXMLElementFn`, and composes it in function, which passes\n * argument `parts` through, assigning unique key to each part, to prevent\n * "Each child in a list should have a unique "key"" React error.\n * @param formatXMLElementFn\n */\n\nfunction assignUniqueKeysToParts(formatXMLElementFn) {\n return function (parts) {\n // eslint-disable-next-line prefer-rest-params\n return formatXMLElementFn(react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(parts));\n };\n}\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n\n return true;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9zcmMvdXRpbHMuanM/OWQyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWlDO0FBQ0Y7QUFDd0I7QUFDMEI7QUFDMUU7QUFDUCxFQUFFLCtFQUFTO0FBQ1g7QUFDTywwQkFBMEIseURBQVEsQ0FBQyx5REFBUSxHQUFHLEVBQUUseUVBQXdCO0FBQy9FLGlCQUFpQiwyQ0FBYztBQUMvQixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLDhCQUE4QixtREFBc0I7QUFDcEQ7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiNTg2MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICdAZm9ybWF0anMvZWNtYTQwMi1hYnN0cmFjdCc7XG5pbXBvcnQgeyBERUZBVUxUX0lOVExfQ09ORklHIGFzIENPUkVfREVGQVVMVF9JTlRMX0NPTkZJRyB9IGZyb20gJ0Bmb3JtYXRqcy9pbnRsJztcbmV4cG9ydCBmdW5jdGlvbiBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKSB7XG4gIGludmFyaWFudChpbnRsLCAnW1JlYWN0IEludGxdIENvdWxkIG5vdCBmaW5kIHJlcXVpcmVkIGBpbnRsYCBvYmplY3QuICcgKyAnPEludGxQcm92aWRlcj4gbmVlZHMgdG8gZXhpc3QgaW4gdGhlIGNvbXBvbmVudCBhbmNlc3RyeS4nKTtcbn1cbmV4cG9ydCB2YXIgREVGQVVMVF9JTlRMX0NPTkZJRyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBDT1JFX0RFRkFVTFRfSU5UTF9DT05GSUcpLCB7XG4gIHRleHRDb21wb25lbnQ6IFJlYWN0LkZyYWdtZW50XG59KTtcbi8qKlxuICogVGFrZXMgYSBgZm9ybWF0WE1MRWxlbWVudEZuYCwgYW5kIGNvbXBvc2VzIGl0IGluIGZ1bmN0aW9uLCB3aGljaCBwYXNzZXNcbiAqIGFyZ3VtZW50IGBwYXJ0c2AgdGhyb3VnaCwgYXNzaWduaW5nIHVuaXF1ZSBrZXkgdG8gZWFjaCBwYXJ0LCB0byBwcmV2ZW50XG4gKiBcIkVhY2ggY2hpbGQgaW4gYSBsaXN0IHNob3VsZCBoYXZlIGEgdW5pcXVlIFwia2V5XCJcIiBSZWFjdCBlcnJvci5cbiAqIEBwYXJhbSBmb3JtYXRYTUxFbGVtZW50Rm5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduVW5pcXVlS2V5c1RvUGFydHMoZm9ybWF0WE1MRWxlbWVudEZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocGFydHMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgcmV0dXJuIGZvcm1hdFhNTEVsZW1lbnRGbihSZWFjdC5DaGlsZHJlbi50b0FycmF5KHBhcnRzKSk7XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKG9iakEgPT09IG9iakIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghb2JqQSB8fCAhb2JqQikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBhS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIgYktleXMgPSBPYmplY3Qua2V5cyhvYmpCKTtcbiAgdmFyIGxlbiA9IGFLZXlzLmxlbmd0aDtcblxuICBpZiAoYktleXMubGVuZ3RoICE9PSBsZW4pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGFLZXlzW2ldO1xuXG4gICAgaWYgKG9iakFba2V5XSAhPT0gb2JqQltrZXldIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5861\n')},4839:function(module,__unused_webpack_exports,__webpack_require__){"use strict";eval("\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = __webpack_require__(7294);\n\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1zaWRlLWVmZmVjdC9saWIvaW5kZXguanM/YjBkYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLElBQU87O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiI0ODM5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfaW50ZXJvcERlZmF1bHQoZXgpIHtcbiAgcmV0dXJuIGV4ICYmIHR5cGVvZiBleCA9PT0gJ29iamVjdCcgJiYgJ2RlZmF1bHQnIGluIGV4ID8gZXhbJ2RlZmF1bHQnXSA6IGV4O1xufVxuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgUmVhY3RfX2RlZmF1bHQgPSBfaW50ZXJvcERlZmF1bHQoUmVhY3QpO1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufVxuXG52YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxuZnVuY3Rpb24gd2l0aFNpZGVFZmZlY3QocmVkdWNlUHJvcHNUb1N0YXRlLCBoYW5kbGVTdGF0ZUNoYW5nZU9uQ2xpZW50LCBtYXBTdGF0ZU9uU2VydmVyKSB7XG4gIGlmICh0eXBlb2YgcmVkdWNlUHJvcHNUb1N0YXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCByZWR1Y2VQcm9wc1RvU3RhdGUgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaGFuZGxlU3RhdGVDaGFuZ2VPbkNsaWVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgaGFuZGxlU3RhdGVDaGFuZ2VPbkNsaWVudCB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBtYXBTdGF0ZU9uU2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbWFwU3RhdGVPblNlcnZlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbWFwU3RhdGVPblNlcnZlciB0byBlaXRoZXIgYmUgdW5kZWZpbmVkIG9yIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShXcmFwcGVkQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIFdyYXBwZWRDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIGlmICh0eXBlb2YgV3JhcHBlZENvbXBvbmVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBXcmFwcGVkQ29tcG9uZW50IHRvIGJlIGEgUmVhY3QgY29tcG9uZW50LicpO1xuICAgIH1cblxuICAgIHZhciBtb3VudGVkSW5zdGFuY2VzID0gW107XG4gICAgdmFyIHN0YXRlO1xuXG4gICAgZnVuY3Rpb24gZW1pdENoYW5nZSgpIHtcbiAgICAgIHN0YXRlID0gcmVkdWNlUHJvcHNUb1N0YXRlKG1vdW50ZWRJbnN0YW5jZXMubWFwKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UucHJvcHM7XG4gICAgICB9KSk7XG5cbiAgICAgIGlmIChTaWRlRWZmZWN0LmNhblVzZURPTSkge1xuICAgICAgICBoYW5kbGVTdGF0ZUNoYW5nZU9uQ2xpZW50KHN0YXRlKTtcbiAgICAgIH0gZWxzZSBpZiAobWFwU3RhdGVPblNlcnZlcikge1xuICAgICAgICBzdGF0ZSA9IG1hcFN0YXRlT25TZXJ2ZXIoc3RhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTaWRlRWZmZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICAgICAgX2luaGVyaXRzTG9vc2UoU2lkZUVmZmVjdCwgX1B1cmVDb21wb25lbnQpO1xuXG4gICAgICBmdW5jdGlvbiBTaWRlRWZmZWN0KCkge1xuICAgICAgICByZXR1cm4gX1B1cmVDb21wb25lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgfSAvLyBUcnkgdG8gdXNlIGRpc3BsYXlOYW1lIG9mIHdyYXBwZWQgY29tcG9uZW50XG4gICAgICAvLyBFeHBvc2UgY2FuVXNlRE9NIHNvIHRlc3RzIGNhbiBtb25rZXlwYXRjaCBpdFxuXG5cbiAgICAgIFNpZGVFZmZlY3QucGVlayA9IGZ1bmN0aW9uIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH07XG5cbiAgICAgIFNpZGVFZmZlY3QucmV3aW5kID0gZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgICAgICBpZiAoU2lkZUVmZmVjdC5jYW5Vc2VET00pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtYXkgb25seSBjYWxsIHJld2luZCgpIG9uIHRoZSBzZXJ2ZXIuIENhbGwgcGVlaygpIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjb3JkZWRTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBzdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgbW91bnRlZEluc3RhbmNlcyA9IFtdO1xuICAgICAgICByZXR1cm4gcmVjb3JkZWRTdGF0ZTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBfcHJvdG8gPSBTaWRlRWZmZWN0LnByb3RvdHlwZTtcblxuICAgICAgX3Byb3RvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgPSBmdW5jdGlvbiBVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzLnB1c2godGhpcyk7XG4gICAgICAgIGVtaXRDaGFuZ2UoKTtcbiAgICAgIH07XG5cbiAgICAgIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIGVtaXRDaGFuZ2UoKTtcbiAgICAgIH07XG5cbiAgICAgIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICB2YXIgaW5kZXggPSBtb3VudGVkSW5zdGFuY2VzLmluZGV4T2YodGhpcyk7XG4gICAgICAgIG1vdW50ZWRJbnN0YW5jZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZW1pdENoYW5nZSgpO1xuICAgICAgfTtcblxuICAgICAgX3Byb3RvLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIHRoaXMucHJvcHMpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIFNpZGVFZmZlY3Q7XG4gICAgfShSZWFjdC5QdXJlQ29tcG9uZW50KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShTaWRlRWZmZWN0LCBcImRpc3BsYXlOYW1lXCIsIFwiU2lkZUVmZmVjdChcIiArIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpICsgXCIpXCIpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KFNpZGVFZmZlY3QsIFwiY2FuVXNlRE9NXCIsIGNhblVzZURPTSk7XG5cbiAgICByZXR1cm4gU2lkZUVmZmVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoU2lkZUVmZmVjdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4839\n")},4734:function(module){"use strict";eval("\n\nmodule.exports = function (string, separator) {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n\n if (separator === '') {\n return [string];\n }\n\n var separatorIndex = string.indexOf(separator);\n\n if (separatorIndex === -1) {\n return [string];\n }\n\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9zcGxpdC1vbi1maXJzdC9pbmRleC5qcz8wMGI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiI0NzM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHJpbmcsIHNlcGFyYXRvcikge1xuICBpZiAoISh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJyAmJiB0eXBlb2Ygc2VwYXJhdG9yID09PSAnc3RyaW5nJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgYXJndW1lbnRzIHRvIGJlIG9mIHR5cGUgYHN0cmluZ2AnKTtcbiAgfVxuXG4gIGlmIChzZXBhcmF0b3IgPT09ICcnKSB7XG4gICAgcmV0dXJuIFtzdHJpbmddO1xuICB9XG5cbiAgdmFyIHNlcGFyYXRvckluZGV4ID0gc3RyaW5nLmluZGV4T2Yoc2VwYXJhdG9yKTtcblxuICBpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIFtzdHJpbmddO1xuICB9XG5cbiAgcmV0dXJuIFtzdHJpbmcuc2xpY2UoMCwgc2VwYXJhdG9ySW5kZXgpLCBzdHJpbmcuc2xpY2Uoc2VwYXJhdG9ySW5kZXggKyBzZXBhcmF0b3IubGVuZ3RoKV07XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4734\n")},8936:function(module){"use strict";eval('\n\nmodule.exports = function (str) {\n return encodeURIComponent(str).replace(/[!\'()*]/g, function (x) {\n return "%".concat(x.charCodeAt(0).toString(16).toUpperCase());\n });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9zdHJpY3QtdXJpLWVuY29kZS9pbmRleC5qcz9jMWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiI4OTM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpKl0vZywgZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4gXCIlXCIuY29uY2F0KHguY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSk7XG4gIH0pO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8936\n')},9900:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "ZT": function() { return /* binding */ __extends; },\n/* harmony export */ "pi": function() { return /* binding */ _assign; },\n/* harmony export */ "_T": function() { return /* binding */ __rest; },\n/* harmony export */ "ev": function() { return /* binding */ __spreadArray; }\n/* harmony export */ });\n/* unused harmony exports __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet */\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nfunction __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nfunction __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\n}\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator["throw"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n "throw": verb(1),\n "return": verb(2)\n }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError("Generator is already executing.");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nvar __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nfunction __exportStar(m, o) {\n for (var p in m) {\n if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nfunction __values(o) {\n var s = typeof Symbol === "function" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === "number") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === "function" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i["return"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || from);\n}\nfunction __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume("next", value);\n }\n\n function reject(value) {\n resume("throw", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nfunction __asyncDelegator(o) {\n var i, p;\n return i = {}, verb("next"), verb("throw", function (e) {\n throw e;\n }), verb("return"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === "return"\n } : f ? f(v) : v;\n } : f;\n }\n}\nfunction __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, "raw", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, "default", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o["default"] = v;\n};\n\nfunction __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nfunction __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");\n if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");\n return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === "m") throw new TypeError("Private method is not writable");\n if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");\n if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");\n return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanM/YjA1NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRStCO0FBQ3hCO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDJIQUEySCxjQUFjO0FBQ3pJO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxpSUFBaUksd0NBQXdDLFFBQVE7QUFDakw7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLDBCQUEwQixzQkFBc0I7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBOztBQUVBLHNDQUFzQyxRQUFRO0FBQzlDLG9EQUFvRCxRQUFRO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCwwRUFBMEUsT0FBTztBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHlHQUF5RztBQUN6RztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiOTkwMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXG52YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgIF9fcHJvdG9fXzogW11cbiAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgZC5fX3Byb3RvX18gPSBiO1xuICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICBmdW5jdGlvbiBfXygpIHtcbiAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgfVxuXG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxudmFyIF9hc3NpZ24gPSBmdW5jdGlvbiBfX2Fzc2lnbigpIHtcbiAgX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5leHBvcnQgeyBfYXNzaWduIGFzIF9fYXNzaWduIH07XG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuICB9XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLFxuICAgICAgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgfVxuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpO1xuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHtcbiAgICBsYWJlbDogMCxcbiAgICBzZW50OiBmdW5jdGlvbiBzZW50KCkge1xuICAgICAgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdO1xuICAgICAgcmV0dXJuIHRbMV07XG4gICAgfSxcbiAgICB0cnlzOiBbXSxcbiAgICBvcHM6IFtdXG4gIH0sXG4gICAgICBmLFxuICAgICAgeSxcbiAgICAgIHQsXG4gICAgICBnO1xuICByZXR1cm4gZyA9IHtcbiAgICBuZXh0OiB2ZXJiKDApLFxuICAgIFwidGhyb3dcIjogdmVyYigxKSxcbiAgICBcInJldHVyblwiOiB2ZXJiKDIpXG4gIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgZztcblxuICBmdW5jdGlvbiB2ZXJiKG4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiBzdGVwKFtuLCB2XSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG5cbiAgICB3aGlsZSAoXykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG5cbiAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0ID0gb3A7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIF8ubGFiZWwrKztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBvcFsxXSxcbiAgICAgICAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBfLmxhYmVsKys7XG4gICAgICAgICAgICB5ID0gb3BbMV07XG4gICAgICAgICAgICBvcCA9IFswXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgb3AgPSBfLm9wcy5wb3AoKTtcblxuICAgICAgICAgICAgXy50cnlzLnBvcCgpO1xuXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkge1xuICAgICAgICAgICAgICBfID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgb3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpIHtcbiAgICAgICAgICAgICAgXy5sYWJlbCA9IG9wWzFdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7XG4gICAgICAgICAgICAgIF8ubGFiZWwgPSB0WzFdO1xuICAgICAgICAgICAgICB0ID0gb3A7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkge1xuICAgICAgICAgICAgICBfLmxhYmVsID0gdFsyXTtcblxuICAgICAgICAgICAgICBfLm9wcy5wdXNoKG9wKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuXG4gICAgICAgICAgICBfLnRyeXMucG9wKCk7XG5cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9wID0gWzYsIGVdO1xuICAgICAgICB5ID0gMDtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGYgPSB0ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsXG4gICAgICBkb25lOiB0cnVlXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gZnVuY3Rpb24gKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gbVtrXTtcbiAgICB9XG4gIH0pO1xufSA6IGZ1bmN0aW9uIChvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59O1xuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkge1xuICAgIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvcixcbiAgICAgIG0gPSBzICYmIG9bc10sXG4gICAgICBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBvICYmIG9baSsrXSxcbiAgICAgICAgZG9uZTogIW9cbiAgICAgIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSxcbiAgICAgIHIsXG4gICAgICBhciA9IFtdLFxuICAgICAgZTtcblxuICB0cnkge1xuICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSB7XG4gICAgICBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlID0ge1xuICAgICAgZXJyb3I6IGVycm9yXG4gICAgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcjtcbn1cbi8qKiBAZGVwcmVjYXRlZCAqL1xuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICB9XG5cbiAgcmV0dXJuIGFyO1xufVxuLyoqIEBkZXByZWNhdGVkICovXG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSB7XG4gICAgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICB9XG5cbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKSB7XG4gICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspIHtcbiAgICAgIHJba10gPSBhW2pdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IGZyb20pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSxcbiAgICAgIGksXG4gICAgICBxID0gW107XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBpO1xuXG4gIGZ1bmN0aW9uIHZlcmIobikge1xuICAgIGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0ZXAoZ1tuXSh2KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2V0dGxlKHFbMF1bM10sIGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0ZXAocikge1xuICAgIHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkge1xuICAgIHJlc3VtZShcIm5leHRcIiwgdmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7XG4gICAgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHtcbiAgICBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgdGhyb3cgZTtcbiAgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgaTtcblxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHtcbiAgICBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gKHAgPSAhcCkgPyB7XG4gICAgICAgIHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLFxuICAgICAgICBkb25lOiBuID09PSBcInJldHVyblwiXG4gICAgICB9IDogZiA/IGYodikgOiB2O1xuICAgIH0gOiBmO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sXG4gICAgICBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBpKTtcblxuICBmdW5jdGlvbiB2ZXJiKG4pIHtcbiAgICBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikge1xuICAgIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgIGRvbmU6IGRcbiAgICAgIH0pO1xuICAgIH0sIHJlamVjdCk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwge1xuICAgICAgdmFsdWU6IHJhd1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvb2tlZC5yYXcgPSByYXc7XG4gIH1cblxuICByZXR1cm4gY29va2VkO1xufVxuO1xuXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IGZ1bmN0aW9uIChvLCB2KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHZcbiAgfSk7XG59IDogZnVuY3Rpb24gKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSB7XG4gICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICB9XG5cbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIG1vZCAmJiBtb2QuX19lc01vZHVsZSA/IG1vZCA6IHtcbiAgICBkZWZhdWx0OiBtb2RcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSksIHZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9900\n')},648:function(module,__unused_webpack_exports,__webpack_require__){eval("var TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classofRaw = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzP2Y1ZGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCLG1CQUFPLENBQUMsSUFBb0M7QUFDeEUsaUJBQWlCLG1CQUFPLENBQUMsSUFBMEI7QUFDbkQsc0JBQXNCLG1CQUFPLENBQUMsSUFBZ0M7O0FBRTlEO0FBQ0E7QUFDQSxnREFBZ0Qsa0JBQWtCLEVBQUU7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxnQkFBZ0I7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI2NDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///648\n")},6135:function(module,__unused_webpack_exports,__webpack_require__){"use strict";eval("\nvar toPrimitive = __webpack_require__(7593);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanM/ODQxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLGtCQUFrQixtQkFBTyxDQUFDLElBQTJCO0FBQ3JELDJCQUEyQixtQkFBTyxDQUFDLElBQXFDO0FBQ3hFLCtCQUErQixtQkFBTyxDQUFDLElBQXlDOztBQUVoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjYxMzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6135\n")},9974:function(module,__unused_webpack_exports,__webpack_require__){eval("var aFunction = __webpack_require__(3099);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanM/MDM2NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyxJQUF5Qjs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiOTk3NC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9974\n")},1246:function(module,__unused_webpack_exports,__webpack_require__){eval("var classof = __webpack_require__(648);\nvar Iterators = __webpack_require__(7497);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzPzM1YTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLEdBQXNCO0FBQzVDLGdCQUFnQixtQkFBTyxDQUFDLElBQXdCO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLElBQWdDOztBQUU5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEyNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1246\n")},7659:function(module,__unused_webpack_exports,__webpack_require__){eval("var wellKnownSymbol = __webpack_require__(5112);\nvar Iterators = __webpack_require__(7497);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanM/ZTk1YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxJQUFnQztBQUM5RCxnQkFBZ0IsbUJBQU8sQ0FBQyxJQUF3Qjs7QUFFaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI3NjU5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7659\n")},408:function(module,__unused_webpack_exports,__webpack_require__){eval("var anObject = __webpack_require__(9670);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar toLength = __webpack_require__(7466);\nvar bind = __webpack_require__(9974);\nvar getIteratorMethod = __webpack_require__(1246);\nvar iteratorClose = __webpack_require__(9212);\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzPzIyNjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLElBQXdCO0FBQy9DLDRCQUE0QixtQkFBTyxDQUFDLElBQXVDO0FBQzNFLGVBQWUsbUJBQU8sQ0FBQyxJQUF3QjtBQUMvQyxXQUFXLG1CQUFPLENBQUMsSUFBb0M7QUFDdkQsd0JBQXdCLG1CQUFPLENBQUMsSUFBa0M7QUFDbEUsb0JBQW9CLG1CQUFPLENBQUMsSUFBNkI7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsZ0JBQWdCO0FBQ3pFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6IjQwOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gKHN0b3BwZWQsIHJlc3VsdCkge1xuICB0aGlzLnN0b3BwZWQgPSBzdG9wcGVkO1xuICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCB1bmJvdW5kRnVuY3Rpb24sIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgdmFyIEFTX0VOVFJJRVMgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuQVNfRU5UUklFUyk7XG4gIHZhciBJU19JVEVSQVRPUiA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19JVEVSQVRPUik7XG4gIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gIHZhciBmbiA9IGJpbmQodW5ib3VuZEZ1bmN0aW9uLCB0aGF0LCAxICsgQVNfRU5UUklFUyArIElOVEVSUlVQVEVEKTtcbiAgdmFyIGl0ZXJhdG9yLCBpdGVyRm4sIGluZGV4LCBsZW5ndGgsIHJlc3VsdCwgbmV4dCwgc3RlcDtcblxuICB2YXIgc3RvcCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICBpZiAoaXRlcmF0b3IpIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gIH07XG5cbiAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICBhbk9iamVjdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZVswXSwgdmFsdWVbMV0sIHN0b3ApIDogZm4odmFsdWVbMF0sIHZhbHVlWzFdKTtcbiAgICB9IHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgfTtcblxuICBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoJ1RhcmdldCBpcyBub3QgaXRlcmFibGUnKTtcbiAgICAvLyBvcHRpbWlzYXRpb24gZm9yIGFycmF5IGl0ZXJhdG9yc1xuICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTtcbiAgfVxuXG4gIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICB3aGlsZSAoIShzdGVwID0gbmV4dC5jYWxsKGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBjYWxsRm4oc3RlcC52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiByZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///408\n")},9212:function(module,__unused_webpack_exports,__webpack_require__){eval("var anObject = __webpack_require__(9670);\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcz8yYTYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxJQUF3Qjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjkyMTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yKSB7XG4gIHZhciByZXR1cm5NZXRob2QgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gIGlmIChyZXR1cm5NZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhbk9iamVjdChyZXR1cm5NZXRob2QuY2FsbChpdGVyYXRvcikpLnZhbHVlO1xuICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9212\n")},7497:function(module){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanM/M2Y4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiI3NDk3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7497\n")},1694:function(module,__unused_webpack_exports,__webpack_require__){eval("var wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanM/MDBlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxJQUFnQzs7QUFFOUQ7QUFDQTs7QUFFQTs7QUFFQSIsImZpbGUiOiIxNjk0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1694\n")},8559:function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("var $ = __webpack_require__(2109);\nvar iterate = __webpack_require__(408);\nvar createProperty = __webpack_require__(6135);\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmZyb20tZW50cmllcy5qcz9jMWY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxJQUFxQjtBQUNyQyxjQUFjLG1CQUFPLENBQUMsR0FBc0I7QUFDNUMscUJBQXFCLG1CQUFPLENBQUMsSUFBOEI7O0FBRTNEO0FBQ0E7QUFDQSxHQUFHLCtCQUErQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRyxtQkFBbUI7QUFDM0I7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiODU1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xuXG4vLyBgT2JqZWN0LmZyb21FbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC1mcm9tLWVudHJpZXNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbUVudHJpZXM6IGZ1bmN0aW9uIGZyb21FbnRyaWVzKGl0ZXJhYmxlKSB7XG4gICAgdmFyIG9iaiA9IHt9O1xuICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShvYmosIGssIHYpO1xuICAgIH0sIHsgQVNfRU5UUklFUzogdHJ1ZSB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8559\n")},2427:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n "Z": function() { return /* binding */ layout; }\n});\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(7294);\n// EXTERNAL MODULE: ./node_modules/gatsby-plugin-intl/index.js\nvar gatsby_plugin_intl = __webpack_require__(9703);\n// EXTERNAL MODULE: ./node_modules/tslib/tslib.es6.js\nvar tslib_es6 = __webpack_require__(9900);\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/src/components/injectIntl.js\nvar injectIntl = __webpack_require__(5333);\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/src/utils.js\nvar utils = __webpack_require__(5861);\n// EXTERNAL MODULE: ./node_modules/@formatjs/ecma402-abstract/lib/utils.js\nvar lib_utils = __webpack_require__(5477);\n// EXTERNAL MODULE: ./node_modules/intl-messageformat/lib/src/core.js\nvar core = __webpack_require__(1482);\n// EXTERNAL MODULE: ./node_modules/@formatjs/intl/lib/src/error.js\nvar error = __webpack_require__(4889);\n// EXTERNAL MODULE: ./node_modules/@formatjs/icu-messageformat-parser/lib/index.js + 7 modules\nvar lib = __webpack_require__(1895);\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/message.js\n\n\n\n\n\n\nfunction setTimeZoneInOptions(opts, timeZone) {\n return Object.keys(opts).reduce(function (all, k) {\n all[k] = (0,tslib_es6/* __assign */.pi)({\n timeZone: timeZone\n }, opts[k]);\n return all;\n }, {});\n}\n\nfunction deepMergeOptions(opts1, opts2) {\n var keys = Object.keys((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, opts1), opts2));\n return keys.reduce(function (all, k) {\n all[k] = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, opts1[k] || {}), opts2[k] || {});\n return all;\n }, {});\n}\n\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n if (!timeZone) {\n return f1;\n }\n\n var mfFormats = core/* IntlMessageFormat.formats */.C.formats;\n return (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, mfFormats), f1), {\n date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)),\n time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone))\n });\n}\n\nfunction message_formatMessage(_a, state, messageDescriptor, values, opts) {\n var locale = _a.locale,\n formats = _a.formats,\n messages = _a.messages,\n defaultLocale = _a.defaultLocale,\n defaultFormats = _a.defaultFormats,\n onError = _a.onError,\n timeZone = _a.timeZone,\n defaultRichTextElements = _a.defaultRichTextElements;\n\n if (messageDescriptor === void 0) {\n messageDescriptor = {\n id: \'\'\n };\n }\n\n var msgId = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage; // `id` is a required field of a Message Descriptor.\n\n (0,lib_utils/* invariant */.kG)(!!msgId, "[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue");\n var id = String(msgId);\n var message = // In case messages is Object.create(null)\n // e.g import(\'foo.json\') from webpack)\n // See https://github.com/formatjs/formatjs/issues/1914\n messages && Object.prototype.hasOwnProperty.call(messages, id) && messages[id]; // IMPORTANT: Hot path if `message` is AST with a single literal node\n\n if (Array.isArray(message) && message.length === 1 && message[0].type === lib/* TYPE.literal */.wD.literal) {\n return message[0].value;\n } // IMPORTANT: Hot path straight lookup for performance\n\n\n if (!values && message && typeof message === \'string\' && !defaultRichTextElements) {\n return message.replace(/\'\\{(.*?)\\}\'/gi, "{$1}");\n }\n\n values = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, defaultRichTextElements), values || {});\n formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n\n if (!message) {\n if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale.\n onError(new error/* MissingTranslationError */.$6(messageDescriptor, locale));\n }\n\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n } catch (e) {\n onError(new error/* MessageFormatError */.X9("Error formatting default message for: \\"" + id + "\\", rendering default message verbatim", locale, messageDescriptor, e));\n return typeof defaultMessage === \'string\' ? defaultMessage : id;\n }\n }\n\n return id;\n } // We have the translated message\n\n\n try {\n var formatter = state.getMessageFormat(message, locale, formats, (0,tslib_es6/* __assign */.pi)({\n formatters: state\n }, opts || {}));\n return formatter.format(values);\n } catch (e) {\n onError(new error/* MessageFormatError */.X9("Error formatting message: \\"" + id + "\\", using " + (defaultMessage ? \'default message\' : \'id\') + " as fallback.", locale, messageDescriptor, e));\n }\n\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n } catch (e) {\n onError(new error/* MessageFormatError */.X9("Error formatting the default message for: \\"" + id + "\\", rendering message verbatim", locale, messageDescriptor, e));\n }\n }\n\n if (typeof message === \'string\') {\n return message;\n }\n\n if (typeof defaultMessage === \'string\') {\n return defaultMessage;\n }\n\n return id;\n}\n// EXTERNAL MODULE: ./node_modules/@formatjs/intl/lib/src/utils.js\nvar src_utils = __webpack_require__(7143);\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/number.js\n\n\nvar NUMBER_FORMAT_OPTIONS = [\'localeMatcher\', \'style\', \'currency\', \'currencyDisplay\', \'unit\', \'unitDisplay\', \'useGrouping\', \'minimumIntegerDigits\', \'minimumFractionDigits\', \'maximumFractionDigits\', \'minimumSignificantDigits\', \'maximumSignificantDigits\', // ES2020 NumberFormat\n\'compactDisplay\', \'currencyDisplay\', \'currencySign\', \'notation\', \'signDisplay\', \'unit\', \'unitDisplay\', \'numberingSystem\'];\nfunction getFormatter(_a, getNumberFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError;\n\n if (options === void 0) {\n options = {};\n }\n\n var format = options.format;\n var defaults = format && (0,src_utils/* getNamedFormat */.TB)(formats, \'number\', format, onError) || {};\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, NUMBER_FORMAT_OPTIONS, defaults);\n return getNumberFormat(locale, filteredOptions);\n}\nfunction formatNumber(config, getNumberFormat, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n try {\n return getFormatter(config, getNumberFormat, options).format(value);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting number.\', e));\n }\n\n return String(value);\n}\nfunction formatNumberToParts(config, getNumberFormat, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n try {\n return getFormatter(config, getNumberFormat, options).formatToParts(value);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting number.\', e));\n }\n\n return [];\n}\n// EXTERNAL MODULE: ./node_modules/intl-messageformat/lib/src/error.js\nvar src_error = __webpack_require__(8402);\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/relativeTime.js\n\n\n\nvar RELATIVE_TIME_FORMAT_OPTIONS = [\'numeric\', \'style\'];\n\nfunction relativeTime_getFormatter(_a, getRelativeTimeFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError;\n\n if (options === void 0) {\n options = {};\n }\n\n var format = options.format;\n var defaults = !!format && (0,src_utils/* getNamedFormat */.TB)(formats, \'relative\', format, onError) || {};\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n return getRelativeTimeFormat(locale, filteredOptions);\n}\n\nfunction formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!unit) {\n unit = \'second\';\n }\n\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n\n if (!RelativeTimeFormat) {\n config.onError(new src_error/* FormatError */.u_("Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\"@formatjs/intl-relativetimeformat\\"\\n", src_error/* ErrorCode.MISSING_INTL_API */.jK.MISSING_INTL_API));\n }\n\n try {\n return relativeTime_getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n } catch (e) {\n config.onError(new error/* MessageFormatError */.X9(\'Error formatting relative time.\', e));\n }\n\n return String(value);\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/dateTime.js\n\n\n\nvar DATE_TIME_FORMAT_OPTIONS = [\'localeMatcher\', \'formatMatcher\', \'timeZone\', \'hour12\', \'weekday\', \'era\', \'year\', \'month\', \'day\', \'hour\', \'minute\', \'second\', \'timeZoneName\', \'hourCycle\', \'dateStyle\', \'timeStyle\', \'calendar\', // \'dayPeriod\',\n\'numberingSystem\'];\nfunction dateTime_getFormatter(_a, type, getDateTimeFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError,\n timeZone = _a.timeZone;\n\n if (options === void 0) {\n options = {};\n }\n\n var format = options.format;\n\n var defaults = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, timeZone && {\n timeZone: timeZone\n }), format && (0,src_utils/* getNamedFormat */.TB)(formats, type, format, onError));\n\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, DATE_TIME_FORMAT_OPTIONS, // @ts-expect-error es2020 has a lot stuff from es2021 bleed in\n defaults);\n\n if (type === \'time\' && !filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second && !filteredOptions.timeStyle && !filteredOptions.dateStyle) {\n // Add default formatting options if hour, minute, or second isn\'t defined.\n filteredOptions = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, filteredOptions), {\n hour: \'numeric\',\n minute: \'numeric\'\n });\n }\n\n return getDateTimeFormat(locale, filteredOptions);\n}\nfunction formatDate(config, getDateTimeFormat) {\n var _a = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === \'string\' ? new Date(value || 0) : value;\n\n try {\n return dateTime_getFormatter(config, \'date\', getDateTimeFormat, options).format(date);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting date.\', e));\n }\n\n return String(date);\n}\nfunction formatTime(config, getDateTimeFormat) {\n var _a = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === \'string\' ? new Date(value || 0) : value;\n\n try {\n return dateTime_getFormatter(config, \'time\', getDateTimeFormat, options).format(date);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting time.\', e));\n }\n\n return String(date);\n}\nfunction formatDateTimeRange(config, getDateTimeFormat) {\n var _a = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n\n var from = _a[0],\n to = _a[1],\n _b = _a[2],\n options = _b === void 0 ? {} : _b;\n var timeZone = config.timeZone,\n locale = config.locale,\n onError = config.onError;\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? {\n timeZone: timeZone\n } : {});\n\n try {\n return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n } catch (e) {\n onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting date time range.\', e));\n }\n\n return String(from);\n}\nfunction formatDateToParts(config, getDateTimeFormat) {\n var _a = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === \'string\' ? new Date(value || 0) : value;\n\n try {\n return dateTime_getFormatter(config, \'date\', getDateTimeFormat, options).formatToParts(date);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting date.\', e));\n }\n\n return [];\n}\nfunction formatTimeToParts(config, getDateTimeFormat) {\n var _a = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === \'string\' ? new Date(value || 0) : value;\n\n try {\n return dateTime_getFormatter(config, \'time\', getDateTimeFormat, options).formatToParts(date);\n } catch (e) {\n config.onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting time.\', e));\n }\n\n return [];\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/plural.js\n\n\n\nvar PLURAL_FORMAT_OPTIONS = [\'localeMatcher\', \'type\'];\nfunction formatPlural(_a, getPluralRules, value, options) {\n var locale = _a.locale,\n onError = _a.onError;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!Intl.PluralRules) {\n onError(new src_error/* FormatError */.u_("Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\"@formatjs/intl-pluralrules\\"\\n", src_error/* ErrorCode.MISSING_INTL_API */.jK.MISSING_INTL_API));\n }\n\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, PLURAL_FORMAT_OPTIONS);\n\n try {\n return getPluralRules(locale, filteredOptions).select(value);\n } catch (e) {\n onError(new error/* MessageFormatError */.X9(\'Error formatting plural.\', e));\n }\n\n return \'other\';\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/list.js\n\n\n\n\nvar LIST_FORMAT_OPTIONS = [\'localeMatcher\', \'type\', \'style\'];\nvar now = Date.now();\n\nfunction generateToken(i) {\n return now + "_" + i + "_" + now;\n}\n\nfunction formatList(opts, getListFormat, values, options) {\n if (options === void 0) {\n options = {};\n }\n\n var results = formatListToParts(opts, getListFormat, values, options).reduce(function (all, el) {\n var val = el.value;\n\n if (typeof val !== \'string\') {\n all.push(val);\n } else if (typeof all[all.length - 1] === \'string\') {\n all[all.length - 1] += val;\n } else {\n all.push(val);\n }\n\n return all;\n }, []);\n return results.length === 1 ? results[0] : results;\n}\nfunction formatListToParts(_a, getListFormat, values, options) {\n var locale = _a.locale,\n onError = _a.onError;\n\n if (options === void 0) {\n options = {};\n }\n\n var ListFormat = Intl.ListFormat;\n\n if (!ListFormat) {\n onError(new src_error/* FormatError */.u_("Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\"@formatjs/intl-listformat\\"\\n", src_error/* ErrorCode.MISSING_INTL_API */.jK.MISSING_INTL_API));\n }\n\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, LIST_FORMAT_OPTIONS);\n\n try {\n var richValues_1 = {};\n var serializedValues = values.map(function (v, i) {\n if (typeof v === \'object\') {\n var id = generateToken(i);\n richValues_1[id] = v;\n return id;\n }\n\n return String(v);\n });\n return getListFormat(locale, filteredOptions).formatToParts(serializedValues).map(function (part) {\n return part.type === \'literal\' ? part : (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, part), {\n value: richValues_1[part.value] || part.value\n });\n });\n } catch (e) {\n onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting list.\', e));\n } // @ts-ignore\n\n\n return values;\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/displayName.js\n\n\n\nvar DISPLAY_NAMES_OPTONS = [\'localeMatcher\', \'style\', \'type\', \'fallback\'];\nfunction formatDisplayName(_a, getDisplayNames, value, options) {\n var locale = _a.locale,\n onError = _a.onError;\n var DisplayNames = Intl.DisplayNames;\n\n if (!DisplayNames) {\n onError(new src_error/* FormatError */.u_("Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\"@formatjs/intl-displaynames\\"\\n", src_error/* ErrorCode.MISSING_INTL_API */.jK.MISSING_INTL_API));\n }\n\n var filteredOptions = (0,src_utils/* filterProps */.L6)(options, DISPLAY_NAMES_OPTONS);\n\n try {\n return getDisplayNames(locale, filteredOptions).of(value);\n } catch (e) {\n onError(new error/* IntlError */.Rw(error/* IntlErrorCode.FORMAT_ERROR */.bc.FORMAT_ERROR, \'Error formatting display name.\', e));\n }\n}\n;// CONCATENATED MODULE: ./node_modules/@formatjs/intl/lib/src/create-intl.js\n\n\n\n\n\n\n\n\n\n\n\nfunction messagesContainString(messages) {\n var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n return typeof firstMessage === \'string\';\n}\n\nfunction verifyConfigMessages(config) {\n if (config.defaultRichTextElements && messagesContainString(config.messages || {})) {\n console.warn("[@formatjs/intl] \\"defaultRichTextElements\\" was specified but \\"message\\" was not pre-compiled. \\nPlease consider using \\"@formatjs/cli\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution");\n }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\n\n\nfunction create_intl_createIntl(config, cache) {\n var formatters = (0,src_utils/* createFormatters */.ax)(cache);\n\n var resolvedConfig = (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, src_utils/* DEFAULT_INTL_CONFIG */.Z0), config);\n\n var locale = resolvedConfig.locale,\n defaultLocale = resolvedConfig.defaultLocale,\n onError = resolvedConfig.onError;\n\n if (!locale) {\n if (onError) {\n onError(new error/* InvalidConfigError */.OV("\\"locale\\" was not configured, using \\"" + defaultLocale + "\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details"));\n } // Since there\'s no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It\'s assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n\n\n resolvedConfig.locale = resolvedConfig.defaultLocale || \'en\';\n } else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n onError(new error/* MissingDataError */.gb("Missing locale data for locale: \\"" + locale + "\\" in Intl.NumberFormat. Using default locale: \\"" + defaultLocale + "\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details"));\n } else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length && onError) {\n onError(new error/* MissingDataError */.gb("Missing locale data for locale: \\"" + locale + "\\" in Intl.DateTimeFormat. Using default locale: \\"" + defaultLocale + "\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details"));\n }\n\n verifyConfigMessages(resolvedConfig);\n return (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, resolvedConfig), {\n formatters: formatters,\n formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat),\n formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat),\n formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat),\n formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules),\n formatMessage: message_formatMessage.bind(null, resolvedConfig, formatters),\n formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat),\n formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat),\n formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames)\n });\n}\n// EXTERNAL MODULE: ./node_modules/intl-messageformat/lib/src/formatters.js\nvar formatters = __webpack_require__(4597);\n;// CONCATENATED MODULE: ./node_modules/react-intl/lib/src/components/provider.js\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n\n\n\n\n\n\nfunction processIntlConfig(config) {\n return {\n locale: config.locale,\n timeZone: config.timeZone,\n formats: config.formats,\n textComponent: config.textComponent,\n messages: config.messages,\n defaultLocale: config.defaultLocale,\n defaultFormats: config.defaultFormats,\n onError: config.onError,\n wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n defaultRichTextElements: config.defaultRichTextElements\n };\n}\n\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n if (!values) {\n return values;\n }\n\n return Object.keys(values).reduce(function (acc, k) {\n var v = values[k];\n acc[k] = (0,formatters/* isFormatXMLElementFn */.Gt)(v) ? (0,utils/* assignUniqueKeysToParts */.dt)(v) : v;\n return acc;\n }, {});\n}\n\nvar formatMessage = function formatMessage(config, formatters, descriptor, rawValues) {\n var rest = [];\n\n for (var _i = 4; _i < arguments.length; _i++) {\n rest[_i - 4] = arguments[_i];\n }\n\n var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n var chunks = message_formatMessage.apply(void 0, (0,tslib_es6/* __spreadArray */.ev)([config, formatters, descriptor, values], rest));\n\n if (Array.isArray(chunks)) {\n return react.Children.toArray(chunks);\n }\n\n return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\n\n\nvar createIntl = function createIntl(_a, cache) {\n var rawDefaultRichTextElements = _a.defaultRichTextElements,\n config = (0,tslib_es6/* __rest */._T)(_a, ["defaultRichTextElements"]);\n\n var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n var coreIntl = create_intl_createIntl((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, utils/* DEFAULT_INTL_CONFIG */.Z0), config), {\n defaultRichTextElements: defaultRichTextElements\n }), cache);\n return (0,tslib_es6/* __assign */.pi)((0,tslib_es6/* __assign */.pi)({}, coreIntl), {\n formatMessage: formatMessage.bind(null, {\n locale: coreIntl.locale,\n timeZone: coreIntl.timeZone,\n formats: coreIntl.formats,\n defaultLocale: coreIntl.defaultLocale,\n defaultFormats: coreIntl.defaultFormats,\n messages: coreIntl.messages,\n onError: coreIntl.onError,\n defaultRichTextElements: defaultRichTextElements\n }, coreIntl.formatters)\n });\n};\n\nvar IntlProvider =\n/** @class */\nfunction (_super) {\n (0,tslib_es6/* __extends */.ZT)(IntlProvider, _super);\n\n function IntlProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.cache = (0,src_utils/* createIntlCache */.Sn)();\n _this.state = {\n cache: _this.cache,\n intl: createIntl(processIntlConfig(_this.props), _this.cache),\n prevConfig: processIntlConfig(_this.props)\n };\n return _this;\n }\n\n IntlProvider.getDerivedStateFromProps = function (props, _a) {\n var prevConfig = _a.prevConfig,\n cache = _a.cache;\n var config = processIntlConfig(props);\n\n if (!(0,utils/* shallowEqual */.wU)(prevConfig, config)) {\n return {\n intl: createIntl(config, cache),\n prevConfig: config\n };\n }\n\n return null;\n };\n\n IntlProvider.prototype.render = function () {\n (0,utils/* invariantIntlContext */.lq)(this.state.intl);\n return react.createElement(injectIntl/* Provider */.zt, {\n value: this.state.intl\n }, this.props.children);\n };\n\n IntlProvider.displayName = \'IntlProvider\';\n IntlProvider.defaultProps = utils/* DEFAULT_INTL_CONFIG */.Z0;\n return IntlProvider;\n}(react.PureComponent);\n\n/* harmony default export */ var provider = (IntlProvider);\n// EXTERNAL MODULE: ./node_modules/@trussworks/react-uswds/lib/index.js\nvar react_uswds_lib = __webpack_require__(2593);\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(5697);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n// EXTERNAL MODULE: ./node_modules/react-side-effect/lib/index.js\nvar react_side_effect_lib = __webpack_require__(4839);\nvar react_side_effect_lib_default = /*#__PURE__*/__webpack_require__.n(react_side_effect_lib);\n// EXTERNAL MODULE: ./node_modules/react-fast-compare/index.js\nvar react_fast_compare = __webpack_require__(2993);\nvar react_fast_compare_default = /*#__PURE__*/__webpack_require__.n(react_fast_compare);\n// EXTERNAL MODULE: ./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js\nvar object_assign = __webpack_require__(6494);\nvar object_assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);\n;// CONCATENATED MODULE: ./node_modules/react-helmet/es/Helmet.js\n\n\n\n\n\nvar ATTRIBUTE_NAMES = {\n BODY: "bodyAttributes",\n HTML: "htmlAttributes",\n TITLE: "titleAttributes"\n};\nvar TAG_NAMES = {\n BASE: "base",\n BODY: "body",\n HEAD: "head",\n HTML: "html",\n LINK: "link",\n META: "meta",\n NOSCRIPT: "noscript",\n SCRIPT: "script",\n STYLE: "style",\n TITLE: "title"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: "charset",\n CSS_TEXT: "cssText",\n HREF: "href",\n HTTPEQUIV: "http-equiv",\n INNER_HTML: "innerHTML",\n ITEM_PROP: "itemprop",\n NAME: "name",\n PROPERTY: "property",\n REL: "rel",\n SRC: "src",\n TARGET: "target"\n};\nvar REACT_TAG_MAP = {\n accesskey: "accessKey",\n charset: "charSet",\n class: "className",\n contenteditable: "contentEditable",\n contextmenu: "contextMenu",\n "http-equiv": "httpEquiv",\n itemprop: "itemProp",\n tabindex: "tabIndex"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: "defaultTitle",\n DEFER: "defer",\n ENCODE_SPECIAL_CHARACTERS: "encodeSpecialCharacters",\n ON_CHANGE_CLIENT_STATE: "onChangeClientState",\n TITLE_TEMPLATE: "titleTemplate"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = "data-react-helmet";\n\nvar _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && (typeof call === "object" || typeof call === "function") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/\'/g, "'");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join("") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== "undefined";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== "undefined";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== "undefined") {\n warn("Helmet: " + tagName + " should be of type \\"Array\\". Instead found type \\"" + _typeof(props[tagName]) + "\\"");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === "canonical") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === "stylesheet")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn\'t work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = object_assign_default()({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== "undefined" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : __webpack_require__.g.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== "undefined" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : __webpack_require__.g.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === "function" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join("") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== "undefined" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(",") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || "";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(",")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(","));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + "[" + HELMET_ATTRIBUTE + "]");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === "undefined" ? "" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, "true"); // Remove a duplicate tag from domTagstoRemove, so it isn\'t cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== "undefined" ? key + "=\\"" + attributes[key] + "\\"" : "" + key;\n return str ? str + " " + attr : attr;\n }, "");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? "<" + type + " " + HELMET_ATTRIBUTE + "=\\"true\\" " + attributeString + ">" + encodeSpecialCharacters(flattenedTitle, encode) + "</" + type + ">" : "<" + type + " " + HELMET_ATTRIBUTE + "=\\"true\\">" + encodeSpecialCharacters(flattenedTitle, encode) + "</" + type + ">";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === "undefined" ? attribute : attribute + "=\\"" + encodeSpecialCharacters(tag[attribute], encode) + "\\"";\n return string ? string + " " + attr : attr;\n }, "");\n var tagContent = tag.innerHTML || tag.cssText || "";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + "<" + type + " " + HELMET_ATTRIBUTE + "=\\"true\\" " + attributeHtml + (isSelfClosing ? "/>" : ">" + tagContent + "</" + type + ">");\n }, "");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [react.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return react.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? "" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !react_fast_compare_default()(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error("<" + child.type + " /> elements are self-closing and can not contain children. Refer to our API for more information.");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (false) {}\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n react.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, ["children"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, ["children"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return react.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: "canUseDOM",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {"target": "_blank", "href": "http://mysite.com/"}\n * @param {Object} bodyAttributes: {"className": "root"}\n * @param {String} defaultTitle: "Default Title"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {"lang": "en", "amp": undefined}\n * @param {Array} link: [{"rel": "canonical", "href": "http://mysite.com/example"}]\n * @param {Array} meta: [{"name": "description", "content": "Test description"}]\n * @param {Array} noscript: [{"innerHTML": "<img src=\'http://mysite.com/js/test.js\'"}]\n * @param {Function} onChangeClientState: "(newState) => console.log(newState)"\n * @param {Array} script: [{"type": "text/javascript", "src": "http://mysite.com/js/test.js"}]\n * @param {Array} style: [{"type": "text/css", "cssText": "div { display: block; color: blue; }"}]\n * @param {String} title: "Title"\n * @param {Object} titleAttributes: {"itemprop": "name"}\n * @param {String} titleTemplate: "MySite.com - %s"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(react.Component), _class.propTypes = {\n base: (prop_types_default()).object,\n bodyAttributes: (prop_types_default()).object,\n children: prop_types_default().oneOfType([prop_types_default().arrayOf((prop_types_default()).node), (prop_types_default()).node]),\n defaultTitle: (prop_types_default()).string,\n defer: (prop_types_default()).bool,\n encodeSpecialCharacters: (prop_types_default()).bool,\n htmlAttributes: (prop_types_default()).object,\n link: prop_types_default().arrayOf((prop_types_default()).object),\n meta: prop_types_default().arrayOf((prop_types_default()).object),\n noscript: prop_types_default().arrayOf((prop_types_default()).object),\n onChangeClientState: (prop_types_default()).func,\n script: prop_types_default().arrayOf((prop_types_default()).object),\n style: prop_types_default().arrayOf((prop_types_default()).object),\n title: (prop_types_default()).string,\n titleAttributes: (prop_types_default()).object,\n titleTemplate: (prop_types_default()).string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: "",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = react_side_effect_lib_default()(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n/* harmony default export */ var es_Helmet = ((/* unused pure expression or super */ null && (HelmetExport)));\n\n// EXTERNAL MODULE: ./node_modules/query-string/index.js\nvar query_string = __webpack_require__(2203);\n;// CONCATENATED MODULE: ./src/contexts/FlagContext.tsx\n/**\n * FlagContext stores feature flags and passes them to consumers\n */var FlagContext=/*#__PURE__*/react.createContext({flags:[]});/**\n * `useFlags` returns all feature flags.\n *\n * @return {Flags[]} flags All project feature flags\n */var useFlags=function useFlags(){var _React$useContext=react.useContext(FlagContext),flags=_React$useContext.flags;return flags;};/**\n * `URLFlagProvider` is a provider for FlagContext.\n * It is passed the current URL and parses the\n * "flags" parameter, assumed to be a comma-separated\n * list of currently-active flags.\n * @param {URL} location : the current URL object\n * @param {ReactNode} children : the children components\n * @return {ReactNode} URLFlagProvider component\n **/var URLFlagProvider=function URLFlagProvider(_ref){var children=_ref.children,location=_ref.location;var flagString=query_string.parse(location.search).flags;var flags=[];if(flagString&&typeof flagString===\'string\'){flags=flagString.split(\',\');}console.log(JSON.stringify(location),JSON.stringify(flags));return/*#__PURE__*/react.createElement(FlagContext.Provider,{value:{flags:flags}},children);};\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/index.js + 1 modules\nvar react_intl_lib = __webpack_require__(9084);\n;// CONCATENATED MODULE: ./src/components/J40Header.tsx\nvar J40Header=function J40Header(){var flags=useFlags();var intl=(0,gatsby_plugin_intl.useIntl)();var _useState=(0,react.useState)(false),mobileNavOpen=_useState[0],setMobileNavOpen=_useState[1];var messages=(0,react_intl_lib/* defineMessages */.vU)({title:{id:\'header.title\',defaultMessage:\'Justice40\',description:\'Title in header\'},about:{id:\'header.about\',defaultMessage:\'About\',description:\'Navigate to the about page\'},explore:{id:\'header.explore\',defaultMessage:\'Explore the tool\',description:\'Navigate to the Explore the tool page\'},methodology:{id:\'header.methodology\',defaultMessage:\'Methodology\',description:\'Navigate to the Methodology page\'},contact:{id:\'header.contact\',defaultMessage:\'Contact\',description:\'Navigate to the Contact page\'},timeline:{id:\'header.timeline\',defaultMessage:\'Timeline\',description:\'Navigate to the Timeline page\'}});var title=intl.formatMessage(messages.title);var toggleMobileNav=function toggleMobileNav(){return setMobileNavOpen(function(prevOpen){return!prevOpen;});};var headerLinks=function headerLinks(flags){// static map of all possible menu items. Originally, it was all strings,\n// but we need to handle both onsite and offsite links.\nvar menuData=new Map([[\'about\',/*#__PURE__*/react.createElement(gatsby_plugin_intl.Link,{to:\'/\',key:\'about\',activeClassName:"usa-current",className:\'j40-header\'},intl.formatMessage(messages.about))],[\'cejst\',/*#__PURE__*/react.createElement(gatsby_plugin_intl.Link,{to:\'/cejst\',key:\'cejst\',activeClassName:"usa-current",className:\'j40-header\'},intl.formatMessage(messages.explore))],[\'methodology\',/*#__PURE__*/react.createElement(gatsby_plugin_intl.Link,{to:\'/methodology\',key:\'methodology\',activeClassName:"usa-current",className:\'j40-header\'},intl.formatMessage(messages.methodology))],[\'contact\',/*#__PURE__*/react.createElement(gatsby_plugin_intl.Link,{to:\'/contact\',key:\'contact\',activeClassName:"usa-current",className:\'j40-header\'},intl.formatMessage(messages.contact))],[\'timeline\',/*#__PURE__*/react.createElement(gatsby_plugin_intl.Link,{to:\'/timeline\',key:\'timline\',activeClassName:"usa-current",className:\'j40-header\'},intl.formatMessage(messages.timeline))]]);// select which items from the above map to show, right now it\'s only two\n// possibilities so it\'s simple. Note: strings are used as react keys\nvar menu=flags!==null&&flags!==void 0&&flags.includes(\'sprint3\')?[\'about\',\'cejst\',\'methodology\',\'contact\']:[\'about\',\'cejst\',\'methodology\',\'contact\'];// TODO: make feature flags flags work.\nreturn menu.map(function(key){return menuData.get(key);});};return/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement(HelmetExport,{htmlAttributes:{lang:intl.locale}},/*#__PURE__*/react.createElement("meta",{charSet:"utf-8"}),/*#__PURE__*/react.createElement("title",null,title)),/*#__PURE__*/react.createElement(react_uswds_lib.GovBanner,null),/*#__PURE__*/react.createElement(react_uswds_lib.Header,{basic:true,role:\'banner\',className:\'usa-header j40-header\'},/*#__PURE__*/react.createElement("div",{className:"usa-nav-container"},/*#__PURE__*/react.createElement("div",{className:"usa-navbar"},/*#__PURE__*/react.createElement(react_uswds_lib.Title,null,title,/*#__PURE__*/react.createElement("div",{className:\'byline\'},"A climate and economic justice screening tool")),/*#__PURE__*/react.createElement(react_uswds_lib.NavMenuButton,{key:\'mobileMenuButton\',onClick:toggleMobileNav,label:"Menu"})),/*#__PURE__*/react.createElement(react_uswds_lib.PrimaryNav,{items:headerLinks(flags),mobileExpanded:mobileNavOpen,onToggleMobileNav:toggleMobileNav,className:\'j40-header\'}))),/*#__PURE__*/react.createElement(react_uswds_lib.Alert,{className:\'j40-sitealert\',type:"info"},/*#__PURE__*/react.createElement("b",null,"Public beta \\u2014 "),"Welcome to the public beta of the Just Progress Map, a climate and economic justice screening tool. The tool will be continuously updated. Please submit feedback.",/*#__PURE__*/react.createElement("br",null)),/*#__PURE__*/react.createElement(react_uswds_lib.Alert,{className:\'j40-sitealert\',type:"warning"},/*#__PURE__*/react.createElement("b",null,"Limited data sources \\u2014 "),"This tool currently includes 16 datasets. Over time, datasets could be added, updated, or removed. The datasets come from a variety of sources based on availability, quality, and relevance to environmental, energy, and climate issues. Each dataset has limitations, such as how recently the data was updated."));};/* harmony default export */ var components_J40Header = (J40Header);\n;// CONCATENATED MODULE: ./src/images/eop-seal.svg\n/* harmony default export */ var eop_seal = (__webpack_require__.p + "static/eop-seal-12e5dcc4453cb3321515f50874d1f1f6.svg");\n;// CONCATENATED MODULE: ./src/components/J40Footer.tsx\n// @ts-ignore\nvar J40Footer=function J40Footer(){return/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement(react_uswds_lib.Footer,{size:"big",className:\'j40-footer\',primary:/*#__PURE__*/react.createElement(react.Fragment,null),secondary:/*#__PURE__*/react.createElement(react_uswds_lib.FooterNav,{"aria-label":"Footer navigation",size:"big"// fyi you leave this off and it silently fails...\n,links:[[\'Agency Partners\',/*#__PURE__*/react.createElement("a",{href:\'https://www.epa.gov/\',target:\'_blank\',rel:\'noreferrer\',key:\'epalink\'},"Environmental Protection Agency"),/*#__PURE__*/react.createElement("a",{href:\'https://www.whitehouse.gov/omb\',target:\'_blank\',rel:\'noreferrer\',key:\'whitehouselink\'},"Office of Management and Budget"),/*#__PURE__*/react.createElement("a",{href:\'https://www.energy.gov/\',target:\'_blank\',rel:\'noreferrer\',key:\'energylink\'},"Department of Energy"),/*#__PURE__*/react.createElement("a",{href:\'https://www.hud.gov/\',target:\'_blank\',rel:\'noreferrer\',key:\'hudlink\'},"Department of Housing and Urban Development")],[\'More Information\',/*#__PURE__*/react.createElement("a",{href:\'https://www.whitehouse.gov/\',target:\'_blank\',rel:\'noreferrer\',key:\'whitehouselink2\'},"Whitehouse.gov"),/*#__PURE__*/react.createElement("a",{href:"#",key:\'accessibilitylink\'},"Accessibility Statement"),/*#__PURE__*/react.createElement("a",{href:"#",key:\'privacylink\'},"Privacy, Policies, and Legal Information")],[\'Have a question about government services?\',/*#__PURE__*/react.createElement("a",{href:"#",key:\'privacylink\'},"Find a contact at USA.gov")],[/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement(react_uswds_lib.Logo,{size:"slim",key:\'logoimg\',className:\'j40-footer-logo\',image:/*#__PURE__*/react.createElement("img",{className:\'usa-footer__logo-img\',src:eop_seal,alt:\'Whitehouse logo\'}),heading:/*#__PURE__*/react.createElement("p",{className:\'j40-footer-logo-heading\'},"Council on Environmental Quality")})),/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement(react_uswds_lib.Address,{key:\'footeraddress\',items:[\'730 Jackson Pl NW\',\'Washington, D.C. 20506\',\'(202) 395-5750\']}))]]})}));};/* harmony default export */ var components_J40Footer = (J40Footer);\n;// CONCATENATED MODULE: ./node_modules/uswds/dist/img/usa-icons/chat.svg\n/* harmony default export */ var chat = ("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDloMTJ2Mkg2Vjl6bTggNUg2di0yaDh2MnptNC02SDZWNmgxMnYyeiIvPjwvc3ZnPg==");\n;// CONCATENATED MODULE: ./node_modules/uswds/dist/img/usa-icons/github.svg\n/* harmony default export */ var github = ("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsLXJ1bGU6ZXZlbm9kZDt9PC9zdHlsZT48L2RlZnM+PHBhdGggaWQ9IkdpdGh1YiIgY2xhc3M9ImNscy0xIiBkPSJNMTIsMkExMCwxMCwwLDAsMCw4Ljg0LDIxLjQ5Yy41LjA5LjY4LS4yMi42OC0uNDhzMC0uODcsMC0xLjdDNi43MywxOS45MSw2LjE0LDE4LDYuMTQsMThBMi42OSwyLjY5LDAsMCwwLDUsMTYuNWMtLjkxLS42Mi4wNy0uNjEuMDctLjYxYTIuMTMsMi4xMywwLDAsMSwxLjUzLDEsMi4xNCwyLjE0LDAsMCwwLDIuOTEuODMsMi4xNiwyLjE2LDAsMCwxLC42My0xLjM0QzgsMTYuMTcsNS42MiwxNS4zMSw1LjYyLDExLjQ4YTMuODksMy44OSwwLDAsMSwxLTIuNjksMy41NywzLjU3LDAsMCwxLC4xLTIuNjRzLjg0LS4yNywyLjc1LDFhOS42Myw5LjYzLDAsMCwxLDUsMGMxLjkxLTEuMjksMi43NS0xLDIuNzUtMWEzLjU3LDMuNTcsMCwwLDEsLjEsMi42NCwzLjg5LDMuODksMCwwLDEsMSwyLjY5YzAsMy44NC0yLjM0LDQuNjgtNC41Nyw0LjkzYTIuMzksMi4zOSwwLDAsMSwuNjgsMS44NWMwLDEuMzQsMCwyLjQyLDAsMi43NXMuMTguNTguNjkuNDhBMTAsMTAsMCwwLDAsMTIsMloiLz48L3N2Zz4=");\n;// CONCATENATED MODULE: ./src/components/J40Aside.tsx\n// @ts-ignore\n// @ts-ignore\nvar J40Aside=function J40Aside(){return/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement("aside",{"aria-labelledby":"right-sidebar",className:\'j40-aside desktop:grid-col-3 usa-prose usa-section\',id:"right-sidebar"},/*#__PURE__*/react.createElement("h2",null,"Get Involved"),/*#__PURE__*/react.createElement("h3",null,/*#__PURE__*/react.createElement("img",{className:\'flex-align-self-center width-4 j40-aside-icon\',src:chat,alt:\'chat icon\'}),"Send Feedback"),/*#__PURE__*/react.createElement("p",{className:\'usa-prose site-prose\'},"Have ideas about how to acknowledge the on-the-ground experiences of your community?"),"Email: ",/*#__PURE__*/react.createElement("a",{href:"mailto: justice40open@usds.gov"},"justice40open@usds.gov"),/*#__PURE__*/react.createElement("p",null,"\\xA0"),/*#__PURE__*/react.createElement("h3",null,/*#__PURE__*/react.createElement("img",{className:\'flex-align-self-center width-4 j40-aside-icon\',src:github,alt:\'github icon\'}),"Join the open source community"),/*#__PURE__*/react.createElement("p",null,"Justice40\\u2019s code is open source, which means it is available for the public to view and contribute. Anyone can view and contribute on GitHub."),/*#__PURE__*/react.createElement("p",null,/*#__PURE__*/react.createElement("a",{href:\'https://github.com/usds/justice40-tool/\'+\'crisis-at-home-and-abroad/\',target:\'_blank\',rel:\'noreferrer\',key:\'github3\'},"Check it out on GitHub"))));};/* harmony default export */ var components_J40Aside = (J40Aside);\n;// CONCATENATED MODULE: ./src/intl/es.json\nvar es_namespaceObject = JSON.parse(\'{"areasOfInterest.climate":"Cambio climático","areasOfInterest.energy":"Energía limpia y eficiencia energética","areasOfInterest.housing":"Vivienda asequible y sostenible","areasOfInterest.pollution":"Remediación de la contaminación heredada","areasOfInterest.training":"Training and workforce development 2","areasOfInterest.transit":"Transporte limpio","areasOfInterest.water":"Infraestructura de agua limpia","header.about":"Sobre nosotras","header.contact":"Contact","header.explore":"Explore the tool","header.methodology":"Metodología","header.timeline":"Timeline","header.title":"Justice40","index.aboutContent.header":"About Justice40","index-aboutContent-p1":"In an effort to address historical environmental injustices, President Biden created the Justice40 Initiative on January 27, 2021. The Justice40 Initiative directs 40% of the benefits from federal investments in seven key areas to overburdened and underserved communities.","index.aboutContent.p2":"Federal agencies will prioritize benefits using a new climate and economic justice screening tool. This screening tool will be a map that visualizes data to compare the cumulative impacts of environmental, climate, and economic factors. It is being developed by the Council on Environmental Quality (CEQ) with guidance from environmental justice leaders and communities affected by environmental injustices. The first version of the screening tool will be released in July 2021. However, the screening tool and data being used will be continuously updated to better reflect the lived experiences of community members.","index.aboutContent.p3":"Read more about the Justice40 Initiative in President Biden’s {presidentLink}","index.presidentalLinkLabel":"Executive Order on Tackling the Climate Crisis at Home and Abroad.","index.presidentalLinkUri":"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/01/27/executive-order-on-tackling-the-climate-crisis-at-home-and-abroad/","index.section2.header":"Areas of Focus","index.section3.header":"A Transparent, Community-First Approach","index.section3.inclusive":"{inlineHeader} Muchas áreas que carecen de inversiones también carecen de datos ambientales y se pasarían por alto utilizando los datos ambientales disponibles. CEQ se está acercando activamente a grupos que históricamente han sido excluidos de la toma de decisiones, como grupos en áreas rurales y tribales, para comprender sus necesidades y solicitar su opinión.","index.section3.inclusiveLabel":"Inclusivo:","index.section3.intro":"Las iniciativas exitosas están guiadas por aportes directos de las comunidades a las que sirven. CEQ se compromete con la transparencia, la inclusión y la iteración en la construcción de esta herramienta de evaluación.","index.section3.iterative":"{inlineHeader} La lista de priorización de la comunidad inicial proporcionada por la herramienta de evaluación es el comienzo de un proceso de colaboración en el refinamiento de la puntuación, en lugar de una respuesta final. CEQ ha recibido recomendaciones sobre conjuntos de datos de entrevistas comunitarias, el Consejo Asesor de Justicia Ambiental de la Casa Blanca y mediante comentarios públicos, pero establecer una puntuación que sea verdaderamente representativa será un proceso continuo a largo plazo. A medida que las comunidades envíen comentarios y recomendaciones, CEQ continuará mejorando las herramientas que se están construyendo y los procesos para la participación pública y de las partes interesadas.","index.section3.iterativeLabel":"Iterativo:","index.section3.transparent":"{inlineHeader} El código y los datos detrás de la herramienta de detección son de código abierto, lo que significa que está disponible para que el público los revise y contribuya. Esta herramienta se está desarrollando públicamente para que las comunidades, los expertos académicos y cualquier persona interesada puedan participar en el proceso de creación de herramientas.","index.section3.transparentLabel":"Transparencia:"}\');\n;// CONCATENATED MODULE: ./src/components/layout.tsx\n// this has to be wrong\nvar Layout=function Layout(_ref){var children=_ref.children,location=_ref.location;var intl=(0,gatsby_plugin_intl.useIntl)();var isWidthFullPage=location.pathname.match(/cejst\\/?/);var conditionalAside=isWidthFullPage?/*#__PURE__*/react.createElement(react.Fragment,null):/*#__PURE__*/react.createElement(components_J40Aside,null);var gridCssClass=isWidthFullPage?\' desktop:grid-col-12\':\'desktop:grid-col-9\';// @ts-ignore\nreturn/*#__PURE__*/react.createElement(provider,{locale:intl.locale,defaultLocale:\'en\',messages:intl.locale===\'es\'?es_namespaceObject:{}},/*#__PURE__*/react.createElement(URLFlagProvider,{location:location},/*#__PURE__*/react.createElement(components_J40Header,null),/*#__PURE__*/react.createElement(react_uswds_lib.GridContainer,{containerSize:\'desktop-lg\',className:\'j40-grid-container\'},/*#__PURE__*/react.createElement(react_uswds_lib.Grid,{row:true},/*#__PURE__*/react.createElement("main",{id:\'main-content\',className:\'usa-layout-docs j40-main-content \'+gridCssClass},children),conditionalAside)),/*#__PURE__*/react.createElement(components_J40Footer,null)));};/* harmony default export */ var layout = (Layout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC9saWIvc3JjL21lc3NhZ2UuanM/ZjUwNCIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC9saWIvc3JjL251bWJlci5qcz85YTIxIiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsL2xpYi9zcmMvcmVsYXRpdmVUaW1lLmpzPzlmYjgiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwvbGliL3NyYy9kYXRlVGltZS5qcz9mYTI5Iiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsL2xpYi9zcmMvcGx1cmFsLmpzP2FjM2YiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwvbGliL3NyYy9saXN0LmpzP2QyYjQiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwvbGliL3NyYy9kaXNwbGF5TmFtZS5qcz9jYjg3Iiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsL2xpYi9zcmMvY3JlYXRlLWludGwuanM/NWE5MyIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pbnRsL2xpYi9zcmMvY29tcG9uZW50cy9wcm92aWRlci5qcz80Yjg1Iiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWhlbG1ldC9lcy9IZWxtZXQuanM/MWYwZiIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL3NyYy9jb250ZXh0cy9GbGFnQ29udGV4dC50c3g/YTM5OSIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL3NyYy9jb21wb25lbnRzL0o0MEhlYWRlci50c3g/ZmI1ZCIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL3NyYy9pbWFnZXMvZW9wLXNlYWwuc3ZnP2UyNDQiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9zcmMvY29tcG9uZW50cy9KNDBGb290ZXIudHN4P2RkNzkiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvdXN3ZHMvZGlzdC9pbWcvdXNhLWljb25zL2NoYXQuc3ZnPzk4ODAiLCJ3ZWJwYWNrOi8vanVzdGljZTQwLXRvb2wvLi9ub2RlX21vZHVsZXMvdXN3ZHMvZGlzdC9pbWcvdXNhLWljb25zL2dpdGh1Yi5zdmc/NmI0NCIsIndlYnBhY2s6Ly9qdXN0aWNlNDAtdG9vbC8uL3NyYy9jb21wb25lbnRzL0o0MEFzaWRlLnRzeD83N2I1Iiwid2VicGFjazovL2p1c3RpY2U0MC10b29sLy4vc3JjL2NvbXBvbmVudHMvbGF5b3V0LnRzeD9mNDM4Il0sIm5hbWVzIjpbIkZsYWdDb250ZXh0IiwiUmVhY3QiLCJmbGFncyIsInVzZUZsYWdzIiwiVVJMRmxhZ1Byb3ZpZGVyIiwiY2hpbGRyZW4iLCJsb2NhdGlvbiIsImZsYWdTdHJpbmciLCJxdWVyeVN0cmluZyIsInNlYXJjaCIsInNwbGl0IiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJKNDBIZWFkZXIiLCJpbnRsIiwidXNlSW50bCIsInVzZVN0YXRlIiwibW9iaWxlTmF2T3BlbiIsInNldE1vYmlsZU5hdk9wZW4iLCJtZXNzYWdlcyIsImRlZmluZU1lc3NhZ2VzIiwidGl0bGUiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwiZGVzY3JpcHRpb24iLCJhYm91dCIsImV4cGxvcmUiLCJtZXRob2RvbG9neSIsImNvbnRhY3QiLCJ0aW1lbGluZSIsImZvcm1hdE1lc3NhZ2UiLCJ0b2dnbGVNb2JpbGVOYXYiLCJwcmV2T3BlbiIsImhlYWRlckxpbmtzIiwibWVudURhdGEiLCJNYXAiLCJtZW51IiwiaW5jbHVkZXMiLCJtYXAiLCJrZXkiLCJnZXQiLCJsYW5nIiwibG9jYWxlIiwiSjQwRm9vdGVyIiwid2hpdGVob3VzZUljb24iLCJKNDBBc2lkZSIsImNoYXRJY29uIiwiZ2l0aHViSWNvbiIsIkxheW91dCIsImlzV2lkdGhGdWxsUGFnZSIsInBhdGhuYW1lIiwibWF0Y2giLCJjb25kaXRpb25hbEFzaWRlIiwiZ3JpZENzc0NsYXNzIiwiRVNfTEFORyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpQztBQUNzQjtBQUNBO0FBQ2U7QUFDWjs7QUFFMUQ7QUFDQTtBQUNBLGFBQWEsOEJBQVE7QUFDckI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBLHlCQUF5Qiw4QkFBUSxDQUFDLDhCQUFRLEdBQUc7QUFDN0M7QUFDQSxhQUFhLDhCQUFRLENBQUMsOEJBQVEsR0FBRyxnQkFBZ0IsaUJBQWlCO0FBQ2xFO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDZDQUF5QjtBQUMzQyxTQUFTLDhCQUFRLENBQUMsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHO0FBQ3RDLDZHQUE2RztBQUM3Ryw2R0FBNkc7QUFDN0csR0FBRztBQUNIOztBQUVPLFNBQVMscUJBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0RBQXdEOztBQUV4RCxFQUFFLCtCQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRkFBaUY7O0FBRWpGLDRFQUE0RSxnQ0FBWTtBQUN4RjtBQUNBLEdBQUc7OztBQUdIO0FBQ0EsK0JBQStCLE9BQU8sUUFBUSxHQUFHO0FBQ2pEOztBQUVBLFdBQVcsOEJBQVEsQ0FBQyw4QkFBUSxHQUFHLHdDQUF3QztBQUN2RTtBQUNBOztBQUVBO0FBQ0E7QUFD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dCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICdAZm9ybWF0anMvZWNtYTQwMi1hYnN0cmFjdCc7XG5pbXBvcnQgeyBJbnRsTWVzc2FnZUZvcm1hdCB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBNaXNzaW5nVHJhbnNsYXRpb25FcnJvciwgTWVzc2FnZUZvcm1hdEVycm9yIH0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQgeyBUWVBFIH0gZnJvbSAnQGZvcm1hdGpzL2ljdS1tZXNzYWdlZm9ybWF0LXBhcnNlcic7XG5cbmZ1bmN0aW9uIHNldFRpbWVab25lSW5PcHRpb25zKG9wdHMsIHRpbWVab25lKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvcHRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgaykge1xuICAgIGFsbFtrXSA9IF9fYXNzaWduKHtcbiAgICAgIHRpbWVab25lOiB0aW1lWm9uZVxuICAgIH0sIG9wdHNba10pO1xuICAgIHJldHVybiBhbGw7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gZGVlcE1lcmdlT3B0aW9ucyhvcHRzMSwgb3B0czIpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0czEpLCBvcHRzMikpO1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgaykge1xuICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRzMVtrXSB8fCB7fSksIG9wdHMyW2tdIHx8IHt9KTtcbiAgICByZXR1cm4gYWxsO1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGRlZXBNZXJnZUZvcm1hdHNBbmRTZXRUaW1lWm9uZShmMSwgdGltZVpvbmUpIHtcbiAgaWYgKCF0aW1lWm9uZSkge1xuICAgIHJldHVybiBmMTtcbiAgfVxuXG4gIHZhciBtZkZvcm1hdHMgPSBJbnRsTWVzc2FnZUZvcm1hdC5mb3JtYXRzO1xuICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIG1mRm9ybWF0cyksIGYxKSwge1xuICAgIGRhdGU6IGRlZXBNZXJnZU9wdGlvbnMoc2V0VGltZVpvbmVJbk9wdGlvbnMobWZGb3JtYXRzLmRhdGUsIHRpbWVab25lKSwgc2V0VGltZVpvbmVJbk9wdGlvbnMoZjEuZGF0ZSB8fCB7fSwgdGltZVpvbmUpKSxcbiAgICB0aW1lOiBkZWVwTWVyZ2VPcHRpb25zKHNldFRpbWVab25lSW5PcHRpb25zKG1mRm9ybWF0cy50aW1lLCB0aW1lWm9uZSksIHNldFRpbWVab25lSW5PcHRpb25zKGYxLnRpbWUgfHwge30sIHRpbWVab25lKSlcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKF9hLCBzdGF0ZSwgbWVzc2FnZURlc2NyaXB0b3IsIHZhbHVlcywgb3B0cykge1xuICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLFxuICAgICAgZm9ybWF0cyA9IF9hLmZvcm1hdHMsXG4gICAgICBtZXNzYWdlcyA9IF9hLm1lc3NhZ2VzLFxuICAgICAgZGVmYXVsdExvY2FsZSA9IF9hLmRlZmF1bHRMb2NhbGUsXG4gICAgICBkZWZhdWx0Rm9ybWF0cyA9IF9hLmRlZmF1bHRGb3JtYXRzLFxuICAgICAgb25FcnJvciA9IF9hLm9uRXJyb3IsXG4gICAgICB0aW1lWm9uZSA9IF9hLnRpbWVab25lLFxuICAgICAgZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMgPSBfYS5kZWZhdWx0UmljaFRleHRFbGVtZW50cztcblxuICBpZiAobWVzc2FnZURlc2NyaXB0b3IgPT09IHZvaWQgMCkge1xuICAgIG1lc3NhZ2VEZXNjcmlwdG9yID0ge1xuICAgICAgaWQ6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHZhciBtc2dJZCA9IG1lc3NhZ2VEZXNjcmlwdG9yLmlkLFxuICAgICAgZGVmYXVsdE1lc3NhZ2UgPSBtZXNzYWdlRGVzY3JpcHRvci5kZWZhdWx0TWVzc2FnZTsgLy8gYGlkYCBpcyBhIHJlcXVpcmVkIGZpZWxkIG9mIGEgTWVzc2FnZSBEZXNjcmlwdG9yLlxuXG4gIGludmFyaWFudCghIW1zZ0lkLCBcIltAZm9ybWF0anMvaW50bF0gQW4gYGlkYCBtdXN0IGJlIHByb3ZpZGVkIHRvIGZvcm1hdCBhIG1lc3NhZ2UuIFlvdSBjYW4gZWl0aGVyOlxcbjEuIENvbmZpZ3VyZSB5b3VyIGJ1aWxkIHRvb2xjaGFpbiB3aXRoIFtiYWJlbC1wbHVnaW4tZm9ybWF0anNdKGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy90b29saW5nL2JhYmVsLXBsdWdpbilcXG5vciBbQGZvcm1hdGpzL3RzLXRyYW5zZm9ybWVyXShodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvdG9vbGluZy90cy10cmFuc2Zvcm1lcikgT1JcXG4yLiBDb25maWd1cmUgeW91ciBgZXNsaW50YCBjb25maWcgdG8gaW5jbHVkZSBbZXNsaW50LXBsdWdpbi1mb3JtYXRqc10oaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3Rvb2xpbmcvbGludGVyI2VuZm9yY2UtaWQpXFxudG8gYXV0b2ZpeCB0aGlzIGlzc3VlXCIpO1xuICB2YXIgaWQgPSBTdHJpbmcobXNnSWQpO1xuICB2YXIgbWVzc2FnZSA9IC8vIEluIGNhc2UgbWVzc2FnZXMgaXMgT2JqZWN0LmNyZWF0ZShudWxsKVxuICAvLyBlLmcgaW1wb3J0KCdmb28uanNvbicpIGZyb20gd2VicGFjaylcbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JtYXRqcy9mb3JtYXRqcy9pc3N1ZXMvMTkxNFxuICBtZXNzYWdlcyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWVzc2FnZXMsIGlkKSAmJiBtZXNzYWdlc1tpZF07IC8vIElNUE9SVEFOVDogSG90IHBhdGggaWYgYG1lc3NhZ2VgIGlzIEFTVCB3aXRoIGEgc2luZ2xlIGxpdGVyYWwgbm9kZVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpICYmIG1lc3NhZ2UubGVuZ3RoID09PSAxICYmIG1lc3NhZ2VbMF0udHlwZSA9PT0gVFlQRS5saXRlcmFsKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VbMF0udmFsdWU7XG4gIH0gLy8gSU1QT1JUQU5UOiBIb3QgcGF0aCBzdHJhaWdodCBsb29rdXAgZm9yIHBlcmZvcm1hbmNlXG5cblxuICBpZiAoIXZhbHVlcyAmJiBtZXNzYWdlICYmIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyAmJiAhZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMpIHtcbiAgICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC8nXFx7KC4qPylcXH0nL2dpLCBcInskMX1cIik7XG4gIH1cblxuICB2YWx1ZXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMpLCB2YWx1ZXMgfHwge30pO1xuICBmb3JtYXRzID0gZGVlcE1lcmdlRm9ybWF0c0FuZFNldFRpbWVab25lKGZvcm1hdHMsIHRpbWVab25lKTtcbiAgZGVmYXVsdEZvcm1hdHMgPSBkZWVwTWVyZ2VGb3JtYXRzQW5kU2V0VGltZVpvbmUoZGVmYXVsdEZvcm1hdHMsIHRpbWVab25lKTtcblxuICBpZiAoIW1lc3NhZ2UpIHtcbiAgICBpZiAoIWRlZmF1bHRNZXNzYWdlIHx8IGxvY2FsZSAmJiBsb2NhbGUudG9Mb3dlckNhc2UoKSAhPT0gZGVmYXVsdExvY2FsZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHdhcm5pbmdzIGZyb20gbGl0dGVyaW5nIHRoZSBjb25zb2xlIGluIGRldmVsb3BtZW50XG4gICAgICAvLyB3aGVuIG5vIGBtZXNzYWdlc2AgYXJlIHBhc3NlZCBpbnRvIHRoZSA8SW50bFByb3ZpZGVyPiBmb3IgdGhlXG4gICAgICAvLyBkZWZhdWx0IGxvY2FsZS5cbiAgICAgIG9uRXJyb3IobmV3IE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yKG1lc3NhZ2VEZXNjcmlwdG9yLCBsb2NhbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdE1lc3NhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSBzdGF0ZS5nZXRNZXNzYWdlRm9ybWF0KGRlZmF1bHRNZXNzYWdlLCBkZWZhdWx0TG9jYWxlLCBkZWZhdWx0Rm9ybWF0cywgb3B0cyk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IobmV3IE1lc3NhZ2VGb3JtYXRFcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgZGVmYXVsdCBtZXNzYWdlIGZvcjogXFxcIlwiICsgaWQgKyBcIlxcXCIsIHJlbmRlcmluZyBkZWZhdWx0IG1lc3NhZ2UgdmVyYmF0aW1cIiwgbG9jYWxlLCBtZXNzYWdlRGVzY3JpcHRvciwgZSkpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRNZXNzYWdlID09PSAnc3RyaW5nJyA/IGRlZmF1bHRNZXNzYWdlIDogaWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkO1xuICB9IC8vIFdlIGhhdmUgdGhlIHRyYW5zbGF0ZWQgbWVzc2FnZVxuXG5cbiAgdHJ5IHtcbiAgICB2YXIgZm9ybWF0dGVyID0gc3RhdGUuZ2V0TWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGUsIGZvcm1hdHMsIF9fYXNzaWduKHtcbiAgICAgIGZvcm1hdHRlcnM6IHN0YXRlXG4gICAgfSwgb3B0cyB8fCB7fSkpO1xuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvbkVycm9yKG5ldyBNZXNzYWdlRm9ybWF0RXJyb3IoXCJFcnJvciBmb3JtYXR0aW5nIG1lc3NhZ2U6IFxcXCJcIiArIGlkICsgXCJcXFwiLCB1c2luZyBcIiArIChkZWZhdWx0TWVzc2FnZSA/ICdkZWZhdWx0IG1lc3NhZ2UnIDogJ2lkJykgKyBcIiBhcyBmYWxsYmFjay5cIiwgbG9jYWxlLCBtZXNzYWdlRGVzY3JpcHRvciwgZSkpO1xuICB9XG5cbiAgaWYgKGRlZmF1bHRNZXNzYWdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmb3JtYXR0ZXIgPSBzdGF0ZS5nZXRNZXNzYWdlRm9ybWF0KGRlZmF1bHRNZXNzYWdlLCBkZWZhdWx0TG9jYWxlLCBkZWZhdWx0Rm9ybWF0cywgb3B0cyk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IobmV3IE1lc3NhZ2VGb3JtYXRFcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgdGhlIGRlZmF1bHQgbWVzc2FnZSBmb3I6IFxcXCJcIiArIGlkICsgXCJcXFwiLCByZW5kZXJpbmcgbWVzc2FnZSB2ZXJiYXRpbVwiLCBsb2NhbGUsIG1lc3NhZ2VEZXNjcmlwdG9yLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkZWZhdWx0TWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4gaWQ7XG59IiwiaW1wb3J0IHsgZ2V0TmFtZWRGb3JtYXQsIGZpbHRlclByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBJbnRsRXJyb3IsIEludGxFcnJvckNvZGUgfSBmcm9tICcuL2Vycm9yJztcbnZhciBOVU1CRVJfRk9STUFUX09QVElPTlMgPSBbJ2xvY2FsZU1hdGNoZXInLCAnc3R5bGUnLCAnY3VycmVuY3knLCAnY3VycmVuY3lEaXNwbGF5JywgJ3VuaXQnLCAndW5pdERpc3BsYXknLCAndXNlR3JvdXBpbmcnLCAnbWluaW11bUludGVnZXJEaWdpdHMnLCAnbWluaW11bUZyYWN0aW9uRGlnaXRzJywgJ21heGltdW1GcmFjdGlvbkRpZ2l0cycsICdtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMnLCAnbWF4aW11bVNpZ25pZmljYW50RGlnaXRzJywgLy8gRVMyMDIwIE51bWJlckZvcm1hdFxuJ2NvbXBhY3REaXNwbGF5JywgJ2N1cnJlbmN5RGlzcGxheScsICdjdXJyZW5jeVNpZ24nLCAnbm90YXRpb24nLCAnc2lnbkRpc3BsYXknLCAndW5pdCcsICd1bml0RGlzcGxheScsICdudW1iZXJpbmdTeXN0ZW0nXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoX2EsIGdldE51bWJlckZvcm1hdCwgb3B0aW9ucykge1xuICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLFxuICAgICAgZm9ybWF0cyA9IF9hLmZvcm1hdHMsXG4gICAgICBvbkVycm9yID0gX2Eub25FcnJvcjtcblxuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0O1xuICB2YXIgZGVmYXVsdHMgPSBmb3JtYXQgJiYgZ2V0TmFtZWRGb3JtYXQoZm9ybWF0cywgJ251bWJlcicsIGZvcm1hdCwgb25FcnJvcikgfHwge307XG4gIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBOVU1CRVJfRk9STUFUX09QVElPTlMsIGRlZmF1bHRzKTtcbiAgcmV0dXJuIGdldE51bWJlckZvcm1hdChsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uZmlnLm9uRXJyb3IobmV3IEludGxFcnJvcihJbnRsRXJyb3JDb2RlLkZPUk1BVF9FUlJPUiwgJ0Vycm9yIGZvcm1hdHRpbmcgbnVtYmVyLicsIGUpKTtcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlclRvUGFydHMoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBnZXRGb3JtYXR0ZXIoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdFRvUGFydHModmFsdWUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uZmlnLm9uRXJyb3IobmV3IEludGxFcnJvcihJbnRsRXJyb3JDb2RlLkZPUk1BVF9FUlJPUiwgJ0Vycm9yIGZvcm1hdHRpbmcgbnVtYmVyLicsIGUpKTtcbiAgfVxuXG4gIHJldHVybiBbXTtcbn0iLCJpbXBvcnQgeyBnZXROYW1lZEZvcm1hdCwgZmlsdGVyUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEZvcm1hdEVycm9yLCBFcnJvckNvZGUgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgTWVzc2FnZUZvcm1hdEVycm9yIH0gZnJvbSAnLi9lcnJvcic7XG52YXIgUkVMQVRJVkVfVElNRV9GT1JNQVRfT1BUSU9OUyA9IFsnbnVtZXJpYycsICdzdHlsZSddO1xuXG5mdW5jdGlvbiBnZXRGb3JtYXR0ZXIoX2EsIGdldFJlbGF0aXZlVGltZUZvcm1hdCwgb3B0aW9ucykge1xuICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLFxuICAgICAgZm9ybWF0cyA9IF9hLmZvcm1hdHMsXG4gICAgICBvbkVycm9yID0gX2Eub25FcnJvcjtcblxuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0O1xuICB2YXIgZGVmYXVsdHMgPSAhIWZvcm1hdCAmJiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCAncmVsYXRpdmUnLCBmb3JtYXQsIG9uRXJyb3IpIHx8IHt9O1xuICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgUkVMQVRJVkVfVElNRV9GT1JNQVRfT1BUSU9OUywgZGVmYXVsdHMpO1xuICByZXR1cm4gZ2V0UmVsYXRpdmVUaW1lRm9ybWF0KGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZShjb25maWcsIGdldFJlbGF0aXZlVGltZUZvcm1hdCwgdmFsdWUsIHVuaXQsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICghdW5pdCkge1xuICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgfVxuXG4gIHZhciBSZWxhdGl2ZVRpbWVGb3JtYXQgPSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDtcblxuICBpZiAoIVJlbGF0aXZlVGltZUZvcm1hdCkge1xuICAgIGNvbmZpZy5vbkVycm9yKG5ldyBGb3JtYXRFcnJvcihcIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdFxcXCJcXG5cIiwgRXJyb3JDb2RlLk1JU1NJTkdfSU5UTF9BUEkpKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsIGdldFJlbGF0aXZlVGltZUZvcm1hdCwgb3B0aW9ucykuZm9ybWF0KHZhbHVlLCB1bml0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbmZpZy5vbkVycm9yKG5ldyBNZXNzYWdlRm9ybWF0RXJyb3IoJ0Vycm9yIGZvcm1hdHRpbmcgcmVsYXRpdmUgdGltZS4nLCBlKSk7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn0iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMsIGdldE5hbWVkRm9ybWF0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBJbnRsRXJyb3IsIEludGxFcnJvckNvZGUgfSBmcm9tICcuL2Vycm9yJztcbnZhciBEQVRFX1RJTUVfRk9STUFUX09QVElPTlMgPSBbJ2xvY2FsZU1hdGNoZXInLCAnZm9ybWF0TWF0Y2hlcicsICd0aW1lWm9uZScsICdob3VyMTInLCAnd2Vla2RheScsICdlcmEnLCAneWVhcicsICdtb250aCcsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgJ3RpbWVab25lTmFtZScsICdob3VyQ3ljbGUnLCAnZGF0ZVN0eWxlJywgJ3RpbWVTdHlsZScsICdjYWxlbmRhcicsIC8vICdkYXlQZXJpb2QnLFxuJ251bWJlcmluZ1N5c3RlbSddO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlcihfYSwgdHlwZSwgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSxcbiAgICAgIGZvcm1hdHMgPSBfYS5mb3JtYXRzLFxuICAgICAgb25FcnJvciA9IF9hLm9uRXJyb3IsXG4gICAgICB0aW1lWm9uZSA9IF9hLnRpbWVab25lO1xuXG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG5cbiAgdmFyIGRlZmF1bHRzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRpbWVab25lICYmIHtcbiAgICB0aW1lWm9uZTogdGltZVpvbmVcbiAgfSksIGZvcm1hdCAmJiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCB0eXBlLCBmb3JtYXQsIG9uRXJyb3IpKTtcblxuICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgREFURV9USU1FX0ZPUk1BVF9PUFRJT05TLCAvLyBAdHMtZXhwZWN0LWVycm9yIGVzMjAyMCBoYXMgYSBsb3Qgc3R1ZmYgZnJvbSBlczIwMjEgYmxlZWQgaW5cbiAgZGVmYXVsdHMpO1xuXG4gIGlmICh0eXBlID09PSAndGltZScgJiYgIWZpbHRlcmVkT3B0aW9ucy5ob3VyICYmICFmaWx0ZXJlZE9wdGlvbnMubWludXRlICYmICFmaWx0ZXJlZE9wdGlvbnMuc2Vjb25kICYmICFmaWx0ZXJlZE9wdGlvbnMudGltZVN0eWxlICYmICFmaWx0ZXJlZE9wdGlvbnMuZGF0ZVN0eWxlKSB7XG4gICAgLy8gQWRkIGRlZmF1bHQgZm9ybWF0dGluZyBvcHRpb25zIGlmIGhvdXIsIG1pbnV0ZSwgb3Igc2Vjb25kIGlzbid0IGRlZmluZWQuXG4gICAgZmlsdGVyZWRPcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGZpbHRlcmVkT3B0aW9ucyksIHtcbiAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgIG1pbnV0ZTogJ251bWVyaWMnXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZ2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCkge1xuICB2YXIgX2EgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIF9hW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICB9XG5cbiAgdmFyIHZhbHVlID0gX2FbMF0sXG4gICAgICBfYiA9IF9hWzFdLFxuICAgICAgb3B0aW9ucyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iO1xuICB2YXIgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSB8fCAwKSA6IHZhbHVlO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICdkYXRlJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbmZpZy5vbkVycm9yKG5ldyBJbnRsRXJyb3IoSW50bEVycm9yQ29kZS5GT1JNQVRfRVJST1IsICdFcnJvciBmb3JtYXR0aW5nIGRhdGUuJywgZSkpO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyhkYXRlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lKGNvbmZpZywgZ2V0RGF0ZVRpbWVGb3JtYXQpIHtcbiAgdmFyIF9hID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBfYVtfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IF9hWzBdLFxuICAgICAgX2IgPSBfYVsxXSxcbiAgICAgIG9wdGlvbnMgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYjtcbiAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcblxuICB0cnkge1xuICAgIHJldHVybiBnZXRGb3JtYXR0ZXIoY29uZmlnLCAndGltZScsIGdldERhdGVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25maWcub25FcnJvcihuZXcgSW50bEVycm9yKEludGxFcnJvckNvZGUuRk9STUFUX0VSUk9SLCAnRXJyb3IgZm9ybWF0dGluZyB0aW1lLicsIGUpKTtcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcoZGF0ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZVRpbWVSYW5nZShjb25maWcsIGdldERhdGVUaW1lRm9ybWF0KSB7XG4gIHZhciBfYSA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgX2FbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICB2YXIgZnJvbSA9IF9hWzBdLFxuICAgICAgdG8gPSBfYVsxXSxcbiAgICAgIF9iID0gX2FbMl0sXG4gICAgICBvcHRpb25zID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gIHZhciB0aW1lWm9uZSA9IGNvbmZpZy50aW1lWm9uZSxcbiAgICAgIGxvY2FsZSA9IGNvbmZpZy5sb2NhbGUsXG4gICAgICBvbkVycm9yID0gY29uZmlnLm9uRXJyb3I7XG4gIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBEQVRFX1RJTUVfRk9STUFUX09QVElPTlMsIHRpbWVab25lID8ge1xuICAgIHRpbWVab25lOiB0aW1lWm9uZVxuICB9IDoge30pO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldERhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKS5mb3JtYXRSYW5nZShmcm9tLCB0byk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvbkVycm9yKG5ldyBJbnRsRXJyb3IoSW50bEVycm9yQ29kZS5GT1JNQVRfRVJST1IsICdFcnJvciBmb3JtYXR0aW5nIGRhdGUgdGltZSByYW5nZS4nLCBlKSk7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKGZyb20pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGVUb1BhcnRzKGNvbmZpZywgZ2V0RGF0ZVRpbWVGb3JtYXQpIHtcbiAgdmFyIF9hID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBfYVtfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IF9hWzBdLFxuICAgICAgX2IgPSBfYVsxXSxcbiAgICAgIG9wdGlvbnMgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYjtcbiAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcblxuICB0cnkge1xuICAgIHJldHVybiBnZXRGb3JtYXR0ZXIoY29uZmlnLCAnZGF0ZScsIGdldERhdGVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXRUb1BhcnRzKGRhdGUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uZmlnLm9uRXJyb3IobmV3IEludGxFcnJvcihJbnRsRXJyb3JDb2RlLkZPUk1BVF9FUlJPUiwgJ0Vycm9yIGZvcm1hdHRpbmcgZGF0ZS4nLCBlKSk7XG4gIH1cblxuICByZXR1cm4gW107XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVRvUGFydHMoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCkge1xuICB2YXIgX2EgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIF9hW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICB9XG5cbiAgdmFyIHZhbHVlID0gX2FbMF0sXG4gICAgICBfYiA9IF9hWzFdLFxuICAgICAgb3B0aW9ucyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iO1xuICB2YXIgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSB8fCAwKSA6IHZhbHVlO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICd0aW1lJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25maWcub25FcnJvcihuZXcgSW50bEVycm9yKEludGxFcnJvckNvZGUuRk9STUFUX0VSUk9SLCAnRXJyb3IgZm9ybWF0dGluZyB0aW1lLicsIGUpKTtcbiAgfVxuXG4gIHJldHVybiBbXTtcbn0iLCJpbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTWVzc2FnZUZvcm1hdEVycm9yIH0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQgeyBFcnJvckNvZGUsIEZvcm1hdEVycm9yIH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0JztcbnZhciBQTFVSQUxfRk9STUFUX09QVElPTlMgPSBbJ2xvY2FsZU1hdGNoZXInLCAndHlwZSddO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBsdXJhbChfYSwgZ2V0UGx1cmFsUnVsZXMsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsXG4gICAgICBvbkVycm9yID0gX2Eub25FcnJvcjtcblxuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgaWYgKCFJbnRsLlBsdXJhbFJ1bGVzKSB7XG4gICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXBsdXJhbHJ1bGVzXFxcIlxcblwiLCBFcnJvckNvZGUuTUlTU0lOR19JTlRMX0FQSSkpO1xuICB9XG5cbiAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlclByb3BzKG9wdGlvbnMsIFBMVVJBTF9GT1JNQVRfT1BUSU9OUyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZ2V0UGx1cmFsUnVsZXMobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpLnNlbGVjdCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvbkVycm9yKG5ldyBNZXNzYWdlRm9ybWF0RXJyb3IoJ0Vycm9yIGZvcm1hdHRpbmcgcGx1cmFsLicsIGUpKTtcbiAgfVxuXG4gIHJldHVybiAnb3RoZXInO1xufSIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybWF0RXJyb3IsIEVycm9yQ29kZSB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBJbnRsRXJyb3IsIEludGxFcnJvckNvZGUgfSBmcm9tICcuL2Vycm9yJztcbnZhciBMSVNUX0ZPUk1BVF9PUFRJT05TID0gWydsb2NhbGVNYXRjaGVyJywgJ3R5cGUnLCAnc3R5bGUnXTtcbnZhciBub3cgPSBEYXRlLm5vdygpO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVRva2VuKGkpIHtcbiAgcmV0dXJuIG5vdyArIFwiX1wiICsgaSArIFwiX1wiICsgbm93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGlzdChvcHRzLCBnZXRMaXN0Rm9ybWF0LCB2YWx1ZXMsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciByZXN1bHRzID0gZm9ybWF0TGlzdFRvUGFydHMob3B0cywgZ2V0TGlzdEZvcm1hdCwgdmFsdWVzLCBvcHRpb25zKS5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgZWwpIHtcbiAgICB2YXIgdmFsID0gZWwudmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGFsbC5wdXNoKHZhbCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWxsW2FsbC5sZW5ndGggLSAxXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGFsbFthbGwubGVuZ3RoIC0gMV0gKz0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGwucHVzaCh2YWwpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGw7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoID09PSAxID8gcmVzdWx0c1swXSA6IHJlc3VsdHM7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGlzdFRvUGFydHMoX2EsIGdldExpc3RGb3JtYXQsIHZhbHVlcywgb3B0aW9ucykge1xuICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLFxuICAgICAgb25FcnJvciA9IF9hLm9uRXJyb3I7XG5cbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBMaXN0Rm9ybWF0ID0gSW50bC5MaXN0Rm9ybWF0O1xuXG4gIGlmICghTGlzdEZvcm1hdCkge1xuICAgIG9uRXJyb3IobmV3IEZvcm1hdEVycm9yKFwiSW50bC5MaXN0Rm9ybWF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLWxpc3Rmb3JtYXRcXFwiXFxuXCIsIEVycm9yQ29kZS5NSVNTSU5HX0lOVExfQVBJKSk7XG4gIH1cblxuICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgTElTVF9GT1JNQVRfT1BUSU9OUyk7XG5cbiAgdHJ5IHtcbiAgICB2YXIgcmljaFZhbHVlc18xID0ge307XG4gICAgdmFyIHNlcmlhbGl6ZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHZhciBpZCA9IGdlbmVyYXRlVG9rZW4oaSk7XG4gICAgICAgIHJpY2hWYWx1ZXNfMVtpZF0gPSB2O1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdldExpc3RGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpLmZvcm1hdFRvUGFydHMoc2VyaWFsaXplZFZhbHVlcykubWFwKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICByZXR1cm4gcGFydC50eXBlID09PSAnbGl0ZXJhbCcgPyBwYXJ0IDogX19hc3NpZ24oX19hc3NpZ24oe30sIHBhcnQpLCB7XG4gICAgICAgIHZhbHVlOiByaWNoVmFsdWVzXzFbcGFydC52YWx1ZV0gfHwgcGFydC52YWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvbkVycm9yKG5ldyBJbnRsRXJyb3IoSW50bEVycm9yQ29kZS5GT1JNQVRfRVJST1IsICdFcnJvciBmb3JtYXR0aW5nIGxpc3QuJywgZSkpO1xuICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gIHJldHVybiB2YWx1ZXM7XG59IiwiaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEZvcm1hdEVycm9yLCBFcnJvckNvZGUgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgSW50bEVycm9yQ29kZSwgSW50bEVycm9yIH0gZnJvbSAnLi9lcnJvcic7XG52YXIgRElTUExBWV9OQU1FU19PUFRPTlMgPSBbJ2xvY2FsZU1hdGNoZXInLCAnc3R5bGUnLCAndHlwZScsICdmYWxsYmFjayddO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpc3BsYXlOYW1lKF9hLCBnZXREaXNwbGF5TmFtZXMsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsXG4gICAgICBvbkVycm9yID0gX2Eub25FcnJvcjtcbiAgdmFyIERpc3BsYXlOYW1lcyA9IEludGwuRGlzcGxheU5hbWVzO1xuXG4gIGlmICghRGlzcGxheU5hbWVzKSB7XG4gICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLkRpc3BsYXlOYW1lcyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuXFxuVHJ5IHBvbHlmaWxsaW5nIGl0IHVzaW5nIFxcXCJAZm9ybWF0anMvaW50bC1kaXNwbGF5bmFtZXNcXFwiXFxuXCIsIEVycm9yQ29kZS5NSVNTSU5HX0lOVExfQVBJKSk7XG4gIH1cblxuICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgRElTUExBWV9OQU1FU19PUFRPTlMpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldERpc3BsYXlOYW1lcyhsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucykub2YodmFsdWUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgb25FcnJvcihuZXcgSW50bEVycm9yKEludGxFcnJvckNvZGUuRk9STUFUX0VSUk9SLCAnRXJyb3IgZm9ybWF0dGluZyBkaXNwbGF5IG5hbWUuJywgZSkpO1xuICB9XG59IiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1hdHRlcnMsIERFRkFVTFRfSU5UTF9DT05GSUcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEludmFsaWRDb25maWdFcnJvciwgTWlzc2luZ0RhdGFFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXROdW1iZXJUb1BhcnRzIH0gZnJvbSAnLi9udW1iZXInO1xuaW1wb3J0IHsgZm9ybWF0UmVsYXRpdmVUaW1lIH0gZnJvbSAnLi9yZWxhdGl2ZVRpbWUnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSwgZm9ybWF0RGF0ZVRvUGFydHMsIGZvcm1hdFRpbWUsIGZvcm1hdFRpbWVUb1BhcnRzLCBmb3JtYXREYXRlVGltZVJhbmdlIH0gZnJvbSAnLi9kYXRlVGltZSc7XG5pbXBvcnQgeyBmb3JtYXRQbHVyYWwgfSBmcm9tICcuL3BsdXJhbCc7XG5pbXBvcnQgeyBmb3JtYXRNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IGZvcm1hdExpc3QsIGZvcm1hdExpc3RUb1BhcnRzIH0gZnJvbSAnLi9saXN0JztcbmltcG9ydCB7IGZvcm1hdERpc3BsYXlOYW1lIH0gZnJvbSAnLi9kaXNwbGF5TmFtZSc7XG5cbmZ1bmN0aW9uIG1lc3NhZ2VzQ29udGFpblN0cmluZyhtZXNzYWdlcykge1xuICB2YXIgZmlyc3RNZXNzYWdlID0gbWVzc2FnZXMgPyBtZXNzYWdlc1tPYmplY3Qua2V5cyhtZXNzYWdlcylbMF1dIDogdW5kZWZpbmVkO1xuICByZXR1cm4gdHlwZW9mIGZpcnN0TWVzc2FnZSA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUNvbmZpZ01lc3NhZ2VzKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzICYmIG1lc3NhZ2VzQ29udGFpblN0cmluZyhjb25maWcubWVzc2FnZXMgfHwge30pKSB7XG4gICAgY29uc29sZS53YXJuKFwiW0Bmb3JtYXRqcy9pbnRsXSBcXFwiZGVmYXVsdFJpY2hUZXh0RWxlbWVudHNcXFwiIHdhcyBzcGVjaWZpZWQgYnV0IFxcXCJtZXNzYWdlXFxcIiB3YXMgbm90IHByZS1jb21waWxlZC4gXFxuUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFxcXCJAZm9ybWF0anMvY2xpXFxcIiB0byBwcmUtY29tcGlsZSB5b3VyIG1lc3NhZ2VzIGZvciBwZXJmb3JtYW5jZS5cXG5Gb3IgbW9yZSBkZXRhaWxzIHNlZSBodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvZ2V0dGluZy1zdGFydGVkL21lc3NhZ2UtZGlzdHJpYnV0aW9uXCIpO1xuICB9XG59XG4vKipcbiAqIENyZWF0ZSBpbnRsIG9iamVjdFxuICogQHBhcmFtIGNvbmZpZyBpbnRsIGNvbmZpZ1xuICogQHBhcmFtIGNhY2hlIGNhY2hlIGZvciBmb3JtYXR0ZXIgaW5zdGFuY2VzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRsKGNvbmZpZywgY2FjaGUpIHtcbiAgdmFyIGZvcm1hdHRlcnMgPSBjcmVhdGVGb3JtYXR0ZXJzKGNhY2hlKTtcblxuICB2YXIgcmVzb2x2ZWRDb25maWcgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgREVGQVVMVF9JTlRMX0NPTkZJRyksIGNvbmZpZyk7XG5cbiAgdmFyIGxvY2FsZSA9IHJlc29sdmVkQ29uZmlnLmxvY2FsZSxcbiAgICAgIGRlZmF1bHRMb2NhbGUgPSByZXNvbHZlZENvbmZpZy5kZWZhdWx0TG9jYWxlLFxuICAgICAgb25FcnJvciA9IHJlc29sdmVkQ29uZmlnLm9uRXJyb3I7XG5cbiAgaWYgKCFsb2NhbGUpIHtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgb25FcnJvcihuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFwiXFxcImxvY2FsZVxcXCIgd2FzIG5vdCBjb25maWd1cmVkLCB1c2luZyBcXFwiXCIgKyBkZWZhdWx0TG9jYWxlICsgXCJcXFwiIGFzIGZhbGxiYWNrLiBTZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3JlYWN0LWludGwvYXBpI2ludGxzaGFwZSBmb3IgbW9yZSBkZXRhaWxzXCIpKTtcbiAgICB9IC8vIFNpbmNlIHRoZXJlJ3Mgbm8gcmVnaXN0ZXJlZCBsb2NhbGUgZGF0YSBmb3IgYGxvY2FsZWAsIHRoaXMgd2lsbFxuICAgIC8vIGZhbGxiYWNrIHRvIHRoZSBgZGVmYXVsdExvY2FsZWAgdG8gbWFrZSBzdXJlIHRoaW5ncyBjYW4gcmVuZGVyLlxuICAgIC8vIFRoZSBgbWVzc2FnZXNgIGFyZSBvdmVycmlkZGVuIHRvIHRoZSBgZGVmYXVsdFByb3BzYCBlbXB0eSBvYmplY3RcbiAgICAvLyB0byBtYWludGFpbiByZWZlcmVudGlhbCBlcXVhbGl0eSBhY3Jvc3MgcmUtcmVuZGVycy4gSXQncyBhc3N1bWVkXG4gICAgLy8gZWFjaCA8Rm9ybWF0dGVkTWVzc2FnZT4gY29udGFpbnMgYSBgZGVmYXVsdE1lc3NhZ2VgIHByb3AuXG5cblxuICAgIHJlc29sdmVkQ29uZmlnLmxvY2FsZSA9IHJlc29sdmVkQ29uZmlnLmRlZmF1bHRMb2NhbGUgfHwgJ2VuJztcbiAgfSBlbHNlIGlmICghSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoICYmIG9uRXJyb3IpIHtcbiAgICBvbkVycm9yKG5ldyBNaXNzaW5nRGF0YUVycm9yKFwiTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgbG9jYWxlOiBcXFwiXCIgKyBsb2NhbGUgKyBcIlxcXCIgaW4gSW50bC5OdW1iZXJGb3JtYXQuIFVzaW5nIGRlZmF1bHQgbG9jYWxlOiBcXFwiXCIgKyBkZWZhdWx0TG9jYWxlICsgXCJcXFwiIGFzIGZhbGxiYWNrLiBTZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3JlYWN0LWludGwjcnVudGltZS1yZXF1aXJlbWVudHMgZm9yIG1vcmUgZGV0YWlsc1wiKSk7XG4gIH0gZWxzZSBpZiAoIUludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoICYmIG9uRXJyb3IpIHtcbiAgICBvbkVycm9yKG5ldyBNaXNzaW5nRGF0YUVycm9yKFwiTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgbG9jYWxlOiBcXFwiXCIgKyBsb2NhbGUgKyBcIlxcXCIgaW4gSW50bC5EYXRlVGltZUZvcm1hdC4gVXNpbmcgZGVmYXVsdCBsb2NhbGU6IFxcXCJcIiArIGRlZmF1bHRMb2NhbGUgKyBcIlxcXCIgYXMgZmFsbGJhY2suIFNlZSBodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvcmVhY3QtaW50bCNydW50aW1lLXJlcXVpcmVtZW50cyBmb3IgbW9yZSBkZXRhaWxzXCIpKTtcbiAgfVxuXG4gIHZlcmlmeUNvbmZpZ01lc3NhZ2VzKHJlc29sdmVkQ29uZmlnKTtcbiAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXNvbHZlZENvbmZpZyksIHtcbiAgICBmb3JtYXR0ZXJzOiBmb3JtYXR0ZXJzLFxuICAgIGZvcm1hdE51bWJlcjogZm9ybWF0TnVtYmVyLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KSxcbiAgICBmb3JtYXROdW1iZXJUb1BhcnRzOiBmb3JtYXROdW1iZXJUb1BhcnRzLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KSxcbiAgICBmb3JtYXRSZWxhdGl2ZVRpbWU6IGZvcm1hdFJlbGF0aXZlVGltZS5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldFJlbGF0aXZlVGltZUZvcm1hdCksXG4gICAgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZS5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KSxcbiAgICBmb3JtYXREYXRlVG9QYXJ0czogZm9ybWF0RGF0ZVRvUGFydHMuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXREYXRlVGltZUZvcm1hdCksXG4gICAgZm9ybWF0VGltZTogZm9ybWF0VGltZS5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KSxcbiAgICBmb3JtYXREYXRlVGltZVJhbmdlOiBmb3JtYXREYXRlVGltZVJhbmdlLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0RGF0ZVRpbWVGb3JtYXQpLFxuICAgIGZvcm1hdFRpbWVUb1BhcnRzOiBmb3JtYXRUaW1lVG9QYXJ0cy5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KSxcbiAgICBmb3JtYXRQbHVyYWw6IGZvcm1hdFBsdXJhbC5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldFBsdXJhbFJ1bGVzKSxcbiAgICBmb3JtYXRNZXNzYWdlOiBmb3JtYXRNZXNzYWdlLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMpLFxuICAgIGZvcm1hdExpc3Q6IGZvcm1hdExpc3QuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXRMaXN0Rm9ybWF0KSxcbiAgICBmb3JtYXRMaXN0VG9QYXJ0czogZm9ybWF0TGlzdFRvUGFydHMuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXRMaXN0Rm9ybWF0KSxcbiAgICBmb3JtYXREaXNwbGF5TmFtZTogZm9ybWF0RGlzcGxheU5hbWUuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXREaXNwbGF5TmFtZXMpXG4gIH0pO1xufSIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcywgX19yZXN0LCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJy4vaW5qZWN0SW50bCc7XG5pbXBvcnQgeyBERUZBVUxUX0lOVExfQ09ORklHLCBpbnZhcmlhbnRJbnRsQ29udGV4dCwgYXNzaWduVW5pcXVlS2V5c1RvUGFydHMsIHNoYWxsb3dFcXVhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGZvcm1hdE1lc3NhZ2UgYXMgY29yZUZvcm1hdE1lc3NhZ2UsIGNyZWF0ZUludGwgYXMgY29yZUNyZWF0ZUludGwsIGNyZWF0ZUludGxDYWNoZSB9IGZyb20gJ0Bmb3JtYXRqcy9pbnRsJztcbmltcG9ydCB7IGlzRm9ybWF0WE1MRWxlbWVudEZuIH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0JztcblxuZnVuY3Rpb24gcHJvY2Vzc0ludGxDb25maWcoY29uZmlnKSB7XG4gIHJldHVybiB7XG4gICAgbG9jYWxlOiBjb25maWcubG9jYWxlLFxuICAgIHRpbWVab25lOiBjb25maWcudGltZVpvbmUsXG4gICAgZm9ybWF0czogY29uZmlnLmZvcm1hdHMsXG4gICAgdGV4dENvbXBvbmVudDogY29uZmlnLnRleHRDb21wb25lbnQsXG4gICAgbWVzc2FnZXM6IGNvbmZpZy5tZXNzYWdlcyxcbiAgICBkZWZhdWx0TG9jYWxlOiBjb25maWcuZGVmYXVsdExvY2FsZSxcbiAgICBkZWZhdWx0Rm9ybWF0czogY29uZmlnLmRlZmF1bHRGb3JtYXRzLFxuICAgIG9uRXJyb3I6IGNvbmZpZy5vbkVycm9yLFxuICAgIHdyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQ6IGNvbmZpZy53cmFwUmljaFRleHRDaHVua3NJbkZyYWdtZW50LFxuICAgIGRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzOiBjb25maWcuZGVmYXVsdFJpY2hUZXh0RWxlbWVudHNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzaWduVW5pcXVlS2V5c1RvRm9ybWF0WE1MRWxlbWVudEZuQXJndW1lbnQodmFsdWVzKSB7XG4gIGlmICghdmFsdWVzKSB7XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZXMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrKSB7XG4gICAgdmFyIHYgPSB2YWx1ZXNba107XG4gICAgYWNjW2tdID0gaXNGb3JtYXRYTUxFbGVtZW50Rm4odikgPyBhc3NpZ25VbmlxdWVLZXlzVG9QYXJ0cyh2KSA6IHY7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuXG52YXIgZm9ybWF0TWVzc2FnZSA9IGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UoY29uZmlnLCBmb3JtYXR0ZXJzLCBkZXNjcmlwdG9yLCByYXdWYWx1ZXMpIHtcbiAgdmFyIHJlc3QgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDQ7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIHJlc3RbX2kgLSA0XSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICB2YXIgdmFsdWVzID0gYXNzaWduVW5pcXVlS2V5c1RvRm9ybWF0WE1MRWxlbWVudEZuQXJndW1lbnQocmF3VmFsdWVzKTtcbiAgdmFyIGNodW5rcyA9IGNvcmVGb3JtYXRNZXNzYWdlLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbY29uZmlnLCBmb3JtYXR0ZXJzLCBkZXNjcmlwdG9yLCB2YWx1ZXNdLCByZXN0KSk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY2h1bmtzKSkge1xuICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNodW5rcyk7XG4gIH1cblxuICByZXR1cm4gY2h1bmtzO1xufTtcbi8qKlxuICogQ3JlYXRlIGludGwgb2JqZWN0XG4gKiBAcGFyYW0gY29uZmlnIGludGwgY29uZmlnXG4gKiBAcGFyYW0gY2FjaGUgY2FjaGUgZm9yIGZvcm1hdHRlciBpbnN0YW5jZXMgdG8gcHJldmVudCBtZW1vcnkgbGVha1xuICovXG5cblxuZXhwb3J0IHZhciBjcmVhdGVJbnRsID0gZnVuY3Rpb24gY3JlYXRlSW50bChfYSwgY2FjaGUpIHtcbiAgdmFyIHJhd0RlZmF1bHRSaWNoVGV4dEVsZW1lbnRzID0gX2EuZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMsXG4gICAgICBjb25maWcgPSBfX3Jlc3QoX2EsIFtcImRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzXCJdKTtcblxuICB2YXIgZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMgPSBhc3NpZ25VbmlxdWVLZXlzVG9Gb3JtYXRYTUxFbGVtZW50Rm5Bcmd1bWVudChyYXdEZWZhdWx0UmljaFRleHRFbGVtZW50cyk7XG4gIHZhciBjb3JlSW50bCA9IGNvcmVDcmVhdGVJbnRsKF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX0lOVExfQ09ORklHKSwgY29uZmlnKSwge1xuICAgIGRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzOiBkZWZhdWx0UmljaFRleHRFbGVtZW50c1xuICB9KSwgY2FjaGUpO1xuICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGNvcmVJbnRsKSwge1xuICAgIGZvcm1hdE1lc3NhZ2U6IGZvcm1hdE1lc3NhZ2UuYmluZChudWxsLCB7XG4gICAgICBsb2NhbGU6IGNvcmVJbnRsLmxvY2FsZSxcbiAgICAgIHRpbWVab25lOiBjb3JlSW50bC50aW1lWm9uZSxcbiAgICAgIGZvcm1hdHM6IGNvcmVJbnRsLmZvcm1hdHMsXG4gICAgICBkZWZhdWx0TG9jYWxlOiBjb3JlSW50bC5kZWZhdWx0TG9jYWxlLFxuICAgICAgZGVmYXVsdEZvcm1hdHM6IGNvcmVJbnRsLmRlZmF1bHRGb3JtYXRzLFxuICAgICAgbWVzc2FnZXM6IGNvcmVJbnRsLm1lc3NhZ2VzLFxuICAgICAgb25FcnJvcjogY29yZUludGwub25FcnJvcixcbiAgICAgIGRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzOiBkZWZhdWx0UmljaFRleHRFbGVtZW50c1xuICAgIH0sIGNvcmVJbnRsLmZvcm1hdHRlcnMpXG4gIH0pO1xufTtcblxudmFyIEludGxQcm92aWRlciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhJbnRsUHJvdmlkZXIsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gSW50bFByb3ZpZGVyKCkge1xuICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNhY2hlOiBfdGhpcy5jYWNoZSxcbiAgICAgIGludGw6IGNyZWF0ZUludGwocHJvY2Vzc0ludGxDb25maWcoX3RoaXMucHJvcHMpLCBfdGhpcy5jYWNoZSksXG4gICAgICBwcmV2Q29uZmlnOiBwcm9jZXNzSW50bENvbmZpZyhfdGhpcy5wcm9wcylcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIEludGxQcm92aWRlci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgdmFyIHByZXZDb25maWcgPSBfYS5wcmV2Q29uZmlnLFxuICAgICAgICBjYWNoZSA9IF9hLmNhY2hlO1xuICAgIHZhciBjb25maWcgPSBwcm9jZXNzSW50bENvbmZpZyhwcm9wcyk7XG5cbiAgICBpZiAoIXNoYWxsb3dFcXVhbChwcmV2Q29uZmlnLCBjb25maWcpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnRsOiBjcmVhdGVJbnRsKGNvbmZpZywgY2FjaGUpLFxuICAgICAgICBwcmV2Q29uZmlnOiBjb25maWdcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgSW50bFByb3ZpZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgaW52YXJpYW50SW50bENvbnRleHQodGhpcy5zdGF0ZS5pbnRsKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChQcm92aWRlciwge1xuICAgICAgdmFsdWU6IHRoaXMuc3RhdGUuaW50bFxuICAgIH0sIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICB9O1xuXG4gIEludGxQcm92aWRlci5kaXNwbGF5TmFtZSA9ICdJbnRsUHJvdmlkZXInO1xuICBJbnRsUHJvdmlkZXIuZGVmYXVsdFByb3BzID0gREVGQVVMVF9JTlRMX0NPTkZJRztcbiAgcmV0dXJuIEludGxQcm92aWRlcjtcbn0oUmVhY3QuUHVyZUNvbXBvbmVudCk7XG5cbmV4cG9ydCBkZWZhdWx0IEludGxQcm92aWRlcjsiLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHdpdGhTaWRlRWZmZWN0IGZyb20gJ3JlYWN0LXNpZGUtZWZmZWN0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ3JlYWN0LWZhc3QtY29tcGFyZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IG9iamVjdEFzc2lnbiBmcm9tICdvYmplY3QtYXNzaWduJztcbnZhciBBVFRSSUJVVEVfTkFNRVMgPSB7XG4gIEJPRFk6IFwiYm9keUF0dHJpYnV0ZXNcIixcbiAgSFRNTDogXCJodG1sQXR0cmlidXRlc1wiLFxuICBUSVRMRTogXCJ0aXRsZUF0dHJpYnV0ZXNcIlxufTtcbnZhciBUQUdfTkFNRVMgPSB7XG4gIEJBU0U6IFwiYmFzZVwiLFxuICBCT0RZOiBcImJvZHlcIixcbiAgSEVBRDogXCJoZWFkXCIsXG4gIEhUTUw6IFwiaHRtbFwiLFxuICBMSU5LOiBcImxpbmtcIixcbiAgTUVUQTogXCJtZXRhXCIsXG4gIE5PU0NSSVBUOiBcIm5vc2NyaXB0XCIsXG4gIFNDUklQVDogXCJzY3JpcHRcIixcbiAgU1RZTEU6IFwic3R5bGVcIixcbiAgVElUTEU6IFwidGl0bGVcIlxufTtcbnZhciBWQUxJRF9UQUdfTkFNRVMgPSBPYmplY3Qua2V5cyhUQUdfTkFNRVMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gVEFHX05BTUVTW25hbWVdO1xufSk7XG52YXIgVEFHX1BST1BFUlRJRVMgPSB7XG4gIENIQVJTRVQ6IFwiY2hhcnNldFwiLFxuICBDU1NfVEVYVDogXCJjc3NUZXh0XCIsXG4gIEhSRUY6IFwiaHJlZlwiLFxuICBIVFRQRVFVSVY6IFwiaHR0cC1lcXVpdlwiLFxuICBJTk5FUl9IVE1MOiBcImlubmVySFRNTFwiLFxuICBJVEVNX1BST1A6IFwiaXRlbXByb3BcIixcbiAgTkFNRTogXCJuYW1lXCIsXG4gIFBST1BFUlRZOiBcInByb3BlcnR5XCIsXG4gIFJFTDogXCJyZWxcIixcbiAgU1JDOiBcInNyY1wiLFxuICBUQVJHRVQ6IFwidGFyZ2V0XCJcbn07XG52YXIgUkVBQ1RfVEFHX01BUCA9IHtcbiAgYWNjZXNza2V5OiBcImFjY2Vzc0tleVwiLFxuICBjaGFyc2V0OiBcImNoYXJTZXRcIixcbiAgY2xhc3M6IFwiY2xhc3NOYW1lXCIsXG4gIGNvbnRlbnRlZGl0YWJsZTogXCJjb250ZW50RWRpdGFibGVcIixcbiAgY29udGV4dG1lbnU6IFwiY29udGV4dE1lbnVcIixcbiAgXCJodHRwLWVxdWl2XCI6IFwiaHR0cEVxdWl2XCIsXG4gIGl0ZW1wcm9wOiBcIml0ZW1Qcm9wXCIsXG4gIHRhYmluZGV4OiBcInRhYkluZGV4XCJcbn07XG52YXIgSEVMTUVUX1BST1BTID0ge1xuICBERUZBVUxUX1RJVExFOiBcImRlZmF1bHRUaXRsZVwiLFxuICBERUZFUjogXCJkZWZlclwiLFxuICBFTkNPREVfU1BFQ0lBTF9DSEFSQUNURVJTOiBcImVuY29kZVNwZWNpYWxDaGFyYWN0ZXJzXCIsXG4gIE9OX0NIQU5HRV9DTElFTlRfU1RBVEU6IFwib25DaGFuZ2VDbGllbnRTdGF0ZVwiLFxuICBUSVRMRV9URU1QTEFURTogXCJ0aXRsZVRlbXBsYXRlXCJcbn07XG52YXIgSFRNTF9UQUdfTUFQID0gT2JqZWN0LmtleXMoUkVBQ1RfVEFHX01BUCkucmVkdWNlKGZ1bmN0aW9uIChvYmosIGtleSkge1xuICBvYmpbUkVBQ1RfVEFHX01BUFtrZXldXSA9IGtleTtcbiAgcmV0dXJuIG9iajtcbn0sIHt9KTtcbnZhciBTRUxGX0NMT1NJTkdfVEFHUyA9IFtUQUdfTkFNRVMuTk9TQ1JJUFQsIFRBR19OQU1FUy5TQ1JJUFQsIFRBR19OQU1FUy5TVFlMRV07XG52YXIgSEVMTUVUX0FUVFJJQlVURSA9IFwiZGF0YS1yZWFjdC1oZWxtZXRcIjtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmo7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbn07XG5cbnZhciBjbGFzc0NhbGxDaGVjayA9IGZ1bmN0aW9uIGNsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07XG5cbnZhciBjcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cbnZhciBpbmhlcml0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufTtcblxudmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7XG4gIHZhciB0YXJnZXQgPSB7fTtcblxuICBmb3IgKHZhciBpIGluIG9iaikge1xuICAgIGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7XG4gICAgdGFyZ2V0W2ldID0gb2JqW2ldO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cbnZhciBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuID0gZnVuY3Rpb24gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmICghc2VsZikge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmO1xufTtcblxudmFyIGVuY29kZVNwZWNpYWxDaGFyYWN0ZXJzID0gZnVuY3Rpb24gZW5jb2RlU3BlY2lhbENoYXJhY3RlcnMoc3RyKSB7XG4gIHZhciBlbmNvZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG5cbiAgaWYgKGVuY29kZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gU3RyaW5nKHN0cik7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpLnJlcGxhY2UoLycvZywgXCImI3gyNztcIik7XG59O1xuXG52YXIgZ2V0VGl0bGVGcm9tUHJvcHNMaXN0ID0gZnVuY3Rpb24gZ2V0VGl0bGVGcm9tUHJvcHNMaXN0KHByb3BzTGlzdCkge1xuICB2YXIgaW5uZXJtb3N0VGl0bGUgPSBnZXRJbm5lcm1vc3RQcm9wZXJ0eShwcm9wc0xpc3QsIFRBR19OQU1FUy5USVRMRSk7XG4gIHZhciBpbm5lcm1vc3RUZW1wbGF0ZSA9IGdldElubmVybW9zdFByb3BlcnR5KHByb3BzTGlzdCwgSEVMTUVUX1BST1BTLlRJVExFX1RFTVBMQVRFKTtcblxuICBpZiAoaW5uZXJtb3N0VGVtcGxhdGUgJiYgaW5uZXJtb3N0VGl0bGUpIHtcbiAgICAvLyB1c2UgZnVuY3Rpb24gYXJnIHRvIGF2b2lkIG5lZWQgdG8gZXNjYXBlICQgY2hhcmFjdGVyc1xuICAgIHJldHVybiBpbm5lcm1vc3RUZW1wbGF0ZS5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShpbm5lcm1vc3RUaXRsZSkgPyBpbm5lcm1vc3RUaXRsZS5qb2luKFwiXCIpIDogaW5uZXJtb3N0VGl0bGU7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaW5uZXJtb3N0RGVmYXVsdFRpdGxlID0gZ2V0SW5uZXJtb3N0UHJvcGVydHkocHJvcHNMaXN0LCBIRUxNRVRfUFJPUFMuREVGQVVMVF9USVRMRSk7XG4gIHJldHVybiBpbm5lcm1vc3RUaXRsZSB8fCBpbm5lcm1vc3REZWZhdWx0VGl0bGUgfHwgdW5kZWZpbmVkO1xufTtcblxudmFyIGdldE9uQ2hhbmdlQ2xpZW50U3RhdGUgPSBmdW5jdGlvbiBnZXRPbkNoYW5nZUNsaWVudFN0YXRlKHByb3BzTGlzdCkge1xuICByZXR1cm4gZ2V0SW5uZXJtb3N0UHJvcGVydHkocHJvcHNMaXN0LCBIRUxNRVRfUFJPUFMuT05fQ0hBTkdFX0NMSUVOVF9TVEFURSkgfHwgZnVuY3Rpb24gKCkge307XG59O1xuXG52YXIgZ2V0QXR0cmlidXRlc0Zyb21Qcm9wc0xpc3QgPSBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzRnJvbVByb3BzTGlzdCh0YWdUeXBlLCBwcm9wc0xpc3QpIHtcbiAgcmV0dXJuIHByb3BzTGlzdC5maWx0ZXIoZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wc1t0YWdUeXBlXSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgfSkubWFwKGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHJldHVybiBwcm9wc1t0YWdUeXBlXTtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uICh0YWdBdHRycywgY3VycmVudCkge1xuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgdGFnQXR0cnMsIGN1cnJlbnQpO1xuICB9LCB7fSk7XG59O1xuXG52YXIgZ2V0QmFzZVRhZ0Zyb21Qcm9wc0xpc3QgPSBmdW5jdGlvbiBnZXRCYXNlVGFnRnJvbVByb3BzTGlzdChwcmltYXJ5QXR0cmlidXRlcywgcHJvcHNMaXN0KSB7XG4gIHJldHVybiBwcm9wc0xpc3QuZmlsdGVyKGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHJldHVybiB0eXBlb2YgcHJvcHNbVEFHX05BTUVTLkJBU0VdICE9PSBcInVuZGVmaW5lZFwiO1xuICB9KS5tYXAoZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzW1RBR19OQU1FUy5CQVNFXTtcbiAgfSkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoaW5uZXJtb3N0QmFzZVRhZywgdGFnKSB7XG4gICAgaWYgKCFpbm5lcm1vc3RCYXNlVGFnLmxlbmd0aCkge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0YWcpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZUtleSA9IGtleXNbaV07XG4gICAgICAgIHZhciBsb3dlckNhc2VBdHRyaWJ1dGVLZXkgPSBhdHRyaWJ1dGVLZXkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAocHJpbWFyeUF0dHJpYnV0ZXMuaW5kZXhPZihsb3dlckNhc2VBdHRyaWJ1dGVLZXkpICE9PSAtMSAmJiB0YWdbbG93ZXJDYXNlQXR0cmlidXRlS2V5XSkge1xuICAgICAgICAgIHJldHVybiBpbm5lcm1vc3RCYXNlVGFnLmNvbmNhdCh0YWcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlubmVybW9zdEJhc2VUYWc7XG4gIH0sIFtdKTtcbn07XG5cbnZhciBnZXRUYWdzRnJvbVByb3BzTGlzdCA9IGZ1bmN0aW9uIGdldFRhZ3NGcm9tUHJvcHNMaXN0KHRhZ05hbWUsIHByaW1hcnlBdHRyaWJ1dGVzLCBwcm9wc0xpc3QpIHtcbiAgLy8gQ2FsY3VsYXRlIGxpc3Qgb2YgdGFncywgZ2l2aW5nIHByaW9yaXR5IGlubmVybW9zdCBjb21wb25lbnQgKGVuZCBvZiB0aGUgcHJvcHNsaXN0KVxuICB2YXIgYXBwcm92ZWRTZWVuVGFncyA9IHt9O1xuICByZXR1cm4gcHJvcHNMaXN0LmZpbHRlcihmdW5jdGlvbiAocHJvcHMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wc1t0YWdOYW1lXSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcHJvcHNbdGFnTmFtZV0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdhcm4oXCJIZWxtZXQ6IFwiICsgdGFnTmFtZSArIFwiIHNob3VsZCBiZSBvZiB0eXBlIFxcXCJBcnJheVxcXCIuIEluc3RlYWQgZm91bmQgdHlwZSBcXFwiXCIgKyBfdHlwZW9mKHByb3BzW3RhZ05hbWVdKSArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pLm1hcChmdW5jdGlvbiAocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHNbdGFnTmFtZV07XG4gIH0pLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGFwcHJvdmVkVGFncywgaW5zdGFuY2VUYWdzKSB7XG4gICAgdmFyIGluc3RhbmNlU2VlblRhZ3MgPSB7fTtcbiAgICBpbnN0YW5jZVRhZ3MuZmlsdGVyKGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBwcmltYXJ5QXR0cmlidXRlS2V5ID0gdm9pZCAwO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0YWcpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZUtleSA9IGtleXNbaV07XG4gICAgICAgIHZhciBsb3dlckNhc2VBdHRyaWJ1dGVLZXkgPSBhdHRyaWJ1dGVLZXkudG9Mb3dlckNhc2UoKTsgLy8gU3BlY2lhbCBydWxlIHdpdGggbGluayB0YWdzLCBzaW5jZSByZWwgYW5kIGhyZWYgYXJlIGJvdGggcHJpbWFyeSB0YWdzLCByZWwgdGFrZXMgcHJpb3JpdHlcblxuICAgICAgICBpZiAocHJpbWFyeUF0dHJpYnV0ZXMuaW5kZXhPZihsb3dlckNhc2VBdHRyaWJ1dGVLZXkpICE9PSAtMSAmJiAhKHByaW1hcnlBdHRyaWJ1dGVLZXkgPT09IFRBR19QUk9QRVJUSUVTLlJFTCAmJiB0YWdbcHJpbWFyeUF0dHJpYnV0ZUtleV0udG9Mb3dlckNhc2UoKSA9PT0gXCJjYW5vbmljYWxcIikgJiYgIShsb3dlckNhc2VBdHRyaWJ1dGVLZXkgPT09IFRBR19QUk9QRVJUSUVTLlJFTCAmJiB0YWdbbG93ZXJDYXNlQXR0cmlidXRlS2V5XS50b0xvd2VyQ2FzZSgpID09PSBcInN0eWxlc2hlZXRcIikpIHtcbiAgICAgICAgICBwcmltYXJ5QXR0cmlidXRlS2V5ID0gbG93ZXJDYXNlQXR0cmlidXRlS2V5O1xuICAgICAgICB9IC8vIFNwZWNpYWwgY2FzZSBmb3IgaW5uZXJIVE1MIHdoaWNoIGRvZXNuJ3Qgd29yayBsb3dlcmNhc2VkXG5cblxuICAgICAgICBpZiAocHJpbWFyeUF0dHJpYnV0ZXMuaW5kZXhPZihhdHRyaWJ1dGVLZXkpICE9PSAtMSAmJiAoYXR0cmlidXRlS2V5ID09PSBUQUdfUFJPUEVSVElFUy5JTk5FUl9IVE1MIHx8IGF0dHJpYnV0ZUtleSA9PT0gVEFHX1BST1BFUlRJRVMuQ1NTX1RFWFQgfHwgYXR0cmlidXRlS2V5ID09PSBUQUdfUFJPUEVSVElFUy5JVEVNX1BST1ApKSB7XG4gICAgICAgICAgcHJpbWFyeUF0dHJpYnV0ZUtleSA9IGF0dHJpYnV0ZUtleTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXByaW1hcnlBdHRyaWJ1dGVLZXkgfHwgIXRhZ1twcmltYXJ5QXR0cmlidXRlS2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IHRhZ1twcmltYXJ5QXR0cmlidXRlS2V5XS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAoIWFwcHJvdmVkU2VlblRhZ3NbcHJpbWFyeUF0dHJpYnV0ZUtleV0pIHtcbiAgICAgICAgYXBwcm92ZWRTZWVuVGFnc1twcmltYXJ5QXR0cmlidXRlS2V5XSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIWluc3RhbmNlU2VlblRhZ3NbcHJpbWFyeUF0dHJpYnV0ZUtleV0pIHtcbiAgICAgICAgaW5zdGFuY2VTZWVuVGFnc1twcmltYXJ5QXR0cmlidXRlS2V5XSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFwcHJvdmVkU2VlblRhZ3NbcHJpbWFyeUF0dHJpYnV0ZUtleV1bdmFsdWVdKSB7XG4gICAgICAgIGluc3RhbmNlU2VlblRhZ3NbcHJpbWFyeUF0dHJpYnV0ZUtleV1bdmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KS5yZXZlcnNlKCkuZm9yRWFjaChmdW5jdGlvbiAodGFnKSB7XG4gICAgICByZXR1cm4gYXBwcm92ZWRUYWdzLnB1c2godGFnKTtcbiAgICB9KTsgLy8gVXBkYXRlIHNlZW4gdGFncyB3aXRoIHRhZ3MgZnJvbSB0aGlzIGluc3RhbmNlXG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGluc3RhbmNlU2VlblRhZ3MpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXR0cmlidXRlS2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciB0YWdVbmlvbiA9IG9iamVjdEFzc2lnbih7fSwgYXBwcm92ZWRTZWVuVGFnc1thdHRyaWJ1dGVLZXldLCBpbnN0YW5jZVNlZW5UYWdzW2F0dHJpYnV0ZUtleV0pO1xuICAgICAgYXBwcm92ZWRTZWVuVGFnc1thdHRyaWJ1dGVLZXldID0gdGFnVW5pb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcHJvdmVkVGFncztcbiAgfSwgW10pLnJldmVyc2UoKTtcbn07XG5cbnZhciBnZXRJbm5lcm1vc3RQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldElubmVybW9zdFByb3BlcnR5KHByb3BzTGlzdCwgcHJvcGVydHkpIHtcbiAgZm9yICh2YXIgaSA9IHByb3BzTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwcm9wcyA9IHByb3BzTGlzdFtpXTtcblxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBwcm9wc1twcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgcmVkdWNlUHJvcHNUb1N0YXRlID0gZnVuY3Rpb24gcmVkdWNlUHJvcHNUb1N0YXRlKHByb3BzTGlzdCkge1xuICByZXR1cm4ge1xuICAgIGJhc2VUYWc6IGdldEJhc2VUYWdGcm9tUHJvcHNMaXN0KFtUQUdfUFJPUEVSVElFUy5IUkVGLCBUQUdfUFJPUEVSVElFUy5UQVJHRVRdLCBwcm9wc0xpc3QpLFxuICAgIGJvZHlBdHRyaWJ1dGVzOiBnZXRBdHRyaWJ1dGVzRnJvbVByb3BzTGlzdChBVFRSSUJVVEVfTkFNRVMuQk9EWSwgcHJvcHNMaXN0KSxcbiAgICBkZWZlcjogZ2V0SW5uZXJtb3N0UHJvcGVydHkocHJvcHNMaXN0LCBIRUxNRVRfUFJPUFMuREVGRVIpLFxuICAgIGVuY29kZTogZ2V0SW5uZXJtb3N0UHJvcGVydHkocHJvcHNMaXN0LCBIRUxNRVRfUFJPUFMuRU5DT0RFX1NQRUNJQUxfQ0hBUkFDVEVSUyksXG4gICAgaHRtbEF0dHJpYnV0ZXM6IGdldEF0dHJpYnV0ZXNGcm9tUHJvcHNMaXN0KEFUVFJJQlVURV9OQU1FUy5IVE1MLCBwcm9wc0xpc3QpLFxuICAgIGxpbmtUYWdzOiBnZXRUYWdzRnJvbVByb3BzTGlzdChUQUdfTkFNRVMuTElOSywgW1RBR19QUk9QRVJUSUVTLlJFTCwgVEFHX1BST1BFUlRJRVMuSFJFRl0sIHByb3BzTGlzdCksXG4gICAgbWV0YVRhZ3M6IGdldFRhZ3NGcm9tUHJvcHNMaXN0KFRBR19OQU1FUy5NRVRBLCBbVEFHX1BST1BFUlRJRVMuTkFNRSwgVEFHX1BST1BFUlRJRVMuQ0hBUlNFVCwgVEFHX1BST1BFUlRJRVMuSFRUUEVRVUlWLCBUQUdfUFJPUEVSVElFUy5QUk9QRVJUWSwgVEFHX1BST1BFUlRJRVMuSVRFTV9QUk9QXSwgcHJvcHNMaXN0KSxcbiAgICBub3NjcmlwdFRhZ3M6IGdldFRhZ3NGcm9tUHJvcHNMaXN0KFRBR19OQU1FUy5OT1NDUklQVCwgW1RBR19QUk9QRVJUSUVTLklOTkVSX0hUTUxdLCBwcm9wc0xpc3QpLFxuICAgIG9uQ2hhbmdlQ2xpZW50U3RhdGU6IGdldE9uQ2hhbmdlQ2xpZW50U3RhdGUocHJvcHNMaXN0KSxcbiAgICBzY3JpcHRUYWdzOiBnZXRUYWdzRnJvbVByb3BzTGlzdChUQUdfTkFNRVMuU0NSSVBULCBbVEFHX1BST1BFUlRJRVMuU1JDLCBUQUdfUFJPUEVSVElFUy5JTk5FUl9IVE1MXSwgcHJvcHNMaXN0KSxcbiAgICBzdHlsZVRhZ3M6IGdldFRhZ3NGcm9tUHJvcHNMaXN0KFRBR19OQU1FUy5TVFlMRSwgW1RBR19QUk9QRVJUSUVTLkNTU19URVhUXSwgcHJvcHNMaXN0KSxcbiAgICB0aXRsZTogZ2V0VGl0bGVGcm9tUHJvcHNMaXN0KHByb3BzTGlzdCksXG4gICAgdGl0bGVBdHRyaWJ1dGVzOiBnZXRBdHRyaWJ1dGVzRnJvbVByb3BzTGlzdChBVFRSSUJVVEVfTkFNRVMuVElUTEUsIHByb3BzTGlzdClcbiAgfTtcbn07XG5cbnZhciByYWZQb2x5ZmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNsb2NrID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHZhciBjdXJyZW50VGltZSA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoY3VycmVudFRpbWUgLSBjbG9jayA+IDE2KSB7XG4gICAgICBjbG9jayA9IGN1cnJlbnRUaW1lO1xuICAgICAgY2FsbGJhY2soY3VycmVudFRpbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmFmUG9seWZpbGwoY2FsbGJhY2spO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9O1xufSgpO1xuXG52YXIgY2FmUG9seWZpbGwgPSBmdW5jdGlvbiBjYWZQb2x5ZmlsbChpZCkge1xuICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5cbnZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgcmFmUG9seWZpbGwgOiBnbG9iYWwucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHJhZlBvbHlmaWxsO1xudmFyIGNhbmNlbEFuaW1hdGlvbkZyYW1lID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1vekNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IGNhZlBvbHlmaWxsIDogZ2xvYmFsLmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IGNhZlBvbHlmaWxsO1xuXG52YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gIHJldHVybiBjb25zb2xlICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT09IFwiZnVuY3Rpb25cIiAmJiBjb25zb2xlLndhcm4obXNnKTtcbn07XG5cbnZhciBfaGVsbWV0Q2FsbGJhY2sgPSBudWxsO1xuXG52YXIgaGFuZGxlQ2xpZW50U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVDbGllbnRTdGF0ZUNoYW5nZShuZXdTdGF0ZSkge1xuICBpZiAoX2hlbG1ldENhbGxiYWNrKSB7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoX2hlbG1ldENhbGxiYWNrKTtcbiAgfVxuXG4gIGlmIChuZXdTdGF0ZS5kZWZlcikge1xuICAgIF9oZWxtZXRDYWxsYmFjayA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICBjb21taXRUYWdDaGFuZ2VzKG5ld1N0YXRlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF9oZWxtZXRDYWxsYmFjayA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb21taXRUYWdDaGFuZ2VzKG5ld1N0YXRlKTtcbiAgICBfaGVsbWV0Q2FsbGJhY2sgPSBudWxsO1xuICB9XG59O1xuXG52YXIgY29tbWl0VGFnQ2hhbmdlcyA9IGZ1bmN0aW9uIGNvbW1pdFRhZ0NoYW5nZXMobmV3U3RhdGUsIGNiKSB7XG4gIHZhciBiYXNlVGFnID0gbmV3U3RhdGUuYmFzZVRhZyxcbiAgICAgIGJvZHlBdHRyaWJ1dGVzID0gbmV3U3RhdGUuYm9keUF0dHJpYnV0ZXMsXG4gICAgICBodG1sQXR0cmlidXRlcyA9IG5ld1N0YXRlLmh0bWxBdHRyaWJ1dGVzLFxuICAgICAgbGlua1RhZ3MgPSBuZXdTdGF0ZS5saW5rVGFncyxcbiAgICAgIG1ldGFUYWdzID0gbmV3U3RhdGUubWV0YVRhZ3MsXG4gICAgICBub3NjcmlwdFRhZ3MgPSBuZXdTdGF0ZS5ub3NjcmlwdFRhZ3MsXG4gICAgICBvbkNoYW5nZUNsaWVudFN0YXRlID0gbmV3U3RhdGUub25DaGFuZ2VDbGllbnRTdGF0ZSxcbiAgICAgIHNjcmlwdFRhZ3MgPSBuZXdTdGF0ZS5zY3JpcHRUYWdzLFxuICAgICAgc3R5bGVUYWdzID0gbmV3U3RhdGUuc3R5bGVUYWdzLFxuICAgICAgdGl0bGUgPSBuZXdTdGF0ZS50aXRsZSxcbiAgICAgIHRpdGxlQXR0cmlidXRlcyA9IG5ld1N0YXRlLnRpdGxlQXR0cmlidXRlcztcbiAgdXBkYXRlQXR0cmlidXRlcyhUQUdfTkFNRVMuQk9EWSwgYm9keUF0dHJpYnV0ZXMpO1xuICB1cGRhdGVBdHRyaWJ1dGVzKFRBR19OQU1FUy5IVE1MLCBodG1sQXR0cmlidXRlcyk7XG4gIHVwZGF0ZVRpdGxlKHRpdGxlLCB0aXRsZUF0dHJpYnV0ZXMpO1xuICB2YXIgdGFnVXBkYXRlcyA9IHtcbiAgICBiYXNlVGFnOiB1cGRhdGVUYWdzKFRBR19OQU1FUy5CQVNFLCBiYXNlVGFnKSxcbiAgICBsaW5rVGFnczogdXBkYXRlVGFncyhUQUdfTkFNRVMuTElOSywgbGlua1RhZ3MpLFxuICAgIG1ldGFUYWdzOiB1cGRhdGVUYWdzKFRBR19OQU1FUy5NRVRBLCBtZXRhVGFncyksXG4gICAgbm9zY3JpcHRUYWdzOiB1cGRhdGVUYWdzKFRBR19OQU1FUy5OT1NDUklQVCwgbm9zY3JpcHRUYWdzKSxcbiAgICBzY3JpcHRUYWdzOiB1cGRhdGVUYWdzKFRBR19OQU1FUy5TQ1JJUFQsIHNjcmlwdFRhZ3MpLFxuICAgIHN0eWxlVGFnczogdXBkYXRlVGFncyhUQUdfTkFNRVMuU1RZTEUsIHN0eWxlVGFncylcbiAgfTtcbiAgdmFyIGFkZGVkVGFncyA9IHt9O1xuICB2YXIgcmVtb3ZlZFRhZ3MgPSB7fTtcbiAgT2JqZWN0LmtleXModGFnVXBkYXRlcykuZm9yRWFjaChmdW5jdGlvbiAodGFnVHlwZSkge1xuICAgIHZhciBfdGFnVXBkYXRlcyR0YWdUeXBlID0gdGFnVXBkYXRlc1t0YWdUeXBlXSxcbiAgICAgICAgbmV3VGFncyA9IF90YWdVcGRhdGVzJHRhZ1R5cGUubmV3VGFncyxcbiAgICAgICAgb2xkVGFncyA9IF90YWdVcGRhdGVzJHRhZ1R5cGUub2xkVGFncztcblxuICAgIGlmIChuZXdUYWdzLmxlbmd0aCkge1xuICAgICAgYWRkZWRUYWdzW3RhZ1R5cGVdID0gbmV3VGFncztcbiAgICB9XG5cbiAgICBpZiAob2xkVGFncy5sZW5ndGgpIHtcbiAgICAgIHJlbW92ZWRUYWdzW3RhZ1R5cGVdID0gdGFnVXBkYXRlc1t0YWdUeXBlXS5vbGRUYWdzO1xuICAgIH1cbiAgfSk7XG4gIGNiICYmIGNiKCk7XG4gIG9uQ2hhbmdlQ2xpZW50U3RhdGUobmV3U3RhdGUsIGFkZGVkVGFncywgcmVtb3ZlZFRhZ3MpO1xufTtcblxudmFyIGZsYXR0ZW5BcnJheSA9IGZ1bmN0aW9uIGZsYXR0ZW5BcnJheShwb3NzaWJsZUFycmF5KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHBvc3NpYmxlQXJyYXkpID8gcG9zc2libGVBcnJheS5qb2luKFwiXCIpIDogcG9zc2libGVBcnJheTtcbn07XG5cbnZhciB1cGRhdGVUaXRsZSA9IGZ1bmN0aW9uIHVwZGF0ZVRpdGxlKHRpdGxlLCBhdHRyaWJ1dGVzKSB7XG4gIGlmICh0eXBlb2YgdGl0bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnQudGl0bGUgIT09IHRpdGxlKSB7XG4gICAgZG9jdW1lbnQudGl0bGUgPSBmbGF0dGVuQXJyYXkodGl0bGUpO1xuICB9XG5cbiAgdXBkYXRlQXR0cmlidXRlcyhUQUdfTkFNRVMuVElUTEUsIGF0dHJpYnV0ZXMpO1xufTtcblxudmFyIHVwZGF0ZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGVzKHRhZ05hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGVsZW1lbnRUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKVswXTtcblxuICBpZiAoIWVsZW1lbnRUYWcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaGVsbWV0QXR0cmlidXRlU3RyaW5nID0gZWxlbWVudFRhZy5nZXRBdHRyaWJ1dGUoSEVMTUVUX0FUVFJJQlVURSk7XG4gIHZhciBoZWxtZXRBdHRyaWJ1dGVzID0gaGVsbWV0QXR0cmlidXRlU3RyaW5nID8gaGVsbWV0QXR0cmlidXRlU3RyaW5nLnNwbGl0KFwiLFwiKSA6IFtdO1xuICB2YXIgYXR0cmlidXRlc1RvUmVtb3ZlID0gW10uY29uY2F0KGhlbG1ldEF0dHJpYnV0ZXMpO1xuICB2YXIgYXR0cmlidXRlS2V5cyA9IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVLZXlzW2ldO1xuICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlXSB8fCBcIlwiO1xuXG4gICAgaWYgKGVsZW1lbnRUYWcuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkgIT09IHZhbHVlKSB7XG4gICAgICBlbGVtZW50VGFnLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaGVsbWV0QXR0cmlidXRlcy5pbmRleE9mKGF0dHJpYnV0ZSkgPT09IC0xKSB7XG4gICAgICBoZWxtZXRBdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXhUb1NhdmUgPSBhdHRyaWJ1dGVzVG9SZW1vdmUuaW5kZXhPZihhdHRyaWJ1dGUpO1xuXG4gICAgaWYgKGluZGV4VG9TYXZlICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLnNwbGljZShpbmRleFRvU2F2ZSwgMSk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2kgPSBhdHRyaWJ1dGVzVG9SZW1vdmUubGVuZ3RoIC0gMTsgX2kgPj0gMDsgX2ktLSkge1xuICAgIGVsZW1lbnRUYWcucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZXNUb1JlbW92ZVtfaV0pO1xuICB9XG5cbiAgaWYgKGhlbG1ldEF0dHJpYnV0ZXMubGVuZ3RoID09PSBhdHRyaWJ1dGVzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgZWxlbWVudFRhZy5yZW1vdmVBdHRyaWJ1dGUoSEVMTUVUX0FUVFJJQlVURSk7XG4gIH0gZWxzZSBpZiAoZWxlbWVudFRhZy5nZXRBdHRyaWJ1dGUoSEVMTUVUX0FUVFJJQlVURSkgIT09IGF0dHJpYnV0ZUtleXMuam9pbihcIixcIikpIHtcbiAgICBlbGVtZW50VGFnLnNldEF0dHJpYnV0ZShIRUxNRVRfQVRUUklCVVRFLCBhdHRyaWJ1dGVLZXlzLmpvaW4oXCIsXCIpKTtcbiAgfVxufTtcblxudmFyIHVwZGF0ZVRhZ3MgPSBmdW5jdGlvbiB1cGRhdGVUYWdzKHR5cGUsIHRhZ3MpIHtcbiAgdmFyIGhlYWRFbGVtZW50ID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFRBR19OQU1FUy5IRUFEKTtcbiAgdmFyIHRhZ05vZGVzID0gaGVhZEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCh0eXBlICsgXCJbXCIgKyBIRUxNRVRfQVRUUklCVVRFICsgXCJdXCIpO1xuICB2YXIgb2xkVGFncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRhZ05vZGVzKTtcbiAgdmFyIG5ld1RhZ3MgPSBbXTtcbiAgdmFyIGluZGV4VG9EZWxldGUgPSB2b2lkIDA7XG5cbiAgaWYgKHRhZ3MgJiYgdGFncy5sZW5ndGgpIHtcbiAgICB0YWdzLmZvckVhY2goZnVuY3Rpb24gKHRhZykge1xuICAgICAgdmFyIG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuXG4gICAgICBmb3IgKHZhciBhdHRyaWJ1dGUgaW4gdGFnKSB7XG4gICAgICAgIGlmICh0YWcuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlKSkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFRBR19QUk9QRVJUSUVTLklOTkVSX0hUTUwpIHtcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MID0gdGFnLmlubmVySFRNTDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gVEFHX1BST1BFUlRJRVMuQ1NTX1RFWFQpIHtcbiAgICAgICAgICAgIGlmIChuZXdFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICAgICAgICAgICAgbmV3RWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSB0YWcuY3NzVGV4dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGFnLmNzc1RleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gdHlwZW9mIHRhZ1thdHRyaWJ1dGVdID09PSBcInVuZGVmaW5lZFwiID8gXCJcIiA6IHRhZ1thdHRyaWJ1dGVdO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKEhFTE1FVF9BVFRSSUJVVEUsIFwidHJ1ZVwiKTsgLy8gUmVtb3ZlIGEgZHVwbGljYXRlIHRhZyBmcm9tIGRvbVRhZ3N0b1JlbW92ZSwgc28gaXQgaXNuJ3QgY2xlYXJlZC5cblxuICAgICAgaWYgKG9sZFRhZ3Muc29tZShmdW5jdGlvbiAoZXhpc3RpbmdUYWcsIGluZGV4KSB7XG4gICAgICAgIGluZGV4VG9EZWxldGUgPSBpbmRleDtcbiAgICAgICAgcmV0dXJuIG5ld0VsZW1lbnQuaXNFcXVhbE5vZGUoZXhpc3RpbmdUYWcpO1xuICAgICAgfSkpIHtcbiAgICAgICAgb2xkVGFncy5zcGxpY2UoaW5kZXhUb0RlbGV0ZSwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdUYWdzLnB1c2gobmV3RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbGRUYWdzLmZvckVhY2goZnVuY3Rpb24gKHRhZykge1xuICAgIHJldHVybiB0YWcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0YWcpO1xuICB9KTtcbiAgbmV3VGFncy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICByZXR1cm4gaGVhZEVsZW1lbnQuYXBwZW5kQ2hpbGQodGFnKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgb2xkVGFnczogb2xkVGFncyxcbiAgICBuZXdUYWdzOiBuZXdUYWdzXG4gIH07XG59O1xuXG52YXIgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc0FzU3RyaW5nID0gZnVuY3Rpb24gZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc0FzU3RyaW5nKGF0dHJpYnV0ZXMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbiAoc3RyLCBrZXkpIHtcbiAgICB2YXIgYXR0ciA9IHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gIT09IFwidW5kZWZpbmVkXCIgPyBrZXkgKyBcIj1cXFwiXCIgKyBhdHRyaWJ1dGVzW2tleV0gKyBcIlxcXCJcIiA6IFwiXCIgKyBrZXk7XG4gICAgcmV0dXJuIHN0ciA/IHN0ciArIFwiIFwiICsgYXR0ciA6IGF0dHI7XG4gIH0sIFwiXCIpO1xufTtcblxudmFyIGdlbmVyYXRlVGl0bGVBc1N0cmluZyA9IGZ1bmN0aW9uIGdlbmVyYXRlVGl0bGVBc1N0cmluZyh0eXBlLCB0aXRsZSwgYXR0cmlidXRlcywgZW5jb2RlKSB7XG4gIHZhciBhdHRyaWJ1dGVTdHJpbmcgPSBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVzQXNTdHJpbmcoYXR0cmlidXRlcyk7XG4gIHZhciBmbGF0dGVuZWRUaXRsZSA9IGZsYXR0ZW5BcnJheSh0aXRsZSk7XG4gIHJldHVybiBhdHRyaWJ1dGVTdHJpbmcgPyBcIjxcIiArIHR5cGUgKyBcIiBcIiArIEhFTE1FVF9BVFRSSUJVVEUgKyBcIj1cXFwidHJ1ZVxcXCIgXCIgKyBhdHRyaWJ1dGVTdHJpbmcgKyBcIj5cIiArIGVuY29kZVNwZWNpYWxDaGFyYWN0ZXJzKGZsYXR0ZW5lZFRpdGxlLCBlbmNvZGUpICsgXCI8L1wiICsgdHlwZSArIFwiPlwiIDogXCI8XCIgKyB0eXBlICsgXCIgXCIgKyBIRUxNRVRfQVRUUklCVVRFICsgXCI9XFxcInRydWVcXFwiPlwiICsgZW5jb2RlU3BlY2lhbENoYXJhY3RlcnMoZmxhdHRlbmVkVGl0bGUsIGVuY29kZSkgKyBcIjwvXCIgKyB0eXBlICsgXCI+XCI7XG59O1xuXG52YXIgZ2VuZXJhdGVUYWdzQXNTdHJpbmcgPSBmdW5jdGlvbiBnZW5lcmF0ZVRhZ3NBc1N0cmluZyh0eXBlLCB0YWdzLCBlbmNvZGUpIHtcbiAgcmV0dXJuIHRhZ3MucmVkdWNlKGZ1bmN0aW9uIChzdHIsIHRhZykge1xuICAgIHZhciBhdHRyaWJ1dGVIdG1sID0gT2JqZWN0LmtleXModGFnKS5maWx0ZXIoZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgcmV0dXJuICEoYXR0cmlidXRlID09PSBUQUdfUFJPUEVSVElFUy5JTk5FUl9IVE1MIHx8IGF0dHJpYnV0ZSA9PT0gVEFHX1BST1BFUlRJRVMuQ1NTX1RFWFQpO1xuICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoc3RyaW5nLCBhdHRyaWJ1dGUpIHtcbiAgICAgIHZhciBhdHRyID0gdHlwZW9mIHRhZ1thdHRyaWJ1dGVdID09PSBcInVuZGVmaW5lZFwiID8gYXR0cmlidXRlIDogYXR0cmlidXRlICsgXCI9XFxcIlwiICsgZW5jb2RlU3BlY2lhbENoYXJhY3RlcnModGFnW2F0dHJpYnV0ZV0sIGVuY29kZSkgKyBcIlxcXCJcIjtcbiAgICAgIHJldHVybiBzdHJpbmcgPyBzdHJpbmcgKyBcIiBcIiArIGF0dHIgOiBhdHRyO1xuICAgIH0sIFwiXCIpO1xuICAgIHZhciB0YWdDb250ZW50ID0gdGFnLmlubmVySFRNTCB8fCB0YWcuY3NzVGV4dCB8fCBcIlwiO1xuICAgIHZhciBpc1NlbGZDbG9zaW5nID0gU0VMRl9DTE9TSU5HX1RBR1MuaW5kZXhPZih0eXBlKSA9PT0gLTE7XG4gICAgcmV0dXJuIHN0ciArIFwiPFwiICsgdHlwZSArIFwiIFwiICsgSEVMTUVUX0FUVFJJQlVURSArIFwiPVxcXCJ0cnVlXFxcIiBcIiArIGF0dHJpYnV0ZUh0bWwgKyAoaXNTZWxmQ2xvc2luZyA/IFwiLz5cIiA6IFwiPlwiICsgdGFnQ29udGVudCArIFwiPC9cIiArIHR5cGUgKyBcIj5cIik7XG4gIH0sIFwiXCIpO1xufTtcblxudmFyIGNvbnZlcnRFbGVtZW50QXR0cmlidXRlc3RvUmVhY3RQcm9wcyA9IGZ1bmN0aW9uIGNvbnZlcnRFbGVtZW50QXR0cmlidXRlc3RvUmVhY3RQcm9wcyhhdHRyaWJ1dGVzKSB7XG4gIHZhciBpbml0UHJvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uIChvYmosIGtleSkge1xuICAgIG9ialtSRUFDVF9UQUdfTUFQW2tleV0gfHwga2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICByZXR1cm4gb2JqO1xuICB9LCBpbml0UHJvcHMpO1xufTtcblxudmFyIGNvbnZlcnRSZWFjdFByb3BzdG9IdG1sQXR0cmlidXRlcyA9IGZ1bmN0aW9uIGNvbnZlcnRSZWFjdFByb3BzdG9IdG1sQXR0cmlidXRlcyhwcm9wcykge1xuICB2YXIgaW5pdEF0dHJpYnV0ZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMocHJvcHMpLnJlZHVjZShmdW5jdGlvbiAob2JqLCBrZXkpIHtcbiAgICBvYmpbSFRNTF9UQUdfTUFQW2tleV0gfHwga2V5XSA9IHByb3BzW2tleV07XG4gICAgcmV0dXJuIG9iajtcbiAgfSwgaW5pdEF0dHJpYnV0ZXMpO1xufTtcblxudmFyIGdlbmVyYXRlVGl0bGVBc1JlYWN0Q29tcG9uZW50ID0gZnVuY3Rpb24gZ2VuZXJhdGVUaXRsZUFzUmVhY3RDb21wb25lbnQodHlwZSwgdGl0bGUsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIF9pbml0UHJvcHM7IC8vIGFzc2lnbmluZyBpbnRvIGFuIGFycmF5IHRvIGRlZmluZSB0b1N0cmluZyBmdW5jdGlvbiBvbiBpdFxuXG5cbiAgdmFyIGluaXRQcm9wcyA9IChfaW5pdFByb3BzID0ge1xuICAgIGtleTogdGl0bGVcbiAgfSwgX2luaXRQcm9wc1tIRUxNRVRfQVRUUklCVVRFXSA9IHRydWUsIF9pbml0UHJvcHMpO1xuICB2YXIgcHJvcHMgPSBjb252ZXJ0RWxlbWVudEF0dHJpYnV0ZXN0b1JlYWN0UHJvcHMoYXR0cmlidXRlcywgaW5pdFByb3BzKTtcbiAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFRBR19OQU1FUy5USVRMRSwgcHJvcHMsIHRpdGxlKV07XG59O1xuXG52YXIgZ2VuZXJhdGVUYWdzQXNSZWFjdENvbXBvbmVudCA9IGZ1bmN0aW9uIGdlbmVyYXRlVGFnc0FzUmVhY3RDb21wb25lbnQodHlwZSwgdGFncykge1xuICByZXR1cm4gdGFncy5tYXAoZnVuY3Rpb24gKHRhZywgaSkge1xuICAgIHZhciBfbWFwcGVkVGFnO1xuXG4gICAgdmFyIG1hcHBlZFRhZyA9IChfbWFwcGVkVGFnID0ge1xuICAgICAga2V5OiBpXG4gICAgfSwgX21hcHBlZFRhZ1tIRUxNRVRfQVRUUklCVVRFXSA9IHRydWUsIF9tYXBwZWRUYWcpO1xuICAgIE9iamVjdC5rZXlzKHRhZykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICB2YXIgbWFwcGVkQXR0cmlidXRlID0gUkVBQ1RfVEFHX01BUFthdHRyaWJ1dGVdIHx8IGF0dHJpYnV0ZTtcblxuICAgICAgaWYgKG1hcHBlZEF0dHJpYnV0ZSA9PT0gVEFHX1BST1BFUlRJRVMuSU5ORVJfSFRNTCB8fCBtYXBwZWRBdHRyaWJ1dGUgPT09IFRBR19QUk9QRVJUSUVTLkNTU19URVhUKSB7XG4gICAgICAgIHZhciBjb250ZW50ID0gdGFnLmlubmVySFRNTCB8fCB0YWcuY3NzVGV4dDtcbiAgICAgICAgbWFwcGVkVGFnLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgICAgIF9faHRtbDogY29udGVudFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkVGFnW21hcHBlZEF0dHJpYnV0ZV0gPSB0YWdbYXR0cmlidXRlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudCh0eXBlLCBtYXBwZWRUYWcpO1xuICB9KTtcbn07XG5cbnZhciBnZXRNZXRob2RzRm9yVGFnID0gZnVuY3Rpb24gZ2V0TWV0aG9kc0ZvclRhZyh0eXBlLCB0YWdzLCBlbmNvZGUpIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBUQUdfTkFNRVMuVElUTEU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NvbXBvbmVudDogZnVuY3Rpb24gdG9Db21wb25lbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVGl0bGVBc1JlYWN0Q29tcG9uZW50KHR5cGUsIHRhZ3MudGl0bGUsIHRhZ3MudGl0bGVBdHRyaWJ1dGVzLCBlbmNvZGUpO1xuICAgICAgICB9LFxuICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVGl0bGVBc1N0cmluZyh0eXBlLCB0YWdzLnRpdGxlLCB0YWdzLnRpdGxlQXR0cmlidXRlcywgZW5jb2RlKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIGNhc2UgQVRUUklCVVRFX05BTUVTLkJPRFk6XG4gICAgY2FzZSBBVFRSSUJVVEVfTkFNRVMuSFRNTDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvQ29tcG9uZW50OiBmdW5jdGlvbiB0b0NvbXBvbmVudCgpIHtcbiAgICAgICAgICByZXR1cm4gY29udmVydEVsZW1lbnRBdHRyaWJ1dGVzdG9SZWFjdFByb3BzKHRhZ3MpO1xuICAgICAgICB9LFxuICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZXNBc1N0cmluZyh0YWdzKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NvbXBvbmVudDogZnVuY3Rpb24gdG9Db21wb25lbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVGFnc0FzUmVhY3RDb21wb25lbnQodHlwZSwgdGFncyk7XG4gICAgICAgIH0sXG4gICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVUYWdzQXNTdHJpbmcodHlwZSwgdGFncywgZW5jb2RlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgfVxufTtcblxudmFyIG1hcFN0YXRlT25TZXJ2ZXIgPSBmdW5jdGlvbiBtYXBTdGF0ZU9uU2VydmVyKF9yZWYpIHtcbiAgdmFyIGJhc2VUYWcgPSBfcmVmLmJhc2VUYWcsXG4gICAgICBib2R5QXR0cmlidXRlcyA9IF9yZWYuYm9keUF0dHJpYnV0ZXMsXG4gICAgICBlbmNvZGUgPSBfcmVmLmVuY29kZSxcbiAgICAgIGh0bWxBdHRyaWJ1dGVzID0gX3JlZi5odG1sQXR0cmlidXRlcyxcbiAgICAgIGxpbmtUYWdzID0gX3JlZi5saW5rVGFncyxcbiAgICAgIG1ldGFUYWdzID0gX3JlZi5tZXRhVGFncyxcbiAgICAgIG5vc2NyaXB0VGFncyA9IF9yZWYubm9zY3JpcHRUYWdzLFxuICAgICAgc2NyaXB0VGFncyA9IF9yZWYuc2NyaXB0VGFncyxcbiAgICAgIHN0eWxlVGFncyA9IF9yZWYuc3R5bGVUYWdzLFxuICAgICAgX3JlZiR0aXRsZSA9IF9yZWYudGl0bGUsXG4gICAgICB0aXRsZSA9IF9yZWYkdGl0bGUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBfcmVmJHRpdGxlLFxuICAgICAgdGl0bGVBdHRyaWJ1dGVzID0gX3JlZi50aXRsZUF0dHJpYnV0ZXM7XG4gIHJldHVybiB7XG4gICAgYmFzZTogZ2V0TWV0aG9kc0ZvclRhZyhUQUdfTkFNRVMuQkFTRSwgYmFzZVRhZywgZW5jb2RlKSxcbiAgICBib2R5QXR0cmlidXRlczogZ2V0TWV0aG9kc0ZvclRhZyhBVFRSSUJVVEVfTkFNRVMuQk9EWSwgYm9keUF0dHJpYnV0ZXMsIGVuY29kZSksXG4gICAgaHRtbEF0dHJpYnV0ZXM6IGdldE1ldGhvZHNGb3JUYWcoQVRUUklCVVRFX05BTUVTLkhUTUwsIGh0bWxBdHRyaWJ1dGVzLCBlbmNvZGUpLFxuICAgIGxpbms6IGdldE1ldGhvZHNGb3JUYWcoVEFHX05BTUVTLkxJTkssIGxpbmtUYWdzLCBlbmNvZGUpLFxuICAgIG1ldGE6IGdldE1ldGhvZHNGb3JUYWcoVEFHX05BTUVTLk1FVEEsIG1ldGFUYWdzLCBlbmNvZGUpLFxuICAgIG5vc2NyaXB0OiBnZXRNZXRob2RzRm9yVGFnKFRBR19OQU1FUy5OT1NDUklQVCwgbm9zY3JpcHRUYWdzLCBlbmNvZGUpLFxuICAgIHNjcmlwdDogZ2V0TWV0aG9kc0ZvclRhZyhUQUdfTkFNRVMuU0NSSVBULCBzY3JpcHRUYWdzLCBlbmNvZGUpLFxuICAgIHN0eWxlOiBnZXRNZXRob2RzRm9yVGFnKFRBR19OQU1FUy5TVFlMRSwgc3R5bGVUYWdzLCBlbmNvZGUpLFxuICAgIHRpdGxlOiBnZXRNZXRob2RzRm9yVGFnKFRBR19OQU1FUy5USVRMRSwge1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgdGl0bGVBdHRyaWJ1dGVzOiB0aXRsZUF0dHJpYnV0ZXNcbiAgICB9LCBlbmNvZGUpXG4gIH07XG59O1xuXG52YXIgSGVsbWV0ID0gZnVuY3Rpb24gSGVsbWV0KENvbXBvbmVudCkge1xuICB2YXIgX2NsYXNzLCBfdGVtcDtcblxuICByZXR1cm4gX3RlbXAgPSBfY2xhc3MgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAgIGluaGVyaXRzKEhlbG1ldFdyYXBwZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gICAgZnVuY3Rpb24gSGVsbWV0V3JhcHBlcigpIHtcbiAgICAgIGNsYXNzQ2FsbENoZWNrKHRoaXMsIEhlbG1ldFdyYXBwZXIpO1xuICAgICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1JlYWN0JENvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICB9XG5cbiAgICBIZWxtZXRXcmFwcGVyLnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgICByZXR1cm4gIWlzRXF1YWwodGhpcy5wcm9wcywgbmV4dFByb3BzKTtcbiAgICB9O1xuXG4gICAgSGVsbWV0V3JhcHBlci5wcm90b3R5cGUubWFwTmVzdGVkQ2hpbGRyZW5Ub1Byb3BzID0gZnVuY3Rpb24gbWFwTmVzdGVkQ2hpbGRyZW5Ub1Byb3BzKGNoaWxkLCBuZXN0ZWRDaGlsZHJlbikge1xuICAgICAgaWYgKCFuZXN0ZWRDaGlsZHJlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7XG4gICAgICAgIGNhc2UgVEFHX05BTUVTLlNDUklQVDpcbiAgICAgICAgY2FzZSBUQUdfTkFNRVMuTk9TQ1JJUFQ6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlubmVySFRNTDogbmVzdGVkQ2hpbGRyZW5cbiAgICAgICAgICB9O1xuXG4gICAgICAgIGNhc2UgVEFHX05BTUVTLlNUWUxFOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjc3NUZXh0OiBuZXN0ZWRDaGlsZHJlblxuICAgICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcIjxcIiArIGNoaWxkLnR5cGUgKyBcIiAvPiBlbGVtZW50cyBhcmUgc2VsZi1jbG9zaW5nIGFuZCBjYW4gbm90IGNvbnRhaW4gY2hpbGRyZW4uIFJlZmVyIHRvIG91ciBBUEkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIpO1xuICAgIH07XG5cbiAgICBIZWxtZXRXcmFwcGVyLnByb3RvdHlwZS5mbGF0dGVuQXJyYXlUeXBlQ2hpbGRyZW4gPSBmdW5jdGlvbiBmbGF0dGVuQXJyYXlUeXBlQ2hpbGRyZW4oX3JlZikge1xuICAgICAgdmFyIF9iYWJlbEhlbHBlcnMkZXh0ZW5kcztcblxuICAgICAgdmFyIGNoaWxkID0gX3JlZi5jaGlsZCxcbiAgICAgICAgICBhcnJheVR5cGVDaGlsZHJlbiA9IF9yZWYuYXJyYXlUeXBlQ2hpbGRyZW4sXG4gICAgICAgICAgbmV3Q2hpbGRQcm9wcyA9IF9yZWYubmV3Q2hpbGRQcm9wcyxcbiAgICAgICAgICBuZXN0ZWRDaGlsZHJlbiA9IF9yZWYubmVzdGVkQ2hpbGRyZW47XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGFycmF5VHlwZUNoaWxkcmVuLCAoX2JhYmVsSGVscGVycyRleHRlbmRzID0ge30sIF9iYWJlbEhlbHBlcnMkZXh0ZW5kc1tjaGlsZC50eXBlXSA9IFtdLmNvbmNhdChhcnJheVR5cGVDaGlsZHJlbltjaGlsZC50eXBlXSB8fCBbXSwgW19leHRlbmRzKHt9LCBuZXdDaGlsZFByb3BzLCB0aGlzLm1hcE5lc3RlZENoaWxkcmVuVG9Qcm9wcyhjaGlsZCwgbmVzdGVkQ2hpbGRyZW4pKV0pLCBfYmFiZWxIZWxwZXJzJGV4dGVuZHMpKTtcbiAgICB9O1xuXG4gICAgSGVsbWV0V3JhcHBlci5wcm90b3R5cGUubWFwT2JqZWN0VHlwZUNoaWxkcmVuID0gZnVuY3Rpb24gbWFwT2JqZWN0VHlwZUNoaWxkcmVuKF9yZWYyKSB7XG4gICAgICB2YXIgX2JhYmVsSGVscGVycyRleHRlbmRzMiwgX2JhYmVsSGVscGVycyRleHRlbmRzMztcblxuICAgICAgdmFyIGNoaWxkID0gX3JlZjIuY2hpbGQsXG4gICAgICAgICAgbmV3UHJvcHMgPSBfcmVmMi5uZXdQcm9wcyxcbiAgICAgICAgICBuZXdDaGlsZFByb3BzID0gX3JlZjIubmV3Q2hpbGRQcm9wcyxcbiAgICAgICAgICBuZXN0ZWRDaGlsZHJlbiA9IF9yZWYyLm5lc3RlZENoaWxkcmVuO1xuXG4gICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUQUdfTkFNRVMuVElUTEU6XG4gICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBuZXdQcm9wcywgKF9iYWJlbEhlbHBlcnMkZXh0ZW5kczIgPSB7fSwgX2JhYmVsSGVscGVycyRleHRlbmRzMltjaGlsZC50eXBlXSA9IG5lc3RlZENoaWxkcmVuLCBfYmFiZWxIZWxwZXJzJGV4dGVuZHMyLnRpdGxlQXR0cmlidXRlcyA9IF9leHRlbmRzKHt9LCBuZXdDaGlsZFByb3BzKSwgX2JhYmVsSGVscGVycyRleHRlbmRzMikpO1xuXG4gICAgICAgIGNhc2UgVEFHX05BTUVTLkJPRFk6XG4gICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBuZXdQcm9wcywge1xuICAgICAgICAgICAgYm9keUF0dHJpYnV0ZXM6IF9leHRlbmRzKHt9LCBuZXdDaGlsZFByb3BzKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgVEFHX05BTUVTLkhUTUw6XG4gICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBuZXdQcm9wcywge1xuICAgICAgICAgICAgaHRtbEF0dHJpYnV0ZXM6IF9leHRlbmRzKHt9LCBuZXdDaGlsZFByb3BzKVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIG5ld1Byb3BzLCAoX2JhYmVsSGVscGVycyRleHRlbmRzMyA9IHt9LCBfYmFiZWxIZWxwZXJzJGV4dGVuZHMzW2NoaWxkLnR5cGVdID0gX2V4dGVuZHMoe30sIG5ld0NoaWxkUHJvcHMpLCBfYmFiZWxIZWxwZXJzJGV4dGVuZHMzKSk7XG4gICAgfTtcblxuICAgIEhlbG1ldFdyYXBwZXIucHJvdG90eXBlLm1hcEFycmF5VHlwZUNoaWxkcmVuVG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcEFycmF5VHlwZUNoaWxkcmVuVG9Qcm9wcyhhcnJheVR5cGVDaGlsZHJlbiwgbmV3UHJvcHMpIHtcbiAgICAgIHZhciBuZXdGbGF0dGVuZWRQcm9wcyA9IF9leHRlbmRzKHt9LCBuZXdQcm9wcyk7XG5cbiAgICAgIE9iamVjdC5rZXlzKGFycmF5VHlwZUNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChhcnJheUNoaWxkTmFtZSkge1xuICAgICAgICB2YXIgX2JhYmVsSGVscGVycyRleHRlbmRzNDtcblxuICAgICAgICBuZXdGbGF0dGVuZWRQcm9wcyA9IF9leHRlbmRzKHt9LCBuZXdGbGF0dGVuZWRQcm9wcywgKF9iYWJlbEhlbHBlcnMkZXh0ZW5kczQgPSB7fSwgX2JhYmVsSGVscGVycyRleHRlbmRzNFthcnJheUNoaWxkTmFtZV0gPSBhcnJheVR5cGVDaGlsZHJlblthcnJheUNoaWxkTmFtZV0sIF9iYWJlbEhlbHBlcnMkZXh0ZW5kczQpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ld0ZsYXR0ZW5lZFByb3BzO1xuICAgIH07XG5cbiAgICBIZWxtZXRXcmFwcGVyLnByb3RvdHlwZS53YXJuT25JbnZhbGlkQ2hpbGRyZW4gPSBmdW5jdGlvbiB3YXJuT25JbnZhbGlkQ2hpbGRyZW4oY2hpbGQsIG5lc3RlZENoaWxkcmVuKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGlmICghVkFMSURfVEFHX05BTUVTLnNvbWUoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQudHlwZSA9PT0gbmFtZTtcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkLnR5cGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHdhcm4oXCJZb3UgbWF5IGJlIGF0dGVtcHRpbmcgdG8gbmVzdCA8SGVsbWV0PiBjb21wb25lbnRzIHdpdGhpbiBlYWNoIG90aGVyLCB3aGljaCBpcyBub3QgYWxsb3dlZC4gUmVmZXIgdG8gb3VyIEFQSSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHdhcm4oXCJPbmx5IGVsZW1lbnRzIHR5cGVzIFwiICsgVkFMSURfVEFHX05BTUVTLmpvaW4oXCIsIFwiKSArIFwiIGFyZSBhbGxvd2VkLiBIZWxtZXQgZG9lcyBub3Qgc3VwcG9ydCByZW5kZXJpbmcgPFwiICsgY2hpbGQudHlwZSArIFwiPiBlbGVtZW50cy4gUmVmZXIgdG8gb3VyIEFQSSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmVzdGVkQ2hpbGRyZW4gJiYgdHlwZW9mIG5lc3RlZENoaWxkcmVuICE9PSBcInN0cmluZ1wiICYmICghQXJyYXkuaXNBcnJheShuZXN0ZWRDaGlsZHJlbikgfHwgbmVzdGVkQ2hpbGRyZW4uc29tZShmdW5jdGlvbiAobmVzdGVkQ2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIG5lc3RlZENoaWxkICE9PSBcInN0cmluZ1wiO1xuICAgICAgICB9KSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJIZWxtZXQgZXhwZWN0cyBhIHN0cmluZyBhcyBhIGNoaWxkIG9mIDxcIiArIGNoaWxkLnR5cGUgKyBcIj4uIERpZCB5b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBjaGlsZHJlbiBpbiBicmFjZXM/ICggPFwiICsgY2hpbGQudHlwZSArIFwiPntgYH08L1wiICsgY2hpbGQudHlwZSArIFwiPiApIFJlZmVyIHRvIG91ciBBUEkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBIZWxtZXRXcmFwcGVyLnByb3RvdHlwZS5tYXBDaGlsZHJlblRvUHJvcHMgPSBmdW5jdGlvbiBtYXBDaGlsZHJlblRvUHJvcHMoY2hpbGRyZW4sIG5ld1Byb3BzKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGFycmF5VHlwZUNoaWxkcmVuID0ge307XG4gICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQucHJvcHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2NoaWxkJHByb3BzID0gY2hpbGQucHJvcHMsXG4gICAgICAgICAgICBuZXN0ZWRDaGlsZHJlbiA9IF9jaGlsZCRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICAgIGNoaWxkUHJvcHMgPSBvYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2hpbGQkcHJvcHMsIFtcImNoaWxkcmVuXCJdKTtcbiAgICAgICAgdmFyIG5ld0NoaWxkUHJvcHMgPSBjb252ZXJ0UmVhY3RQcm9wc3RvSHRtbEF0dHJpYnV0ZXMoY2hpbGRQcm9wcyk7XG5cbiAgICAgICAgX3RoaXMyLndhcm5PbkludmFsaWRDaGlsZHJlbihjaGlsZCwgbmVzdGVkQ2hpbGRyZW4pO1xuXG4gICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkge1xuICAgICAgICAgIGNhc2UgVEFHX05BTUVTLkxJTks6XG4gICAgICAgICAgY2FzZSBUQUdfTkFNRVMuTUVUQTpcbiAgICAgICAgICBjYXNlIFRBR19OQU1FUy5OT1NDUklQVDpcbiAgICAgICAgICBjYXNlIFRBR19OQU1FUy5TQ1JJUFQ6XG4gICAgICAgICAgY2FzZSBUQUdfTkFNRVMuU1RZTEU6XG4gICAgICAgICAgICBhcnJheVR5cGVDaGlsZHJlbiA9IF90aGlzMi5mbGF0dGVuQXJyYXlUeXBlQ2hpbGRyZW4oe1xuICAgICAgICAgICAgICBjaGlsZDogY2hpbGQsXG4gICAgICAgICAgICAgIGFycmF5VHlwZUNoaWxkcmVuOiBhcnJheVR5cGVDaGlsZHJlbixcbiAgICAgICAgICAgICAgbmV3Q2hpbGRQcm9wczogbmV3Q2hpbGRQcm9wcyxcbiAgICAgICAgICAgICAgbmVzdGVkQ2hpbGRyZW46IG5lc3RlZENoaWxkcmVuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG5ld1Byb3BzID0gX3RoaXMyLm1hcE9iamVjdFR5cGVDaGlsZHJlbih7XG4gICAgICAgICAgICAgIGNoaWxkOiBjaGlsZCxcbiAgICAgICAgICAgICAgbmV3UHJvcHM6IG5ld1Byb3BzLFxuICAgICAgICAgICAgICBuZXdDaGlsZFByb3BzOiBuZXdDaGlsZFByb3BzLFxuICAgICAgICAgICAgICBuZXN0ZWRDaGlsZHJlbjogbmVzdGVkQ2hpbGRyZW5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbmV3UHJvcHMgPSB0aGlzLm1hcEFycmF5VHlwZUNoaWxkcmVuVG9Qcm9wcyhhcnJheVR5cGVDaGlsZHJlbiwgbmV3UHJvcHMpO1xuICAgICAgcmV0dXJuIG5ld1Byb3BzO1xuICAgIH07XG5cbiAgICBIZWxtZXRXcmFwcGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF9wcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBwcm9wcyA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9wcm9wcywgW1wiY2hpbGRyZW5cIl0pO1xuXG4gICAgICB2YXIgbmV3UHJvcHMgPSBfZXh0ZW5kcyh7fSwgcHJvcHMpO1xuXG4gICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgbmV3UHJvcHMgPSB0aGlzLm1hcENoaWxkcmVuVG9Qcm9wcyhjaGlsZHJlbiwgbmV3UHJvcHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIG5ld1Byb3BzKTtcbiAgICB9O1xuXG4gICAgY3JlYXRlQ2xhc3MoSGVsbWV0V3JhcHBlciwgbnVsbCwgW3tcbiAgICAgIGtleTogXCJjYW5Vc2VET01cIixcbiAgICAgIC8vIENvbXBvbmVudC5wZWVrIGNvbWVzIGZyb20gcmVhY3Qtc2lkZS1lZmZlY3Q6XG4gICAgICAvLyBGb3IgdGVzdGluZywgeW91IG1heSB1c2UgYSBzdGF0aWMgcGVlaygpIG1ldGhvZCBhdmFpbGFibGUgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudC5cbiAgICAgIC8vIEl0IGxldHMgeW91IGdldCB0aGUgY3VycmVudCBzdGF0ZSB3aXRob3V0IHJlc2V0dGluZyB0aGUgbW91bnRlZCBpbnN0YW5jZSBzdGFjay5cbiAgICAgIC8vIERvbuKAmXQgdXNlIGl0IGZvciBhbnl0aGluZyBvdGhlciB0aGFuIHRlc3RpbmcuXG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IGJhc2U6IHtcInRhcmdldFwiOiBcIl9ibGFua1wiLCBcImhyZWZcIjogXCJodHRwOi8vbXlzaXRlLmNvbS9cIn1cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBib2R5QXR0cmlidXRlczoge1wiY2xhc3NOYW1lXCI6IFwicm9vdFwifVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGRlZmF1bHRUaXRsZTogXCJEZWZhdWx0IFRpdGxlXCJcbiAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZGVmZXI6IHRydWVcbiAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZW5jb2RlU3BlY2lhbENoYXJhY3RlcnM6IHRydWVcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBodG1sQXR0cmlidXRlczoge1wibGFuZ1wiOiBcImVuXCIsIFwiYW1wXCI6IHVuZGVmaW5lZH1cbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGxpbms6IFt7XCJyZWxcIjogXCJjYW5vbmljYWxcIiwgXCJocmVmXCI6IFwiaHR0cDovL215c2l0ZS5jb20vZXhhbXBsZVwifV1cbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IG1ldGE6IFt7XCJuYW1lXCI6IFwiZGVzY3JpcHRpb25cIiwgXCJjb250ZW50XCI6IFwiVGVzdCBkZXNjcmlwdGlvblwifV1cbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IG5vc2NyaXB0OiBbe1wiaW5uZXJIVE1MXCI6IFwiPGltZyBzcmM9J2h0dHA6Ly9teXNpdGUuY29tL2pzL3Rlc3QuanMnXCJ9XVxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25DaGFuZ2VDbGllbnRTdGF0ZTogXCIobmV3U3RhdGUpID0+IGNvbnNvbGUubG9nKG5ld1N0YXRlKVwiXG4gICAgICAgKiBAcGFyYW0ge0FycmF5fSBzY3JpcHQ6IFt7XCJ0eXBlXCI6IFwidGV4dC9qYXZhc2NyaXB0XCIsIFwic3JjXCI6IFwiaHR0cDovL215c2l0ZS5jb20vanMvdGVzdC5qc1wifV1cbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHN0eWxlOiBbe1widHlwZVwiOiBcInRleHQvY3NzXCIsIFwiY3NzVGV4dFwiOiBcImRpdiB7IGRpc3BsYXk6IGJsb2NrOyBjb2xvcjogYmx1ZTsgfVwifV1cbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0aXRsZTogXCJUaXRsZVwiXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gdGl0bGVBdHRyaWJ1dGVzOiB7XCJpdGVtcHJvcFwiOiBcIm5hbWVcIn1cbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0aXRsZVRlbXBsYXRlOiBcIk15U2l0ZS5jb20gLSAlc1wiXG4gICAgICAgKi9cbiAgICAgIHNldDogZnVuY3Rpb24gc2V0JCQxKGNhblVzZURPTSkge1xuICAgICAgICBDb21wb25lbnQuY2FuVXNlRE9NID0gY2FuVXNlRE9NO1xuICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gSGVsbWV0V3JhcHBlcjtcbiAgfShSZWFjdC5Db21wb25lbnQpLCBfY2xhc3MucHJvcFR5cGVzID0ge1xuICAgIGJhc2U6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgYm9keUF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSwgUHJvcFR5cGVzLm5vZGVdKSxcbiAgICBkZWZhdWx0VGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVmZXI6IFByb3BUeXBlcy5ib29sLFxuICAgIGVuY29kZVNwZWNpYWxDaGFyYWN0ZXJzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBodG1sQXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBsaW5rOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcbiAgICBtZXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcbiAgICBub3NjcmlwdDogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG4gICAgb25DaGFuZ2VDbGllbnRTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc2NyaXB0OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcbiAgICBzdHlsZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGl0bGVBdHRyaWJ1dGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRpdGxlVGVtcGxhdGU6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSwgX2NsYXNzLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBkZWZlcjogdHJ1ZSxcbiAgICBlbmNvZGVTcGVjaWFsQ2hhcmFjdGVyczogdHJ1ZVxuICB9LCBfY2xhc3MucGVlayA9IENvbXBvbmVudC5wZWVrLCBfY2xhc3MucmV3aW5kID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtYXBwZWRTdGF0ZSA9IENvbXBvbmVudC5yZXdpbmQoKTtcblxuICAgIGlmICghbWFwcGVkU3RhdGUpIHtcbiAgICAgIC8vIHByb3ZpZGUgZmFsbGJhY2sgaWYgbWFwcGVkU3RhdGUgaXMgdW5kZWZpbmVkXG4gICAgICBtYXBwZWRTdGF0ZSA9IG1hcFN0YXRlT25TZXJ2ZXIoe1xuICAgICAgICBiYXNlVGFnOiBbXSxcbiAgICAgICAgYm9keUF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICBlbmNvZGVTcGVjaWFsQ2hhcmFjdGVyczogdHJ1ZSxcbiAgICAgICAgaHRtbEF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICBsaW5rVGFnczogW10sXG4gICAgICAgIG1ldGFUYWdzOiBbXSxcbiAgICAgICAgbm9zY3JpcHRUYWdzOiBbXSxcbiAgICAgICAgc2NyaXB0VGFnczogW10sXG4gICAgICAgIHN0eWxlVGFnczogW10sXG4gICAgICAgIHRpdGxlOiBcIlwiLFxuICAgICAgICB0aXRsZUF0dHJpYnV0ZXM6IHt9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGVkU3RhdGU7XG4gIH0sIF90ZW1wO1xufTtcblxudmFyIE51bGxDb21wb25lbnQgPSBmdW5jdGlvbiBOdWxsQ29tcG9uZW50KCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBIZWxtZXRTaWRlRWZmZWN0cyA9IHdpdGhTaWRlRWZmZWN0KHJlZHVjZVByb3BzVG9TdGF0ZSwgaGFuZGxlQ2xpZW50U3RhdGVDaGFuZ2UsIG1hcFN0YXRlT25TZXJ2ZXIpKE51bGxDb21wb25lbnQpO1xudmFyIEhlbG1ldEV4cG9ydCA9IEhlbG1ldChIZWxtZXRTaWRlRWZmZWN0cyk7XG5IZWxtZXRFeHBvcnQucmVuZGVyU3RhdGljID0gSGVsbWV0RXhwb3J0LnJld2luZDtcbmV4cG9ydCBkZWZhdWx0IEhlbG1ldEV4cG9ydDtcbmV4cG9ydCB7IEhlbG1ldEV4cG9ydCBhcyBIZWxtZXQgfTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuXG4vKipcbiAqIEZsYWdDb250ZXh0IHN0b3JlcyBmZWF0dXJlIGZsYWdzIGFuZCBwYXNzZXMgdGhlbSB0byBjb25zdW1lcnNcbiAqL1xuIGludGVyZmFjZSBJRmxhZ0NvbnRleHQge1xuICAvKipcbiAgICogQ29udGFpbnMgYSBsaXN0IG9mIGFsbCBjdXJyZW50bHktYWN0aXZlIGZsYWdzXG4gICAqL1xuICBmbGFnczogc3RyaW5nW107XG59XG5cbmNvbnN0IEZsYWdDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxJRmxhZ0NvbnRleHQ+KHtmbGFnczogW119KTtcblxuLyoqXG4gKiBgdXNlRmxhZ3NgIHJldHVybnMgYWxsIGZlYXR1cmUgZmxhZ3MuXG4gKlxuICogQHJldHVybiB7RmxhZ3NbXX0gZmxhZ3MgQWxsIHByb2plY3QgZmVhdHVyZSBmbGFnc1xuICovXG5jb25zdCB1c2VGbGFncyA9ICgpIDogc3RyaW5nW10gPT4ge1xuICBjb25zdCB7ZmxhZ3N9ID0gUmVhY3QudXNlQ29udGV4dChGbGFnQ29udGV4dCk7XG4gIHJldHVybiBmbGFncztcbn07XG5cbmludGVyZmFjZSBJVVJMRmxhZ1Byb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlLFxuICBsb2NhdGlvbjogTG9jYXRpb25cbn1cblxuLyoqXG4gKiBgVVJMRmxhZ1Byb3ZpZGVyYCBpcyBhIHByb3ZpZGVyIGZvciBGbGFnQ29udGV4dC5cbiAqICAgSXQgaXMgcGFzc2VkIHRoZSBjdXJyZW50IFVSTCBhbmQgcGFyc2VzIHRoZVxuICogICBcImZsYWdzXCIgcGFyYW1ldGVyLCBhc3N1bWVkIHRvIGJlIGEgY29tbWEtc2VwYXJhdGVkXG4gKiAgIGxpc3Qgb2YgY3VycmVudGx5LWFjdGl2ZSBmbGFncy5cbiAqIEBwYXJhbSB7VVJMfSBsb2NhdGlvbiA6IHRoZSBjdXJyZW50IFVSTCBvYmplY3RcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBjaGlsZHJlbiA6IHRoZSBjaGlsZHJlbiBjb21wb25lbnRzXG4gKiBAcmV0dXJuIHtSZWFjdE5vZGV9IFVSTEZsYWdQcm92aWRlciBjb21wb25lbnRcbiAqKi9cbmNvbnN0IFVSTEZsYWdQcm92aWRlciA9ICh7Y2hpbGRyZW4sIGxvY2F0aW9ufTogSVVSTEZsYWdQcm92aWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IGZsYWdTdHJpbmcgPSBxdWVyeVN0cmluZy5wYXJzZShsb2NhdGlvbi5zZWFyY2gpLmZsYWdzO1xuICBsZXQgZmxhZ3M6IHN0cmluZ1tdID0gW107XG4gIGlmIChmbGFnU3RyaW5nICYmIHR5cGVvZiBmbGFnU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIGZsYWdzID0gKGZsYWdTdHJpbmcgYXMgc3RyaW5nKS5zcGxpdCgnLCcpO1xuICB9XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGxvY2F0aW9uKSwgSlNPTi5zdHJpbmdpZnkoZmxhZ3MpKTtcblxuICByZXR1cm4gKFxuICAgIDxGbGFnQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tmbGFnc319PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvRmxhZ0NvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQge0ZsYWdDb250ZXh0LCBVUkxGbGFnUHJvdmlkZXIsIHVzZUZsYWdzfTtcbiIsImltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0xpbmssIHVzZUludGx9IGZyb20gJ2dhdHNieS1wbHVnaW4taW50bCc7XG5pbXBvcnQge1xuICBBbGVydCxcbiAgSGVhZGVyLFxuICBOYXZNZW51QnV0dG9uLFxuICBQcmltYXJ5TmF2LFxuICBHb3ZCYW5uZXIsXG4gIFRpdGxlLFxufSBmcm9tICdAdHJ1c3N3b3Jrcy9yZWFjdC11c3dkcyc7XG5pbXBvcnQge0hlbG1ldH0gZnJvbSAncmVhY3QtaGVsbWV0JztcbmltcG9ydCB7dXNlRmxhZ3N9IGZyb20gJy4uL2NvbnRleHRzL0ZsYWdDb250ZXh0JztcbmltcG9ydCB7ZGVmaW5lTWVzc2FnZXN9IGZyb20gJ3JlYWN0LWludGwnO1xuXG5jb25zdCBKNDBIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGZsYWdzID0gdXNlRmxhZ3MoKTtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW21vYmlsZU5hdk9wZW4sIHNldE1vYmlsZU5hdk9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBtZXNzYWdlcyA9IGRlZmluZU1lc3NhZ2VzKHtcbiAgICB0aXRsZToge1xuICAgICAgaWQ6ICdoZWFkZXIudGl0bGUnLFxuICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdKdXN0aWNlNDAnLFxuICAgICAgZGVzY3JpcHRpb246ICdUaXRsZSBpbiBoZWFkZXInLFxuICAgIH0sXG4gICAgYWJvdXQ6IHtcbiAgICAgIGlkOiAnaGVhZGVyLmFib3V0JyxcbiAgICAgIGRlZmF1bHRNZXNzYWdlOiAnQWJvdXQnLFxuICAgICAgZGVzY3JpcHRpb246ICdOYXZpZ2F0ZSB0byB0aGUgYWJvdXQgcGFnZScsXG4gICAgfSxcbiAgICBleHBsb3JlOiB7XG4gICAgICBpZDogJ2hlYWRlci5leHBsb3JlJyxcbiAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRXhwbG9yZSB0aGUgdG9vbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ05hdmlnYXRlIHRvIHRoZSBFeHBsb3JlIHRoZSB0b29sIHBhZ2UnLFxuICAgIH0sXG4gICAgbWV0aG9kb2xvZ3k6IHtcbiAgICAgIGlkOiAnaGVhZGVyLm1ldGhvZG9sb2d5JyxcbiAgICAgIGRlZmF1bHRNZXNzYWdlOiAnTWV0aG9kb2xvZ3knLFxuICAgICAgZGVzY3JpcHRpb246ICdOYXZpZ2F0ZSB0byB0aGUgTWV0aG9kb2xvZ3kgcGFnZScsXG4gICAgfSxcbiAgICBjb250YWN0OiB7XG4gICAgICBpZDogJ2hlYWRlci5jb250YWN0JyxcbiAgICAgIGRlZmF1bHRNZXNzYWdlOiAnQ29udGFjdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ05hdmlnYXRlIHRvIHRoZSBDb250YWN0IHBhZ2UnLFxuICAgIH0sXG4gICAgdGltZWxpbmU6IHtcbiAgICAgIGlkOiAnaGVhZGVyLnRpbWVsaW5lJyxcbiAgICAgIGRlZmF1bHRNZXNzYWdlOiAnVGltZWxpbmUnLFxuICAgICAgZGVzY3JpcHRpb246ICdOYXZpZ2F0ZSB0byB0aGUgVGltZWxpbmUgcGFnZScsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHRpdGxlID0gaW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLnRpdGxlKTtcblxuICBjb25zdCB0b2dnbGVNb2JpbGVOYXYgPSAoKTogdm9pZCA9PlxuICAgIHNldE1vYmlsZU5hdk9wZW4oKHByZXZPcGVuKSA9PiAhcHJldk9wZW4pO1xuXG4gIGNvbnN0IGhlYWRlckxpbmtzID0gKGZsYWdzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIC8vIHN0YXRpYyBtYXAgb2YgYWxsIHBvc3NpYmxlIG1lbnUgaXRlbXMuIE9yaWdpbmFsbHksIGl0IHdhcyBhbGwgc3RyaW5ncyxcbiAgICAvLyBidXQgd2UgbmVlZCB0byBoYW5kbGUgYm90aCBvbnNpdGUgYW5kIG9mZnNpdGUgbGlua3MuXG4gICAgY29uc3QgbWVudURhdGEgPSBuZXcgTWFwPHN0cmluZywgSlNYLkVsZW1lbnQ+KFtcbiAgICAgIFsnYWJvdXQnLFxuICAgICAgICA8TGlua1xuICAgICAgICAgIHRvPXsnLyd9XG4gICAgICAgICAga2V5PXsnYWJvdXQnfVxuICAgICAgICAgIGFjdGl2ZUNsYXNzTmFtZT1cInVzYS1jdXJyZW50XCJcbiAgICAgICAgICBjbGFzc05hbWU9eydqNDAtaGVhZGVyJ30+e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5hYm91dCl9PC9MaW5rPl0sXG4gICAgICBbJ2NlanN0JyxcbiAgICAgICAgPExpbmtcbiAgICAgICAgICB0bz17Jy9jZWpzdCd9XG4gICAgICAgICAga2V5PXsnY2Vqc3QnfVxuICAgICAgICAgIGFjdGl2ZUNsYXNzTmFtZT1cInVzYS1jdXJyZW50XCJcbiAgICAgICAgICBjbGFzc05hbWU9eydqNDAtaGVhZGVyJ30+e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5leHBsb3JlKX08L0xpbms+XSxcbiAgICAgIFsnbWV0aG9kb2xvZ3knLFxuICAgICAgICA8TGlua1xuICAgICAgICAgIHRvPXsnL21ldGhvZG9sb2d5J31cbiAgICAgICAgICBrZXk9eydtZXRob2RvbG9neSd9XG4gICAgICAgICAgYWN0aXZlQ2xhc3NOYW1lPVwidXNhLWN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17J2o0MC1oZWFkZXInfT57aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLm1ldGhvZG9sb2d5KX08L0xpbms+XSxcbiAgICAgIFsnY29udGFjdCcsXG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgdG89eycvY29udGFjdCd9XG4gICAgICAgICAga2V5PXsnY29udGFjdCd9XG4gICAgICAgICAgYWN0aXZlQ2xhc3NOYW1lPVwidXNhLWN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17J2o0MC1oZWFkZXInfT57aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmNvbnRhY3QpfTwvTGluaz5dLFxuICAgICAgWyd0aW1lbGluZScsXG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgdG89eycvdGltZWxpbmUnfVxuICAgICAgICAgIGtleT17J3RpbWxpbmUnfVxuICAgICAgICAgIGFjdGl2ZUNsYXNzTmFtZT1cInVzYS1jdXJyZW50XCJcbiAgICAgICAgICBjbGFzc05hbWU9eydqNDAtaGVhZGVyJ30+e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy50aW1lbGluZSl9PC9MaW5rPl0sXG4gICAgXSk7XG5cbiAgICAvLyBzZWxlY3Qgd2hpY2ggaXRlbXMgZnJvbSB0aGUgYWJvdmUgbWFwIHRvIHNob3csIHJpZ2h0IG5vdyBpdCdzIG9ubHkgdHdvXG4gICAgLy8gcG9zc2liaWxpdGllcyBzbyBpdCdzIHNpbXBsZS4gTm90ZTogc3RyaW5ncyBhcmUgdXNlZCBhcyByZWFjdCBrZXlzXG4gICAgY29uc3QgbWVudSA9XG4gICAgICBmbGFncz8uaW5jbHVkZXMoJ3NwcmludDMnKSA/XG4gICAgICAgIFsnYWJvdXQnLCAnY2Vqc3QnLCAnbWV0aG9kb2xvZ3knLCAnY29udGFjdCddIDpcbiAgICAgICAgWydhYm91dCcsICdjZWpzdCcsICdtZXRob2RvbG9neScsICdjb250YWN0J107XG4gICAgLy8gVE9ETzogbWFrZSBmZWF0dXJlIGZsYWdzIGZsYWdzIHdvcmsuXG4gICAgcmV0dXJuIG1lbnUubWFwKChrZXkpID0+IG1lbnVEYXRhLmdldChrZXkpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8SGVsbWV0IGh0bWxBdHRyaWJ1dGVzPXt7bGFuZzogaW50bC5sb2NhbGV9fT5cbiAgICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIvPlxuICAgICAgICA8dGl0bGU+e3RpdGxlfTwvdGl0bGU+XG4gICAgICA8L0hlbG1ldD5cbiAgICAgIDxHb3ZCYW5uZXIvPlxuICAgICAgPEhlYWRlclxuICAgICAgICBiYXNpYz17dHJ1ZX0gcm9sZT17J2Jhbm5lcid9XG4gICAgICAgIGNsYXNzTmFtZT17J3VzYS1oZWFkZXIgajQwLWhlYWRlcid9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzYS1uYXYtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2EtbmF2YmFyXCI+XG4gICAgICAgICAgICA8VGl0bGU+e3RpdGxlfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2J5bGluZSd9PlxuICAgICAgICAgICAgICAgIEEgY2xpbWF0ZSBhbmQgZWNvbm9taWMganVzdGljZSBzY3JlZW5pbmcgdG9vbFxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvVGl0bGU+XG5cbiAgICAgICAgICAgIDxOYXZNZW51QnV0dG9uXG4gICAgICAgICAgICAgIGtleT17J21vYmlsZU1lbnVCdXR0b24nfVxuICAgICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVNb2JpbGVOYXZ9XG4gICAgICAgICAgICAgIGxhYmVsPVwiTWVudVwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8UHJpbWFyeU5hdlxuICAgICAgICAgICAgaXRlbXM9e2hlYWRlckxpbmtzKGZsYWdzKX1cbiAgICAgICAgICAgIG1vYmlsZUV4cGFuZGVkPXttb2JpbGVOYXZPcGVufVxuICAgICAgICAgICAgb25Ub2dnbGVNb2JpbGVOYXY9e3RvZ2dsZU1vYmlsZU5hdn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17J2o0MC1oZWFkZXInfVxuICAgICAgICAgID5cbiAgICAgICAgICA8L1ByaW1hcnlOYXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9IZWFkZXI+XG4gICAgICA8QWxlcnRcbiAgICAgICAgY2xhc3NOYW1lPXsnajQwLXNpdGVhbGVydCd9XG4gICAgICAgIHR5cGU9XCJpbmZvXCI+XG4gICAgICAgIDxiPlB1YmxpYyBiZXRhIOKAlCA8L2I+XG4gICAgICAgIFdlbGNvbWUgdG8gdGhlIHB1YmxpYyBiZXRhIG9mIHRoZSBKdXN0IFByb2dyZXNzIE1hcCwgYSBjbGltYXRlIGFuZFxuICAgICAgICBlY29ub21pYyBqdXN0aWNlIHNjcmVlbmluZyB0b29sLiBUaGUgdG9vbCB3aWxsIGJlIGNvbnRpbnVvdXNseSB1cGRhdGVkLlxuICAgICAgICBQbGVhc2Ugc3VibWl0IGZlZWRiYWNrLlxuICAgICAgICA8YnIvPlxuICAgICAgPC9BbGVydD5cbiAgICAgIDxBbGVydFxuICAgICAgICBjbGFzc05hbWU9eydqNDAtc2l0ZWFsZXJ0J31cbiAgICAgICAgdHlwZT1cIndhcm5pbmdcIj5cbiAgICAgICAgPGI+TGltaXRlZCBkYXRhIHNvdXJjZXMg4oCUIDwvYj5cbiAgICAgICAgVGhpcyB0b29sIGN1cnJlbnRseSBpbmNsdWRlcyAxNiBkYXRhc2V0cy4gT3ZlciB0aW1lLCBkYXRhc2V0cyBjb3VsZCBiZVxuICAgICAgICBhZGRlZCwgdXBkYXRlZCwgb3IgcmVtb3ZlZC4gVGhlIGRhdGFzZXRzIGNvbWUgZnJvbSBhIHZhcmlldHkgb2Ygc291cmNlc1xuICAgICAgICBiYXNlZCBvbiBhdmFpbGFiaWxpdHksIHF1YWxpdHksIGFuZCByZWxldmFuY2UgdG8gZW52aXJvbm1lbnRhbCwgZW5lcmd5LFxuICAgICAgICBhbmQgY2xpbWF0ZSBpc3N1ZXMuIEVhY2ggZGF0YXNldCBoYXMgbGltaXRhdGlvbnMsIHN1Y2ggYXMgaG93IHJlY2VudGx5XG4gICAgICAgIHRoZSBkYXRhIHdhcyB1cGRhdGVkLlxuICAgICAgPC9BbGVydD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEo0MEhlYWRlcjtcbiIsImV4cG9ydCBkZWZhdWx0IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgXCJzdGF0aWMvZW9wLXNlYWwtMTJlNWRjYzQ0NTNjYjMzMjE1MTVmNTA4NzRkMWYxZjYuc3ZnXCI7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Rm9vdGVyLCBMb2dvLCBGb290ZXJOYXYsIEFkZHJlc3N9IGZyb20gJ0B0cnVzc3dvcmtzL3JlYWN0LXVzd2RzJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB3aGl0ZWhvdXNlSWNvbiBmcm9tICcuLi9pbWFnZXMvZW9wLXNlYWwuc3ZnJztcblxuY29uc3QgSjQwRm9vdGVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Rm9vdGVyXG4gICAgICAgIHNpemU9XCJiaWdcIlxuICAgICAgICBjbGFzc05hbWU9eydqNDAtZm9vdGVyJ31cbiAgICAgICAgcHJpbWFyeT17PD48Lz59XG4gICAgICAgIHNlY29uZGFyeT17PEZvb3Rlck5hdlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJGb290ZXIgbmF2aWdhdGlvblwiXG4gICAgICAgICAgc2l6ZT1cImJpZ1wiIC8vIGZ5aSB5b3UgbGVhdmUgdGhpcyBvZmYgYW5kIGl0IHNpbGVudGx5IGZhaWxzLi4uXG4gICAgICAgICAgbGlua3M9e1tcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgJ0FnZW5jeSBQYXJ0bmVycycsXG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17J2h0dHBzOi8vd3d3LmVwYS5nb3YvJ31cbiAgICAgICAgICAgICAgICB0YXJnZXQ9eydfYmxhbmsnfVxuICAgICAgICAgICAgICAgIHJlbD17J25vcmVmZXJyZXInfVxuICAgICAgICAgICAgICAgIGtleT17J2VwYWxpbmsnfT5FbnZpcm9ubWVudGFsIFByb3RlY3Rpb24gQWdlbmN5PC9hPixcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXsnaHR0cHM6Ly93d3cud2hpdGVob3VzZS5nb3Yvb21iJ31cbiAgICAgICAgICAgICAgICB0YXJnZXQ9eydfYmxhbmsnfVxuICAgICAgICAgICAgICAgIHJlbD17J25vcmVmZXJyZXInfVxuICAgICAgICAgICAgICAgIGtleT17J3doaXRlaG91c2VsaW5rJ30+T2ZmaWNlIG9mIE1hbmFnZW1lbnRcbiAgICAgICAgICAgICAgICBhbmQgQnVkZ2V0PC9hPixcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXsnaHR0cHM6Ly93d3cuZW5lcmd5Lmdvdi8nfVxuICAgICAgICAgICAgICAgIHRhcmdldD17J19ibGFuayd9XG4gICAgICAgICAgICAgICAgcmVsPXsnbm9yZWZlcnJlcid9XG4gICAgICAgICAgICAgICAga2V5PXsnZW5lcmd5bGluayd9PkRlcGFydG1lbnQgb2YgRW5lcmd5PC9hPixcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXsnaHR0cHM6Ly93d3cuaHVkLmdvdi8nfVxuICAgICAgICAgICAgICAgIHRhcmdldD17J19ibGFuayd9XG4gICAgICAgICAgICAgICAgcmVsPXsnbm9yZWZlcnJlcid9XG4gICAgICAgICAgICAgICAga2V5PXsnaHVkbGluayd9PkRlcGFydG1lbnQgb2YgSG91c2luZyBhbmQgVXJiYW5cbiAgICAgICAgICAgICAgICBEZXZlbG9wbWVudDwvYT4sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAnTW9yZSBJbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17J2h0dHBzOi8vd3d3LndoaXRlaG91c2UuZ292Lyd9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PXsnX2JsYW5rJ31cbiAgICAgICAgICAgICAgICByZWw9eydub3JlZmVycmVyJ31cbiAgICAgICAgICAgICAgICBrZXk9eyd3aGl0ZWhvdXNlbGluazInfT5XaGl0ZWhvdXNlLmdvdjwvYT4sXG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIga2V5PXsnYWNjZXNzaWJpbGl0eWxpbmsnfT5BY2Nlc3NpYmlsaXR5IFN0YXRlbWVudDwvYT4sXG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIga2V5PXsncHJpdmFjeWxpbmsnfT5Qcml2YWN5LCBQb2xpY2llcywgYW5kIExlZ2FsXG4gICAgICAgICAgICAgICAgSW5mb3JtYXRpb248L2E+LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgJ0hhdmUgYSBxdWVzdGlvbiBhYm91dCBnb3Zlcm5tZW50IHNlcnZpY2VzPycsXG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIga2V5PXsncHJpdmFjeWxpbmsnfT5GaW5kIGEgY29udGFjdCBhdCBVU0EuZ292PC9hPixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbGltXCJcbiAgICAgICAgICAgICAgICAgIGtleT17J2xvZ29pbWcnfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnajQwLWZvb3Rlci1sb2dvJ31cbiAgICAgICAgICAgICAgICAgIGltYWdlPXtcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3VzYS1mb290ZXJfX2xvZ28taW1nJ31cbiAgICAgICAgICAgICAgICAgICAgICBzcmM9e3doaXRlaG91c2VJY29ufVxuICAgICAgICAgICAgICAgICAgICAgIGFsdD17J1doaXRlaG91c2UgbG9nbyd9Lz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGhlYWRpbmc9ezxwXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2o0MC1mb290ZXItbG9nby1oZWFkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgIENvdW5jaWwgb24gRW52aXJvbm1lbnRhbCBRdWFsaXR5PC9wPn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8Lz4sXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEFkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGtleT17J2Zvb3RlcmFkZHJlc3MnfVxuICAgICAgICAgICAgICAgICAgaXRlbXM9e1tcbiAgICAgICAgICAgICAgICAgICAgJzczMCBKYWNrc29uIFBsIE5XJyxcbiAgICAgICAgICAgICAgICAgICAgJ1dhc2hpbmd0b24sIEQuQy4gMjA1MDYnLFxuICAgICAgICAgICAgICAgICAgICAnKDIwMikgMzk1LTU3NTAnLFxuICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8Lz4sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIF19XG4gICAgICAgIC8+fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEo0MEZvb3RlcjtcbiIsImV4cG9ydCBkZWZhdWx0IFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUdobGFXZG9kRDBpTWpRaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSWdkMmxrZEdnOUlqSTBJajQ4Y0dGMGFDQmtQU0pOTUNBd2FESTBkakkwU0RCNklpQm1hV3hzUFNKdWIyNWxJaTgrUEhCaGRHZ2daRDBpVFRJd0lESklOR010TVM0eElEQXRNUzQ1T1M0NUxURXVPVGtnTWt3eUlESXliRFF0TkdneE5HTXhMakVnTUNBeUxTNDVJREl0TWxZMFl6QXRNUzR4TFM0NUxUSXRNaTB5ZWswMklEbG9NVEoyTWtnMlZqbDZiVGdnTlVnMmRpMHlhRGgyTW5wdE5DMDJTRFpXTm1neE1uWXllaUl2UGp3dmMzWm5QZz09XCIiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSStQR1JsWm5NK1BITjBlV3hsUGk1amJITXRNWHRtYVd4c0xYSjFiR1U2WlhabGJtOWtaRHQ5UEM5emRIbHNaVDQ4TDJSbFpuTStQSEJoZEdnZ2FXUTlJa2RwZEdoMVlpSWdZMnhoYzNNOUltTnNjeTB4SWlCa1BTSk5NVElzTWtFeE1Dd3hNQ3d3TERBc01DdzRMamcwTERJeExqUTVZeTQxTGpBNUxqWTRMUzR5TWk0Mk9DMHVORGh6TUMwdU9EY3NNQzB4TGpkRE5pNDNNeXd4T1M0NU1TdzJMakUwTERFNExEWXVNVFFzTVRoQk1pNDJPU3d5TGpZNUxEQXNNQ3d3TERVc01UWXVOV010TGpreExTNDJNaTR3TnkwdU5qRXVNRGN0TGpZeFlUSXVNVE1zTWk0eE15d3dMREFzTVN3eExqVXpMREVzTWk0eE5Dd3lMakUwTERBc01Dd3dMREl1T1RFdU9ETXNNaTR4Tml3eUxqRTJMREFzTUN3eExDNDJNeTB4TGpNMFF6Z3NNVFl1TVRjc05TNDJNaXd4TlM0ek1TdzFMall5TERFeExqUTRZVE11T0Rrc015NDRPU3d3TERBc01Td3hMVEl1Tmprc015NDFOeXd6TGpVM0xEQXNNQ3d4TEM0eExUSXVOalJ6TGpnMExTNHlOeXd5TGpjMUxERmhPUzQyTXl3NUxqWXpMREFzTUN3eExEVXNNR014TGpreExURXVNamtzTWk0M05TMHhMREl1TnpVdE1XRXpMalUzTERNdU5UY3NNQ3d3TERFc0xqRXNNaTQyTkN3ekxqZzVMRE11T0Rrc01Dd3dMREVzTVN3eUxqWTVZekFzTXk0NE5DMHlMak0wTERRdU5qZ3ROQzQxTnl3MExqa3pZVEl1TXprc01pNHpPU3d3TERBc01Td3VOamdzTVM0NE5XTXdMREV1TXpRc01Dd3lMalF5TERBc01pNDNOWE11TVRndU5UZ3VOamt1TkRoQk1UQXNNVEFzTUN3d0xEQXNNVElzTWxvaUx6NDhMM04yWno0PVwiIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgY2hhdEljb24gZnJvbSAnL25vZGVfbW9kdWxlcy91c3dkcy9kaXN0L2ltZy91c2EtaWNvbnMvY2hhdC5zdmcnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IGdpdGh1Ykljb24gZnJvbSAnL25vZGVfbW9kdWxlcy91c3dkcy9kaXN0L2ltZy91c2EtaWNvbnMvZ2l0aHViLnN2Zyc7XG5cbmNvbnN0IEo0MEFzaWRlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YXNpZGVcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwicmlnaHQtc2lkZWJhclwiXG4gICAgICAgIGNsYXNzTmFtZT17J2o0MC1hc2lkZSBkZXNrdG9wOmdyaWQtY29sLTMgdXNhLXByb3NlIHVzYS1zZWN0aW9uJ31cbiAgICAgICAgaWQ9XCJyaWdodC1zaWRlYmFyXCI+XG4gICAgICAgIDxoMj5HZXQgSW52b2x2ZWQ8L2gyPlxuICAgICAgICA8aDM+PGltZ1xuICAgICAgICAgIGNsYXNzTmFtZT17J2ZsZXgtYWxpZ24tc2VsZi1jZW50ZXIgd2lkdGgtNCBqNDAtYXNpZGUtaWNvbid9XG4gICAgICAgICAgc3JjPXtjaGF0SWNvbn0gYWx0PXsnY2hhdCBpY29uJ30vPlxuICAgICAgICBTZW5kIEZlZWRiYWNrPC9oMz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPXsndXNhLXByb3NlIHNpdGUtcHJvc2UnfT5IYXZlIGlkZWFzIGFib3V0IGhvdyB0b1xuICAgICAgICBhY2tub3dsZWRnZSB0aGUgb24tdGhlLWdyb3VuZCBleHBlcmllbmNlcyBvZiB5b3VyIGNvbW11bml0eT9cbiAgICAgICAgPC9wPlxuICAgICAgRW1haWw6IDxhIGhyZWY9XCJtYWlsdG86IGp1c3RpY2U0MG9wZW5AdXNkcy5nb3ZcIj5cbiAgICAgIGp1c3RpY2U0MG9wZW5AdXNkcy5nb3Y8L2E+XG4gICAgICAgIDxwPiZuYnNwOzwvcD5cbiAgICAgICAgPGgzPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzTmFtZT17J2ZsZXgtYWxpZ24tc2VsZi1jZW50ZXIgd2lkdGgtNCBqNDAtYXNpZGUtaWNvbid9XG4gICAgICAgICAgICBzcmM9e2dpdGh1Ykljb259IGFsdD17J2dpdGh1YiBpY29uJ30vPlxuICAgICAgICBKb2luIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHk8L2gzPlxuICAgICAgICA8cD5cbiAgICAgICAgSnVzdGljZTQw4oCZcyBjb2RlIGlzIG9wZW4gc291cmNlLCB3aGljaCBtZWFucyBpdCBpcyBhdmFpbGFibGUgZm9yXG4gICAgICAgIHRoZSBwdWJsaWMgdG8gdmlldyBhbmQgY29udHJpYnV0ZS4gQW55b25lIGNhbiB2aWV3IGFuZFxuICAgICAgICBjb250cmlidXRlIG9uIEdpdEh1Yi5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17J2h0dHBzOi8vZ2l0aHViLmNvbS91c2RzL2p1c3RpY2U0MC10b29sLycgK1xuICAgICAgICAgICdjcmlzaXMtYXQtaG9tZS1hbmQtYWJyb2FkLyd9XG4gICAgICAgICAgICB0YXJnZXQ9eydfYmxhbmsnfVxuICAgICAgICAgICAgcmVsPXsnbm9yZWZlcnJlcid9XG4gICAgICAgICAgICBrZXk9eydnaXRodWIzJ30+Q2hlY2sgaXQgb3V0IG9uIEdpdEh1YjwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9hc2lkZT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEo0MEFzaWRlO1xuIiwiaW1wb3J0IFJlYWN0LCB7UmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZUludGx9IGZyb20gJ2dhdHNieS1wbHVnaW4taW50bCc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0dyaWRDb250YWluZXIsIEdyaWR9IGZyb20gJ0B0cnVzc3dvcmtzL3JlYWN0LXVzd2RzJztcbmltcG9ydCBKNDBIZWFkZXIgZnJvbSAnLi9KNDBIZWFkZXInO1xuaW1wb3J0IEo0MEZvb3RlciBmcm9tICcuL0o0MEZvb3Rlcic7XG5pbXBvcnQgSjQwQXNpZGUgZnJvbSAnLi4vY29tcG9uZW50cy9KNDBBc2lkZSc7XG5pbXBvcnQge1VSTEZsYWdQcm92aWRlcn0gZnJvbSAnLi4vY29udGV4dHMvRmxhZ0NvbnRleHQnO1xuLy8gdGhpcyBoYXMgdG8gYmUgd3JvbmdcbmltcG9ydCBFU19MQU5HIGZyb20gJy4uL2ludGwvZXMuanNvbic7XG5cbmludGVyZmFjZSBJTGF5b3V0UHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlLFxuICBsb2NhdGlvbjogTG9jYXRpb25cbn1cblxuY29uc3QgTGF5b3V0ID0gKHtjaGlsZHJlbiwgbG9jYXRpb259OiBJTGF5b3V0UHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgaXNXaWR0aEZ1bGxQYWdlID0gbG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL2NlanN0XFwvPy8pO1xuICBjb25zdCBjb25kaXRpb25hbEFzaWRlID0gaXNXaWR0aEZ1bGxQYWdlID8gPD48Lz4gOiA8SjQwQXNpZGUvPjtcbiAgY29uc3QgZ3JpZENzc0NsYXNzID0gaXNXaWR0aEZ1bGxQYWdlID8gJyBkZXNrdG9wOmdyaWQtY29sLTEyJyA6XG4gICAgJ2Rlc2t0b3A6Z3JpZC1jb2wtOSc7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgbG9jYWxlPXtpbnRsLmxvY2FsZX0gZGVmYXVsdExvY2FsZT17J2VuJ31cbiAgICAgIG1lc3NhZ2VzPXtpbnRsLmxvY2FsZT09PSdlcycgPyBFU19MQU5HIDoge30gfT5cbiAgICAgIDxVUkxGbGFnUHJvdmlkZXIgbG9jYXRpb249e2xvY2F0aW9ufT5cbiAgICAgICAgPEo0MEhlYWRlci8+XG4gICAgICAgIDxHcmlkQ29udGFpbmVyIGNvbnRhaW5lclNpemU9eydkZXNrdG9wLWxnJ31cbiAgICAgICAgICBjbGFzc05hbWU9eydqNDAtZ3JpZC1jb250YWluZXInfT5cbiAgICAgICAgICA8R3JpZCByb3c+XG4gICAgICAgICAgICA8bWFpbiBpZD17J21haW4tY29udGVudCd9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17J3VzYS1sYXlvdXQtZG9jcyBqNDAtbWFpbi1jb250ZW50ICcgKyBncmlkQ3NzQ2xhc3N9PlxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L21haW4+XG4gICAgICAgICAgICB7Y29uZGl0aW9uYWxBc2lkZX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZENvbnRhaW5lcj5cbiAgICAgICAgPEo0MEZvb3Rlci8+XG4gICAgICA8L1VSTEZsYWdQcm92aWRlcj5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2427\n')}}]); |