@openmrs/esm-app-shell 5.3.2-pre.1214 → 5.3.2-pre.1219

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/.turbo/turbo-build.log +98 -99
  2. package/dist/b66a463116735f62.js +1 -0
  3. package/dist/b66a463116735f62.js.map +1 -0
  4. package/dist/fca8d09359d3b887.js +1 -0
  5. package/dist/{25018673bc6f380f.js.map → fca8d09359d3b887.js.map} +1 -1
  6. package/dist/index.html +1 -1
  7. package/dist/openmrs.711bca70c87dec48.js +2 -0
  8. package/dist/openmrs.711bca70c87dec48.js.map +1 -0
  9. package/dist/service-worker.js +1 -1
  10. package/dist/service-worker.js.map +1 -1
  11. package/lib/{57bf7b27114b3f54.js → 49af280eabf5f1f5.js} +1 -51
  12. package/lib/esm-devtools-app/889.js +1 -1
  13. package/lib/esm-devtools-app/main.js +1 -1
  14. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  15. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +3 -3
  16. package/lib/esm-devtools-app/routes.json +1 -1
  17. package/lib/esm-implementer-tools-app/426.js +1 -1
  18. package/lib/esm-implementer-tools-app/560.js +1 -1
  19. package/lib/esm-implementer-tools-app/587.js +1 -1
  20. package/lib/esm-implementer-tools-app/651.js +1 -0
  21. package/lib/esm-implementer-tools-app/651.js.map +1 -0
  22. package/lib/esm-implementer-tools-app/727.js +1 -1
  23. package/lib/esm-implementer-tools-app/738.js +1 -0
  24. package/lib/esm-implementer-tools-app/738.js.map +1 -0
  25. package/lib/esm-implementer-tools-app/79.js +2 -0
  26. package/lib/esm-implementer-tools-app/79.js.map +1 -0
  27. package/lib/esm-implementer-tools-app/889.js +1 -1
  28. package/lib/esm-implementer-tools-app/main.js +1 -1
  29. package/lib/esm-implementer-tools-app/main.js.map +1 -1
  30. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  31. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +75 -54
  32. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.map +1 -1
  33. package/lib/esm-implementer-tools-app/routes.json +1 -1
  34. package/lib/esm-login-app/729.js +1 -0
  35. package/lib/esm-login-app/729.js.map +1 -0
  36. package/lib/esm-login-app/889.js +1 -1
  37. package/lib/esm-login-app/main.js +1 -1
  38. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
  39. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +31 -31
  40. package/lib/esm-login-app/routes.json +1 -1
  41. package/lib/esm-offline-tools-app/193.js +1 -1
  42. package/lib/esm-offline-tools-app/193.js.map +1 -1
  43. package/lib/esm-offline-tools-app/729.js +1 -0
  44. package/lib/esm-offline-tools-app/729.js.map +1 -0
  45. package/lib/esm-offline-tools-app/889.js +1 -1
  46. package/lib/esm-offline-tools-app/main.js +1 -1
  47. package/lib/esm-offline-tools-app/main.js.map +1 -1
  48. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  49. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +32 -32
  50. package/lib/esm-offline-tools-app/routes.json +1 -1
  51. package/lib/esm-primary-navigation-app/729.js +1 -0
  52. package/lib/esm-primary-navigation-app/729.js.map +1 -0
  53. package/lib/esm-primary-navigation-app/889.js +1 -1
  54. package/lib/esm-primary-navigation-app/main.js +1 -1
  55. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  56. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +31 -31
  57. package/lib/esm-primary-navigation-app/routes.json +1 -1
  58. package/lib/index.html +1 -1
  59. package/lib/openmrs.js +69 -102
  60. package/lib/service-worker.js +31 -9
  61. package/package.json +3 -3
  62. package/dist/25018673bc6f380f.js +0 -1
  63. package/dist/498a8af91d44612e.js +0 -1
  64. package/dist/498a8af91d44612e.js.map +0 -1
  65. package/dist/openmrs.78072d770743ee7e.js +0 -2
  66. package/dist/openmrs.78072d770743ee7e.js.map +0 -1
  67. package/lib/esm-implementer-tools-app/263.js +0 -1
  68. package/lib/esm-implementer-tools-app/263.js.map +0 -1
  69. package/lib/esm-implementer-tools-app/285.js +0 -2
  70. package/lib/esm-implementer-tools-app/285.js.map +0 -1
  71. package/lib/esm-login-app/263.js +0 -1
  72. package/lib/esm-login-app/263.js.map +0 -1
  73. package/lib/esm-offline-tools-app/263.js +0 -1
  74. package/lib/esm-offline-tools-app/263.js.map +0 -1
  75. package/lib/esm-primary-navigation-app/263.js +0 -1
  76. package/lib/esm-primary-navigation-app/263.js.map +0 -1
  77. /package/dist/{openmrs.78072d770743ee7e.js.LICENSE.txt → openmrs.711bca70c87dec48.js.LICENSE.txt} +0 -0
  78. /package/lib/esm-implementer-tools-app/{285.js.LICENSE.txt → 79.js.LICENSE.txt} +0 -0
@@ -15,57 +15,7 @@
15
15
  \*********************************************************************************************************/
16
16
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17
17
 
18
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Browser)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/createClass.js\");\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\n\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function(source) {\n if (source) {\n for(var prop in source){\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || \"/\";\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error(\"maxAge should be a Number\");\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError(\"option domain is invalid\");\n }\n str += \"; Domain=\".concat(opt.domain);\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError(\"option path is invalid\");\n }\n str += \"; Path=\".concat(opt.path);\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== \"function\") {\n throw new TypeError(\"option expires is invalid\");\n }\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n if (opt.httpOnly) str += \"; HttpOnly\";\n if (opt.secure) str += \"; Secure\";\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === \"string\" ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch(sameSite){\n case true:\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(\"option sameSite is invalid\");\n }\n }\n return str;\n};\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: \"/\",\n sameSite: \"strict\"\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(\";\");\n for(var i = 0; i < ca.length; i++){\n var c = ca[i];\n while(c.charAt(0) === \" \"){\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove: function remove(name) {\n this.create(name, \"\", -1);\n }\n};\nvar cookie$1 = {\n name: \"cookie\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupCookie && typeof document !== \"undefined\") {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== \"undefined\") {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\nvar querystring = {\n name: \"querystring\",\n lookup: function lookup(options) {\n var found;\n if (typeof window !== \"undefined\") {\n var search = window.location.search;\n if (!window.location.search && window.location.hash && window.location.hash.indexOf(\"?\") > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf(\"?\"));\n }\n var query = search.substring(1);\n var params = query.split(\"&\");\n for(var i = 0; i < params.length; i++){\n var pos = params[i].indexOf(\"=\");\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\nvar hasLocalStorageSupport = null;\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = window !== \"undefined\" && window.localStorage !== null;\n var testKey = \"i18next.translate.boo\";\n window.localStorage.setItem(testKey, \"foo\");\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: \"localStorage\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\nvar hasSessionStorageSupport = null;\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = window !== \"undefined\" && window.sessionStorage !== null;\n var testKey = \"i18next.translate.boo\";\n window.sessionStorage.setItem(testKey, \"foo\");\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: \"sessionStorage\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\nvar navigator$1 = {\n name: \"navigator\",\n lookup: function lookup(options) {\n var found = [];\n if (typeof navigator !== \"undefined\") {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for(var i = 0; i < navigator.languages.length; i++){\n found.push(navigator.languages[i]);\n }\n }\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\nvar htmlTag = {\n name: \"htmlTag\",\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== \"undefined\" ? document.documentElement : null);\n if (htmlTag && typeof htmlTag.getAttribute === \"function\") {\n found = htmlTag.getAttribute(\"lang\");\n }\n return found;\n }\n};\nvar path = {\n name: \"path\",\n lookup: function lookup(options) {\n var found;\n if (typeof window !== \"undefined\") {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (_instanceof(language, Array)) {\n if (typeof options.lookupFromPathIndex === \"number\") {\n if (typeof language[options.lookupFromPathIndex] !== \"string\") {\n return undefined;\n }\n found = language[options.lookupFromPathIndex].replace(\"/\", \"\");\n } else {\n found = language[0].replace(\"/\", \"\");\n }\n }\n }\n return found;\n }\n};\nvar subdomain = {\n name: \"subdomain\",\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === \"number\" ? options.lookupFromSubdomainIndex + 1 : 1; // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n var language = typeof window !== \"undefined\" && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i); // if there is no match (null) return undefined\n if (!language) return undefined; // return the given group match\n return language[lookupFromSubdomainIndex];\n }\n};\nfunction getDefaults() {\n return {\n order: [\n \"querystring\",\n \"cookie\",\n \"localStorage\",\n \"sessionStorage\",\n \"navigator\",\n \"htmlTag\"\n ],\n lookupQuerystring: \"lng\",\n lookupCookie: \"i18next\",\n lookupLocalStorage: \"i18nextLng\",\n lookupSessionStorage: \"i18nextLng\",\n // cache user language\n caches: [\n \"localStorage\"\n ],\n excludeCacheFor: [\n \"cimode\"\n ] // cookieMinutes: 10,\n };\n}\nvar Browser = /*#__PURE__*/ function() {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Browser);\n this.type = \"languageDetector\";\n this.detectors = {};\n this.init(services, options);\n }\n (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Browser, [\n {\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n },\n {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n },\n {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function(detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n if (lookup && typeof lookup === \"string\") lookup = [\n lookup\n ];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n },\n {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function(cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }\n ]);\n return Browser;\n}();\nBrowser.type = \"languageDetector\";\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL2Rpc3QvZXNtL2kxOG5leHRCcm93c2VyTGFuZ3VhZ2VEZXRlY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQXdFO0FBQ047QUFFbEUsSUFBSUUsTUFBTSxFQUFFO0FBQ1osSUFBSUMsT0FBT0QsSUFBSUUsT0FBTztBQUN0QixJQUFJQyxRQUFRSCxJQUFJRyxLQUFLO0FBQ3JCLFNBQVNDLFNBQVNDLEdBQUcsRUFBRTtJQUNyQkosS0FBS0ssSUFBSSxDQUFDSCxNQUFNRyxJQUFJLENBQUNDLFdBQVcsSUFBSSxTQUFVQyxNQUFNLEVBQUU7UUFDcEQsSUFBSUEsUUFBUTtZQUNWLElBQUssSUFBSUMsUUFBUUQsT0FBUTtnQkFDdkIsSUFBSUgsR0FBRyxDQUFDSSxLQUFLLEtBQUtDLFdBQVdMLEdBQUcsQ0FBQ0ksS0FBSyxHQUFHRCxNQUFNLENBQUNDLEtBQUs7WUFDdkQ7UUFDRixDQUFDO0lBQ0g7SUFDQSxPQUFPSjtBQUNUO0FBRUEsNENBQTRDO0FBQzVDLElBQUlNLHFCQUFxQjtBQUV6QixJQUFJQyxrQkFBa0IsU0FBU0EsZ0JBQWdCQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFO0lBQ2pFLElBQUlDLE1BQU1ELFdBQVcsQ0FBQztJQUN0QkMsSUFBSUMsSUFBSSxHQUFHRCxJQUFJQyxJQUFJLElBQUk7SUFDdkIsSUFBSUMsUUFBUUMsbUJBQW1CTDtJQUMvQixJQUFJTSxNQUFNLEdBQUdDLE1BQU0sQ0FBQ1IsTUFBTSxLQUFLUSxNQUFNLENBQUNIO0lBRXRDLElBQUlGLElBQUlNLE1BQU0sR0FBRyxHQUFHO1FBQ2xCLElBQUlBLFNBQVNOLElBQUlNLE1BQU0sR0FBRztRQUMxQixJQUFJQyxPQUFPQyxLQUFLLENBQUNGLFNBQVMsTUFBTSxJQUFJRyxNQUFNLDZCQUE2QjtRQUN2RUwsT0FBTyxhQUFhQyxNQUFNLENBQUNLLEtBQUtDLEtBQUss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QUUsT0FBT0gsVUFBVSxzQkFBc0I7Z0JBRTlGLE9BQU9BLFNBQVMvRSxNQUFNLEdBQUcsSUFBSStFLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLGtDQUFrQztZQUNyRjtRQUNGO1FBQUc7WUFDRGhELEtBQUs7WUFDTHRELE9BQU8sU0FBUzBDLGtCQUFrQkMsR0FBRyxFQUFFNkMsTUFBTSxFQUFFO2dCQUM3QyxJQUFJa0IsU0FBUyxJQUFJO2dCQUVqQixJQUFJLENBQUNsQixRQUFRQSxTQUFTLElBQUksQ0FBQzNGLE9BQU8sQ0FBQzJGLE1BQU07Z0JBQ3pDLElBQUksQ0FBQ0EsUUFBUTtnQkFDYixJQUFJLElBQUksQ0FBQzNGLE9BQU8sQ0FBQzRGLGVBQWUsSUFBSSxJQUFJLENBQUM1RixPQUFPLENBQUM0RixlQUFlLENBQUNyRCxPQUFPLENBQUNPLE9BQU8sQ0FBQyxHQUFHO2dCQUNwRjZDLE9BQU94RyxPQUFPLENBQUMsU0FBVTJILFNBQVMsRUFBRTtvQkFDbEMsSUFBSUQsT0FBT2IsU0FBUyxDQUFDYyxVQUFVLEVBQUVELE9BQU9iLFNBQVMsQ0FBQ2MsVUFBVSxDQUFDakUsaUJBQWlCLENBQUNDLEtBQUsrRCxPQUFPN0csT0FBTztnQkFDcEc7WUFDRjtRQUNGO0tBQUU7SUFFRixPQUFPNkY7QUFDVDtBQUVBQSxRQUFRRSxJQUFJLEdBQUc7QUFFZSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL2Rpc3QvZXNtL2kxOG5leHRCcm93c2VyTGFuZ3VhZ2VEZXRlY3Rvci5qcz9mNjcxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcyc7XG5cbnZhciBhcnIgPSBbXTtcbnZhciBlYWNoID0gYXJyLmZvckVhY2g7XG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5mdW5jdGlvbiBkZWZhdWx0cyhvYmopIHtcbiAgZWFjaC5jYWxsKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChvYmpbcHJvcF0gPT09IHVuZGVmaW5lZCkgb2JqW3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvYmo7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG52YXIgZmllbGRDb250ZW50UmVnRXhwID0gL15bXFx1MDAwOVxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC87XG5cbnZhciBzZXJpYWxpemVDb29raWUgPSBmdW5jdGlvbiBzZXJpYWxpemVDb29raWUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuICBvcHQucGF0aCA9IG9wdC5wYXRoIHx8ICcvJztcbiAgdmFyIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCk7XG4gIHZhciBzdHIgPSBcIlwiLmNvbmNhdChuYW1lLCBcIj1cIikuY29uY2F0KHZhbHVlKTtcblxuICBpZiAob3B0Lm1heEFnZSA+IDApIHtcbiAgICB2YXIgbWF4QWdlID0gb3B0Lm1heEFnZSAtIDA7XG4gICAgaWYgKE51bWJlci5pc05hTihtYXhBZ2UpKSB0aHJvdyBuZXcgRXJyb3IoJ21heEFnZSBzaG91bGQgYmUgYSBOdW1iZXInKTtcbiAgICBzdHIgKz0gXCI7IE1heC1BZ2U9XCIuY29uY2F0KE1hdGguZmxvb3IobWF4QWdlKSk7XG4gIH1cblxuICBpZiAob3B0LmRvbWFpbikge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LmRvbWFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBkb21haW4gaXMgaW52YWxpZCcpO1xuICAgIH1cblxuICAgIHN0ciArPSBcIjsgRG9tYWluPVwiLmNvbmNhdChvcHQuZG9tYWluKTtcbiAgfVxuXG4gIGlmIChvcHQucGF0aCkge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LnBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gcGF0aCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9IFwiOyBQYXRoPVwiLmNvbmNhdChvcHQucGF0aCk7XG4gIH1cblxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAodHlwZW9mIG9wdC5leHBpcmVzLnRvVVRDU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9IFwiOyBFeHBpcmVzPVwiLmNvbmNhdChvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpKTtcbiAgfVxuXG4gIGlmIChvcHQuaHR0cE9ubHkpIHN0ciArPSAnOyBIdHRwT25seSc7XG4gIGlmIChvcHQuc2VjdXJlKSBzdHIgKz0gJzsgU2VjdXJlJztcblxuICBpZiAob3B0LnNhbWVTaXRlKSB7XG4gICAgdmFyIHNhbWVTaXRlID0gdHlwZW9mIG9wdC5zYW1lU2l0ZSA9PT0gJ3N0cmluZycgPyBvcHQuc2FtZVNpdGUudG9Mb3dlckNhc2UoKSA6IG9wdC5zYW1lU2l0ZTtcblxuICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgc3RyICs9ICc7IFNhbWVTaXRlPVN0cmljdCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsYXgnOlxuICAgICAgICBzdHIgKz0gJzsgU2FtZVNpdGU9TGF4JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmljdCc6XG4gICAgICAgIHN0ciArPSAnOyBTYW1lU2l0ZT1TdHJpY3QnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgIHN0ciArPSAnOyBTYW1lU2l0ZT1Ob25lJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBzYW1lU2l0ZSBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn07XG5cbnZhciBjb29raWUgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlKG5hbWUsIHZhbHVlLCBtaW51dGVzLCBkb21haW4pIHtcbiAgICB2YXIgY29va2llT3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDoge1xuICAgICAgcGF0aDogJy8nLFxuICAgICAgc2FtZVNpdGU6ICdzdHJpY3QnXG4gICAgfTtcblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBjb29raWVPcHRpb25zLmV4cGlyZXMgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29va2llT3B0aW9ucy5leHBpcmVzLnNldFRpbWUoY29va2llT3B0aW9ucy5leHBpcmVzLmdldFRpbWUoKSArIG1pbnV0ZXMgKiA2MCAqIDEwMDApO1xuICAgIH1cblxuICAgIGlmIChkb21haW4pIGNvb2tpZU9wdGlvbnMuZG9tYWluID0gZG9tYWluO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlcmlhbGl6ZUNvb2tpZShuYW1lLCBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLCBjb29raWVPcHRpb25zKTtcbiAgfSxcbiAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgdmFyIG5hbWVFUSA9IFwiXCIuY29uY2F0KG5hbWUsIFwiPVwiKTtcbiAgICB2YXIgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2FbaV07XG5cbiAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PT0gJyAnKSB7XG4gICAgICAgIGMgPSBjLnN1YnN0cmluZygxLCBjLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgIHRoaXMuY3JlYXRlKG5hbWUsICcnLCAtMSk7XG4gIH1cbn07XG52YXIgY29va2llJDEgPSB7XG4gIG5hbWU6ICdjb29raWUnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKG9wdGlvbnMubG9va3VwQ29va2llICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBjID0gY29va2llLnJlYWQob3B0aW9ucy5sb29rdXBDb29raWUpO1xuICAgICAgaWYgKGMpIGZvdW5kID0gYztcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH0sXG4gIGNhY2hlVXNlckxhbmd1YWdlOiBmdW5jdGlvbiBjYWNoZVVzZXJMYW5ndWFnZShsbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sb29rdXBDb29raWUgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29va2llLmNyZWF0ZShvcHRpb25zLmxvb2t1cENvb2tpZSwgbG5nLCBvcHRpb25zLmNvb2tpZU1pbnV0ZXMsIG9wdGlvbnMuY29va2llRG9tYWluLCBvcHRpb25zLmNvb2tpZU9wdGlvbnMpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHF1ZXJ5c3RyaW5nID0ge1xuICBuYW1lOiAncXVlcnlzdHJpbmcnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc2VhcmNoID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcblxuICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uc2VhcmNoICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoLmluZGV4T2YoJz8nKSA+IC0xKSB7XG4gICAgICAgIHNlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZyh3aW5kb3cubG9jYXRpb24uaGFzaC5pbmRleE9mKCc/JykpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVlcnkgPSBzZWFyY2guc3Vic3RyaW5nKDEpO1xuICAgICAgdmFyIHBhcmFtcyA9IHF1ZXJ5LnNwbGl0KCcmJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb3MgPSBwYXJhbXNbaV0uaW5kZXhPZignPScpO1xuXG4gICAgICAgIGlmIChwb3MgPiAwKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHBhcmFtc1tpXS5zdWJzdHJpbmcoMCwgcG9zKTtcblxuICAgICAgICAgIGlmIChrZXkgPT09IG9wdGlvbnMubG9va3VwUXVlcnlzdHJpbmcpIHtcbiAgICAgICAgICAgIGZvdW5kID0gcGFyYW1zW2ldLnN1YnN0cmluZyhwb3MgKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn07XG5cbnZhciBoYXNMb2NhbFN0b3JhZ2VTdXBwb3J0ID0gbnVsbDtcblxudmFyIGxvY2FsU3RvcmFnZUF2YWlsYWJsZSA9IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZUF2YWlsYWJsZSgpIHtcbiAgaWYgKGhhc0xvY2FsU3RvcmFnZVN1cHBvcnQgIT09IG51bGwpIHJldHVybiBoYXNMb2NhbFN0b3JhZ2VTdXBwb3J0O1xuXG4gIHRyeSB7XG4gICAgaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCA9IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSAhPT0gbnVsbDtcbiAgICB2YXIgdGVzdEtleSA9ICdpMThuZXh0LnRyYW5zbGF0ZS5ib28nO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0ZXN0S2V5LCAnZm9vJyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRlc3RLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGhhc0xvY2FsU3RvcmFnZVN1cHBvcnQ7XG59O1xuXG52YXIgbG9jYWxTdG9yYWdlID0ge1xuICBuYW1lOiAnbG9jYWxTdG9yYWdlJyxcbiAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAob3B0aW9ucykge1xuICAgIHZhciBmb3VuZDtcblxuICAgIGlmIChvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgdmFyIGxuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSk7XG4gICAgICBpZiAobG5nKSBmb3VuZCA9IGxuZztcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH0sXG4gIGNhY2hlVXNlckxhbmd1YWdlOiBmdW5jdGlvbiBjYWNoZVVzZXJMYW5ndWFnZShsbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sb29rdXBMb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSwgbG5nKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBoYXNTZXNzaW9uU3RvcmFnZVN1cHBvcnQgPSBudWxsO1xuXG52YXIgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUgPSBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZUF2YWlsYWJsZSgpIHtcbiAgaWYgKGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydCAhPT0gbnVsbCkgcmV0dXJuIGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydDtcblxuICB0cnkge1xuICAgIGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydCA9IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnNlc3Npb25TdG9yYWdlICE9PSBudWxsO1xuICAgIHZhciB0ZXN0S2V5ID0gJ2kxOG5leHQudHJhbnNsYXRlLmJvbyc7XG4gICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGVzdEtleSwgJ2ZvbycpO1xuICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRlc3RLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0ID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0O1xufTtcblxudmFyIHNlc3Npb25TdG9yYWdlID0ge1xuICBuYW1lOiAnc2Vzc2lvblN0b3JhZ2UnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UgJiYgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgdmFyIGxuZyA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UpO1xuICAgICAgaWYgKGxuZykgZm91bmQgPSBsbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9LFxuICBjYWNoZVVzZXJMYW5ndWFnZTogZnVuY3Rpb24gY2FjaGVVc2VyTGFuZ3VhZ2UobG5nLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UgJiYgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0ob3B0aW9ucy5sb29rdXBTZXNzaW9uU3RvcmFnZSwgbG5nKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBuYXZpZ2F0b3IkMSA9IHtcbiAgbmFtZTogJ25hdmlnYXRvcicsXG4gIGxvb2t1cDogZnVuY3Rpb24gbG9va3VwKG9wdGlvbnMpIHtcbiAgICB2YXIgZm91bmQgPSBbXTtcblxuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKG5hdmlnYXRvci5sYW5ndWFnZXMpIHtcbiAgICAgICAgLy8gY2hyb21lIG9ubHk7IG5vdCBhbiBhcnJheSwgc28gY2FuJ3QgdXNlIC5wdXNoLmFwcGx5IGluc3RlYWQgb2YgaXRlcmF0aW5nXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmF2aWdhdG9yLmxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGZvdW5kLnB1c2gobmF2aWdhdG9yLmxhbmd1YWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5hdmlnYXRvci51c2VyTGFuZ3VhZ2UpIHtcbiAgICAgICAgZm91bmQucHVzaChuYXZpZ2F0b3IudXNlckxhbmd1YWdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hdmlnYXRvci5sYW5ndWFnZSkge1xuICAgICAgICBmb3VuZC5wdXNoKG5hdmlnYXRvci5sYW5ndWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA+IDAgPyBmb3VuZCA6IHVuZGVmaW5lZDtcbiAgfVxufTtcblxudmFyIGh0bWxUYWcgPSB7XG4gIG5hbWU6ICdodG1sVGFnJyxcbiAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAob3B0aW9ucykge1xuICAgIHZhciBmb3VuZDtcbiAgICB2YXIgaHRtbFRhZyA9IG9wdGlvbnMuaHRtbFRhZyB8fCAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA6IG51bGwpO1xuXG4gICAgaWYgKGh0bWxUYWcgJiYgdHlwZW9mIGh0bWxUYWcuZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmb3VuZCA9IGh0bWxUYWcuZ2V0QXR0cmlidXRlKCdsYW5nJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG59O1xuXG52YXIgcGF0aCA9IHtcbiAgbmFtZTogJ3BhdGgnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL1xcLyhbYS16QS1aLV0qKS9nKTtcblxuICAgICAgaWYgKGxhbmd1YWdlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmxvb2t1cEZyb21QYXRoSW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsYW5ndWFnZVtvcHRpb25zLmxvb2t1cEZyb21QYXRoSW5kZXhdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3VuZCA9IGxhbmd1YWdlW29wdGlvbnMubG9va3VwRnJvbVBhdGhJbmRleF0ucmVwbGFjZSgnLycsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3VuZCA9IGxhbmd1YWdlWzBdLnJlcGxhY2UoJy8nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn07XG5cbnZhciBzdWJkb21haW4gPSB7XG4gIG5hbWU6ICdzdWJkb21haW4nLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgLy8gSWYgZ2l2ZW4gZ2V0IHRoZSBzdWJkb21haW4gaW5kZXggZWxzZSAxXG4gICAgdmFyIGxvb2t1cEZyb21TdWJkb21haW5JbmRleCA9IHR5cGVvZiBvcHRpb25zLmxvb2t1cEZyb21TdWJkb21haW5JbmRleCA9PT0gJ251bWJlcicgPyBvcHRpb25zLmxvb2t1cEZyb21TdWJkb21haW5JbmRleCArIDEgOiAxOyAvLyBnZXQgYWxsIG1hdGNoZXMgaWYgd2luZG93LmxvY2F0aW9uLiBpcyBleGlzdGluZ1xuICAgIC8vIGZpcnN0IGl0ZW0gb2YgbWF0Y2ggaXMgdGhlIG1hdGNoIGl0c2VsZiBhbmQgdGhlIHNlY29uZCBpcyB0aGUgZmlyc3QgZ3JvdXAgbWFjaHQgd2hpY2ggc291bGQgYmUgdGhlIGZpcnN0IHN1YmRvbWFpbiBtYXRjaFxuICAgIC8vIGlzIHRoZSBob3N0bmFtZSBubyBwdWJsaWMgZG9tYWluIGdldCB0aGUgb3Igb3B0aW9uIG9mIGxvY2FsaG9zdFxuXG4gICAgdmFyIGxhbmd1YWdlID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSAmJiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUubWF0Y2goL14oXFx3ezIsNX0pXFwuKChbYS16MC05LV17MSw2M31cXC5bYS16XXsyLDZ9KXxsb2NhbGhvc3QpL2kpOyAvLyBpZiB0aGVyZSBpcyBubyBtYXRjaCAobnVsbCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgaWYgKCFsYW5ndWFnZSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gcmV0dXJuIHRoZSBnaXZlbiBncm91cCBtYXRjaFxuXG4gICAgcmV0dXJuIGxhbmd1YWdlW2xvb2t1cEZyb21TdWJkb21haW5JbmRleF07XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRzKCkge1xuICByZXR1cm4ge1xuICAgIG9yZGVyOiBbJ3F1ZXJ5c3RyaW5nJywgJ2Nvb2tpZScsICdsb2NhbFN0b3JhZ2UnLCAnc2Vzc2lvblN0b3JhZ2UnLCAnbmF2aWdhdG9yJywgJ2h0bWxUYWcnXSxcbiAgICBsb29rdXBRdWVyeXN0cmluZzogJ2xuZycsXG4gICAgbG9va3VwQ29va2llOiAnaTE4bmV4dCcsXG4gICAgbG9va3VwTG9jYWxTdG9yYWdlOiAnaTE4bmV4dExuZycsXG4gICAgbG9va3VwU2Vzc2lvblN0b3JhZ2U6ICdpMThuZXh0TG5nJyxcbiAgICAvLyBjYWNoZSB1c2VyIGxhbmd1YWdlXG4gICAgY2FjaGVzOiBbJ2xvY2FsU3RvcmFnZSddLFxuICAgIGV4Y2x1ZGVDYWNoZUZvcjogWydjaW1vZGUnXSAvLyBjb29raWVNaW51dGVzOiAxMCxcbiAgICAvLyBjb29raWVEb21haW46ICdteURvbWFpbidcblxuICB9O1xufVxuXG52YXIgQnJvd3NlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJyb3dzZXIoc2VydmljZXMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnJvd3Nlcik7XG5cbiAgICB0aGlzLnR5cGUgPSAnbGFuZ3VhZ2VEZXRlY3Rvcic7XG4gICAgdGhpcy5kZXRlY3RvcnMgPSB7fTtcbiAgICB0aGlzLmluaXQoc2VydmljZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEJyb3dzZXIsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdChzZXJ2aWNlcykge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgdmFyIGkxOG5PcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgIHRoaXMuc2VydmljZXMgPSBzZXJ2aWNlcztcbiAgICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzKG9wdGlvbnMsIHRoaXMub3B0aW9ucyB8fCB7fSwgZ2V0RGVmYXVsdHMoKSk7IC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubG9va3VwRnJvbVVybEluZGV4KSB0aGlzLm9wdGlvbnMubG9va3VwRnJvbVBhdGhJbmRleCA9IHRoaXMub3B0aW9ucy5sb29rdXBGcm9tVXJsSW5kZXg7XG4gICAgICB0aGlzLmkxOG5PcHRpb25zID0gaTE4bk9wdGlvbnM7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKGNvb2tpZSQxKTtcbiAgICAgIHRoaXMuYWRkRGV0ZWN0b3IocXVlcnlzdHJpbmcpO1xuICAgICAgdGhpcy5hZGREZXRlY3Rvcihsb2NhbFN0b3JhZ2UpO1xuICAgICAgdGhpcy5hZGREZXRlY3RvcihzZXNzaW9uU3RvcmFnZSk7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKG5hdmlnYXRvciQxKTtcbiAgICAgIHRoaXMuYWRkRGV0ZWN0b3IoaHRtbFRhZyk7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKHBhdGgpO1xuICAgICAgdGhpcy5hZGREZXRlY3RvcihzdWJkb21haW4pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGREZXRlY3RvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGREZXRlY3RvcihkZXRlY3Rvcikge1xuICAgICAgdGhpcy5kZXRlY3RvcnNbZGV0ZWN0b3IubmFtZV0gPSBkZXRlY3RvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0ZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGVjdChkZXRlY3Rpb25PcmRlcikge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCFkZXRlY3Rpb25PcmRlcikgZGV0ZWN0aW9uT3JkZXIgPSB0aGlzLm9wdGlvbnMub3JkZXI7XG4gICAgICB2YXIgZGV0ZWN0ZWQgPSBbXTtcbiAgICAgIGRldGVjdGlvbk9yZGVyLmZvckVhY2goZnVuY3Rpb24gKGRldGVjdG9yTmFtZSkge1xuICAgICAgICBpZiAoX3RoaXMuZGV0ZWN0b3JzW2RldGVjdG9yTmFtZV0pIHtcbiAgICAgICAgICB2YXIgbG9va3VwID0gX3RoaXMuZGV0ZWN0b3JzW2RldGVjdG9yTmFtZV0ubG9va3VwKF90aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgICAgaWYgKGxvb2t1cCAmJiB0eXBlb2YgbG9va3VwID09PSAnc3RyaW5nJykgbG9va3VwID0gW2xvb2t1cF07XG4gICAgICAgICAgaWYgKGxvb2t1cCkgZGV0ZWN0ZWQgPSBkZXRlY3RlZC5jb25jYXQobG9va3VwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldEJlc3RNYXRjaEZyb21Db2RlcykgcmV0dXJuIGRldGVjdGVkOyAvLyBuZXcgaTE4bmV4dCB2MTkuNS4wXG5cbiAgICAgIHJldHVybiBkZXRlY3RlZC5sZW5ndGggPiAwID8gZGV0ZWN0ZWRbMF0gOiBudWxsOyAvLyBhIGxpdHRsZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhY2hlVXNlckxhbmd1YWdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhY2hlVXNlckxhbmd1YWdlKGxuZywgY2FjaGVzKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCFjYWNoZXMpIGNhY2hlcyA9IHRoaXMub3B0aW9ucy5jYWNoZXM7XG4gICAgICBpZiAoIWNhY2hlcykgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5leGNsdWRlQ2FjaGVGb3IgJiYgdGhpcy5vcHRpb25zLmV4Y2x1ZGVDYWNoZUZvci5pbmRleE9mKGxuZykgPiAtMSkgcmV0dXJuO1xuICAgICAgY2FjaGVzLmZvckVhY2goZnVuY3Rpb24gKGNhY2hlTmFtZSkge1xuICAgICAgICBpZiAoX3RoaXMyLmRldGVjdG9yc1tjYWNoZU5hbWVdKSBfdGhpczIuZGV0ZWN0b3JzW2NhY2hlTmFtZV0uY2FjaGVVc2VyTGFuZ3VhZ2UobG5nLCBfdGhpczIub3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQnJvd3Nlcjtcbn0oKTtcblxuQnJvd3Nlci50eXBlID0gJ2xhbmd1YWdlRGV0ZWN0b3InO1xuXG5leHBvcnQgeyBCcm93c2VyIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJfY2xhc3NDYWxsQ2hlY2siLCJfY3JlYXRlQ2xhc3MiLCJhcnIiLCJlYWNoIiwiZm9yRWFjaCIsInNsaWNlIiwiZGVmYXVsdHMiLCJvYmoiLCJjYWxsIiwiYXJndW1lbnRzIiwic291cmNlIiwicHJvcCIsInVuZGVmaW5lZCIsImZpZWxkQ29udGVudFJlZ0V4cCIsInNlcmlhbGl6ZUNvb2tpZSIsIm5hbWUiLCJ2YWwiLCJvcHRpb25zIiwib3B0IiwicGF0aCIsInZhbHVlIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic3RyIiwiY29uY2F0IiwibWF4QWdlIiwiTnVtYmVyIiwiaXNOYU4iLCJFcnJvciIsIk1hdGgiLCJmbG9vciIsImRvbWFpbiIsInRlc3QiLCJUeXBlRXJyb3IiLCJleHBpcmVzIiwidG9VVENTdHJpbmciLCJodHRwT25seSIsInNlY3VyZSIsInNhbWVTaXRlIiwidG9Mb3dlckNhc2UiLCJjb29raWUiLCJjcmVhdGUiLCJtaW51dGVzIiwiY29va2llT3B0aW9ucyIsImxlbmd0aCIsIkRhdGUiLCJzZXRUaW1lIiwiZ2V0VGltZSIsImRvY3VtZW50IiwicmVhZCIsIm5hbWVFUSIsImNhIiwic3BsaXQiLCJpIiwiYyIsImNoYXJBdCIsInN1YnN0cmluZyIsImluZGV4T2YiLCJyZW1vdmUiLCJjb29raWUkMSIsImxvb2t1cCIsImZvdW5kIiwibG9va3VwQ29va2llIiwiY2FjaGVVc2VyTGFuZ3VhZ2UiLCJsbmciLCJjb29raWVNaW51dGVzIiwiY29va2llRG9tYWluIiwicXVlcnlzdHJpbmciLCJ3aW5kb3ciLCJzZWFyY2giLCJsb2NhdGlvbiIsImhhc2giLCJxdWVyeSIsInBhcmFtcyIsInBvcyIsImtleSIsImxvb2t1cFF1ZXJ5c3RyaW5nIiwiaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCIsImxvY2FsU3RvcmFnZUF2YWlsYWJsZSIsImxvY2FsU3RvcmFnZSIsInRlc3RLZXkiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsImUiLCJsb29rdXBMb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0Iiwic2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUiLCJzZXNzaW9uU3RvcmFnZSIsImxvb2t1cFNlc3Npb25TdG9yYWdlIiwibmF2aWdhdG9yJDEiLCJuYXZpZ2F0b3IiLCJsYW5ndWFnZXMiLCJwdXNoIiwidXNlckxhbmd1YWdlIiwibGFuZ3VhZ2UiLCJodG1sVGFnIiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwicGF0aG5hbWUiLCJtYXRjaCIsIkFycmF5IiwibG9va3VwRnJvbVBhdGhJbmRleCIsInJlcGxhY2UiLCJzdWJkb21haW4iLCJsb29rdXBGcm9tU3ViZG9tYWluSW5kZXgiLCJob3N0bmFtZSIsImdldERlZmF1bHRzIiwib3JkZXIiLCJjYWNoZXMiLCJleGNsdWRlQ2FjaGVGb3IiLCJCcm93c2VyIiwic2VydmljZXMiLCJ0eXBlIiwiZGV0ZWN0b3JzIiwiaW5pdCIsImkxOG5PcHRpb25zIiwibG9va3VwRnJvbVVybEluZGV4IiwiYWRkRGV0ZWN0b3IiLCJkZXRlY3RvciIsImRldGVjdCIsImRldGVjdGlvbk9yZGVyIiwiX3RoaXMiLCJkZXRlY3RlZCIsImRldGVjdG9yTmFtZSIsImxhbmd1YWdlVXRpbHMiLCJnZXRCZXN0TWF0Y2hGcm9tQ29kZXMiLCJfdGhpczIiLCJjYWNoZU5hbWUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js\n");
19
-
20
- /***/ }),
21
-
22
- /***/ "../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/classCallCheck.js":
23
- /*!************************************************************************************************************************!*\
24
- !*** ../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/classCallCheck.js ***!
25
- \************************************************************************************************************************/
26
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
27
-
28
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _classCallCheck)\n/* harmony export */ });\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!_instanceof(instance, Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXLEVBQUU7SUFDN0QsSUFBSSxDQUFFRCxZQUFBQSxVQUFvQkMsY0FBYztRQUN0QyxNQUFNLElBQUlDLFVBQVUscUNBQXFDO0lBQzNELENBQUM7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3Ivbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzPzY5ZjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn0iXSwibmFtZXMiOlsiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\n");
29
-
30
- /***/ }),
31
-
32
- /***/ "../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/createClass.js":
33
- /*!*********************************************************************************************************************!*\
34
- !*** ../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/createClass.js ***!
35
- \*********************************************************************************************************************/
36
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
37
-
38
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _createClass)\n/* harmony export */ });\n/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\");\n\nfunction _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, (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQztBQUMvQyxTQUFTQyxrQkFBa0JDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0lBQ3hDLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRCxNQUFNRSxNQUFNLEVBQUVELElBQUs7UUFDckMsSUFBSUUsYUFBYUgsS0FBSyxDQUFDQyxFQUFFO1FBQ3pCRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSSxLQUFLO1FBQ3RERCxXQUFXRSxZQUFZLEdBQUcsSUFBSTtRQUM5QixJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRyxJQUFJO1FBQ3JEQyxPQUFPQyxjQUFjLENBQUNULFFBQVFGLDZEQUFhQSxDQUFDTSxXQUFXTSxHQUFHLEdBQUdOO0lBQy9EO0FBQ0Y7QUFDZSxTQUFTTyxhQUFhQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFO0lBQ3pFLElBQUlELFlBQVlkLGtCQUFrQmEsWUFBWUcsU0FBUyxFQUFFRjtJQUN6RCxJQUFJQyxhQUFhZixrQkFBa0JhLGFBQWFFO0lBQ2hETixPQUFPQyxjQUFjLENBQUNHLGFBQWEsYUFBYTtRQUM5Q0wsVUFBVSxLQUFLO0lBQ2pCO0lBQ0EsT0FBT0s7QUFDVCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3Ivbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzPzA4MmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufSJdLCJuYW1lcyI6WyJ0b1Byb3BlcnR5S2V5IiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJsZW5ndGgiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsInByb3RvdHlwZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/createClass.js\n");
39
-
40
- /***/ }),
41
-
42
- /***/ "../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPrimitive.js":
43
- /*!*********************************************************************************************************************!*\
44
- !*** ../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***!
45
- \*********************************************************************************************************************/
46
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
47
-
48
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _toPrimitive)\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js\");\n\nfunction _toPrimitive(input, hint) {\n if ((0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if ((0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQztBQUNuQixTQUFTQyxhQUFhQyxLQUFLLEVBQUVDLElBQUksRUFBRTtJQUNoRCxJQUFJSCxzREFBT0EsQ0FBQ0UsV0FBVyxZQUFZQSxVQUFVLElBQUksRUFBRSxPQUFPQTtJQUMxRCxJQUFJRSxPQUFPRixLQUFLLENBQUNHLE9BQU9DLFdBQVcsQ0FBQztJQUNwQyxJQUFJRixTQUFTRyxXQUFXO1FBQ3RCLElBQUlDLE1BQU1KLEtBQUtLLElBQUksQ0FBQ1AsT0FBT0MsUUFBUTtRQUNuQyxJQUFJSCxzREFBT0EsQ0FBQ1EsU0FBUyxVQUFVLE9BQU9BO1FBQ3RDLE1BQU0sSUFBSUUsVUFBVSxnREFBZ0Q7SUFDdEUsQ0FBQztJQUNELE9BQU8sQ0FBQ1AsU0FBUyxXQUFXUSxTQUFTQyxNQUFNLEVBQUVWO0FBQy9DLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3Rvci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanM/MDFiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkge1xuICBpZiAoX3R5cGVvZihpbnB1dCkgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDtcbiAgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKF90eXBlb2YocmVzKSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlcztcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7XG59Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJfdG9QcmltaXRpdmUiLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n");
49
-
50
- /***/ }),
51
-
52
- /***/ "../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js":
53
- /*!***********************************************************************************************************************!*\
54
- !*** ../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***!
55
- \***********************************************************************************************************************/
56
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
57
-
58
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _toPropertyKey)\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js\");\n/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ \"../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPrimitive.js\");\n\n\nfunction _toPropertyKey(arg) {\n var key = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arg, \"string\");\n return (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key) === \"symbol\" ? key : String(key);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrQztBQUNTO0FBQzVCLFNBQVNFLGVBQWVDLEdBQUcsRUFBRTtJQUMxQyxJQUFJQyxNQUFNSCwyREFBV0EsQ0FBQ0UsS0FBSztJQUMzQixPQUFPSCxzREFBT0EsQ0FBQ0ksU0FBUyxXQUFXQSxNQUFNQyxPQUFPRCxJQUFJO0FBQ3RELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3Rvci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcz84ZjlmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7XG4gIHJldHVybiBfdHlwZW9mKGtleSkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwiX3RvUHJvcGVydHlLZXkiLCJhcmciLCJrZXkiLCJTdHJpbmciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n");
59
-
60
- /***/ }),
61
-
62
- /***/ "../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js":
63
- /*!****************************************************************************************************************!*\
64
- !*** ../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js ***!
65
- \****************************************************************************************************************/
66
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
67
-
68
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _typeof)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlLFNBQVNBLFFBQVFDLENBQUMsRUFBRTtJQUNqQztJQUVBLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQTlFSCxRQUF3RkMsQ0FBQyxFQUFFO1FBQ2hHLE9BQU8sT0FBT0E7SUFDaEIsSUFBSSxTQUFVQSxDQUFDLEVBQUU7UUFDZixPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSixDQUFDO0lBQ3JILENBQUMsRUFBRUQsUUFBUUMsRUFBRTtBQUNmLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3Rvci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzPzA3ZmIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js\n");
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Browser)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../../node_modules/@babel/runtime/helpers/esm/createClass.js\");\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\n\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function(source) {\n if (source) {\n for(var prop in source){\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || \"/\";\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error(\"maxAge should be a Number\");\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError(\"option domain is invalid\");\n }\n str += \"; Domain=\".concat(opt.domain);\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError(\"option path is invalid\");\n }\n str += \"; Path=\".concat(opt.path);\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== \"function\") {\n throw new TypeError(\"option expires is invalid\");\n }\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n if (opt.httpOnly) str += \"; HttpOnly\";\n if (opt.secure) str += \"; Secure\";\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === \"string\" ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch(sameSite){\n case true:\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(\"option sameSite is invalid\");\n }\n }\n return str;\n};\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: \"/\",\n sameSite: \"strict\"\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(\";\");\n for(var i = 0; i < ca.length; i++){\n var c = ca[i];\n while(c.charAt(0) === \" \"){\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove: function remove(name) {\n this.create(name, \"\", -1);\n }\n};\nvar cookie$1 = {\n name: \"cookie\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupCookie && typeof document !== \"undefined\") {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== \"undefined\") {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\nvar querystring = {\n name: \"querystring\",\n lookup: function lookup(options) {\n var found;\n if (typeof window !== \"undefined\") {\n var search = window.location.search;\n if (!window.location.search && window.location.hash && window.location.hash.indexOf(\"?\") > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf(\"?\"));\n }\n var query = search.substring(1);\n var params = query.split(\"&\");\n for(var i = 0; i < params.length; i++){\n var pos = params[i].indexOf(\"=\");\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\nvar hasLocalStorageSupport = null;\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = window !== \"undefined\" && window.localStorage !== null;\n var testKey = \"i18next.translate.boo\";\n window.localStorage.setItem(testKey, \"foo\");\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: \"localStorage\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\nvar hasSessionStorageSupport = null;\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = window !== \"undefined\" && window.sessionStorage !== null;\n var testKey = \"i18next.translate.boo\";\n window.sessionStorage.setItem(testKey, \"foo\");\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: \"sessionStorage\",\n lookup: function lookup(options) {\n var found;\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\nvar navigator$1 = {\n name: \"navigator\",\n lookup: function lookup(options) {\n var found = [];\n if (typeof navigator !== \"undefined\") {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for(var i = 0; i < navigator.languages.length; i++){\n found.push(navigator.languages[i]);\n }\n }\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\nvar htmlTag = {\n name: \"htmlTag\",\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== \"undefined\" ? document.documentElement : null);\n if (htmlTag && typeof htmlTag.getAttribute === \"function\") {\n found = htmlTag.getAttribute(\"lang\");\n }\n return found;\n }\n};\nvar path = {\n name: \"path\",\n lookup: function lookup(options) {\n var found;\n if (typeof window !== \"undefined\") {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (_instanceof(language, Array)) {\n if (typeof options.lookupFromPathIndex === \"number\") {\n if (typeof language[options.lookupFromPathIndex] !== \"string\") {\n return undefined;\n }\n found = language[options.lookupFromPathIndex].replace(\"/\", \"\");\n } else {\n found = language[0].replace(\"/\", \"\");\n }\n }\n }\n return found;\n }\n};\nvar subdomain = {\n name: \"subdomain\",\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === \"number\" ? options.lookupFromSubdomainIndex + 1 : 1; // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n var language = typeof window !== \"undefined\" && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i); // if there is no match (null) return undefined\n if (!language) return undefined; // return the given group match\n return language[lookupFromSubdomainIndex];\n }\n};\nfunction getDefaults() {\n return {\n order: [\n \"querystring\",\n \"cookie\",\n \"localStorage\",\n \"sessionStorage\",\n \"navigator\",\n \"htmlTag\"\n ],\n lookupQuerystring: \"lng\",\n lookupCookie: \"i18next\",\n lookupLocalStorage: \"i18nextLng\",\n lookupSessionStorage: \"i18nextLng\",\n // cache user language\n caches: [\n \"localStorage\"\n ],\n excludeCacheFor: [\n \"cimode\"\n ] // cookieMinutes: 10,\n };\n}\nvar Browser = /*#__PURE__*/ function() {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Browser);\n this.type = \"languageDetector\";\n this.detectors = {};\n this.init(services, options);\n }\n (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Browser, [\n {\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n },\n {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n },\n {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function(detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n if (lookup && typeof lookup === \"string\") lookup = [\n lookup\n ];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n },\n {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function(cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }\n ]);\n return Browser;\n}();\nBrowser.type = \"languageDetector\";\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL2Rpc3QvZXNtL2kxOG5leHRCcm93c2VyTGFuZ3VhZ2VEZXRlY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQXdFO0FBQ047QUFFbEUsSUFBSUUsTUFBTSxFQUFFO0FBQ1osSUFBSUMsT0FBT0QsSUFBSUUsT0FBTztBQUN0QixJQUFJQyxRQUFRSCxJQUFJRyxLQUFLO0FBQ3JCLFNBQVNDLFNBQVNDLEdBQUcsRUFBRTtJQUNyQkosS0FBS0ssSUFBSSxDQUFDSCxNQUFNRyxJQUFJLENBQUNDLFdBQVcsSUFBSSxTQUFVQyxNQUFNLEVBQUU7UUFDcEQsSUFBSUEsUUFBUTtZQUNWLElBQUssSUFBSUMsUUFBUUQsT0FBUTtnQkFDdkIsSUFBSUgsR0FBRyxDQUFDSSxLQUFLLEtBQUtDLFdBQVdMLEdBQUcsQ0FBQ0ksS0FBSyxHQUFHRCxNQUFNLENBQUNDLEtBQUs7WUFDdkQ7UUFDRixDQUFDO0lBQ0g7SUFDQSxPQUFPSjtBQUNUO0FBRUEsNENBQTRDO0FBQzVDLElBQUlNLHFCQUFxQjtBQUV6QixJQUFJQyxrQkFBa0IsU0FBU0EsZ0JBQWdCQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFO0lBQ2pFLElBQUlDLE1BQU1ELFdBQVcsQ0FBQztJQUN0QkMsSUFBSUMsSUFBSSxHQUFHRCxJQUFJQyxJQUFJLElBQUk7SUFDdkIsSUFBSUMsUUFBUUMsbUJBQW1CTDtJQUMvQixJQUFJTSxNQUFNLEdBQUdDLE1BQU0sQ0FBQ1IsTUFBTSxLQUFLUSxNQUFNLENBQUNIO0lBRXRDLElBQUlGLElBQUlNLE1BQU0sR0FBRyxHQUFHO1FBQ2xCLElBQUlBLFNBQVNOLElBQUlNLE1BQU0sR0FBRztRQUMxQixJQUFJQyxPQUFPQyxLQUFLLENBQUNGLFNBQVMsTUFBTSxJQUFJRyxNQUFNLDZCQUE2QjtRQUN2RUwsT0FBTyxhQUFhQyxNQUFNLENBQUNLLEtBQUtDLEtBQUss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QUUsT0FBT0gsVUFBVSxzQkFBc0I7Z0JBRTlGLE9BQU9BLFNBQVMvRSxNQUFNLEdBQUcsSUFBSStFLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLGtDQUFrQztZQUNyRjtRQUNGO1FBQUc7WUFDRGhELEtBQUs7WUFDTHRELE9BQU8sU0FBUzBDLGtCQUFrQkMsR0FBRyxFQUFFNkMsTUFBTSxFQUFFO2dCQUM3QyxJQUFJa0IsU0FBUyxJQUFJO2dCQUVqQixJQUFJLENBQUNsQixRQUFRQSxTQUFTLElBQUksQ0FBQzNGLE9BQU8sQ0FBQzJGLE1BQU07Z0JBQ3pDLElBQUksQ0FBQ0EsUUFBUTtnQkFDYixJQUFJLElBQUksQ0FBQzNGLE9BQU8sQ0FBQzRGLGVBQWUsSUFBSSxJQUFJLENBQUM1RixPQUFPLENBQUM0RixlQUFlLENBQUNyRCxPQUFPLENBQUNPLE9BQU8sQ0FBQyxHQUFHO2dCQUNwRjZDLE9BQU94RyxPQUFPLENBQUMsU0FBVTJILFNBQVMsRUFBRTtvQkFDbEMsSUFBSUQsT0FBT2IsU0FBUyxDQUFDYyxVQUFVLEVBQUVELE9BQU9iLFNBQVMsQ0FBQ2MsVUFBVSxDQUFDakUsaUJBQWlCLENBQUNDLEtBQUsrRCxPQUFPN0csT0FBTztnQkFDcEc7WUFDRjtRQUNGO0tBQUU7SUFFRixPQUFPNkY7QUFDVDtBQUVBQSxRQUFRRSxJQUFJLEdBQUc7QUFFZSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yL2Rpc3QvZXNtL2kxOG5leHRCcm93c2VyTGFuZ3VhZ2VEZXRlY3Rvci5qcz9mNjcxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcyc7XG5cbnZhciBhcnIgPSBbXTtcbnZhciBlYWNoID0gYXJyLmZvckVhY2g7XG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5mdW5jdGlvbiBkZWZhdWx0cyhvYmopIHtcbiAgZWFjaC5jYWxsKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChvYmpbcHJvcF0gPT09IHVuZGVmaW5lZCkgb2JqW3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvYmo7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG52YXIgZmllbGRDb250ZW50UmVnRXhwID0gL15bXFx1MDAwOVxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC87XG5cbnZhciBzZXJpYWxpemVDb29raWUgPSBmdW5jdGlvbiBzZXJpYWxpemVDb29raWUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuICBvcHQucGF0aCA9IG9wdC5wYXRoIHx8ICcvJztcbiAgdmFyIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCk7XG4gIHZhciBzdHIgPSBcIlwiLmNvbmNhdChuYW1lLCBcIj1cIikuY29uY2F0KHZhbHVlKTtcblxuICBpZiAob3B0Lm1heEFnZSA+IDApIHtcbiAgICB2YXIgbWF4QWdlID0gb3B0Lm1heEFnZSAtIDA7XG4gICAgaWYgKE51bWJlci5pc05hTihtYXhBZ2UpKSB0aHJvdyBuZXcgRXJyb3IoJ21heEFnZSBzaG91bGQgYmUgYSBOdW1iZXInKTtcbiAgICBzdHIgKz0gXCI7IE1heC1BZ2U9XCIuY29uY2F0KE1hdGguZmxvb3IobWF4QWdlKSk7XG4gIH1cblxuICBpZiAob3B0LmRvbWFpbikge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LmRvbWFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBkb21haW4gaXMgaW52YWxpZCcpO1xuICAgIH1cblxuICAgIHN0ciArPSBcIjsgRG9tYWluPVwiLmNvbmNhdChvcHQuZG9tYWluKTtcbiAgfVxuXG4gIGlmIChvcHQucGF0aCkge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LnBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gcGF0aCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9IFwiOyBQYXRoPVwiLmNvbmNhdChvcHQucGF0aCk7XG4gIH1cblxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAodHlwZW9mIG9wdC5leHBpcmVzLnRvVVRDU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9IFwiOyBFeHBpcmVzPVwiLmNvbmNhdChvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpKTtcbiAgfVxuXG4gIGlmIChvcHQuaHR0cE9ubHkpIHN0ciArPSAnOyBIdHRwT25seSc7XG4gIGlmIChvcHQuc2VjdXJlKSBzdHIgKz0gJzsgU2VjdXJlJztcblxuICBpZiAob3B0LnNhbWVTaXRlKSB7XG4gICAgdmFyIHNhbWVTaXRlID0gdHlwZW9mIG9wdC5zYW1lU2l0ZSA9PT0gJ3N0cmluZycgPyBvcHQuc2FtZVNpdGUudG9Mb3dlckNhc2UoKSA6IG9wdC5zYW1lU2l0ZTtcblxuICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgc3RyICs9ICc7IFNhbWVTaXRlPVN0cmljdCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsYXgnOlxuICAgICAgICBzdHIgKz0gJzsgU2FtZVNpdGU9TGF4JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmljdCc6XG4gICAgICAgIHN0ciArPSAnOyBTYW1lU2l0ZT1TdHJpY3QnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgIHN0ciArPSAnOyBTYW1lU2l0ZT1Ob25lJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBzYW1lU2l0ZSBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn07XG5cbnZhciBjb29raWUgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlKG5hbWUsIHZhbHVlLCBtaW51dGVzLCBkb21haW4pIHtcbiAgICB2YXIgY29va2llT3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDoge1xuICAgICAgcGF0aDogJy8nLFxuICAgICAgc2FtZVNpdGU6ICdzdHJpY3QnXG4gICAgfTtcblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBjb29raWVPcHRpb25zLmV4cGlyZXMgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29va2llT3B0aW9ucy5leHBpcmVzLnNldFRpbWUoY29va2llT3B0aW9ucy5leHBpcmVzLmdldFRpbWUoKSArIG1pbnV0ZXMgKiA2MCAqIDEwMDApO1xuICAgIH1cblxuICAgIGlmIChkb21haW4pIGNvb2tpZU9wdGlvbnMuZG9tYWluID0gZG9tYWluO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlcmlhbGl6ZUNvb2tpZShuYW1lLCBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLCBjb29raWVPcHRpb25zKTtcbiAgfSxcbiAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgdmFyIG5hbWVFUSA9IFwiXCIuY29uY2F0KG5hbWUsIFwiPVwiKTtcbiAgICB2YXIgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2FbaV07XG5cbiAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PT0gJyAnKSB7XG4gICAgICAgIGMgPSBjLnN1YnN0cmluZygxLCBjLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgIHRoaXMuY3JlYXRlKG5hbWUsICcnLCAtMSk7XG4gIH1cbn07XG52YXIgY29va2llJDEgPSB7XG4gIG5hbWU6ICdjb29raWUnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKG9wdGlvbnMubG9va3VwQ29va2llICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBjID0gY29va2llLnJlYWQob3B0aW9ucy5sb29rdXBDb29raWUpO1xuICAgICAgaWYgKGMpIGZvdW5kID0gYztcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH0sXG4gIGNhY2hlVXNlckxhbmd1YWdlOiBmdW5jdGlvbiBjYWNoZVVzZXJMYW5ndWFnZShsbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sb29rdXBDb29raWUgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29va2llLmNyZWF0ZShvcHRpb25zLmxvb2t1cENvb2tpZSwgbG5nLCBvcHRpb25zLmNvb2tpZU1pbnV0ZXMsIG9wdGlvbnMuY29va2llRG9tYWluLCBvcHRpb25zLmNvb2tpZU9wdGlvbnMpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHF1ZXJ5c3RyaW5nID0ge1xuICBuYW1lOiAncXVlcnlzdHJpbmcnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc2VhcmNoID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcblxuICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uc2VhcmNoICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoLmluZGV4T2YoJz8nKSA+IC0xKSB7XG4gICAgICAgIHNlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZyh3aW5kb3cubG9jYXRpb24uaGFzaC5pbmRleE9mKCc/JykpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVlcnkgPSBzZWFyY2guc3Vic3RyaW5nKDEpO1xuICAgICAgdmFyIHBhcmFtcyA9IHF1ZXJ5LnNwbGl0KCcmJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb3MgPSBwYXJhbXNbaV0uaW5kZXhPZignPScpO1xuXG4gICAgICAgIGlmIChwb3MgPiAwKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHBhcmFtc1tpXS5zdWJzdHJpbmcoMCwgcG9zKTtcblxuICAgICAgICAgIGlmIChrZXkgPT09IG9wdGlvbnMubG9va3VwUXVlcnlzdHJpbmcpIHtcbiAgICAgICAgICAgIGZvdW5kID0gcGFyYW1zW2ldLnN1YnN0cmluZyhwb3MgKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn07XG5cbnZhciBoYXNMb2NhbFN0b3JhZ2VTdXBwb3J0ID0gbnVsbDtcblxudmFyIGxvY2FsU3RvcmFnZUF2YWlsYWJsZSA9IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZUF2YWlsYWJsZSgpIHtcbiAgaWYgKGhhc0xvY2FsU3RvcmFnZVN1cHBvcnQgIT09IG51bGwpIHJldHVybiBoYXNMb2NhbFN0b3JhZ2VTdXBwb3J0O1xuXG4gIHRyeSB7XG4gICAgaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCA9IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSAhPT0gbnVsbDtcbiAgICB2YXIgdGVzdEtleSA9ICdpMThuZXh0LnRyYW5zbGF0ZS5ib28nO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0ZXN0S2V5LCAnZm9vJyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRlc3RLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGhhc0xvY2FsU3RvcmFnZVN1cHBvcnQ7XG59O1xuXG52YXIgbG9jYWxTdG9yYWdlID0ge1xuICBuYW1lOiAnbG9jYWxTdG9yYWdlJyxcbiAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAob3B0aW9ucykge1xuICAgIHZhciBmb3VuZDtcblxuICAgIGlmIChvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgdmFyIGxuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSk7XG4gICAgICBpZiAobG5nKSBmb3VuZCA9IGxuZztcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH0sXG4gIGNhY2hlVXNlckxhbmd1YWdlOiBmdW5jdGlvbiBjYWNoZVVzZXJMYW5ndWFnZShsbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sb29rdXBMb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShvcHRpb25zLmxvb2t1cExvY2FsU3RvcmFnZSwgbG5nKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBoYXNTZXNzaW9uU3RvcmFnZVN1cHBvcnQgPSBudWxsO1xuXG52YXIgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUgPSBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZUF2YWlsYWJsZSgpIHtcbiAgaWYgKGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydCAhPT0gbnVsbCkgcmV0dXJuIGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydDtcblxuICB0cnkge1xuICAgIGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydCA9IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnNlc3Npb25TdG9yYWdlICE9PSBudWxsO1xuICAgIHZhciB0ZXN0S2V5ID0gJ2kxOG5leHQudHJhbnNsYXRlLmJvbyc7XG4gICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGVzdEtleSwgJ2ZvbycpO1xuICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRlc3RLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0ID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0O1xufTtcblxudmFyIHNlc3Npb25TdG9yYWdlID0ge1xuICBuYW1lOiAnc2Vzc2lvblN0b3JhZ2UnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UgJiYgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgdmFyIGxuZyA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UpO1xuICAgICAgaWYgKGxuZykgZm91bmQgPSBsbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9LFxuICBjYWNoZVVzZXJMYW5ndWFnZTogZnVuY3Rpb24gY2FjaGVVc2VyTGFuZ3VhZ2UobG5nLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMubG9va3VwU2Vzc2lvblN0b3JhZ2UgJiYgc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0ob3B0aW9ucy5sb29rdXBTZXNzaW9uU3RvcmFnZSwgbG5nKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBuYXZpZ2F0b3IkMSA9IHtcbiAgbmFtZTogJ25hdmlnYXRvcicsXG4gIGxvb2t1cDogZnVuY3Rpb24gbG9va3VwKG9wdGlvbnMpIHtcbiAgICB2YXIgZm91bmQgPSBbXTtcblxuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKG5hdmlnYXRvci5sYW5ndWFnZXMpIHtcbiAgICAgICAgLy8gY2hyb21lIG9ubHk7IG5vdCBhbiBhcnJheSwgc28gY2FuJ3QgdXNlIC5wdXNoLmFwcGx5IGluc3RlYWQgb2YgaXRlcmF0aW5nXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmF2aWdhdG9yLmxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGZvdW5kLnB1c2gobmF2aWdhdG9yLmxhbmd1YWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5hdmlnYXRvci51c2VyTGFuZ3VhZ2UpIHtcbiAgICAgICAgZm91bmQucHVzaChuYXZpZ2F0b3IudXNlckxhbmd1YWdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hdmlnYXRvci5sYW5ndWFnZSkge1xuICAgICAgICBmb3VuZC5wdXNoKG5hdmlnYXRvci5sYW5ndWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA+IDAgPyBmb3VuZCA6IHVuZGVmaW5lZDtcbiAgfVxufTtcblxudmFyIGh0bWxUYWcgPSB7XG4gIG5hbWU6ICdodG1sVGFnJyxcbiAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAob3B0aW9ucykge1xuICAgIHZhciBmb3VuZDtcbiAgICB2YXIgaHRtbFRhZyA9IG9wdGlvbnMuaHRtbFRhZyB8fCAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA6IG51bGwpO1xuXG4gICAgaWYgKGh0bWxUYWcgJiYgdHlwZW9mIGh0bWxUYWcuZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmb3VuZCA9IGh0bWxUYWcuZ2V0QXR0cmlidXRlKCdsYW5nJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG59O1xuXG52YXIgcGF0aCA9IHtcbiAgbmFtZTogJ3BhdGgnLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgdmFyIGZvdW5kO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL1xcLyhbYS16QS1aLV0qKS9nKTtcblxuICAgICAgaWYgKGxhbmd1YWdlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmxvb2t1cEZyb21QYXRoSW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsYW5ndWFnZVtvcHRpb25zLmxvb2t1cEZyb21QYXRoSW5kZXhdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3VuZCA9IGxhbmd1YWdlW29wdGlvbnMubG9va3VwRnJvbVBhdGhJbmRleF0ucmVwbGFjZSgnLycsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3VuZCA9IGxhbmd1YWdlWzBdLnJlcGxhY2UoJy8nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn07XG5cbnZhciBzdWJkb21haW4gPSB7XG4gIG5hbWU6ICdzdWJkb21haW4nLFxuICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChvcHRpb25zKSB7XG4gICAgLy8gSWYgZ2l2ZW4gZ2V0IHRoZSBzdWJkb21haW4gaW5kZXggZWxzZSAxXG4gICAgdmFyIGxvb2t1cEZyb21TdWJkb21haW5JbmRleCA9IHR5cGVvZiBvcHRpb25zLmxvb2t1cEZyb21TdWJkb21haW5JbmRleCA9PT0gJ251bWJlcicgPyBvcHRpb25zLmxvb2t1cEZyb21TdWJkb21haW5JbmRleCArIDEgOiAxOyAvLyBnZXQgYWxsIG1hdGNoZXMgaWYgd2luZG93LmxvY2F0aW9uLiBpcyBleGlzdGluZ1xuICAgIC8vIGZpcnN0IGl0ZW0gb2YgbWF0Y2ggaXMgdGhlIG1hdGNoIGl0c2VsZiBhbmQgdGhlIHNlY29uZCBpcyB0aGUgZmlyc3QgZ3JvdXAgbWFjaHQgd2hpY2ggc291bGQgYmUgdGhlIGZpcnN0IHN1YmRvbWFpbiBtYXRjaFxuICAgIC8vIGlzIHRoZSBob3N0bmFtZSBubyBwdWJsaWMgZG9tYWluIGdldCB0aGUgb3Igb3B0aW9uIG9mIGxvY2FsaG9zdFxuXG4gICAgdmFyIGxhbmd1YWdlID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSAmJiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUubWF0Y2goL14oXFx3ezIsNX0pXFwuKChbYS16MC05LV17MSw2M31cXC5bYS16XXsyLDZ9KXxsb2NhbGhvc3QpL2kpOyAvLyBpZiB0aGVyZSBpcyBubyBtYXRjaCAobnVsbCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgaWYgKCFsYW5ndWFnZSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gcmV0dXJuIHRoZSBnaXZlbiBncm91cCBtYXRjaFxuXG4gICAgcmV0dXJuIGxhbmd1YWdlW2xvb2t1cEZyb21TdWJkb21haW5JbmRleF07XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRzKCkge1xuICByZXR1cm4ge1xuICAgIG9yZGVyOiBbJ3F1ZXJ5c3RyaW5nJywgJ2Nvb2tpZScsICdsb2NhbFN0b3JhZ2UnLCAnc2Vzc2lvblN0b3JhZ2UnLCAnbmF2aWdhdG9yJywgJ2h0bWxUYWcnXSxcbiAgICBsb29rdXBRdWVyeXN0cmluZzogJ2xuZycsXG4gICAgbG9va3VwQ29va2llOiAnaTE4bmV4dCcsXG4gICAgbG9va3VwTG9jYWxTdG9yYWdlOiAnaTE4bmV4dExuZycsXG4gICAgbG9va3VwU2Vzc2lvblN0b3JhZ2U6ICdpMThuZXh0TG5nJyxcbiAgICAvLyBjYWNoZSB1c2VyIGxhbmd1YWdlXG4gICAgY2FjaGVzOiBbJ2xvY2FsU3RvcmFnZSddLFxuICAgIGV4Y2x1ZGVDYWNoZUZvcjogWydjaW1vZGUnXSAvLyBjb29raWVNaW51dGVzOiAxMCxcbiAgICAvLyBjb29raWVEb21haW46ICdteURvbWFpbidcblxuICB9O1xufVxuXG52YXIgQnJvd3NlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJyb3dzZXIoc2VydmljZXMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnJvd3Nlcik7XG5cbiAgICB0aGlzLnR5cGUgPSAnbGFuZ3VhZ2VEZXRlY3Rvcic7XG4gICAgdGhpcy5kZXRlY3RvcnMgPSB7fTtcbiAgICB0aGlzLmluaXQoc2VydmljZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEJyb3dzZXIsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdChzZXJ2aWNlcykge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgdmFyIGkxOG5PcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgIHRoaXMuc2VydmljZXMgPSBzZXJ2aWNlcztcbiAgICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzKG9wdGlvbnMsIHRoaXMub3B0aW9ucyB8fCB7fSwgZ2V0RGVmYXVsdHMoKSk7IC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubG9va3VwRnJvbVVybEluZGV4KSB0aGlzLm9wdGlvbnMubG9va3VwRnJvbVBhdGhJbmRleCA9IHRoaXMub3B0aW9ucy5sb29rdXBGcm9tVXJsSW5kZXg7XG4gICAgICB0aGlzLmkxOG5PcHRpb25zID0gaTE4bk9wdGlvbnM7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKGNvb2tpZSQxKTtcbiAgICAgIHRoaXMuYWRkRGV0ZWN0b3IocXVlcnlzdHJpbmcpO1xuICAgICAgdGhpcy5hZGREZXRlY3Rvcihsb2NhbFN0b3JhZ2UpO1xuICAgICAgdGhpcy5hZGREZXRlY3RvcihzZXNzaW9uU3RvcmFnZSk7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKG5hdmlnYXRvciQxKTtcbiAgICAgIHRoaXMuYWRkRGV0ZWN0b3IoaHRtbFRhZyk7XG4gICAgICB0aGlzLmFkZERldGVjdG9yKHBhdGgpO1xuICAgICAgdGhpcy5hZGREZXRlY3RvcihzdWJkb21haW4pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGREZXRlY3RvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGREZXRlY3RvcihkZXRlY3Rvcikge1xuICAgICAgdGhpcy5kZXRlY3RvcnNbZGV0ZWN0b3IubmFtZV0gPSBkZXRlY3RvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0ZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGVjdChkZXRlY3Rpb25PcmRlcikge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCFkZXRlY3Rpb25PcmRlcikgZGV0ZWN0aW9uT3JkZXIgPSB0aGlzLm9wdGlvbnMub3JkZXI7XG4gICAgICB2YXIgZGV0ZWN0ZWQgPSBbXTtcbiAgICAgIGRldGVjdGlvbk9yZGVyLmZvckVhY2goZnVuY3Rpb24gKGRldGVjdG9yTmFtZSkge1xuICAgICAgICBpZiAoX3RoaXMuZGV0ZWN0b3JzW2RldGVjdG9yTmFtZV0pIHtcbiAgICAgICAgICB2YXIgbG9va3VwID0gX3RoaXMuZGV0ZWN0b3JzW2RldGVjdG9yTmFtZV0ubG9va3VwKF90aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgICAgaWYgKGxvb2t1cCAmJiB0eXBlb2YgbG9va3VwID09PSAnc3RyaW5nJykgbG9va3VwID0gW2xvb2t1cF07XG4gICAgICAgICAgaWYgKGxvb2t1cCkgZGV0ZWN0ZWQgPSBkZXRlY3RlZC5jb25jYXQobG9va3VwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldEJlc3RNYXRjaEZyb21Db2RlcykgcmV0dXJuIGRldGVjdGVkOyAvLyBuZXcgaTE4bmV4dCB2MTkuNS4wXG5cbiAgICAgIHJldHVybiBkZXRlY3RlZC5sZW5ndGggPiAwID8gZGV0ZWN0ZWRbMF0gOiBudWxsOyAvLyBhIGxpdHRsZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhY2hlVXNlckxhbmd1YWdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhY2hlVXNlckxhbmd1YWdlKGxuZywgY2FjaGVzKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCFjYWNoZXMpIGNhY2hlcyA9IHRoaXMub3B0aW9ucy5jYWNoZXM7XG4gICAgICBpZiAoIWNhY2hlcykgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5leGNsdWRlQ2FjaGVGb3IgJiYgdGhpcy5vcHRpb25zLmV4Y2x1ZGVDYWNoZUZvci5pbmRleE9mKGxuZykgPiAtMSkgcmV0dXJuO1xuICAgICAgY2FjaGVzLmZvckVhY2goZnVuY3Rpb24gKGNhY2hlTmFtZSkge1xuICAgICAgICBpZiAoX3RoaXMyLmRldGVjdG9yc1tjYWNoZU5hbWVdKSBfdGhpczIuZGV0ZWN0b3JzW2NhY2hlTmFtZV0uY2FjaGVVc2VyTGFuZ3VhZ2UobG5nLCBfdGhpczIub3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQnJvd3Nlcjtcbn0oKTtcblxuQnJvd3Nlci50eXBlID0gJ2xhbmd1YWdlRGV0ZWN0b3InO1xuXG5leHBvcnQgeyBCcm93c2VyIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJfY2xhc3NDYWxsQ2hlY2siLCJfY3JlYXRlQ2xhc3MiLCJhcnIiLCJlYWNoIiwiZm9yRWFjaCIsInNsaWNlIiwiZGVmYXVsdHMiLCJvYmoiLCJjYWxsIiwiYXJndW1lbnRzIiwic291cmNlIiwicHJvcCIsInVuZGVmaW5lZCIsImZpZWxkQ29udGVudFJlZ0V4cCIsInNlcmlhbGl6ZUNvb2tpZSIsIm5hbWUiLCJ2YWwiLCJvcHRpb25zIiwib3B0IiwicGF0aCIsInZhbHVlIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic3RyIiwiY29uY2F0IiwibWF4QWdlIiwiTnVtYmVyIiwiaXNOYU4iLCJFcnJvciIsIk1hdGgiLCJmbG9vciIsImRvbWFpbiIsInRlc3QiLCJUeXBlRXJyb3IiLCJleHBpcmVzIiwidG9VVENTdHJpbmciLCJodHRwT25seSIsInNlY3VyZSIsInNhbWVTaXRlIiwidG9Mb3dlckNhc2UiLCJjb29raWUiLCJjcmVhdGUiLCJtaW51dGVzIiwiY29va2llT3B0aW9ucyIsImxlbmd0aCIsIkRhdGUiLCJzZXRUaW1lIiwiZ2V0VGltZSIsImRvY3VtZW50IiwicmVhZCIsIm5hbWVFUSIsImNhIiwic3BsaXQiLCJpIiwiYyIsImNoYXJBdCIsInN1YnN0cmluZyIsImluZGV4T2YiLCJyZW1vdmUiLCJjb29raWUkMSIsImxvb2t1cCIsImZvdW5kIiwibG9va3VwQ29va2llIiwiY2FjaGVVc2VyTGFuZ3VhZ2UiLCJsbmciLCJjb29raWVNaW51dGVzIiwiY29va2llRG9tYWluIiwicXVlcnlzdHJpbmciLCJ3aW5kb3ciLCJzZWFyY2giLCJsb2NhdGlvbiIsImhhc2giLCJxdWVyeSIsInBhcmFtcyIsInBvcyIsImtleSIsImxvb2t1cFF1ZXJ5c3RyaW5nIiwiaGFzTG9jYWxTdG9yYWdlU3VwcG9ydCIsImxvY2FsU3RvcmFnZUF2YWlsYWJsZSIsImxvY2FsU3RvcmFnZSIsInRlc3RLZXkiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsImUiLCJsb29rdXBMb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0Iiwic2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUiLCJzZXNzaW9uU3RvcmFnZSIsImxvb2t1cFNlc3Npb25TdG9yYWdlIiwibmF2aWdhdG9yJDEiLCJuYXZpZ2F0b3IiLCJsYW5ndWFnZXMiLCJwdXNoIiwidXNlckxhbmd1YWdlIiwibGFuZ3VhZ2UiLCJodG1sVGFnIiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwicGF0aG5hbWUiLCJtYXRjaCIsIkFycmF5IiwibG9va3VwRnJvbVBhdGhJbmRleCIsInJlcGxhY2UiLCJzdWJkb21haW4iLCJsb29rdXBGcm9tU3ViZG9tYWluSW5kZXgiLCJob3N0bmFtZSIsImdldERlZmF1bHRzIiwib3JkZXIiLCJjYWNoZXMiLCJleGNsdWRlQ2FjaGVGb3IiLCJCcm93c2VyIiwic2VydmljZXMiLCJ0eXBlIiwiZGV0ZWN0b3JzIiwiaW5pdCIsImkxOG5PcHRpb25zIiwibG9va3VwRnJvbVVybEluZGV4IiwiYWRkRGV0ZWN0b3IiLCJkZXRlY3RvciIsImRldGVjdCIsImRldGVjdGlvbk9yZGVyIiwiX3RoaXMiLCJkZXRlY3RlZCIsImRldGVjdG9yTmFtZSIsImxhbmd1YWdlVXRpbHMiLCJnZXRCZXN0TWF0Y2hGcm9tQ29kZXMiLCJfdGhpczIiLCJjYWNoZU5hbWUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js\n");
69
19
 
70
20
  /***/ }),
71
21