@oila/0account 3.4.7 → 3.4.9

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 (68) hide show
  1. package/dist/cjs/{index-1e526aba.js → index-ef57218a.js} +370 -67
  2. package/dist/cjs/index-ef57218a.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/loader.cjs.js.map +1 -1
  5. package/dist/cjs/qr-code_2.cjs.entry.js +358 -1278
  6. package/dist/cjs/qr-code_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/zero-account.cjs.js +2 -2
  8. package/dist/cjs/zero-account.cjs.js.map +1 -1
  9. package/dist/collection/collection-manifest.json +2 -2
  10. package/dist/collection/components/zero-account/enums.js +8 -8
  11. package/dist/collection/components/zero-account/enums.js.map +1 -1
  12. package/dist/collection/components/zero-account/logo.js +1 -1
  13. package/dist/collection/components/zero-account/logo.js.map +1 -1
  14. package/dist/collection/components/zero-account/qrcode.js +103 -103
  15. package/dist/collection/components/zero-account/qrcode.js.map +1 -1
  16. package/dist/collection/components/zero-account/websocket.js +149 -148
  17. package/dist/collection/components/zero-account/websocket.js.map +1 -1
  18. package/dist/collection/components/zero-account/zero-account.css +7 -0
  19. package/dist/collection/components/zero-account/zero-account.e2e.js +22 -22
  20. package/dist/collection/components/zero-account/zero-account.e2e.js.map +1 -1
  21. package/dist/collection/components/zero-account/zero-account.js +380 -379
  22. package/dist/collection/components/zero-account/zero-account.js.map +1 -1
  23. package/dist/collection/components/zero-account/zero-account.spec.js +13 -13
  24. package/dist/collection/components/zero-account/zero-account.spec.js.map +1 -1
  25. package/dist/collection/utils/request.js +37 -30
  26. package/dist/collection/utils/request.js.map +1 -1
  27. package/dist/collection/utils/utils.js +10 -10
  28. package/dist/collection/utils/utils.js.map +1 -1
  29. package/dist/collection/utils/utils.spec.js +6 -6
  30. package/dist/collection/utils/utils.spec.js.map +1 -1
  31. package/dist/components/index.d.ts +6 -0
  32. package/dist/components/index.js +1 -1
  33. package/dist/components/qr-code.d.ts +2 -2
  34. package/dist/components/qrcode.js +48 -48
  35. package/dist/components/qrcode.js.map +1 -1
  36. package/dist/components/zero-account.d.ts +2 -2
  37. package/dist/components/zero-account.js +359 -1279
  38. package/dist/components/zero-account.js.map +1 -1
  39. package/dist/esm/{index-09024c20.js → index-798be1d4.js} +370 -67
  40. package/dist/esm/index-798be1d4.js.map +1 -0
  41. package/dist/esm/loader.js +3 -3
  42. package/dist/esm/loader.js.map +1 -1
  43. package/dist/esm/qr-code_2.entry.js +358 -1278
  44. package/dist/esm/qr-code_2.entry.js.map +1 -1
  45. package/dist/esm/zero-account.js +3 -3
  46. package/dist/esm/zero-account.js.map +1 -1
  47. package/dist/types/components/zero-account/enums.d.ts +8 -8
  48. package/dist/types/components/zero-account/logo.d.ts +2 -2
  49. package/dist/types/components/zero-account/qrcode.d.ts +5 -5
  50. package/dist/types/components/zero-account/websocket.d.ts +27 -25
  51. package/dist/types/components/zero-account/zero-account.d.ts +39 -39
  52. package/dist/types/stencil-public-runtime.d.ts +46 -5
  53. package/dist/types/utils/request.d.ts +5 -5
  54. package/dist/types/utils/utils.d.ts +3 -3
  55. package/dist/zero-account/p-3b6bbcf5.js +3 -0
  56. package/dist/zero-account/p-3b6bbcf5.js.map +1 -0
  57. package/dist/zero-account/p-b6f591cf.entry.js +2 -0
  58. package/dist/zero-account/p-b6f591cf.entry.js.map +1 -0
  59. package/dist/zero-account/zero-account.esm.js +1 -1
  60. package/dist/zero-account/zero-account.esm.js.map +1 -1
  61. package/loader/index.d.ts +1 -1
  62. package/package.json +10 -10
  63. package/dist/cjs/index-1e526aba.js.map +0 -1
  64. package/dist/esm/index-09024c20.js.map +0 -1
  65. package/dist/zero-account/p-21f4994d.js +0 -3
  66. package/dist/zero-account/p-21f4994d.js.map +0 -1
  67. package/dist/zero-account/p-a29dc444.entry.js +0 -2
  68. package/dist/zero-account/p-a29dc444.entry.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-1e526aba.js');
5
+ const index = require('./index-ef57218a.js');
6
6
 
7
7
  /*
8
8
  * QR Code generator library (JavaScript)
@@ -1010,986 +1010,60 @@ var qrcodegen = new function() {
1010
1010
 
1011
1011
  var ErrorCorrectionLevel;
1012
1012
  (function (ErrorCorrectionLevel) {
1013
- ErrorCorrectionLevel["L"] = "L";
1014
- ErrorCorrectionLevel["M"] = "M";
1015
- ErrorCorrectionLevel["Q"] = "Q";
1016
- ErrorCorrectionLevel["H"] = "H";
1013
+ ErrorCorrectionLevel["L"] = "L";
1014
+ ErrorCorrectionLevel["M"] = "M";
1015
+ ErrorCorrectionLevel["Q"] = "Q";
1016
+ ErrorCorrectionLevel["H"] = "H";
1017
1017
  })(ErrorCorrectionLevel || (ErrorCorrectionLevel = {}));
1018
1018
  var Environment;
1019
1019
  (function (Environment) {
1020
- Environment["production"] = "production";
1021
- Environment["staging"] = "staging";
1020
+ Environment["production"] = "production";
1021
+ Environment["staging"] = "staging";
1022
1022
  })(Environment || (Environment = {}));
1023
1023
  var ThemePreset;
1024
1024
  (function (ThemePreset) {
1025
- ThemePreset["light"] = "light";
1026
- ThemePreset["dark"] = "dark";
1025
+ ThemePreset["light"] = "light";
1026
+ ThemePreset["dark"] = "dark";
1027
1027
  })(ThemePreset || (ThemePreset = {}));
1028
1028
 
1029
1029
  const QRC = qrcodegen.QrCode;
1030
1030
  const QRCode = class {
1031
- constructor(hostRef) {
1032
- index.registerInstance(this, hostRef);
1033
- this.url = undefined;
1034
- this.level = ErrorCorrectionLevel.M;
1035
- this.class = '';
1036
- this.color = 'black';
1037
- }
1038
- render() {
1039
- const getEcc = (ecc) => {
1040
- ecc = ecc.toUpperCase();
1041
- if (ecc === 'L')
1042
- return QRC.Ecc.LOW;
1043
- if (ecc === 'M')
1044
- return QRC.Ecc.MEDIUM;
1045
- if (ecc === 'Q')
1046
- return QRC.Ecc.QUARTILE;
1047
- return QRC.Ecc.HIGH;
1048
- };
1049
- const ecc = getEcc(this.level);
1050
- const qr = QRC.encodeText(this.url, ecc);
1051
- const qrcode = qr.svgObject();
1052
- return (index.h("svg", { class: this.class, viewBox: `0 0 ${qrcode.size} ${qrcode.size}` }, index.h("path", { d: qrcode.path, fill: this.color })));
1053
- }
1031
+ constructor(hostRef) {
1032
+ index.registerInstance(this, hostRef);
1033
+ this.url = undefined;
1034
+ this.level = ErrorCorrectionLevel.M;
1035
+ this.class = '';
1036
+ this.color = 'black';
1037
+ }
1038
+ render() {
1039
+ const getEcc = (ecc) => {
1040
+ ecc = ecc.toUpperCase();
1041
+ if (ecc === 'L')
1042
+ return QRC.Ecc.LOW;
1043
+ if (ecc === 'M')
1044
+ return QRC.Ecc.MEDIUM;
1045
+ if (ecc === 'Q')
1046
+ return QRC.Ecc.QUARTILE;
1047
+ return QRC.Ecc.HIGH;
1048
+ };
1049
+ const ecc = getEcc(this.level);
1050
+ const qr = QRC.encodeText(this.url, ecc);
1051
+ const qrcode = qr.svgObject();
1052
+ return (index.h("svg", { class: this.class, viewBox: `0 0 ${qrcode.size} ${qrcode.size}` }, index.h("path", { d: qrcode.path, fill: this.color })));
1053
+ }
1054
1054
  };
1055
1055
 
1056
1056
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
1057
1057
 
1058
- function createCommonjsModule(fn, basedir, module) {
1059
- return module = {
1060
- path: basedir,
1061
- exports: {},
1062
- require: function (path, base) {
1063
- return commonjsRequire();
1064
- }
1065
- }, fn(module, module.exports), module.exports;
1066
- }
1067
-
1068
- function commonjsRequire () {
1069
- throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
1070
- }
1071
-
1072
- var uaParser = createCommonjsModule(function (module, exports) {
1073
- /////////////////////////////////////////////////////////////////////////////////
1074
- /* UAParser.js v1.0.35
1075
- Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
1076
- MIT License *//*
1077
- Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
1078
- Supports browser & node.js environment.
1079
- Demo : https://faisalman.github.io/ua-parser-js
1080
- Source : https://github.com/faisalman/ua-parser-js */
1081
- /////////////////////////////////////////////////////////////////////////////////
1082
-
1083
- (function (window, undefined$1) {
1084
-
1085
- //////////////
1086
- // Constants
1087
- /////////////
1088
-
1089
-
1090
- var LIBVERSION = '1.0.35',
1091
- EMPTY = '',
1092
- UNKNOWN = '?',
1093
- FUNC_TYPE = 'function',
1094
- UNDEF_TYPE = 'undefined',
1095
- OBJ_TYPE = 'object',
1096
- STR_TYPE = 'string',
1097
- MAJOR = 'major',
1098
- MODEL = 'model',
1099
- NAME = 'name',
1100
- TYPE = 'type',
1101
- VENDOR = 'vendor',
1102
- VERSION = 'version',
1103
- ARCHITECTURE= 'architecture',
1104
- CONSOLE = 'console',
1105
- MOBILE = 'mobile',
1106
- TABLET = 'tablet',
1107
- SMARTTV = 'smarttv',
1108
- WEARABLE = 'wearable',
1109
- EMBEDDED = 'embedded',
1110
- UA_MAX_LENGTH = 350;
1111
-
1112
- var AMAZON = 'Amazon',
1113
- APPLE = 'Apple',
1114
- ASUS = 'ASUS',
1115
- BLACKBERRY = 'BlackBerry',
1116
- BROWSER = 'Browser',
1117
- CHROME = 'Chrome',
1118
- EDGE = 'Edge',
1119
- FIREFOX = 'Firefox',
1120
- GOOGLE = 'Google',
1121
- HUAWEI = 'Huawei',
1122
- LG = 'LG',
1123
- MICROSOFT = 'Microsoft',
1124
- MOTOROLA = 'Motorola',
1125
- OPERA = 'Opera',
1126
- SAMSUNG = 'Samsung',
1127
- SHARP = 'Sharp',
1128
- SONY = 'Sony',
1129
- XIAOMI = 'Xiaomi',
1130
- ZEBRA = 'Zebra',
1131
- FACEBOOK = 'Facebook',
1132
- CHROMIUM_OS = 'Chromium OS',
1133
- MAC_OS = 'Mac OS';
1134
-
1135
- ///////////
1136
- // Helper
1137
- //////////
1138
-
1139
- var extend = function (regexes, extensions) {
1140
- var mergedRegexes = {};
1141
- for (var i in regexes) {
1142
- if (extensions[i] && extensions[i].length % 2 === 0) {
1143
- mergedRegexes[i] = extensions[i].concat(regexes[i]);
1144
- } else {
1145
- mergedRegexes[i] = regexes[i];
1146
- }
1147
- }
1148
- return mergedRegexes;
1149
- },
1150
- enumerize = function (arr) {
1151
- var enums = {};
1152
- for (var i=0; i<arr.length; i++) {
1153
- enums[arr[i].toUpperCase()] = arr[i];
1154
- }
1155
- return enums;
1156
- },
1157
- has = function (str1, str2) {
1158
- return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
1159
- },
1160
- lowerize = function (str) {
1161
- return str.toLowerCase();
1162
- },
1163
- majorize = function (version) {
1164
- return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined$1;
1165
- },
1166
- trim = function (str, len) {
1167
- if (typeof(str) === STR_TYPE) {
1168
- str = str.replace(/^\s\s*/, EMPTY);
1169
- return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
1170
- }
1171
- };
1172
-
1173
- ///////////////
1174
- // Map helper
1175
- //////////////
1176
-
1177
- var rgxMapper = function (ua, arrays) {
1178
-
1179
- var i = 0, j, k, p, q, matches, match;
1180
-
1181
- // loop through all regexes maps
1182
- while (i < arrays.length && !matches) {
1183
-
1184
- var regex = arrays[i], // even sequence (0,2,4,..)
1185
- props = arrays[i + 1]; // odd sequence (1,3,5,..)
1186
- j = k = 0;
1187
-
1188
- // try matching uastring with regexes
1189
- while (j < regex.length && !matches) {
1190
-
1191
- if (!regex[j]) { break; }
1192
- matches = regex[j++].exec(ua);
1193
-
1194
- if (!!matches) {
1195
- for (p = 0; p < props.length; p++) {
1196
- match = matches[++k];
1197
- q = props[p];
1198
- // check if given property is actually array
1199
- if (typeof q === OBJ_TYPE && q.length > 0) {
1200
- if (q.length === 2) {
1201
- if (typeof q[1] == FUNC_TYPE) {
1202
- // assign modified match
1203
- this[q[0]] = q[1].call(this, match);
1204
- } else {
1205
- // assign given value, ignore regex match
1206
- this[q[0]] = q[1];
1207
- }
1208
- } else if (q.length === 3) {
1209
- // check whether function or regex
1210
- if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
1211
- // call function (usually string mapper)
1212
- this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;
1213
- } else {
1214
- // sanitize match using given regex
1215
- this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;
1216
- }
1217
- } else if (q.length === 4) {
1218
- this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;
1219
- }
1220
- } else {
1221
- this[q] = match ? match : undefined$1;
1222
- }
1223
- }
1224
- }
1225
- }
1226
- i += 2;
1227
- }
1228
- },
1229
-
1230
- strMapper = function (str, map) {
1231
-
1232
- for (var i in map) {
1233
- // check if current value is array
1234
- if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
1235
- for (var j = 0; j < map[i].length; j++) {
1236
- if (has(map[i][j], str)) {
1237
- return (i === UNKNOWN) ? undefined$1 : i;
1238
- }
1239
- }
1240
- } else if (has(map[i], str)) {
1241
- return (i === UNKNOWN) ? undefined$1 : i;
1242
- }
1243
- }
1244
- return str;
1245
- };
1246
-
1247
- ///////////////
1248
- // String map
1249
- //////////////
1250
-
1251
- // Safari < 3.0
1252
- var oldSafariMap = {
1253
- '1.0' : '/8',
1254
- '1.2' : '/1',
1255
- '1.3' : '/3',
1256
- '2.0' : '/412',
1257
- '2.0.2' : '/416',
1258
- '2.0.3' : '/417',
1259
- '2.0.4' : '/419',
1260
- '?' : '/'
1261
- },
1262
- windowsVersionMap = {
1263
- 'ME' : '4.90',
1264
- 'NT 3.11' : 'NT3.51',
1265
- 'NT 4.0' : 'NT4.0',
1266
- '2000' : 'NT 5.0',
1267
- 'XP' : ['NT 5.1', 'NT 5.2'],
1268
- 'Vista' : 'NT 6.0',
1269
- '7' : 'NT 6.1',
1270
- '8' : 'NT 6.2',
1271
- '8.1' : 'NT 6.3',
1272
- '10' : ['NT 6.4', 'NT 10.0'],
1273
- 'RT' : 'ARM'
1274
- };
1275
-
1276
- //////////////
1277
- // Regex map
1278
- /////////////
1279
-
1280
- var regexes = {
1281
-
1282
- browser : [[
1283
-
1284
- /\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
1285
- ], [VERSION, [NAME, 'Chrome']], [
1286
- /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
1287
- ], [VERSION, [NAME, 'Edge']], [
1288
-
1289
- // Presto based
1290
- /(opera mini)\/([-\w\.]+)/i, // Opera Mini
1291
- /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, // Opera Mobi/Tablet
1292
- /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
1293
- ], [NAME, VERSION], [
1294
- /opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
1295
- ], [VERSION, [NAME, OPERA+' Mini']], [
1296
- /\bopr\/([\w\.]+)/i // Opera Webkit
1297
- ], [VERSION, [NAME, OPERA]], [
1298
-
1299
- // Mixed
1300
- /(kindle)\/([\w\.]+)/i, // Kindle
1301
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer
1302
- // Trident based
1303
- /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
1304
- /(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser
1305
- /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
1306
-
1307
- // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
1308
- /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
1309
- // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
1310
- /(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi
1311
- /(weibo)__([\d\.]+)/i // Weibo
1312
- ], [NAME, VERSION], [
1313
- /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
1314
- ], [VERSION, [NAME, 'UC'+BROWSER]], [
1315
- /microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
1316
- /\bqbcore\/([\w\.]+).+microm/i
1317
- ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [
1318
- /micromessenger\/([\w\.]+)/i // WeChat
1319
- ], [VERSION, [NAME, 'WeChat']], [
1320
- /konqueror\/([\w\.]+)/i // Konqueror
1321
- ], [VERSION, [NAME, 'Konqueror']], [
1322
- /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
1323
- ], [VERSION, [NAME, 'IE']], [
1324
- /ya(?:search)?browser\/([\w\.]+)/i // Yandex
1325
- ], [VERSION, [NAME, 'Yandex']], [
1326
- /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
1327
- ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
1328
- /\bfocus\/([\w\.]+)/i // Firefox Focus
1329
- ], [VERSION, [NAME, FIREFOX+' Focus']], [
1330
- /\bopt\/([\w\.]+)/i // Opera Touch
1331
- ], [VERSION, [NAME, OPERA+' Touch']], [
1332
- /coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
1333
- ], [VERSION, [NAME, 'Coc Coc']], [
1334
- /dolfin\/([\w\.]+)/i // Dolphin
1335
- ], [VERSION, [NAME, 'Dolphin']], [
1336
- /coast\/([\w\.]+)/i // Opera Coast
1337
- ], [VERSION, [NAME, OPERA+' Coast']], [
1338
- /miuibrowser\/([\w\.]+)/i // MIUI Browser
1339
- ], [VERSION, [NAME, 'MIUI '+BROWSER]], [
1340
- /fxios\/([-\w\.]+)/i // Firefox for iOS
1341
- ], [VERSION, [NAME, FIREFOX]], [
1342
- /\bqihu|(qi?ho?o?|360)browser/i // 360
1343
- ], [[NAME, '360 '+BROWSER]], [
1344
- /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
1345
- ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser
1346
- /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
1347
- ], [[NAME, /_/g, ' '], VERSION], [
1348
- /(electron)\/([\w\.]+) safari/i, // Electron-based App
1349
- /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
1350
- /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser
1351
- ], [NAME, VERSION], [
1352
- /(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser
1353
- /(lbbrowser)/i, // LieBao Browser
1354
- /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
1355
- ], [NAME], [
1356
-
1357
- // WebView
1358
- /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
1359
- ], [[NAME, FACEBOOK], VERSION], [
1360
- /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
1361
- /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
1362
- /safari (line)\/([\w\.]+)/i, // Line App for iOS
1363
- /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
1364
- /(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram
1365
- ], [NAME, VERSION], [
1366
- /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
1367
- ], [VERSION, [NAME, 'GSA']], [
1368
- /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
1369
- ], [VERSION, [NAME, 'TikTok']], [
1370
-
1371
- /headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
1372
- ], [VERSION, [NAME, CHROME+' Headless']], [
1373
-
1374
- / wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
1375
- ], [[NAME, CHROME+' WebView'], VERSION], [
1376
-
1377
- /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
1378
- ], [VERSION, [NAME, 'Android '+BROWSER]], [
1379
-
1380
- /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
1381
- ], [NAME, VERSION], [
1382
-
1383
- /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i // Mobile Safari
1384
- ], [VERSION, [NAME, 'Mobile Safari']], [
1385
- /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile
1386
- ], [VERSION, NAME], [
1387
- /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
1388
- ], [NAME, [VERSION, strMapper, oldSafariMap]], [
1389
-
1390
- /(webkit|khtml)\/([\w\.]+)/i
1391
- ], [NAME, VERSION], [
1392
-
1393
- // Gecko based
1394
- /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
1395
- ], [[NAME, 'Netscape'], VERSION], [
1396
- /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
1397
- ], [VERSION, [NAME, FIREFOX+' Reality']], [
1398
- /ekiohf.+(flow)\/([\w\.]+)/i, // Flow
1399
- /(swiftfox)/i, // Swiftfox
1400
- /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
1401
- // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
1402
- /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
1403
- // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
1404
- /(firefox)\/([\w\.]+)/i, // Other Firefox-based
1405
- /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
1406
-
1407
- // Other
1408
- /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
1409
- // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
1410
- /(links) \(([\w\.]+)/i, // Links
1411
- /panasonic;(viera)/i // Panasonic Viera
1412
- ], [NAME, VERSION], [
1413
-
1414
- /(cobalt)\/([\w\.]+)/i // Cobalt
1415
- ], [NAME, [VERSION, /master.|lts./, ""]]
1416
- ],
1417
-
1418
- cpu : [[
1419
-
1420
- /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i // AMD64 (x64)
1421
- ], [[ARCHITECTURE, 'amd64']], [
1422
-
1423
- /(ia32(?=;))/i // IA32 (quicktime)
1424
- ], [[ARCHITECTURE, lowerize]], [
1425
-
1426
- /((?:i[346]|x)86)[;\)]/i // IA32 (x86)
1427
- ], [[ARCHITECTURE, 'ia32']], [
1428
-
1429
- /\b(aarch64|arm(v?8e?l?|_?64))\b/i // ARM64
1430
- ], [[ARCHITECTURE, 'arm64']], [
1431
-
1432
- /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i // ARMHF
1433
- ], [[ARCHITECTURE, 'armhf']], [
1434
-
1435
- // PocketPC mistakenly identified as PowerPC
1436
- /windows (ce|mobile); ppc;/i
1437
- ], [[ARCHITECTURE, 'arm']], [
1438
-
1439
- /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i // PowerPC
1440
- ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [
1441
-
1442
- /(sun4\w)[;\)]/i // SPARC
1443
- ], [[ARCHITECTURE, 'sparc']], [
1444
-
1445
- /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
1446
- // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
1447
- ], [[ARCHITECTURE, lowerize]]
1448
- ],
1449
-
1450
- device : [[
1451
-
1452
- //////////////////////////
1453
- // MOBILES & TABLETS
1454
- /////////////////////////
1455
-
1456
- // Samsung
1457
- /\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
1458
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
1459
- /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
1460
- /samsung[- ]([-\w]+)/i,
1461
- /sec-(sgh\w+)/i
1462
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
1463
-
1464
- // Apple
1465
- /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
1466
- ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
1467
- /\((ipad);[-\w\),; ]+apple/i, // iPad
1468
- /applecoremedia\/[\w\.]+ \((ipad)/i,
1469
- /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
1470
- ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [
1471
- /(macintosh);/i
1472
- ], [MODEL, [VENDOR, APPLE]], [
1473
-
1474
- // Sharp
1475
- /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
1476
- ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
1477
-
1478
- // Huawei
1479
- /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
1480
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
1481
- /(?:huawei|honor)([-\w ]+)[;\)]/i,
1482
- /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
1483
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
1484
-
1485
- // Xiaomi
1486
- /\b(poco[\w ]+)(?: bui|\))/i, // Xiaomi POCO
1487
- /\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
1488
- /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
1489
- /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
1490
- /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
1491
- ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
1492
- /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
1493
- ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
1494
-
1495
- // OPPO
1496
- /; (\w+) bui.+ oppo/i,
1497
- /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
1498
- ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
1499
-
1500
- // Vivo
1501
- /vivo (\w+)(?: bui|\))/i,
1502
- /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
1503
- ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
1504
-
1505
- // Realme
1506
- /\b(rmx[12]\d{3})(?: bui|;|\))/i
1507
- ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
1508
-
1509
- // Motorola
1510
- /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
1511
- /\bmot(?:orola)?[- ](\w*)/i,
1512
- /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
1513
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [
1514
- /\b(mz60\d|xoom[2 ]{0,2}) build\//i
1515
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
1516
-
1517
- // LG
1518
- /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
1519
- ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
1520
- /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
1521
- /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
1522
- /\blg-?([\d\w]+) bui/i
1523
- ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
1524
-
1525
- // Lenovo
1526
- /(ideatab[-\w ]+)/i,
1527
- /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
1528
- ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
1529
-
1530
- // Nokia
1531
- /(?:maemo|nokia).*(n900|lumia \d+)/i,
1532
- /nokia[-_ ]?([-\w\.]*)/i
1533
- ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [
1534
-
1535
- // Google
1536
- /(pixel c)\b/i // Google Pixel C
1537
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [
1538
- /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
1539
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
1540
-
1541
- // Sony
1542
- /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
1543
- ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
1544
- /sony tablet [ps]/i,
1545
- /\b(?:sony)?sgp\w+(?: bui|\))/i
1546
- ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
1547
-
1548
- // OnePlus
1549
- / (kb2005|in20[12]5|be20[12][59])\b/i,
1550
- /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
1551
- ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
1552
-
1553
- // Amazon
1554
- /(alexa)webm/i,
1555
- /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
1556
- /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
1557
- ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
1558
- /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
1559
- ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
1560
-
1561
- // BlackBerry
1562
- /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
1563
- ], [MODEL, VENDOR, [TYPE, TABLET]], [
1564
- /\b((?:bb[a-f]|st[hv])100-\d)/i,
1565
- /\(bb10; (\w+)/i // BlackBerry 10
1566
- ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
1567
-
1568
- // Asus
1569
- /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
1570
- ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [
1571
- / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
1572
- ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
1573
-
1574
- // HTC
1575
- /(nexus 9)/i // HTC Nexus 9
1576
- ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
1577
- /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, // HTC
1578
-
1579
- // ZTE
1580
- /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
1581
- /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
1582
- ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
1583
-
1584
- // Acer
1585
- /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
1586
- ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
1587
-
1588
- // Meizu
1589
- /droid.+; (m[1-5] note) bui/i,
1590
- /\bmz-([-\w]{2,})/i
1591
- ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
1592
-
1593
- // MIXED
1594
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
1595
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
1596
- /(hp) ([\w ]+\w)/i, // HP iPAQ
1597
- /(asus)-?(\w+)/i, // Asus
1598
- /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
1599
- /(lenovo)[-_ ]?([-\w]+)/i, // Lenovo
1600
- /(jolla)/i, // Jolla
1601
- /(oppo) ?([\w ]+) bui/i // OPPO
1602
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
1603
-
1604
- /(kobo)\s(ereader|touch)/i, // Kobo
1605
- /(archos) (gamepad2?)/i, // Archos
1606
- /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
1607
- /(kindle)\/([\w\.]+)/i, // Kindle
1608
- /(nook)[\w ]+build\/(\w+)/i, // Nook
1609
- /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
1610
- /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
1611
- /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
1612
- /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
1613
- /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
1614
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
1615
-
1616
- /(surface duo)/i // Surface Duo
1617
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [
1618
- /droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
1619
- ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [
1620
- /(u304aa)/i // AT&T
1621
- ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
1622
- /\bsie-(\w*)/i // Siemens
1623
- ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
1624
- /\b(rct\w+) b/i // RCA Tablets
1625
- ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
1626
- /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
1627
- ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
1628
- /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
1629
- ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
1630
- /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
1631
- ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
1632
- /\b(tm\d{3}\w+) b/i
1633
- ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
1634
- /\b(k88) b/i // ZTE K Series Tablet
1635
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
1636
- /\b(nx\d{3}j) b/i // ZTE Nubia
1637
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
1638
- /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
1639
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
1640
- /\b(zur\d{3}) b/i // Swiss ZUR Tablet
1641
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
1642
- /\b((zeki)?tb.*\b) b/i // Zeki Tablets
1643
- ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
1644
- /\b([yr]\d{2}) b/i,
1645
- /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
1646
- ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
1647
- /\b(ns-?\w{0,9}) b/i // Insignia Tablets
1648
- ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
1649
- /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
1650
- ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
1651
- /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
1652
- ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
1653
- /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
1654
- ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
1655
- /\b(ph-1) /i // Essential PH-1
1656
- ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
1657
- /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
1658
- ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
1659
- /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
1660
- ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
1661
- /\btu_(1491) b/i // Rotor Tablets
1662
- ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
1663
- /(shield[\w ]+) b/i // Nvidia Shield Tablets
1664
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [
1665
- /(sprint) (\w+)/i // Sprint Phones
1666
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
1667
- /(kin\.[onetw]{3})/i // Microsoft Kin
1668
- ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [
1669
- /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
1670
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [
1671
- /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
1672
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
1673
-
1674
- ///////////////////
1675
- // SMARTTVS
1676
- ///////////////////
1677
-
1678
- /smart-tv.+(samsung)/i // Samsung
1679
- ], [VENDOR, [TYPE, SMARTTV]], [
1680
- /hbbtv.+maple;(\d+)/i
1681
- ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
1682
- /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
1683
- ], [[VENDOR, LG], [TYPE, SMARTTV]], [
1684
- /(apple) ?tv/i // Apple TV
1685
- ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
1686
- /crkey/i // Google Chromecast
1687
- ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
1688
- /droid.+aft(\w)( bui|\))/i // Fire TV
1689
- ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
1690
- /\(dtv[\);].+(aquos)/i,
1691
- /(aquos-tv[\w ]+)\)/i // Sharp
1692
- ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
1693
- /(bravia[\w ]+)( bui|\))/i // Sony
1694
- ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
1695
- /(mitv-\w{5}) bui/i // Xiaomi
1696
- ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
1697
- /Hbbtv.*(technisat) (.*);/i // TechniSAT
1698
- ], [VENDOR, MODEL, [TYPE, SMARTTV]], [
1699
- /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
1700
- /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
1701
- ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
1702
- /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
1703
- ], [[TYPE, SMARTTV]], [
1704
-
1705
- ///////////////////
1706
- // CONSOLES
1707
- ///////////////////
1708
-
1709
- /(ouya)/i, // Ouya
1710
- /(nintendo) ([wids3utch]+)/i // Nintendo
1711
- ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
1712
- /droid.+; (shield) bui/i // Nvidia
1713
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
1714
- /(playstation [345portablevi]+)/i // Playstation
1715
- ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
1716
- /\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
1717
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
1718
-
1719
- ///////////////////
1720
- // WEARABLES
1721
- ///////////////////
1722
-
1723
- /((pebble))app/i // Pebble
1724
- ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
1725
- /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
1726
- ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
1727
- /droid.+; (glass) \d/i // Google Glass
1728
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
1729
- /droid.+; (wt63?0{2,3})\)/i
1730
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
1731
- /(quest( 2| pro)?)/i // Oculus Quest
1732
- ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
1733
-
1734
- ///////////////////
1735
- // EMBEDDED
1736
- ///////////////////
1737
-
1738
- /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
1739
- ], [VENDOR, [TYPE, EMBEDDED]], [
1740
- /(aeobc)\b/i // Echo Dot
1741
- ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
1742
-
1743
- ////////////////////
1744
- // MIXED (GENERIC)
1745
- ///////////////////
1746
-
1747
- /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
1748
- ], [MODEL, [TYPE, MOBILE]], [
1749
- /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
1750
- ], [MODEL, [TYPE, TABLET]], [
1751
- /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
1752
- ], [[TYPE, TABLET]], [
1753
- /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
1754
- ], [[TYPE, MOBILE]], [
1755
- /(android[-\w\. ]{0,9});.+buil/i // Generic Android Device
1756
- ], [MODEL, [VENDOR, 'Generic']]
1757
- ],
1758
-
1759
- engine : [[
1760
-
1761
- /windows.+ edge\/([\w\.]+)/i // EdgeHTML
1762
- ], [VERSION, [NAME, EDGE+'HTML']], [
1763
-
1764
- /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
1765
- ], [VERSION, [NAME, 'Blink']], [
1766
-
1767
- /(presto)\/([\w\.]+)/i, // Presto
1768
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
1769
- /ekioh(flow)\/([\w\.]+)/i, // Flow
1770
- /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
1771
- /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
1772
- /\b(libweb)/i
1773
- ], [NAME, VERSION], [
1774
-
1775
- /rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
1776
- ], [VERSION, NAME]
1777
- ],
1778
-
1779
- os : [[
1780
-
1781
- // Windows
1782
- /microsoft (windows) (vista|xp)/i // Windows (iTunes)
1783
- ], [NAME, VERSION], [
1784
- /(windows) nt 6\.2; (arm)/i, // Windows RT
1785
- /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone
1786
- /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
1787
- ], [NAME, [VERSION, strMapper, windowsVersionMap]], [
1788
- /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
1789
- ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [
1790
-
1791
- // iOS/macOS
1792
- /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
1793
- /ios;fbsv\/([\d\.]+)/i,
1794
- /cfnetwork\/.+darwin/i
1795
- ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
1796
- /(mac os x) ?([\w\. ]*)/i,
1797
- /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
1798
- ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
1799
-
1800
- // Mobile OSes
1801
- /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
1802
- ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
1803
- /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
1804
- /(blackberry)\w*\/([\w\.]*)/i, // Blackberry
1805
- /(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
1806
- /\((series40);/i // Series 40
1807
- ], [NAME, VERSION], [
1808
- /\(bb(10);/i // BlackBerry 10
1809
- ], [VERSION, [NAME, BLACKBERRY]], [
1810
- /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i // Symbian
1811
- ], [VERSION, [NAME, 'Symbian']], [
1812
- /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
1813
- ], [VERSION, [NAME, FIREFOX+' OS']], [
1814
- /web0s;.+rt(tv)/i,
1815
- /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
1816
- ], [VERSION, [NAME, 'webOS']], [
1817
- /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
1818
- ], [VERSION, [NAME, 'watchOS']], [
1819
-
1820
- // Google Chromecast
1821
- /crkey\/([\d\.]+)/i // Google Chromecast
1822
- ], [VERSION, [NAME, CHROME+'cast']], [
1823
- /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
1824
- ], [[NAME, CHROMIUM_OS], VERSION],[
1825
-
1826
- // Smart TVs
1827
- /panasonic;(viera)/i, // Panasonic Viera
1828
- /(netrange)mmh/i, // Netrange
1829
- /(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
1830
-
1831
- // Console
1832
- /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
1833
- /(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
1834
-
1835
- // Other
1836
- /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
1837
- /(mint)[\/\(\) ]?(\w*)/i, // Mint
1838
- /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux
1839
- /([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,
1840
- // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
1841
- /(hurd|linux) ?([\w\.]*)/i, // Hurd/Linux
1842
- /(gnu) ?([\w\.]*)/i, // GNU
1843
- /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1844
- /(haiku) (\w+)/i // Haiku
1845
- ], [NAME, VERSION], [
1846
- /(sunos) ?([\w\.\d]*)/i // Solaris
1847
- ], [[NAME, 'Solaris'], VERSION], [
1848
- /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
1849
- /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
1850
- /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
1851
- /(unix) ?([\w\.]*)/i // UNIX
1852
- ], [NAME, VERSION]
1853
- ]
1854
- };
1855
-
1856
- /////////////////
1857
- // Constructor
1858
- ////////////////
1859
-
1860
- var UAParser = function (ua, extensions) {
1861
-
1862
- if (typeof ua === OBJ_TYPE) {
1863
- extensions = ua;
1864
- ua = undefined$1;
1865
- }
1866
-
1867
- if (!(this instanceof UAParser)) {
1868
- return new UAParser(ua, extensions).getResult();
1869
- }
1870
-
1871
- var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined$1;
1872
- var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
1873
- var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined$1;
1874
- var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
1875
- var _isSelfNav = _navigator && _navigator.userAgent == _ua;
1876
-
1877
- this.getBrowser = function () {
1878
- var _browser = {};
1879
- _browser[NAME] = undefined$1;
1880
- _browser[VERSION] = undefined$1;
1881
- rgxMapper.call(_browser, _ua, _rgxmap.browser);
1882
- _browser[MAJOR] = majorize(_browser[VERSION]);
1883
- // Brave-specific detection
1884
- if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
1885
- _browser[NAME] = 'Brave';
1886
- }
1887
- return _browser;
1888
- };
1889
- this.getCPU = function () {
1890
- var _cpu = {};
1891
- _cpu[ARCHITECTURE] = undefined$1;
1892
- rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
1893
- return _cpu;
1894
- };
1895
- this.getDevice = function () {
1896
- var _device = {};
1897
- _device[VENDOR] = undefined$1;
1898
- _device[MODEL] = undefined$1;
1899
- _device[TYPE] = undefined$1;
1900
- rgxMapper.call(_device, _ua, _rgxmap.device);
1901
- if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
1902
- _device[TYPE] = MOBILE;
1903
- }
1904
- // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
1905
- if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
1906
- _device[MODEL] = 'iPad';
1907
- _device[TYPE] = TABLET;
1908
- }
1909
- return _device;
1910
- };
1911
- this.getEngine = function () {
1912
- var _engine = {};
1913
- _engine[NAME] = undefined$1;
1914
- _engine[VERSION] = undefined$1;
1915
- rgxMapper.call(_engine, _ua, _rgxmap.engine);
1916
- return _engine;
1917
- };
1918
- this.getOS = function () {
1919
- var _os = {};
1920
- _os[NAME] = undefined$1;
1921
- _os[VERSION] = undefined$1;
1922
- rgxMapper.call(_os, _ua, _rgxmap.os);
1923
- if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {
1924
- _os[NAME] = _uach.platform
1925
- .replace(/chrome os/i, CHROMIUM_OS)
1926
- .replace(/macos/i, MAC_OS); // backward compatibility
1927
- }
1928
- return _os;
1929
- };
1930
- this.getResult = function () {
1931
- return {
1932
- ua : this.getUA(),
1933
- browser : this.getBrowser(),
1934
- engine : this.getEngine(),
1935
- os : this.getOS(),
1936
- device : this.getDevice(),
1937
- cpu : this.getCPU()
1938
- };
1939
- };
1940
- this.getUA = function () {
1941
- return _ua;
1942
- };
1943
- this.setUA = function (ua) {
1944
- _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;
1945
- return this;
1946
- };
1947
- this.setUA(_ua);
1948
- return this;
1949
- };
1950
-
1951
- UAParser.VERSION = LIBVERSION;
1952
- UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);
1953
- UAParser.CPU = enumerize([ARCHITECTURE]);
1954
- UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
1955
- UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
1956
-
1957
- ///////////
1958
- // Export
1959
- //////////
1960
-
1961
- // check js environment
1962
- {
1963
- // nodejs env
1964
- if (module.exports) {
1965
- exports = module.exports = UAParser;
1966
- }
1967
- exports.UAParser = UAParser;
1968
- }
1058
+ var uaParser_pack = {exports: {}};
1969
1059
 
1970
- // jQuery/Zepto specific (optional)
1971
- // Note:
1972
- // In AMD env the global scope should be kept clean, but jQuery is an exception.
1973
- // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
1974
- // and we should catch that.
1975
- var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
1976
- if ($ && !$.ua) {
1977
- var parser = new UAParser();
1978
- $.ua = parser.getResult();
1979
- $.ua.get = function () {
1980
- return parser.getUA();
1981
- };
1982
- $.ua.set = function (ua) {
1983
- parser.setUA(ua);
1984
- var result = parser.getResult();
1985
- for (var prop in result) {
1986
- $.ua[prop] = result[prop];
1987
- }
1988
- };
1989
- }
1060
+ /* UAParser.js v2.0.0-beta.2
1061
+ Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
1062
+ AGPLv3 License */
1990
1063
 
1991
- })(typeof window === 'object' ? window : commonjsGlobal);
1992
- });
1064
+ (function (module, exports) {
1065
+ !function(i,u){function e(i){for(var e={},t=0;t<i.length;t++)e[i[t].toUpperCase()]=i[t];return e}function n(i,e){if(!(typeof i===d&&0<i.length))return !!gi(i)&&-1!==xi(e).indexOf(xi(i));for(var t in i)if(xi(i[t])==xi(e))return 1}var w="",c="function",b="undefined",d="object",s="string",p="major",h="model",f="name",m="type",g="vendor",v="version",x="architecture",k="console",y="mobile",r="tablet",t="smarttv",o="wearable",a="embedded",l="user-agent",_=500,S="brands",T="formFactor",C="fullVersionList",q="platform",A="platformVersion",O="bitness",z="sec-ch-ua",N=z+"-full-version-list",I=z+"-arch",P=z+"-"+O,U=z+"-form-factor",H=z+"-"+y,E=z+"-"+h,M=z+"-"+q,R=M+"-version",j=[S,C,y,h,q,A,x,T,O],V="browser",B="cpu",F="device",X="engine",D="os",G="result",$="Amazon",L="Apple",W="ASUS",K="BlackBerry",Z="Google",Q="Huawei",Y="Lenovo",J="LG",ii="Microsoft",ei="Motorola",ti="Samsung",oi="Sony",ri="Xiaomi",ai="Zebra",si="Mobile ",ni=" Browser",wi="Chrome",bi="Firefox",li="Opera",ui="Facebook",ci="Windows",di=typeof i!==b,pi=di&&i.navigator?i.navigator:u,hi=pi&&pi.userAgentData?pi.userAgentData:u,fi=function(i,e){var t,o={};for(t in i)o[t]=e[t]&&e[t].length%2==0?e[t].concat(i[t]):i[t];return o},mi=function(i){for(var e in i)return /^(browser|cpu|device|engine|os)$/.test(e)},gi=function(i){return typeof i===s},vi=function(i){if(!i)return u;for(var e,t=[],o=_i(/\\?\"/g,i).split(","),r=0;r<o.length;r++)-1<o[r].indexOf(";")?(e=Ti(o[r]).split(";v="),t[r]={brand:e[0],version:e[1]}):t[r]=Ti(o[r]);return t},xi=function(i){return gi(i)?i.toLowerCase():i},ki=function(i){return gi(i)?_i(/[^\d\.]/g,i).split(".")[0]:u},yi=function(i){for(var e in i){e=i[e];typeof e==d&&2==e.length?this[e[0]]=e[1]:this[e]=u;}return this},_i=function(i,e){return gi(e)?e.replace(i,w):e},Si=function(i){return _i(/\\?\"/g,i)},Ti=function(i,e){if(gi(i))return i=_i(/^\s\s*/,i),typeof e===b?i:i.substring(0,_)},Ci=function(i,e){if(i&&e)for(var t,o,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],b=e[n+1],l=t=0;l<w.length&&!a&&w[l];)if(a=w[l++].exec(i))for(o=0;o<b.length;o++)s=a[++t],typeof(r=b[o])===d&&0<r.length?2===r.length?typeof r[1]==c?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==c||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):u:this[r[0]]=s?r[1].call(this,s,r[2]):u:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):u):this[r]=s||u;n+=2;}},qi=function(i,e){for(var t in e)if(typeof e[t]===d&&0<e[t].length){for(var o=0;o<e[t].length;o++)if(n(e[t][o],i))return "?"===t?u:t}else if(n(e[t],i))return "?"===t?u:t;return e.hasOwnProperty("*")?e["*"]:i},Ai={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Oi={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:["VR","XR","Watch"],"?":["Desktop","Unknown"],"*":u},zi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[v,[f,si+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[v,[f,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[f,v],[/opios[\/ ]+([\w\.]+)/i],[v,[f,li+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[v,[f,li+" GX"]],[/\bopr\/([\w\.]+)/i],[v,[f,li]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[v,[f,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[f,v],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[v,[f,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[v,[f,"WeChat"]],[/konqueror\/([\w\.]+)/i],[v,[f,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[v,[f,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[v,[f,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[v,[f,"Smart "+Y+ni]],[/(avast|avg)\/([\w\.]+)/i],[[f,/(.+)/,"$1 Secure"+ni],v],[/\bfocus\/([\w\.]+)/i],[v,[f,bi+" Focus"]],[/\bopt\/([\w\.]+)/i],[v,[f,li+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[v,[f,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[v,[f,"Dolphin"]],[/coast\/([\w\.]+)/i],[v,[f,li+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[v,[f,"MIUI"+ni]],[/fxios\/([\w\.-]+)/i],[v,[f,si+bi]],[/\bqihu|(qi?ho?o?|360)browser/i],[[f,"360"+ni]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[f,/(.+)/,"$1"+ni],v],[/samsungbrowser\/([\w\.]+)/i],[v,[f,ti+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[f,/_/g," "],v],[/metasr[\/ ]?([\d\.]+)/i],[v,[f,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[f,"Sogou Mobile"],v],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[f,v],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[f],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[f,ui],v],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[f,v],[/\bgsa\/([\w\.]+) .*safari\//i],[v,[f,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[v,[f,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[v,[f,wi+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[f,wi+" WebView"],v],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[v,[f,"Android"+ni]],[/chrome\/([\w\.]+) mobile/i],[v,[f,si+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[f,v],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[v,[f,si+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[f,si+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[v,f],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[f,[v,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[f,v],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[f,si+bi],v],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[f,"Netscape"],v],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[v,[f,bi+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[f,v],[/(cobalt)\/([\w\.]+)/i],[f,[v,/[^\d\.]+./,w]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[x,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[x,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[x,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[x,"armhf"]],[/windows (ce|mobile); ppc;/i],[[x,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[x,/ower/,w,xi]],[/(sun4\w)[;\)]/i],[[x,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[x,xi]]],device:[[/\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],[h,[g,ti],[m,r]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[h,[g,ti],[m,y]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[h,[g,L],[m,y]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[h,[g,L],[m,r]],[/(macintosh);/i],[h,[g,L]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[h,[g,"Sharp"],[m,y]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[h,[g,Q],[m,r]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[h,[g,Q],[m,y]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[h,/_/g," "],[g,ri],[m,y]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[h,/_/g," "],[g,ri],[m,r]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[h,[g,"OPPO"],[m,y]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[h,[g,"Vivo"],[m,y]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[h,[g,"Realme"],[m,y]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[h,[g,ei],[m,y]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[h,[g,ei],[m,r]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[h,[g,J],[m,r]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[h,[g,J],[m,y]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[h,[g,Y],[m,r]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[h,/_/g," "],[g,"Nokia"],[m,y]],[/(pixel c)\b/i],[h,[g,Z],[m,r]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[h,[g,Z],[m,y]],[/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],[h,[g,oi],[m,y]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[h,"Xperia Tablet"],[g,oi],[m,r]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[h,[g,"OnePlus"],[m,y]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[h,[g,$],[m,r]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[h,/(.+)/g,"Fire Phone $1"],[g,$],[m,y]],[/(playbook);[-\w\),; ]+(rim)/i],[h,g,[m,r]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[h,[g,K],[m,y]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[h,[g,W],[m,r]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[h,[g,W],[m,y]],[/(nexus 9)/i],[h,[g,"HTC"],[m,r]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[g,[h,/_/g," "],[m,y]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[h,[g,"Acer"],[m,r]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[h,[g,"Meizu"],[m,y]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[h,[g,"Ulefone"],[m,y]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[g,h,[m,y]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[g,h,[m,r]],[/(surface duo)/i],[h,[g,ii],[m,r]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[h,[g,"Fairphone"],[m,y]],[/(shield[\w ]+) b/i],[h,[g,"Nvidia"],[m,r]],[/(sprint) (\w+)/i],[g,h,[m,y]],[/(kin\.[onetw]{3})/i],[[h,/\./g," "],[g,ii],[m,y]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[h,[g,ai],[m,r]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[h,[g,ai],[m,y]],[/smart-tv.+(samsung)/i],[g,[m,t]],[/hbbtv.+maple;(\d+)/i],[[h,/^/,"SmartTV"],[g,ti],[m,t]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[g,J],[m,t]],[/(apple) ?tv/i],[g,[h,L+" TV"],[m,t]],[/crkey/i],[[h,wi+"cast"],[g,Z],[m,t]],[/droid.+aft(\w+)( bui|\))/i],[h,[g,$],[m,t]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[h,[g,"Sharp"],[m,t]],[/(bravia[\w ]+)( bui|\))/i],[h,[g,oi],[m,t]],[/(mitv-\w{5}) bui/i],[h,[g,ri],[m,t]],[/Hbbtv.*(technisat) (.*);/i],[g,h,[m,t]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[g,Ti],[h,Ti],[m,t]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[m,t]],[/(ouya)/i,/(nintendo) (\w+)/i],[g,h,[m,k]],[/droid.+; (shield) bui/i],[h,[g,"Nvidia"],[m,k]],[/(playstation \w+)/i],[h,[g,oi],[m,k]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[h,[g,ii],[m,k]],[/((pebble))app/i],[g,h,[m,o]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[h,[g,L],[m,o]],[/droid.+; (glass) \d/i],[h,[g,Z],[m,o]],[/droid.+; (wt63?0{2,3})\)/i],[h,[g,ai],[m,o]],[/(quest( 2| pro)?)/i],[h,[g,ui],[m,o]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[g,[m,a]],[/(aeobc)\b/i],[h,[g,$],[m,a]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[h,[m,y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[h,[m,r]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[m,r]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[m,y]],[/(android[-\w\. ]{0,9});.+buil/i],[h,[g,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[v,[f,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[v,[f,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[f,v],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[v,f]],os:[[/microsoft (windows) (vista|xp)/i],[f,v],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[f,[v,qi,Ai]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[v,qi,Ai],[f,ci]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[v,/_/g,"."],[f,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[f,"macOS"],[v,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[v,f],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[f,v],[/\(bb(10);/i],[v,[f,K]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[v,[f,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[v,[f,bi+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[v,[f,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[v,[f,"watchOS"]],[/crkey\/([\d\.]+)/i],[v,[f,wi+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[f,"Chrome OS"],v],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([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,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[f,v],[/(sunos) ?([\w\.\d]*)/i],[[f,"Solaris"],v],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[f,v]]},Ni=(wi={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},yi.call(wi.init,[[V,[f,v,p]],[B,[x]],[F,[m,h,g]],[X,[f,v]],[D,[f,v]]]),yi.call(wi.isIgnore,[[V,[v,p]],[X,[v]],[D,[v]]]),yi.call(wi.isIgnoreRgx,[[V,/ ?browser$/i],[D,/ ?os$/i]]),yi.call(wi.toString,[[V,[f,v]],[B,[x]],[F,[g,h]],[X,[f,v]],[D,[f,v]]]),wi),Ii=function(e,i){var t=Ni.init[i],o=Ni.isIgnore[i]||0,r=Ni.isIgnoreRgx[i]||0,a=Ni.toString[i]||0;function s(){yi.call(this,t);}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return hi?hi.getHighEntropyValues(j).then(function(i){return e.setCH(new Pi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=G&&(s.prototype.is=function(i){var e,t=!1;for(e in this)if(this.hasOwnProperty(e)&&!n(o,e)&&xi(r?_i(r,this[e]):this[e])==xi(r?_i(r,i):i)){if(t=!0,i!=b)break}else if(i==b&&t){t=!t;break}return t},s.prototype.toString=function(){var i,e=w;for(i in a)typeof this[a[i]]!==b&&(e+=(e?" ":w)+this[a[i]]);return e||b}),hi||(s.prototype.then=function(i){var e=this,t=function(){for(var i in e)e.hasOwnProperty(i)&&(this[i]=e[i]);};t.prototype={is:s.prototype.is,toString:s.prototype.toString};t=new t;return i(t),t}),new s};function Pi(i,e){if(i=i||{},yi.call(this,j),e)yi.call(this,[[S,vi(i[z])],[C,vi(i[N])],[y,/\?1/.test(i[H])],[h,Si(i[E])],[q,Si(i[M])],[A,Si(i[R])],[x,Si(i[I])],[T,vi(i[U])],[O,Si(i[P])]]);else for(var t in i)this.hasOwnProperty(t)&&typeof i[t]!==b&&(this[t]=i[t]);}function Ui(i,e,t,o){return this.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:u:this.data},this.set=function(i,e){return this.data[i]=e,this},this.setCH=function(i){return this.uaCH=i,this},this.detectFeature=function(){if(pi&&pi.userAgent==this.ua)switch(this.itemType){case V:pi.brave&&typeof pi.brave.isBrave==c&&this.set(f,"Brave");break;case F:!this.get(m)&&hi&&hi[y]&&this.set(m,y),"Macintosh"==this.get(h)&&pi&&typeof pi.standalone!==b&&pi.maxTouchPoints&&2<pi.maxTouchPoints&&this.set(h,"iPad").set(m,r);break;case D:!this.get(f)&&hi&&hi[q]&&this.set(f,hi[q]);break;case G:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(V,i(V)).set(B,i(B)).set(F,i(F)).set(X,i(X)).set(D,i(D));}return this},this.parseUA=function(){return this.itemType!=G&&Ci.call(this.data,this.ua,this.rgxMap),this.itemType==V&&this.set(p,ki(this.get(v))),this},this.parseCH=function(){var i,e=this.uaCH,t=this.rgxMap;switch(this.itemType){case V:var o,r=e[C]||e[S];if(r)for(var a in r){var s=_i(/(Google|Microsoft) /,r[a].brand||r[a]),a=r[a].version;/not.a.brand/i.test(s)||o&&(!/chrom/i.test(o)||/chromi/i.test(s))||(this.set(f,s).set(v,a).set(p,ki(a)),o=s);}break;case B:var n=e[x];n&&(n&&"64"==e[O]&&(n+="64"),Ci.call(this.data,n+";",t));break;case F:if(e[y]&&this.set(m,y),e[h]&&this.set(h,e[h]),"Xbox"==e[h]&&this.set(m,k).set(g,ii),e[T]){if("string"!=typeof e[T])for(var w=0;!i&&w<e[T].length;)i=qi(e[T][w++],Oi);else i=qi(e[T],Oi);this.set(m,i);}break;case D:n=e[q];n&&(l=e[A],n==ci&&(l=13<=parseInt(ki(l),10)?"11":"10"),this.set(f,n).set(v,l)),this.get(f)==ci&&"Xbox"==e[h]&&this.set(f,"Xbox").set(v,u);break;case G:var b=this.data,l=function(i){return b[i].getItem().setCH(e).parseCH().get()};this.set(V,l(V)).set(B,l(B)).set(F,l(F)).set(X,l(X)).set(D,l(D));}return this},yi.call(this,[["itemType",i],["ua",e],["uaCH",o],["rgxMap",t],["data",Ii(this,i)]]),this}function Hi(i,e,t){if(typeof i===d?(e=mi(i)?(typeof e===d&&(t=e),i):(t=i,u),i=u):typeof i!==s||mi(e)||(t=e,e=u),!(this instanceof Hi))return new Hi(i,e,t).getResult();var o=typeof i===s?i:pi&&pi.userAgent?pi.userAgent:t&&t[l]?t[l]:w,r=new Pi(t,!0),a=e?fi(zi,e):zi,e=function(i){return i==G?function(){return new Ui(i,o,a,r).set("ua",o).set(V,this.getBrowser()).set(B,this.getCPU()).set(F,this.getDevice()).set(X,this.getEngine()).set(D,this.getOS()).get()}:function(){return new Ui(i,o,a[i],r).parseUA().get()}};return yi.call(this,[["getBrowser",e(V)],["getCPU",e(B)],["getDevice",e(F)],["getEngine",e(X)],["getOS",e(D)],["getResult",e(G)],["getUA",function(){return o}],["setUA",function(i){return gi(i)&&(o=i.length>_?Ti(i,_):i),this}]]).setUA(o),this}Hi.VERSION="2.0.0-beta.2",Hi.BROWSER=e([f,v,p]),Hi.CPU=e([x]),Hi.DEVICE=e([h,g,m,k,y,t,r,o,a]),Hi.ENGINE=Hi.OS=e([f,v]),(module.exports&&(exports=module.exports=Hi),exports.UAParser=Hi);var Ei,Mi=di&&(i.jQuery||i.Zepto);Mi&&!Mi.ua&&(Ei=new Hi,Mi.ua=Ei.getResult(),Mi.ua.get=function(){return Ei.getUA()},Mi.ua.set=function(i){Ei.setUA(i);var e,t=Ei.getResult();for(e in t)Mi.ua[e]=t[e];});}("object"==typeof window?window:commonjsGlobal);
1066
+ }(uaParser_pack, uaParser_pack.exports));
1993
1067
 
1994
1068
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
1995
1069
  // require the crypto API and do not support built-in fallback to lower quality random number
@@ -2024,7 +1098,7 @@ for (let i = 0; i < 256; ++i) {
2024
1098
  function unsafeStringify(arr, offset = 0) {
2025
1099
  // Note: Be careful editing this code! It's been tuned for performance
2026
1100
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
2027
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
1101
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
2028
1102
  }
2029
1103
 
2030
1104
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
@@ -2057,15 +1131,15 @@ function v4(options, buf, offset) {
2057
1131
  }
2058
1132
 
2059
1133
  class Logger {
2060
- constructor(environment) {
2061
- this.log = (...args) => {
2062
- if (this.environment !== 'production' && index.Build.isDev) {
2063
- console.clear();
2064
- console.log(...args);
2065
- }
2066
- };
2067
- this.environment = environment;
2068
- }
1134
+ constructor(environment) {
1135
+ this.log = (...args) => {
1136
+ if (this.environment !== 'production' && index.Build.isDev) {
1137
+ console.clear();
1138
+ console.log(...args);
1139
+ }
1140
+ };
1141
+ this.environment = environment;
1142
+ }
2069
1143
  }
2070
1144
 
2071
1145
  function appendToParams(url, getParamsToUpdate) {
@@ -2113,49 +1187,52 @@ function appendToParams(url, getParamsToUpdate) {
2113
1187
  }
2114
1188
 
2115
1189
  const Logo = ({ className = '', color = '#7263FA' }) => {
2116
- return (index.h("svg", { class: className, xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 256 256' },
2117
- index.h("g", { fill: color, "clip-path": 'url(#a)' },
2118
- index.h("path", { d: 'M128 185h57v57h-57zM128 14h57v57h-57zM71 185h57v57H71zM71 14h57v57H71zM14 71h57v57H14zM185 71h57v57h-57zM71 14v57H14l57-57ZM14 128h57v57H14zM185 128h57v57h-57zM14 185h57v57l-57-57ZM185 14l57 57h-57V14Z' })),
2119
- index.h("defs", null,
2120
- index.h("clipPath", { id: 'a' },
2121
- index.h("path", { fill: '#fff', d: 'M14 14h228v228H14z' })))));
1190
+ return (index.h("svg", { class: className, xmlns: "http://www.w3.org/2000/svg", viewBox: '0 0 256 256', fill: "none" },
1191
+ index.h("path", { fill: color, d: "M128 185h57v57h-57v-57ZM128 14h57v57h-57V14ZM71 185h57v57H71v-57ZM71 14h57v57H71V14ZM14 71h57v57H14V71ZM185 71h57v57h-57V71ZM71 14v57H14l57-57ZM14 128h57v57H14v-57ZM185 128h57v57h-57v-57ZM14 185h57v57l-57-57ZM185 14l57 57h-57V14Z" })));
2122
1192
  };
2123
1193
 
1194
+ const maxRetries = 30;
2124
1195
  const send = (url, opts, request, errorCount) => {
2125
- let limit = errorCount
2126
- ? Math.pow(2, errorCount - 1) * opts.startLimit
2127
- : 0;
2128
- limit = limit < opts.maxLimit ? limit : opts.maxLimit;
2129
- const pause = Math.random() * limit;
2130
- setTimeout(function () {
2131
- request.open('POST', url, true);
2132
- for (const k in opts.headers) {
2133
- if (Object.prototype.hasOwnProperty.call(opts.headers, k)) {
2134
- request.setRequestHeader(k, opts.headers[k]);
2135
- }
1196
+ if (errorCount >= maxRetries) {
1197
+ request.abort();
1198
+ request = null;
1199
+ return;
2136
1200
  }
2137
- request.send();
2138
- }, pause);
1201
+ let limit = errorCount
1202
+ ? Math.pow(2, errorCount - 1) * opts.startLimit
1203
+ : 0;
1204
+ limit = limit < opts.maxLimit ? limit : opts.maxLimit;
1205
+ const pause = Math.random() * limit;
1206
+ setTimeout(function () {
1207
+ request.open('POST', url, true);
1208
+ for (const k in opts.headers) {
1209
+ if (Object.prototype.hasOwnProperty.call(opts.headers, k)) {
1210
+ request.setRequestHeader(k, opts.headers[k]);
1211
+ }
1212
+ }
1213
+ request.send();
1214
+ }, pause);
2139
1215
  };
2140
- const xhr = (url, opts = { startLimit: 100, maxLimit: 3 * 1000, enableWithCredentials: false }, callback) => {
2141
- let errorCount = 0;
2142
- const request = new XMLHttpRequest();
2143
- if (opts.enableWithCredentials)
2144
- request.withCredentials = true;
2145
- const retry = () => send(url, opts, request, ++errorCount);
2146
- request.addEventListener('error', retry);
2147
- request.addEventListener('timeout', retry);
2148
- request.addEventListener('load', () => {
2149
- if (request.status >= 200 && request.status < 300) {
2150
- return callback(request.responseText);
2151
- }
2152
- retry();
2153
- });
2154
- send(url, opts, request, errorCount);
2155
- return request;
1216
+ const xhr = (url, opts, callback) => {
1217
+ opts = Object.assign({ startLimit: 100, maxLimit: 3 * 1000, enableWithCredentials: false }, opts);
1218
+ let errorCount = 0;
1219
+ const request = new XMLHttpRequest();
1220
+ if (opts.enableWithCredentials)
1221
+ request.withCredentials = true;
1222
+ const retry = () => send(url, opts, request, ++errorCount);
1223
+ request.addEventListener('error', retry);
1224
+ request.addEventListener('timeout', retry);
1225
+ request.addEventListener('load', () => {
1226
+ if (request.status >= 200 && request.status < 300) {
1227
+ return callback(request.responseText);
1228
+ }
1229
+ retry();
1230
+ });
1231
+ send(url, opts, request, errorCount);
1232
+ return request;
2156
1233
  };
2157
1234
  const http = {
2158
- send: xhr,
1235
+ send: xhr,
2159
1236
  };
2160
1237
 
2161
1238
  const DEFAULT_CALLBACK_URL$1 = window.location.origin + '/zero/auth';
@@ -2175,294 +1252,297 @@ const zeroLogout = '0account-logout';
2175
1252
  const zeroAuthenticated = '0account-authenticated';
2176
1253
  // const zeroAuthenticationFailed = '0account-authentication-failed';
2177
1254
  function debounce(func, timeout = 300) {
2178
- let timer;
2179
- return (...args) => {
2180
- clearTimeout(timer);
2181
- timer = setTimeout(() => {
2182
- func.apply(this, args);
2183
- }, timeout);
2184
- };
1255
+ let timer;
1256
+ return (...args) => {
1257
+ clearTimeout(timer);
1258
+ timer = setTimeout(() => {
1259
+ func.apply(this, args);
1260
+ }, timeout);
1261
+ };
2185
1262
  }
2186
1263
  class WS {
2187
- constructor(appId, opts) {
2188
- this.wsURL = API_URL;
2189
- this.callbackURL = DEFAULT_CALLBACK_URL$1;
2190
- if (!opts.env)
2191
- opts.env = Environment.production;
2192
- this.appId = appId;
2193
- this.uaParser = opts.uaParser;
2194
- this.callbackURL = opts.callbackURL;
2195
- this.updateInterval = opts.updateInterval;
2196
- this.log = opts.log;
2197
- if (opts.env !== Environment.production)
2198
- this.wsURL = API_URL_STAGING;
2199
- this.init();
2200
- }
2201
- deviceInfo() {
2202
- return {
2203
- appId: this.appId,
2204
- browser: this.uaParser.getBrowser().name,
2205
- os: this.uaParser.getOS().name,
2206
- // TODO: handle these on backend:
2207
- // device: `${this.uaParser.getDevice().vendor} ${this.uaParser.getDevice().model}`,
2208
- // all: this.uaParser.getResult()
2209
- };
2210
- }
2211
- reinit() {
2212
- const retry = debounce(this.init.bind(this), 1000);
2213
- retry();
2214
- }
2215
- init() {
2216
- const onopen = (_) => {
2217
- this.send(fromWidgetEnsureSession, this.deviceInfo());
2218
- };
2219
- const onmessage = (event) => {
2220
- try {
2221
- const data = JSON.parse(event.data);
2222
- this.handleMessage(data);
2223
- }
2224
- catch (e) {
2225
- this.log(e);
2226
- }
2227
- };
2228
- const onerror = (_) => {
2229
- if (this.socket && (this.socket.readyState !== WebSocket.CLOSED
2230
- && this.socket.readyState !== WebSocket.CLOSING)) {
2231
- this.socket.close();
2232
- }
2233
- };
2234
- const onclose = (_) => {
2235
- if (this.socket) {
2236
- this.socket.removeEventListener('open', onopen);
2237
- this.socket.removeEventListener('message', onmessage);
2238
- this.socket.removeEventListener('error', onerror);
2239
- this.socket.removeEventListener('close', onclose);
2240
- delete this.socket;
2241
- }
2242
- this.reinit();
2243
- };
2244
- if (this.socket) {
2245
- this.socket.removeEventListener('open', onopen);
2246
- this.socket.removeEventListener('message', onmessage);
2247
- this.socket.removeEventListener('error', onerror);
2248
- this.socket.removeEventListener('close', onclose);
1264
+ constructor(appId, opts) {
1265
+ this.wsURL = API_URL;
1266
+ this.callbackURL = DEFAULT_CALLBACK_URL$1;
1267
+ if (!opts.env)
1268
+ opts.env = Environment.production;
1269
+ this.appId = appId;
1270
+ this.uaParser = opts.uaParser;
1271
+ this.callbackURL = opts.callbackURL;
1272
+ this.updateInterval = opts.updateInterval;
1273
+ this.enableWithCredentials = opts.enableWithCredentials;
1274
+ this.log = opts.log;
1275
+ if (opts.env !== Environment.production)
1276
+ this.wsURL = API_URL_STAGING;
1277
+ this.init();
2249
1278
  }
2250
- this.socket = new WebSocket(this.wsURL);
2251
- this.socket.addEventListener('open', onopen);
2252
- this.socket.addEventListener('message', onmessage);
2253
- this.socket.addEventListener('error', onerror);
2254
- this.socket.addEventListener('close', onclose);
2255
- }
2256
- updateUUID(uuid) {
2257
- this.uuid = uuid;
2258
- this.send(fromWidgetUUIDUpdated, this.deviceInfo());
2259
- }
2260
- send(action, data) {
2261
- if (!this.socket || !this.socket.readyState || this.socket.readyState !== WebSocket.OPEN) {
2262
- const retry = debounce(this.send.bind(this), 1000);
2263
- return retry();
1279
+ deviceInfo() {
1280
+ return {
1281
+ appId: this.appId,
1282
+ browser: this.uaParser.getBrowser().withFeatureCheck().name,
1283
+ os: this.uaParser.getOS().withFeatureCheck().name,
1284
+ // TODO: handle these on backend:
1285
+ // device: `${this.uaParser.getDevice().vendor} ${this.uaParser.getDevice().model}`,
1286
+ // all: this.uaParser.getResult()
1287
+ };
2264
1288
  }
2265
- const msg = {
2266
- action: action,
2267
- timeout: `${this.updateInterval}ms`,
2268
- uuid: this.uuid,
2269
- appId: `${this.appId}`,
2270
- message: {},
2271
- };
2272
- if (action === fromWidgetEnsureSession) {
2273
- const sessionId = localStorage.getItem(`${PREFIX}_${SESSION_ID}`);
2274
- const sessionToken = localStorage.getItem(`${PREFIX}_${SESSION_TOKEN}`);
2275
- if (!sessionId || !sessionToken)
2276
- return;
2277
- msg.sessionId = sessionId;
2278
- msg.sessionToken = sessionToken;
1289
+ reinit() {
1290
+ const retry = debounce(this.init.bind(this), 1000);
1291
+ retry();
2279
1292
  }
2280
- if (data)
2281
- msg.message = data;
2282
- this.socket.send(JSON.stringify(msg));
2283
- }
2284
- onZeroAuth() {
2285
- if (this.request)
2286
- this.request.abort();
2287
- this.request = http.send(this.callbackURL, {
2288
- enableWithCredentials: true,
2289
- headers: {
2290
- 'x-0account-uuid': this.uuid,
2291
- 'x-0account-auth': 'true',
2292
- },
2293
- }, (responseText) => {
2294
- try {
2295
- const data = JSON.parse(responseText);
2296
- this.dispatchEventAndWsSend(zeroAuthenticated, data);
2297
- }
2298
- catch (err) {
2299
- this.log(err);
2300
- }
2301
- });
2302
- }
2303
- handleMessage(msg) {
2304
- switch (msg.action) {
2305
- case toWidgetApproved:
2306
- this.onZeroAuth();
2307
- localStorage.setItem(`${PREFIX}_${SESSION_ID}`, msg.sessionId);
2308
- localStorage.setItem(`${PREFIX}_${SESSION_TOKEN}`, msg.message);
2309
- break;
2310
- case toWidgetLogout:
2311
- localStorage.removeItem(`${PREFIX}_${SESSION_ID}`);
2312
- localStorage.removeItem(`${PREFIX}_${SESSION_TOKEN}`);
2313
- this.dispatchEvent(zeroLogout);
2314
- break;
2315
- case toAnyError:
2316
- this.log('ws error', msg);
2317
- break;
2318
- default:
2319
- this.log('incorrect action', msg.action, msg);
1293
+ init() {
1294
+ const onopen = (_) => {
1295
+ this.send(fromWidgetEnsureSession, this.deviceInfo());
1296
+ };
1297
+ const onmessage = (event) => {
1298
+ try {
1299
+ const data = JSON.parse(event.data);
1300
+ this.handleMessage(data);
1301
+ }
1302
+ catch (e) {
1303
+ this.log(e);
1304
+ }
1305
+ };
1306
+ const onerror = (_) => {
1307
+ if (this.socket && (this.socket.readyState !== WebSocket.CLOSED
1308
+ && this.socket.readyState !== WebSocket.CLOSING)) {
1309
+ this.socket.close();
1310
+ }
1311
+ };
1312
+ const onclose = (_) => {
1313
+ if (this.socket) {
1314
+ this.socket.removeEventListener('open', onopen);
1315
+ this.socket.removeEventListener('message', onmessage);
1316
+ this.socket.removeEventListener('error', onerror);
1317
+ this.socket.removeEventListener('close', onclose);
1318
+ delete this.socket;
1319
+ }
1320
+ this.reinit();
1321
+ };
1322
+ if (this.socket) {
1323
+ this.socket.removeEventListener('open', onopen);
1324
+ this.socket.removeEventListener('message', onmessage);
1325
+ this.socket.removeEventListener('error', onerror);
1326
+ this.socket.removeEventListener('close', onclose);
1327
+ }
1328
+ this.socket = new WebSocket(this.wsURL);
1329
+ this.socket.addEventListener('open', onopen);
1330
+ this.socket.addEventListener('message', onmessage);
1331
+ this.socket.addEventListener('error', onerror);
1332
+ this.socket.addEventListener('close', onclose);
1333
+ }
1334
+ updateUUID(uuid) {
1335
+ this.uuid = uuid;
1336
+ this.send(fromWidgetUUIDUpdated, this.deviceInfo());
1337
+ }
1338
+ send(action, data) {
1339
+ if (!this.socket || !this.socket.readyState || this.socket.readyState !== WebSocket.OPEN) {
1340
+ const retry = debounce(this.send.bind(this), 1000);
1341
+ return retry();
1342
+ }
1343
+ const msg = {
1344
+ action: action,
1345
+ timeout: `${this.updateInterval}ms`,
1346
+ uuid: this.uuid,
1347
+ appId: `${this.appId}`,
1348
+ message: {},
1349
+ };
1350
+ if (action === fromWidgetEnsureSession) {
1351
+ const sessionId = localStorage.getItem(`${PREFIX}_${SESSION_ID}`);
1352
+ const sessionToken = localStorage.getItem(`${PREFIX}_${SESSION_TOKEN}`);
1353
+ if (!sessionId || !sessionToken)
1354
+ return;
1355
+ msg.sessionId = sessionId;
1356
+ msg.sessionToken = sessionToken;
1357
+ }
1358
+ if (data)
1359
+ msg.message = data;
1360
+ this.socket.send(JSON.stringify(msg));
1361
+ }
1362
+ onZeroAuth() {
1363
+ if (this.request)
1364
+ this.request.abort();
1365
+ this.request = http.send(this.callbackURL, {
1366
+ enableWithCredentials: this.enableWithCredentials,
1367
+ headers: {
1368
+ 'x-0account-uuid': this.uuid,
1369
+ 'x-0account-auth': 'true',
1370
+ },
1371
+ }, (responseText) => {
1372
+ try {
1373
+ const data = JSON.parse(responseText);
1374
+ this.dispatchEventAndWsSend(zeroAuthenticated, data);
1375
+ }
1376
+ catch (err) {
1377
+ this.log(err);
1378
+ }
1379
+ });
1380
+ }
1381
+ handleMessage(msg) {
1382
+ switch (msg.action) {
1383
+ case toWidgetApproved:
1384
+ this.onZeroAuth();
1385
+ localStorage.setItem(`${PREFIX}_${SESSION_ID}`, msg.sessionId);
1386
+ localStorage.setItem(`${PREFIX}_${SESSION_TOKEN}`, msg.message);
1387
+ break;
1388
+ case toWidgetLogout:
1389
+ localStorage.removeItem(`${PREFIX}_${SESSION_ID}`);
1390
+ localStorage.removeItem(`${PREFIX}_${SESSION_TOKEN}`);
1391
+ this.dispatchEvent(zeroLogout);
1392
+ break;
1393
+ case toAnyError:
1394
+ this.log('ws error', msg);
1395
+ break;
1396
+ default:
1397
+ this.log('incorrect action', msg.action, msg);
1398
+ }
1399
+ }
1400
+ dispatchEventAndWsSend(name, data) {
1401
+ this.dispatchEvent(name, data);
1402
+ this.send('from-widget-' + name, data);
1403
+ }
1404
+ dispatchEvent(name, data) {
1405
+ let event = new CustomEvent(name);
1406
+ if (data)
1407
+ event = new CustomEvent(name, { detail: data });
1408
+ document.dispatchEvent(event);
2320
1409
  }
2321
- }
2322
- dispatchEventAndWsSend(name, data) {
2323
- this.dispatchEvent(name, data);
2324
- this.send('from-widget-' + name, data);
2325
- }
2326
- dispatchEvent(name, data) {
2327
- let event = new CustomEvent(name);
2328
- if (data)
2329
- event = new CustomEvent(name, { detail: data });
2330
- document.dispatchEvent(event);
2331
- }
2332
1410
  }
2333
1411
 
2334
- const zeroAccountCss = ":host{--primary-color:#7263FA;--primary-background-color:#FFF;--button-animation-duration:200ms;--text-color:#000;--button-border-color:#B2D4FF;--button-border-radius:9999px;--button-background-color:var(--primary-background-color);--modal-logo-border-color:var(--primary-color);--modal-animation-duration:350ms;--easing:cubic-bezier(0.16, 1, 0.3, 1);font-family:sans-serif}.dark{--button-background-color:rgb(30, 41, 59);--primary-background-color:rgb(30, 41, 59);--button-border-color:#FFFFF9;--text-color:#FFFFF9;--modal-logo-border-color:#CCC}.button{font-size:16px;color:var(--text-color);cursor:pointer;padding:8px 12px 8px 10px;display:flex;flex-direction:row;align-items:center;gap:6px;border:1px solid var(--button-border-color);background-color:var(--button-background-color);border-radius:var(--button-border-radius)}.button:hover{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 3px rgba(0, 0, 0, 0.3);background:linear-gradient(\n to top,\n rgba(200, 200, 200, 0.1),\n rgba(200, 200, 200, 0.1)\n ) var(--button-background-color)}.button:active{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 0 rgba(0, 0, 0, 0)}.button__logo{width:1.3rem}.modal{display:flex;z-index:9999;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;background-color:rgba(0, 0, 0, 0.3);transition:opacity var(--modal-animation-duration) var(--easing)}.modal--hidden{opacity:0;pointer-events:none}.modal__content{max-width:240px;border-radius:4px;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--primary-background-color);transform:scale(1);transition:transform var(--modal-animation-duration) var(--easing)}.modal--hidden .modal__content{transform:scale(0.5)}.modal__qrcode__container{position:relative}.modal__qrcode{border-radius:4px;width:100%;height:auto}.modal__logo{padding:8px;border:2px var(--modal-logo-border-color) solid;border-radius:var(--button-border-radius);background-color:var(--primary-background-color);position:absolute;width:16%;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.modal-animated .circle__overlay{width:100%;height:100%}.modal-animated .modal__qrcode{filter:blur(2px)}.modal-animated .modal__logo{border:none;animation:spin 2.5s var(--easing) infinite}@keyframes spin{0%{transform:translate3d(-50%, -50%, 0) rotate(0deg)}50%{transform:translate3d(-50%, -50%, 0) rotate(180deg)}100%{transform:translate3d(-50%, -50%, 0) rotate(360deg)}}.modal__buttons{width:100%;flex-direction:column;align-items:center;margin-top:14px;display:flex;text-align:center}.modal:not(.modal--hidden) .modal__button{transform:scale(1) translate3d(0, 0, 0)}.modal:not(.modal--hidden) .modal__link{transform:scale(1) translate3d(0, 0, 0)}.modal__button{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 50ms) var(--easing);transition-property:scale, transform, background-color;cursor:pointer;padding:12px;font-size:14px;background-color:var(--primary-color);color:white;border:none;border-radius:6px;width:100%}.modal__button:hover{background:linear-gradient(\n to top,\n rgba(0, 0, 0, 0.1),\n rgba(0, 0, 0, 0.1)\n ) var(--primary-color)}.modal__link{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 150ms) var(--easing);transition-property:scale, transform;font-size:0.8rem;padding:10px 20px 0;color:var(--primary-color);width:100%;text-decoration:underline rgba(0, 0, 0, 0)}.modal__link:hover{text-decoration-color:var(--primary-color)}.modal__close-button{position:absolute;top:-26px;right:-26px;width:24px;height:24px;background-color:rgba(0, 0, 0, 0.1);border-radius:10px;cursor:pointer;transition:background-color var(--modal-animation-duration) var(--easing)}.modal__close-button:hover{background-color:rgba(0, 0, 0, 0.3)}.modal__close-button:before,.modal__close-button:after{content:\"\";position:absolute;top:50%;left:50%;width:50%;height:1px;background-color:rgba(255, 255, 255, 0.8);transform:translate(-50%, -50%) rotate(45deg)}.modal__close-button:after{transform:translate(-50%, -50%) rotate(-45deg)}.circle__overlay{overflow:hidden;top:50%;left:50%;transform:translate(-50%, -50%);position:absolute;background-color:var(--primary-background-color);border-radius:var(--button-border-radius);width:10%;height:10%;border:2px var(--modal-logo-border-color) solid;transition:calc(var(--modal-animation-duration) + 200ms) var(--easing);transition-property:width, height, opacity}.circle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100px;height:100px;border-radius:50%;background-color:#E0E0E0;animation:circle__ripple 2s linear infinite}.circle--medium{width:150px;height:150px;animation-duration:2.5s}.circle--large{width:200px;height:200px;animation-duration:3s}@keyframes circle__ripple{0%{transform:translate(-50%, -50%) scale(0);opacity:1}100%{transform:translate(-50%, -50%) scale(1.5);opacity:0}}";
1412
+ const zeroAccountCss = ":host{--primary-color:#7263FA;--primary-background-color:#FFF;--theme-based-radius:0px;--theme-based-padding:0px;--button-animation-duration:200ms;--text-color:#000;--button-border-color:#B2D4FF;--button-border-radius:9999px;--button-background-color:var(--primary-background-color);--modal-logo-border-color:var(--primary-color);--modal-animation-duration:350ms;--easing:cubic-bezier(0.16, 1, 0.3, 1);font-family:sans-serif}.dark{--button-background-color:rgb(30, 41, 59);--primary-background-color:rgb(30, 41, 59);--button-border-color:#FFFFF9;--text-color:#FFFFF9;--modal-logo-border-color:#CCC;--theme-based-radius:4px;--theme-based-padding:8px}.button{font-size:16px;color:var(--text-color);cursor:pointer;padding:8px 12px 8px 10px;display:flex;flex-direction:row;align-items:center;gap:6px;border:1px solid var(--button-border-color);background-color:var(--button-background-color);border-radius:var(--button-border-radius)}.button:hover{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 3px rgba(0, 0, 0, 0.3);background:linear-gradient(\n to top,\n rgba(200, 200, 200, 0.1),\n rgba(200, 200, 200, 0.1)\n ) var(--button-background-color)}.button:active{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 0 rgba(0, 0, 0, 0)}.button__logo{width:1.3rem}.modal{display:flex;z-index:9999;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;background-color:rgba(0, 0, 0, 0.3);transition:opacity var(--modal-animation-duration) var(--easing)}.modal--hidden{opacity:0;pointer-events:none}.modal__content{max-width:240px;border-radius:4px;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--primary-background-color);transform:scale(1);transition:transform var(--modal-animation-duration) var(--easing)}.modal--hidden .modal__content{transform:scale(0.5)}.modal__qrcode__container{position:relative;background-color:white;border-radius:var(--theme-based-radius);padding:var(--theme-based-padding)}.modal__qrcode{border-radius:4px;width:100%;height:auto}.modal__logo{padding:8px;border:2px var(--modal-logo-border-color) solid;border-radius:var(--button-border-radius);background-color:var(--primary-background-color);position:absolute;width:16%;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.modal-animated .circle__overlay{width:100%;height:100%}.modal-animated .modal__qrcode{filter:blur(2px)}.modal-animated .modal__logo{border:none;animation:spin 2.5s var(--easing) infinite}@keyframes spin{0%{transform:translate3d(-50%, -50%, 0) rotate(0deg)}50%{transform:translate3d(-50%, -50%, 0) rotate(180deg)}100%{transform:translate3d(-50%, -50%, 0) rotate(360deg)}}.modal__buttons{width:100%;flex-direction:column;align-items:center;margin-top:14px;display:flex;text-align:center}.modal:not(.modal--hidden) .modal__button{transform:scale(1) translate3d(0, 0, 0)}.modal:not(.modal--hidden) .modal__link{transform:scale(1) translate3d(0, 0, 0)}.modal__button{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 50ms) var(--easing);transition-property:scale, transform, background-color;cursor:pointer;padding:12px;font-size:14px;background-color:var(--primary-color);color:white;border:none;border-radius:6px;width:100%}.modal__button:hover{background:linear-gradient(\n to top,\n rgba(0, 0, 0, 0.1),\n rgba(0, 0, 0, 0.1)\n ) var(--primary-color)}.modal__link{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 150ms) var(--easing);transition-property:scale, transform;font-size:0.8rem;padding:10px 20px 0;color:var(--primary-color);width:100%;text-decoration:underline rgba(0, 0, 0, 0)}.modal__link:hover{text-decoration-color:var(--primary-color)}.modal__close-button{position:absolute;top:-26px;right:-26px;width:24px;height:24px;background-color:rgba(0, 0, 0, 0.1);border-radius:10px;cursor:pointer;transition:background-color var(--modal-animation-duration) var(--easing)}.modal__close-button:hover{background-color:rgba(0, 0, 0, 0.3)}.modal__close-button:before,.modal__close-button:after{content:\"\";position:absolute;top:50%;left:50%;width:50%;height:1px;background-color:rgba(255, 255, 255, 0.8);transform:translate(-50%, -50%) rotate(45deg)}.modal__close-button:after{transform:translate(-50%, -50%) rotate(-45deg)}.circle__overlay{overflow:hidden;top:50%;left:50%;transform:translate(-50%, -50%);position:absolute;background-color:var(--primary-background-color);border-radius:var(--button-border-radius);width:10%;height:10%;border:2px var(--modal-logo-border-color) solid;transition:calc(var(--modal-animation-duration) + 200ms) var(--easing);transition-property:width, height, opacity}.circle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100px;height:100px;border-radius:50%;background-color:#E0E0E0;animation:circle__ripple 2s linear infinite}.circle--medium{width:150px;height:150px;animation-duration:2.5s}.circle--large{width:200px;height:200px;animation-duration:3s}@keyframes circle__ripple{0%{transform:translate(-50%, -50%) scale(0);opacity:1}100%{transform:translate(-50%, -50%) scale(1.5);opacity:0}}";
1413
+ const ZeroAccountStyle0 = zeroAccountCss;
2335
1414
 
2336
1415
  const maxInterval = 59 * 60 * 1000;
2337
1416
  const minInterval = 10 * 1000;
2338
1417
  const DEFAULT_CALLBACK_URL = window.location.origin + '/zero/auth';
2339
1418
  const ANIMATION_DURATION = 3000;
2340
1419
  const ZeroAccount = class {
2341
- constructor(hostRef) {
2342
- index.registerInstance(this, hostRef);
2343
- this.refreshQR = (ignoreAnimate = false) => {
2344
- const update = () => {
2345
- this.restartTimer();
2346
- this.updateURL();
2347
- };
2348
- if (ignoreAnimate)
2349
- return update();
2350
- this.isAnimating = true;
2351
- this.animationTimer = window.setTimeout(() => {
2352
- update();
1420
+ constructor(hostRef) {
1421
+ index.registerInstance(this, hostRef);
1422
+ this.refreshQR = (ignoreAnimate = false) => {
1423
+ const update = () => {
1424
+ this.restartTimer();
1425
+ this.updateURL();
1426
+ };
1427
+ if (ignoreAnimate)
1428
+ return update();
1429
+ this.isAnimating = true;
1430
+ this.animationTimer = window.setTimeout(() => {
1431
+ update();
1432
+ this.isAnimating = false;
1433
+ }, ANIMATION_DURATION);
1434
+ };
1435
+ this.hideOnEsc = (e) => {
1436
+ if ((e.key === 'Escape' || e.key === 'Esc')) {
1437
+ this.modalOpen = false;
1438
+ }
1439
+ };
1440
+ this.log = (...args) => this.logger.log(...args);
1441
+ this.appId = undefined;
1442
+ this.updateInterval = 3 * 60 * 1000;
1443
+ this.callbackURL = DEFAULT_CALLBACK_URL;
1444
+ this.modal = true;
1445
+ this.level = ErrorCorrectionLevel.M;
1446
+ this.primaryColor = '#3C444F';
1447
+ this.secondaryColor = undefined;
1448
+ this.environment = Environment.production;
1449
+ this.enableWithCredentials = false;
1450
+ this.themePreset = ThemePreset.light;
1451
+ this.autoStartApp = true;
1452
+ this.modalOpen = false;
2353
1453
  this.isAnimating = false;
2354
- }, ANIMATION_DURATION);
2355
- };
2356
- this.hideOnEsc = (e) => {
2357
- if ((e.key === 'Escape' || e.key === 'Esc')) {
1454
+ this.url = '';
1455
+ }
1456
+ getUpdateInterval() {
1457
+ // make sure the provided value is within bounds
1458
+ return Math.min(Math.max(this.updateInterval, minInterval), maxInterval);
1459
+ }
1460
+ toggleModal() {
1461
+ this.modalOpen = !this.modalOpen;
1462
+ if (this.modalOpen)
1463
+ this.refreshQR(true);
1464
+ if ((this.modalOpen && this.autoStartApp) || this.isMobile())
1465
+ this.openApp();
1466
+ }
1467
+ _closeModal() {
2358
1468
  this.modalOpen = false;
2359
- }
2360
- };
2361
- this.log = (...args) => this.logger.log(...args);
2362
- this.appId = undefined;
2363
- this.updateInterval = 3 * 60 * 1000;
2364
- this.callbackURL = DEFAULT_CALLBACK_URL;
2365
- this.modal = true;
2366
- this.level = ErrorCorrectionLevel.M;
2367
- this.primaryColor = '#3C444F';
2368
- this.secondaryColor = undefined;
2369
- this.environment = Environment.production;
2370
- this.enableWithCredentials = false;
2371
- this.themePreset = ThemePreset.light;
2372
- this.autoStartApp = true;
2373
- this.modalOpen = false;
2374
- this.isAnimating = false;
2375
- this.url = '';
2376
- }
2377
- getUpdateInterval() {
2378
- // make sure the provided value is within bounds
2379
- return Math.min(Math.max(this.updateInterval, minInterval), maxInterval);
2380
- }
2381
- toggleModal() {
2382
- this.modalOpen = !this.modalOpen;
2383
- if (this.modalOpen)
2384
- this.refreshQR(true);
2385
- if ((this.modalOpen && this.autoStartApp) || this.isMobile())
2386
- this.openApp();
2387
- }
2388
- _closeModal() {
2389
- this.modalOpen = false;
2390
- this.stopTimer();
2391
- }
2392
- closeModal(e) {
2393
- if (e.target !== this.modalEl && e.target !== this.closeButtonEl) {
2394
- return e.stopPropagation();
1469
+ this.stopTimer();
2395
1470
  }
2396
- this._closeModal();
2397
- }
2398
- openApp() {
2399
- if (this.modalOpen) {
2400
- window.location.href = this.url;
1471
+ closeModal(e) {
1472
+ if (e.target !== this.modalEl && e.target !== this.closeButtonEl) {
1473
+ return e.stopPropagation();
1474
+ }
1475
+ this._closeModal();
2401
1476
  }
2402
- }
2403
- render() {
2404
- const logoColor = this.themePreset === ThemePreset.light ? '#7263FA' : '#FFFFF9';
2405
- const qrColor = this.themePreset === ThemePreset.light ? '#000' : '#FFFFF9';
2406
- return (index.h(index.Host, null, index.h("slot", null), this.host.childNodes.length === 0 &&
2407
- index.h("button", { class: `button ${this.themePreset}`, onClick: () => this.toggleModal() }, index.h(Logo, { className: 'button__logo', color: logoColor }), "use 0account"), index.h("div", { ref: el => this.modalEl = el, onClick: (e) => this.closeModal(e), class: `modal ${this.themePreset} ${this.isAnimating ? 'modal-animated' : ''} ${this.modalOpen ? '' : 'modal--hidden'}` }, index.h("div", { class: 'modal__content' }, index.h("div", { ref: el => this.closeButtonEl = el, class: 'modal__close-button' }), index.h("div", { class: 'modal__qrcode__container' }, index.h("qr-code", { url: this.url, class: `modal__qrcode`, level: this.level, color: qrColor }), index.h("div", { class: 'circle__overlay' }, index.h("div", { class: 'circle' }), index.h("div", { class: 'circle circle--medium' }), index.h("div", { class: 'circle circle--large' })), index.h(Logo, { className: 'modal__logo', color: logoColor })), index.h("div", { class: 'modal__buttons' }, index.h("button", { onClick: () => this.openApp(), class: 'modal__button' }, "Open the desktop app"), index.h("a", { href: '#', class: 'modal__link' }, "Download the app"))))));
2408
- }
2409
- // called only once
2410
- componentWillLoad() {
2411
- this.logger = new Logger(this.environment);
2412
- this.uaParser = new uaParser.UAParser();
2413
- this.ws = new WS(this.appId, {
2414
- updateInterval: this.getUpdateInterval(),
2415
- callbackURL: this.callbackURL,
2416
- uaParser: this.uaParser,
2417
- env: this.environment,
2418
- log: this.log,
2419
- });
2420
- // make sure we initQR
2421
- this.refreshQR(true);
2422
- document.addEventListener('keydown', this.hideOnEsc);
2423
- }
2424
- updateURL() {
2425
- const expires = new Date().getTime() + this.getUpdateInterval();
2426
- const uuid = v4();
2427
- this.ws.updateUUID(uuid);
2428
- const params = appendToParams('', {
2429
- appId: this.appId,
2430
- uuid: uuid,
2431
- expires: expires,
2432
- });
2433
- if (this.isMobile()) {
2434
- this.url = 'https://launch.0account.com/auth?' + params;
1477
+ openApp() {
1478
+ if (this.modalOpen) {
1479
+ window.location.href = this.url;
1480
+ }
2435
1481
  }
2436
- else {
2437
- this.url = 'zero-account://auth?' + params;
1482
+ render() {
1483
+ const logoColor = this.themePreset === ThemePreset.light ? '#7263FA' : '#FFFFF9';
1484
+ const qrColor = '#000';
1485
+ return (index.h(index.Host, { key: '1dc3610232166249e09861006f22ad43a58d208d' }, index.h("slot", { key: '5c510d06b9423a2540e494c57eebda16ac2f3fe6' }), this.host.childNodes.length === 0 &&
1486
+ index.h("button", { class: `button ${this.themePreset}`, onClick: () => this.toggleModal() }, index.h(Logo, { className: 'button__logo', color: logoColor }), "use 0account"), index.h("div", { key: '1ccab237f88fe77eb22f0c0b82b9612b536a6eb2', ref: el => this.modalEl = el, onClick: (e) => this.closeModal(e), class: `modal ${this.themePreset} ${this.isAnimating ? 'modal-animated' : ''} ${this.modalOpen ? '' : 'modal--hidden'}` }, index.h("div", { key: 'cca5693c98f2dbf7aa5584e62862e90783c24bdb', class: 'modal__content' }, index.h("div", { key: 'fa239e9bb2f618a7d0067c74d6c599f1482aa0ce', ref: el => this.closeButtonEl = el, class: 'modal__close-button' }), index.h("div", { key: '3d8e206fbbb7a45f0b634fc1ac5cda0a3434d6d9', class: 'modal__qrcode__container' }, index.h("qr-code", { key: 'a2f7f00f7926c7994c79098b4f386e4e60f16bc4', url: this.url, class: `modal__qrcode`, level: this.level, color: qrColor }), index.h("div", { key: '5819116a32e44341a408b79d5ed48a31c0be17d9', class: 'circle__overlay' }, index.h("div", { key: '67220c1757145e3263fdf8b265730a9b50628034', class: 'circle' }), index.h("div", { key: '2d43067a7a3e0fad60670a92f026925b7b2141f0', class: 'circle circle--medium' }), index.h("div", { key: 'c6cc6df2fcfd06b895e185f5b818150ea031c15e', class: 'circle circle--large' })), index.h(Logo, { key: '1e5b5f9687d0629cacd3c2524bb271824c03f102', className: 'modal__logo', color: logoColor })), index.h("div", { key: '13e998689e3b8942c39f94c8d67b1d6908ea63de', class: 'modal__buttons' }, index.h("button", { key: '879631b5e37bd0b9f440023edbef542d3628142c', onClick: () => this.openApp(), class: 'modal__button' }, "Open the desktop app"), index.h("a", { key: '3be4413c520f42982546535badf4aa133a25ee78', href: 'https://0account.com/downloads', class: 'modal__link' }, "Download the app"))))));
2438
1487
  }
2439
- }
2440
- isMobile() {
2441
- const device = this.uaParser.getDevice();
2442
- return device.type === 'tablet' || device.type === 'mobile';
2443
- }
2444
- connectedCallback() {
2445
- this.startTimer();
2446
- }
2447
- disconnectedCallback() {
2448
- this.stopTimer();
2449
- document.removeEventListener('keydown', this.hideOnEsc);
2450
- }
2451
- restartTimer() {
2452
- this.stopTimer();
2453
- this.startTimer();
2454
- }
2455
- startTimer() {
2456
- this.timer = window.setInterval(this.refreshQR, this.getUpdateInterval());
2457
- }
2458
- stopTimer() {
2459
- window.clearInterval(this.timer);
2460
- window.clearTimeout(this.animationTimer);
2461
- this.isAnimating = false;
2462
- }
2463
- get host() { return index.getElement(this); }
1488
+ // called only once
1489
+ componentWillLoad() {
1490
+ this.logger = new Logger(this.environment);
1491
+ this.uaParser = new uaParser_pack.exports.UAParser();
1492
+ this.ws = new WS(this.appId, {
1493
+ updateInterval: this.getUpdateInterval(),
1494
+ enableWithCredentials: this.enableWithCredentials,
1495
+ callbackURL: this.callbackURL,
1496
+ uaParser: this.uaParser,
1497
+ env: this.environment,
1498
+ log: this.log,
1499
+ });
1500
+ // make sure we initQR
1501
+ this.refreshQR(true);
1502
+ document.addEventListener('keydown', this.hideOnEsc);
1503
+ }
1504
+ updateURL() {
1505
+ const expires = new Date().getTime() + this.getUpdateInterval();
1506
+ const uuid = v4();
1507
+ this.ws.updateUUID(uuid);
1508
+ const params = appendToParams('', {
1509
+ appId: this.appId,
1510
+ uuid: uuid,
1511
+ expires: expires,
1512
+ });
1513
+ if (this.isMobile()) {
1514
+ this.url = 'https://launch.0account.com/auth?' + params;
1515
+ }
1516
+ else {
1517
+ this.url = 'zero-account://auth?' + params;
1518
+ }
1519
+ }
1520
+ isMobile() {
1521
+ const device = this.uaParser.getDevice();
1522
+ return device.type === 'tablet' || device.type === 'mobile';
1523
+ }
1524
+ connectedCallback() {
1525
+ this.startTimer();
1526
+ }
1527
+ disconnectedCallback() {
1528
+ this.stopTimer();
1529
+ document.removeEventListener('keydown', this.hideOnEsc);
1530
+ }
1531
+ restartTimer() {
1532
+ this.stopTimer();
1533
+ this.startTimer();
1534
+ }
1535
+ startTimer() {
1536
+ this.timer = window.setInterval(this.refreshQR, this.getUpdateInterval());
1537
+ }
1538
+ stopTimer() {
1539
+ window.clearInterval(this.timer);
1540
+ window.clearTimeout(this.animationTimer);
1541
+ this.isAnimating = false;
1542
+ }
1543
+ get host() { return index.getElement(this); }
2464
1544
  };
2465
- ZeroAccount.style = zeroAccountCss;
1545
+ ZeroAccount.style = ZeroAccountStyle0;
2466
1546
 
2467
1547
  exports.qr_code = QRCode;
2468
1548
  exports.zero_account = ZeroAccount;