ua-browser 1.4.0-beta.0 → 1.4.0

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.
package/dist/index.d.cts CHANGED
@@ -3,20 +3,28 @@ type BrowserName = 'Safari' | 'Chrome' | 'Arc' | 'Brave' | 'IE' | 'Edge' | 'Fire
3
3
  type OsName = 'Windows' | 'Linux' | 'MacOS' | 'Android' | 'HarmonyOS' | 'OpenHarmony' | 'Ubuntu' | 'FreeBSD' | 'Debian' | 'Windows Phone' | 'BlackBerry' | 'MeeGo' | 'Symbian' | 'iOS' | 'visionOS' | 'tvOS' | 'Chrome OS' | 'WebOS' | 'Tizen' | 'KaiOS' | 'unknown';
4
4
  type DeviceName = 'Mobile' | 'Tablet' | 'PC' | 'TV' | 'Console' | 'XR' | 'unknown';
5
5
  type ArchName$1 = 'x86' | 'x86_64' | 'arm' | 'arm64' | 'unknown';
6
+ type BotCategory = 'search-engine' | 'ai-llm' | 'social' | 'link-preview' | 'seo-tool' | 'monitoring' | 'generic' | 'unknown';
7
+ type BrowserType = 'browser' | 'brand' | 'app' | 'unknown';
6
8
  type BotName$1 = 'Googlebot' | 'Bingbot' | 'Baiduspider' | 'Bytespider' | 'YandexBot' | 'DuckDuckBot' | 'Slurp' | 'Sogou' | '360Spider' | 'Applebot-Extended' | 'Applebot' | 'Facebookbot' | 'Twitterbot' | 'LinkedInBot' | 'PinterestBot' | 'Slackbot' | 'Discordbot' | 'TelegramBot' | 'WhatsApp' | 'SemrushBot' | 'AhrefsBot' | 'MJ12bot' | 'PetalBot' | 'ScreamingFrog' | 'DataForSeoBot' | 'GPTBot' | 'OAI-SearchBot' | 'ChatGPT-User' | 'ClaudeBot' | 'PerplexityBot' | 'CCBot' | 'AdsBot' | 'Google-Extended' | 'Meta-ExternalAgent' | 'Amazonbot' | 'Diffbot' | 'cohere-ai' | 'YouBot' | 'UptimeRobot' | 'ia_archiver' | 'GenericBot' | 'unknown';
7
9
  interface EnvOption {
8
10
  browser: BrowserName;
9
11
  version: string;
10
12
  versionMajor: number;
13
+ browserType: BrowserType;
11
14
  engine: EngineName;
15
+ engineVersion: string;
12
16
  os: OsName;
13
17
  osVersion: string;
18
+ osVersionName: string;
14
19
  device: DeviceName;
20
+ vendor: string;
21
+ model: string;
15
22
  arch: ArchName$1;
16
23
  isWebview: boolean;
17
24
  isHeadless: boolean;
18
25
  isBot: boolean;
19
26
  botName: BotName$1;
27
+ botCategory: BotCategory;
20
28
  language: string;
21
29
  platform: string;
22
30
  connectionType: '4g' | '3g' | '2g' | 'slow-2g' | 'unknown';
@@ -45,11 +53,13 @@ type BotName = 'Googlebot' | 'Bingbot' | 'Baiduspider' | 'Bytespider' | 'YandexB
45
53
  interface BotDef {
46
54
  name: BotName;
47
55
  detect: RegExp;
56
+ category: BotCategory;
48
57
  }
49
58
 
50
59
  interface BotResult {
51
60
  isBot: boolean;
52
61
  botName: BotName;
62
+ botCategory: BotCategory;
53
63
  }
54
64
  /**
55
65
  * Detect whether the UA belongs to a bot, crawler, or spider.
@@ -169,6 +179,8 @@ declare function getWindowsVersion(nav: NavContext): Promise<string | null>;
169
179
  interface BrowserResult {
170
180
  browser: BrowserName;
171
181
  version: string;
182
+ browserType: BrowserType;
183
+ priority: number;
172
184
  }
173
185
  /**
174
186
  * Detect the browser name and version from a user agent string.
@@ -181,6 +193,7 @@ declare function detectBrowser(ua: string): BrowserResult;
181
193
  interface OsResult {
182
194
  os: OsName;
183
195
  osVersion: string;
196
+ osVersionName: string;
184
197
  }
185
198
  /**
186
199
  * Detect the operating system and its version from a user agent string.
@@ -203,6 +216,57 @@ type ArchName = 'x86' | 'x86_64' | 'arm' | 'arm64' | 'unknown';
203
216
  */
204
217
  declare function detectArch(ua: string, ctx?: EnvContext): ArchName;
205
218
 
219
+ interface EngineResult {
220
+ engine: EngineName;
221
+ engineVersion: string;
222
+ }
223
+ /**
224
+ * Detect the rendering engine from a user agent string.
225
+ *
226
+ * @param ua - Raw user agent string
227
+ * @param browser - Pre-detected browser name; auto-detected when omitted
228
+ * @param version - Pre-detected browser version; auto-detected when omitted
229
+ */
230
+ declare function detectEngine(ua: string, browser?: string, version?: string): EngineResult;
231
+
232
+ type DeviceNav = Pick<NavContext, 'platform' | 'maxTouchPoints'> & {
233
+ pointerType?: 'coarse' | 'fine' | 'none';
234
+ hoverCapability?: boolean;
235
+ screenWidth?: number;
236
+ webglRenderer?: string;
237
+ webglMaxTextureSize?: number;
238
+ webglFragPrecision?: number;
239
+ webglCompressedFormats?: {
240
+ s3tc: boolean;
241
+ pvrtc: boolean;
242
+ etc2: boolean;
243
+ astc: boolean;
244
+ };
245
+ safeAreaInsetTop?: number;
246
+ devicePixelRatio?: number;
247
+ hasVibration?: boolean;
248
+ hasDeviceMotion?: boolean;
249
+ connection?: {
250
+ effectiveType?: string;
251
+ };
252
+ };
253
+ /**
254
+ * Detect the device type from a user agent string.
255
+ *
256
+ * @param ua - Raw user agent string
257
+ * @param nav - Optional nav context; hardware signals take precedence over UA when available
258
+ */
259
+ declare function detectDevice(ua: string, nav?: DeviceNav): DeviceName;
260
+ interface VendorModelResult {
261
+ vendor: string;
262
+ model: string;
263
+ }
264
+ /**
265
+ * Extract device vendor and model from a user agent string.
266
+ * Returns 'unknown' for both when the UA does not carry recognisable device info.
267
+ */
268
+ declare function detectVendorModel(ua: string): VendorModelResult;
269
+
206
270
  /**
207
271
  * Detect whether the UA belongs to a headless or automation-driven browser.
208
272
  *
@@ -262,4 +326,4 @@ declare namespace uaBrowser {
262
326
  var VERSION: string;
263
327
  }
264
328
 
265
- export { ACCEPT_CH, type ArchName$1 as ArchName, type BotDef, type BotName$1 as BotName, type BrowserName, type DeviceName, type EngineName, type EnvContext, type EnvOption, type OsName, type UAHighEntropyValues, VERSION, uaBrowser as default, detectArch, detectBot, detectBrowser, detectHeadless, detectOs as detectOS, getEnvContext, getLanguage, getNavContext, getWindowsVersion, isWebview, parseHeaders, parseUA, satisfies };
329
+ export { ACCEPT_CH, type ArchName$1 as ArchName, type BotCategory, type BotDef, type BotName$1 as BotName, type BrowserName, type BrowserType, type DeviceName, type EngineName, type EnvContext, type EnvOption, type OsName, type UAHighEntropyValues, VERSION, type VendorModelResult, uaBrowser as default, detectArch, detectBot, detectBrowser, detectDevice, detectEngine, detectHeadless, detectOs as detectOS, detectVendorModel, getEnvContext, getLanguage, getNavContext, getWindowsVersion, isWebview, parseHeaders, parseUA, satisfies };
package/dist/index.d.ts CHANGED
@@ -3,20 +3,28 @@ type BrowserName = 'Safari' | 'Chrome' | 'Arc' | 'Brave' | 'IE' | 'Edge' | 'Fire
3
3
  type OsName = 'Windows' | 'Linux' | 'MacOS' | 'Android' | 'HarmonyOS' | 'OpenHarmony' | 'Ubuntu' | 'FreeBSD' | 'Debian' | 'Windows Phone' | 'BlackBerry' | 'MeeGo' | 'Symbian' | 'iOS' | 'visionOS' | 'tvOS' | 'Chrome OS' | 'WebOS' | 'Tizen' | 'KaiOS' | 'unknown';
4
4
  type DeviceName = 'Mobile' | 'Tablet' | 'PC' | 'TV' | 'Console' | 'XR' | 'unknown';
5
5
  type ArchName$1 = 'x86' | 'x86_64' | 'arm' | 'arm64' | 'unknown';
6
+ type BotCategory = 'search-engine' | 'ai-llm' | 'social' | 'link-preview' | 'seo-tool' | 'monitoring' | 'generic' | 'unknown';
7
+ type BrowserType = 'browser' | 'brand' | 'app' | 'unknown';
6
8
  type BotName$1 = 'Googlebot' | 'Bingbot' | 'Baiduspider' | 'Bytespider' | 'YandexBot' | 'DuckDuckBot' | 'Slurp' | 'Sogou' | '360Spider' | 'Applebot-Extended' | 'Applebot' | 'Facebookbot' | 'Twitterbot' | 'LinkedInBot' | 'PinterestBot' | 'Slackbot' | 'Discordbot' | 'TelegramBot' | 'WhatsApp' | 'SemrushBot' | 'AhrefsBot' | 'MJ12bot' | 'PetalBot' | 'ScreamingFrog' | 'DataForSeoBot' | 'GPTBot' | 'OAI-SearchBot' | 'ChatGPT-User' | 'ClaudeBot' | 'PerplexityBot' | 'CCBot' | 'AdsBot' | 'Google-Extended' | 'Meta-ExternalAgent' | 'Amazonbot' | 'Diffbot' | 'cohere-ai' | 'YouBot' | 'UptimeRobot' | 'ia_archiver' | 'GenericBot' | 'unknown';
7
9
  interface EnvOption {
8
10
  browser: BrowserName;
9
11
  version: string;
10
12
  versionMajor: number;
13
+ browserType: BrowserType;
11
14
  engine: EngineName;
15
+ engineVersion: string;
12
16
  os: OsName;
13
17
  osVersion: string;
18
+ osVersionName: string;
14
19
  device: DeviceName;
20
+ vendor: string;
21
+ model: string;
15
22
  arch: ArchName$1;
16
23
  isWebview: boolean;
17
24
  isHeadless: boolean;
18
25
  isBot: boolean;
19
26
  botName: BotName$1;
27
+ botCategory: BotCategory;
20
28
  language: string;
21
29
  platform: string;
22
30
  connectionType: '4g' | '3g' | '2g' | 'slow-2g' | 'unknown';
@@ -45,11 +53,13 @@ type BotName = 'Googlebot' | 'Bingbot' | 'Baiduspider' | 'Bytespider' | 'YandexB
45
53
  interface BotDef {
46
54
  name: BotName;
47
55
  detect: RegExp;
56
+ category: BotCategory;
48
57
  }
49
58
 
50
59
  interface BotResult {
51
60
  isBot: boolean;
52
61
  botName: BotName;
62
+ botCategory: BotCategory;
53
63
  }
54
64
  /**
55
65
  * Detect whether the UA belongs to a bot, crawler, or spider.
@@ -169,6 +179,8 @@ declare function getWindowsVersion(nav: NavContext): Promise<string | null>;
169
179
  interface BrowserResult {
170
180
  browser: BrowserName;
171
181
  version: string;
182
+ browserType: BrowserType;
183
+ priority: number;
172
184
  }
173
185
  /**
174
186
  * Detect the browser name and version from a user agent string.
@@ -181,6 +193,7 @@ declare function detectBrowser(ua: string): BrowserResult;
181
193
  interface OsResult {
182
194
  os: OsName;
183
195
  osVersion: string;
196
+ osVersionName: string;
184
197
  }
185
198
  /**
186
199
  * Detect the operating system and its version from a user agent string.
@@ -203,6 +216,57 @@ type ArchName = 'x86' | 'x86_64' | 'arm' | 'arm64' | 'unknown';
203
216
  */
204
217
  declare function detectArch(ua: string, ctx?: EnvContext): ArchName;
205
218
 
219
+ interface EngineResult {
220
+ engine: EngineName;
221
+ engineVersion: string;
222
+ }
223
+ /**
224
+ * Detect the rendering engine from a user agent string.
225
+ *
226
+ * @param ua - Raw user agent string
227
+ * @param browser - Pre-detected browser name; auto-detected when omitted
228
+ * @param version - Pre-detected browser version; auto-detected when omitted
229
+ */
230
+ declare function detectEngine(ua: string, browser?: string, version?: string): EngineResult;
231
+
232
+ type DeviceNav = Pick<NavContext, 'platform' | 'maxTouchPoints'> & {
233
+ pointerType?: 'coarse' | 'fine' | 'none';
234
+ hoverCapability?: boolean;
235
+ screenWidth?: number;
236
+ webglRenderer?: string;
237
+ webglMaxTextureSize?: number;
238
+ webglFragPrecision?: number;
239
+ webglCompressedFormats?: {
240
+ s3tc: boolean;
241
+ pvrtc: boolean;
242
+ etc2: boolean;
243
+ astc: boolean;
244
+ };
245
+ safeAreaInsetTop?: number;
246
+ devicePixelRatio?: number;
247
+ hasVibration?: boolean;
248
+ hasDeviceMotion?: boolean;
249
+ connection?: {
250
+ effectiveType?: string;
251
+ };
252
+ };
253
+ /**
254
+ * Detect the device type from a user agent string.
255
+ *
256
+ * @param ua - Raw user agent string
257
+ * @param nav - Optional nav context; hardware signals take precedence over UA when available
258
+ */
259
+ declare function detectDevice(ua: string, nav?: DeviceNav): DeviceName;
260
+ interface VendorModelResult {
261
+ vendor: string;
262
+ model: string;
263
+ }
264
+ /**
265
+ * Extract device vendor and model from a user agent string.
266
+ * Returns 'unknown' for both when the UA does not carry recognisable device info.
267
+ */
268
+ declare function detectVendorModel(ua: string): VendorModelResult;
269
+
206
270
  /**
207
271
  * Detect whether the UA belongs to a headless or automation-driven browser.
208
272
  *
@@ -262,4 +326,4 @@ declare namespace uaBrowser {
262
326
  var VERSION: string;
263
327
  }
264
328
 
265
- export { ACCEPT_CH, type ArchName$1 as ArchName, type BotDef, type BotName$1 as BotName, type BrowserName, type DeviceName, type EngineName, type EnvContext, type EnvOption, type OsName, type UAHighEntropyValues, VERSION, uaBrowser as default, detectArch, detectBot, detectBrowser, detectHeadless, detectOs as detectOS, getEnvContext, getLanguage, getNavContext, getWindowsVersion, isWebview, parseHeaders, parseUA, satisfies };
329
+ export { ACCEPT_CH, type ArchName$1 as ArchName, type BotCategory, type BotDef, type BotName$1 as BotName, type BrowserName, type BrowserType, type DeviceName, type EngineName, type EnvContext, type EnvOption, type OsName, type UAHighEntropyValues, VERSION, type VendorModelResult, uaBrowser as default, detectArch, detectBot, detectBrowser, detectDevice, detectEngine, detectHeadless, detectOs as detectOS, detectVendorModel, getEnvContext, getLanguage, getNavContext, getWindowsVersion, isWebview, parseHeaders, parseUA, satisfies };
package/dist/index.min.js CHANGED
@@ -1,3 +1,3 @@
1
- var uaBrowser=(function(){'use strict';var $={version:"1.4.0-beta.0"};var ee=[{name:"Safari",priority:10,detect:/Safari/,versionPattern:/Version\/([\d.]+)/},{name:"Chrome",priority:20,detect:/(Chrome|CriOS)/,versionPattern:[/Chrome\/([\d.]+)/,/CriOS\/([\d.]+)/]},{name:"Arc",priority:35,detect:/Arc\//,versionPattern:/Arc\/([\d.]+)/},{name:"IE",priority:30,detect:/(MSIE|Trident)/,versionPattern:[/MSIE ([\d.]+)/,/rv:([\d.]+)/]},{name:"Edge",priority:40,detect:/(Edge|Edg\/|EdgA|EdgiOS)/,versionPattern:[/Edge\/([\d.]+)/,/Edg\/([\d.]+)/,/EdgA\/([\d.]+)/,/EdgiOS\/([\d.]+)/]},{name:"Firefox",priority:50,detect:/(Firefox|FxiOS)/,versionPattern:[/Firefox\/([\d.]+)/,/FxiOS\/([\d.]+)/]},{name:"Firefox Focus",priority:55,detect:/Focus/,versionPattern:/Focus\/([\d.]+)/},{name:"Chromium",priority:60,detect:/Chromium/,versionPattern:/Chromium\/([\d.]+)/},{name:"Opera",priority:70,detect:/(Opera|OPR|OPT)/,versionPattern:[/Opera\/([\d.]+)/,/OPR\/([\d.]+)/,/OPT\/([\d.]+)/]},{name:"Vivaldi",priority:80,detect:/Vivaldi/,versionPattern:/Vivaldi\/([\d.]+)/},{name:"Yandex",priority:90,detect:/YaBrowser/,versionPattern:/YaBrowser\/([\d.]+)/},{name:"Samsung Internet",priority:92,detect:/SamsungBrowser/,versionPattern:/SamsungBrowser\/([\d.]+)/},{name:"DuckDuckGo",priority:94,detect:/(DuckDuckGo|Ddg)\//,versionPattern:[/DuckDuckGo\/([\d.]+)/,/Ddg\/([\d.]+)/]},{name:"Puffin",priority:96,detect:/Puffin\//,versionPattern:/Puffin\/([\d.]+)/},{name:"Coc Coc",priority:130,detect:/coc_coc_browser/,versionPattern:/coc_coc_browser\/([\d.]+)/},{name:"Kindle",priority:140,detect:/(Kindle|Silk\/)/,versionPattern:/Version\/([\d.]+)/},{name:"Konqueror",priority:160,detect:/Konqueror/,versionPattern:/Konqueror\/([\d.]+)/},{name:"SeaMonkey",priority:180,detect:/SeaMonkey/,versionPattern:/SeaMonkey\/([\d.]+)/},{name:"Epiphany",priority:190,detect:/Epiphany/,versionPattern:/Epiphany\/([\d.]+)/},{name:"Maxthon",priority:200,detect:/Maxthon/,versionPattern:/Maxthon\/([\d.]+)/},{name:"360",priority:300,detect:/(QihooBrowser|QHBrowser)/,versionPattern:/QihooBrowser\/([\d.]+)/},{name:"360SE",priority:310,detect:/360SE/,versionPattern:null,chromeLookup:{108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}},{name:"360EE",priority:320,detect:/360EE/,versionPattern:null,chromeLookup:{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}},{name:"UC",priority:330,detect:/(UCBrowser|UBrowser|UCWEB)/,versionPattern:/UC?Browser\/([\d.]+)/},{name:"QQBrowser",priority:340,detect:/(MQQBrowser|QQBrowser)/,versionPattern:[/MQQBrowser\/([\d.]+)/,/QQBrowser\/([\d.]+)/]},{name:"QQ",priority:345,detect:/QQ\//,versionPattern:/QQ\/([\d.]+)/},{name:"Baidu",priority:350,detect:/(Baidu|BIDUBrowser|baidubrowser|baiduboxapp|BaiduHD)/,versionPattern:[/BIDUBrowser[\s/]([\d.]+)/,/baiduboxapp\/([\d.]+)/]},{name:"Sogou",priority:360,detect:/(MetaSr|Sogou)/,versionPattern:[/SE ([\d.X]+)/,/SogouMobileBrowser\/([\d.]+)/]},{name:"Liebao",priority:370,detect:/(LBBROWSER|LieBaoFast)/,versionPattern:/LieBaoFast\/([\d.]+)/,chromeLookup:{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}},{name:"2345Explorer",priority:380,detect:/2345Explorer/,versionPattern:[/2345Explorer\/([\d.]+)/,/Mb2345Browser\/([\d.]+)/],chromeLookup:{69:"10.0",55:"9.9"}},{name:"115Browser",priority:390,detect:/115Browser/,versionPattern:/115Browser\/([\d.]+)/},{name:"TheWorld",priority:400,detect:/TheWorld/,versionPattern:/TheWorld ([\d.]+)/},{name:"XiaoMi",priority:410,detect:/MiuiBrowser/,versionPattern:/MiuiBrowser\/([\d.]+)/},{name:"Vivo",priority:420,detect:/VivoBrowser/,versionPattern:/VivoBrowser\/([\d.]+)/},{name:"Huawei",priority:430,detect:/HuaweiBrowser/,versionPattern:[/HuaweiBrowser\/([\d.]+)/,/Version\/([\d.]+)/]},{name:"OPPO",priority:440,detect:/HeyTapBrowser/,versionPattern:/HeyTapBrowser\/([\d.]+)/},{name:"Quark",priority:450,detect:/Quark/,versionPattern:/Quark\/([\d.]+)/},{name:"Qiyu",priority:460,detect:/Qiyu/,versionPattern:/Qiyu\/([\d.]+)/},{name:"WechatWork",priority:500,detect:/wxwork\//,versionPattern:/wxwork\/([\d.]+)/},{name:"Wechat",priority:510,detect:/MicroMessenger/,versionPattern:/MicroMessenger\/([\d.]+)/},{name:"Taobao",priority:520,detect:/AliApp\(TB/,versionPattern:/AliApp\(TB\/([\d.]+)/},{name:"Alipay",priority:530,detect:/AliApp\(AP/,versionPattern:/AliApp\(AP\/([\d.]+)/},{name:"Weibo",priority:540,detect:/Weibo/,versionPattern:/weibo__([\d.]+)/},{name:"Douban",priority:550,detect:/com\.douban\.frodo/,versionPattern:/com\.douban\.frodo\/([\d.]+)/},{name:"Suning",priority:560,detect:/SNEBUY-APP/,versionPattern:/SNEBUY-APP([\d.]+)/},{name:"iQiYi",priority:570,detect:/IqiyiApp/,versionPattern:/IqiyiVersion\/([\d.]+)/},{name:"DingTalk",priority:580,detect:/DingTalk/,versionPattern:/DingTalk\/([\d.]+)/},{name:"Douyin",priority:590,detect:/aweme/,versionPattern:/app_version\/([\d.]+)/},{name:"Bilibili",priority:592,detect:/BiliBili\//,versionPattern:/BiliBili\/([\d.]+)/},{name:"Kuaishou",priority:594,detect:/Kwai\//,versionPattern:/Kwai\/([\d.]+)/},{name:"Xiaohongshu",priority:596,detect:/Xiaohongshu\//,versionPattern:/Xiaohongshu\/([\d.]+)/},{name:"Feishu",priority:597,detect:/(Lark|Feishu)\//,versionPattern:[/Lark\/([\d.]+)/,/Feishu\/([\d.]+)/]},{name:"Toutiao",priority:598,detect:/NewsArticle\//,versionPattern:/NewsArticle\/([\d.]+)/},{name:"JD",priority:599,detect:/jdpingou\//,versionPattern:/jdpingou\/([\d.]+)/},{name:"Meituan",priority:600,detect:/MeituanHybrid\//,versionPattern:/MeituanHybrid\/([\d.]+)/}];function W(t,e){let n=e.exec(t);if(!n)return null;let r=n[1];return r!=null&&r!==""?r:null}function k(t,e){for(let n of e){let r=W(t,n);if(r!==null)return r}return null}function te(t,e){let n=/Chrome\/([\d]+)/.exec(t);if(!n)return null;let r=n[1];return Object.prototype.hasOwnProperty.call(e,r)?e[r]:null}function re(t){let e=null;for(let r of ee)r.detect.test(t)&&(e===null||r.priority>=e.priority)&&(e=r);if(!e)return {browser:"unknown",version:"unknown"};let n=null;if(e.chromeLookup&&(n=te(t,e.chromeLookup)),n===null&&e.versionPattern!==null){let r=Array.isArray(e.versionPattern)?e.versionPattern:[e.versionPattern];n=k(t,r);}return {browser:e.name,version:n!=null?n:"unknown"}}var ne=[{name:"KHTML",detect:/KHTML\//},{name:"Trident",detect:/(Trident|NET CLR)/},{name:"Presto",detect:/Presto/},{name:"Gecko",detect:/Gecko\//},{name:"WebKit",detect:/AppleWebKit/},{name:"ArkWeb",detect:/ArkWeb/}];function oe(t,e,n){var o,i;let r="unknown";for(let c of ne)c.detect.test(t)&&(r=c.name);return (r==="WebKit"&&/(Chrome|CriOS)/.test(t)&&parseInt((i=((o=/Chrome\/([\d]+)/.exec(t))!=null?o:[])[1])!=null?i:"0",10)>27||e==="Opera"&&parseInt(n,10)>12||e==="Yandex")&&(r="Blink"),e==="Edge"&&(r=parseInt(n,10)>75?"Blink":"EdgeHTML"),r}var ie=[{name:"WebOS",detect:/hpwOS/,versionPattern:/hpwOS\/([\d.]+)/},{name:"Symbian",detect:/Symbian/,versionPattern:null},{name:"MeeGo",detect:/MeeGo/,versionPattern:null},{name:"BlackBerry",detect:/(BlackBerry|RIM)/,versionPattern:null},{name:"FreeBSD",detect:/FreeBSD/,versionPattern:null},{name:"Debian",detect:/Debian/,versionPattern:/Debian\/([\d.]+)/},{name:"Ubuntu",detect:/Ubuntu/,versionPattern:null},{name:"Linux",detect:/(Linux|X11)/,versionPattern:null},{name:"Chrome OS",detect:/CrOS/,versionPattern:null},{name:"Tizen",detect:/Tizen/,versionPattern:/Tizen ([\d.]+)/},{name:"iOS",detect:/like Mac OS X/,versionPattern:/OS ([\d_]+) like/},{name:"MacOS",detect:/Macintosh/,versionPattern:/Mac OS X -?([\d_.]+)/},{name:"visionOS",detect:/visionOS/,versionPattern:/visionOS ([\d_]+)/},{name:"tvOS",detect:/Apple TV/,versionPattern:/OS ([\d_]+) like/},{name:"Android",detect:/(Android|Adr)/,versionPattern:/(?:Android|Adr) ([\d.]+)/},{name:"HarmonyOS",detect:/HarmonyOS/,versionPattern:[/HarmonyOS[\s/]([\d.]+)/,/Android ([\d.]+)[;)]/],versionLookup:{10:"2",11:"3",12:"3",13:"4"}},{name:"OpenHarmony",detect:/OpenHarmony/,versionPattern:/OpenHarmony[\s/]([\d.]+)/},{name:"KaiOS",detect:/KAIOS/,versionPattern:/KAIOS\/([\d.]+)/},{name:"Windows",detect:/Windows/,versionPattern:/Windows NT ([\d.]+)/,versionLookup:{10:"10","6.4":"10","6.3":"8.1","6.2":"8","6.1":"7","6.0":"Vista","5.2":"XP","5.1":"XP","5.0":"2000"}},{name:"Windows Phone",detect:/(IEMobile|Windows Phone)/,versionPattern:/Windows Phone(?: OS)? ([\d.]+)/}];function ae(t,e){let n=null;for(let o of ie)o.detect.test(t)&&(n=o);if(!n)return {os:"unknown",osVersion:"unknown"};let r="unknown";if(n.versionPattern){let o=Array.isArray(n.versionPattern)?k(t,n.versionPattern):W(t,n.versionPattern);if(o!==null){let i=o.replace(/_/g,".");if(n.versionLookup){let c=Object.prototype.hasOwnProperty.call(n.versionLookup,i)?n.versionLookup[i]:null;if(c!==null)r=c;else if(n.name==="Windows"){let d=parseInt(i,10);r=isNaN(d)?"unknown":d.toString();}else r=i;}else r=i;}}return n.name==="Windows"&&e&&(r=e),{os:n.name,osVersion:r}}var se=[{name:"Mobile",detect:/(Mobi|iPh)/},{name:"Tablet",detect:/(Tablet|Pad)/}];function de(t,e){var o,i;function n(){if(/PlayStation|Xbox|Nintendo/.test(t))return "Console";if(/visionOS|Quest/.test(t))return "XR";if(/(SMART-TV|HbbTV|SmartTV|TV Safari|Android TV|GoogleTV)/.test(t))return "TV";if(/iPad/.test(t)||/Android/.test(t)&&!/Mobile/.test(t))return "Tablet";for(let c of se)if(c.detect.test(t))return c.name;return null}function r(){var c,d,l,p,g,b,a,w,S,A,O,T,m,f,C,D;if(!e)return null;if(e.webglRenderer){if(/^ANGLE\b/.test(e.webglRenderer))return "PC";if(/Adreno/i.test(e.webglRenderer)||/Mali[-\s]/i.test(e.webglRenderer))return ((c=e.screenWidth)!=null?c:0)>=768?"Tablet":"Mobile";if(/Apple GPU/i.test(e.webglRenderer)){let M=(d=e.screenWidth)!=null?d:0;return M<=1366?M>=768?"Tablet":"Mobile":"PC"}}return e.platform==="MacIntel"&&((l=e.maxTouchPoints)!=null?l:0)>1?e.screenWidth!==void 0&&e.screenWidth<768?"Mobile":"Tablet":e.webglMaxTextureSize!==void 0&&e.webglMaxTextureSize<=8192&&((p=e.maxTouchPoints)!=null?p:0)>1&&((g=e.screenWidth)!=null?g:9999)<1367?((b=e.screenWidth)!=null?b:0)>=768?"Tablet":"Mobile":(a=e.webglCompressedFormats)!=null&&a.pvrtc&&!e.webglCompressedFormats.s3tc?((w=e.screenWidth)!=null?w:0)>=768?"Tablet":"Mobile":e.safeAreaInsetTop!==void 0&&e.safeAreaInsetTop>0?((S=e.screenWidth)!=null?S:0)>=768?"Tablet":"Mobile":e.hasVibration||e.hasDeviceMotion?((A=e.screenWidth)!=null?A:0)>=768?"Tablet":"Mobile":(O=e.connection)!=null&&O.effectiveType&&["2g","3g","slow-2g"].includes(e.connection.effectiveType)?((T=e.screenWidth)!=null?T:0)>=768?"Tablet":"Mobile":((m=e.devicePixelRatio)!=null?m:0)>2&&((f=e.maxTouchPoints)!=null?f:0)>1?((C=e.screenWidth)!=null?C:0)>=768?"Tablet":"Mobile":e.pointerType==="coarse"&&e.hoverCapability===false?((D=e.screenWidth)!=null?D:0)>=768?"Tablet":"Mobile":null}return (i=(o=r())!=null?o:n())!=null?i:"PC"}var P=[{name:"Googlebot",detect:/Googlebot/},{name:"Bingbot",detect:/(bingbot|BingPreview)/},{name:"Baiduspider",detect:/(Baiduspider|BaiduMobaider)/},{name:"Bytespider",detect:/Bytespider/},{name:"YandexBot",detect:/YandexBot/},{name:"DuckDuckBot",detect:/DuckDuckBot/},{name:"Slurp",detect:/Slurp/},{name:"Sogou",detect:/(Sogou|sogou).*[Ss]pider/},{name:"360Spider",detect:/360Spider/},{name:"PetalBot",detect:/PetalBot/},{name:"Applebot-Extended",detect:/Applebot-Extended/},{name:"Applebot",detect:/Applebot/},{name:"Facebookbot",detect:/(facebookexternalhit|FacebookBot)/},{name:"Twitterbot",detect:/Twitterbot/},{name:"LinkedInBot",detect:/LinkedInBot/},{name:"PinterestBot",detect:/Pinterest/},{name:"Slackbot",detect:/Slackbot/},{name:"Discordbot",detect:/Discordbot/},{name:"TelegramBot",detect:/TelegramBot/},{name:"WhatsApp",detect:/WhatsApp/},{name:"SemrushBot",detect:/SemrushBot/},{name:"AhrefsBot",detect:/AhrefsBot/},{name:"MJ12bot",detect:/MJ12bot/},{name:"ScreamingFrog",detect:/Screaming Frog/},{name:"DataForSeoBot",detect:/DataForSeoBot/},{name:"GPTBot",detect:/GPTBot/},{name:"OAI-SearchBot",detect:/OAI-SearchBot/},{name:"ChatGPT-User",detect:/ChatGPT-User/},{name:"ClaudeBot",detect:/ClaudeBot/},{name:"PerplexityBot",detect:/PerplexityBot/},{name:"CCBot",detect:/CCBot/},{name:"AdsBot",detect:/AdsBot-Google/},{name:"Google-Extended",detect:/Google-Extended/},{name:"Meta-ExternalAgent",detect:/meta-externalagent/i},{name:"Amazonbot",detect:/Amazonbot/},{name:"Diffbot",detect:/Diffbot/},{name:"cohere-ai",detect:/cohere-ai/},{name:"YouBot",detect:/YouBot/},{name:"UptimeRobot",detect:/UptimeRobot/},{name:"ia_archiver",detect:/ia_archiver/},{name:"GenericBot",detect:/(bot|crawler|spider|crawling|scraper)/i}];function ce(t,e){let n=e?[...P.slice(0,-1),...e,P[P.length-1]]:P;for(let r of n)if(r.detect.test(t))return {isBot:true,botName:r.name};return {isBot:false,botName:"unknown"}}var me=[{name:"arm64",detect:/(aarch64|arm64|ARM64|iPhone|iPad|iPod)/},{name:"arm",detect:/\bARM\b/},{name:"x86_64",detect:/(x86_64|Win64|WOW64|x64;|amd64)/i},{name:"x86",detect:/(i[36]86|i686|x86;)/}];function pe(t,e){if(e!=null&&e.highEntropyData){let{architecture:o,bitness:i}=e.highEntropyData;if(o==="arm")return i==="64"?"arm64":"arm";if(o==="x86")return i==="64"?"x86_64":"x86"}let n=e==null?void 0:e.webglRenderer;if(n){if(/Apple\s+(M\d|A\d{1,2}[A-Z]?)\b/i.test(n)||/APPLE M\d/i.test(n)||/^Apple GPU$/i.test(n))return "arm64";if(/\b(Intel|AMD|NVIDIA|Radeon)\b/i.test(n))return "x86_64"}let r=e==null?void 0:e.platform;if(r){if(/iPhone|iPad|iPod/.test(r)||/arm64|aarch64/i.test(r))return "arm64";if(/arm/i.test(r))return "arm";if(/Win64|WOW64|x86_64/i.test(r))return "x86_64";if(/Win32|i686/i.test(r))return "x86"}for(let o of me)if(o.detect.test(t))return o.name;return "unknown"}var be=/(HeadlessChrome|Headless|PhantomJS|Electron\/|Playwright|jsdom\/|Selenium)/;function le(t){return be.test(t)}function N(t){return !!(/; wv/.test(t)||/like Mac OS X/.test(t)&&!/Version\//.test(t)&&!/Safari\//.test(t))}function B(){return typeof navigator=="undefined"?{userAgent:"",platform:"",language:"",maxTouchPoints:0}:navigator}function v(t,e){var n;try{return !!((n=t.mimeTypes)!=null&&n.namedItem(e))}catch(r){return false}}function R(t){var r,o;return ((o=(r=t.browserLanguage)!=null?r:t.language)!=null?o:"").replace(/-\w+/g,i=>i.toUpperCase())||"unknown"}var he=[["Microsoft Edge","Edge"],["Opera","Opera"],["Vivaldi","Vivaldi"],["Google Chrome","Chrome"],["Chromium","Chromium"]];function we(t){var i,c,d,l,p,g,b;let e=((i=t.platform)!=null?i:"").toLowerCase(),n=(c=t.userAgentData)==null?void 0:c.platform,r=(d=t.highEntropyData)==null?void 0:d.platformVersion,o=!!(r&&r!=="0.0.0");if((l=t.webglCompressedFormats)!=null&&l.pvrtc&&!t.webglCompressedFormats.s3tc)return "iOS";if(t.webglRenderer&&/^ANGLE\b/.test(t.webglRenderer))return e.startsWith("mac")||n==="macOS"?"MacOS":e.startsWith("win")||n==="Windows"?"Windows":n==="Chrome OS"?"Chrome OS":null;if(t.webglRenderer&&(/Adreno/i.test(t.webglRenderer)||/Mali[-\s]/i.test(t.webglRenderer)))return "Android";if(n&&o){let w={Windows:"Windows",macOS:"MacOS",Android:"Android",iOS:"iOS","Chrome OS":"Chrome OS"}[n];if(w)return w}return e.startsWith("mac")?"MacOS":e.startsWith("win")?"Windows":e==="iphone"||e==="ipad"||e==="ipod"||((p=t.safeAreaInsetTop)!=null?p:0)>0?"iOS":n==="Chrome OS"?"Chrome OS":n==="Android"&&(e.includes("android")||/^linux arm/i.test((g=t.platform)!=null?g:""))||e.includes("android")||/^linux arm/i.test((b=t.platform)!=null?b:"")?"Android":null}function ve(t){return /iPhone/.test(t)?"iPhone":/iPad/.test(t)?"iPad":/iPod/.test(t)?"iPod":/Macintosh/.test(t)?"MacIntel":/Windows NT/.test(t)?/Win64|WOW64/i.test(t)?"Win64":"Win32":/CrOS/.test(t)?"Linux x86_64":/Android/.test(t)?/aarch64|arm64/i.test(t)?"Linux aarch64":"Linux armv8l":/Linux/.test(t)?/x86_64/i.test(t)?"Linux x86_64":/aarch64|arm64/i.test(t)?"Linux aarch64":"Linux":"unknown"}function xe(t){let e=/[;(]\s*([a-z]{2,3}(?:[-_][A-Za-z]{2,4})+)\s*[;)]/g,n;for(;(n=e.exec(t))!==null;){let r=n[1].replace(/_/g,"-").split("-");if(r.length>=2)return `${r[0].toLowerCase()}-${r.slice(1).map(o=>o.toUpperCase()).join("-")}`}return "unknown"}function V(t,e={}){var _,F,L,I,G,H,U,j,Q,K,z,X,Y,q,J,Z;let n=(_=e.ctx)!=null?_:e.nav,r=(L=(F=e.ctx)==null?void 0:F.windowsVersion)!=null?L:e.windowsVersion,{browser:o,version:i}=re(t),{os:c,osVersion:d}=ae(t,r),l=c,p=d,g=de(t,n),b=pe(t,(I=e.ctx)!=null?I:n),a=n,{isBot:w,botName:S}=ce(t,e.customBotDefs),A=le(t),O=e.language||(a!=null&&a.language||a!=null&&a.browserLanguage?R(a):"")||xe(t),T=(a==null?void 0:a.platform)||ve(t),m=o,f=i;if((G=e.ctx)!=null&&G.hasBrave&&(m="Brave"),a){let s=typeof chrome!="undefined"?chrome:void 0,y=/Chrome\/([\d]+)/.exec(t),h=y?parseInt(y[1],10):0;if(s)if(s.adblock2345||s.common2345)m="2345Explorer",f="unknown";else {let u=false;if(v(a,"application/360softmgrplugin")||v(a,"application/mozilla-npqihooquicklogin")||h>36&&typeof showModalDialog!="undefined"?u=true:h>45&&(u=v(a,"application/vnd.chromium.remoting-viewer"),!u&&h>=69&&(u=v(a,"application/hwepass2001.installepass2001")||v(a,"application/asx"))),u){let x=((H=a.connection)==null?void 0:H.saveData)===true;v(a,"application/gameplugin")||!x?m="360SE":m="360EE",f="unknown";}}}if(m==="Baidu"&&/(Opera|OPR|OPT)/.test(t)){m="Opera";let s=(j=(U=/OPR\/([\d.]+)/.exec(t))!=null?U:/OPT\/([\d.]+)/.exec(t))!=null?j:/Opera\/([\d.]+)/.exec(t);f=(Q=s==null?void 0:s[1])!=null?Q:"unknown";}if(m==="Chrome"&&/\S+Browser\//.test(t)){let s=/(\S+Browser)\/([\d.]+)/.exec(t);s&&(m=s[1],f=s[2]);}if(m==="Firefox"&&a)try{(typeof clientInformation!="undefined"||typeof u2f=="undefined")&&(m="Firefox Nightly");}catch(s){}if(l==="iOS"&&m==="Safari"){let s=/Version\/([\d.]+)/.exec(t);s&&parseInt(s[1],10)>parseInt(p,10)&&(p=s[1]);}if(l==="MacOS"&&m==="Safari"){let s=/Version\/([\d.]+)/.exec(t);s&&parseInt(s[1],10)>=26&&(p=s[1]);}if(e.ctx){let s=we(e.ctx);if(s!==null&&(s!==c&&(l=s,p="unknown"),l!=="Windows")){let h=(K=e.ctx.highEntropyData)==null?void 0:K.platformVersion;if(h&&h!=="0.0.0"){let u=h.split(".").map(Number);for(;u.length>1&&u[u.length-1]===0;)u.pop();u[0]&&(p=u.join("."));}}let y=(z=e.ctx.highEntropyData)==null?void 0:z.fullVersionList;if(y)for(let[h,u]of he){let x=y.find(fe=>fe.brand===h);if(x!=null&&x.version){m=u,f=x.version;break}}}let C=oe(t,m,f),D=parseInt((X=f.split(".")[0])!=null?X:"0",10)||0,M=(Z=(J=(q=(Y=e.ctx)!=null?Y:e.nav)==null?void 0:q.connection)==null?void 0:J.effectiveType)!=null?Z:"unknown";return {browser:m,version:f,versionMajor:D,engine:C,os:l,osVersion:p,device:g,arch:b,isWebview:N(t),isHeadless:A,isBot:w,botName:S,language:O,platform:T,connectionType:M}}var ye=[".AppleSystemUIFont","Segoe UI","Noto Color Emoji","Ubuntu","HarmonyOS Sans"];function Pe(){try{let e=document.createElement("canvas").getContext("2d");if(!e)return {};let n="mmmmmmmmmmlli";e.font="72px monospace";let r=e.measureText(n).width,o={};for(let i of ye)e.font=`72px '${i}', monospace`,o[i]=e.measureText(n).width!==r;return o}catch(t){return {}}}function Be(){var t,e;try{let n=document.createElement("canvas"),r=(t=n.getContext("webgl"))!=null?t:n.getContext("experimental-webgl");if(!r)return {};let o=r.getExtension("WEBGL_debug_renderer_info"),i={maxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),fragPrecision:(e=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT))==null?void 0:e.rangeMax,compressedFormats:{s3tc:!!r.getExtension("WEBGL_compressed_texture_s3tc"),pvrtc:!!r.getExtension("WEBGL_compressed_texture_pvrtc"),etc2:!!r.getExtension("WEBGL_compressed_texture_etc"),astc:!!r.getExtension("WEBGL_compressed_texture_astc_ldr")}};return o&&(i.renderer=r.getParameter(o.UNMASKED_RENDERER_WEBGL),i.vendor=r.getParameter(o.UNMASKED_VENDOR_WEBGL)),i}catch(n){return {}}}function Ee(){try{let t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.body.appendChild(t);let e=parseFloat(getComputedStyle(t).top);return document.body.removeChild(t),isNaN(e)?0:e}catch(t){return 0}}function Se(){var t;try{let e=(t=window.AudioContext)!=null?t:window.webkitAudioContext;if(!e)return;let n=new e,r=n.sampleRate;return n.close(),r}catch(e){return}}function Ae(){try{if(window.matchMedia("(pointer: coarse)").matches)return "coarse";if(window.matchMedia("(pointer: fine)").matches)return "fine";if(window.matchMedia("(pointer: none)").matches)return "none"}catch(t){}}function Oe(){try{return window.matchMedia("(hover: hover)").matches}catch(t){return}}function Te(t){var n;if(!t)return null;let e=parseInt((n=t.split(".")[0])!=null?n:"0",10);return isNaN(e)?null:e>=13?"11":"10"}async function ue(){var n,r,o,i,c;let t=B(),e={userAgent:t.userAgent,platform:t.platform,language:t.language,maxTouchPoints:t.maxTouchPoints};if(t.browserLanguage!==void 0&&(e.browserLanguage=t.browserLanguage),t.mimeTypes!==void 0&&(e.mimeTypes=t.mimeTypes),t.connection!==void 0&&(e.connection=t.connection),t.userAgentData!==void 0&&(e.userAgentData=t.userAgentData),typeof navigator!="undefined"&&(e.hardwareConcurrency=navigator.hardwareConcurrency,e.deviceMemory=navigator.deviceMemory),typeof window!="undefined"){e.devicePixelRatio=window.devicePixelRatio,e.screenWidth=(n=window.screen)==null?void 0:n.width,e.screenHeight=(r=window.screen)==null?void 0:r.height,e.safeAreaInsetTop=Ee(),e.pointerType=Ae(),e.hoverCapability=Oe(),e.fontProbes=Pe(),e.audioSampleRate=Se(),e.hasVibration="vibrate"in navigator,e.hasDeviceMotion="DeviceMotionEvent"in window;try{e.hasBrave=(c=await((i=(o=navigator.brave)==null?void 0:o.isBrave)==null?void 0:i.call(o)))!=null?c:!1;}catch(a){e.hasBrave=false;}let{renderer:d,vendor:l,maxTextureSize:p,fragPrecision:g,compressedFormats:b}=Be();d!==void 0&&(e.webglRenderer=d),l!==void 0&&(e.webglVendor=l),p!==void 0&&(e.webglMaxTextureSize=p),g!==void 0&&(e.webglFragPrecision=g),b!==void 0&&(e.webglCompressedFormats=b);}if(t.userAgentData)try{let d=await t.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]);e.highEntropyData={architecture:d.architecture,bitness:d.bitness,model:d.model,platformVersion:d.platformVersion,fullVersionList:d.fullVersionList},t.userAgentData.platform==="Windows"&&(e.windowsVersion=Te(d.platformVersion));}catch(d){}return e}var{version:Ce}=$;function E(){let t=B();return V(t.userAgent,{nav:t})}E.detect=async t=>{let e=await ue();return V(t!=null?t:e.userAgent,{ctx:e})};E.isWebview=N;E.getLanguage=()=>R(B());E.VERSION=Ce;var De=E;
2
- return De;})();//# sourceMappingURL=index.min.js.map
1
+ var uaBrowser=(function(){'use strict';var ne={version:"1.4.0"};var R=[{name:"WebOS",detect:/hpwOS/,versionPattern:/hpwOS\/([\d.]+)/},{name:"Symbian",detect:/Symbian/,versionPattern:null},{name:"MeeGo",detect:/MeeGo/,versionPattern:null},{name:"BlackBerry",detect:/(BlackBerry|RIM)/,versionPattern:null},{name:"FreeBSD",detect:/FreeBSD/,versionPattern:null},{name:"Debian",detect:/Debian/,versionPattern:/Debian\/([\d.]+)/},{name:"Ubuntu",detect:/Ubuntu/,versionPattern:null},{name:"Linux",detect:/(Linux|X11)/,versionPattern:null},{name:"Chrome OS",detect:/CrOS/,versionPattern:null},{name:"Tizen",detect:/Tizen/,versionPattern:/Tizen ([\d.]+)/},{name:"iOS",detect:/like Mac OS X/,versionPattern:/OS ([\d_]+) like/},{name:"MacOS",detect:/Macintosh/,versionPattern:/Mac OS X -?([\d_.]+)/,versionNames:{"10.9":"Mavericks","10.10":"Yosemite","10.11":"El Capitan","10.12":"Sierra","10.13":"High Sierra","10.14":"Mojave","10.15":"Catalina",11:"Big Sur",12:"Monterey",13:"Ventura",14:"Sonoma",15:"Sequoia"}},{name:"visionOS",detect:/visionOS/,versionPattern:/visionOS ([\d_]+)/},{name:"tvOS",detect:/Apple TV/,versionPattern:/OS ([\d_]+) like/},{name:"Android",detect:/(Android|Adr)/,versionPattern:/(?:Android|Adr) ([\d.]+)/},{name:"HarmonyOS",detect:/HarmonyOS/,versionPattern:[/HarmonyOS[\s/]([\d.]+)/,/Android ([\d.]+)[;)]/],versionLookup:{10:"2",11:"3",12:"3",13:"4"}},{name:"OpenHarmony",detect:/OpenHarmony/,versionPattern:/OpenHarmony[\s/]([\d.]+)/},{name:"KaiOS",detect:/KAIOS/,versionPattern:/KAIOS\/([\d.]+)/},{name:"Windows",detect:/Windows/,versionPattern:/Windows NT ([\d.]+)/,versionLookup:{10:"10","6.4":"10","6.3":"8.1","6.2":"8","6.1":"7","6.0":"Vista","5.2":"XP","5.1":"XP","5.0":"2000"},versionNames:{7:"Windows 7",8:"Windows 8","8.1":"Windows 8.1",10:"Windows 10",11:"Windows 11"}},{name:"Windows Phone",detect:/(IEMobile|Windows Phone)/,versionPattern:/Windows Phone(?: OS)? ([\d.]+)/}];var oe=[{name:"Safari",priority:10,detect:/Safari/,versionPattern:/Version\/([\d.]+)/},{name:"Chrome",priority:20,detect:/(Chrome|CriOS)/,versionPattern:[/Chrome\/([\d.]+)/,/CriOS\/([\d.]+)/]},{name:"Arc",priority:35,detect:/Arc\//,versionPattern:/Arc\/([\d.]+)/},{name:"IE",priority:30,detect:/(MSIE|Trident)/,versionPattern:[/MSIE ([\d.]+)/,/rv:([\d.]+)/]},{name:"Edge",priority:40,detect:/(Edge|Edg\/|EdgA|EdgiOS)/,versionPattern:[/Edge\/([\d.]+)/,/Edg\/([\d.]+)/,/EdgA\/([\d.]+)/,/EdgiOS\/([\d.]+)/]},{name:"Firefox",priority:50,detect:/(Firefox|FxiOS)/,versionPattern:[/Firefox\/([\d.]+)/,/FxiOS\/([\d.]+)/]},{name:"Firefox Focus",priority:55,detect:/Focus/,versionPattern:/Focus\/([\d.]+)/},{name:"Chromium",priority:60,detect:/Chromium/,versionPattern:/Chromium\/([\d.]+)/},{name:"Opera",priority:70,detect:/(Opera|OPR|OPT)/,versionPattern:[/Opera\/([\d.]+)/,/OPR\/([\d.]+)/,/OPT\/([\d.]+)/]},{name:"Vivaldi",priority:80,detect:/Vivaldi/,versionPattern:/Vivaldi\/([\d.]+)/},{name:"Yandex",priority:90,detect:/YaBrowser/,versionPattern:/YaBrowser\/([\d.]+)/},{name:"Samsung Internet",priority:92,detect:/SamsungBrowser/,versionPattern:/SamsungBrowser\/([\d.]+)/},{name:"DuckDuckGo",priority:94,detect:/(DuckDuckGo|Ddg)\//,versionPattern:[/DuckDuckGo\/([\d.]+)/,/Ddg\/([\d.]+)/]},{name:"Puffin",priority:96,detect:/Puffin\//,versionPattern:/Puffin\/([\d.]+)/},{name:"Coc Coc",priority:130,detect:/coc_coc_browser/,versionPattern:/coc_coc_browser\/([\d.]+)/},{name:"Kindle",priority:140,detect:/(Kindle|Silk\/)/,versionPattern:/Version\/([\d.]+)/},{name:"Konqueror",priority:160,detect:/Konqueror/,versionPattern:/Konqueror\/([\d.]+)/},{name:"SeaMonkey",priority:180,detect:/SeaMonkey/,versionPattern:/SeaMonkey\/([\d.]+)/},{name:"Epiphany",priority:190,detect:/Epiphany/,versionPattern:/Epiphany\/([\d.]+)/},{name:"Maxthon",priority:200,detect:/Maxthon/,versionPattern:/Maxthon\/([\d.]+)/},{name:"360",priority:300,detect:/(QihooBrowser|QHBrowser)/,versionPattern:/QihooBrowser\/([\d.]+)/},{name:"360SE",priority:310,detect:/360SE/,versionPattern:null,chromeLookup:{108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}},{name:"360EE",priority:320,detect:/360EE/,versionPattern:null,chromeLookup:{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}},{name:"UC",priority:330,detect:/(UCBrowser|UBrowser|UCWEB)/,versionPattern:/UC?Browser\/([\d.]+)/},{name:"QQBrowser",priority:340,detect:/(MQQBrowser|QQBrowser)/,versionPattern:[/MQQBrowser\/([\d.]+)/,/QQBrowser\/([\d.]+)/]},{name:"QQ",priority:345,detect:/QQ\//,versionPattern:/QQ\/([\d.]+)/},{name:"Baidu",priority:350,detect:/(Baidu|BIDUBrowser|baidubrowser|baiduboxapp|BaiduHD)/,versionPattern:[/BIDUBrowser[\s/]([\d.]+)/,/baiduboxapp\/([\d.]+)/]},{name:"Sogou",priority:360,detect:/(MetaSr|Sogou)/,versionPattern:[/SE ([\d.X]+)/,/SogouMobileBrowser\/([\d.]+)/]},{name:"Liebao",priority:370,detect:/(LBBROWSER|LieBaoFast)/,versionPattern:/LieBaoFast\/([\d.]+)/,chromeLookup:{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}},{name:"2345Explorer",priority:380,detect:/2345Explorer/,versionPattern:[/2345Explorer\/([\d.]+)/,/Mb2345Browser\/([\d.]+)/],chromeLookup:{69:"10.0",55:"9.9"}},{name:"115Browser",priority:390,detect:/115Browser/,versionPattern:/115Browser\/([\d.]+)/},{name:"TheWorld",priority:400,detect:/TheWorld/,versionPattern:/TheWorld ([\d.]+)/},{name:"XiaoMi",priority:410,detect:/MiuiBrowser/,versionPattern:/MiuiBrowser\/([\d.]+)/},{name:"Vivo",priority:420,detect:/VivoBrowser/,versionPattern:/VivoBrowser\/([\d.]+)/},{name:"Huawei",priority:430,detect:/HuaweiBrowser/,versionPattern:[/HuaweiBrowser\/([\d.]+)/,/Version\/([\d.]+)/]},{name:"OPPO",priority:440,detect:/HeyTapBrowser/,versionPattern:/HeyTapBrowser\/([\d.]+)/},{name:"Quark",priority:450,detect:/Quark/,versionPattern:/Quark\/([\d.]+)/},{name:"Qiyu",priority:460,detect:/Qiyu/,versionPattern:/Qiyu\/([\d.]+)/},{name:"WechatWork",priority:500,detect:/wxwork\//,versionPattern:/wxwork\/([\d.]+)/},{name:"Wechat",priority:510,detect:/MicroMessenger/,versionPattern:/MicroMessenger\/([\d.]+)/},{name:"Taobao",priority:520,detect:/AliApp\(TB/,versionPattern:/AliApp\(TB\/([\d.]+)/},{name:"Alipay",priority:530,detect:/AliApp\(AP/,versionPattern:/AliApp\(AP\/([\d.]+)/},{name:"Weibo",priority:540,detect:/Weibo/,versionPattern:/weibo__([\d.]+)/},{name:"Douban",priority:550,detect:/com\.douban\.frodo/,versionPattern:/com\.douban\.frodo\/([\d.]+)/},{name:"Suning",priority:560,detect:/SNEBUY-APP/,versionPattern:/SNEBUY-APP([\d.]+)/},{name:"iQiYi",priority:570,detect:/IqiyiApp/,versionPattern:/IqiyiVersion\/([\d.]+)/},{name:"DingTalk",priority:580,detect:/DingTalk/,versionPattern:/DingTalk\/([\d.]+)/},{name:"Douyin",priority:590,detect:/aweme/,versionPattern:/app_version\/([\d.]+)/},{name:"Bilibili",priority:592,detect:/BiliBili\//,versionPattern:/BiliBili\/([\d.]+)/},{name:"Kuaishou",priority:594,detect:/Kwai\//,versionPattern:/Kwai\/([\d.]+)/},{name:"Xiaohongshu",priority:596,detect:/Xiaohongshu\//,versionPattern:/Xiaohongshu\/([\d.]+)/},{name:"Feishu",priority:597,detect:/(Lark|Feishu)\//,versionPattern:[/Lark\/([\d.]+)/,/Feishu\/([\d.]+)/]},{name:"Toutiao",priority:598,detect:/NewsArticle\//,versionPattern:/NewsArticle\/([\d.]+)/},{name:"JD",priority:599,detect:/jdpingou\//,versionPattern:/jdpingou\/([\d.]+)/},{name:"Meituan",priority:600,detect:/MeituanHybrid\//,versionPattern:/MeituanHybrid\/([\d.]+)/}];function F(t,e){let r=e.exec(t);if(!r)return null;let n=r[1];return n!=null&&n!==""?n:null}function W(t,e){for(let r of e){let n=F(t,r);if(n!==null)return n}return null}function ie(t,e){let r=/Chrome\/([\d]+)/.exec(t);if(!r)return null;let n=r[1];return Object.prototype.hasOwnProperty.call(e,n)?e[n]:null}function V(t){let e=null;for(let i of oe)i.detect.test(t)&&(e===null||i.priority>=e.priority)&&(e=i);if(!e)return {browser:"unknown",version:"unknown",browserType:"unknown",priority:0};let r=null;if(e.chromeLookup&&(r=ie(t,e.chromeLookup)),r===null&&e.versionPattern!==null){let i=Array.isArray(e.versionPattern)?e.versionPattern:[e.versionPattern];r=W(t,i);}let n=e.priority,o=n>=500?"app":n>=300?"brand":"browser";return {browser:e.name,version:r!=null?r:"unknown",browserType:o,priority:n}}var ae=[{name:"KHTML",detect:/KHTML\//},{name:"Trident",detect:/(Trident|NET CLR)/},{name:"Presto",detect:/Presto/},{name:"Gecko",detect:/Gecko\//},{name:"WebKit",detect:/AppleWebKit/},{name:"ArkWeb",detect:/ArkWeb/}];var se={WebKit:/AppleWebKit\/([\d.]+)/,Blink:/AppleWebKit\/([\d.]+)/,ArkWeb:/AppleWebKit\/([\d.]+)/,Gecko:/Gecko\/([\d.]+)/,Trident:/Trident\/([\d.]+)/,Presto:/Presto\/([\d.]+)/,KHTML:/KHTML\/([\d.]+)/};function ce(t,e,r){var i,c,s,l;if(e===void 0||r===void 0){let u=V(t);e=e!=null?e:u.browser,r=r!=null?r:u.version;}let n="unknown";for(let u of ae)u.detect.test(t)&&(n=u.name);(n==="WebKit"&&/(Chrome|CriOS)/.test(t)&&parseInt((c=((i=/Chrome\/([\d]+)/.exec(t))!=null?i:[])[1])!=null?c:"0",10)>27||e==="Opera"&&parseInt(r,10)>12||e==="Yandex")&&(n="Blink"),e==="Edge"&&(n=parseInt(r,10)>75?"Blink":"EdgeHTML");let o=se[n]&&(l=(s=se[n].exec(t))==null?void 0:s[1])!=null?l:"unknown";return {engine:n,engineVersion:o}}function Ae(t,e){let r=e.split(".");for(let n=r.length;n>=1;n--){let o=r.slice(0,n).join(".");if(Object.prototype.hasOwnProperty.call(t,o))return t[o]}return "unknown"}function de(t,e){let r=null;for(let i of R)i.detect.test(t)&&(r=i);if(!r)return {os:"unknown",osVersion:"unknown",osVersionName:"unknown"};let n="unknown";if(r.versionPattern){let i=Array.isArray(r.versionPattern)?W(t,r.versionPattern):F(t,r.versionPattern);if(i!==null){let c=i.replace(/_/g,".");if(r.versionLookup){let s=Object.prototype.hasOwnProperty.call(r.versionLookup,c)?r.versionLookup[c]:null;if(s!==null)n=s;else if(r.name==="Windows"){let l=parseInt(c,10);n=isNaN(l)?"unknown":l.toString();}else n=c;}else n=c;}}r.name==="Windows"&&e&&(n=e);let o=r.versionNames?Ae(r.versionNames,n):"unknown";return {os:r.name,osVersion:n,osVersionName:o}}var me=[{name:"Mobile",detect:/(Mobi|iPh)/},{name:"Tablet",detect:/(Tablet|Pad)/}];function pe(t,e){var o,i;function r(){if(/PlayStation|Xbox|Nintendo/.test(t))return "Console";if(/visionOS|Quest/.test(t))return "XR";if(/(SMART-TV|HbbTV|SmartTV|TV Safari|Android TV|GoogleTV)/.test(t))return "TV";if(/iPad/.test(t)||/Android/.test(t)&&!/Mobile/.test(t))return "Tablet";for(let c of me)if(c.detect.test(t))return c.name;return null}function n(){var c,s,l,u,p,g,P,v,A,O,d,C,T,D,M,k;if(!e)return null;if(e.webglRenderer){if(/^ANGLE\b/.test(e.webglRenderer))return "PC";if(/Adreno/i.test(e.webglRenderer)||/Mali[-\s]/i.test(e.webglRenderer))return ((c=e.screenWidth)!=null?c:0)>=768?"Tablet":"Mobile";if(/Apple GPU/i.test(e.webglRenderer)){let N=(s=e.screenWidth)!=null?s:0;return N<=1366?N>=768?"Tablet":"Mobile":"PC"}}return e.platform==="MacIntel"&&((l=e.maxTouchPoints)!=null?l:0)>1?e.screenWidth!==void 0&&e.screenWidth<768?"Mobile":"Tablet":e.webglMaxTextureSize!==void 0&&e.webglMaxTextureSize<=8192&&((u=e.maxTouchPoints)!=null?u:0)>1&&((p=e.screenWidth)!=null?p:9999)<1367?((g=e.screenWidth)!=null?g:0)>=768?"Tablet":"Mobile":(P=e.webglCompressedFormats)!=null&&P.pvrtc&&!e.webglCompressedFormats.s3tc?((v=e.screenWidth)!=null?v:0)>=768?"Tablet":"Mobile":e.safeAreaInsetTop!==void 0&&e.safeAreaInsetTop>0?((A=e.screenWidth)!=null?A:0)>=768?"Tablet":"Mobile":e.hasVibration||e.hasDeviceMotion?((O=e.screenWidth)!=null?O:0)>=768?"Tablet":"Mobile":(d=e.connection)!=null&&d.effectiveType&&["2g","3g","slow-2g"].includes(e.connection.effectiveType)?((C=e.screenWidth)!=null?C:0)>=768?"Tablet":"Mobile":((T=e.devicePixelRatio)!=null?T:0)>2&&((D=e.maxTouchPoints)!=null?D:0)>1?((M=e.screenWidth)!=null?M:0)>=768?"Tablet":"Mobile":e.pointerType==="coarse"&&e.hoverCapability===false?((k=e.screenWidth)!=null?k:0)>=768?"Tablet":"Mobile":null}return (i=(o=n())!=null?o:r())!=null?i:"PC"}var Oe=[[/^SM-|^GT-|^SGH-|^SCH-|^SHW-|^SPH-|^SAMSUNG /i,"Samsung"],[/^Pixel |^Nexus /,"Google"],[/^moto |^motorola /i,"Motorola"],[/^HONOR /i,"Honor"],[/^ELS-|^LYA-|^HMA-|^VOG-|^ANA-|^CLT-|^JNY-|^NOH-|^PLK-|^BAH-|^BKL-|^COL-|^DUB-|^FIG-|^KIW-|^MAR-|^VTR-|^WAS-/i,"Huawei"],[/^CPH/,"OPPO"],[/^RMX/,"Realme"],[/^V\d{4}[A-Z]|^vivo /i,"Vivo"],[/^iqoo/i,"Vivo"],[/^Redmi |^POCO |^Mi /,"Xiaomi"],[/^2\d{9}|^2\d{3}[A-Z]/,"Xiaomi"],[/^OnePlus |^IN2|^KB2|^LE2/i,"OnePlus"],[/^LM-|^LGE |^LG-/i,"LG"],[/^HTC/i,"HTC"],[/^Nokia/i,"Nokia"],[/^XQ-/,"Sony"],[/^ASUS_|^ZB6|^ZS6|^ZE[56]/i,"Asus"],[/^Quest /i,"Meta"]],Ce=/Android [0-9.]+;(?:\s*U;)?(?:\s*[a-z]{2}[-_][a-zA-Z]{2,4};)?\s*([^;)]+?)(?:\s+Build\/|[;)])/;function le(t){if(/visionOS/.test(t))return {vendor:"Apple",model:"Apple Vision Pro"};if(/iPhone/.test(t))return {vendor:"Apple",model:"iPhone"};if(/iPad/.test(t))return {vendor:"Apple",model:"iPad"};if(/iPod/.test(t))return {vendor:"Apple",model:"iPod touch"};let e=Ce.exec(t);if(e){let r=e[1].trim();for(let[n,o]of Oe)if(n.test(r))return {vendor:o,model:r};return {vendor:"unknown",model:r}}return {vendor:"unknown",model:"unknown"}}var B=[{name:"Googlebot",detect:/Googlebot/,category:"search-engine"},{name:"Bingbot",detect:/(bingbot|BingPreview)/,category:"search-engine"},{name:"Baiduspider",detect:/(Baiduspider|BaiduMobaider)/,category:"search-engine"},{name:"Bytespider",detect:/Bytespider/,category:"search-engine"},{name:"YandexBot",detect:/YandexBot/,category:"search-engine"},{name:"DuckDuckBot",detect:/DuckDuckBot/,category:"search-engine"},{name:"Slurp",detect:/Slurp/,category:"search-engine"},{name:"Sogou",detect:/(Sogou|sogou).*[Ss]pider/,category:"search-engine"},{name:"360Spider",detect:/360Spider/,category:"search-engine"},{name:"PetalBot",detect:/PetalBot/,category:"search-engine"},{name:"Applebot-Extended",detect:/Applebot-Extended/,category:"search-engine"},{name:"Applebot",detect:/Applebot/,category:"search-engine"},{name:"Facebookbot",detect:/(facebookexternalhit|FacebookBot)/,category:"social"},{name:"Twitterbot",detect:/Twitterbot/,category:"social"},{name:"LinkedInBot",detect:/LinkedInBot/,category:"social"},{name:"PinterestBot",detect:/Pinterest/,category:"social"},{name:"Slackbot",detect:/Slackbot/,category:"link-preview"},{name:"Discordbot",detect:/Discordbot/,category:"link-preview"},{name:"TelegramBot",detect:/TelegramBot/,category:"link-preview"},{name:"WhatsApp",detect:/WhatsApp/,category:"link-preview"},{name:"SemrushBot",detect:/SemrushBot/,category:"seo-tool"},{name:"AhrefsBot",detect:/AhrefsBot/,category:"seo-tool"},{name:"MJ12bot",detect:/MJ12bot/,category:"seo-tool"},{name:"ScreamingFrog",detect:/Screaming Frog/,category:"seo-tool"},{name:"DataForSeoBot",detect:/DataForSeoBot/,category:"seo-tool"},{name:"GPTBot",detect:/GPTBot/,category:"ai-llm"},{name:"OAI-SearchBot",detect:/OAI-SearchBot/,category:"ai-llm"},{name:"ChatGPT-User",detect:/ChatGPT-User/,category:"ai-llm"},{name:"ClaudeBot",detect:/ClaudeBot/,category:"ai-llm"},{name:"PerplexityBot",detect:/PerplexityBot/,category:"ai-llm"},{name:"CCBot",detect:/CCBot/,category:"ai-llm"},{name:"AdsBot",detect:/AdsBot-Google/,category:"ai-llm"},{name:"Google-Extended",detect:/Google-Extended/,category:"ai-llm"},{name:"Meta-ExternalAgent",detect:/meta-externalagent/i,category:"ai-llm"},{name:"Amazonbot",detect:/Amazonbot/,category:"ai-llm"},{name:"Diffbot",detect:/Diffbot/,category:"ai-llm"},{name:"cohere-ai",detect:/cohere-ai/,category:"ai-llm"},{name:"YouBot",detect:/YouBot/,category:"ai-llm"},{name:"UptimeRobot",detect:/UptimeRobot/,category:"monitoring"},{name:"ia_archiver",detect:/ia_archiver/,category:"monitoring"},{name:"GenericBot",detect:/(bot|crawler|spider|crawling|scraper)/i,category:"generic"}];function ue(t,e){let r=e?[...B.slice(0,-1),...e,B[B.length-1]]:B;for(let n of r)if(n.detect.test(t))return {isBot:true,botName:n.name,botCategory:n.category};return {isBot:false,botName:"unknown",botCategory:"unknown"}}var ge=[{name:"arm64",detect:/(aarch64|arm64|ARM64|iPhone|iPad|iPod)/},{name:"arm",detect:/\bARM\b/},{name:"x86_64",detect:/(x86_64|Win64|WOW64|x64;|amd64)/i},{name:"x86",detect:/(i[36]86|i686|x86;)/}];function fe(t,e){if(e!=null&&e.highEntropyData){let{architecture:o,bitness:i}=e.highEntropyData;if(o==="arm")return i==="64"?"arm64":"arm";if(o==="x86")return i==="64"?"x86_64":"x86"}let r=e==null?void 0:e.webglRenderer;if(r){if(/Apple\s+(M\d|A\d{1,2}[A-Z]?)\b/i.test(r)||/APPLE M\d/i.test(r)||/^Apple GPU$/i.test(r))return "arm64";if(/\b(Intel|AMD|NVIDIA|Radeon)\b/i.test(r))return "x86_64"}let n=e==null?void 0:e.platform;if(n){if(/iPhone|iPad|iPod/.test(n)||/arm64|aarch64/i.test(n))return "arm64";if(/arm/i.test(n))return "arm";if(/Win64|WOW64|x86_64/i.test(n))return "x86_64";if(/Win32|i686/i.test(n))return "x86"}for(let o of ge)if(o.detect.test(t))return o.name;return "unknown"}var Te=/(HeadlessChrome|Headless|PhantomJS|Electron\/|Playwright|jsdom\/|Selenium)/;function ye(t){return Te.test(t)}function L(t){return !!(/; wv/.test(t)||/like Mac OS X/.test(t)&&!/Version\//.test(t)&&!/Safari\//.test(t))}function S(){return typeof navigator=="undefined"?{userAgent:"",platform:"",language:"",maxTouchPoints:0}:navigator}function x(t,e){var r;try{return !!((r=t.mimeTypes)!=null&&r.namedItem(e))}catch(n){return false}}function _(t){var n,o;return ((o=(n=t.browserLanguage)!=null?n:t.language)!=null?o:"").replace(/-\w+/g,i=>i.toUpperCase())||"unknown"}var De=[["Microsoft Edge","Edge"],["Opera","Opera"],["Vivaldi","Vivaldi"],["Google Chrome","Chrome"],["Chromium","Chromium"]];function Me(t){var i,c,s,l,u,p,g;let e=((i=t.platform)!=null?i:"").toLowerCase(),r=(c=t.userAgentData)==null?void 0:c.platform,n=(s=t.highEntropyData)==null?void 0:s.platformVersion,o=!!(n&&n!=="0.0.0");if((l=t.webglCompressedFormats)!=null&&l.pvrtc&&!t.webglCompressedFormats.s3tc)return "iOS";if(t.webglRenderer&&/^ANGLE\b/.test(t.webglRenderer))return e.startsWith("mac")||r==="macOS"?"MacOS":e.startsWith("win")||r==="Windows"?"Windows":r==="Chrome OS"?"Chrome OS":null;if(t.webglRenderer&&(/Adreno/i.test(t.webglRenderer)||/Mali[-\s]/i.test(t.webglRenderer)))return "Android";if(r&&o){let v={Windows:"Windows",macOS:"MacOS",Android:"Android",iOS:"iOS","Chrome OS":"Chrome OS"}[r];if(v)return v}return e.startsWith("mac")?"MacOS":e.startsWith("win")?"Windows":e==="iphone"||e==="ipad"||e==="ipod"||((u=t.safeAreaInsetTop)!=null?u:0)>0?"iOS":r==="Chrome OS"?"Chrome OS":r==="Android"&&(e.includes("android")||/^linux arm/i.test((p=t.platform)!=null?p:""))||e.includes("android")||/^linux arm/i.test((g=t.platform)!=null?g:"")?"Android":null}function ke(t){return /iPhone/.test(t)?"iPhone":/iPad/.test(t)?"iPad":/iPod/.test(t)?"iPod":/Macintosh/.test(t)?"MacIntel":/Windows NT/.test(t)?/Win64|WOW64/i.test(t)?"Win64":"Win32":/CrOS/.test(t)?"Linux x86_64":/Android/.test(t)?/aarch64|arm64/i.test(t)?"Linux aarch64":"Linux armv8l":/Linux/.test(t)?/x86_64/i.test(t)?"Linux x86_64":/aarch64|arm64/i.test(t)?"Linux aarch64":"Linux":"unknown"}function be(t){return t.replace(/_/g,"-").split("-").map((r,n)=>n===0?r.toLowerCase():r.length===4?r[0].toUpperCase()+r.slice(1).toLowerCase():r.toUpperCase()).join("-")}function Ne(t){let e=/\bLanguage\/([a-zA-Z]{2,3}(?:[-_][a-zA-Z]{2,4}){1,2})\b/i.exec(t);if(e)return be(e[1]);let r=/[;(]\s*([a-z]{2,3}(?:[-_][A-Za-z]{2,4})+)\s*[;)]/g,n;for(;(n=r.exec(t))!==null;)if(n[1].replace(/_/g,"-").split("-").length>=2)return be(n[1]);return "unknown"}function I(t,e={}){var H,G,j,U,Q,K,z,X,Y,Z,q,J,$,ee,te,re;let r=(H=e.ctx)!=null?H:e.nav,n=(j=(G=e.ctx)==null?void 0:G.windowsVersion)!=null?j:e.windowsVersion,{browser:o,version:i,browserType:c}=V(t),{os:s,osVersion:l,osVersionName:u}=de(t,n),p=s,g=l,P=pe(t,r),{vendor:v,model:A}=le(t),O=fe(t,(U=e.ctx)!=null?U:r),d=r,{isBot:C,botName:T,botCategory:D}=ue(t,e.customBotDefs),M=ye(t),k=e.language||(d!=null&&d.language||d!=null&&d.browserLanguage?_(d):"")||Ne(t),N=(d==null?void 0:d.platform)||ke(t),f=o,w=i;if((Q=e.ctx)!=null&&Q.hasBrave&&(f="Brave"),d){let a=typeof chrome!="undefined"?chrome:void 0,h=/Chrome\/([\d]+)/.exec(t),y=h?parseInt(h[1],10):0;if(a)if(a.adblock2345||a.common2345)f="2345Explorer",w="unknown";else {let m=false;if(x(d,"application/360softmgrplugin")||x(d,"application/mozilla-npqihooquicklogin")||y>36&&typeof showModalDialog!="undefined"?m=true:y>45&&(m=x(d,"application/vnd.chromium.remoting-viewer"),!m&&y>=69&&(m=x(d,"application/hwepass2001.installepass2001")||x(d,"application/asx"))),m){let b=((K=d.connection)==null?void 0:K.saveData)===true;x(d,"application/gameplugin")||!b?f="360SE":f="360EE",w="unknown";}}}if(f==="Baidu"&&/(Opera|OPR|OPT)/.test(t)){f="Opera";let a=(X=(z=/OPR\/([\d.]+)/.exec(t))!=null?z:/OPT\/([\d.]+)/.exec(t))!=null?X:/Opera\/([\d.]+)/.exec(t);w=(Y=a==null?void 0:a[1])!=null?Y:"unknown";}if(f==="Chrome"&&/\S+Browser\//.test(t)){let a=/(\S+Browser)\/([\d.]+)/.exec(t);a&&(f=a[1],w=a[2]);}if(f==="Firefox"&&d)try{(typeof clientInformation!="undefined"||typeof u2f=="undefined")&&(f="Firefox Nightly");}catch(a){}if(p==="iOS"&&f==="Safari"){let a=/Version\/([\d.]+)/.exec(t);a&&parseInt(a[1],10)>parseInt(g,10)&&(g=a[1]);}if(p==="MacOS"&&f==="Safari"){let a=/Version\/([\d.]+)/.exec(t);a&&parseInt(a[1],10)>=26&&(g=a[1]);}if(e.ctx){let a=Me(e.ctx);if(a!==null&&(a!==s&&(p=a,g="unknown"),p!=="Windows")){let y=(Z=e.ctx.highEntropyData)==null?void 0:Z.platformVersion;if(y&&y!=="0.0.0"){let m=y.split(".").map(Number);for(;m.length>1&&m[m.length-1]===0;)m.pop();m[0]&&(g=m.join("."));}}let h=(q=e.ctx.highEntropyData)==null?void 0:q.fullVersionList;if(h)for(let[y,m]of De){let b=h.find(Se=>Se.brand===y);if(b!=null&&b.version){f=m,w=b.version;break}}}let{engine:he,engineVersion:ve}=ce(t,f,w),xe=parseInt((J=w.split(".")[0])!=null?J:"0",10)||0,Pe=(re=(te=(ee=($=e.ctx)!=null?$:e.nav)==null?void 0:ee.connection)==null?void 0:te.effectiveType)!=null?re:"unknown",Be=p==="MacOS"||p==="Windows"?(()=>{var y;let a=(y=R.find(m=>m.name===p))==null?void 0:y.versionNames;if(!a)return "unknown";let h=g.split(".");for(let m=h.length;m>=1;m--){let b=h.slice(0,m).join(".");if(Object.prototype.hasOwnProperty.call(a,b))return a[b]}return "unknown"})():u;return {browser:f,version:w,versionMajor:xe,browserType:f==="Brave"?"browser":c,engine:he,engineVersion:ve,os:p,osVersion:g,osVersionName:Be,device:P,vendor:v,model:A,arch:O,isWebview:L(t),isHeadless:M,isBot:C,botName:T,botCategory:D,language:k,platform:N,connectionType:Pe}}var Re=[".AppleSystemUIFont","Segoe UI","Noto Color Emoji","Ubuntu","HarmonyOS Sans"];function We(){try{let e=document.createElement("canvas").getContext("2d");if(!e)return {};let r="mmmmmmmmmmlli";e.font="72px monospace";let n=e.measureText(r).width,o={};for(let i of Re)e.font=`72px '${i}', monospace`,o[i]=e.measureText(r).width!==n;return o}catch(t){return {}}}function Ve(){var t,e;try{let r=document.createElement("canvas"),n=(t=r.getContext("webgl"))!=null?t:r.getContext("experimental-webgl");if(!n)return {};let o=n.getExtension("WEBGL_debug_renderer_info"),i={maxTextureSize:n.getParameter(n.MAX_TEXTURE_SIZE),fragPrecision:(e=n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT))==null?void 0:e.rangeMax,compressedFormats:{s3tc:!!n.getExtension("WEBGL_compressed_texture_s3tc"),pvrtc:!!n.getExtension("WEBGL_compressed_texture_pvrtc"),etc2:!!n.getExtension("WEBGL_compressed_texture_etc"),astc:!!n.getExtension("WEBGL_compressed_texture_astc_ldr")}};return o&&(i.renderer=n.getParameter(o.UNMASKED_RENDERER_WEBGL),i.vendor=n.getParameter(o.UNMASKED_VENDOR_WEBGL)),i}catch(r){return {}}}function Le(){try{let t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.body.appendChild(t);let e=parseFloat(getComputedStyle(t).top);return document.body.removeChild(t),isNaN(e)?0:e}catch(t){return 0}}function _e(){var t;try{let e=(t=window.AudioContext)!=null?t:window.webkitAudioContext;if(!e)return;let r=new e,n=r.sampleRate;return r.close(),n}catch(e){return}}function Fe(){try{if(window.matchMedia("(pointer: coarse)").matches)return "coarse";if(window.matchMedia("(pointer: fine)").matches)return "fine";if(window.matchMedia("(pointer: none)").matches)return "none"}catch(t){}}function Ie(){try{return window.matchMedia("(hover: hover)").matches}catch(t){return}}function He(t){var r;if(!t)return null;let e=parseInt((r=t.split(".")[0])!=null?r:"0",10);return isNaN(e)?null:e>=13?"11":"10"}async function we(){var r,n,o,i,c;let t=S(),e={userAgent:t.userAgent,platform:t.platform,language:t.language,maxTouchPoints:t.maxTouchPoints};if(t.browserLanguage!==void 0&&(e.browserLanguage=t.browserLanguage),t.mimeTypes!==void 0&&(e.mimeTypes=t.mimeTypes),t.connection!==void 0&&(e.connection=t.connection),t.userAgentData!==void 0&&(e.userAgentData=t.userAgentData),typeof navigator!="undefined"&&(e.hardwareConcurrency=navigator.hardwareConcurrency,e.deviceMemory=navigator.deviceMemory),typeof window!="undefined"){e.devicePixelRatio=window.devicePixelRatio,e.screenWidth=(r=window.screen)==null?void 0:r.width,e.screenHeight=(n=window.screen)==null?void 0:n.height,e.safeAreaInsetTop=Le(),e.pointerType=Fe(),e.hoverCapability=Ie(),e.fontProbes=We(),e.audioSampleRate=_e(),e.hasVibration="vibrate"in navigator,e.hasDeviceMotion="DeviceMotionEvent"in window;try{e.hasBrave=(c=await((i=(o=navigator.brave)==null?void 0:o.isBrave)==null?void 0:i.call(o)))!=null?c:!1;}catch(P){e.hasBrave=false;}let{renderer:s,vendor:l,maxTextureSize:u,fragPrecision:p,compressedFormats:g}=Ve();s!==void 0&&(e.webglRenderer=s),l!==void 0&&(e.webglVendor=l),u!==void 0&&(e.webglMaxTextureSize=u),p!==void 0&&(e.webglFragPrecision=p),g!==void 0&&(e.webglCompressedFormats=g);}if(t.userAgentData)try{let s=await t.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]);e.highEntropyData={architecture:s.architecture,bitness:s.bitness,model:s.model,platformVersion:s.platformVersion,fullVersionList:s.fullVersionList},t.userAgentData.platform==="Windows"&&(e.windowsVersion=He(s.platformVersion));}catch(s){}return e}var{version:Ge}=ne;function E(){let t=S();return I(t.userAgent,{nav:t})}E.detect=async t=>{let e=await we();return I(t!=null?t:e.userAgent,{ctx:e})};E.isWebview=L;E.getLanguage=()=>_(S());E.VERSION=Ge;var je=E;
2
+ return je;})();//# sourceMappingURL=index.min.js.map
3
3
  //# sourceMappingURL=index.min.js.map