@feedmepos/mf-connect 0.1.0-beta.47 → 0.1.0-beta.49

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 (87) hide show
  1. package/dist/{Analytic-lSdhbAE5.js → Analytic-DTJ_SOI3.js} +18 -17
  2. package/dist/{App-5yWxPSqa.js → App-Cls9g4sA.js} +10 -6
  3. package/dist/AuditLogs-xbOKPoQS.js +1885 -0
  4. package/dist/{Broadcast-BkDCNB93.js → Broadcast-UeoV6_0x.js} +36 -35
  5. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-2l4qBEIr.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BPl_0m0I.js} +6 -6
  6. package/dist/{Card-CKh6sC-j.js → Card-DSK_2b0H.js} +23 -21
  7. package/dist/{Collections-D81rKHHA.js → Collections-U63Y-tw8.js} +11 -9
  8. package/dist/{Credit-Swf1Bccg.js → Credit-CC1k4c10.js} +11 -10
  9. package/dist/DateRangeChip.vue_vue_type_script_setup_true_lang-CLFeMi0j.js +169 -0
  10. package/dist/{EditCampaignSheet.vue_vue_type_script_setup_true_lang-CFGREAre.js → EditCampaignSheet.vue_vue_type_script_setup_true_lang-BUPBXZWy.js} +28 -27
  11. package/dist/{EffectSheet.vue_vue_type_style_index_0_lang-DN186Ykx.js → EffectSheet.vue_vue_type_style_index_0_lang-DnjTCWUk.js} +6 -6
  12. package/dist/{Experience-DoAwLHvr.js → Experience-UBLCm5X8.js} +26 -25
  13. package/dist/{Game-B4-8bZaf.js → Game-DN8qNmAV.js} +14 -13
  14. package/dist/{Index-O-qPz_45.js → Index-Cp5Iqmgq.js} +14 -13
  15. package/dist/{Marketing-A8TyRzoX.js → Marketing-BTZSeQdq.js} +8 -7
  16. package/dist/{Member-C9uQuhVr.js → Member-DKGZpaNY.js} +4 -4
  17. package/dist/{MemberList--aWor7_G.js → MemberList-BDv5O7_F.js} +33 -31
  18. package/dist/{MemberTransactions-C-01Qdmx.js → MemberTransactions-Cp_g2uYy.js} +1 -1
  19. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-Cdx1rPtp.js → MessageInput.vue_vue_type_script_setup_true_lang-TBeUosVs.js} +6 -6
  20. package/dist/{Mission-Ln1_nTS2.js → Mission-Cte8Jtyj.js} +14 -13
  21. package/dist/{Overview-BJlPQi5S.js → Overview-COeyTvML.js} +19 -18
  22. package/dist/{Point-wi6j4ns_.js → Point-Cu5_d5X1.js} +11 -10
  23. package/dist/{Promotion-hahMm7v9.js → Promotion-Cf8ct95o.js} +12 -11
  24. package/dist/{Record-BO7qqPQP.js → Record-BTsMyNzQ.js} +19 -17
  25. package/dist/{Reward-DQhrs6So.js → Reward-Bcx7bCEh.js} +33 -32
  26. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-a7CjUVso.js → RewardGroup.vue_vue_type_script_setup_true_lang-CwApma5p.js} +13 -12
  27. package/dist/{RuleGroup.vue_vue_type_script_setup_true_lang-CIkop4iY.js → RuleGroup.vue_vue_type_script_setup_true_lang-Cg3bA1cc.js} +12 -12
  28. package/dist/{Segment-Cdi_lkEd.js → Segment-BfMpM62H.js} +19 -17
  29. package/dist/{SelectItems.vue_vue_type_script_setup_true_lang-DIpnyCH_.js → SelectItems.vue_vue_type_script_setup_true_lang-CqZIHzA3.js} +2 -2
  30. package/dist/{Setting-CEmkP1ak.js → Setting-Btim3PZq.js} +20 -19
  31. package/dist/{Store-BXcCorEJ.js → Store-BbiTlkAz.js} +24 -23
  32. package/dist/{StoreRewards-C6s4S1bR.js → StoreRewards-hbNthA-_.js} +33 -32
  33. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-Dv58wFeO.js +939 -0
  34. package/dist/{TargetLocationInput.vue_vue_type_script_setup_true_lang-9XLezVlo.js → TargetLocationInput.vue_vue_type_script_setup_true_lang-BJvBo7sT.js} +1 -1
  35. package/dist/{Tier-ymDmSa8e.js → Tier-Ddj_dwc8.js} +25 -24
  36. package/dist/{Title-DyT8EwGd.js → Title-CA6b8UxN.js} +28 -27
  37. package/dist/{Transaction-BqfYCKHC.js → Transaction-yp6PDE_8.js} +2 -2
  38. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-D8OzqKdh.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-DoCmo4D7.js} +6 -6
  39. package/dist/{Voucher-B4H6izT-.js → Voucher-CGB4koQI.js} +14 -13
  40. package/dist/{VoucherEditor.vue_vue_type_script_setup_true_lang-BzUCl5A0.js → VoucherEditor.vue_vue_type_script_setup_true_lang-aYXqbp2E.js} +10 -10
  41. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-Qyn1rKwq.js → ZodTextField.vue_vue_type_script_setup_true_lang-Bz77dtVR.js} +1 -1
  42. package/dist/{app-DFhKMlXT.js → app-BpikVDEt.js} +121 -57
  43. package/dist/{app-fgJef1gk.js → app-DG6xKzyo.js} +1 -1
  44. package/dist/app.js +1 -1
  45. package/dist/{business-CWVg8oTw.js → business-DPl8ug6e.js} +1 -1
  46. package/dist/{campaign-DqE4D_Ie.js → campaign-CLF6bWG4.js} +2 -2
  47. package/dist/{campaign-CXx39lOY.js → campaign-D9xub_rP.js} +9 -9
  48. package/dist/{campaign.enum-BhHy5QqC.js → campaign.enum-DJijW358.js} +1 -1
  49. package/dist/{campaign.fn-DpRMdaoZ.js → campaign.fn-DgyMbDS2.js} +147 -147
  50. package/dist/{collectible.enum-CsAoXB-o.js → collectible.enum-q3RNa6ac.js} +1 -1
  51. package/dist/{collection.fn-BgfqVgLc.js → collection.fn-DQdOmMPm.js} +2 -2
  52. package/dist/{dto-CbOlUDXO.js → dto-Gtphhk7f.js} +4 -4
  53. package/dist/{effect-DVzBcdAh.js → effect-b6TK6WqX.js} +1 -1
  54. package/dist/{email-addresses-D7cuPyCu.js → email-addresses-BOOXVJIb.js} +1 -1
  55. package/dist/{export-fqAmDRzH.js → export-DB-hJPwq.js} +3 -3
  56. package/dist/{helper-Cr9hVBrL.js → helper-DaoMEMRy.js} +1 -1
  57. package/dist/{index-CoGSXqP_.js → index-BeE1k0xs.js} +115 -57
  58. package/dist/{index-c-mT7CUc.js → index-BsYcA4d4.js} +1 -1
  59. package/dist/{index-BYziLSU1.js → index-CC24qW42.js} +1 -1
  60. package/dist/{index-CLKiPqHH.js → index-CGCV3Q39.js} +3 -3
  61. package/dist/{index-CLeEuF1Q.js → index-CSmO-8Va.js} +1 -1
  62. package/dist/{index-Lrwmot9Q.js → index-Dd_g3RuO.js} +1 -1
  63. package/dist/{index-B-VO7A5g.js → index-DplAli0B.js} +11 -10
  64. package/dist/{index-BrZ9oOl8.js → index-V4sEiiYS.js} +1 -1
  65. package/dist/{index-zaKL-M_1.js → index-lAMRbOeY.js} +1 -1
  66. package/dist/{index-BpqE7ONp.js → index-rU6SAS58.js} +5 -5
  67. package/dist/{index-iHW9prE9.js → index-tXvAp_RD.js} +1 -1
  68. package/dist/{index-1fDhAPmJ.js → index-zaGTl_qB.js} +2 -2
  69. package/dist/{index.esm2017-CZ5oluks.js → index.esm2017-BpKyZnrS.js} +33 -33
  70. package/dist/loading-aAPveWkt.js +71 -0
  71. package/dist/{membership-D9qRdNxE.js → membership-CdHkfBpk.js} +3 -3
  72. package/dist/{money-B-nNBD6W.js → money-yvgF4-JZ.js} +1 -1
  73. package/dist/{number--UNR-Ea-.js → number-5CZfadpH.js} +1 -1
  74. package/dist/objectid-Cz3ihSHZ.js +145 -0
  75. package/dist/{loading-D84WknQA.js → plugins-CFwYNZo0.js} +2893 -2959
  76. package/dist/{reward-tqNSZbg2.js → reward-DfX_2rEr.js} +1 -1
  77. package/dist/{rule-tJ5_2tKg.js → rule-D_HCGBXt.js} +3 -3
  78. package/dist/{rule-builder-djwiKBYX.js → rule-builder-DaJ2wADR.js} +1 -1
  79. package/dist/{template-DrDV1Aex.js → template-BFcHBZjo.js} +4 -4
  80. package/dist/{trigger-ChRRXEa5.js → trigger-BnfqcoU-.js} +4 -4
  81. package/dist/usePagination-BeF5K3M7.js +223 -0
  82. package/dist/{user-CwS7aiK5.js → user-bXWIOEFL.js} +1 -1
  83. package/dist/{vue-i18n-BLCr04dZ.js → vue-i18n-kVKjcgAi.js} +353 -353
  84. package/dist/{usePagination--wzkJiPp.js → xlsx-C0oaHSzL.js} +2962 -3183
  85. package/package.json +2 -1
  86. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-e2Phr4sy.js +0 -1099
  87. package/dist/objectid-DJNlN9do.js +0 -145
@@ -0,0 +1,1885 @@
1
+ import { defineComponent as ze, ref as xe, resolveComponent as $e, openBlock as P, createBlock as pi, unref as h, isRef as xi, withCtx as We, createElementVNode as x, createElementBlock as Q, Fragment as qe, renderList as Xe, toDisplayString as G, watch as ki, onBeforeMount as _i, createVNode as q, createCommentVNode as Si, h as Y } from "vue";
2
+ import { components as Ke } from "@feedmepos/ui-library";
3
+ import { c as Pe, a as Je } from "./plugins-CFwYNZo0.js";
4
+ import { h as J } from "./moment-BWErdI6_.js";
5
+ import { _ as Qe, a as Ei } from "./DateRangeChip.vue_vue_type_script_setup_true_lang-CLFeMi0j.js";
6
+ import { u as Ai, _ as Ri } from "./usePagination-BeF5K3M7.js";
7
+ import { d as he, e as Oi } from "./index-BeE1k0xs.js";
8
+ import "./index-DplAli0B.js";
9
+ import "./index-zaGTl_qB.js";
10
+ import "./index-Dd_g3RuO.js";
11
+ import "./index-rU6SAS58.js";
12
+ import { g as Ci, S as Ii, b as Ti } from "./index-CGCV3Q39.js";
13
+ import { o as Mi } from "./objectId-dwaoBfJX.js";
14
+ import { u as Di } from "./vue-i18n-kVKjcgAi.js";
15
+ var Li = "2.0.3", Fe = 500, Ze = "user-agent", ie = "", ei = "?", ke = "function", N = "undefined", te = "object", Ve = "string", E = "browser", M = "cpu", T = "device", C = "engine", O = "os", Z = "result", r = "name", e = "type", o = "vendor", a = "version", A = "architecture", pe = "major", i = "model", be = "console", w = "mobile", g = "tablet", k = "smarttv", I = "wearable", Ae = "xr", me = "embedded", se = "inapp", Ge = "brands", W = "formFactors", Ye = "fullVersionList", ee = "platform", je = "platformVersion", Se = "bitness", B = "sec-ch-ua", Ui = B + "-full-version-list", Hi = B + "-arch", qi = B + "-" + Se, Pi = B + "-form-factors", Fi = B + "-" + w, Vi = B + "-" + i, fi = B + "-" + ee, Ni = fi + "-version", hi = [Ge, Ye, w, i, ee, je, A, W, Se], ge = "Amazon", X = "Apple", ii = "ASUS", ti = "BlackBerry", j = "Google", oi = "Huawei", ri = "Lenovo", ai = "Honor", ve = "LG", Re = "Microsoft", Oe = "Motorola", Ce = "Nvidia", si = "OnePlus", Ie = "OPPO", ne = "Samsung", ni = "Sharp", le = "Sony", Te = "Xiaomi", Me = "Zebra", li = "Chrome", di = "Chromium", H = "Chromecast", Bi = "Edge", de = "Firefox", ue = "Opera", De = "Facebook", ui = "Sogou", K = "Mobile ", ce = " Browser", Ne = "Windows", zi = typeof window !== N, R = zi && window.navigator ? window.navigator : void 0, F = R && R.userAgentData ? R.userAgentData : void 0, $i = function(t, n) {
16
+ var s = {}, m = n;
17
+ if (!_e(n)) {
18
+ m = {};
19
+ for (var l in n)
20
+ for (var p in n[l])
21
+ m[p] = n[l][p].concat(m[p] ? m[p] : []);
22
+ }
23
+ for (var u in t)
24
+ s[u] = m[u] && m[u].length % 2 === 0 ? m[u].concat(t[u]) : t[u];
25
+ return s;
26
+ }, Ee = function(t) {
27
+ for (var n = {}, s = 0; s < t.length; s++)
28
+ n[t[s].toUpperCase()] = t[s];
29
+ return n;
30
+ }, Be = function(t, n) {
31
+ if (typeof t === te && t.length > 0) {
32
+ for (var s in t)
33
+ if (D(t[s]) == D(n)) return !0;
34
+ return !1;
35
+ }
36
+ return re(t) ? D(n).indexOf(D(t)) !== -1 : !1;
37
+ }, _e = function(t, n) {
38
+ for (var s in t)
39
+ return /^(browser|cpu|device|engine|os)$/.test(s) || (n ? _e(t[s]) : !1);
40
+ }, re = function(t) {
41
+ return typeof t === Ve;
42
+ }, Le = function(t) {
43
+ if (t) {
44
+ for (var n = [], s = oe(/\\?\"/g, t).split(","), m = 0; m < s.length; m++)
45
+ if (s[m].indexOf(";") > -1) {
46
+ var l = fe(s[m]).split(";v=");
47
+ n[m] = { brand: l[0], version: l[1] };
48
+ } else
49
+ n[m] = fe(s[m]);
50
+ return n;
51
+ }
52
+ }, D = function(t) {
53
+ return re(t) ? t.toLowerCase() : t;
54
+ }, Ue = function(t) {
55
+ return re(t) ? oe(/[^\d\.]/g, t).split(".")[0] : void 0;
56
+ }, L = function(t) {
57
+ for (var n in t) {
58
+ var s = t[n];
59
+ typeof s == te && s.length == 2 ? this[s[0]] = s[1] : this[s] = void 0;
60
+ }
61
+ return this;
62
+ }, oe = function(t, n) {
63
+ return re(n) ? n.replace(t, ie) : n;
64
+ }, we = function(t) {
65
+ return oe(/\\?\"/g, t);
66
+ }, fe = function(t, n) {
67
+ if (re(t))
68
+ return t = oe(/^\s\s*/, t), typeof n === N ? t : t.substring(0, Fe);
69
+ }, He = function(t, n) {
70
+ if (!(!t || !n))
71
+ for (var s = 0, m, l, p, u, c, d; s < n.length && !c; ) {
72
+ var y = n[s], v = n[s + 1];
73
+ for (m = l = 0; m < y.length && !c && y[m]; )
74
+ if (c = y[m++].exec(t), c)
75
+ for (p = 0; p < v.length; p++)
76
+ d = c[++l], u = v[p], typeof u === te && u.length > 0 ? u.length === 2 ? typeof u[1] == ke ? this[u[0]] = u[1].call(this, d) : this[u[0]] = u[1] : u.length === 3 ? typeof u[1] === ke && !(u[1].exec && u[1].test) ? this[u[0]] = d ? u[1].call(this, d, u[2]) : void 0 : this[u[0]] = d ? d.replace(u[1], u[2]) : void 0 : u.length === 4 && (this[u[0]] = d ? u[3].call(this, d.replace(u[1], u[2])) : void 0) : this[u] = d || void 0;
77
+ s += 2;
78
+ }
79
+ }, V = function(t, n) {
80
+ for (var s in n)
81
+ if (typeof n[s] === te && n[s].length > 0) {
82
+ for (var m = 0; m < n[s].length; m++)
83
+ if (Be(n[s][m], t))
84
+ return s === ei ? void 0 : s;
85
+ } else if (Be(n[s], t))
86
+ return s === ei ? void 0 : s;
87
+ return n.hasOwnProperty("*") ? n["*"] : t;
88
+ }, ci = {
89
+ ME: "4.90",
90
+ "NT 3.11": "NT3.51",
91
+ "NT 4.0": "NT4.0",
92
+ 2e3: "NT 5.0",
93
+ XP: ["NT 5.1", "NT 5.2"],
94
+ Vista: "NT 6.0",
95
+ 7: "NT 6.1",
96
+ 8: "NT 6.2",
97
+ "8.1": "NT 6.3",
98
+ 10: ["NT 6.4", "NT 10.0"],
99
+ RT: "ARM"
100
+ }, wi = {
101
+ embedded: "Automotive",
102
+ mobile: "Mobile",
103
+ tablet: ["Tablet", "EInk"],
104
+ smarttv: "TV",
105
+ wearable: "Watch",
106
+ xr: ["VR", "XR"],
107
+ "?": ["Desktop", "Unknown"],
108
+ "*": void 0
109
+ }, bi = {
110
+ browser: [
111
+ [
112
+ // Most common regardless engine
113
+ /\b(?:crmo|crios)\/([\w\.]+)/i
114
+ // Chrome for Android/iOS
115
+ ],
116
+ [a, [r, K + "Chrome"]],
117
+ [
118
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
119
+ // Microsoft Edge
120
+ ],
121
+ [a, [r, "Edge"]],
122
+ [
123
+ // Presto based
124
+ /(opera mini)\/([-\w\.]+)/i,
125
+ // Opera Mini
126
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
127
+ // Opera Mobi/Tablet
128
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
129
+ // Opera
130
+ ],
131
+ [r, a],
132
+ [
133
+ /opios[\/ ]+([\w\.]+)/i
134
+ // Opera mini on iphone >= 8.0
135
+ ],
136
+ [a, [r, ue + " Mini"]],
137
+ [
138
+ /\bop(?:rg)?x\/([\w\.]+)/i
139
+ // Opera GX
140
+ ],
141
+ [a, [r, ue + " GX"]],
142
+ [
143
+ /\bopr\/([\w\.]+)/i
144
+ // Opera Webkit
145
+ ],
146
+ [a, [r, ue]],
147
+ [
148
+ // Mixed
149
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
150
+ // Baidu
151
+ ],
152
+ [a, [r, "Baidu"]],
153
+ [
154
+ /\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i
155
+ // Maxthon
156
+ ],
157
+ [a, [r, "Maxthon"]],
158
+ [
159
+ /(kindle)\/([\w\.]+)/i,
160
+ // Kindle
161
+ /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
162
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
163
+ // Trident based
164
+ /(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,
165
+ // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
166
+ /(?:ms|\()(ie) ([\w\.]+)/i,
167
+ // Internet Explorer
168
+ // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble
169
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,
170
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
171
+ /(heytap|ovi|115|surf)browser\/([\d\.]+)/i,
172
+ // HeyTap/Ovi/115/Surf
173
+ /(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i
174
+ // Ecosia/Weibo
175
+ ],
176
+ [r, a],
177
+ [
178
+ /quark(?:pc)?\/([-\w\.]+)/i
179
+ // Quark
180
+ ],
181
+ [a, [r, "Quark"]],
182
+ [
183
+ /\bddg\/([\w\.]+)/i
184
+ // DuckDuckGo
185
+ ],
186
+ [a, [r, "DuckDuckGo"]],
187
+ [
188
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
189
+ // UCBrowser
190
+ ],
191
+ [a, [r, "UCBrowser"]],
192
+ [
193
+ /microm.+\bqbcore\/([\w\.]+)/i,
194
+ // WeChat Desktop for Windows Built-in Browser
195
+ /\bqbcore\/([\w\.]+).+microm/i,
196
+ /micromessenger\/([\w\.]+)/i
197
+ // WeChat
198
+ ],
199
+ [a, [r, "WeChat"]],
200
+ [
201
+ /konqueror\/([\w\.]+)/i
202
+ // Konqueror
203
+ ],
204
+ [a, [r, "Konqueror"]],
205
+ [
206
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
207
+ // IE11
208
+ ],
209
+ [a, [r, "IE"]],
210
+ [
211
+ /ya(?:search)?browser\/([\w\.]+)/i
212
+ // Yandex
213
+ ],
214
+ [a, [r, "Yandex"]],
215
+ [
216
+ /slbrowser\/([\w\.]+)/i
217
+ // Smart Lenovo Browser
218
+ ],
219
+ [a, [r, "Smart " + ri + ce]],
220
+ [
221
+ /(avast|avg)\/([\w\.]+)/i
222
+ // Avast/AVG Secure Browser
223
+ ],
224
+ [[r, /(.+)/, "$1 Secure" + ce], a],
225
+ [
226
+ /\bfocus\/([\w\.]+)/i
227
+ // Firefox Focus
228
+ ],
229
+ [a, [r, de + " Focus"]],
230
+ [
231
+ /\bopt\/([\w\.]+)/i
232
+ // Opera Touch
233
+ ],
234
+ [a, [r, ue + " Touch"]],
235
+ [
236
+ /coc_coc\w+\/([\w\.]+)/i
237
+ // Coc Coc Browser
238
+ ],
239
+ [a, [r, "Coc Coc"]],
240
+ [
241
+ /dolfin\/([\w\.]+)/i
242
+ // Dolphin
243
+ ],
244
+ [a, [r, "Dolphin"]],
245
+ [
246
+ /coast\/([\w\.]+)/i
247
+ // Opera Coast
248
+ ],
249
+ [a, [r, ue + " Coast"]],
250
+ [
251
+ /miuibrowser\/([\w\.]+)/i
252
+ // MIUI Browser
253
+ ],
254
+ [a, [r, "MIUI" + ce]],
255
+ [
256
+ /fxios\/([\w\.-]+)/i
257
+ // Firefox for iOS
258
+ ],
259
+ [a, [r, K + de]],
260
+ [
261
+ /\bqihoobrowser\/?([\w\.]*)/i
262
+ // 360
263
+ ],
264
+ [a, [r, "360"]],
265
+ [
266
+ /\b(qq)\/([\w\.]+)/i
267
+ // QQ
268
+ ],
269
+ [[r, /(.+)/, "$1Browser"], a],
270
+ [
271
+ /(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
272
+ ],
273
+ [[r, /(.+)/, "$1" + ce], a],
274
+ [
275
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
276
+ /samsungbrowser\/([\w\.]+)/i
277
+ // Samsung Internet
278
+ ],
279
+ [a, [r, ne + " Internet"]],
280
+ [
281
+ /metasr[\/ ]?([\d\.]+)/i
282
+ // Sogou Explorer
283
+ ],
284
+ [a, [r, ui + " Explorer"]],
285
+ [
286
+ /(sogou)mo\w+\/([\d\.]+)/i
287
+ // Sogou Mobile
288
+ ],
289
+ [[r, ui + " Mobile"], a],
290
+ [
291
+ /(electron)\/([\w\.]+) safari/i,
292
+ // Electron-based App
293
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
294
+ // Tesla
295
+ /m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i
296
+ // QQ/2345
297
+ ],
298
+ [r, a],
299
+ [
300
+ /(lbbrowser|rekonq)/i
301
+ // LieBao Browser/Rekonq
302
+ ],
303
+ [r],
304
+ [
305
+ /ome\/([\w\.]+) \w* ?(iron) saf/i,
306
+ // Iron
307
+ /ome\/([\w\.]+).+qihu (360)[es]e/i
308
+ // 360
309
+ ],
310
+ [a, r],
311
+ [
312
+ // WebView
313
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
314
+ // Facebook App for iOS & Android
315
+ ],
316
+ [[r, De], a, [e, se]],
317
+ [
318
+ /(Klarna)\/([\w\.]+)/i,
319
+ // Klarna Shopping Browser for iOS & Android
320
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
321
+ // Kakao App
322
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
323
+ // Naver InApp
324
+ /(daum)apps[\/ ]([\w\.]+)/i,
325
+ // Daum App
326
+ /safari (line)\/([\w\.]+)/i,
327
+ // Line App for iOS
328
+ /\b(line)\/([\w\.]+)\/iab/i,
329
+ // Line App for Android
330
+ /(alipay)client\/([\w\.]+)/i,
331
+ // Alipay
332
+ /(twitter)(?:and| f.+e\/([\w\.]+))/i,
333
+ // Twitter
334
+ /(instagram|snapchat)[\/ ]([-\w\.]+)/i
335
+ // Instagram/Snapchat
336
+ ],
337
+ [r, a, [e, se]],
338
+ [
339
+ /\bgsa\/([\w\.]+) .*safari\//i
340
+ // Google Search Appliance on iOS
341
+ ],
342
+ [a, [r, "GSA"], [e, se]],
343
+ [
344
+ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
345
+ // TikTok
346
+ ],
347
+ [a, [r, "TikTok"], [e, se]],
348
+ [
349
+ /\[(linkedin)app\]/i
350
+ // LinkedIn App for iOS & Android
351
+ ],
352
+ [r, [e, se]],
353
+ [
354
+ /(chromium)[\/ ]([-\w\.]+)/i
355
+ // Chromium
356
+ ],
357
+ [r, a],
358
+ [
359
+ /headlesschrome(?:\/([\w\.]+)| )/i
360
+ // Chrome Headless
361
+ ],
362
+ [a, [r, li + " Headless"]],
363
+ [
364
+ / wv\).+(chrome)\/([\w\.]+)/i
365
+ // Chrome WebView
366
+ ],
367
+ [[r, li + " WebView"], a],
368
+ [
369
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
370
+ // Android Browser
371
+ ],
372
+ [a, [r, "Android" + ce]],
373
+ [
374
+ /chrome\/([\w\.]+) mobile/i
375
+ // Chrome Mobile
376
+ ],
377
+ [a, [r, K + "Chrome"]],
378
+ [
379
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
380
+ // Chrome/OmniWeb/Arora/Tizen/Nokia
381
+ ],
382
+ [r, a],
383
+ [
384
+ /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i
385
+ // Safari Mobile
386
+ ],
387
+ [a, [r, K + "Safari"]],
388
+ [
389
+ /iphone .*mobile(?:\/\w+ | ?)safari/i
390
+ ],
391
+ [[r, K + "Safari"]],
392
+ [
393
+ /version\/([\w\.\,]+) .*(safari)/i
394
+ // Safari
395
+ ],
396
+ [a, r],
397
+ [
398
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
399
+ // Safari < 3.0
400
+ ],
401
+ [r, [a, "1"]],
402
+ [
403
+ /(webkit|khtml)\/([\w\.]+)/i
404
+ ],
405
+ [r, a],
406
+ [
407
+ // Gecko based
408
+ /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i
409
+ // Firefox Mobile
410
+ ],
411
+ [[r, K + de], a],
412
+ [
413
+ /(navigator|netscape\d?)\/([-\w\.]+)/i
414
+ // Netscape
415
+ ],
416
+ [[r, "Netscape"], a],
417
+ [
418
+ /(wolvic|librewolf)\/([\w\.]+)/i
419
+ // Wolvic/LibreWolf
420
+ ],
421
+ [r, a],
422
+ [
423
+ /mobile vr; rv:([\w\.]+)\).+firefox/i
424
+ // Firefox Reality
425
+ ],
426
+ [a, [r, de + " Reality"]],
427
+ [
428
+ /ekiohf.+(flow)\/([\w\.]+)/i,
429
+ // Flow
430
+ /(swiftfox)/i,
431
+ // Swiftfox
432
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
433
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
434
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
435
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
436
+ /(firefox)\/([\w\.]+)/i,
437
+ // Other Firefox-based
438
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
439
+ // Mozilla
440
+ // Other
441
+ /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
442
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird
443
+ /\b(links) \(([\w\.]+)/i
444
+ // Links
445
+ ],
446
+ [r, [a, /_/g, "."]],
447
+ [
448
+ /(cobalt)\/([\w\.]+)/i
449
+ // Cobalt
450
+ ],
451
+ [r, [a, /[^\d\.]+./, ie]]
452
+ ],
453
+ cpu: [
454
+ [
455
+ /\b((amd|x|x86[-_]?|wow|win)64)\b/i
456
+ // AMD64 (x64)
457
+ ],
458
+ [[A, "amd64"]],
459
+ [
460
+ /(ia32(?=;))/i,
461
+ // IA32 (quicktime)
462
+ /\b((i[346]|x)86)(pc)?\b/i
463
+ // IA32 (x86)
464
+ ],
465
+ [[A, "ia32"]],
466
+ [
467
+ /\b(aarch64|arm(v?[89]e?l?|_?64))\b/i
468
+ // ARM64
469
+ ],
470
+ [[A, "arm64"]],
471
+ [
472
+ /\b(arm(v[67])?ht?n?[fl]p?)\b/i
473
+ // ARMHF
474
+ ],
475
+ [[A, "armhf"]],
476
+ [
477
+ // PocketPC mistakenly identified as PowerPC
478
+ /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i
479
+ ],
480
+ [[A, "arm"]],
481
+ [
482
+ /((ppc|powerpc)(64)?)( mac|;|\))/i
483
+ // PowerPC
484
+ ],
485
+ [[A, /ower/, ie, D]],
486
+ [
487
+ / sun4\w[;\)]/i
488
+ // SPARC
489
+ ],
490
+ [[A, "sparc"]],
491
+ [
492
+ /\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i
493
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
494
+ ],
495
+ [[A, D]]
496
+ ],
497
+ device: [
498
+ [
499
+ //////////////////////////
500
+ // MOBILES & TABLETS
501
+ /////////////////////////
502
+ // Samsung
503
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
504
+ ],
505
+ [i, [o, ne], [e, g]],
506
+ [
507
+ /\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
508
+ /samsung[- ]((?!sm-[lr])[-\w]+)/i,
509
+ /sec-(sgh\w+)/i
510
+ ],
511
+ [i, [o, ne], [e, w]],
512
+ [
513
+ // Apple
514
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
515
+ // iPod/iPhone
516
+ ],
517
+ [i, [o, X], [e, w]],
518
+ [
519
+ /\((ipad);[-\w\),; ]+apple/i,
520
+ // iPad
521
+ /applecoremedia\/[\w\.]+ \((ipad)/i,
522
+ /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
523
+ ],
524
+ [i, [o, X], [e, g]],
525
+ [
526
+ /(macintosh);/i
527
+ ],
528
+ [i, [o, X]],
529
+ [
530
+ // Sharp
531
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
532
+ ],
533
+ [i, [o, ni], [e, w]],
534
+ [
535
+ // Honor
536
+ /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i
537
+ ],
538
+ [i, [o, ai], [e, g]],
539
+ [
540
+ /honor([-\w ]+)[;\)]/i
541
+ ],
542
+ [i, [o, ai], [e, w]],
543
+ [
544
+ // Huawei
545
+ /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i
546
+ ],
547
+ [i, [o, oi], [e, g]],
548
+ [
549
+ /(?:huawei)([-\w ]+)[;\)]/i,
550
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
551
+ ],
552
+ [i, [o, oi], [e, w]],
553
+ [
554
+ // Xiaomi
555
+ /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,
556
+ /\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i
557
+ // Mi Pad tablets
558
+ ],
559
+ [[i, /_/g, " "], [o, Te], [e, g]],
560
+ [
561
+ /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
562
+ // Xiaomi POCO
563
+ /\b; (\w+) build\/hm\1/i,
564
+ // Xiaomi Hongmi 'numeric' models
565
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
566
+ // Xiaomi Hongmi
567
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
568
+ // Xiaomi Redmi
569
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
570
+ // Xiaomi Redmi 'numeric' models
571
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,
572
+ // Xiaomi Mi
573
+ / ([\w ]+) miui\/v?\d/i
574
+ ],
575
+ [[i, /_/g, " "], [o, Te], [e, w]],
576
+ [
577
+ // OPPO
578
+ /; (\w+) bui.+ oppo/i,
579
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
580
+ ],
581
+ [i, [o, Ie], [e, w]],
582
+ [
583
+ /\b(opd2(\d{3}a?))(?: bui|\))/i
584
+ ],
585
+ [i, [o, V, { OnePlus: ["304", "403", "203"], "*": Ie }], [e, g]],
586
+ [
587
+ // BLU Vivo Series
588
+ /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
589
+ ],
590
+ [i, [o, "BLU"], [e, w]],
591
+ [
592
+ // Vivo
593
+ /; vivo (\w+)(?: bui|\))/i,
594
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
595
+ ],
596
+ [i, [o, "Vivo"], [e, w]],
597
+ [
598
+ // Realme
599
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
600
+ ],
601
+ [i, [o, "Realme"], [e, w]],
602
+ [
603
+ // Motorola
604
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
605
+ /\bmot(?:orola)?[- ](\w*)/i,
606
+ /((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
607
+ ],
608
+ [i, [o, Oe], [e, w]],
609
+ [
610
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
611
+ ],
612
+ [i, [o, Oe], [e, g]],
613
+ [
614
+ // LG
615
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
616
+ ],
617
+ [i, [o, ve], [e, g]],
618
+ [
619
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
620
+ /\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
621
+ /\blg-?([\d\w]+) bui/i
622
+ ],
623
+ [i, [o, ve], [e, w]],
624
+ [
625
+ // Lenovo
626
+ /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
627
+ /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
628
+ ],
629
+ [i, [o, ri], [e, g]],
630
+ [
631
+ // Nokia
632
+ /(nokia) (t[12][01])/i
633
+ ],
634
+ [o, i, [e, g]],
635
+ [
636
+ /(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,
637
+ /nokia[-_ ]?(([-\w\. ]*))/i
638
+ ],
639
+ [[i, /_/g, " "], [e, w], [o, "Nokia"]],
640
+ [
641
+ // Google
642
+ /(pixel (c|tablet))\b/i
643
+ // Google Pixel C/Tablet
644
+ ],
645
+ [i, [o, j], [e, g]],
646
+ [
647
+ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
648
+ // Google Pixel
649
+ ],
650
+ [i, [o, j], [e, w]],
651
+ [
652
+ // Sony
653
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
654
+ ],
655
+ [i, [o, le], [e, w]],
656
+ [
657
+ /sony tablet [ps]/i,
658
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
659
+ ],
660
+ [[i, "Xperia Tablet"], [o, le], [e, g]],
661
+ [
662
+ // OnePlus
663
+ / (kb2005|in20[12]5|be20[12][59])\b/i,
664
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
665
+ ],
666
+ [i, [o, si], [e, w]],
667
+ [
668
+ // Amazon
669
+ /(alexa)webm/i,
670
+ /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,
671
+ // Kindle Fire without Silk / Echo Show
672
+ /(kf[a-z]+)( bui|\)).+silk\//i
673
+ // Kindle Fire HD
674
+ ],
675
+ [i, [o, ge], [e, g]],
676
+ [
677
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
678
+ // Fire Phone
679
+ ],
680
+ [[i, /(.+)/g, "Fire Phone $1"], [o, ge], [e, w]],
681
+ [
682
+ // BlackBerry
683
+ /(playbook);[-\w\),; ]+(rim)/i
684
+ // BlackBerry PlayBook
685
+ ],
686
+ [i, o, [e, g]],
687
+ [
688
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
689
+ /\(bb10; (\w+)/i
690
+ // BlackBerry 10
691
+ ],
692
+ [i, [o, ti], [e, w]],
693
+ [
694
+ // Asus
695
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
696
+ ],
697
+ [i, [o, ii], [e, g]],
698
+ [
699
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
700
+ ],
701
+ [i, [o, ii], [e, w]],
702
+ [
703
+ // HTC
704
+ /(nexus 9)/i
705
+ // HTC Nexus 9
706
+ ],
707
+ [i, [o, "HTC"], [e, g]],
708
+ [
709
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
710
+ // HTC
711
+ // ZTE
712
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
713
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
714
+ // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
715
+ ],
716
+ [o, [i, /_/g, " "], [e, w]],
717
+ [
718
+ // TCL
719
+ /tcl (xess p17aa)/i,
720
+ /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i
721
+ ],
722
+ [i, [o, "TCL"], [e, g]],
723
+ [
724
+ /droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i
725
+ ],
726
+ [i, [o, "TCL"], [e, w]],
727
+ [
728
+ // itel
729
+ /(itel) ((\w+))/i
730
+ ],
731
+ [[o, D], i, [e, V, { tablet: ["p10001l", "w7001"], "*": "mobile" }]],
732
+ [
733
+ // Acer
734
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
735
+ ],
736
+ [i, [o, "Acer"], [e, g]],
737
+ [
738
+ // Meizu
739
+ /droid.+; (m[1-5] note) bui/i,
740
+ /\bmz-([-\w]{2,})/i
741
+ ],
742
+ [i, [o, "Meizu"], [e, w]],
743
+ [
744
+ // Ulefone
745
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
746
+ ],
747
+ [i, [o, "Ulefone"], [e, w]],
748
+ [
749
+ // Energizer
750
+ /; (energy ?\w+)(?: bui|\))/i,
751
+ /; energizer ([\w ]+)(?: bui|\))/i
752
+ ],
753
+ [i, [o, "Energizer"], [e, w]],
754
+ [
755
+ // Cat
756
+ /; cat (b35);/i,
757
+ /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
758
+ ],
759
+ [i, [o, "Cat"], [e, w]],
760
+ [
761
+ // Smartfren
762
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i
763
+ ],
764
+ [i, [o, "Smartfren"], [e, w]],
765
+ [
766
+ // Nothing
767
+ /droid.+; (a(?:015|06[35]|142p?))/i
768
+ ],
769
+ [i, [o, "Nothing"], [e, w]],
770
+ [
771
+ // Archos
772
+ /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
773
+ /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
774
+ ],
775
+ [i, [o, "Archos"], [e, g]],
776
+ [
777
+ /archos ([\w ]+)( b|\))/i,
778
+ /; (ac[3-6]\d\w{2,8})( b|\))/i
779
+ ],
780
+ [i, [o, "Archos"], [e, w]],
781
+ [
782
+ // MIXED
783
+ /(imo) (tab \w+)/i,
784
+ // IMO
785
+ /(infinix) (x1101b?)/i
786
+ // Infinix XPad
787
+ ],
788
+ [o, i, [e, g]],
789
+ [
790
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
791
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
792
+ /; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
793
+ // BLU/HMD/IMO/TCL
794
+ /(hp) ([\w ]+\w)/i,
795
+ // HP iPAQ
796
+ /(microsoft); (lumia[\w ]+)/i,
797
+ // Microsoft Lumia
798
+ /(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,
799
+ // Lenovo
800
+ /(oppo) ?([\w ]+) bui/i
801
+ // OPPO
802
+ ],
803
+ [o, i, [e, w]],
804
+ [
805
+ /(kobo)\s(ereader|touch)/i,
806
+ // Kobo
807
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
808
+ // HP TouchPad
809
+ /(kindle)\/([\w\.]+)/i
810
+ // Kindle
811
+ ],
812
+ [o, i, [e, g]],
813
+ [
814
+ /(surface duo)/i
815
+ // Surface Duo
816
+ ],
817
+ [i, [o, Re], [e, g]],
818
+ [
819
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i
820
+ // Fairphone
821
+ ],
822
+ [i, [o, "Fairphone"], [e, w]],
823
+ [
824
+ /((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i
825
+ // Nvidia Tablets
826
+ ],
827
+ [i, [o, Ce], [e, g]],
828
+ [
829
+ /(sprint) (\w+)/i
830
+ // Sprint Phones
831
+ ],
832
+ [o, i, [e, w]],
833
+ [
834
+ /(kin\.[onetw]{3})/i
835
+ // Microsoft Kin
836
+ ],
837
+ [[i, /\./g, " "], [o, Re], [e, w]],
838
+ [
839
+ /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
840
+ // Zebra
841
+ ],
842
+ [i, [o, Me], [e, g]],
843
+ [
844
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
845
+ ],
846
+ [i, [o, Me], [e, w]],
847
+ [
848
+ ///////////////////
849
+ // SMARTTVS
850
+ ///////////////////
851
+ /smart-tv.+(samsung)/i
852
+ // Samsung
853
+ ],
854
+ [o, [e, k]],
855
+ [
856
+ /hbbtv.+maple;(\d+)/i
857
+ ],
858
+ [[i, /^/, "SmartTV"], [o, ne], [e, k]],
859
+ [
860
+ /tcast.+(lg)e?. ([-\w]+)/i
861
+ // LG SmartTV
862
+ ],
863
+ [o, i, [e, k]],
864
+ [
865
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
866
+ ],
867
+ [[o, ve], [e, k]],
868
+ [
869
+ /(apple) ?tv/i
870
+ // Apple TV
871
+ ],
872
+ [o, [i, X + " TV"], [e, k]],
873
+ [
874
+ /crkey.*devicetype\/chromecast/i
875
+ // Google Chromecast Third Generation
876
+ ],
877
+ [[i, H + " Third Generation"], [o, j], [e, k]],
878
+ [
879
+ /crkey.*devicetype\/([^/]*)/i
880
+ // Google Chromecast with specific device type
881
+ ],
882
+ [[i, /^/, "Chromecast "], [o, j], [e, k]],
883
+ [
884
+ /fuchsia.*crkey/i
885
+ // Google Chromecast Nest Hub
886
+ ],
887
+ [[i, H + " Nest Hub"], [o, j], [e, k]],
888
+ [
889
+ /crkey/i
890
+ // Google Chromecast, Linux-based or unknown
891
+ ],
892
+ [[i, H], [o, j], [e, k]],
893
+ [
894
+ /(portaltv)/i
895
+ // Facebook Portal TV
896
+ ],
897
+ [i, [o, De], [e, k]],
898
+ [
899
+ /droid.+aft(\w+)( bui|\))/i
900
+ // Fire TV
901
+ ],
902
+ [i, [o, ge], [e, k]],
903
+ [
904
+ /(shield \w+ tv)/i
905
+ // Nvidia Shield TV
906
+ ],
907
+ [i, [o, Ce], [e, k]],
908
+ [
909
+ /\(dtv[\);].+(aquos)/i,
910
+ /(aquos-tv[\w ]+)\)/i
911
+ // Sharp
912
+ ],
913
+ [i, [o, ni], [e, k]],
914
+ [
915
+ /(bravia[\w ]+)( bui|\))/i
916
+ // Sony
917
+ ],
918
+ [i, [o, le], [e, k]],
919
+ [
920
+ /(mi(tv|box)-?\w+) bui/i
921
+ // Xiaomi
922
+ ],
923
+ [i, [o, Te], [e, k]],
924
+ [
925
+ /Hbbtv.*(technisat) (.*);/i
926
+ // TechniSAT
927
+ ],
928
+ [o, i, [e, k]],
929
+ [
930
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
931
+ // Roku
932
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
933
+ // HbbTV devices
934
+ ],
935
+ [[o, fe], [i, fe], [e, k]],
936
+ [
937
+ // SmartTV from Unidentified Vendors
938
+ /droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i
939
+ ],
940
+ [i, [e, k]],
941
+ [
942
+ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
943
+ ],
944
+ [[e, k]],
945
+ [
946
+ ///////////////////
947
+ // CONSOLES
948
+ ///////////////////
949
+ /(ouya)/i,
950
+ // Ouya
951
+ /(nintendo) (\w+)/i
952
+ // Nintendo
953
+ ],
954
+ [o, i, [e, be]],
955
+ [
956
+ /droid.+; (shield)( bui|\))/i
957
+ // Nvidia Portable
958
+ ],
959
+ [i, [o, Ce], [e, be]],
960
+ [
961
+ /(playstation \w+)/i
962
+ // Playstation
963
+ ],
964
+ [i, [o, le], [e, be]],
965
+ [
966
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
967
+ // Microsoft Xbox
968
+ ],
969
+ [i, [o, Re], [e, be]],
970
+ [
971
+ ///////////////////
972
+ // WEARABLES
973
+ ///////////////////
974
+ /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i
975
+ // Samsung Galaxy Watch
976
+ ],
977
+ [i, [o, ne], [e, I]],
978
+ [
979
+ /((pebble))app/i,
980
+ // Pebble
981
+ /(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i
982
+ // Asus ZenWatch / LG Watch / Pixel Watch
983
+ ],
984
+ [o, i, [e, I]],
985
+ [
986
+ /(ow(?:19|20)?we?[1-3]{1,3})/i
987
+ // Oppo Watch
988
+ ],
989
+ [i, [o, Ie], [e, I]],
990
+ [
991
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
992
+ // Apple Watch
993
+ ],
994
+ [i, [o, X], [e, I]],
995
+ [
996
+ /(opwwe\d{3})/i
997
+ // OnePlus Watch
998
+ ],
999
+ [i, [o, si], [e, I]],
1000
+ [
1001
+ /(moto 360)/i
1002
+ // Motorola 360
1003
+ ],
1004
+ [i, [o, Oe], [e, I]],
1005
+ [
1006
+ /(smartwatch 3)/i
1007
+ // Sony SmartWatch
1008
+ ],
1009
+ [i, [o, le], [e, I]],
1010
+ [
1011
+ /(g watch r)/i
1012
+ // LG G Watch R
1013
+ ],
1014
+ [i, [o, ve], [e, I]],
1015
+ [
1016
+ /droid.+; (wt63?0{2,3})\)/i
1017
+ ],
1018
+ [i, [o, Me], [e, I]],
1019
+ [
1020
+ ///////////////////
1021
+ // XR
1022
+ ///////////////////
1023
+ /droid.+; (glass) \d/i
1024
+ // Google Glass
1025
+ ],
1026
+ [i, [o, j], [e, Ae]],
1027
+ [
1028
+ /(pico) (4|neo3(?: link|pro)?)/i
1029
+ // Pico
1030
+ ],
1031
+ [o, i, [e, Ae]],
1032
+ [
1033
+ /(quest( \d| pro)?s?).+vr/i
1034
+ // Meta Quest
1035
+ ],
1036
+ [i, [o, De], [e, Ae]],
1037
+ [
1038
+ ///////////////////
1039
+ // EMBEDDED
1040
+ ///////////////////
1041
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
1042
+ // Tesla
1043
+ ],
1044
+ [o, [e, me]],
1045
+ [
1046
+ /(aeobc)\b/i
1047
+ // Echo Dot
1048
+ ],
1049
+ [i, [o, ge], [e, me]],
1050
+ [
1051
+ /(homepod).+mac os/i
1052
+ // Apple HomePod
1053
+ ],
1054
+ [i, [o, X], [e, me]],
1055
+ [
1056
+ /windows iot/i
1057
+ ],
1058
+ [[e, me]],
1059
+ [
1060
+ ////////////////////
1061
+ // MIXED (GENERIC)
1062
+ ///////////////////
1063
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i
1064
+ ],
1065
+ [i, [e, V, { mobile: "Mobile", xr: "VR", "*": g }]],
1066
+ [
1067
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
1068
+ // Unidentifiable Tablet
1069
+ ],
1070
+ [[e, g]],
1071
+ [
1072
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
1073
+ // Unidentifiable Mobile
1074
+ ],
1075
+ [[e, w]],
1076
+ [
1077
+ /droid .+?; ([\w\. -]+)( bui|\))/i
1078
+ // Generic Android Device
1079
+ ],
1080
+ [i, [o, "Generic"]]
1081
+ ],
1082
+ engine: [
1083
+ [
1084
+ /windows.+ edge\/([\w\.]+)/i
1085
+ // EdgeHTML
1086
+ ],
1087
+ [a, [r, Bi + "HTML"]],
1088
+ [
1089
+ /(arkweb)\/([\w\.]+)/i
1090
+ // ArkWeb
1091
+ ],
1092
+ [r, a],
1093
+ [
1094
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
1095
+ // Blink
1096
+ ],
1097
+ [a, [r, "Blink"]],
1098
+ [
1099
+ /(presto)\/([\w\.]+)/i,
1100
+ // Presto
1101
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,
1102
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
1103
+ /ekioh(flow)\/([\w\.]+)/i,
1104
+ // Flow
1105
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
1106
+ // KHTML/Tasman/Links
1107
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
1108
+ // iCab
1109
+ /\b(libweb)/i
1110
+ // LibWeb
1111
+ ],
1112
+ [r, a],
1113
+ [
1114
+ /ladybird\//i
1115
+ ],
1116
+ [[r, "LibWeb"]],
1117
+ [
1118
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i
1119
+ // Gecko
1120
+ ],
1121
+ [a, r]
1122
+ ],
1123
+ os: [
1124
+ [
1125
+ // Windows
1126
+ /microsoft (windows) (vista|xp)/i
1127
+ // Windows (iTunes)
1128
+ ],
1129
+ [r, a],
1130
+ [
1131
+ /(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i
1132
+ // Windows Phone
1133
+ ],
1134
+ [r, [a, V, ci]],
1135
+ [
1136
+ /windows nt 6\.2; (arm)/i,
1137
+ // Windows RT
1138
+ /windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,
1139
+ /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
1140
+ ],
1141
+ [[a, V, ci], [r, Ne]],
1142
+ [
1143
+ // iOS/macOS
1144
+ /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
1145
+ // iOS
1146
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
1147
+ /cfnetwork\/.+darwin/i
1148
+ ],
1149
+ [[a, /_/g, "."], [r, "iOS"]],
1150
+ [
1151
+ /(mac os x) ?([\w\. ]*)/i,
1152
+ /(macintosh|mac_powerpc\b)(?!.+haiku)/i
1153
+ // Mac OS
1154
+ ],
1155
+ [[r, "macOS"], [a, /_/g, "."]],
1156
+ [
1157
+ // Google Chromecast
1158
+ /android ([\d\.]+).*crkey/i
1159
+ // Google Chromecast, Android-based
1160
+ ],
1161
+ [a, [r, H + " Android"]],
1162
+ [
1163
+ /fuchsia.*crkey\/([\d\.]+)/i
1164
+ // Google Chromecast, Fuchsia-based
1165
+ ],
1166
+ [a, [r, H + " Fuchsia"]],
1167
+ [
1168
+ /crkey\/([\d\.]+).*devicetype\/smartspeaker/i
1169
+ // Google Chromecast, Linux-based Smart Speaker
1170
+ ],
1171
+ [a, [r, H + " SmartSpeaker"]],
1172
+ [
1173
+ /linux.*crkey\/([\d\.]+)/i
1174
+ // Google Chromecast, Legacy Linux-based
1175
+ ],
1176
+ [a, [r, H + " Linux"]],
1177
+ [
1178
+ /crkey\/([\d\.]+)/i
1179
+ // Google Chromecast, unknown
1180
+ ],
1181
+ [a, [r, H]],
1182
+ [
1183
+ // Mobile OSes
1184
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
1185
+ // Android-x86/HarmonyOS
1186
+ ],
1187
+ [a, r],
1188
+ [
1189
+ /(ubuntu) ([\w\.]+) like android/i
1190
+ // Ubuntu Touch
1191
+ ],
1192
+ [[r, /(.+)/, "$1 Touch"], a],
1193
+ [
1194
+ // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
1195
+ /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i
1196
+ ],
1197
+ [r, a],
1198
+ [
1199
+ /\(bb(10);/i
1200
+ // BlackBerry 10
1201
+ ],
1202
+ [a, [r, ti]],
1203
+ [
1204
+ /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i
1205
+ // Symbian
1206
+ ],
1207
+ [a, [r, "Symbian"]],
1208
+ [
1209
+ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
1210
+ // Firefox OS
1211
+ ],
1212
+ [a, [r, de + " OS"]],
1213
+ [
1214
+ /web0s;.+rt(tv)/i,
1215
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
1216
+ // WebOS
1217
+ ],
1218
+ [a, [r, "webOS"]],
1219
+ [
1220
+ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
1221
+ // watchOS
1222
+ ],
1223
+ [a, [r, "watchOS"]],
1224
+ [
1225
+ // Google ChromeOS
1226
+ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
1227
+ // Chromium OS
1228
+ ],
1229
+ [[r, "Chrome OS"], a],
1230
+ [
1231
+ // Smart TVs
1232
+ /panasonic;(viera)/i,
1233
+ // Panasonic Viera
1234
+ /(netrange)mmh/i,
1235
+ // Netrange
1236
+ /(nettv)\/(\d+\.[\w\.]+)/i,
1237
+ // NetTV
1238
+ // Console
1239
+ /(nintendo|playstation) (\w+)/i,
1240
+ // Nintendo/Playstation
1241
+ /(xbox); +xbox ([^\);]+)/i,
1242
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
1243
+ /(pico) .+os([\w\.]+)/i,
1244
+ // Pico
1245
+ // Other
1246
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
1247
+ // Joli/Palm
1248
+ /(mint)[\/\(\) ]?(\w*)/i,
1249
+ // Mint
1250
+ /(mageia|vectorlinux)[; ]/i,
1251
+ // Mageia/VectorLinux
1252
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1253
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
1254
+ /(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,
1255
+ // Hurd/Linux
1256
+ /(gnu) ?([\w\.]*)/i,
1257
+ // GNU
1258
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
1259
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1260
+ /(haiku) (\w+)/i
1261
+ // Haiku
1262
+ ],
1263
+ [r, a],
1264
+ [
1265
+ /(sunos) ?([\w\.\d]*)/i
1266
+ // Solaris
1267
+ ],
1268
+ [[r, "Solaris"], a],
1269
+ [
1270
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1271
+ // Solaris
1272
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
1273
+ // AIX
1274
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
1275
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
1276
+ /(unix) ?([\w\.]*)/i
1277
+ // UNIX
1278
+ ],
1279
+ [r, a]
1280
+ ]
1281
+ }, ye = function() {
1282
+ var t = { init: {}, isIgnore: {}, isIgnoreRgx: {}, toString: {} };
1283
+ return L.call(t.init, [
1284
+ [E, [r, a, pe, e]],
1285
+ [M, [A]],
1286
+ [T, [e, i, o]],
1287
+ [C, [r, a]],
1288
+ [O, [r, a]]
1289
+ ]), L.call(t.isIgnore, [
1290
+ [E, [a, pe]],
1291
+ [C, [a]],
1292
+ [O, [a]]
1293
+ ]), L.call(t.isIgnoreRgx, [
1294
+ [E, / ?browser$/i],
1295
+ [O, / ?os$/i]
1296
+ ]), L.call(t.toString, [
1297
+ [E, [r, a]],
1298
+ [M, [A]],
1299
+ [T, [o, i]],
1300
+ [C, [r, a]],
1301
+ [O, [r, a]]
1302
+ ]), t;
1303
+ }(), Gi = function(t, n) {
1304
+ var s = ye.init[n], m = ye.isIgnore[n] || 0, l = ye.isIgnoreRgx[n] || 0, p = ye.toString[n] || 0;
1305
+ function u() {
1306
+ L.call(this, s);
1307
+ }
1308
+ return u.prototype.getItem = function() {
1309
+ return t;
1310
+ }, u.prototype.withClientHints = function() {
1311
+ return F ? F.getHighEntropyValues(hi).then(function(c) {
1312
+ return t.setCH(new gi(c, !1)).parseCH().get();
1313
+ }) : t.parseCH().get();
1314
+ }, u.prototype.withFeatureCheck = function() {
1315
+ return t.detectFeature().get();
1316
+ }, n != Z && (u.prototype.is = function(c) {
1317
+ var d = !1;
1318
+ for (var y in this)
1319
+ if (this.hasOwnProperty(y) && !Be(m, y) && D(l ? oe(l, this[y]) : this[y]) == D(l ? oe(l, c) : c)) {
1320
+ if (d = !0, c != N) break;
1321
+ } else if (c == N && d) {
1322
+ d = !d;
1323
+ break;
1324
+ }
1325
+ return d;
1326
+ }, u.prototype.toString = function() {
1327
+ var c = ie;
1328
+ for (var d in p)
1329
+ typeof this[p[d]] !== N && (c += (c ? " " : ie) + this[p[d]]);
1330
+ return c || N;
1331
+ }), F || (u.prototype.then = function(c) {
1332
+ var d = this, y = function() {
1333
+ for (var S in d)
1334
+ d.hasOwnProperty(S) && (this[S] = d[S]);
1335
+ };
1336
+ y.prototype = {
1337
+ is: u.prototype.is,
1338
+ toString: u.prototype.toString
1339
+ };
1340
+ var v = new y();
1341
+ return c(v), v;
1342
+ }), new u();
1343
+ };
1344
+ function gi(t, n) {
1345
+ if (t = t || {}, L.call(this, hi), n)
1346
+ L.call(this, [
1347
+ [Ge, Le(t[B])],
1348
+ [Ye, Le(t[Ui])],
1349
+ [w, /\?1/.test(t[Fi])],
1350
+ [i, we(t[Vi])],
1351
+ [ee, we(t[fi])],
1352
+ [je, we(t[Ni])],
1353
+ [A, we(t[Hi])],
1354
+ [W, Le(t[Pi])],
1355
+ [Se, we(t[qi])]
1356
+ ]);
1357
+ else
1358
+ for (var s in t)
1359
+ this.hasOwnProperty(s) && typeof t[s] !== N && (this[s] = t[s]);
1360
+ }
1361
+ function mi(t, n, s, m) {
1362
+ return this.get = function(l) {
1363
+ return l ? this.data.hasOwnProperty(l) ? this.data[l] : void 0 : this.data;
1364
+ }, this.set = function(l, p) {
1365
+ return this.data[l] = p, this;
1366
+ }, this.setCH = function(l) {
1367
+ return this.uaCH = l, this;
1368
+ }, this.detectFeature = function() {
1369
+ if (R && R.userAgent == this.ua)
1370
+ switch (this.itemType) {
1371
+ case E:
1372
+ R.brave && typeof R.brave.isBrave == ke && this.set(r, "Brave");
1373
+ break;
1374
+ case T:
1375
+ !this.get(e) && F && F[w] && this.set(e, w), this.get(i) == "Macintosh" && R && typeof R.standalone !== N && R.maxTouchPoints && R.maxTouchPoints > 2 && this.set(i, "iPad").set(e, g);
1376
+ break;
1377
+ case O:
1378
+ !this.get(r) && F && F[ee] && this.set(r, F[ee]);
1379
+ break;
1380
+ case Z:
1381
+ var l = this.data, p = function(u) {
1382
+ return l[u].getItem().detectFeature().get();
1383
+ };
1384
+ this.set(E, p(E)).set(M, p(M)).set(T, p(T)).set(C, p(C)).set(O, p(O));
1385
+ }
1386
+ return this;
1387
+ }, this.parseUA = function() {
1388
+ return this.itemType != Z && He.call(this.data, this.ua, this.rgxMap), this.itemType == E && this.set(pe, Ue(this.get(a))), this;
1389
+ }, this.parseCH = function() {
1390
+ var l = this.uaCH, p = this.rgxMap;
1391
+ switch (this.itemType) {
1392
+ case E:
1393
+ case C:
1394
+ var u = l[Ye] || l[Ge], c;
1395
+ if (u)
1396
+ for (var d in u) {
1397
+ var y = u[d].brand || u[d], v = u[d].version;
1398
+ this.itemType == E && !/not.a.brand/i.test(y) && (!c || /chrom/i.test(c) && y != di) && (y = V(y, {
1399
+ Chrome: "Google Chrome",
1400
+ Edge: "Microsoft Edge",
1401
+ "Chrome WebView": "Android WebView",
1402
+ "Chrome Headless": "HeadlessChrome",
1403
+ "Huawei Browser": "HuaweiBrowser",
1404
+ "MIUI Browser": "Miui Browser",
1405
+ "Opera Mobi": "OperaMobile",
1406
+ Yandex: "YaBrowser"
1407
+ }), this.set(r, y).set(a, v).set(pe, Ue(v)), c = y), this.itemType == C && y == di && this.set(a, v);
1408
+ }
1409
+ break;
1410
+ case M:
1411
+ var S = l[A];
1412
+ S && (S && l[Se] == "64" && (S += "64"), He.call(this.data, S + ";", p));
1413
+ break;
1414
+ case T:
1415
+ if (l[w] && this.set(e, w), l[i] && (this.set(i, l[i]), !this.get(e) || !this.get(o))) {
1416
+ var z = {};
1417
+ He.call(z, "droid 9; " + l[i] + ")", p), !this.get(e) && z.type && this.set(e, z.type), !this.get(o) && z.vendor && this.set(o, z.vendor);
1418
+ }
1419
+ if (l[W]) {
1420
+ var b;
1421
+ if (typeof l[W] != "string")
1422
+ for (var f = 0; !b && f < l[W].length; )
1423
+ b = V(l[W][f++], wi);
1424
+ else
1425
+ b = V(l[W], wi);
1426
+ this.set(e, b);
1427
+ }
1428
+ break;
1429
+ case O:
1430
+ var $ = l[ee];
1431
+ if ($) {
1432
+ var _ = l[je];
1433
+ $ == Ne && (_ = parseInt(Ue(_), 10) >= 13 ? "11" : "10"), this.set(r, $).set(a, _);
1434
+ }
1435
+ this.get(r) == Ne && l[i] == "Xbox" && this.set(r, "Xbox").set(a, void 0);
1436
+ break;
1437
+ case Z:
1438
+ var vi = this.data, ae = function(yi) {
1439
+ return vi[yi].getItem().setCH(l).parseCH().get();
1440
+ };
1441
+ this.set(E, ae(E)).set(M, ae(M)).set(T, ae(T)).set(C, ae(C)).set(O, ae(O));
1442
+ }
1443
+ return this;
1444
+ }, L.call(this, [
1445
+ ["itemType", t],
1446
+ ["ua", n],
1447
+ ["uaCH", m],
1448
+ ["rgxMap", s],
1449
+ ["data", Gi(this, t)]
1450
+ ]), this;
1451
+ }
1452
+ function U(t, n, s) {
1453
+ if (typeof t === te ? (_e(t, !0) ? (typeof n === te && (s = n), n = t) : (s = t, n = void 0), t = void 0) : typeof t === Ve && !_e(n, !0) && (s = n, n = void 0), s && typeof s.append === ke) {
1454
+ var m = {};
1455
+ s.forEach(function(d, y) {
1456
+ m[y] = d;
1457
+ }), s = m;
1458
+ }
1459
+ if (!(this instanceof U))
1460
+ return new U(t, n, s).getResult();
1461
+ var l = typeof t === Ve ? t : (
1462
+ // Passed user-agent string
1463
+ s && s[Ze] ? s[Ze] : (
1464
+ // User-Agent from passed headers
1465
+ R && R.userAgent ? R.userAgent : (
1466
+ // navigator.userAgent
1467
+ ie
1468
+ )
1469
+ )
1470
+ ), p = new gi(s, !0), u = n ? $i(bi, n) : bi, c = function(d) {
1471
+ return d == Z ? function() {
1472
+ return new mi(d, l, u, p).set("ua", l).set(E, this.getBrowser()).set(M, this.getCPU()).set(T, this.getDevice()).set(C, this.getEngine()).set(O, this.getOS()).get();
1473
+ } : function() {
1474
+ return new mi(d, l, u[d], p).parseUA().get();
1475
+ };
1476
+ };
1477
+ return L.call(this, [
1478
+ ["getBrowser", c(E)],
1479
+ ["getCPU", c(M)],
1480
+ ["getDevice", c(T)],
1481
+ ["getEngine", c(C)],
1482
+ ["getOS", c(O)],
1483
+ ["getResult", c(Z)],
1484
+ ["getUA", function() {
1485
+ return l;
1486
+ }],
1487
+ ["setUA", function(d) {
1488
+ return re(d) && (l = d.length > Fe ? fe(d, Fe) : d), this;
1489
+ }]
1490
+ ]).setUA(l), this;
1491
+ }
1492
+ U.VERSION = Li;
1493
+ U.BROWSER = Ee([r, a, pe, e]);
1494
+ U.CPU = Ee([A]);
1495
+ U.DEVICE = Ee([i, o, e, be, w, k, g, I, me]);
1496
+ U.ENGINE = U.OS = Ee([r, a]);
1497
+ const Yi = { class: "space-y-16" }, ji = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Wi = { class: "fm-typo-en-body-md-600" }, Xi = { class: "mt-48" }, Ki = { class: "space-y-16" }, Ji = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Qi = {
1498
+ key: 0,
1499
+ class: "fm-typo-en-body-md-600"
1500
+ }, Zi = {
1501
+ key: 1,
1502
+ class: "fm-typo-en-body-md-600"
1503
+ }, et = { class: "mt-48" }, it = { class: "space-y-16" }, tt = { class: "fm-typo-en-body-md-600" }, ot = { class: "fm-typo-en-body-md-600" }, rt = /* @__PURE__ */ ze({
1504
+ __name: "AuditLogDetailSheet",
1505
+ props: {
1506
+ auditLog: {
1507
+ type: Object,
1508
+ required: !0
1509
+ }
1510
+ },
1511
+ setup(t, { expose: n }) {
1512
+ const s = xe(!0), m = [
1513
+ {
1514
+ label: "ID",
1515
+ key: "_id"
1516
+ },
1517
+ {
1518
+ label: "Module Type",
1519
+ getter: (c) => c.moduleType ? Pe.title(c.moduleType) : "-"
1520
+ },
1521
+ {
1522
+ label: "User ID",
1523
+ key: "user"
1524
+ },
1525
+ {
1526
+ label: "User Name",
1527
+ key: "userName"
1528
+ },
1529
+ {
1530
+ label: "User Phone No.",
1531
+ key: "userPhoneNumber"
1532
+ },
1533
+ {
1534
+ label: "Client IP",
1535
+ key: "clientIp"
1536
+ },
1537
+ {
1538
+ label: "Timestamp",
1539
+ getter: (c) => c.timestamp ? J(c.timestamp).format("D MMM YYYY, hh:mmA") : "-"
1540
+ }
1541
+ ], l = [
1542
+ {
1543
+ label: "Request Method",
1544
+ key: "httpMethod"
1545
+ },
1546
+ {
1547
+ label: "Request URL",
1548
+ getter: (c) => `${c.request.host}${c.request.url}`
1549
+ },
1550
+ {
1551
+ label: "User Agent",
1552
+ getter: (c) => U(c.request.userAgent),
1553
+ isJson: !0
1554
+ },
1555
+ {
1556
+ label: "Request Params",
1557
+ getter: (c) => c.request.params || "-",
1558
+ isJson: !0
1559
+ },
1560
+ {
1561
+ label: "Request Query",
1562
+ getter: (c) => c.request.query || "-",
1563
+ isJson: !0
1564
+ },
1565
+ {
1566
+ label: "Request Body",
1567
+ getter: (c) => c.request.body || "-",
1568
+ isJson: !0
1569
+ }
1570
+ ];
1571
+ function p() {
1572
+ s.value = !0;
1573
+ }
1574
+ function u() {
1575
+ s.value = !1;
1576
+ }
1577
+ return n({
1578
+ showSheet: p,
1579
+ hideSheet: u
1580
+ }), (c, d) => {
1581
+ const y = $e("FmSideSheet");
1582
+ return P(), pi(y, {
1583
+ modelValue: h(s),
1584
+ "onUpdate:modelValue": d[0] || (d[0] = (v) => xi(s) ? s.value = v : null),
1585
+ header: "Audit Log Detail",
1586
+ "dismiss-away": "",
1587
+ "close-button": !0,
1588
+ "max-width": 650
1589
+ }, {
1590
+ "side-sheet-footer": We(() => d[6] || (d[6] = [])),
1591
+ default: We(() => [
1592
+ x("div", null, [
1593
+ d[1] || (d[1] = x("div", { class: "fm-typo-en-title-sm-800 my-24" }, "Log Information", -1)),
1594
+ x("div", Yi, [
1595
+ (P(), Q(qe, null, Xe(m, (v, S) => x("div", { key: S }, [
1596
+ x("div", ji, G(v.label), 1),
1597
+ x("div", Wi, G((v.key ? t.auditLog[v.key] : v.getter(t.auditLog)) || "-"), 1)
1598
+ ])), 64))
1599
+ ])
1600
+ ]),
1601
+ x("div", Xi, [
1602
+ d[2] || (d[2] = x("div", { class: "fm-typo-en-title-sm-800 mb-24" }, "Request Detail", -1)),
1603
+ x("div", Ki, [
1604
+ (P(), Q(qe, null, Xe(l, (v, S) => x("div", { key: S }, [
1605
+ x("div", Ji, G(v.label), 1),
1606
+ v.isJson ? (P(), Q("pre", Zi, G(v.key ? t.auditLog.request[v.key] : v.getter(t.auditLog) || "-"), 1)) : (P(), Q("div", Qi, G(v.key ? t.auditLog.request[v.key] : v.getter(t.auditLog) || "-"), 1))
1607
+ ])), 64))
1608
+ ])
1609
+ ]),
1610
+ x("div", et, [
1611
+ d[5] || (d[5] = x("div", { class: "fm-typo-en-title-sm-800 mb-24" }, "Response Detail", -1)),
1612
+ x("div", it, [
1613
+ x("div", null, [
1614
+ d[3] || (d[3] = x("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, " Status Code ", -1)),
1615
+ x("div", tt, G(t.auditLog.response.statusCode || "-"), 1)
1616
+ ]),
1617
+ x("div", null, [
1618
+ d[4] || (d[4] = x("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, " Response Body ", -1)),
1619
+ x("pre", ot, G(t.auditLog.response.body || "-"), 1)
1620
+ ])
1621
+ ])
1622
+ ])
1623
+ ]),
1624
+ _: 1
1625
+ }, 8, ["modelValue"]);
1626
+ };
1627
+ }
1628
+ }), at = () => {
1629
+ const t = Ii.getBusinessId();
1630
+ if (!t) throw new Error("Invalid business ID");
1631
+ return Ti(`businesses/${t}/audit-logs`, {
1632
+ noIdRequired: !0
1633
+ });
1634
+ }, st = {
1635
+ async readAll(t, n) {
1636
+ const s = Ci(
1637
+ await at().get("", {
1638
+ params: { ...t, ...n }
1639
+ })
1640
+ );
1641
+ return {
1642
+ meta: s.meta,
1643
+ resources: s.resources
1644
+ };
1645
+ }
1646
+ }, nt = { class: "hidden xs:flex items-center justify-end" }, lt = { class: "flex items-center justify-between" }, dt = { class: "flex gap-8 items-center w-full overflow-x-scroll" }, ut = /* @__PURE__ */ ze({
1647
+ __name: "AuditLogsTable",
1648
+ setup(t) {
1649
+ const n = xe(), s = xe(), m = [
1650
+ {
1651
+ header: "Audit Log ID",
1652
+ accessorKey: "_id",
1653
+ meta: {
1654
+ maxWidth: "100px"
1655
+ },
1656
+ cell(b) {
1657
+ return Y("div", { class: "flex items-center" }, [
1658
+ Y(Ke.FmIcon, {
1659
+ name: "content_copy",
1660
+ outline: !0,
1661
+ size: "sm",
1662
+ class: "cursor-pointer mr-4",
1663
+ onClick: (f) => {
1664
+ f.preventDefault(), f.stopPropagation(), Je(b.row.original._id.toString());
1665
+ }
1666
+ }),
1667
+ Y(
1668
+ "div",
1669
+ { class: "pr-2 text-ellipsis overflow-hidden" },
1670
+ b.row.original._id.toString()
1671
+ )
1672
+ ]);
1673
+ },
1674
+ enableSorting: !1
1675
+ },
1676
+ {
1677
+ header: "Timestamp",
1678
+ accessorKey: "timestamp",
1679
+ accessorFn: (b) => J(Mi(b._id.toString())).format("D MMM YYYY, hh:mmA"),
1680
+ enableSorting: !0
1681
+ },
1682
+ {
1683
+ header: "Status",
1684
+ accessorKey: "response.statusCode",
1685
+ enableSorting: !1
1686
+ },
1687
+ {
1688
+ header: "Module Type",
1689
+ accessorKey: "moduleType",
1690
+ accessorFn: (b) => b.moduleType ? Pe.title(b.moduleType) : "-",
1691
+ enableSorting: !1
1692
+ },
1693
+ {
1694
+ header: "User ID",
1695
+ accessorKey: "user",
1696
+ cell(b) {
1697
+ return Y("div", { class: "flex items-center" }, [
1698
+ Y(Ke.FmIcon, {
1699
+ name: "content_copy",
1700
+ outline: !0,
1701
+ size: "sm",
1702
+ class: "cursor-pointer mr-4",
1703
+ onClick: (f) => {
1704
+ f.preventDefault(), f.stopPropagation(), Je(b.row.original.user);
1705
+ }
1706
+ }),
1707
+ Y(
1708
+ "div",
1709
+ { class: "pr-2 text-ellipsis overflow-hidden" },
1710
+ b.row.original.user
1711
+ )
1712
+ ]);
1713
+ },
1714
+ enableSorting: !1
1715
+ },
1716
+ {
1717
+ header: "User Name",
1718
+ accessorKey: "userName",
1719
+ enableSorting: !1
1720
+ },
1721
+ {
1722
+ header: "User Phone No.",
1723
+ accessorFn: (b) => b.userPhoneNumber || "-",
1724
+ enableSorting: !1
1725
+ },
1726
+ {
1727
+ header: "Request URL",
1728
+ meta: {
1729
+ maxWidth: "400px"
1730
+ },
1731
+ cell(b) {
1732
+ return Y(
1733
+ "div",
1734
+ { class: "break-words whitespace-normal" },
1735
+ `${b.row.original.request.host}${b.row.original.request.url}`
1736
+ );
1737
+ },
1738
+ accessorFn: (b) => `${b.request.host}${b.request.url}`,
1739
+ enableSorting: !1
1740
+ },
1741
+ {
1742
+ header: "Request Method",
1743
+ accessorKey: "request.httpMethod",
1744
+ enableSorting: !1
1745
+ },
1746
+ {
1747
+ header: "Client IP",
1748
+ accessorFn: (b) => b.clientIp || "-",
1749
+ enableSorting: !1
1750
+ }
1751
+ ], l = xe({
1752
+ search: "",
1753
+ dateRange: {
1754
+ startDate: J().subtract(7, "day").toISOString(),
1755
+ endDate: J().endOf("day").toISOString()
1756
+ },
1757
+ httpMethod: [],
1758
+ moduleType: []
1759
+ }), { tableMeta: p, rowData: u, onSort: c, debouncedFetchData: d, onSearch: y } = Ai(async (b) => {
1760
+ const f = {
1761
+ ...l.value,
1762
+ dateRange: {
1763
+ start: new Date(l.value.dateRange.startDate).toISOString(),
1764
+ end: new Date(l.value.dateRange.endDate).toISOString()
1765
+ }
1766
+ };
1767
+ return await st.readAll(b, f);
1768
+ }), v = [
1769
+ he.enum.POST,
1770
+ he.enum.PUT,
1771
+ he.enum.PATCH,
1772
+ he.enum.DELETE
1773
+ ].map((b) => ({ label: b, value: b })), S = Oi.options.map((b) => ({ label: Pe.title(b), value: b })).sort((b, f) => b.label.localeCompare(f.label));
1774
+ ki(
1775
+ l,
1776
+ () => {
1777
+ d();
1778
+ },
1779
+ { deep: !0 }
1780
+ );
1781
+ function z(b) {
1782
+ var f;
1783
+ s.value = b.original, (f = n == null ? void 0 : n.value) == null || f.showSheet();
1784
+ }
1785
+ return _i(async () => {
1786
+ await d();
1787
+ }), (b, f) => {
1788
+ const $ = $e("FmSearch");
1789
+ return P(), Q("div", null, [
1790
+ x("div", nt, [
1791
+ q($, {
1792
+ class: "hidden xs:flex",
1793
+ modelValue: h(l).search,
1794
+ "onUpdate:modelValue": f[0] || (f[0] = (_) => h(l).search = _),
1795
+ placeholder: "Search",
1796
+ collapsible: ""
1797
+ }, null, 8, ["modelValue"])
1798
+ ]),
1799
+ x("div", lt, [
1800
+ x("div", dt, [
1801
+ q(Qe, {
1802
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
1803
+ "right-icon": "keyboard_arrow_down",
1804
+ modelValue: h(l).moduleType,
1805
+ "onUpdate:modelValue": f[1] || (f[1] = (_) => h(l).moduleType = _),
1806
+ label: "Module Type: ",
1807
+ "show-item-label": !0,
1808
+ items: h(S)
1809
+ }, null, 8, ["modelValue", "items"]),
1810
+ q(Qe, {
1811
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
1812
+ "right-icon": "keyboard_arrow_down",
1813
+ modelValue: h(l).httpMethod,
1814
+ "onUpdate:modelValue": f[2] || (f[2] = (_) => h(l).httpMethod = _),
1815
+ label: "Request Method: ",
1816
+ "show-item-label": !0,
1817
+ items: h(v)
1818
+ }, null, 8, ["modelValue", "items"]),
1819
+ q(Ei, {
1820
+ "model-value": {
1821
+ startDate: h(l).dateRange.startDate,
1822
+ endDate: h(l).dateRange.endDate
1823
+ },
1824
+ "onUpdate:modelValue": f[3] || (f[3] = (_) => h(l).dateRange = {
1825
+ startDate: h(J)(_.startDate).startOf("d").toISOString(),
1826
+ endDate: h(J)(_.endDate).endOf("d").toISOString()
1827
+ })
1828
+ }, null, 8, ["model-value"])
1829
+ ]),
1830
+ q($, {
1831
+ class: "xs:hidden",
1832
+ modelValue: h(l).search,
1833
+ "onUpdate:modelValue": [
1834
+ f[4] || (f[4] = (_) => h(l).search = _),
1835
+ h(y)
1836
+ ],
1837
+ placeholder: "Search",
1838
+ collapsible: ""
1839
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
1840
+ ]),
1841
+ q(Ri, {
1842
+ loading: h(p).isLoading,
1843
+ "row-data": h(u),
1844
+ "row-count": h(p).totalRows,
1845
+ "column-defs": m,
1846
+ "page-count": h(p).pageCount,
1847
+ "page-index": h(p).pageIndex,
1848
+ "page-size": h(p).pageSize,
1849
+ "shrink-at": !1,
1850
+ onSortChange: h(c),
1851
+ onPageChange: f[5] || (f[5] = (_) => h(d)({
1852
+ pageSize: _.pageSize,
1853
+ pageIndex: _.pageIndex
1854
+ })),
1855
+ onRowClick: z
1856
+ }, null, 8, ["loading", "row-data", "row-count", "page-count", "page-index", "page-size", "onSortChange"]),
1857
+ h(s) ? (P(), pi(rt, {
1858
+ key: 0,
1859
+ ref_key: "sheetRef",
1860
+ ref: n,
1861
+ auditLog: h(s)
1862
+ }, null, 8, ["auditLog"])) : Si("", !0)
1863
+ ]);
1864
+ };
1865
+ }
1866
+ }), ct = { class: "px-24 flex flex-col gap-y-32 pb-24" }, At = /* @__PURE__ */ ze({
1867
+ __name: "AuditLogs",
1868
+ setup(t) {
1869
+ const { t: n } = Di();
1870
+ return (s, m) => {
1871
+ const l = $e("FmPageHead");
1872
+ return P(), Q(qe, null, [
1873
+ q(l, {
1874
+ title: h(n)("connect.auditLogs.title")
1875
+ }, null, 8, ["title"]),
1876
+ x("div", ct, [
1877
+ q(ut)
1878
+ ])
1879
+ ], 64);
1880
+ };
1881
+ }
1882
+ });
1883
+ export {
1884
+ At as default
1885
+ };