UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

1,350 lines 185 kB
(function() { try { var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {}; e.SENTRY_RELEASE = { id: "3.7.8" }; var t = new e.Error().stack; t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "e9d6759a-9f3b-4549-bd1e-7009610b857a", e._sentryDebugIdIdentifier = "sentry-dbid-e9d6759a-9f3b-4549-bd1e-7009610b857a"); } catch {} })(); import { r as e, t } from "./rolldown-runtime-YBAZwyzS.js"; import { t as n } from "./browser-CIXTbsxm.js"; //#region src/tools/logger.ts var r = /* @__PURE__ */ e(n(), 1), i = class { constructor() { this.messages = []; } log(...e) { this.push("DEBUG", e), (0, r.default)("efp:floorplan:debug")(...e); } error(...e) { this.push("ERROR", e), a(console.error, e); } warn(...e) { this.push("WARN", e), a(console.warn, e); } info(...e) { this.push("INFO", e), (0, r.default)("efp:floorplan:info")(...e); } push(e, t) { let n = t.map((e) => { if (typeof e == "object") try { return JSON.stringify(e); } catch (e) { return e.message; } return e; }), r = e + " " + (/* @__PURE__ */ new Date()).toISOString() + " " + n.join("; "); this.messages.push(r); let i = 1e3; this.messages.length > i && this.messages.splice(0, i / 2); } }; function a(e, t) { try { e.apply(e, t); } catch {} } var o = new i(), s = "___visibility", c = "previewMode", l = "___preview_mode", u = "data-preview-mode", d = "booths", f = "kiosk", p = "setkiosk", m = "expofp-map-settings", h = "debug", g = "efp:debug", _ = "build-route", v = "planner", y = "source", b = "from", x = "pathway", ee = 1e3, S = "lang", te = "language", ne = "uiscale", re = "resetuiscale", ie = "___ui-scale", ae = "--expofp-font-face", oe = "--expofp-booth-main-weight", se = "--expofp-booth-details-weight", C = "--expofp-exhibitor-main-weight", ce = "--expofp-exhibitor-details-weight", le = "--expofp-booth-special-weight", ue = "efp-compass-permission-granted", de = "viewermode", fe = "___viewer_mode", pe = new URL( /* @vite-ignore */ ".", import.meta.url ).href; pe.endsWith("/") || (pe += "/"); var me = pe, he = /* @__PURE__ */ t(((e, t) => { (function() { function e(e, t) { document.addEventListener ? e.addEventListener("scroll", t, !1) : e.attachEvent("scroll", t); } function n(e) { document.body ? e() : document.addEventListener ? document.addEventListener("DOMContentLoaded", function t() { document.removeEventListener("DOMContentLoaded", t), e(); }) : document.attachEvent("onreadystatechange", function t() { (document.readyState == "interactive" || document.readyState == "complete") && (document.detachEvent("onreadystatechange", t), e()); }); } function r(e) { this.g = document.createElement("div"), this.g.setAttribute("aria-hidden", "true"), this.g.appendChild(document.createTextNode(e)), this.h = document.createElement("span"), this.i = document.createElement("span"), this.m = document.createElement("span"), this.j = document.createElement("span"), this.l = -1, this.h.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.i.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.j.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.m.style.cssText = "display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;", this.h.appendChild(this.m), this.i.appendChild(this.j), this.g.appendChild(this.h), this.g.appendChild(this.i); } function i(e, t) { e.g.style.cssText = "max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:" + t + ";"; } function a(e) { var t = e.g.offsetWidth, n = t + 100; return e.j.style.width = n + "px", e.i.scrollLeft = n, e.h.scrollLeft = e.h.scrollWidth + 100, e.l === t ? !1 : (e.l = t, !0); } function o(t, n) { function r() { var e = i; a(e) && e.g.parentNode !== null && n(e.l); } var i = t; e(t.h, r), e(t.i, r), a(t); } function s(e, t, n) { t = t || {}, n = n || window, this.family = e, this.style = t.style || "normal", this.weight = t.weight || "normal", this.stretch = t.stretch || "normal", this.context = n; } var c = null, l = null, u = null, d = null; function f(e) { return l === null && (p(e) && /Apple/.test(window.navigator.vendor) ? (e = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent), l = !!e && 603 > parseInt(e[1], 10)) : l = !1), l; } function p(e) { return d === null && (d = !!e.document.fonts), d; } function m(e, t) { var n = e.style, r = e.weight; if (u === null) { var i = document.createElement("div"); try { i.style.font = "condensed 100px sans-serif"; } catch {} u = i.style.font !== ""; } return [ n, r, u ? e.stretch : "", "100px", t ].join(" "); } s.prototype.load = function(e, t) { var a = this, s = e || "BESbswy", l = 0, u = t || 3e3, d = (/* @__PURE__ */ new Date()).getTime(); return new Promise(function(e, t) { if (p(a.context) && !f(a.context)) { var h = new Promise(function(e, t) { function n() { (/* @__PURE__ */ new Date()).getTime() - d >= u ? t(Error("" + u + "ms timeout exceeded")) : a.context.document.fonts.load(m(a, "\"" + a.family + "\""), s).then(function(t) { 1 <= t.length ? e() : setTimeout(n, 25); }, t); } n(); }), g = new Promise(function(e, t) { l = setTimeout(function() { t(Error("" + u + "ms timeout exceeded")); }, u); }); Promise.race([g, h]).then(function() { clearTimeout(l), e(a); }, t); } else n(function() { function n() { var t; (t = _ != -1 && v != -1 || _ != -1 && y != -1 || v != -1 && y != -1) && ((t = _ != v && _ != y && v != y) || (c === null && (t = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent), c = !!t && (536 > parseInt(t[1], 10) || parseInt(t[1], 10) === 536 && 11 >= parseInt(t[2], 10))), t = c && (_ == b && v == b && y == b || _ == x && v == x && y == x || _ == ee && v == ee && y == ee)), t = !t), t && (S.parentNode !== null && S.parentNode.removeChild(S), clearTimeout(l), e(a)); } function f() { if ((/* @__PURE__ */ new Date()).getTime() - d >= u) S.parentNode !== null && S.parentNode.removeChild(S), t(Error("" + u + "ms timeout exceeded")); else { var e = a.context.document.hidden; (!0 === e || e === void 0) && (_ = p.g.offsetWidth, v = h.g.offsetWidth, y = g.g.offsetWidth, n()), l = setTimeout(f, 50); } } var p = new r(s), h = new r(s), g = new r(s), _ = -1, v = -1, y = -1, b = -1, x = -1, ee = -1, S = document.createElement("div"); S.dir = "ltr", i(p, m(a, "sans-serif")), i(h, m(a, "serif")), i(g, m(a, "monospace")), S.appendChild(p.g), S.appendChild(h.g), S.appendChild(g.g), a.context.document.body.appendChild(S), b = p.g.offsetWidth, x = h.g.offsetWidth, ee = g.g.offsetWidth, f(), o(p, function(e) { _ = e, n(); }), i(p, m(a, "\"" + a.family + "\",sans-serif")), o(h, function(e) { v = e, n(); }), i(h, m(a, "\"" + a.family + "\",serif")), o(g, function(e) { y = e, n(); }), i(g, m(a, "\"" + a.family + "\",monospace")); }); }); }, typeof t == "object" ? t.exports = s : (window.FontFaceObserver = s, window.FontFaceObserver.prototype.load = s.prototype.load); })(); })), ge, _e = new Uint8Array(16); function ve() { if (!ge && (ge = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !ge)) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); return ge(_e); } //#endregion //#region ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js var w = []; for (let e = 0; e < 256; ++e) w.push((e + 256).toString(16).slice(1)); function ye(e, t = 0) { return w[e[t + 0]] + w[e[t + 1]] + w[e[t + 2]] + w[e[t + 3]] + "-" + w[e[t + 4]] + w[e[t + 5]] + "-" + w[e[t + 6]] + w[e[t + 7]] + "-" + w[e[t + 8]] + w[e[t + 9]] + "-" + w[e[t + 10]] + w[e[t + 11]] + w[e[t + 12]] + w[e[t + 13]] + w[e[t + 14]] + w[e[t + 15]]; } var be = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) }; //#endregion //#region ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js function xe(e, t, n) { if (be.randomUUID && !t && !e) return be.randomUUID(); e = e || {}; let r = e.random || (e.rng || ve)(); if (r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128, t) { n = n || 0; for (let e = 0; e < 16; ++e) t[n + e] = r[e]; return t; } return ye(r); } //#endregion //#region ../../node_modules/.pnpm/bowser@2.14.1/node_modules/bowser/es5.js var Se = /* @__PURE__ */ t(((e, t) => { (function(n, r) { typeof e == "object" && typeof t == "object" ? t.exports = r() : typeof define == "function" && define.amd ? define([], r) : typeof e == "object" ? e.bowser = r() : n.bowser = r(); })(e, (function() { return function(e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports; } return n.m = e, n.c = t, n.d = function(e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }); }, n.r = function(e) { typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }); }, n.t = function(e, t) { if (1 & t && (e = n(e)), 8 & t || 4 & t && typeof e == "object" && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && typeof e != "string") for (var i in e) n.d(r, i, function(t) { return e[t]; }.bind(null, i)); return r; }, n.n = function(e) { var t = e && e.__esModule ? function() { return e.default; } : function() { return e; }; return n.d(t, "a", t), t; }, n.o = function(e, t) { return Object.prototype.hasOwnProperty.call(e, t); }, n.p = "", n(n.s = 90); }({ 17: function(e, t, n) { t.__esModule = !0, t.default = void 0; var r = n(18); t.default = function() { function e() {} return e.getFirstMatch = function(e, t) { var n = t.match(e); return n && n.length > 0 && n[1] || ""; }, e.getSecondMatch = function(e, t) { var n = t.match(e); return n && n.length > 1 && n[2] || ""; }, e.matchAndReturnConst = function(e, t, n) { if (e.test(t)) return n; }, e.getWindowsVersionName = function(e) { switch (e) { case "NT": return "NT"; case "XP": return "XP"; case "NT 5.0": return "2000"; case "NT 5.1": return "XP"; case "NT 5.2": return "2003"; case "NT 6.0": return "Vista"; case "NT 6.1": return "7"; case "NT 6.2": return "8"; case "NT 6.3": return "8.1"; case "NT 10.0": return "10"; default: return; } }, e.getMacOSVersionName = function(e) { var t = e.split(".").splice(0, 2).map((function(e) { return parseInt(e, 10) || 0; })); t.push(0); var n = t[0], r = t[1]; if (n === 10) switch (r) { case 5: return "Leopard"; case 6: return "Snow Leopard"; case 7: return "Lion"; case 8: return "Mountain Lion"; case 9: return "Mavericks"; case 10: return "Yosemite"; case 11: return "El Capitan"; case 12: return "Sierra"; case 13: return "High Sierra"; case 14: return "Mojave"; case 15: return "Catalina"; default: return; } switch (n) { case 11: return "Big Sur"; case 12: return "Monterey"; case 13: return "Ventura"; case 14: return "Sonoma"; case 15: return "Sequoia"; default: return; } }, e.getAndroidVersionName = function(e) { var t = e.split(".").splice(0, 2).map((function(e) { return parseInt(e, 10) || 0; })); if (t.push(0), !(t[0] === 1 && t[1] < 5)) return t[0] === 1 && t[1] < 6 ? "Cupcake" : t[0] === 1 && t[1] >= 6 ? "Donut" : t[0] === 2 && t[1] < 2 ? "Eclair" : t[0] === 2 && t[1] === 2 ? "Froyo" : t[0] === 2 && t[1] > 2 ? "Gingerbread" : t[0] === 3 ? "Honeycomb" : t[0] === 4 && t[1] < 1 ? "Ice Cream Sandwich" : t[0] === 4 && t[1] < 4 ? "Jelly Bean" : t[0] === 4 && t[1] >= 4 ? "KitKat" : t[0] === 5 ? "Lollipop" : t[0] === 6 ? "Marshmallow" : t[0] === 7 ? "Nougat" : t[0] === 8 ? "Oreo" : t[0] === 9 ? "Pie" : void 0; }, e.getVersionPrecision = function(e) { return e.split(".").length; }, e.compareVersions = function(t, n, r) { r === void 0 && (r = !1); var i = e.getVersionPrecision(t), a = e.getVersionPrecision(n), o = Math.max(i, a), s = 0, c = e.map([t, n], (function(t) { var n = o - e.getVersionPrecision(t), r = t + Array(n + 1).join(".0"); return e.map(r.split("."), (function(e) { return Array(20 - e.length).join("0") + e; })).reverse(); })); for (r && (s = o - Math.min(i, a)), --o; o >= s;) { if (c[0][o] > c[1][o]) return 1; if (c[0][o] === c[1][o]) { if (o === s) return 0; --o; } else if (c[0][o] < c[1][o]) return -1; } }, e.map = function(e, t) { var n, r = []; if (Array.prototype.map) return Array.prototype.map.call(e, t); for (n = 0; n < e.length; n += 1) r.push(t(e[n])); return r; }, e.find = function(e, t) { var n, r; if (Array.prototype.find) return Array.prototype.find.call(e, t); for (n = 0, r = e.length; n < r; n += 1) { var i = e[n]; if (t(i, n)) return i; } }, e.assign = function(e) { for (var t, n, r = e, i = arguments.length, a = Array(i > 1 ? i - 1 : 0), o = 1; o < i; o++) a[o - 1] = arguments[o]; if (Object.assign) return Object.assign.apply(Object, [e].concat(a)); var s = function() { var e = a[t]; typeof e == "object" && e && Object.keys(e).forEach((function(t) { r[t] = e[t]; })); }; for (t = 0, n = a.length; t < n; t += 1) s(); return e; }, e.getBrowserAlias = function(e) { return r.BROWSER_ALIASES_MAP[e]; }, e.getBrowserTypeByAlias = function(e) { return r.BROWSER_MAP[e] || ""; }, e; }(), e.exports = t.default; }, 18: function(e, t, n) { t.__esModule = !0, t.ENGINE_MAP = t.OS_MAP = t.PLATFORMS_MAP = t.BROWSER_MAP = t.BROWSER_ALIASES_MAP = void 0, t.BROWSER_ALIASES_MAP = { AmazonBot: "amazonbot", "Amazon Silk": "amazon_silk", "Android Browser": "android", BaiduSpider: "baiduspider", Bada: "bada", BingCrawler: "bingcrawler", Brave: "brave", BlackBerry: "blackberry", "ChatGPT-User": "chatgpt_user", Chrome: "chrome", ClaudeBot: "claudebot", Chromium: "chromium", Diffbot: "diffbot", DuckDuckBot: "duckduckbot", DuckDuckGo: "duckduckgo", Electron: "electron", Epiphany: "epiphany", FacebookExternalHit: "facebookexternalhit", Firefox: "firefox", Focus: "focus", Generic: "generic", "Google Search": "google_search", Googlebot: "googlebot", GPTBot: "gptbot", "Internet Explorer": "ie", InternetArchiveCrawler: "internetarchivecrawler", "K-Meleon": "k_meleon", LibreWolf: "librewolf", Linespider: "linespider", Maxthon: "maxthon", "Meta-ExternalAds": "meta_externalads", "Meta-ExternalAgent": "meta_externalagent", "Meta-ExternalFetcher": "meta_externalfetcher", "Meta-WebIndexer": "meta_webindexer", "Microsoft Edge": "edge", "MZ Browser": "mz", "NAVER Whale Browser": "naver", "OAI-SearchBot": "oai_searchbot", Omgilibot: "omgilibot", Opera: "opera", "Opera Coast": "opera_coast", "Pale Moon": "pale_moon", PerplexityBot: "perplexitybot", "Perplexity-User": "perplexity_user", PhantomJS: "phantomjs", PingdomBot: "pingdombot", Puffin: "puffin", QQ: "qq", QQLite: "qqlite", QupZilla: "qupzilla", Roku: "roku", Safari: "safari", Sailfish: "sailfish", "Samsung Internet for Android": "samsung_internet", SlackBot: "slackbot", SeaMonkey: "seamonkey", Sleipnir: "sleipnir", "Sogou Browser": "sogou", Swing: "swing", Tizen: "tizen", "UC Browser": "uc", Vivaldi: "vivaldi", "WebOS Browser": "webos", WeChat: "wechat", YahooSlurp: "yahooslurp", "Yandex Browser": "yandex", YandexBot: "yandexbot", YouBot: "youbot" }, t.BROWSER_MAP = { amazonbot: "AmazonBot", amazon_silk: "Amazon Silk", android: "Android Browser", baiduspider: "BaiduSpider", bada: "Bada", bingcrawler: "BingCrawler", blackberry: "BlackBerry", brave: "Brave", chatgpt_user: "ChatGPT-User", chrome: "Chrome", claudebot: "ClaudeBot", chromium: "Chromium", diffbot: "Diffbot", duckduckbot: "DuckDuckBot", duckduckgo: "DuckDuckGo", edge: "Microsoft Edge", electron: "Electron", epiphany: "Epiphany", facebookexternalhit: "FacebookExternalHit", firefox: "Firefox", focus: "Focus", generic: "Generic", google_search: "Google Search", googlebot: "Googlebot", gptbot: "GPTBot", ie: "Internet Explorer", internetarchivecrawler: "InternetArchiveCrawler", k_meleon: "K-Meleon", librewolf: "LibreWolf", linespider: "Linespider", maxthon: "Maxthon", meta_externalads: "Meta-ExternalAds", meta_externalagent: "Meta-ExternalAgent", meta_externalfetcher: "Meta-ExternalFetcher", meta_webindexer: "Meta-WebIndexer", mz: "MZ Browser", naver: "NAVER Whale Browser", oai_searchbot: "OAI-SearchBot", omgilibot: "Omgilibot", opera: "Opera", opera_coast: "Opera Coast", pale_moon: "Pale Moon", perplexitybot: "PerplexityBot", perplexity_user: "Perplexity-User", phantomjs: "PhantomJS", pingdombot: "PingdomBot", puffin: "Puffin", qq: "QQ Browser", qqlite: "QQ Browser Lite", qupzilla: "QupZilla", roku: "Roku", safari: "Safari", sailfish: "Sailfish", samsung_internet: "Samsung Internet for Android", seamonkey: "SeaMonkey", slackbot: "SlackBot", sleipnir: "Sleipnir", sogou: "Sogou Browser", swing: "Swing", tizen: "Tizen", uc: "UC Browser", vivaldi: "Vivaldi", webos: "WebOS Browser", wechat: "WeChat", yahooslurp: "YahooSlurp", yandex: "Yandex Browser", yandexbot: "YandexBot", youbot: "YouBot" }, t.PLATFORMS_MAP = { bot: "bot", desktop: "desktop", mobile: "mobile", tablet: "tablet", tv: "tv" }, t.OS_MAP = { Android: "Android", Bada: "Bada", BlackBerry: "BlackBerry", ChromeOS: "Chrome OS", HarmonyOS: "HarmonyOS", iOS: "iOS", Linux: "Linux", MacOS: "macOS", PlayStation4: "PlayStation 4", Roku: "Roku", Tizen: "Tizen", WebOS: "WebOS", Windows: "Windows", WindowsPhone: "Windows Phone" }, t.ENGINE_MAP = { Blink: "Blink", EdgeHTML: "EdgeHTML", Gecko: "Gecko", Presto: "Presto", Trident: "Trident", WebKit: "WebKit" }; }, 90: function(e, t, n) { t.__esModule = !0, t.default = void 0; var r, i = (r = n(91)) && r.__esModule ? r : { default: r }, a = n(18); function o(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r); } } t.default = function() { function e() {} var t, n, r; return e.getParser = function(e, t, n) { if (t === void 0 && (t = !1), n === void 0 && (n = null), typeof e != "string") throw Error("UserAgent should be a string"); return new i.default(e, t, n); }, e.parse = function(e, t) { return t === void 0 && (t = null), new i.default(e, t).getResult(); }, t = e, r = [ { key: "BROWSER_MAP", get: function() { return a.BROWSER_MAP; } }, { key: "ENGINE_MAP", get: function() { return a.ENGINE_MAP; } }, { key: "OS_MAP", get: function() { return a.OS_MAP; } }, { key: "PLATFORMS_MAP", get: function() { return a.PLATFORMS_MAP; } } ], (n = null) && o(t.prototype, n), r && o(t, r), e; }(), e.exports = t.default; }, 91: function(e, t, n) { t.__esModule = !0, t.default = void 0; var r = c(n(92)), i = c(n(93)), a = c(n(94)), o = c(n(95)), s = c(n(17)); function c(e) { return e && e.__esModule ? e : { default: e }; } t.default = function() { function e(e, t, n) { if (t === void 0 && (t = !1), n === void 0 && (n = null), e == null || e === "") throw Error("UserAgent parameter can't be empty"); this._ua = e; var r = !1; typeof t == "boolean" ? (r = t, this._hints = n) : this._hints = typeof t == "object" && t ? t : null, this.parsedResult = {}, !0 !== r && this.parse(); } var t = e.prototype; return t.getHints = function() { return this._hints; }, t.hasBrand = function(e) { if (!this._hints || !Array.isArray(this._hints.brands)) return !1; var t = e.toLowerCase(); return this._hints.brands.some((function(e) { return e.brand && e.brand.toLowerCase() === t; })); }, t.getBrandVersion = function(e) { if (this._hints && Array.isArray(this._hints.brands)) { var t = e.toLowerCase(), n = this._hints.brands.find((function(e) { return e.brand && e.brand.toLowerCase() === t; })); return n ? n.version : void 0; } }, t.getUA = function() { return this._ua; }, t.test = function(e) { return e.test(this._ua); }, t.parseBrowser = function() { var e = this; this.parsedResult.browser = {}; var t = s.default.find(r.default, (function(t) { if (typeof t.test == "function") return t.test(e); if (Array.isArray(t.test)) return t.test.some((function(t) { return e.test(t); })); throw Error("Browser's test function is not valid"); })); return t && (this.parsedResult.browser = t.describe(this.getUA(), this)), this.parsedResult.browser; }, t.getBrowser = function() { return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser(); }, t.getBrowserName = function(e) { return e ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || ""; }, t.getBrowserVersion = function() { return this.getBrowser().version; }, t.getOS = function() { return this.parsedResult.os ? this.parsedResult.os : this.parseOS(); }, t.parseOS = function() { var e = this; this.parsedResult.os = {}; var t = s.default.find(i.default, (function(t) { if (typeof t.test == "function") return t.test(e); if (Array.isArray(t.test)) return t.test.some((function(t) { return e.test(t); })); throw Error("Browser's test function is not valid"); })); return t && (this.parsedResult.os = t.describe(this.getUA())), this.parsedResult.os; }, t.getOSName = function(e) { var t = this.getOS().name; return e ? String(t).toLowerCase() || "" : t || ""; }, t.getOSVersion = function() { return this.getOS().version; }, t.getPlatform = function() { return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform(); }, t.getPlatformType = function(e) { e === void 0 && (e = !1); var t = this.getPlatform().type; return e ? String(t).toLowerCase() || "" : t || ""; }, t.parsePlatform = function() { var e = this; this.parsedResult.platform = {}; var t = s.default.find(a.default, (function(t) { if (typeof t.test == "function") return t.test(e); if (Array.isArray(t.test)) return t.test.some((function(t) { return e.test(t); })); throw Error("Browser's test function is not valid"); })); return t && (this.parsedResult.platform = t.describe(this.getUA())), this.parsedResult.platform; }, t.getEngine = function() { return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine(); }, t.getEngineName = function(e) { return e ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || ""; }, t.parseEngine = function() { var e = this; this.parsedResult.engine = {}; var t = s.default.find(o.default, (function(t) { if (typeof t.test == "function") return t.test(e); if (Array.isArray(t.test)) return t.test.some((function(t) { return e.test(t); })); throw Error("Browser's test function is not valid"); })); return t && (this.parsedResult.engine = t.describe(this.getUA())), this.parsedResult.engine; }, t.parse = function() { return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this; }, t.getResult = function() { return s.default.assign({}, this.parsedResult); }, t.satisfies = function(e) { var t = this, n = {}, r = 0, i = {}, a = 0; if (Object.keys(e).forEach((function(t) { var o = e[t]; typeof o == "string" ? (i[t] = o, a += 1) : typeof o == "object" && (n[t] = o, r += 1); })), r > 0) { var o = Object.keys(n), c = s.default.find(o, (function(e) { return t.isOS(e); })); if (c) { var l = this.satisfies(n[c]); if (l !== void 0) return l; } var u = s.default.find(o, (function(e) { return t.isPlatform(e); })); if (u) { var d = this.satisfies(n[u]); if (d !== void 0) return d; } } if (a > 0) { var f = Object.keys(i), p = s.default.find(f, (function(e) { return t.isBrowser(e, !0); })); if (p !== void 0) return this.compareVersion(i[p]); } }, t.isBrowser = function(e, t) { t === void 0 && (t = !1); var n = this.getBrowserName().toLowerCase(), r = e.toLowerCase(), i = s.default.getBrowserTypeByAlias(r); return t && i && (r = i.toLowerCase()), r === n; }, t.compareVersion = function(e) { var t = [0], n = e, r = !1, i = this.getBrowserVersion(); if (typeof i == "string") return e[0] === ">" || e[0] === "<" ? (n = e.substr(1), e[1] === "=" ? (r = !0, n = e.substr(2)) : t = [], e[0] === ">" ? t.push(1) : t.push(-1)) : e[0] === "=" ? n = e.substr(1) : e[0] === "~" && (r = !0, n = e.substr(1)), t.indexOf(s.default.compareVersions(i, n, r)) > -1; }, t.isOS = function(e) { return this.getOSName(!0) === String(e).toLowerCase(); }, t.isPlatform = function(e) { return this.getPlatformType(!0) === String(e).toLowerCase(); }, t.isEngine = function(e) { return this.getEngineName(!0) === String(e).toLowerCase(); }, t.is = function(e, t) { return t === void 0 && (t = !1), this.isBrowser(e, t) || this.isOS(e) || this.isPlatform(e); }, t.some = function(e) { var t = this; return e === void 0 && (e = []), e.some((function(e) { return t.is(e); })); }, e; }(), e.exports = t.default; }, 92: function(e, t, n) { t.__esModule = !0, t.default = void 0; var r, i = (r = n(17)) && r.__esModule ? r : { default: r }, a = /version\/(\d+(\.?_?\d+)+)/i; t.default = [ { test: [/gptbot/i], describe: function(e) { var t = { name: "GPTBot" }, n = i.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/chatgpt-user/i], describe: function(e) { var t = { name: "ChatGPT-User" }, n = i.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/oai-searchbot/i], describe: function(e) { var t = { name: "OAI-SearchBot" }, n = i.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [ /claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i ], describe: function(e) { var t = { name: "ClaudeBot" }, n = i.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/omgilibot/i, /webzio-extended/i], describe: function(e) { var t = { name: "Omgilibot" }, n = i.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/diffbot/i], describe: function(e) { var t = { name: "Diffbot" }, n = i.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/perplexitybot/i], describe: function(e) { var t = { name: "PerplexityBot" }, n = i.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/perplexity-user/i], describe: function(e) { var t = { name: "Perplexity-User" }, n = i.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/youbot/i], describe: function(e) { var t = { name: "YouBot" }, n = i.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/meta-webindexer/i], describe: function(e) { var t = { name: "Meta-WebIndexer" }, n = i.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/meta-externalads/i], describe: function(e) { var t = { name: "Meta-ExternalAds" }, n = i.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/meta-externalagent/i], describe: function(e) { var t = { name: "Meta-ExternalAgent" }, n = i.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/meta-externalfetcher/i], describe: function(e) { var t = { name: "Meta-ExternalFetcher" }, n = i.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/googlebot/i], describe: function(e) { var t = { name: "Googlebot" }, n = i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/linespider/i], describe: function(e) { var t = { name: "Linespider" }, n = i.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/amazonbot/i], describe: function(e) { var t = { name: "AmazonBot" }, n = i.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/bingbot/i], describe: function(e) { var t = { name: "BingCrawler" }, n = i.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/baiduspider/i], describe: function(e) { var t = { name: "BaiduSpider" }, n = i.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/duckduckbot/i], describe: function(e) { var t = { name: "DuckDuckBot" }, n = i.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/ia_archiver/i], describe: function(e) { var t = { name: "InternetArchiveCrawler" }, n = i.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/facebookexternalhit/i, /facebookcatalog/i], describe: function() { return { name: "FacebookExternalHit" }; } }, { test: [/slackbot/i, /slack-imgProxy/i], describe: function(e) { var t = { name: "SlackBot" }, n = i.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/yahoo!?[\s/]*slurp/i], describe: function() { return { name: "YahooSlurp" }; } }, { test: [/yandexbot/i, /yandexmobilebot/i], describe: function() { return { name: "YandexBot" }; } }, { test: [/pingdom/i], describe: function() { return { name: "PingdomBot" }; } }, { test: [/opera/i], describe: function(e) { var t = { name: "Opera" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/opr\/|opios/i], describe: function(e) { var t = { name: "Opera" }, n = i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/SamsungBrowser/i], describe: function(e) { var t = { name: "Samsung Internet for Android" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/Whale/i], describe: function(e) { var t = { name: "NAVER Whale Browser" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/PaleMoon/i], describe: function(e) { var t = { name: "Pale Moon" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/MZBrowser/i], describe: function(e) { var t = { name: "MZ Browser" }, n = i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/focus/i], describe: function(e) { var t = { name: "Focus" }, n = i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/swing/i], describe: function(e) { var t = { name: "Swing" }, n = i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/coast/i], describe: function(e) { var t = { name: "Opera Coast" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/opt\/\d+(?:.?_?\d+)+/i], describe: function(e) { var t = { name: "Opera Touch" }, n = i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/yabrowser/i], describe: function(e) { var t = { name: "Yandex Browser" }, n = i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/ucbrowser/i], describe: function(e) { var t = { name: "UC Browser" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/Maxthon|mxios/i], describe: function(e) { var t = { name: "Maxthon" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/epiphany/i], describe: function(e) { var t = { name: "Epiphany" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/puffin/i], describe: function(e) { var t = { name: "Puffin" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/sleipnir/i], describe: function(e) { var t = { name: "Sleipnir" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/k-meleon/i], describe: function(e) { var t = { name: "K-Meleon" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/micromessenger/i], describe: function(e) { var t = { name: "WeChat" }, n = i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/qqbrowser/i], describe: function(e) { var t = { name: /qqbrowserlite/i.test(e) ? "QQ Browser Lite" : "QQ Browser" }, n = i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/msie|trident/i], describe: function(e) { var t = { name: "Internet Explorer" }, n = i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/\sedg\//i], describe: function(e) { var t = { name: "Microsoft Edge" }, n = i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/edg([ea]|ios)/i], describe: function(e) { var t = { name: "Microsoft Edge" }, n = i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/vivaldi/i], describe: function(e) { var t = { name: "Vivaldi" }, n = i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/seamonkey/i], describe: function(e) { var t = { name: "SeaMonkey" }, n = i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/sailfish/i], describe: function(e) { var t = { name: "Sailfish" }, n = i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, e); return n && (t.version = n), t; } }, { test: [/silk/i], describe: function(e) { var t = { name: "Amazon Silk" }, n = i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/phantom/i], describe: function(e) { var t = { name: "PhantomJS" }, n = i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/slimerjs/i], describe: function(e) { var t = { name: "SlimerJS" }, n = i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: function(e) { var t = { name: "BlackBerry" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/(web|hpw)[o0]s/i], describe: function(e) { var t = { name: "WebOS Browser" }, n = i.default.getFirstMatch(a, e) || i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/bada/i], describe: function(e) { var t = { name: "Bada" }, n = i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/tizen/i], describe: function(e) { var t = { name: "Tizen" }, n = i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/qupzilla/i], describe: function(e) { var t = { name: "QupZilla" }, n = i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/librewolf/i], describe: function(e) { var t = { name: "LibreWolf" }, n = i.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/firefox|iceweasel|fxios/i], describe: function(e) { var t = { name: "Firefox" }, n = i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/electron/i], describe: function(e) { var t = { name: "Electron" }, n = i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [ /sogoumobilebrowser/i, /metasr/i, /se 2\.[x]/i ], describe: function(e) { var t = { name: "Sogou Browser" }, n = i.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i, e), r = i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e), a = i.default.getFirstMatch(/se ([\d.]+)x/i, e), o = n || r || a; return o && (t.version = o), t; } }, { test: [/MiuiBrowser/i], describe: function(e) { var t = { name: "Miui" }, n = i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: function(e) { return !!e.hasBrand("DuckDuckGo") || e.test(/\sDdg\/[\d.]+$/i); }, describe: function(e, t) { var n = { name: "DuckDuckGo" }; if (t) { var r = t.getBrandVersion("DuckDuckGo"); if (r) return n.version = r, n; } var a = i.default.getFirstMatch(/\sDdg\/([\d.]+)$/i, e); return a && (n.version = a), n; } }, { test: function(e) { return e.hasBrand("Brave"); }, describe: function(e, t) { var n = { name: "Brave" }; if (t) { var r = t.getBrandVersion("Brave"); if (r) return n.version = r, n; } return n; } }, { test: [/chromium/i], describe: function(e) { var t = { name: "Chromium" }, n = i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/chrome|crios|crmo/i], describe: function(e) { var t = { name: "Chrome" }, n = i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: [/GSA/i], describe: function(e) { var t = { name: "Google Search" }, n = i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, e); return n && (t.version = n), t; } }, { test: function(e) { var t = !e.test(/like android/i), n = e.test(/android/i); return t && n; }, describe: function(e) { var t = { name: "Android Browser" }, n = i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/playstation 4/i], describe: function(e) { var t = { name: "PlayStation 4" }, n = i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/safari|applewebkit/i], describe: function(e) { var t = { name: "Safari" }, n = i.default.getFirstMatch(a, e); return n && (t.version = n), t; } }, { test: [/.*/i], describe: function(e) { var t = e.search("\\(") === -1 ? /^(.*)\/(.*) / : /^(.*)\/(.*)[ \t]\((.*)/; return { name: i.default.getFirstMatch(t, e), version: i.default.getSecondMatch(t, e) }; } } ], e.exports = t.default; }, 93: function(e, t, n) { t.__esModule = !0, t.default = void 0; var r, i = (r = n(17)) && r.__esModule ? r : { default: r }, a = n(18); t.default = [ { test: [/Roku\/DVP/], describe: function(e) { var t = i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, e); return { name: a.OS_MAP.Roku, version: t }; } }, { test: [/windows phone/i], describe: function(e) { var t = i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, e); return { name: a.OS_MAP.WindowsPhone, version: t }; } }, { test: [/windows /i], describe: function(e) { var t = i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, e), n = i.default.getWindowsVersionName(t); return { name: a.OS_MAP.Windows, version: t, versionName: n }; } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: function(e) { var t = { name: a.OS_MAP.iOS }, n = i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/, e); return n && (t.version = n), t; } }, { test: [/macintosh/i], describe: function(e) { var t = i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, e).replace(/[_\s]/g, "."), n = i.default.getMacOSVersionName(t), r = { name: a.OS_MAP.MacOS, version: t }; return n && (r.versionName = n), r; } }, { test: [/(ipod|iphone|ipad)/i], describe: function(e) { var t = i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, e).replace(/[_\s]/g, "."); return { name: a.OS_MAP.iOS, version: t }; } }, { test: [/OpenHarmony/i], describe: function(e) { var t = i.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i, e); return { name: a.OS_MAP.HarmonyOS, version: t }; } }, { test: function(e) { var t = !e.test(/like android/i), n = e.test(/android/i); return t && n; }, describe: function(e) { var t = i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, e), n = i.default.getAndroidVersionName(t), r = { name: a.OS_MAP.Android, version: t }; return n && (r.versionName = n), r; } }, { test: [/(web|hpw)[o0]s/i], describe: function(e) { var t = i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, e), n = { name: a.OS_MAP.WebOS }; return t && t.length && (n.version = t), n; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: function(e) { var t = i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, e) || i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, e) || i.default.getFirstMatch(/\bbb(\d+)/i, e); return { name: a.OS_MAP.BlackBerry, version: t }; } }, { test: [/bada/i], describe: function(e) { var t = i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, e); return { name: a.OS_MAP.Bada, version: t }; } }, { test: [/tizen/i], describe: function(e) { var t = i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, e); return { name: a.OS_MAP.Ti