@zappar/zappar-cv 2.0.0-beta.9 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.1.0] - 2023-02-06
4
+
5
+ ### Added
6
+ - Spanish, Portuguese and German translations for permissions screen
7
+
8
+ ### Changed
9
+
10
+ - Improvements to curved tracking
11
+
12
+ ## [2.0.0] - 2022-08-23
13
+
14
+ ### Added
15
+
16
+ - Greatly improved instant tracking.
17
+ - Introduced `SequenceSource` and pipeline functions to record and playback sequences of camera+motion data.
18
+ - Added support for curved tracking.
19
+ - Added support for fetching image element containing target image's embedded preview image.
20
+ - Improved GL state management.
21
+
22
+ ### Changed
23
+
24
+ - Migrated to Webpack 5 workers.
25
+
26
+ ### **Breaking:**
27
+
28
+ - Dropped support for webpack 4.
29
+
3
30
  ## [0.3.17] - 2022-07-21
4
31
 
5
32
  ### Fixed
package/README.md CHANGED
@@ -18,8 +18,8 @@ npm i @zappar/zappar-cv
18
18
 
19
19
  You can use our CDN from within your HTML:
20
20
  ```
21
- <script src="https://libs.zappar.com/zappar-cv/2.0.0-beta.9/zappar-cv.js"></script>
21
+ <script src="https://libs.zappar.com/zappar-cv/2.0.1/zappar-cv.js"></script>
22
22
  ```
23
23
 
24
24
  Or you can download and host our standalone JavaScript bundle:
25
- [https://libs.zappar.com/zappar-cv/2.0.0-beta.9/zappar-cv.zip](https://libs.zappar.com/zappar-cv/2.0.0-beta.9/zappar-cv.zip)
25
+ [https://libs.zappar.com/zappar-cv/2.0.1/zappar-cv.zip](https://libs.zappar.com/zappar-cv/2.0.1/zappar-cv.zip)
@@ -7,6 +7,8 @@ export declare class CameraSource extends HTMLElementSource {
7
7
  static DEFAULT_DEVICE_ID: string;
8
8
  private _currentStream;
9
9
  private _activeDeviceId;
10
+ private _explicitUserCameraId;
11
+ private _explicitEnvironmentCameraId;
10
12
  constructor(_impl: zappar_camera_source_t, pipeline: zappar_pipeline_t, _deviceId: string);
11
13
  destroy(): void;
12
14
  private _stop;
@@ -84,6 +84,20 @@ export class CameraSource extends HTMLElementSource {
84
84
  }
85
85
  else {
86
86
  facingMode = (this._deviceId === CameraSource.DEFAULT_DEVICE_ID) ? "environment" : "user";
87
+ if (profile.ios164CameraSelection) {
88
+ if (!this._explicitEnvironmentCameraId || !this._explicitUserCameraId) {
89
+ const stream = yield navigator.mediaDevices.getUserMedia({ audio: false, video: { facingMode } });
90
+ let tracks = stream.getTracks();
91
+ tracks.forEach(t => t.stop());
92
+ let devices = yield navigator.mediaDevices.enumerateDevices();
93
+ devices = devices.filter(val => val.kind === 'videoinput');
94
+ if (devices.length >= 2) {
95
+ this._explicitUserCameraId = devices[0].deviceId;
96
+ this._explicitEnvironmentCameraId = devices[1].deviceId;
97
+ }
98
+ }
99
+ deviceId = (facingMode === 'environment') ? this._explicitEnvironmentCameraId : this._explicitUserCameraId;
100
+ }
87
101
  }
88
102
  let constraints = {
89
103
  audio: false,
@@ -48,6 +48,11 @@ function cylindrical(info) {
48
48
  }
49
49
  function conical(info) {
50
50
  const radius_diff = info.topRadius - info.bottomRadius;
51
+ // Prevents divide by zero errors.
52
+ if (radius_diff === 0) {
53
+ console.warn("Conical target has matching radii, using cylindrical preview mesh with a defined image size instead.");
54
+ return cylindrical(info);
55
+ }
51
56
  const height_3d = Math.sqrt(info.sideLength * info.sideLength - radius_diff * radius_diff);
52
57
  const flip = info.bottomRadius > info.topRadius;
53
58
  let aspect_ratio = info.trainedWidth / info.trainedHeight;
package/lib/permission.js CHANGED
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { UAParser } from "ua-parser-js";
11
+ import { STRINGS, tr } from "./tr";
11
12
  let parser = new UAParser();
12
13
  let _permissionGrantedCamera = false;
13
14
  let _permissionGrantedMotion = false;
@@ -120,9 +121,9 @@ export function permissionRequestUI() {
120
121
  }
121
122
  </style>
122
123
  <div class="zappar-inner">
123
- <div class="zappar-title">Almost there...</div>
124
- <div class="zappar-text">In order to provide this augmented reality experience, we need access to your device's camera and motion sensors.</div>
125
- <button id="zappar-permission-request-button">Grant Access</button>
124
+ <div class="zappar-title">${tr(STRINGS.PermissionTitle)}</div>
125
+ <div class="zappar-text">${tr(STRINGS.PermissionDescription)}</div>
126
+ <button id="zappar-permission-request-button">${tr(STRINGS.PermissionButton)}</button>
126
127
  </div>
127
128
  `;
128
129
  document.body.append(div);
package/lib/pipeline.d.ts CHANGED
@@ -17,7 +17,7 @@ export declare class Pipeline {
17
17
  private cameraTokens;
18
18
  private nextCameraToken;
19
19
  private tokensInFlight;
20
- glContext: WebGLRenderingContext | undefined;
20
+ glContext: WebGLRenderingContext | WebGL2RenderingContext | undefined;
21
21
  private videoTextures;
22
22
  cameraPixelArrays: ArrayBuffer[];
23
23
  private _cameraDraw;
package/lib/profile.d.ts CHANGED
@@ -15,4 +15,5 @@ export declare let profile: {
15
15
  videoElementInDOM: boolean;
16
16
  preferMediaStreamTrackProcessorCamera: boolean;
17
17
  preferImageBitmapCamera: boolean;
18
+ ios164CameraSelection: boolean;
18
19
  };
package/lib/profile.js CHANGED
@@ -16,7 +16,8 @@ export let profile = {
16
16
  dataHeight: 240,
17
17
  videoElementInDOM: false,
18
18
  preferMediaStreamTrackProcessorCamera: false,
19
- preferImageBitmapCamera: false
19
+ preferImageBitmapCamera: false,
20
+ ios164CameraSelection: false
20
21
  };
21
22
  if (typeof window !== "undefined") {
22
23
  window["zeeProfile"] = profile;
@@ -74,5 +75,8 @@ function iDevice(version) {
74
75
  profile.dataHeight = 180;
75
76
  }
76
77
  }
78
+ if ((majorVersion === 16 && minorVersion >= 4) || (majorVersion > 16)) {
79
+ profile.ios164CameraSelection = true;
80
+ }
77
81
  }
78
82
  }
package/lib/tr.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare enum STRINGS {
2
+ PermissionTitle = 0,
3
+ PermissionDescription = 1,
4
+ PermissionButton = 2
5
+ }
6
+ export declare function tr(str: STRINGS): string;
package/lib/tr.js ADDED
@@ -0,0 +1,42 @@
1
+ export var STRINGS;
2
+ (function (STRINGS) {
3
+ STRINGS[STRINGS["PermissionTitle"] = 0] = "PermissionTitle";
4
+ STRINGS[STRINGS["PermissionDescription"] = 1] = "PermissionDescription";
5
+ STRINGS[STRINGS["PermissionButton"] = 2] = "PermissionButton";
6
+ })(STRINGS || (STRINGS = {}));
7
+ function parseLanguage(inp) {
8
+ const [lang, locale] = inp.toLowerCase().split("-");
9
+ return [lang, locale || ""];
10
+ }
11
+ const [lang, locale] = parseLanguage(navigator.language);
12
+ export function tr(str) {
13
+ switch (lang) {
14
+ case "es":
15
+ switch (str) {
16
+ case STRINGS.PermissionTitle: return "Ya casi...";
17
+ case STRINGS.PermissionDescription: return "Para brindar esta experiencia de realidad aumentada, necesitamos acceso a la cámara y los sensores de movimiento de su dispositivo.";
18
+ case STRINGS.PermissionButton: return "Permitir acceso";
19
+ }
20
+ break;
21
+ case "de":
22
+ switch (str) {
23
+ case STRINGS.PermissionTitle: return "Fast am Ziel..";
24
+ case STRINGS.PermissionDescription: return "Um dir dieses Augmented Reality Erlebnis zu liefern, brauchen wir Zugriff auf die Kamera und Bewegungssensoren deines Gerätes.";
25
+ case STRINGS.PermissionButton: return "Gewähre Zugriff";
26
+ }
27
+ break;
28
+ case "pt":
29
+ switch (str) {
30
+ case STRINGS.PermissionTitle: return "Está quase!";
31
+ case STRINGS.PermissionDescription: return "Esta experiência de realidade aumentada precisa de acesso à câmera e aos sensores de movimento deste dispositivo.";
32
+ case STRINGS.PermissionButton: return "Permitir acesso";
33
+ }
34
+ break;
35
+ }
36
+ switch (str) {
37
+ case STRINGS.PermissionTitle: return "Almost there...";
38
+ case STRINGS.PermissionDescription: return "In order to provide this augmented reality experience, we need access to your device's camera and motion sensors.";
39
+ case STRINGS.PermissionButton: return "Grant Access";
40
+ }
41
+ return "";
42
+ }
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "2.0.0-beta.9";
1
+ export declare const VERSION = "2.0.1";
package/lib/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "2.0.0-beta.9";
1
+ export const VERSION = "2.0.1";
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zappar/zappar-cv",
3
- "version": "2.0.0-beta.9",
3
+ "version": "2.0.1",
4
4
  "description": "Zappar's core computer vision library, supporting image, face and world tracking.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -14,7 +14,8 @@
14
14
  "tests": "webpack --config=webpack.tests.config.js --mode=development && webpack serve --mode=development --config=webpack.tests.config.js",
15
15
  "webpack-puppeteer": "webpack --config=webpack.config.puppeteer.js --mode=development && webpack serve --config=webpack.config.puppeteer.js",
16
16
  "standalone-test-serve": "concurrently 'zapworks serve --port 7010 umd' 'zapworks serve --port 7011 puppeteer-standalone-dist' || true",
17
- "standalone-test-serve2": "zapworks serve --port 7011 puppeteer-standalone-dist"
17
+ "standalone-test-serve2": "zapworks serve --port 7011 puppeteer-standalone-dist",
18
+ "audit": "better-npm-audit audit --production"
18
19
  },
19
20
  "author": "Zappar Limited",
20
21
  "files": [
@@ -37,6 +38,7 @@
37
38
  "@types/puppeteer": "5.4.3",
38
39
  "@types/ua-parser-js": "0.7.33",
39
40
  "@zappar/zapworks-cli": "0.6.17",
41
+ "better-npm-audit": "^3.7.3",
40
42
  "concurrently": "5.3.0",
41
43
  "dat.gui": "0.7.7",
42
44
  "html-webpack-plugin": "5.5.0",
@@ -57,6 +59,6 @@
57
59
  },
58
60
  "dependencies": {
59
61
  "gl-matrix": "3.4.3",
60
- "ua-parser-js": "0.7.30"
62
+ "ua-parser-js": "1.0.33"
61
63
  }
62
64
  }
@@ -1 +1 @@
1
- (self.webpackChunkZCV=self.webpackChunkZCV||[]).push([[169],{685:(i,e,o)=>{"use strict";o.d(e,{WT:()=>r});var r="undefined"!=typeof Float32Array?Float32Array:Array;Math.random,Math.PI,Math.hypot||(Math.hypot=function(){for(var i=0,e=arguments.length;e--;)i+=arguments[e]*arguments[e];return Math.sqrt(i)})},975:(i,e,o)=>{"use strict";o.d(e,{Ue:()=>a,yR:()=>n,xJ:()=>t});var r=o(685);function a(){var i=new r.WT(16);return r.WT!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0),i[0]=1,i[5]=1,i[10]=1,i[15]=1,i}function n(i){return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}function t(i,e){return i[0]=e[0],i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=e[1],i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=e[2],i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}},238:function(i,e,o){var r;!function(a,n){"use strict";var t="function",s="undefined",b="object",w="string",l="model",d="name",u="type",c="vendor",p="version",m="architecture",f="console",h="mobile",v="tablet",g="smarttv",x="wearable",k="embedded",y="Amazon",_="Apple",T="ASUS",S="BlackBerry",q="Google",A="Huawei",C="LG",z="Microsoft",N="Motorola",O="Samsung",E="Sony",M="Xiaomi",U="Zebra",j="Facebook",B=function(i){var e={};for(var o in i)e[i[o].toUpperCase()]=i[o];return e},R=function(i,e){return typeof i===w&&-1!==V(e).indexOf(V(i))},V=function(i){return i.toLowerCase()},F=function(i,e){if(typeof i===w)return i=i.replace(/^\s\s*/,"").replace(/\s\s*$/,""),typeof e===s?i:i.substring(0,255)},P=function(i,e){for(var o,r,a,s,w,l,d=0;d<e.length&&!w;){var u=e[d],c=e[d+1];for(o=r=0;o<u.length&&!w;)if(w=u[o++].exec(i))for(a=0;a<c.length;a++)l=w[++r],typeof(s=c[a])===b&&s.length>0?2==s.length?typeof s[1]==t?this[s[0]]=s[1].call(this,l):this[s[0]]=s[1]:3==s.length?typeof s[1]!==t||s[1].exec&&s[1].test?this[s[0]]=l?l.replace(s[1],s[2]):n:this[s[0]]=l?s[1].call(this,l,s[2]):n:4==s.length&&(this[s[0]]=l?s[3].call(this,l.replace(s[1],s[2])):n):this[s]=l||n;d+=2}},W=function(i,e){for(var o in e)if(typeof e[o]===b&&e[o].length>0){for(var r=0;r<e[o].length;r++)if(R(e[o][r],i))return"?"===o?n:o}else if(R(e[o],i))return"?"===o?n:o;return i},I={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"},D={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[d,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[d,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[d,p],[/opios[\/ ]+([\w\.]+)/i],[p,[d,"Opera Mini"]],[/\bopr\/([\w\.]+)/i],[p,[d,"Opera"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\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|qqbrowserlite|qq)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[d,p],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[d,"UCBrowser"]],[/\bqbcore\/([\w\.]+)/i],[p,[d,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[p,[d,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[d,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[d,"IE"]],[/yabrowser\/([\w\.]+)/i],[p,[d,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[d,/(.+)/,"$1 Secure Browser"],p],[/\bfocus\/([\w\.]+)/i],[p,[d,"Firefox Focus"]],[/\bopt\/([\w\.]+)/i],[p,[d,"Opera Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[d,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[d,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[d,"Opera Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[d,"MIUI Browser"]],[/fxios\/([-\w\.]+)/i],[p,[d,"Firefox"]],[/\bqihu|(qi?ho?o?|360)browser/i],[[d,"360 Browser"]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[d,/(.+)/,"$1 Browser"],p],[/(comodo_dragon)\/([\w\.]+)/i],[[d,/_/g," "],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[d,p],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i],[d],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[d,j],p],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[d,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[d,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[d,"Chrome Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[d,"Chrome WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[d,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[d,p],[/version\/([\w\.]+) .*mobile\/\w+ (safari)/i],[p,[d,"Mobile Safari"]],[/version\/([\w\.]+) .*(mobile ?safari|safari)/i],[p,d],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[d,[p,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[d,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[d,"Netscape"],p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[d,"Firefox 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],[d,p]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,V]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",V]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,V]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[l,[c,O],[u,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[l,[c,O],[u,h]],[/\((ip(?:hone|od)[\w ]*);/i],[l,[c,_],[u,h]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[l,[c,_],[u,v]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[l,[c,A],[u,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i],[l,[c,A],[u,h]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[l,/_/g," "],[c,M],[u,h]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[l,/_/g," "],[c,M],[u,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007)\b/i],[l,[c,"OPPO"],[u,h]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[l,[c,"Vivo"],[u,h]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[l,[c,"Realme"],[u,h]],[/\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],[l,[c,N],[u,h]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[l,[c,N],[u,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[l,[c,C],[u,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[l,[c,C],[u,h]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[l,[c,"Lenovo"],[u,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[l,/_/g," "],[c,"Nokia"],[u,h]],[/(pixel c)\b/i],[l,[c,q],[u,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[l,[c,q],[u,h]],[/droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[l,[c,E],[u,h]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[l,"Xperia Tablet"],[c,E],[u,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[l,[c,"OnePlus"],[u,h]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[l,[c,y],[u,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[l,/(.+)/g,"Fire Phone $1"],[c,y],[u,h]],[/(playbook);[-\w\),; ]+(rim)/i],[l,c,[u,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[l,[c,S],[u,h]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[l,[c,T],[u,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[l,[c,T],[u,h]],[/(nexus 9)/i],[l,[c,"HTC"],[u,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i],[c,[l,/_/g," "],[u,h]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[l,[c,"Acer"],[u,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[l,[c,"Meizu"],[u,h]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[l,[c,"Sharp"],[u,h]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[c,l,[u,h]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[c,l,[u,v]],[/(surface duo)/i],[l,[c,z],[u,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[l,[c,"Fairphone"],[u,h]],[/(u304aa)/i],[l,[c,"AT&T"],[u,h]],[/\bsie-(\w*)/i],[l,[c,"Siemens"],[u,h]],[/\b(rct\w+) b/i],[l,[c,"RCA"],[u,v]],[/\b(venue[\d ]{2,7}) b/i],[l,[c,"Dell"],[u,v]],[/\b(q(?:mv|ta)\w+) b/i],[l,[c,"Verizon"],[u,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[l,[c,"Barnes & Noble"],[u,v]],[/\b(tm\d{3}\w+) b/i],[l,[c,"NuVision"],[u,v]],[/\b(k88) b/i],[l,[c,"ZTE"],[u,v]],[/\b(nx\d{3}j) b/i],[l,[c,"ZTE"],[u,h]],[/\b(gen\d{3}) b.+49h/i],[l,[c,"Swiss"],[u,h]],[/\b(zur\d{3}) b/i],[l,[c,"Swiss"],[u,v]],[/\b((zeki)?tb.*\b) b/i],[l,[c,"Zeki"],[u,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[c,"Dragon Touch"],l,[u,v]],[/\b(ns-?\w{0,9}) b/i],[l,[c,"Insignia"],[u,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[l,[c,"NextBook"],[u,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[c,"Voice"],l,[u,h]],[/\b(lvtel\-)?(v1[12]) b/i],[[c,"LvTel"],l,[u,h]],[/\b(ph-1) /i],[l,[c,"Essential"],[u,h]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[l,[c,"Envizen"],[u,v]],[/\b(trio[-\w\. ]+) b/i],[l,[c,"MachSpeed"],[u,v]],[/\btu_(1491) b/i],[l,[c,"Rotor"],[u,v]],[/(shield[\w ]+) b/i],[l,[c,"Nvidia"],[u,v]],[/(sprint) (\w+)/i],[c,l,[u,h]],[/(kin\.[onetw]{3})/i],[[l,/\./g," "],[c,z],[u,h]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[l,[c,U],[u,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[l,[c,U],[u,h]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[c,l,[u,f]],[/droid.+; (shield) bui/i],[l,[c,"Nvidia"],[u,f]],[/(playstation [345portablevi]+)/i],[l,[c,E],[u,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[l,[c,z],[u,f]],[/smart-tv.+(samsung)/i],[c,[u,g]],[/hbbtv.+maple;(\d+)/i],[[l,/^/,"SmartTV"],[c,O],[u,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[c,C],[u,g]],[/(apple) ?tv/i],[c,[l,"Apple TV"],[u,g]],[/crkey/i],[[l,"Chromecast"],[c,q],[u,g]],[/droid.+aft(\w)( bui|\))/i],[l,[c,y],[u,g]],[/\(dtv[\);].+(aquos)/i],[l,[c,"Sharp"],[u,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[c,F],[l,F],[u,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,g]],[/((pebble))app/i],[c,l,[u,x]],[/droid.+; (glass) \d/i],[l,[c,q],[u,x]],[/droid.+; (wt63?0{2,3})\)/i],[l,[c,U],[u,x]],[/(quest( 2)?)/i],[l,[c,j],[u,x]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[c,[u,k]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[l,[u,h]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[l,[u,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,v]],[/(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i],[[u,h]],[/(android[-\w\. ]{0,9});.+buil/i],[l,[c,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[d,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[d,"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],[d,p],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,d]],os:[[/microsoft (windows) (vista|xp)/i],[d,p],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[d,[p,W,I]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[d,"Windows"],[p,W,I]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[d,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[d,"Mac OS"],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[p,d],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[d,p],[/\(bb(10);/i],[p,[d,S]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[p,[d,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[d,"Firefox OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[d,"webOS"]],[/crkey\/([\d\.]+)/i],[p,[d,"Chromecast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[d,"Chromium OS"],p],[/(nintendo|playstation) ([wids345portablevuch]+)/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],[d,p],[/(sunos) ?([\w\.\d]*)/i],[[d,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[d,p]]},Z=function(i,e){if(typeof i===b&&(e=i,i=n),!(this instanceof Z))return new Z(i,e).getResult();var o=i||(typeof a!==s&&a.navigator&&a.navigator.userAgent?a.navigator.userAgent:""),r=e?function(i,e){var o={};for(var r in i)e[r]&&e[r].length%2==0?o[r]=e[r].concat(i[r]):o[r]=i[r];return o}(D,e):D;return this.getBrowser=function(){var i,e={};return e.name=n,e.version=n,P.call(e,o,r.browser),e.major=typeof(i=e.version)===w?i.replace(/[^\d\.]/g,"").split(".")[0]:n,e},this.getCPU=function(){var i={};return i.architecture=n,P.call(i,o,r.cpu),i},this.getDevice=function(){var i={};return i.vendor=n,i.model=n,i.type=n,P.call(i,o,r.device),i},this.getEngine=function(){var i={};return i.name=n,i.version=n,P.call(i,o,r.engine),i},this.getOS=function(){var i={};return i.name=n,i.version=n,P.call(i,o,r.os),i},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return o},this.setUA=function(i){return o=typeof i===w&&i.length>255?F(i,255):i,this},this.setUA(o),this};Z.VERSION="0.7.30",Z.BROWSER=B([d,p,"major"]),Z.CPU=B([m]),Z.DEVICE=B([l,c,u,f,h,g,v,x,k]),Z.ENGINE=Z.OS=B([d,p]),typeof e!==s?(i.exports&&(e=i.exports=Z),e.UAParser=Z):o.amdO?(r=function(){return Z}.call(e,o,e,i))===n||(i.exports=r):typeof a!==s&&(a.UAParser=Z);var G=typeof a!==s&&(a.jQuery||a.Zepto);if(G&&!G.ua){var L=new Z;G.ua=L.getResult(),G.ua.get=function(){return L.getUA()},G.ua.set=function(i){L.setUA(i);var e=L.getResult();for(var o in e)G.ua[o]=e[o]}}}("object"==typeof window?window:this)}}]);
1
+ (self.webpackChunkZCV=self.webpackChunkZCV||[]).push([[169],{685:(i,e,o)=>{"use strict";o.d(e,{WT:()=>a});var a="undefined"!=typeof Float32Array?Float32Array:Array;Math.random,Math.PI,Math.hypot||(Math.hypot=function(){for(var i=0,e=arguments.length;e--;)i+=arguments[e]*arguments[e];return Math.sqrt(i)})},975:(i,e,o)=>{"use strict";o.d(e,{Ue:()=>r,yR:()=>t,xJ:()=>n});var a=o(685);function r(){var i=new a.WT(16);return a.WT!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0),i[0]=1,i[5]=1,i[10]=1,i[15]=1,i}function t(i){return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}function n(i,e){return i[0]=e[0],i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=e[1],i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=e[2],i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}},238:function(i,e,o){var a;!function(r,t){"use strict";var n="function",s="undefined",b="object",w="string",l="model",d="name",u="type",c="vendor",p="version",m="architecture",h="console",f="mobile",v="tablet",g="smarttv",x="wearable",k="embedded",y="Amazon",_="Apple",T="ASUS",q="BlackBerry",S="Browser",z="Chrome",A="Firefox",N="Google",C="Huawei",E="LG",M="Microsoft",O="Motorola",U="Opera",j="Samsung",R="Sharp",V="Sony",P="Xiaomi",B="Zebra",W="Facebook",F=function(i){for(var e={},o=0;o<i.length;o++)e[i[o].toUpperCase()]=i[o];return e},I=function(i,e){return typeof i===w&&-1!==D(e).indexOf(D(i))},D=function(i){return i.toLowerCase()},Z=function(i,e){if(typeof i===w)return i=i.replace(/^\s\s*/,""),typeof e===s?i:i.substring(0,350)},G=function(i,e){for(var o,a,r,s,w,l,d=0;d<e.length&&!w;){var u=e[d],c=e[d+1];for(o=a=0;o<u.length&&!w;)if(w=u[o++].exec(i))for(r=0;r<c.length;r++)l=w[++a],typeof(s=c[r])===b&&s.length>0?2===s.length?typeof s[1]==n?this[s[0]]=s[1].call(this,l):this[s[0]]=s[1]:3===s.length?typeof s[1]!==n||s[1].exec&&s[1].test?this[s[0]]=l?l.replace(s[1],s[2]):t:this[s[0]]=l?s[1].call(this,l,s[2]):t:4===s.length&&(this[s[0]]=l?s[3].call(this,l.replace(s[1],s[2])):t):this[s]=l||t;d+=2}},L=function(i,e){for(var o in e)if(typeof e[o]===b&&e[o].length>0){for(var a=0;a<e[o].length;a++)if(I(e[o][a],i))return"?"===o?t:o}else if(I(e[o],i))return"?"===o?t:o;return i},H={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"},$={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[d,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[d,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[d,p],[/opios[\/ ]+([\w\.]+)/i],[p,[d,U+" Mini"]],[/\bopr\/([\w\.]+)/i],[p,[d,U]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\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|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[d,p],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[d,"UC"+S]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[p,[d,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[p,[d,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[d,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[d,"IE"]],[/yabrowser\/([\w\.]+)/i],[p,[d,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[d,/(.+)/,"$1 Secure "+S],p],[/\bfocus\/([\w\.]+)/i],[p,[d,A+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[d,U+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[d,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[d,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[d,U+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[d,"MIUI "+S]],[/fxios\/([-\w\.]+)/i],[p,[d,A]],[/\bqihu|(qi?ho?o?|360)browser/i],[[d,"360 "+S]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[d,/(.+)/,"$1 "+S],p],[/(comodo_dragon)\/([\w\.]+)/i],[[d,/_/g," "],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[d,p],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[d],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[d,W],p],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[d,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[d,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[d,z+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[d,z+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[d,"Android "+S]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[d,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[d,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,d],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[d,[p,L,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[d,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[d,"Netscape"],p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[d,A+" 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],[d,p],[/(cobalt)\/([\w\.]+)/i],[d,[p,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,D]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",D]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,D]]],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],[l,[c,j],[u,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[l,[c,j],[u,f]],[/\((ip(?:hone|od)[\w ]*);/i],[l,[c,_],[u,f]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[l,[c,_],[u,v]],[/(macintosh);/i],[l,[c,_]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[l,[c,C],[u,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[l,[c,C],[u,f]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[l,/_/g," "],[c,P],[u,f]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[l,/_/g," "],[c,P],[u,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[l,[c,"OPPO"],[u,f]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[l,[c,"Vivo"],[u,f]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[l,[c,"Realme"],[u,f]],[/\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],[l,[c,O],[u,f]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[l,[c,O],[u,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[l,[c,E],[u,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[l,[c,E],[u,f]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[l,[c,"Lenovo"],[u,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[l,/_/g," "],[c,"Nokia"],[u,f]],[/(pixel c)\b/i],[l,[c,N],[u,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[l,[c,N],[u,f]],[/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],[l,[c,V],[u,f]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[l,"Xperia Tablet"],[c,V],[u,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[l,[c,"OnePlus"],[u,f]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[l,[c,y],[u,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[l,/(.+)/g,"Fire Phone $1"],[c,y],[u,f]],[/(playbook);[-\w\),; ]+(rim)/i],[l,c,[u,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[l,[c,q],[u,f]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[l,[c,T],[u,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[l,[c,T],[u,f]],[/(nexus 9)/i],[l,[c,"HTC"],[u,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i],[c,[l,/_/g," "],[u,f]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[l,[c,"Acer"],[u,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[l,[c,"Meizu"],[u,f]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[l,[c,R],[u,f]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[c,l,[u,f]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[c,l,[u,v]],[/(surface duo)/i],[l,[c,M],[u,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[l,[c,"Fairphone"],[u,f]],[/(u304aa)/i],[l,[c,"AT&T"],[u,f]],[/\bsie-(\w*)/i],[l,[c,"Siemens"],[u,f]],[/\b(rct\w+) b/i],[l,[c,"RCA"],[u,v]],[/\b(venue[\d ]{2,7}) b/i],[l,[c,"Dell"],[u,v]],[/\b(q(?:mv|ta)\w+) b/i],[l,[c,"Verizon"],[u,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[l,[c,"Barnes & Noble"],[u,v]],[/\b(tm\d{3}\w+) b/i],[l,[c,"NuVision"],[u,v]],[/\b(k88) b/i],[l,[c,"ZTE"],[u,v]],[/\b(nx\d{3}j) b/i],[l,[c,"ZTE"],[u,f]],[/\b(gen\d{3}) b.+49h/i],[l,[c,"Swiss"],[u,f]],[/\b(zur\d{3}) b/i],[l,[c,"Swiss"],[u,v]],[/\b((zeki)?tb.*\b) b/i],[l,[c,"Zeki"],[u,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[c,"Dragon Touch"],l,[u,v]],[/\b(ns-?\w{0,9}) b/i],[l,[c,"Insignia"],[u,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[l,[c,"NextBook"],[u,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[c,"Voice"],l,[u,f]],[/\b(lvtel\-)?(v1[12]) b/i],[[c,"LvTel"],l,[u,f]],[/\b(ph-1) /i],[l,[c,"Essential"],[u,f]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[l,[c,"Envizen"],[u,v]],[/\b(trio[-\w\. ]+) b/i],[l,[c,"MachSpeed"],[u,v]],[/\btu_(1491) b/i],[l,[c,"Rotor"],[u,v]],[/(shield[\w ]+) b/i],[l,[c,"Nvidia"],[u,v]],[/(sprint) (\w+)/i],[c,l,[u,f]],[/(kin\.[onetw]{3})/i],[[l,/\./g," "],[c,M],[u,f]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[l,[c,B],[u,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[l,[c,B],[u,f]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[c,l,[u,h]],[/droid.+; (shield) bui/i],[l,[c,"Nvidia"],[u,h]],[/(playstation [345portablevi]+)/i],[l,[c,V],[u,h]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[l,[c,M],[u,h]],[/smart-tv.+(samsung)/i],[c,[u,g]],[/hbbtv.+maple;(\d+)/i],[[l,/^/,"SmartTV"],[c,j],[u,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[c,E],[u,g]],[/(apple) ?tv/i],[c,[l,_+" TV"],[u,g]],[/crkey/i],[[l,z+"cast"],[c,N],[u,g]],[/droid.+aft(\w)( bui|\))/i],[l,[c,y],[u,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[l,[c,R],[u,g]],[/(bravia[\w ]+)( bui|\))/i],[l,[c,V],[u,g]],[/(mitv-\w{5}) bui/i],[l,[c,P],[u,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[c,Z],[l,Z],[u,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,g]],[/((pebble))app/i],[c,l,[u,x]],[/droid.+; (glass) \d/i],[l,[c,N],[u,x]],[/droid.+; (wt63?0{2,3})\)/i],[l,[c,B],[u,x]],[/(quest( 2)?)/i],[l,[c,W],[u,x]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[c,[u,k]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[l,[u,f]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[l,[u,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[u,f]],[/(android[-\w\. ]{0,9});.+buil/i],[l,[c,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[d,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[d,"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],[d,p],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,d]],os:[[/microsoft (windows) (vista|xp)/i],[d,p],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[d,[p,L,H]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[d,"Windows"],[p,L,H]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[d,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[d,"Mac OS"],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,d],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[d,p],[/\(bb(10);/i],[p,[d,q]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[p,[d,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[d,A+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[d,"webOS"]],[/crkey\/([\d\.]+)/i],[p,[d,z+"cast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[d,"Chromium OS"],p],[/(nintendo|playstation) ([wids345portablevuch]+)/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],[d,p],[/(sunos) ?([\w\.\d]*)/i],[[d,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[d,p]]},X=function(i,e){if(typeof i===b&&(e=i,i=t),!(this instanceof X))return new X(i,e).getResult();var o=i||(typeof r!==s&&r.navigator&&r.navigator.userAgent?r.navigator.userAgent:""),a=e?function(i,e){var o={};for(var a in i)e[a]&&e[a].length%2==0?o[a]=e[a].concat(i[a]):o[a]=i[a];return o}($,e):$;return this.getBrowser=function(){var i,e={};return e[d]=t,e[p]=t,G.call(e,o,a.browser),e.major=typeof(i=e.version)===w?i.replace(/[^\d\.]/g,"").split(".")[0]:t,e},this.getCPU=function(){var i={};return i[m]=t,G.call(i,o,a.cpu),i},this.getDevice=function(){var i={};return i[c]=t,i[l]=t,i[u]=t,G.call(i,o,a.device),i},this.getEngine=function(){var i={};return i[d]=t,i[p]=t,G.call(i,o,a.engine),i},this.getOS=function(){var i={};return i[d]=t,i[p]=t,G.call(i,o,a.os),i},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return o},this.setUA=function(i){return o=typeof i===w&&i.length>350?Z(i,350):i,this},this.setUA(o),this};X.VERSION="1.0.33",X.BROWSER=F([d,p,"major"]),X.CPU=F([m]),X.DEVICE=F([l,c,u,h,f,g,v,x,k]),X.ENGINE=X.OS=F([d,p]),typeof e!==s?(i.exports&&(e=i.exports=X),e.UAParser=X):o.amdO?(a=function(){return X}.call(e,o,e,i))===t||(i.exports=a):typeof r!==s&&(r.UAParser=X);var J=typeof r!==s&&(r.jQuery||r.Zepto);if(J&&!J.ua){var K=new X;J.ua=K.getResult(),J.ua.get=function(){return K.getUA()},J.ua.set=function(i){K.setUA(i);var e=K.getResult();for(var o in e)J.ua[o]=e[o]}}}("object"==typeof window?window:this)}}]);