From 64337f333902429c4e33613725bf81897fa0119b Mon Sep 17 00:00:00 2001 From: "steve.gao" Date: Tue, 10 Dec 2024 15:05:51 +0800 Subject: [PATCH] initial --- README.md | 18 + app.js | 149 + douyin/_ac_signature.js | 1154 ++++ hnw/hn.js | 267 + kuaishou/ks_slid.js | 14017 ++++++++++++++++++++++++++++++++++++++ package-lock.json | 807 +++ package.json | 7 + wx_video/tools.js | 135 + wx_video/wasm_video_decode.js | 4709 +++++++++++++ wx_video/wasm_video_decode.wasm | Bin 0 -> 3785516 bytes xhs/xs-commen.js | 838 +++ 11 files changed, 22101 insertions(+) create mode 100644 README.md create mode 100644 app.js create mode 100644 douyin/_ac_signature.js create mode 100644 hnw/hn.js create mode 100644 kuaishou/ks_slid.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 wx_video/tools.js create mode 100644 wx_video/wasm_video_decode.js create mode 100644 wx_video/wasm_video_decode.wasm create mode 100644 xhs/xs-commen.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a7658d --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# nodejs-param + +###nodejs---各个平台逆向参数生成 +- kuaishou:js生成参数verifyParam + - api: + - POST: http://x:3000/kuaishou/get_verifyParam +- hnw: js翻译的wasm代码,生成部分参数的中间值 + - api: + - GET: http://x:3000/hn/get_signature?nonce={key} +- douyin:js生成参数 __ac_signature + - api: + - GET: http://x:3000/douyin/get_signature?nonce={nonce} + + +###代码位置: +` +` +- 启动: pm2 app diff --git a/app.js b/app.js new file mode 100644 index 0000000..ae018b4 --- /dev/null +++ b/app.js @@ -0,0 +1,149 @@ + +const express = require("express"); +const bodyParser = require("body-parser"); +const multer = require('multer'); // 接受视频流 +const fs = require('fs'); + + +var captcha = require("./kuaishou/ks_slid"); // 快手滑块 +var hn = require("./hnw/hn"); // 惠农网 headers +var dy_signature = require("./douyin/_ac_signature"); // 抖音主页signature +var wx_func = require("./wx_video/wasm_video_decode"); // 微信视频号算法生成 +var wx_tool = require("./wx_video/tools"); // 微信视频号解密 +var xhs = require("./xhs/xs-commen"); // 小红书x-comment + +let Module; // 保存对象存留 +var app = express(); +// 调整参数大小限制 +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({extended: true})); +// 设置multer来处理上传的文件 +const storage = multer.memoryStorage(); +const upload = multer({ storage: storage }); + + +app.post("/kuaishou/get_verifyParam", function(req, res){ + try{ + var info = req.body["info"] + var result = captcha.getJose(info); + res.send(result); + console.log("[kuaishou-verify_fp] 请求成功"); + }catch(e){ + console.log(e); + res.send("[kuaishou-verify_fp] verify fp error"); + } +}); + +app.get("/hn/get_signature", function(req, res){ + try{ + var noce = req.query.nonce; + var result = hn.getS(noce); + res.send(result); + console.log("[hn-get_header] 请求成功"); + }catch(e){ + console.log(e); + res.send("[hn-get_header] get header error"); + } +}); + + +app.get("/douyin/get_signature", function(req, res){ + try{ + var noce = req.query.nonce; + var result = dy_signature.get_ac_signature(noce); + res.send(result); + console.log("[douyin-get_signature] 请求成功"); + }catch(e){ + console.log(e); + res.send("[douyin-get_signature] get signature error"); + } +}); + + +app.post("/wx/decode", upload.single('file'), async (req,res) =>{ + if(Module == undefined){ + Module = await wx_func.createWasm(); // 创建modul实例 + console.log("[wx] 初始化 wasm 模块!"); + } + + try{ + if(req.file){ + var buffer = req.file.buffer; // 视频流 + var decodekey = req.query.decodekey; // 视频buffer + var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4"); + console.log("[wx] 获取到的 decodekey:", decodekey,); + wx_func.p.decryptor = new Module["WxIsaac64"](decodekey); + wx_func.p.decryptor.generate(131072); + var video_res = await wx_tool.main1(local_path, buffer, decodekey, wx_func.p.decryptor_array); + wx_func.p.decryptor.delete(); + console.log("[wx] ", video_res); + res.send(video_res); + }else{ + res.send({"status": 500, "msg": "未识别文件"}); + } + }catch(e){ + console.log(e); + res.send("[wx] decode error"); + } +}); + + +// 测试版 +app.post("/wx/decode1", upload.single('file'), async (req,res) =>{ + if(Module == undefined){ + Module = await wx_func.createWasm(); // 创建modul实例 + console.log("[wx] 初始化 wasm 模块!"); + } + + try{ + var buffer = req.file.buffer; // 视频流 + console.log(buffer); + var decodekey = req.query.decodekey; // 视频buffer + var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4"); + console.log("[wx] 获取到的 decodekey:", decodekey,); + wx_func.p.decryptor = new Module["WxIsaac64"](decodekey); + wx_func.p.decryptor.generate(131072); + const video_res = await wx_tool.main2(local_path, buffer, decodekey, wx_func.p.decryptor_array); + wx_func.p.decryptor.delete(); + // 将Uint8Array转换为Buffer + const new_buffer = Buffer.from(video_res); + // 设置响应类型为二进制 + res.setHeader('Content-Type', 'application/octet-stream'); + + // 发送Buffer数据 + res.send(new_buffer); + }catch(e){ + console.log(e); + res.send("[wx] decode error"); + } + +}); + +app.post("/xhs/get_comment", function(req, res){ + try{ + var a1 = req.body["a1"]; + var xs = req.body["xs"]; + var xt = req.body["xt"]; + + var result = xhs.getCommon(a1, xs, xt); +// console.log(result); + res.send(result); + // res.send(window.code); + // console.log(window.code); + // console.log(a); + console.log("[xhs-comment] 请求成功"); + }catch(e){ + console.log(e); + res.send("[xhs-comment] verify fp error"); + } + // res.send(result.toString()); +}); + + +app.listen(3000, ()=>{ + console.log("开启服务,端口3000", new Date().toString()); +}) + + + + diff --git a/douyin/_ac_signature.js b/douyin/_ac_signature.js new file mode 100644 index 0000000..6c7dc25 --- /dev/null +++ b/douyin/_ac_signature.js @@ -0,0 +1,1154 @@ +var Image = function Image() {} + , PluginArray = function PluginArray() {} + , indexedDB = {} + , DOMException = function DOMException() {} + , WebSocket = function WebSocket() {} + , Request = function Request() {} + , Headers = function Headers() {}; +var localStorage = { + getItem: function getItem(x) {return null}, + removeItem: function removeItem(x) {} +}; +var sessionStorage = { + getItem: function getItem(x) {return null}, + removeItem: function removeItem(x) {} +}; +var MimeType = { + description: "Native Client Executable", + suffixes: "", + type: "application/x-nacl" +}; +MimeType[Symbol.toStringTag] = "MimeType"; +var navigator = { + plugins: { + 0: { + 0: MimeType, + name: "Native Client", + length: 2, + filename: "internal-nacl-plugin", + description: "", + length: 1 + } + }, + webdriver: false, + userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36", + languages: ["zh-CN", "zh"], + appCodeName: "Mozilla", + appName: "Netscape", + appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36", + platform: "Win32" +}; +navigator.plugins[0]["application/x-nacl"] = MimeType; +navigator.plugins[0].__proto__.item = function item() { + return MimeType +} +; +navigator.plugins[Symbol.toStringTag] = "PluginArray"; +navigator.plugins[0][Symbol.toStringTag] = "Plugin"; +navigator.plugins[0][0].enabledPlugin = navigator.plugins[2]; +var CanvasRenderingContext2D_ = { + toString: function() { + return "[object CanvasRenderingContext2D]" + } +}; +CanvasRenderingContext2D_.__proto__.fillText = function fillText() {} +; +CanvasRenderingContext2D_.__proto__.arc = function arc() {} +; +CanvasRenderingContext2D_.__proto__.stroke = function stroke() {} +; +var getContext_ = { + toString: function() { + return "[object WebGLRenderingContext]" + } +}; +var aaaaa=0; +var canvas = { + toDataURL: function toDataURL() { + if(aaaaa=0){ + aaaaa=aaaaa+1 + return "[native code]" + } + return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAQCAYAAABQrvyxAAACN0lEQVRIS8WWP0hWYRTGf98S5NBSm5sObgWt6RJR5uLQIGRC1OAWNEspOAWCIIR+4GYFDg1NEoEQ5tIghFNbBIlDLi5Bi/LIOXA8vu/1Q76v7nLvff+c9zzPc55zb4vT11F612vLxjTnz4Vl/3xoCHhaSsgTzQlncL0EcxV4C9xLtLSB58Af4AyAEvu+Pyf7P9S4BdwG5i2pogIl1mMJRUJ6qUCux8vAIvAeeABM24J2idm8ueaBCHYSmDJ2XgLPgO+Axt8AGnPmFF/srQM3PJFQGiUzKc5AIcYZDzQpoMAlH0jaLyGRHeAmsAI8BN4BrwIor28B2gac3S2r+wxAyY8YwL7kjaICnTCe2Rc7m3ay6rQfOAQ+AL+BpQAgAnZlYpIyqC4HKpBRPQfYaGKBcLbjs7fVOOcHaU4HvQZmgfvADHAtAfASiqAygBeAgGr8oNKgiwA82Xj30inNzVlwv+tQHb4MXDdAOigmqy2+zhMsKRCZjn7x8Ucqp2jiWhvNCkRCZNDPwKoNemI/gDWr8Qjgp3UTdZGPgeEagAzUz3bf/DqvFTb1e83tA6PAtwBAho7JRQBaNgZ8NaXOU0BqylvyQb4Ud66mQKce+ATcDZHdoLFt1hQ4KQHb26SAPDVhbblRgfwLEdkvzYn9J8BGxWTdGs7fDI87LGWyAtmosev43BVrkT7XrUQvFKfkgUvA30o0Sb0A6KfKO8+FDu7WphKAceCxfYD27Hsw" + mu_() + "AAAAAElFTkSuQmCC" + }, + getContext: function getContext(x) { + if (x === "2d") { + return CanvasRenderingContext2D_ + } else { + return getContext_ + } + } +}; +canvas[Symbol.toStringTag] = "HTMLCanvasElement"; +canvas.getContext[Symbol.toStringTag] = "WebGLRenderingContext"; +getContext_.__proto__.getExtension = function getExtension(x) { + return { + UNMASKED_RENDERER_WEBGL: 37446, + UNMASKED_VENDOR_WEBGL: 37445 + } +} +; +getContext_.__proto__.getParameter = function getParameter(x) { + return "Google Inc. (Intel)/ANGLE (Intel, Intel(R) UHD Graphics Direct3D11 vs_5_0 ps_5_0, D3D11-27.20.100.8681)" +} +; +var location = { + href: "https://www.douyin.com/", + toString: function() { + return location.href + }, + protocol: "https:" +}; +var document = { + createEvent: function createEvent() {}, + location: location, + cookie: "", + vlinkColor: "", + referrer: "https://www.douyin.com", + fgColor: "", + dir: "", + addEventListener: function addEventListener(x) {}, + createElement: function createElement(x) { + return canvas + } +}; +document.createElement[Symbol.toStringTag] = "HTMLImageElement"; +var history = { + length: 1, + scrollRestoration: "auto", + state: null +}; +var upload = { + onabort: null, + onerror: null, + onload: null, + onloadend: null, + onloadstart: null, + onprogress: null, + ontimeout: null +}; +upload[Symbol.toStringTag] = "XMLHttpRequestUpload"; +var XMLHttpRequest = function() { + this.onabort = null, + this.onerror = null, + this.onload = null, + this.onloadend = null, + this.onloadstart = null, + this.onprogress = null, + this.onreadystatechange = null, + this.ontimeout = null, + this.readyState = 0, + this.response = "", + this.responseText = "", + this.responseType = "", + this.responseURL = "", + this.responseXML = null, + this.status = 0, + this.statusText = "", + this.timeout = 0, + this.upload = upload, + this.withCredentials = false +}; +XMLHttpRequest.prototype.open = function() { + function ee() { + this.openArgs = arguments + } + function Vn(e, t) { + var n = "function" == typeof Symbol && e[Symbol.iterator]; + if (!n) + return e; + var r, o, i = n.call(e), a = []; + try { + for (; (void 0 === t || t-- > 0) && !(r = i.next()).done; ) + a.push(r.value) + } catch (e) { + o = { + error: e + } + } finally { + try { + r && !r.done && (n = i.return) && n.call(i) + } finally { + if (o) + throw o.error + } + } + return a + } + ;function a() { + for (var t = [], n = 0; n < arguments.length; n++) + t[n] = arguments[n]; + var r = Vn(t, 2) + , o = r[0] + , i = r[1]; + return this._url = i || "", + this._method = o && o.toLowerCase() || "", + ee.apply(this, t) + } + ;for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return a.apply(this, e) +} +; +XMLHttpRequest.prototype.setRequestHeader = function() { + function a() { + for (var t = [], n = 0; n < arguments.length; n++) + t[n] = arguments[n]; + return this._requestHeaders = this._requestHeaders || [], + this._requestHeaders.push(t) + } + ;for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return a.apply(this, e) +} +; +XMLHttpRequest.prototype.send = function() { + function Wn(e, t) { + for (var n = 0, r = t.length, o = e.length; n < r; n++, + o++) + e[o] = t[n]; + return e + } + ;function Vn(e, t) { + var n = "function" == typeof Symbol && e[Symbol.iterator]; + if (!n) + return e; + var r, o, i = n.call(e), a = []; + try { + for (; (void 0 === t || t-- > 0) && !(r = i.next()).done; ) + a.push(r.value) + } catch (e) { + o = { + error: e + } + } finally { + try { + r && !r.done && (n = i.return) && n.call(i) + } finally { + if (o) + throw o.error + } + } + return a + } + ;qr = function(e, t, n) { + return function() { + for (var r = [], o = 0; o < arguments.length; o++) + r[o] = arguments[o]; + if (!e) + return hr; + var i = e[t] + , a = n.apply(void 0, Wn([i], Vn(r))) + , s = a; + return Yn(s) && (s = function() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + try { + return a.apply(this, e) + } catch (t) { + return Yn(i) && i.apply(this, e) + } + } + ), + e[t] = s, + function(n) { + n && s !== e[t] || (e[t] = i) + } + } + } + ; + function Yn(e) { + return "function" == typeof e + } + ;Jr = function(e) { + return qr(e, "onreadystatechange", (function(t, n, r, o, i) { + return function() { + for (var a = [], s = 0; s < arguments.length; s++) + a[s] = arguments[s]; + return 4 === this.readyState && o && o({ + name: Gr, + type: "get", + event: Wr(e, n, r, i) + }), + t && t.apply(this, a) + } + } + )) + } + ; + n = function(t) { + r.chechIsReady() ? e.prototype.sendEvent.call(r, t) : r.preQueue.push(t) + } + ; + function ew() { + var t = this + , n = this.openArgs + , r = arguments + , o = n[0] || "GET" + , i = new URL(n[1],window.location.href); + } + ;function a() { + for (var i = [], a = 0; a < arguments.length; a++) + i[a] = arguments[a]; + return Jr(this)({}, null, n, "https://www.douyin.com/"), + this._start = Date.now(), + this._data = null == i ? void 0 : i[0], + ew.apply(this, i) + } + ;for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return a.apply(this, e) +} +; +XMLHttpRequest.prototype.overrideMimeType = function overrideMimeType() {} +; +XMLHttpRequest.prototype[Symbol.toStringTag] = "XMLHttpRequest"; +var window = { + queueMicrotask: queueMicrotask, + setTimeout: setTimeout, + setInterval: setInterval, + clearTimeout: clearTimeout, + clearInterval: clearInterval, + TextEncoder: TextEncoder, + URLSearchParams: URLSearchParams, + URL: URL, + WebAssembly: WebAssembly, + //WeakRef: WeakRef, + //FinalizationRegistry: FinalizationRegistry, + Atomics: Atomics, + SharedArrayBuffer: SharedArrayBuffer, + isNaN: isNaN, + isFinite: isFinite, + eval: eval, + unescape: unescape, + escape: escape, + encodeURIComponent: encodeURIComponent, + encodeURI: encodeURI, + decodeURIComponent: decodeURIComponent, + decodeURI: decodeURI, + Reflect: Reflect, + Proxy: Proxy, + WeakSet: WeakSet, + WeakMap: WeakMap, + Set: Set, + BigInt: BigInt, + Map: Map, + DataView: DataView, + BigInt64Array: BigInt64Array, + BigUint64Array: BigUint64Array, + Uint8ClampedArray: Uint8ClampedArray, + Float64Array: Float64Array, + Float32Array: Float32Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int8Array: Int8Array, + Uint8Array: Uint8Array, + ArrayBuffer: ArrayBuffer, + Intl: Intl, + Math: Math, + JSON: JSON, + URIError: URIError, + TypeError: TypeError, + SyntaxError: SyntaxError, + ReferenceError: ReferenceError, + RangeError: RangeError, + EvalError: EvalError, + Error: Error, + Promise: Promise, + Date: Date, + Symbol: Symbol, + String: String, + Boolean: Boolean, + undefined: undefined, + NaN: NaN, + Infinity: Infinity, + parseInt: parseInt, + parseFloat: parseFloat, + Number: Number, + Array: Array, + Function: Function, + Object: Object, + navigator: navigator, + location: location, + document: document, + history: history, + indexedDB: indexedDB, + localStorage: localStorage, + sessionStorage: sessionStorage, + RegExp: RegExp, + XMLHttpRequest: XMLHttpRequest, + fetch: function fetch() {return "[native code]"}, + console: console, + HTMLElement: function HTMLElement() {}, + chrome: { + "app": { + "isInstalled": false, + "InstallState": { + "DISABLED": "disabled", + "INSTALLED": "installed", + "NOT_INSTALLED": "not_installed" + }, + "RunningState": { + "CANNOT_RUN": "cannot_run", + "READY_TO_RUN": "ready_to_run", + "RUNNING": "running" + } + }, + "runtime": { + connect: function connect() {return "[native code]"}, + "OnInstalledReason": { + "CHROME_UPDATE": "chrome_update", + "INSTALL": "install", + "SHARED_MODULE_UPDATE": "shared_module_update", + "UPDATE": "update" + }, + "OnRestartRequiredReason": { + "APP_UPDATE": "app_update", + "OS_UPDATE": "os_update", + "PERIODIC": "periodic" + }, + "PlatformArch": { + "ARM": "arm", + "ARM64": "arm64", + "MIPS": "mips", + "MIPS64": "mips64", + "X86_32": "x86-32", + "X86_64": "x86-64" + }, + "PlatformNaclArch": { + "ARM": "arm", + "MIPS": "mips", + "MIPS64": "mips64", + "X86_32": "x86-32", + "X86_64": "x86-64" + }, + "PlatformOs": { + "ANDROID": "android", + "CROS": "cros", + "LINUX": "linux", + "MAC": "mac", + "OPENBSD": "openbsd", + "WIN": "win" + }, + "RequestUpdateCheckStatus": { + "NO_UPDATE": "no_update", + "THROTTLED": "throttled", + "UPDATE_AVAILABLE": "update_available" + } + } + } +}; +window[Symbol.toStringTag] = "Window"; +navigator[Symbol.toStringTag] = "Navigator"; +location[Symbol.toStringTag] = "Location"; +document[Symbol.toStringTag] = "HTMLDocument"; +history[Symbol.toStringTag] = "History"; +indexedDB[Symbol.toStringTag] = "IDBFactory"; +localStorage[Symbol.toStringTag] = "Storage"; +sessionStorage[Symbol.toStringTag] = "Storage"; +Object.prototype.constructor.getOwnPropertyNames = function(x) { + if (toString.call(x) == "[object Navigator]") { + return [] + } else { + return Object.keys(x) + } +} + +function mu_() { + var e = []; + var a = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (var b = 0; b < 28; b++) { + e[b] = a[Math.floor(Math.random() * a.length)] + } + ;return e.join('') +} + + +Object.freeze(navigator); +Object.freeze(document); +Object.freeze(location); +Object.freeze(history); +Object.freeze(indexedDB); + + + +var glb; +(glb = "undefined" == typeof window ? global : window)._$jsvmprt = function(b, e, f) { + function a() { + if ("undefined" == typeof Reflect || !Reflect.construct) + return !1; + if (Reflect.construct.sham) + return !1; + if ("function" == typeof Proxy) + return !0; + try { + return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {} + ))), + !0 + } catch (b) { + return !1 + } + } + function d(b, e, f) { + return (d = a() ? Reflect.construct : function(b, e, f) { + var a = [null]; + a.push.apply(a, e); + var d = new (Function.bind.apply(b, a)); + return f && c(d, f.prototype), + d + } + ).apply(null, arguments) + } + function c(b, e) { + return (c = Object.setPrototypeOf || function(b, e) { + return b.__proto__ = e, + b + } + )(b, e) + } + function n(b) { + return function(b) { + if (Array.isArray(b)) { + for (var e = 0, f = new Array(b.length); e < b.length; e++) + f[e] = b[e]; + return f + } + }(b) || function(b) { + if (Symbol.iterator in Object(b) || "[object Arguments]" === Object.prototype.toString.call(b)) + return Array.from(b) + }(b) || function() { + throw new TypeError("Invalid attempt to spread non-iterable instance") + }() + } + for (var i = [], r = 0, t = [], o = 0, l = function(b, e) { + var f = b[e++] + , a = b[e] + , d = parseInt("" + f + a, 16); + if (d >> 7 == 0) + return [1, d]; + if (d >> 6 == 2) { + var c = parseInt("" + b[++e] + b[++e], 16); + return d &= 63, + [2, c = (d <<= 8) + c] + } + if (d >> 6 == 3) { + var n = parseInt("" + b[++e] + b[++e], 16) + , i = parseInt("" + b[++e] + b[++e], 16); + return d &= 63, + [3, i = (d <<= 16) + (n <<= 8) + i] + } + }, u = function(b, e) { + var f = parseInt("" + b[e] + b[e + 1], 16); + return f = f > 127 ? -256 + f : f + }, s = function(b, e) { + var f = parseInt("" + b[e] + b[e + 1] + b[e + 2] + b[e + 3], 16); + return f = f > 32767 ? -65536 + f : f + }, p = function(b, e) { + var f = parseInt("" + b[e] + b[e + 1] + b[e + 2] + b[e + 3] + b[e + 4] + b[e + 5] + b[e + 6] + b[e + 7], 16); + return f = f > 2147483647 ? 0 + f : f + }, y = function(b, e) { + return parseInt("" + b[e] + b[e + 1], 16) + }, v = function(b, e) { + return parseInt("" + b[e] + b[e + 1] + b[e + 2] + b[e + 3], 16) + }, g = g || this || window || window, h = Object.keys || function(b) { + var e = {} + , f = 0; + for (var a in b) + e[f++] = a; + return e.length = f, + e + } + , m = (b.length, + 0), I = "", C = m; C < m + 16; C++) { + var q = "" + b[C++] + b[C]; + q = parseInt(q, 16), + I += String.fromCharCode(q) + } + if ("HNOJ@?RC" != I) + throw new Error("error magic number " + I); + m += 16; + parseInt("" + b[m] + b[m + 1], 16); + m += 8, + r = 0; + for (var w = 0; w < 4; w++) { + var S = m + 2 * w + , R = "" + b[S++] + b[S] + , x = parseInt(R, 16); + r += (3 & x) << 2 * w + } + m += 16, + m += 8; + var z = parseInt("" + b[m] + b[m + 1] + b[m + 2] + b[m + 3] + b[m + 4] + b[m + 5] + b[m + 6] + b[m + 7], 16) + , O = z + , E = m += 8 + , j = v(b, m += z); + j[1]; + m += 4, + i = { + p: [], + q: [] + }; + for (var A = 0; A < j; A++) { + for (var D = l(b, m), T = m += 2 * D[0], $ = i.p.length, P = 0; P < D[1]; P++) { + var U = l(b, T); + i.p.push(U[1]), + T += 2 * U[0] + } + m = T, + i.q.push([$, i.p.length]) + } + var _ = { + 5: 1, + 6: 1, + 70: 1, + 22: 1, + 23: 1, + 37: 1, + 73: 1 + } + , k = { + 72: 1 + } + , M = { + 74: 1 + } + , H = { + 11: 1, + 12: 1, + 24: 1, + 26: 1, + 27: 1, + 31: 1 + } + , J = { + 10: 1 + } + , N = { + 2: 1, + 29: 1, + 30: 1, + 20: 1 + } + , B = [] + , W = []; + function F(b, e, f) { + for (var a = e; a < e + f; ) { + var d = y(b, a); + B[a] = d, + a += 2; + k[d] ? (W[a] = u(b, a), + a += 2) : _[d] ? (W[a] = s(b, a), + a += 4) : M[d] ? (W[a] = p(b, a), + a += 8) : H[d] ? (W[a] = y(b, a), + a += 2) : J[d] ? (W[a] = v(b, a), + a += 4) : N[d] && (W[a] = v(b, a), + a += 4) + } + } + return K(b, E, O / 2, [], e, f); + function G(b, e, f, a, c, l, m, I) { + null == l && (l = this); + var C, q, w, S = [], R = 0; + m && (C = m); + var x, z, O = e, E = O + 2 * f; + if (!I) + for (; O < E; ) { + var j = parseInt("" + b[O] + b[O + 1], 16); + O += 2; + var A = 3 & (x = 13 * j % 241); + if (x >>= 2, + A < 1) { + A = 3 & x; + if (x >>= 2, + A > 2) + (A = x) > 10 ? S[++R] = void 0 : A > 1 ? (C = S[R--], + S[R] = S[R] >= C) : A > -1 && (S[++R] = null); + else if (A > 1) { + if ((A = x) > 11) + throw S[R--]; + if (A > 7) { + for (C = S[R--], + z = v(b, O), + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); + O += 4, + S[R--][A] = C + } else + A > 5 && (S[R] = h(S[R])) + } else if (A > 0) { + (A = x) > 8 ? (C = S[R--], + S[R] = typeof C) : A > 6 ? S[R] = --S[R] : A > 4 ? S[R -= 1] = S[R][S[R + 1]] : A > 2 && (q = S[R--], + (A = S[R]).x === G ? A.y >= 1 ? S[R] = K(b, A.c, A.l, [q], A.z, w, null, 1) : (S[R] = K(b, A.c, A.l, [q], A.z, w, null, 0), + A.y++) : S[R] = A(q)) + } else { + if ((A = x) > 14) + z = s(b, O), + (U = function e() { + var f = arguments; + return e.y > 0 ? K(b, e.c, e.l, f, e.z, this, null, 0) : (e.y++, + K(b, e.c, e.l, f, e.z, this, null, 0)) + } + ).c = O + 4, + U.l = z - 2, + U.x = G, + U.y = 0, + U.z = c, + S[R] = U, + O += 2 * z - 2; + else if (A > 12) + q = S[R--], + w = S[R--], + (A = S[R--]).x === G ? A.y >= 1 ? S[++R] = K(b, A.c, A.l, q, A.z, w, null, 1) : (S[++R] = K(b, A.c, A.l, q, A.z, w, null, 0), + A.y++) : S[++R] = A.apply(w, q); + else if (A > 5) + C = S[R--], + S[R] = S[R] != C; + else if (A > 3) + C = S[R--], + S[R] = S[R] * C; + else if (A > -1) + return [1, S[R--]] + } + } else if (A < 2) { + A = 3 & x; + if (x >>= 2, + A < 1) { + if ((A = x) > 9) + ; + else if (A > 7) + C = S[R--], + S[R] = S[R] & C; + else if (A > 5) + z = y(b, O), + O += 2, + S[R -= z] = 0 === z ? new S[R] : d(S[R], n(S.slice(R + 1, R + z + 1))); + else if (A > 3) { + z = s(b, O); + try { + if (t[o][2] = 1, + 1 == (C = G(b, O + 4, z - 3, [], c, l, null, 0))[0]) + return C + } catch (m) { + if (t[o] && t[o][1] && 1 == (C = G(b, t[o][1][0], t[o][1][1], [], c, l, m, 0))[0]) + return C + } finally { + if (t[o] && t[o][0] && 1 == (C = G(b, t[o][0][0], t[o][0][1], [], c, l, null, 0))[0]) + return C; + t[o] = 0, + o-- + } + O += 2 * z - 2 + } + } else if (A < 2) { + if ((A = x) > 12) + S[++R] = u(b, O), + O += 2; + else if (A > 10) + C = S[R--], + S[R] = S[R] << C; + else if (A > 8) { + for (z = v(b, O), + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); if(O===4358){debugger} + O += 4; + + S[R] = S[R][A] + } else + A > 6 && (q = S[R--], + C = delete S[R--][q]) + } else if (A < 3) { + (A = x) < 2 ? S[++R] = C : A < 4 ? (C = S[R--], + S[R] = S[R] <= C) : A < 11 ? (C = S[R -= 2][S[R + 1]] = S[R + 2], + R--) : A < 13 && (C = S[R], + S[++R] = C) + } else { + if ((A = x) > 12) + S[++R] = l; + else if (A > 5) + C = S[R--], + S[R] = S[R] !== C; + else if (A > 3) + C = S[R--], + S[R] = S[R] / C; + else if (A > 1) { + if ((z = s(b, O)) < 0) { + I = 1, + F(b, e, 2 * f), + O += 2 * z - 2; + break + } + O += 2 * z - 2 + } else + A > -1 && (S[R] = !S[R]) + } + } else if (A < 3) { + A = 3 & x; + if (x >>= 2, + A > 2) + (A = x) > 7 ? (C = S[R--], + S[R] = S[R] | C) : A > 5 ? (z = y(b, O), + O += 2, + S[++R] = c["$" + z]) : A > 3 && (z = s(b, O), + t[o][0] && !t[o][2] ? t[o][1] = [O + 4, z - 3] : t[o++] = [0, [O + 4, z - 3], 0], + O += 2 * z - 2); + else if (A > 1) { + if ((A = x) < 2) { + for (z = v(b, O), + C = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + C += String.fromCharCode(r ^ i.p[P]); + S[++R] = C, + O += 4 + } else if (A < 4) + if (S[R--]) + O += 4; + else { + if ((z = s(b, O)) < 0) { + I = 1, + F(b, e, 2 * f), + O += 2 * z - 2; + break + } + O += 2 * z - 2 + } + else + A < 6 ? (C = S[R--], + S[R] = S[R] % C) : A < 8 ? (C = S[R--], + S[R] = S[R]instanceof C) : A < 15 && (S[++R] = !1) + } else if (A > 0) { + (A = x) < 1 ? S[++R] = g : A < 3 ? (C = S[R--], + S[R] = S[R] + C) : A < 5 ? (C = S[R--], + S[R] = S[R] == C) : A < 14 && (C = S[R - 1], + q = S[R], + S[++R] = C, + S[++R] = q) + } else { + (A = x) < 2 ? (C = S[R--], + S[R] = S[R] > C) : A < 9 ? (z = v(b, O), + O += 4, + q = R + 1, + S[R -= z - 1] = z ? S.slice(R, q) : []) : A < 11 ? (z = y(b, O), + O += 2, + C = S[R--], + c[z] = C) : A < 13 ? (C = S[R--], + S[R] = S[R] >> C) : A < 15 && (S[++R] = s(b, O), + O += 4) + } + } else { + A = 3 & x; + if (x >>= 2, + A > 2) + (A = x) > 13 ? (S[++R] = p(b, O), + O += 8) : A > 11 ? (C = S[R--], + S[R] = S[R] >>> C) : A > 9 ? S[++R] = !0 : A > 7 ? (z = y(b, O), + O += 2, + S[R] = S[R][z]) : A > 0 && (C = S[R--], + S[R] = S[R] < C); + else if (A > 1) { + (A = x) > 10 ? (z = s(b, O), + t[++o] = [[O + 4, z - 3], 0, 0], + O += 2 * z - 2) : A > 8 ? (C = S[R--], + S[R] = S[R] ^ C) : A > 6 && (C = S[R--]) + } else if (A > 0) { + if ((A = x) < 3) { + var D = 0 + , T = S[R].length + , $ = S[R]; + S[++R] = function() { + var b = D < T; + if (b) { + var e = $[D++]; + S[++R] = e + } + S[++R] = b + } + } else + A < 5 ? (z = y(b, O), + O += 2, + C = c[z], + S[++R] = C) : A < 7 ? S[R] = ++S[R] : A < 9 && (C = S[R--], + S[R] = S[R]in C) + } else { + if ((A = x) > 13) + C = S[R], + S[R] = S[R - 1], + S[R - 1] = C; + else if (A > 4) + C = S[R--], + S[R] = S[R] === C; + else if (A > 2) + C = S[R--], + S[R] = S[R] - C; + else if (A > 0) { + for (z = v(b, O), + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); + A = +A, + O += 4, + S[++R] = A + } + } + } + } + if (I) + for (; O < E; ) { + j = B[O]; + O += 2; + A = 3 & (x = 13 * j % 241); + if (x >>= 2, + A < 1) { + var U; + A = 3 & x; + if (x >>= 2, + A < 1) { + if ((A = x) > 14) + z = W[O], + (U = function e() { + var f = arguments; + return e.y > 0 ? K(b, e.c, e.l, f, e.z, this, null, 0) : (e.y++, + K(b, e.c, e.l, f, e.z, this, null, 0)) + } + ).c = O + 4, + U.l = z - 2, + U.x = G, + U.y = 0, + U.z = c, + S[R] = U, + O += 2 * z - 2; + else if (A > 12) + q = S[R--], + w = S[R--], + (A = S[R--]).x === G ? A.y >= 1 ? S[++R] = K(b, A.c, A.l, q, A.z, w, null, 1) : (S[++R] = K(b, A.c, A.l, q, A.z, w, null, 0), + A.y++) : S[++R] = A.apply(w, q); + else if (A > 5) + C = S[R--], + S[R] = S[R] != C; + else if (A > 3) + C = S[R--], + S[R] = S[R] * C; + else if (A > -1) + return [1, S[R--]] + } else if (A < 2) { + (A = x) < 4 ? (q = S[R--], + (A = S[R]).x === G ? A.y >= 1 ? S[R] = K(b, A.c, A.l, [q], A.z, w, null, 1) : (S[R] = K(b, A.c, A.l, [q], A.z, w, null, 0), + A.y++) : S[R] = A(q)) : A < 6 ? S[R -= 1] = S[R][S[R + 1]] : A < 8 ? S[R] = --S[R] : A < 10 && (C = S[R--], + S[R] = typeof C) + } else if (A < 3) { + if ((A = x) > 11) + throw S[R--]; + if (A > 7) { + for (C = S[R--], + z = W[O], + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); + O += 4, + S[R--][A] = C + } else + A > 5 && (S[R] = h(S[R])) + } else { + (A = x) < 1 ? S[++R] = null : A < 3 ? (C = S[R--], + S[R] = S[R] >= C) : A < 12 && (S[++R] = void 0) + } + } else if (A < 2) { + A = 3 & x; + if (x >>= 2, + A > 2) + (A = x) > 12 ? S[++R] = l : A > 5 ? (C = S[R--], + S[R] = S[R] !== C) : A > 3 ? (C = S[R--], + S[R] = S[R] / C) : A > 1 ? O += 2 * (z = W[O]) - 2 : A > -1 && (S[R] = !S[R]); + else if (A > 1) { + (A = x) < 2 ? S[++R] = C : A < 4 ? (C = S[R--], + S[R] = S[R] <= C) : A < 11 ? (C = S[R -= 2][S[R + 1]] = S[R + 2], + R--) : A < 13 && (C = S[R], + S[++R] = C) + } else if (A > 0) { + if ((A = x) < 8) + q = S[R--], + C = delete S[R--][q]; + else if (A < 10) { + for (z = W[O], + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); + O += 4, + S[R] = S[R][A] + } else + A < 12 ? (C = S[R--], + S[R] = S[R] << C) : A < 14 && (S[++R] = W[O], + O += 2) + } else { + if ((A = x) < 5) { + z = W[O]; + try { + if (t[o][2] = 1, + 1 == (C = G(b, O + 4, z - 3, [], c, l, null, 0))[0]) + return C + } catch (m) { + if (t[o] && t[o][1] && 1 == (C = G(b, t[o][1][0], t[o][1][1], [], c, l, m, 0))[0]) + return C + } finally { + if (t[o] && t[o][0] && 1 == (C = G(b, t[o][0][0], t[o][0][1], [], c, l, null, 0))[0]) + return C; + t[o] = 0, + o-- + } + O += 2 * z - 2 + } else + A < 7 ? (z = W[O], + O += 2, + S[R -= z] = 0 === z ? new S[R] : d(S[R], n(S.slice(R + 1, R + z + 1)))) : A < 9 && (C = S[R--], + S[R] = S[R] & C) + } + } else if (A < 3) { + A = 3 & x; + if (x >>= 2, + A < 1) + (A = x) < 2 ? (C = S[R--], + S[R] = S[R] > C) : A < 9 ? (z = W[O], + O += 4, + q = R + 1, + S[R -= z - 1] = z ? S.slice(R, q) : []) : A < 11 ? (z = W[O], + O += 2, + C = S[R--], + c[z] = C) : A < 13 ? (C = S[R--], + S[R] = S[R] >> C) : A < 15 && (S[++R] = W[O], + O += 4); + else if (A < 2) { + (A = x) < 1 ? S[++R] = g : A < 3 ? (C = S[R--], + S[R] = S[R] + C) : A < 5 ? (C = S[R--], + S[R] = S[R] == C) : A < 14 && (C = S[R - 1], + q = S[R], + S[++R] = C, + S[++R] = q) + } else if (A < 3) { + if ((A = x) < 2) { + for (z = W[O], + C = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + C += String.fromCharCode(r ^ i.p[P]); + S[++R] = C, + O += 4 + } else + A < 4 ? S[R--] ? O += 4 : O += 2 * (z = W[O]) - 2 : A < 6 ? (C = S[R--], + S[R] = S[R] % C) : A < 8 ? (C = S[R--], + S[R] = S[R]instanceof C) : A < 15 && (S[++R] = !1) + } else { + (A = x) > 7 ? (C = S[R--], + S[R] = S[R] | C) : A > 5 ? (z = W[O], + O += 2, + S[++R] = c["$" + z]) : A > 3 && (z = W[O], + t[o][0] && !t[o][2] ? t[o][1] = [O + 4, z - 3] : t[o++] = [0, [O + 4, z - 3], 0], + O += 2 * z - 2) + } + } else { + A = 3 & x; + if (x >>= 2, + A > 2) + (A = x) > 13 ? (S[++R] = W[O], + O += 8) : A > 11 ? (C = S[R--], + S[R] = S[R] >>> C) : A > 9 ? S[++R] = !0 : A > 7 ? (z = W[O], + O += 2, + S[R] = S[R][z]) : A > 0 && (C = S[R--], + S[R] = S[R] < C); + else if (A > 1) { + (A = x) > 10 ? (z = W[O], + t[++o] = [[O + 4, z - 3], 0, 0], + O += 2 * z - 2) : A > 8 ? (C = S[R--], + S[R] = S[R] ^ C) : A > 6 && (C = S[R--]) + } else if (A > 0) { + if ((A = x) > 7) + C = S[R--], + S[R] = S[R]in C; + else if (A > 5) + S[R] = ++S[R]; + else if (A > 3) + z = W[O], + O += 2, + C = c[z], + S[++R] = C; + else if (A > 1) { + D = 0, + T = S[R].length, + $ = S[R]; + S[++R] = function() { + var b = D < T; + if (b) { + var e = $[D++]; + S[++R] = e + } + S[++R] = b + } + } + } else { + if ((A = x) < 2) { + for (z = W[O], + A = "", + P = i.q[z][0]; P < i.q[z][1]; P++) + A += String.fromCharCode(r ^ i.p[P]); + A = +A, + O += 4, + S[++R] = A + } else + A < 4 ? (C = S[R--], + S[R] = S[R] - C) : A < 6 ? (C = S[R--], + S[R] = S[R] === C) : A < 15 && (C = S[R], + S[R] = S[R - 1], + S[R - 1] = C) + } + } + } + return [0, null] + } + function K(b, e, f, a, d, c, n, i) { + var r, t; + null == c && (c = window), + d && !d.d && (d.d = 0, + d.$0 = d, + d[1] = {}); + var o = {} + , l = o.d = d ? d.d + 1 : 0; + for (o["$" + l] = o, + t = 0; t < l; t++) + o[r = "$" + t] = d[r]; + for (t = 0, + l = o.length = a.length; t < l; t++) + o[t] = a[t]; + return i && !B[e] && F(b, e, 2 * f), + B[e] ? G(b, e, f, 0, o, c, null, 1)[1] : G(b, e, f, 0, o, c, null, 0)[1] + } +} +, +(glb = "undefined" == typeof window ? global : window)._$jsvmprt("484e4f4a403f5243000d2d1aea78184c36c3d671000000000000ab44020000250074211b000b02430200013e2217000e1c211b000b03430200024017000e18011b000b02041c16004c211b000b04430200033e2217000b1c1b000b041e00041700181b000b04260200050a000118010a0002101c16001e180022011700051c131f0018011800131e00061a001d000727041c00261102000025552002000825000d1b000b081e00090101001f0702000a25000e211b000b094302000240001f0802000b25005b131e000c02000d02000e1a02221e000f24131e00100a000110220117003c1c0200002500131800221e0011240a0000100200123e00131e001301220117001a1c211b000b0a43020002402217000b1c1b000b0a1e001404001f090200152500131b000b0b1a00221e0016240a000010001f0a020017250039211800430200023e22011700081c1800263e17000702000000211800430200183e170012180017000902001916000602001a001800001f0b02001b25005218010117000802001c1f010200001f0618001f0e180e480039170033180618011b000b0c221e001d241b000b0c221e001e240a00001018011e001f2a0a00011019281f06180e2e1f0e16ffcb1806001f0c0200202500df0200021f0621134318063e22011700121c13221e0011240a00001002002140220117001c1c1b000b051e00221e0011221e002324130a00011002002140220117000d1c211b000b084318063e22011700201c1b000b08221e0011240a000010221e0024240200250a00011048003a220117000d1c211b000b0d4318063e22011700151c1b000b0d221e0011240a00001002002640220117000d1c211b000b0e4318063e17000520001b020b07260a00001001170028211b000b0f4318063e22011700151c1b000b0f221e0011240a00001002002740170005200012001f0d0200282500a3211801430200294017000400180002002a281f061801221e002b24131e000c02002c0200001a020a0001101f0748001f12181218071e001f3a17006618071812191f081808221e002d2448000a00011002002e3e17001a1808221e002f24480118081e001f0a0002101f0816ffd81808221e00242418060a00011048003e1700191808221e002f2418061e001f18081e001f0a0002100018122d1f1216ff95001f0e02003025007146000306000a271f22020000000500600200001f06131e003117001c131e0031221e00322418000a0001101f061806170006180600131e003317001c131e0033221e00322418000a0001101f0618061700061806001b020b0e2618001b000b081e00340a0002101f0618060007001f0f02003525009c460003060006271f2205008f131e0031170015131e0031221e003624180018010a0002101c131e0033170015131e0033221e003624180018010a0002101c49016d48182a483c2a483c2a4903e82a1f061b000b081800020037281d00341b000b08180002002a28180128020038281b000b0b1b000b0b1a00221e0016240a0000101806281a01221e0039240a0000102802003a281d003407001f1002003b25004c460003060006271f1e05003f131e0031170013131e0031221e003c2418000a0001101c131e0033170013131e0033221e003c2418000a0001101c1b000b081800020037281d003407001f1102003d2500a31b000b101a001f061b000b05221e003e24180602003f131e00061a002202000025000c1b030b00201d0040001d00410a0003101c1b000b11221e00422402004318060a0002101c13221700081c131e00442217000b1c131e00441e00451700091800201d00401b020b08260a00001017003013221700221c131e0046131e00472948643922011700101c131e0048131e0049294864391700091800201d0040001f1302004a25002b211343020002402217001f1c1b000b051e00221e0011221e002324131e004b0a00011002004c3e001f1402004d2500611b020b07260a0000100117005202004e1b000b0d420122011700111c1b000b0d1e004e1b000b12410122011700091c02004f134222011700091c020050134222011700091c0200511342220117000f1c020052134202005313423a0012001f150200542501661b000b0d1e005517000520000200561b000b05421700431b000b05221e0056241b000b0d0a0001101f101810221e0024240200550a00011048003b22011700151c1810221e0024240200570a00011048003b170005200013221700081c131e00582217000b1c131e00581e00592217000e1c131e00581e00591e005a17002a460003060006271f9605001e131e00581e0059221e005a240a0000101b000b063e17000520000702005b02005c02005d02005e02005f0200600200610200620200630200640200650a000b1f060200660200670200680a00031f07180708031fc918c921041700181fc8180718c8191fca1318ca19170005200016ffe7180608031fc918c9210417001b1fc8180618c8191fca131e006918ca19170005200016ffe4131e006908031fc918c921041700341fc818c8221e006a24131e000c02006b0200001a020a0001102217000f1c131e006918c81902006c19170005200016ffcb12001f1602006d2500c71b020b08260a0000101700291b000b13221e006e2402000f0a0001101f06180602000025000c1b030b00201d006f001d00701b020b09260a00001017005b46000306002c271f1a181a1e00711b000b14020072193e2217000e1c131e00311e001f48003e1700091800201d006f050029131e0031221e0036240200730200000a0002101c131e0031221e003c240200730a0001101c071b020b07260a000010170024131e007401221700121c131e007522011700081c131e00761700091800201d006f001f170200772500b11b020b07260a000010011700a21b000b08221e0078240200790a0001101f0618061e007a221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a220117003b1c1b000b0d1e0011221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a22011700181c1b000b0d1e004e221e0011240a00001002007f400012001f18020080250075131e000c0200810200001a021f0613221700081c131e00822217000b1c131e00821e008317004c131e00821e00831f071807221e0024240200840a00011048003e22011700151c1807221e0024240200850a00011048003e22011700111c1806221e000f2418070a000110170005200012001f190200862500961b020b1a1e008717000b1b020b1a1e00870046000306000a271f1e020000000500731b000b08221e0078240200790a0001101f0c180c221e0088240200890a0001101f0d180d221e008a2402008b0a0001101f0e180d221e008c24180e02008d190a0001101f0f180d221e008c24180e02008e190a0001101f10180f02008f281810281f111b020b1a18111d008718110007001f1b0200902501270200001f061b020b1a1e009117000f1b020b1a1e00911f061600fb48051f0e0a00001f0f1b000b0d1e004e1f10181022011700071c0a00001f1148001f121812180e3a1700b7460003060006271f3f0500a318111812191f130a00001f1448001f16181618131e001f3a1700371813221e00922418160a00011017001f1814221e0093241813221e00922418160a0001101e00940a0001101c18162d1f1616ffc418131e0095020000281f1518131e0096170011181518131e009602000028281f15181518131e009702000028281f1518151814221e0098240200000a000110281f15180f221e00932418150a0001101c0718122d1f1216ff47180f221e0098240200990a0001101f061b020b1a18061d00911806221e009a2448004904000a000210001f1c02009b2504631b000b0d1e009c221e009d240a0000101f061b000b0d1e009e221e009d240a0000101f0748001f0848011f0948021f0a48031f0b48041f0c48051f0d180d1f0e02009f1f0f0200a01f100200a11f110200a21f120200a31f130200a41f140200a51f150200a61f161806221e0024240200a70a00011048003b22011700151c1806221e0024240200a80a00011048003b17000a180c1f0e1600f71806221e002424180f0a00011048003b17000a18081f0e1600dd1806221e00242418110a00011048003b17000a18091f0e1600c31806221e00242418120a00011048003b22011700151c1806221e0024240200a90a00011048003b22011700151c1806221e0024240200aa0a00011048003b17000a180a1f0e16007b1806221e00242418130a00011048003b22011700141c1806221e00242418140a00011048003b22011700141c1806221e00242418150a00011048003b22011700151c1806221e0024240200ab0a00011048003b22011700151c1806221e0024240200ac0a00011048003b17000a180b1f0e160007180d1f0e1807221e00242418100a00011048003b221700091c180e18084017000820001601521807221e00242418120a00011048003b22011700141c1807221e00242418110a00011048003b22011700151c1807221e0024240200ad0a00011048003b221700091c180e180a40221700091c180e18094017000820001600f91807221e00242418160a00011048003b22011700141c1807221e00242418140a00011048003b22011700141c1807221e00242418150a00011048003b22011700141c1807221e00242418130a00011048003b221700091c180e180c40221700091c180e180b40170008200016008b1807221e00242418100a00011048003a221700141c1807221e00242418120a00011048003a221700141c1807221e00242418160a00011048003a221700141c1807221e00242418130a00011048003a221700141c1807221e00242418140a00011048003a221700141c1807221e00242418150a00011048003a1f001800180e180d3e40170005200048001f1748011f1848021f1948041f1a48051f1b181b1f1c1806221e0024240200ae0a00011048003b17000a18191f1c1600861806221e0024240200af0a00011048003b22011700151c1806221e0024240200b00a00011048003b17000a18181f1c1600541806221e0024240200b10a00011048003b17000a18171f1c1600391806221e0024240200b20a00011048003b22011700151c1806221e0024240200b30a00011048003b17000a181a1f1c160007181b1f1c1b020b1c260a000010221e009d240a0000101f1d1b020b1b260a000010221e009d240a0000101f1e181c18173f221700091c181c18183f2217002d1c131e005822011700231c1b000b0d1e00b4221e0011240a000010221e0024240200b50a00011048003b1700052000181c18173f221700091c181c18183f221700151c181d221e0024240200580a00011048003b1700052000181c181a3e2217000a1c181e0200003f170005200012001f1d0200b62500da261f0646000306000f271f121b000b081e00b71f060500191b000b08221e00b8240200b90a0001104800191f06071806263e170004001b000b08221e0078240200ba0a0001101f070200bb1b000b15264927101b000b0c221e001e240a0000102a480a0a000210280200bb281b000b0b1a00221e0016240a000010281f0818000200bc180828281f00180718001d00bd1318080200002500311b030b011800041c460003060006271f0c05001c1b030b06221e00be241b030b070a0001101c131b030b080907000d1806221e00bf2418070a0001101c001f1e0200c02500be18001e001f1f0618064802331f07180117003018001806480129191f0818074804291f07180818074803293a22011700091c1808180739170005260018081f0748001f09180918063a17004a180018091b000b16221e00c12418001809194900ff2f18001809194808354900ff2f18001809194810354900ff2f18001809194818354900ff2f0a0004100d18092d1f0916ffb41800221e0098240200000a0001101f0a1801170013180a221e002f24480018070a00021000180a001f200200c225007f18001e001f1f0618064802341f07180648032f48004017000818072d1f07180117001a1b000b1718074801281a011f081808180718060d16000d1b000b1718071a011f0848001f09180918063a17002c1808180948023423191800221e00c32418090a000110180948032f48033333300d18092d1f0916ffd21808001f210200c425000a18001400c52f001f220200c6250030180248053518014802333118014803351802480433312818001801311805180348032f180431191802312831001f230200c725001818001e001f48043a17000a180048041d001f1800001f240200c82500d618001e001f1f0618064801291f0718001807191f0948001f0a1b000b0c221e001d244806483418062b280a0001104800301f0d180d4800391700981b020b22180a1b020b1f28041f0a180a48023548032f1f0b48001f0c180c18073a17003d1800180c480128191f081800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061028040d271f09180c2d1f0c16ffc118004800191f08180018071b020b2218001807191b020b2326180a180818091807180b18010a00061028040d271f09180d2e1f0d16ff661800001f250200c92500d818001e001f1f0618064801291f0718004800191f081b000b0c221e001d244806483418062b280a0001101f0d1b020b22180d1b020b1f2a041f0a180a480040170093180a48023548032f1f0b18071f0c180c48003917003d1800180c480129191f091800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061029040d271f08180c2e1f0c16ffc118001807191f09180048001b020b2218004800191b020b2326180a180818094800180b18010a00061029040d271f081b020b22180a1b020b1f29041f0a16ff6b1800001f260200ca2501ac131e000c0200cb0200001a02221e000f2418000a0001101700061800000a00001f0618001e001f1f0748001f0848001f09180818073a1701641800221e00c32418080a0001101f0a180a4900803a170018180618091800221e002d2418080a0001100d16012a180a4908003a17002a180618091b000b16221e00c1244900c0180a48063430490080180a483f2f300a0002100d1600fa180a4a0000d8003a220117000c1c180a4a0000dfff39170036180618091b000b16221e00c1244900e0180a480c3430490080180a480634483f2f30490080180a483f2f300a0003100d1600ae180848012818073a1700991800221e00c32418084801280a0001101f0b180a4a0000dc003a2217000c1c4a0000dc00180b3c2217000c1c180b4a0000dfff3c170062180a4903ff2f480a33180b4903ff2f304a00010000281f0c180618091b000b16221e00c1244900f0180c481234483f2f30490080180c480c34483f2f30490080180c480634483f2f30490080180c483f2f300a0004100d18082d1f0816000d1b000b180200cc1a014718082d1f0818092d1f0916fe9a1806221e0098240200000a000110001f270200cd25024e1b000b1718011a011f0648001f0748001f0818001e001f1f09180718013a221700091c180818093a1702051800221e00c3241808222d1f080a0001101f0a180a4804341f0c180c480040170061180c480140170059180c480240170051180c480340170049180c480440170041180c480540170039180c480640170031180c480740170029180c480c4017002b180c480d40170023180c480e40170055180c480f401700a216016816017d18061807180a0d160173180818093a17002818061807180a481f2f4806331800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a0147160139180848012818093a17004018061807180a480f2f480c331800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a01471600e4180848022818093a1700b4180a48072f4812331800221e00c3241808222d1f080a000110483f2f480c33301800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f304a00010000291f0b4800180b3c2217000c1c180b4a000fffff3c17002f18061807222d1f07180b480a344903ff2f4a0000d800300d18061807180b4903ff2f4a0000dc00300d16001b1b000b180200cf180b221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180a221e00112448100a000110281a014718072d1f0716fdef180718013a17000a180618071d001f1b000b161e00c11b000b16180610001f280200d12502aa0a00001f061b000b174a000080001a011f0748001f0848001f0918001e001f1f0a180818013a221700091c1809180a3a1702431800221e00c3241809222d1f090a0001101f0b180b4804341f0e180e480040170061180e480140170059180e480240170051180e480340170049180e480440170041180e480540170039180e480640170031180e480740170029180e480c4017002b180e480d40170023180e480e40170055180e480f401700a216016816017d18071808180b0d1601731809180a3a17002818071808180b481f2f4806331800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471601391809480128180a3a17004018071808180b480f2f480c331800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471600e41809480228180a3a1700b4180b48072f4812331800221e00c3241809222d1f090a000110483f2f480c33301800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f304a00010000291f0c4800180c3c2217000c1c180c4a000fffff3c17002f18071808222d1f08180c480a344903ff2f4a0000d800300d18071808180c4903ff2f4a0000dc00300d16001b1b000b180200cf180c221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180b221e00112448100a000110281a01471808497fff4801293b17003518084801281f0d1807180d1d001f180618061e001f1b000b161e00c11b000b161807100d1801180d291f0148004801291f0818082d1f0816fdb11808480039170020180718081d001f180618061e001f1b000b161e00c11b000b161807100d1806221e0098240200000a000110001f290200d22500b418011b000b063e22011700081c1801263e22011700091c180148003a17000a18001e001f1f01180148003e17000702000000131e000c0200cb0200001a02221e000f2418000a000110220117001c1c131e000c0200d30200001a02221e000f2418000a00011001170021180118001e001f3e1700061800001800221e00d424480018010a0002100018014a0000ffff3a1700131b020b2826180018010a0002101600101b020b2926180018010a000210001f2a0200d525006b18001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271800041f001b020b271801041f011b020b20261b020b25261b020b21261800200a0002101b020b241b020b21261801120a000210040a000210120a000210001f2b0200d625006718001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271801041f011b020b2a1b020b20261b020b26261b020b21261800120a0002101b020b241b020b21261801120a000210040a000210200a00021004001f2c0200d725019d0200d81f0602002a1f0718021700080200001f07180117000718011f060200001f0848001f0a18001e001f180a4803283b1700b31800221e00c324180a222d1f0a0a0001104900ff2f4810331800221e00c324180a222d1f0a0a0001104900ff2f480833301800221e00c324180a222d1f0a0a0001104900ff2f301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f0818081806221e002d241809490fc02f4806340a000110281f0818081806221e002d241809483f2f0a000110281f0816ff4518001e001f180a294800391700a81800221e00c324180a222d1f0a0a0001104900ff2f48103318001e001f180a3917001a1800221e00c324180a0a0001104900ff2f4808331600054800301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f08180818001e001f180a3917001a1806221e002d241809490fc02f4806340a0001101600051807281f0818081807281f081808001f2d0200d92500120200da221e00242418000a000110001f2e0200db2501100200001f0648001f07180718001e001f4803293a1700f61b020b2e1800221e002d2418074800280a000110041f081b020b2e1800221e002d2418074801280a000110041f091b020b2e1800221e002d2418074802280a000110041f0a1b020b2e1800221e002d2418074803280a000110041f0b18061b000b16221e00c12418084802331809480435300a000110281f061800221e002d2418074802280a00011002002a3f17002718061b000b16221e00c12418094804334900f02f180a480235480f2f300a000110281f061800221e002d2418074803280a00011002002a3f17002118061b000b16221e00c124180a4806334900c02f180b300a000110281f0618074804281f0716ff021806001f2f0200dc25004a1800483f2f1f001b000b16221e00c12418001800481a3a1700084841160025180048343a17000848471600181800483e3a17000b48004804291600084800481129280a000110001f310200dd2500331b020b311f06180618004818340418061800481234042818061800480c340428180618004806340428180618000428001f320200de2500981b020b121e00df0200e0281f061b020b1e26180602000025007818001e001f48083a17000400460003060006271f7405005f1b020b2c261b020b2f1800221e009a2448080a000110041800221e009a24480048080a0002100a0002101f0c180c0200e13e1700131b020b38262018000a0002101c160019180c0200e23e1700101b020b38261218000a0002101c07000a0002101c001f370200e325004e1b020b1218001d00e4460003060006271f1e050038131e0031170016131e0031221e0036240200e518010a0002101c131e0033170016131e0033221e0036240200e518010a0002101c07001f380200e62500a90200001f06460003060006271f2305003f131e0031170015131e0031221e0032240200e50a0001101f0618060122011700081c131e0033170015131e0033221e0032240200e50a0001101f06071806170055460003060006271f430500491b020b2c261b020b2f1806221e009a2448080a000110041806221e009a24480048080a0002100a0002101f2318230200e13e170008200016000e18230200e23e17000512000712001f390200e7250103121f061b020b121e00e4203e170009201f061600201b020b121e00e4123e170009121f0616000e1b020b39260a0000101f06131e00061a0022121d00e822121d00e922121d00822218061d00ea22121d00eb22121d004022121d00ec22121d00ed22121d005522121d006f22121d00ee220200ef25000520001f4018401d000f1f0718071b020b0d260a0000101d00eb18071e00eb011700671b020b131807041c1b020b171807041c18071b020b14260a0000101d00ec18071b020b15260a0000101d00ed18071b020b16260a0000101d005518071b020b18260a0000101d00ee18071b020b19260a0000101d008218071b020b1d260a0000101d00e91807001f3a0200f025005c1b000b05221e00f12418000a0001101f0648001f0718061e001f4801291f08180848003b1700321800180618081919170008480116000548001f09180918061e001f180829480129331807301f0718082e1f0816ffcc1807001f3b0200f225003848001f06180618011e001f3a17002618004a0001003f2a1801221e00c32418060a000110284800351f0018062d1f0616ffd51800001f3c0200f325003848001f06180618011e001f3a17002618001801221e00c32418060a000110314a0001003f2a4800351f0018062d1f0616ffd51800001f3d0200f42500a348001f06180618011e001f3a1700911801221e00c32418060a0001101f0718074a0000d8003b2217000c1c18074a0000dbff3c2217000c1c180618011e001f3a1700451801221e00c32418064801280a0001101f0818084a0000fc002f4a0000dc003d17002218074903ff2f480a3318084903ff2f284a00010000281f0718064801281f0618004a0001003f2a1807284800351f0018062d1f0616ff6a1800001f3e0200f5250077180022011700071c0200001f061806221e007b24131e000c0200f60200001a020200000a0002101f061806221e0024240200e00a0001104800480129401700211806221e00d42448001806221e0024240200e00a0001100a00021016000518061f061806170008180616000602008f1f061806001f3f0200f72500b1180022011700071c0200001f061806221e006a24131e000c0200f80200001a020a0001101f0718071700161807480019221e00d42448010a0001101600060200001f0618061700141806221e002b240200f90a000110160004261f08131e00061a001f09180817004548001f0a180a18081e001f3a17003618091808180a19221e002b2402002a0a0001104800191808180a19221e002b2402002a0a0001104801190d180a2d1f0a16ffc51809001f400200fa25009118000122011700171c1b000b19221e00fb2418000a0001100200fc3e17000a131e00061a00001b000b05221e00f12418000a000110221e00fd240a0000101f06131e00061a001f0748001f10181018061e001f3a170037180117001a180718061810191800180618101919020000280d1600131807180618101918001806181019190d18102d1f1016ffc41807001f410200fe2500781b000b17221e00ff2418000a0001101700131800221e0100241b020b420a0001100018001b000b05411700491b000b05221e00f12418000a000110221e00fd240a0000101f0c180c221e010124020000250017180018011b020b421b030b00180119040d180000131e00061a000a000210001800001f4202010225007d18000122011700171c1b000b19221e00fb2418000a0001100200fc3e170007020000001b000b05221e00f12418000a000110221e00fd240a0000101f060200001f0748001f10181018061e001f3a170029180718061810190a000102002a281800180618101919280200f928281f0718102d1f1016ffd21807001f430201032500cb1b000b08221e0078240200790a0001101f07180748301d0104180748101d01051807221e0088240201060a0001101f0818080201071d01081808221e01092402010a4802480c0a0003101c180848021d010b180848011d010c180802010d1d010e1808221e010f24480848084808480048020a0005101c1808221e0110240a0000101c1807221e007a240a0000101f0648001f09180948203a17002c18004a0001003f2a1806221e00c324180018061e001f2c0a000110284800351f0018092d1f0916ffd21800001f4402011125002046000306000c271f0c48004801290005000d1b020b44140112040007001f45020113250011110201131d00951118001d0114001f4602011525001a460003060008271f0c200005000b131e003101010007001f4702011625001a460003060008271f0c200005000b131e003301010007001f4802011725001a460003060008271f0c200005000b131e007401010007001f490201182500301b020b0b1b020b49260a000010041b020b0b1b020b48260a00001004281b020b0b1b020b47260a0000100428001f4a020119250023131e011a1f0618061e01040200bb2818061e0105280200bb2818061e011b28001f4b02011c250019131e011a1f0618061e011d0200bb2818061e011e28001f4c02011f2500711b000b1a0200002500640201201b000b0d421700511b000b0d221e0120240a000010221e0121240200002500311b040b001800020122190200bb28180002012319280200bb28180002012419280200bb2818000201251928041c000a0001101c16000a1800020000041c001a01001f4d02012625007d0201271f0648001f07211b000b0d180619430200024017000f1b000b0d1806191f0716001c211b000b0d180619430200024017000c1b000b0d1806191f07460003060009271f50121f080500181b000b08221e0128240201290a0001101c201f080702012a13421f0918070200bb281808280200bb28180928001f4e02012b2500671b000b0b1a001f061806221e012c2448010a0001101c1806221e012d2448050a0001101c48001806221e012e240a000010291f071806221e012d24480b0a0001101c48001806221e012e240a000010291f081b000b0c221e012f24180718080a000210001f4f0201302501dd0201310201320201330a00031f06131e00061a001f07131e00061a001f081b000b081e00b70117000702001a001806031f1b181b21041700711f1a1b000b08221e0078240201340a0001101f1c181c0201351d0136181c1e01370201381d0139181c1e0137181a1d013a1b000b081e00b7221e00bf24181c0a0001101c1807181a181c1e013b0d1808181a181c1e013c0d1b000b081e00b7221e00be24181c0a0001101c16ff8e02013d02013e02013f02014002014102014202014302014402014502014602014702014802014902014a02014b02014c02014d02014e02014f0201500201510201520201530201540201550201560201570201580201590a001d1f0948001f0b271f0a271f0c48001f1a181a18091e001f3a1700b31806031f1c181c210417009f1f1b1b000b08221e0078240201340a0001101f1d181d0201351d0136181d1e01370201381d0139181d1e01371809181a1902015a28181b281d013a1b000b081e00b7221e00bf24181d0a0001101c181d1e013b1807181b1940220117000f1c181d1e013c1808181b19401f1e1b000b081e00b7221e00be24181d0a0001101c181e170018181a481e3a17000d4801181a33180a301f0a16000616ff60181a2d1f1a16ff48180a221e00112448100a000110001f5002015b25002146000306000c271f0c180c1e01140005000e1b000b1b02015c1a011c07001f5102015d2500141b000b1c221e0011240a0000101e001f001f5202015e2501e81b020b07260a000010220117000d1c1b020b09260a00001022011700231c1b000b0d1e009c221e009d240a000010221e00242402015f0a00011048003917000702000000131e016022011700081c131e016122011700081c131e01621f061b000b1a02000025017d46000306000d271f6a1800020000041c0501691b030b0617015a1b030b06131e00061a0022131e00061a00220201631d01640a00011d01651a011f06020000250004001f07131e000c0201660200001a021f08131e000c02016702007d1a021f091806221e0168240200000a0001101c1b000b1d2602000025000d1b040b00020000041c004901f40a0002101c1806221e0169240a0000101f0a180a1b000b1a41170038180a221e0121240200002500131b040b06221e016a2418000a000110000a000110221e012124020000250004000a0001101c1600301806221e01692402000025001c1b040b06221e016a2418001b040b071b040b070a0003101c0018070a0002101c18060200002500601800221700091c18001e016b2217000c1c18001e016b1e016b1700431b040b08221e016c2418001e016b1e016b0a0001101f0618061700271806480019221e006a241b040b090a0001101f07180717000e1b040b001806480019041c001d016d16000a1800020000041c07001a01001f5302016e25005d02016f221e007b24131e000c02017002007d1a0202000025003e1b000b0c221e001e240a00001048102a4800301f0618000201713d170008180616000b180648032f4808301f071807221e00112448100a000110000a000210001f5402017225005518001e001f48223e1700481b020b3c2648001800221e002f24480048200a0002100a0002101f061806221e0011240a000010221e002f24480048020a0002101800221e002f24482048220a0002103e0012001f5502017325005d1b020b0f020174041f0618062217000b1c1b020b551806041700061806001b020b54260a0000101f0618061b020b3c26480018060a00021028221e002f24480048220a0002101f061b020b102602017418060a0002101c1806001f56020175250033180001170007020000001b020b0c4804041f0618061b020b2d261b020b2b26180018060a0002100201760a00021028001f5702017725015d180117003a48001f0b48001f0c180c18001e001f3a1700271800180c191e01781700141800180c191801180b222d1f0b191d0179180c2d1f0c16ffd40200001f061800221e017a2402000025001b1b03220b061b020b0b18001e01790402017b28281d017c000a0001101c18061b020b0a260a000010281f061b020b54260a0000101f071b000b0c221e001d241807221e00c32448030a00011048082b0a0001101807221e00c32448030a00011048082c281f081807221e002f24480448041808280a0002101f091b020b2d1b020b2b26180618090a000210180728041f061b020b12221e017d02017e1b000b1e180604280200f928281d017d271f0a1b020b1e26180a02000025004d180002017f1948003d2217000a1c1800020180191700351b020b121b020b57180002018019041d01811b020b121800020180191d01821b020b10260201831800020180190a0002101c000a0002101c001f5802018425049a1b000b0d221700051c13221700081c1b000b080117000400131e00061a00220201851d01862248041d01872218001e01851d0179131e00061a00220201881d01862248031d0187221b020b0a1d0189131e00061a002202018a1d01862248031d0187221b020b4a1d0189131e00061a00220200791d01862248031d0187221b020b451d0189131e00061a002202018b1d01862248031d0187221b020b0a1d0189131e00061a002202009e1d01862248001d0187131e00061a002202018c1d01862248001d0187131e00061a002202018d1d01862248001d0187131e00061a002202018e1d01862248001d0187131e00061a00220200571d01862248001d0187131e00061a002202018f1d01862248031d0187221b020b4b1d0189131e00061a00220201901d01862248031d0187221b020b4c1d0189131e00061a00220201911d01862248011d0187131e00061a00220201921d01862248011d0187131e00061a00220201931d01862248011d0187131e00061a00220201941d01862248001d0187131e00061a00220201951d01862248031d0187221b020b4d1d01892248011d0178131e00061a00220201961d01862248031d0187221b020b4e1d0189131e00061a00220201971d01862248031d0187221b020b4f1d0189131e00061a00220201981d01862248031d0187221b020b0a1d0189131e00061a00220201991d01862248031d0187221b020b1b1d0189131e00061a002202019a1d01862248031d0187221b020b501d0189131e00061a002202019b1d01862248031d0187221b020b1c1d0189131e00061a002202019c1d01862248031d0187221b020b0a1d0189131e00061a002202009c1d01862248001d0187131e00061a002202019d1d01862248031d0187221b020b0f1d0189220201831d019e131e00061a002202019f1d01862248031d0187221b020b511d0189131e00061a00220201a01d01862248031d0187221b020b521d0189131e00061a00220201a11d01862248031d0187221b020b531d01892248011d0178131e00061a00220200821d01862248011d0187131e00061a00220201a21d01862248041d0187221b020b061e01a31d0179131e00061a00220201a41d01862248031d0187221b020b561d0189131e00061a00220201a51d01862248031d0187221b020b0a1d0189131e00061a00220201a61d01862248041d01870a00221f060a00001f07180608031f11181121041700db1f1018061810191e01871f12181248004017001e1812480140170033181248024017004018124803401700501600a918061810191b020b0b1b000b0d18061810191e018619041d017916008c18061810191318061810191e0186191d017916007718061810191b000b0818061810191e0186191d017916005f18061810191e01781700321b000b1a1700281807221e00932418061810191e0189221e00232418061810191e019e0a0001100a0001101c160025180618101918061810191e0189221e0023242618061810191e019e0a0002101d017916ff241b000b1a1700361b000b1a221e01a72418070a000110221e0121240200002500141b020b58261b030b0618000a0002101c000a0001101c16000b1b020b581806041c001f590201a82500441b000b082217000b1c1b000b081e01a901170004001b020b5b08031f0d180d210417001f1f0c1b000b08221e01a924180c1b020b5b180c190a0002101c16ffe0001f5d0201aa25008418001e001f4900c8391700131800221e01ab24480048640a0002101c18001e001f48003917004e180018001e001f480129191f0c18011e01ac180c1e01ac2948003c220117002a1c0201ad1801422217000f1c18011e0171180c1e01713d2217000f1c18011e01ad180c1e01ad3d170004001800221e00932418010a0001101c001f610201ae25006048001f0618001e01af22011700091c18001e01b022011700091c18001e01b122011700091c18001e01b217000748011f061b020b61261b020b60131e00061a002218061d0171221b000b0b221e01b3240a0000101d01ac0a0002101c001f620201b425006d18001f0618001e00941f0718001e01b52217000a1c18070201b63e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5e18080a0002101c001f630201bb25006d18001f0618001e00941f0718001e01b52217000a1c18070201bc3e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5f18080a0002101c001f640201bd2500191800221e0101241b020b650a00011018001e001f2b001f670201be25006818001e001f48013c1700064800001b020b671800041f061800221e01002402000025000b18001b030b0629000a0001101f071b000b0c221e01bf241807221e0100241b020b660a000110221e0101241b020b650a00011018001e001f4801292b0a000110001f680201c02500d548001f0648001f0718001e001f1801391700ba0a00001f0848001f09180918001e001f4801293a17008418001809480128191f0a18001809191f0b180a1e01ac180b1e01ac291f0c180c17005918021700171808221e0093244801180c2b0a0001101c1600401808221e0093241b000b0c221e01bf241b020b66180a1e0171180b1e017129041b020b66180a1e01ad180b1e01ad2904280a000110180c2b0a0001101c18092d1f0916ff741b020b671808041f061b020b681808041f07180748003d1700081401c11f07180618070a0002001f690201c2250119121f06460003060006271f2105002b1b000b082217000b1c1b000b081e01281700171b000b08221e0128240201290a0001101c201f06071b020b69261b020b5e48010a0002101f071b020b69261b020b604805200a0003101f0848011f09180601221700081c1b020b5c17000a18094840301f091b020b5e1e001f48003e17000d18094802301f09160015180748001948323917000a18094810301f091b020b5f1e001f48003e17000a18094804301f091b020b601e001f48003e17000d18094808301f0916001618084800191401c33917000a18094820301f091809221e00112448200a0001101f0a180a1e001f48013e17000e0201c4180a281f0a160016180a1e001f48023e17000b02001a180a281f0a180a001f6a0201c525002d0200001f06460003060006271f0e0500191b020b0e260201c61b000b081e00340a0002101f06071806001f6b0201c72500531b000b19221e00fb24131e00061a002218001d000e221b000b1f1b000b19221e00fb2418011e00b70a000110041d01c82218021d01860a0001101f061b020b2d261806020176200a0003101f071807001f6c0201c9250434211801430200023e2217000c1c21180043020001402217000a1c18001e01ca0117000d1b020b460201cb1a014748001f0648001f074a0000fff11f081b000b0b1a00221e0016240a0000104903e82b4800351f091b020b061e01cc012217003e1c1b020b3d261b020b3d2648001809020000280a0002101b000b0e1e0083221e002f241b000b0e1e01cd1e001f4802280a0001100a00021018082c1f071809180718082a31480035221e00112448020a0001101f0a180a1f0b180a1e001f48203917001b180a221e002f24180a1e001f4820290a0001101f0b16003c180a1e001f48203a1700310200001f7048001f7118714820180a1e001f293a170013187002001a281f7018712d1f7116ffe51870180b281f0b0201ce1f0c0201cf1f0d0201d01f0e180e180d28180c28180b281f061b000b1526180648020a0002101f061b020b3d2648001806020000280a0002101f0f1b020b3a260a0000101f1018100200e818020201d13e17000712160004200d0200001f11180117000a18011f1116011e1b020b5a1e01d2221e002324110201d318000a0003101c18001e00b72217001a1c1b000b19221e00fb2418001e00b70a0001100200fc4017006f48001fc318001e01d41700331b020b3e2648001b000b19221e00fb241b020b412618001e00b718001e01d40a0002100a0001100a0002101fc31600271b020b3e2648001b000b19221e00fb241b020b4218001e00b7040a0001100a0002101fc30201d518c3280200f9281f111b020b4018001e01ca041fc218001e01d617001a1b000b05221e01d72418c218001e01d60a00021016000518c21fc218111b020b4318c204281f1118110201d8281b020b3f18001e01ca04280200f9281f1118110201d9280201da281f111b020b5a1e01d2221e002324110201db18110a0003101c1b020b3b1810041f121b020b061e01cc012217000d1c1b020b45260a0000101f131b020b061e01cc012217001e1c1b020b121e018122011700111c1b020b571b020b0f02018304041f141b020b331806041b020b3318061401dc2b48003504281b020b33181318063104281b020b331b020b3d26180f1b020b061e01cc012217000b1c1b000b0d1e009c221e0011240a0000100a00021018082c4810331b020b3d26180f1811020000280a00021018082c3004281b020b3318124808331b020b061e01dd4804333018063104281b020b32180704281f151b020b334800041c181417000a18151814281f151b020b6a260a00001022011700071c0201de1f160200bb1b020b6d281b020b061e01df281f1718171816281f1718171b020b6e181528281f171b020b3e26480018170a000210221e00112448100a0001101f181818221e009a2418181e001f48022918181e001f0a0002101f1918171819281f170200001f1a1b020b6b260a0000101f1b181b17001f1b020b6c26181b180018110a0003101f1a18170201e028181a281f171817001f6f0201e1250072131e00061a001f06180108031f081808210417005a1f0718011807191f0918001809191f0a21180a430200023e22011700081c180a263e170006121f0a180a26402217001a1c21180a430200033e220117000c1c21180a430200013e170006201f0a18061809180a0d16ffa51806001f700201e225004b0201e30201e402009e0201e502019402018c0201e60201270201e70200b40201e80201e90201ea0201eb0201ec0201ed0201ee0a00111f061b020b70261b000b0d18060a000210001f710201ef2500450201f00200490200470201f10201f20201f30201930201f40201f50201f60201f70201610201f80201f90201fa0201fb0a00101f061b020b70261318060a000210001f720201fc2500270201fd0201fe0200090201ff0202000a00051f061b020b70261b000b0818060a000210001f730202012500551b000b08221e0078240200790a0001101f06261f07460003060006271f100500281806221e0088240200890a00011022011700121c1806221e0088240202020a0001101f0707180701170006261f071807001f740202032500671800221e008a240202040a00011022011700121c1800221e008a240202050a00011022011700121c1800221e008a240202060a0001101f0618061700271800221e008c2418061e02070a0001101f07180748003e17000748021f071807001600052600001f750202082501b61b020b1a1e020917000b1b020b1a1e0209001b020b74260a0000101f0618060117000a131e00061a0000131e00061a00221806221e020a240a00001022011700071c0a00001d020b221806221e020c240a0000101e020d1d020d221806221e008c2418061e020e0a0001101d020f221806221e008c2418061e02100a0001101d0211221806221e008c2418061e02120a0001101d0213221b020b751806041d0203221806221e008c2418061e02140a0001101d0215221806221e008c2418061e02160a0001101d0217221806221e008c2418061e02180a0001101d0219221806221e008c2418061e021a0a0001101d021b221806221e008c2418061e021c0a0001101d021d221806221e008c2418061e021e0a0001101d021f221806221e008c2418061e02200a0001101d0221221806221e008c2418061e02220a0001101d0223221806221e008c2418061e02240a0001101d0225221806221e008c2418061e02260a0001101d0227221806221e008c2418061e02280a0001101d0229221806221e008c2418061e022a0a0001101d022b221806221e008c2418061e022c0a0001101d00961f071b020b1a18071d02091807001f7602022d250065131e00061a00221b020b71260a0000101d022e221b020b72260a0000101d022f221b020b73260a0000101d0069221b020b76260a0000101d0089221b020b1b260a0000101d0230221b020b1c260a0000101d004e1f061b020b1a18061d02311806001f77020232250075131e00061a001f061b020b1a1e023117000f1b020b1a1e02311f0616000e1b020b77260a0000101f0618061b000b0b221e01b3240a0000101d02331b020b0c4804041f0718071b020b2d261b020b2b261b000b19221e00fb2418060a00011018070a0002100201760a000210281f081808001f7802023425003b48001f0618061b020b121e02351e001f3a1700251b020b121e0235180619221e000f2418000a000110170005200018062d1f0616ffd112001f790202362503ac131e02371e00221f0618061e006e1f0718061e02381f0818061e02391f0918061e023a1f0a18061e023b170007001600091806201d023b1806020000250076111e023c01170065111e023d221e009324131e00061a00220202381d023e221b041d023f0a0001101c131e000c02024002000e1a02221e000f2418000a00011017002a111801221e0011240a000010221e009d240a000010221e002b240202410a0001104800191d02421b030b08111b0410001d02381806020000250012111b041d02431b030b0a111b0410001d023a1806020000250040110a00001d023d111e023d221e009324131e00061a002202006e1d023e221b041d023f0a0001101c1118001d02441118011d02451b030b07111b0410001d006e02024602007002024702024802024902024a02024b0a00071f0b180602000025026f11201d023c1b020b79111e024504170255111e0245221e00242402024c0a00011048004801293917000c1b030b09111b0410001118001d024d111e024e1f06111e02461f07111e00701f08111e02471f09111e02481f0a111e02491f0b111e024a1f0c111e024b1f0d111e024f1f0e111e02501f0f131e00061a001f1048001f2a182a1b030b0b1e001f3a17002118101b030b0b182a19111e02511b030b0b182a19190d182a2d1f2a16ffd8131e00061a00221b020b82261b030b00111e02450a0002101d01ca1f11111e02440202523d17003c111e02420202533e220117000c1c111e02420202543e17001a1b020b80261811111e0242111e024d0a0003101c16000c1b030b09111b0410001b020b851b030b000417001c1b030b00221e02552418111b000b060201d10a0003101600151b020b6f2618111b000b060201d10a0003101f121b020b8326111e024518120a0002101f13111e023d221700131c111e023d48001902023e1902006e3f1700052600111e023d1f1448001fa418a418141e001f3a17003618a448003e170010181418a4191e023f480118130d11181418a41902023e191911181418a4191e023f101c18a42d1fa416ffc5111e024317000e111e023a11111e0243101c1102023d091b020b121e025617001e11221e0238241b020b061e02571b020b78260a0000100a0002101c1118061d024e1118071d02461118081d00701118091d024711180a1d024811180b1d024911180c1d024a11180d1d024b11180e1d024f11180f1d025048001f9018901b030b0b1e001f3a170021111e02511b030b0b18901918101b030b0b189019190d18902d1f9016ffd81b030b09111b0410001d0239001f7a0202582503f60202592503c31801220117000a1c131e00061a001f011b020b7b2217000b1c18001b000b20411f060200001f0702025a1f08180617001418001e01ca1f0718001e025b1f0816002418001f0718011e025b17001418011e025b221e025c240a00001016000518081f08180802025a402217000a1c180802025240220117000c1c1b020b79180704011700111b030b0626180018010a00021000131e00061a00221b020b82261b030b0018070a0002101d01ca1f0918080202523d1701fc1b020b7f26180018010a000210221e002b240202410a000110480019221e009d240a0000101f5018500202533e220117000a1c18500202543e1701af18061700c81800221e025d240a000010221e025e240a000010221e0121240200002500881b020b80261b040b091b040b5018000a0003101c1b020b851b030b000417001e1b030b00221e0255241b040b091b000b060201d10a0003101600171b020b6f261b040b091b000b060201d10a0003101f061b020b83261b040b0718060a0002101f071b020b81261b040b00180718000a0003101f081b030b062618081b040b010a000210000200002500161b000b1a0200002500091b050b0047001a01000a000210001600e21b020b80261809185018011e00b70a0003101c1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101fa21b020b8326180718a20a0002101fa31b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b062618a318010a000210001600111b030b0626180018010a00021000160112180802025a3e1700fb1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101f4e1b020b83261807184e0a0002101f4f18061700271b020b81261800184f1b000b060a0003101f501b030b0626185018010a000210001600871b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b0626184f18010a000210001600111b030b0626180018010a00021000001f071b020b7e260a0000100117000400131e02601700070016000813201d0260131e02611f061318071d0261001f7d020262250008131e0261001f7e02026325010d0200001f061b020b7b2217000b1c18001b000b204117002218001e025f221e0041240202640a0001101f07180717000718071f061806001801221700091c18011e025f1700c61b020b7c2217000e1c18011e025f1b000b214117002218011e025f221e0041240202640a0001101f17181717000718171f0618060018011e025f1b000b174117004448001f47184718011e025f1e001f3a17003218011e025f184719480019221e009d240a0000100202643d17000f18011e025f1847194801190018472d1f4716ffc618011e025f1b000b054117003618011e025f08031f8f188f21041700231f8e188e221e009d240a0000100202643e17000c18011e025f188e190016ffdc180600001f7f0202652500ba1802263e220117000a1c18020200003e1700061800001802221e0011240a0000101f0218010202533e1700771800201d01d41802221e002b240200f90a0001101f0c131e00061a001f0d180c17004a48001f0e180e180c1e001f3a17003b180d180c180e19221e002b2402002a0a0001104800191b000b22180c180e19221e002b2402002a0a000110480119040d180e2d1f0e16ffc01800180d1d00b716001718001b000b19221e02662418020a0001101d00b71800001f8002026725009318001e025f1f061b020b121e025617001f1806221e0268241b020b061e02571b020b78260a0000100a0002101c1b000b201801131e00061a002218001e025b1d025b2218061d025f2218021d00b72218001e02691d02692218001e026a1d026a2218001e026b1d026b2218001e01eb1d01eb2218001e026c1d026c2218001e026d1d026d2218001e026e1d026e1a02001f8102026f25012518011f061b020b121e02701e001f48003917008048001f0818081b020b121e02701e001f3a17006c1b020b121e02701808194800191f091809221e000f2418010a0001101700451801221e007b2418091b020b121e02701808194801190a0002101f061b020b5a1e01d2221e0023241800020271020272180128020273281806280a0003101c16000b18082d1f0816ff8a1b000b2218060418063d17000c1b000b1f1806041f061806221e0024240200e00a0001101f071807480039221700151c1806221e0274240202750a00011018073917004d1806221e00d424480018074801280a0002101f201806221e00d424180748012818061e001f0a0002101f2118201821221e002b240202750a000110221e0098240202760a000110281f061806001f8202027725002d18001800221e0024240200e00a00011048004801294017000c02027818012816000902027918012828001f8302027a2500141b020b7a1800041c1b020b7d1800041c001f8402027b25000b18001b020b8741001f8502027c250019111b000b19221e0266241b020b860a0001101d027d001f8702027e2500c01b020b061e01cc17000526001b020b85110417000a111e027d1600071b020b121f061b000b05221e01d724180618000a0002101c1b020b8a1806041c18061e027a1700201b020b8b18061e027f041c1b020b8c18061e0280041c1b020b8411041c18061e02561700131b000b1d261b020b7748000a0002101c1b020b5d260a0000101c1b020b121e028101221700091c18061e01841700271b020b12201d02811b020b37260a0000101c1b000b1d261b020b59480018060a0003101c001f8902028225006618001e018548003e220117001c1c1b000b0c221e001d2418001e01850a00011018001e01853f17000d1b020b460202831a014718001e027a17002a18001e027f1e001f48003e220117000d1c18001e027f1e00930117000d1b020b460202841a0147001f8a02028525003f48001f06180618001e001f3a17002f180018061917001f1b020b121e0235221e0093241b000b2318001806191a010a0001101c18062d1f0616ffcc001f8b02028625004f18001b000b064017004448001f06180618001e001f3a1700351b020b121e0270221e0093241b000b2318001806194800191a0118001806194801190a00020a0001101c18062d1f0616ffc6001f8c020287250011131e028822011700071c020000001f8d0202892500561b020b0f1b020b061e028a0422011700071c0200001f061b020b111b020b061e028a041c180602028b3d17000b0200001f0616001518060200003d17000c1b000b081e02691f0618061700091318061d0288001f8e211b000b051e01d743020003401700c71b000b05221e003e241b000b050201d7131e00061a00220201d72500941800263e220117000b1c18001b000b063e17000d1b000b0702028c1a01471b000b051800041f0648011f0718071b031e001f3a17005b1b031807191f08180826402217000b1c18081b000b0640170039180808031f141814210417002c1f091b000b051e00221e028d221e002324180818090a00021017000d1806180918081809190d16ffd318072d1f0716ffa01806001f8f188f1d028e22201d028f22201d02900a0003101c1b000b051e00f1011701141b000b050200002501021b000b051e00221e028d1f06131e00061a0022261d0011221e0291240200110a000110011f0702001102029202029302028d02029402029102000d0a00071f0818081e001f1f090200002500b42118004302000340221700161c211800430200014022011700081c1800263e17000d1b000b070202951a01470a00001f06180008031f121812210417002a1f071b030b06221e002324180018070a0002101700111806221e00932418070a0001101c16ffd51b030b0717004548001f0818081b030b093a1700371b030b06221e00232418001b030b081808190a0002101700161806221e0093241b030b081808190a0001101c18082d1f0816ffc518060000260a0000101d00f1131e00061a00220202961d01a32248021d01dd22121d01cc220202881d028a220202971d01df220202981d02571f06131e00061a0022121d02992248001d018522121d018422121d025622121d027a220a00001d027f220a00001d0235220a00001d0280220a00001d02702202029a1d017d2202029b1d00df2202029c1d029d1f12131e00061a001f1a14029e1f1f48001f3002000025001e1b021b020b351d029f1b0218001d02a01b020b32180048023404001f34271f3302000025002a1b021b020b361d029f1b020b30481c331800480435301f061b0218001d02a01b020b32180604001f350200002500271b021b020b341d029f1b020b321b020b30481a33180048063530041b020b3118000428001f36131e00061a0022020000250049121f061b020b85110417000f111e027d1e02991f0616000c1b020b121e02991f061806221700201c1b000b11221e0042240202a11800280202a2280202a318010a0003101c001d01d21f5a131e00061a002218631d02a42218631d01b62218621d02a52218641d01bc2218641d02a61f5b121f5c0a00001f5e0a00001f5f0a00001f600200002500091800180128001f65020000250009180018002a001f660202a71f6d0202a81f6e1b000b202217000d1c1b000b201b000b05411f7b1b000b212217000d1c1b000b211b000b05411f7c1b000b19221e00fb2418120a0001101f86186f1f8818871e002218891d027e18871e002218881d025518871e0022188d1d02871806122217000b1c180d260a0000101d01cc188e260a0000101c180018871d027c1800188d1d0287180018891d027e180018881d02551b000b05221e003e2418000202a9131e00061a0022201d028e0a0003101c000a0002101c0002aa00066d606867617609776c6667646b6c67660864776c61766b6d6c03636f6607677a726d707671064d60686761760e607b7667665d63617063756e6770046b714b470c666d61776f676c764f6d6667096b71446b7067646d7a086b7151636463706b06506765477a720b616d6c7176707761766d70016b04766771760b4a564f4e476e676f676c7608766d5176706b6c6521596d60686761762251636463706b50676f6d76674c6d766b646b6163766b6d6c5f0671636463706b107277716a4c6d766b646b6163766b6d6c0c656776566b6f677176636f7207656776566b6f670865677654636e776707606d6d6e67636c013301320c70636c666d6f5176706b6c653e32333031363734353a3b636061666764656a6b68696e6f6c6d72737071767774757a7b78434041464744454a4b48494e4f4c4d52535051565754555a5b5805646e6d6d700670636c666d6f066e676c65766a09666d6f4667766761760f596d606867617622556b6c666d755f0972706d766d767b72670461636e6e076b6c66677a4d6408466d61776f676c7612596d6068676176224c63746b6563766d705f10596d6068676176224a6b71766d707b5f0a65677644706d6f517670067176706b6c65013f0571726e6b76045939245f06616a637043760122097177607176706b6c6509656776416d6d696b670e716771716b6d6c51766d70636567076567764b76676f0c6e6d61636e51766d7063656706616d6d696b6709716776416d6d696b67077167764b76676f313f3922677a726b7067713f4f6d6c2e2230322251677222303233322232323832323832322257564139227263766a3f2d390a3922677a726b7067713f0b766d454f565176706b6c650939227263766a3f2d390966676e416d6d696b670a70676f6d74674b76676f0e66676077656567704667766761760e6667646b6c6752706d726770767b026b6608666760776565677003656776036e6d6502276107616d6c716d6e6707646b70676077650a6d77766770556b66766a0a6b6c6c6770556b66766a0b6d777667704a676b656a760b6b6c6c67704a676b656a760a6c6d66674667766761760772706d6167717110596d60686761762272706d616771715f0d726a636c766d6f46677667617607726e77656b6c71085d726a636c766d6f0b61636e6e526a636c766d6f0b5d5d6c6b656a766f637067054377666b6d1841636c74637150676c6667706b6c65416d6c76677a7630460f75676066706b7467704667766761760975676066706b746770136567764d756c52706d726770767b4c636f6771096e636c65776365677106616a706d6f670770776c766b6f6707616d6c6c676176145d5d75676066706b7467705d6774636e77637667135d5d71676e676c6b776f5d6774636e776376671b5d5d75676066706b7467705d7161706b72765d64776c61766b6d6c175d5d75676066706b7467705d7161706b72765d64776c61155d5d75676066706b7467705d7161706b72765d646c135d5d647a66706b7467705d6774636e77637667125d5d66706b7467705d776c75706372726766155d5d75676066706b7467705d776c75706372726766115d5d66706b7467705d6774636e77637667145d5d71676e676c6b776f5d776c75706372726766145d5d647a66706b7467705d776c75706372726766095d71676e676c6b776f0c61636e6e51676e676c6b776f165d51676e676c6b776f5d4b46475d5067616d7066677008666d61776f676c76056f6376616a0a5e2659632f785f66615d066163616a675d0f6b6c616d656c6b766d466776676176046d72676c096b6c616d656c6b766d076d6c6770706d7004616d66671253574d56435d475a4147474647465d47505010716d6f6749677b4a677067407b766766096b6c66677a676646400c526d6b6c7667704774676c760e4f51526d6b6c7667704774676c760a6a6d6d694667766761760d617067637667476e676f676c760661636c74637109766d4663766357504e077067726e636167035e712801650a6c63766b7467616d666714596d606867617622526e77656b6c437070637b5f0e6e6d6163766b6d6c4667766761764a5c6a767672713d385e2d5e2d2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b086e6d6163766b6d6c046a70676404646b6e67106a767672382d2d6e6d61636e6a6d717606656776457277074552574b4c444d0a656776416d6c76677a7605756760656e0c656776477a76676c716b6d6c19554740454e5d66676077655d70676c66677067705d6b6c646d0c656776526370636f6776677015574c4f43514947465d54474c464d505d554740454e17574c4f43514947465d50474c46475047505d554740454e012d0a656776526e77656b6c7106524e57454b4c046b76676f047277716a04767b7267046c636f6707746770716b6d6c08646b6e676c636f6704686d6b6c02212105716e6b61670c616d6c716b7176416a67616909777167704365676c760b766d4e6d7567704163716708726e6376646d706f07756b6c666d757103756b6c07636c66706d6b66056e6b6c777a066b726a6d6c67046b726366046b726d66036f6361096f63616b6c766d716a0c6f63615d726d75677072612b0461706d71037a33330561706b6d7105647a6b6d7104726b696708646b7067646d7a2d066d726770632d05226d72702d07616a706d6f672d0876706b66676c762d046f716b670674676c666d7006456d6d656e670568716d6c7204606d667b14656776476e676f676c7671407b5663654c636f67046a676366067161706b7276015d0961636e6e606361693f037170610b70676f6d7467416a6b6e660b637272676c66416a6b6e660e766d406b6c63707b5176706b6c650c64706d6f416a6370416d66670d766d576b6c763130437070637b0a616a6370416d66674376056b6c7631300a36303b363b3435303b37026f7a04646b7a6912676c61707b7276576b6c763130437070637b12666761707b7276576b6c763130437070637b0a7776643a476c616d66670e5c595e7a32322f5e7a35645f2826104f636e646d706f6766227176706b6c65157776643a4667616d6667516a6d70765176706b6c651f576c646b6c6b716a6766225756442f3a226d617667762271677377676c616729416a63706361766770226d7776716b66672274636e6b6622576c6b616d66672270636c65673822327a15406366225756442f3a22676c616d666b6c6522327a147776643a4667616d66674e6d6c655176706b6c650a7776643a4667616d66670e5c595e7a32322f5e7a64645f282606717760717670057a7a76676307666761707b72760e6063716734365176636c666370664046696672656a3658497153403a322d4f64747531345a4b33503037295557436e476b354c4e606d735b564d5277786f4468486c707b7a3b4a5445616351764167106063716734365d616a63704b6c66677a40434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b292d146063716734365176636c666370664667616d6667096063716734365d616a066034365d313208656776526370636f08726370636f57706e013d026d6c036d64640971677651756b76616a0e5d726370636f51756b76616a4d6c0f5d607b7667665d726370636f5d71751265677651756b76616a44706d6f4163616a670f666776676176436c6d6f636e6b67710a666b70676176516b656c0a616d6c716b7176676c760671756b76616a03666d6f046c6d666707726a636c766d6f046a6d6d690b76677176446763767770670e637171676f606e67506771776e760469677b710b7166606f5d717663606e67047166606f107166606f5d717663606e675d726d6c7b076567765263766a222a6a767672385e2d5e2d7e6a76767271385e2d5e2d7e5e2d5e2d2b3d595c5e2d5f2808656776537767707b0e593d5f2a5e75293f2c28243d2b280124076d6068516d7076097176706b6c656b647b02797f04716d70760868716d6c516d7076076b71437070637b036f637206706766776167076d6068305176701261636c7463715d646b6c65677072706b6c7605756b66766a066a676b656a760230660a3336727a227167706b6404646d6c7608646b6e6e56677a7604c09f9a8e138e22c0acbf0a716a63666d75406e77700b716a6d754d64647167765a046e6b6f6709716a6d75416d6e6d7003637061067176706d69670965677641636c7463710a313531373b303a37373b0f416d6c646b65477a616772766b6d6c076f677171636567116a6371516771716b6d6c51766d706365670f6a63714e6d61636e51766d706365670c6a63714b6c66677a676646400c65677643606b6e6b766b67710d6567765067716d6e77766b6d6c0671617067676c0a616d6e6d70466772766a126567764374636b6e5067716d6e77766b6d6c0a6374636b6e556b66766a0b6374636b6e4a676b656a760e6567764063767667707b4b6c646d0a6567764063767667707b04766a676c08616a6370656b6c650c616a6370656b6c65566b6f670f666b71616a6370656b6c65566b6f67056e6774676e0c656776566d77616a4b6c646d0e6f637a566d77616a526d6b6c76710b6170676376674774676c760a566d77616a4774676c760c6d6c766d77616a71766370760b656776566b6f67786d6c670771677646637667087167764f6d6c766a11656776566b6f67786d6c674d6464716776036f6b6c08656776446d6c7671096f6d6c6d71726361670a71636c712f7167706b64057167706b64047172636c0d6f6f6f6f6f6f6f6f6f6f6e6e6b096b6c6c67704a564f4e0571767b6e67043530727a08646d6c76516b78670a646d6c7644636f6b6e7b0b6d6464716776556b66766a0c6d64647167764a676b656a760c5670676077616a6776224f5109556b6c65666b6c657107517b6e6463676c085167656d6722574b0a416d6c7176636c766b630b516b6f51776c2f477a7640084f5622477a7670630545776e6b6f0a4e67676e6375636667670556776c6563064f676b707b6d0654706b6c666309416d70666b63575241094372637063686b7663074b706b715752410852636e63766b6c6d0a416d6e6d6c6c63224f5608526e637b606b6e6e08486d6967706f636c09526370616a6f676c760a4f51224d77766e6d6d690956752241676c224f56064d52564b4f4306447776777063064354474c4b500c43706b636e224a67607067750a5163746d7b67224e47560941637176676e6e63700a4f5b504b43462252504d012e0e656776517b6c76637a4770706d701041706763766722556760516d616967760f6567764c63766b74674e676c65766a086567765076614b720b746b746d60706d757167701150564152676770416d6c6c6761766b6d6c146f6d7850564152676770416d6c6c6761766b6d6c17756760696b7650564152676770416d6c6c6761766b6d6c1c7176776c387176776c2c6e2c656d6d656e672c616d6f38333b3132300477706e710a6b6167516770746770713e2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b355c2a333b305e2c33343a5e2c7e33343b5e2c3037365e2c7e33325e2c7e3335305e2c2a3359342f3b5f7e305e667e315932335f2b2b1161706763766746637663416a636c6c676e0b6170676376674d64646770137167764e6d61636e46677161706b72766b6d6c0961636c666b6663766704677a67610e6d6c6b616761636c666b666376670477776b66207a7a7a7a7a7a7a7a7a7a7a7a367a7a7a7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a04597a7b5f017a0d616a676169416e6b676c764b660b656776416e6b676c764b66057676616b660d676c61707b7276516761466b6640434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b2f2c0e637171676f606e67526370636f710172017007646d704763616a025c5c01340c647252706d646b6e6757706e033d733f087067765d616d66670264720e5d607b7667665d7167615d666b660c5d7063755d7167615d666b660776765d71616b660366647203636b66016c0164097176637076566b6f6701760963606b6e6b766b67710a766b6f677176636f7233136a63706675637067416d6c61777070676c617b0c6667746b61674f676f6d707b086e636c65776365670a7067716d6e77766b6d6c0f6374636b6e5067716d6e77766b6d6c0971617067676c566d720a71617067676c4e676476106667746b6167526b7a676e5063766b6d0a72706d66776176517760076063767667707b09766d77616a4b6c646d08766b6f67786d6c670a766b6f677176636f7230076572774b6c646d0b6871446d6c76714e6b71760b726e77656b6c714e6b71760a766b6f677176636f72310a67746770416d6d696b67016f0b717b6c76637a4770706d700c6c63766b74674e676c65766a057076614b52096472546770716b6d6c0b5d5d746770716b6d6c5d5d08616e6b676c764b660a766b6f677176636f72360b677a76676c66446b676e6603636e6e107176637076516b6f726b646b67665760106366664774676c764e6b7176676c677009636666566d4e6b71760671726e6b61670166017b136a636c666e6749677b606d6370664774676c7606636e7649677b076176706e49677b076f67766349677b08716a6b647649677b036c6d75136a636c666e67526d716b766b6d6c4774676c760e616a636c656766566d77616a677109766d77616a6f6d746707766d77616a6771023b3007616e6b676c765a07616e6b676c765b106a636c666e67416e6b61694774676c760a766d77616a71766370760861636e614f67636c1561636e615176636c666370664667746b63766b6d6c04717370760961636e61517267676604322c323315656776516b6f726e6b646b67665760506771776e7603322c3702323209656776566771764b660b5d5d63615d766771766b660f65676c6770637667566771764e6d6501600c656776516b656c63767770670377706e2c6c6d6c6167226f77717622606722636c226d606867617622756b766a22632277706e2272706d726770767b230b666d6f4c6d7654636e6b660872706d766d616d6e043232323208323232323232333302333207646d707067636e056667607765056c6d6c61670b606d667b54636e307176700a606d667b5d6a63716a3f05737767707b066371716b656c097263766a6c636f673f0976765d7567606b663f062477776b663f086c6d6c61675176700a36303b363b3435303b34096467546770716b6d6c033232320b7277716a546770716b6d6c01280a65677654636e77672633106c63746b6563766d70516b656c636e710b637272416d66674c636f67076372724c636f670772706d6677617608617277416e637171056d716172770974676c666d705177600a666d4c6d76567063616907746b60706376670b61706766676c766b636e710771766d706365671b706773776771764f67666b6349677b517b7176676f43616167717109606e7767766d6d766a0d756b6c666d75516b656c636e71054b6f6365670771617067676c5a0771617067676c5b0f6b71516761777067416d6c76677a7607766d6d6e6063700b6e6d6163766b6d6c6063700d4361766b74675a4d606867617608677a7667706c636e0b726d71764f6771716365671b756760696b7650677377677176436c6b6f63766b6d6c4470636f670d406e7767766d6d766a57574b46086c677671616372670f666d61776f676c76516b656c636e710c616a637063617667705167760a616d6f7263764f6d6667066e637b677071066b6f636567710e656776556760656e41636c74637112677a7267706b6f676c76636e2f756760656e0d6f637a436c6b716d76706d727b1e475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b6125554740494b565d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b61224f4d585d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b611e4f435a5d56475a565750475d4f435a5d434c4b514d56504d525b5d475a560c756760656e516b656c636e7105554740454e16656776517772726d70766766477a76676c716b6d6c7113717772726d70766766477a76676c716b6d6c7114656776416d6c76677a76437676706b607776677109636c766b636e6b637109404e57475d404b565108606e7767406b76710a464752564a5d404b565109666772766a406b76710a455047474c5d404b565109657067676c406b7671204f435a5d414d4f404b4c47465d56475a565750475d4b4f4345475d574c4b56511c6f637a416d6f606b6c676656677a767770674b6f636567576c6b7671194f435a5d415740475d4f43525d56475a565750475d514b5847156f637a417760674f637256677a76777067516b78671c4f435a5d445043454f474c565d574c4b444d504f5d544741564d5051196f637a447063656f676c76576c6b646d706f546761766d7071154f435a5d50474c4647504057444447505d514b5847136f637a50676c666770607764646770516b7867174f435a5d56475a565750475d4b4f4345475d574c4b5651146f637a56677a767770674b6f636567576c6b7671104f435a5d56475a565750475d514b58470e6f637a56677a76777067516b7867134f435a5d5443505b4b4c455d544741564d5051116f637a5463707b6b6c65546761766d7071124f435a5d54475056475a5d435656504b4051106f637a54677076677a437676706b60711e4f435a5d54475056475a5d56475a565750475d4b4f4345475d574c4b56511a6f637a54677076677a56677a767770674b6f636567576c6b76711a4f435a5d54475056475a5d574c4b444d504f5d544741564d5051176f637a54677076677a576c6b646d706f546761766d707118514a43464b4c455d4e434c45574345475d544750514b4d4c16716a63666b6c654e636c6577636567546770716b6d6c0c5156474c414b4e5d404b56510b7176676c616b6e406b767107544750514b4d4c066563766a6770096c63746b6563766d7006756b6c666d7503657277075147414b4c444d0a6567765167614b6c646d09766b6f677176636f720d6b71476c63606e67665263766a145d676c63606e675263766a4e6b7176506765677a0c6b6c766770616772765a4a500e5a4f4e4a7676725067737767717610716776506773776771764a67636667700471676c66106d746770706b66674f6b6f67567b72670f5d63615d6b6c766770616772766766055d71676c66155d607b7667665d6b6c766770616772765d6e6b71760464776c6109637065776f676c76710e5c616d6c76676c762f767b72672601390e5d607b7667665d616d6c76676c76115d6d746770706b66674f6b6f67567b72670d5d607b7667665d6f67766a6d660a5d607b7667665d77706e076d6c63606d7076066d6c6e6d6366096d6c6e6d6366676c660b6d6c6e6d636671766370760a6d6c72706d6570677171096d6c766b6f676d77760b5d716b656c63767770673f0b5d607b7667665d606d667b126d6c706763667b7176637667616a636c65670c706771726d6c7167567b726707766b6f676d77760677726e6d636604524d5156216372726e6b6163766b6d6c2d7a2f7575752f646d706f2f77706e676c616d666766106372726e6b6163766b6d6c2d68716d6c04716b656c0371666b0d7167614b6c646d4a67636667700e6b6c76677061677276446776616a0975706372446776616a03454756066f67766a6d660b766d57727267704163716705616e6d6c670476677a76076a676366677071165d5d63615d6b6c7667706167727667665d646776616a05646776616a0d717772726d707671446776616a145d656776446776616a416d6c76676c76567b72670c616d6c76676c762f767b72670b7772666376674c6d6c61670572637071670f60776b6e664c677550677377677176037167760870676467707067700e7067646770706770526d6e6b617b046f6d6667056163616a67087067666b70676176096b6c766765706b767b0e656776506775706b76676657706e105d77706e506775706b766750776e67710b706775706b766757706e22084d504b454b4c38220b08504755504b56474638220b6e6371764b6c66677a4d640125032730350860776b6e6657706e0c245d716b656c63767770673f0c3d5d716b656c63767770673f096b6c76677061677276196b714b6c7176636c61674d64407b76676643617063756e67700d407b76676643617063756e6770076d72766b6d6c71046b6c6b760e676c63606e675263766a4e6b71760f77706e506775706b766750776e6771045d6664720f74636e6b666376674d72766b6d6c711e6d72766b6d6c22636b662a4b6c76676567702b226b71226c676766676623276d72766b6d6c22676c63606e675263766a4e6b71762a437070637b2b226b71226c6767666766231065676c5263766a4e6b7176506765677a1265676c57706e506775706b7667506765677a0a656776506764677067700c5d5d63615d70676467706770106667636e506764677067704163616a670a7067646770677049677b0a5d5d63615d606e636c692a41636c6c6d7622616d6c7467707622776c6667646b6c6766226d70226c776e6e22766d226d60686761760e6a63714d756c52706d726770767b0574636e77670875706b7663606e670c616d6c646b65777063606e671472706d726770767b4b71476c776f677063606e670e766d4e6d61636e675176706b6c650774636e77674d640d6b7152706d766d767b72674d64204d60686761762c69677b712261636e6e6766226d6c226c6d6c2f6d606867617606302c33332c320640365834756d0c5a2f4f717166692f4b6c646d03606d67296a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d6567764b6c646d236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d72236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d7605776057706e0a3034373636313735343b02373302363a03276122022f3c0d616d6e6d703821603333376630096f6d7771676f6d74670769677b666d756c096f6d777167666d756c0232300232330a5d5d67714f6d66776e67", + + [, , + void 0, void 0, "undefined" != typeof define ? define : void 0, "undefined" != typeof Object ? Object : void 0, void 0, "undefined" != typeof TypeError ? TypeError : void 0, "undefined" != typeof document ? document : void 0, "undefined" != typeof InstallTrigger ? InstallTrigger : void 0, + "undefined" != typeof safari ? safari : void 0, "undefined" != typeof Date ? Date : void 0, "undefined" != typeof Math ? Math : void 0, + "undefined" != typeof navigator ? navigator : void 0, "undefined" != typeof location ? location : void 0, + "undefined" != typeof history ? history : void 0, + "undefined" != typeof Image ? Image : void 0, + "undefined" != typeof console ? console : void 0, + "undefined" != typeof PluginArray ? PluginArray : void 0, "undefined" != typeof indexedDB ? indexedDB : void 0, "undefined" != typeof DOMException ? DOMException : void 0, "undefined" != typeof parseInt ? parseInt : void 0, "undefined" != typeof String ? String : void 0, "undefined" != typeof Array ? Array : void 0, "undefined" != typeof Error ? Error : void 0, "undefined" != typeof JSON ? JSON : void 0, "undefined" != typeof Promise ? Promise : void 0, "undefined" != typeof WebSocket ? WebSocket : void 0, "undefined" != typeof eval ? eval : void 0, "undefined" != typeof setTimeout ? setTimeout : void 0, "undefined" != typeof encodeURIComponent ? encodeURIComponent : void 0, "undefined" != typeof encodeURI ? encodeURI : void 0, "undefined" != typeof Request ? Request : void 0, "undefined" != typeof Headers ? Headers : void 0, "undefined" != typeof decodeURIComponent ? decodeURIComponent : void 0, "undefined" != typeof RegExp ? RegExp : void 0]); + + + +window.byted_acrawler.init({ + aid: 99999999, + dfp: 0 +}); + +function get_ac_signature(__ac_nonce){ + var __ac_signature = window.byted_acrawler.sign("", __ac_nonce) + return __ac_signature +} + +// console.log(get_ac_signature("0654cae52001c32a2ff83")); + +module.exports = { + get_ac_signature +} \ No newline at end of file diff --git a/hnw/hn.js b/hnw/hn.js new file mode 100644 index 0000000..29ce954 --- /dev/null +++ b/hnw/hn.js @@ -0,0 +1,267 @@ +var w = 4294967296; // 先固定 +var M = r2(0,0,false); + + +function mul_(v0, v1, v2, v3){ + let i32_v0 = new Int32Array(8); + i32_v0[0] = v0; + let i64_v0 = new BigInt64Array(i32_v0.buffer)[0]; + // console.log(i64_v0) + let i32_v1 = new Int32Array(8); + i32_v1[0] = v1; + let i64_v1 = new BigInt64Array(i32_v1.buffer)[0]; + + + let i32_v2 = new Int32Array(8); + i32_v2[0] = v2; + let i64_v2 = new BigInt64Array(i32_v2.buffer)[0]; + + + let i32_v3 = new Int32Array(8); + i32_v3[0] = v3; + let i64_v3 = new BigInt64Array(i32_v3.buffer)[0]; + + let i64_const = 32n; + + // shl、or、mul操作 + let tmp = (i64_v0 | (i64_v1 << i64_const)) * (i64_v2 | (i64_v3 << i64_const)); + + // console.log(Number(tmp), tmp) + // global0 shr_s + let get_length = Number(tmp >> i64_const); + + let res = Number(tmp) >> 32; + + // console.log(res, get_length); + return {mul: res, get_length: get_length} + +} + + + +function div_u_(v0, v1, v2, v3){ + let i32_v0 = new Int32Array(8); + i32_v0[0] = v0; + let i64_v0 = new BigInt64Array(i32_v0.buffer)[0]; + // console.log(i64_v0) + let i32_v1 = new Int32Array(8); + i32_v1[0] = v1; + let i64_v1 = new BigInt64Array(i32_v1.buffer)[0]; + // console.log(i64_v1) + + let i32_v2 = new Int32Array(8); + i32_v2[0] = v2; + let i64_v2 = new BigInt64Array(i32_v2.buffer)[0]; + + + let i32_v3 = new Int32Array(8); + i32_v3[0] = v3; + let i64_v3 = new BigInt64Array(i32_v3.buffer)[0]; + + let i64_const = 32n; + // let u32_max = 0xFFFFFFFF; + + // shl、or、div操作 + let tmp = ((i64_v0 | (i64_v1 << i64_const)) / (i64_v2 | (i64_v3 << i64_const))) + + // console.log(Number(tmp)) + // global0 shr_s + let get_length = Number(tmp >> i64_const); + + let res = Number(tmp) >> 32; + + // console.log(res, get_length); + return {div_u: res, get_length: get_length} + +} + + + +function randomInt (e, t) { + return Math.floor(Math.random() * (t - e + 1) + e) +} + +function o(t) { + return !0 === (t && t.__isLong__) +} + +function m(t, e) { + return "number" == typeof t ? l(t, e) : "string" == typeof t ? y(t, e) : d(t.low, t.high, "boolean" == typeof e ? e : t.unsigned) +} + + +function toUnsigned(obj) { + return obj.unsigned ? obj : d(obj.low, obj.high, !0) +} + +function isZero(obj) { + return 0 === obj.high && 0 === obj.low +} + + +function r2(t, e, n) { + return {low:0 | t, high:0 | e, unsigned:!!n} +} + + +function d(t, e, n) { + return r2(t,e,n) +} + +function eq(t, obj) { + return o(t) || (t = m(t)), + (obj.unsigned === t.unsigned || obj.high >>> 31 != 1 || t.high >>> 31 != 1) && (obj.high === t.high && obj.low === t.low) +} + +function not(obj){ + return d(~obj.low, ~obj.high, obj.unsigned); +} + +function neg(obj) { + let k = { + "low": 1, + "high": 0, + "unsigned": false +} + return add(k, not(obj)); +} + + + +function l(t, e) { + return t < 0 ? l(-t, e).neg() : d(t % w | 0, t / w | 0, e) +} + +function isNegative(obj){ + return !obj.unsigned && obj.high < 0 +} + + +function isOdd(obj) { + return 1 == (1 & obj.low) + } + + +function mul(t, obj) { + if (isZero(obj)) + return M; + if (o(t) || (t = m(t))){ + let mul$ = mul_(obj.low, obj.high, t.low, t.high); + return d(mul$["mul"], mul$["get_length"], obj.unsigned); + } + if (isZero(t)) + return M; + if (eq(j, obj)) + return t.isOdd() ? j : M; + if (eq(j, t)) + return isOdd(obj) ? j : M; + if (isNegative(obj)) + return t.isNegative() ? this.neg().mul(t.neg()) : this.neg().mul(t).neg(); + if (t.isNegative()) + return this.mul(t.neg()).neg(); + if (this.lt(x) && t.lt(x)) + return l(this.toNumber() * t.toNumber(), this.unsigned); + var e = obj.high >>> 16 + , r = 65535 & obj.high + , f = obj.low >>> 16 + , c = 65535 & obj.low + , h = t.high >>> 16 + , v = 65535 & t.high + , y = t.low >>> 16 + , w = 65535 & t.low + , _ = 0 + , S = 0 + , E = 0 + , k = 0; + return E += (k += c * w) >>> 16, + S += (E += f * w) >>> 16, + E &= 65535, + S += (E += c * y) >>> 16, + _ += (S += r * w) >>> 16, + S &= 65535, + _ += (S += f * y) >>> 16, + S &= 65535, + _ += (S += c * v) >>> 16, + _ += e * w + r * y + f * v + c * h, + d((E &= 65535) << 16 | (k &= 65535), (_ &= 65535) << 16 | (S &= 65535), obj.unsigned) + } + + +function div(t, o){ + let div_ = div_u_(o.low, o.high, t.low, t.high); + return o.unsigned || -2147483648 !== o.high || -1 !== t.low || -1 !== t.high ? d(div_["div_u"], div_["get_length"], o.unsigned) : o; +} + + +function sub(t, obj) { + return o(t) || (t = m(t)), + add(neg(t), obj) +} + +function toInt(obj) { + return obj.unsigned ? obj.low >>> 0 : obj.low +} + + +function toS(t, obj){ + for (var r = l(Math.pow(t, 6), obj.unsigned), o = obj, f = ""; ; ) { + var c = div(r, o) + + h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t), + h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t); + if (isZero(o = c)) + return h + f; + for (; h.length < 6; ) + h = "0" + h; + f = "" + h + f + } +} + + +function add(t, obj) { + o(t) || (t = m(t)); + var e = obj.high >>> 16 + , n = 65535 & obj.high + , r = obj.low >>> 16 + , f = 65535 & obj.low + , c = t.high >>> 16 + , h = 65535 & t.high + , l = t.low >>> 16 + , v = 0 + , y = 0 + , w = 0 + , _ = 0; + return w += (_ += f + (65535 & t.low)) >>> 16, + y += (w += r + l) >>> 16, + v += (y += n + h) >>> 16, + v += e + c, + d((w &= 65535) << 16 | (_ &= 65535), (v &= 65535) << 16 | (y &= 65535), obj.unsigned) +} + +function y(t, e, n) { + var p; + for (var r = l(Math.pow(n, 8)), o = M, i = 0; i < t.length; i += 8) { + var f = Math.min(8, t.length - i) + , c = parseInt(t.substring(i, i + f), n); + if (f < 8) { + var h = l(Math.pow(n, f)); + o = add(l(c), mul(h, o)); + } else{ + o = add(l(c), mul(r, o)); + } + + } + return o.unsigned = e, + o +} + +function getS(key){ + return toS(10, toUnsigned(y(key, !0, 16))); +} + + +module.exports = { + getS +} + + diff --git a/kuaishou/ks_slid.js b/kuaishou/ks_slid.js new file mode 100644 index 0000000..c0061d4 --- /dev/null +++ b/kuaishou/ks_slid.js @@ -0,0 +1,14017 @@ +window = global; + +// 匿名函数主动加载 Jose +(function(e){ + + var c = {}; + + function r(n) { + + window.code += "\"" + n + "\":" + e[n] + ","; + // console.log("当前调用数组-> ", n); + + + if (c[n]){ + return c[n].exports; + } + var t = c[n] = { + i: n, + l: !1, + exports: {} + }; + return e[n].call(t.exports, t, t.exports, r), + t.l = !0, + t.exports + } + + r("088e"); + + +})({ + "2e21":function(t, e, n) { + (function(t) { + !function(t, r) { + r(e, n("2866")) + }(0, (function(e, n) { + "use strict"; + function r(t) { + return t && "object" == typeof t && "default"in t ? t : { + default: t + } + } + var o, i, a, s = r(n), c = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof t ? t : "undefined" != typeof self ? self : {}; + !function() { + void 0 === c.window && (c.window = { + addEventListener: function() {}, + removeEventListener: function() {}, + setTimeout: function() {}, + setInterval: function() {}, + _WEBLOGGER_MOCKED_WINDOW_: !0, + global: c + }), + void 0 === c.document && (c.document = c.window.document || { + cookie: "", + addEventListener: function() {}, + removeEventListener: function() {}, + querySelector: function() {}, + querySelectorAll: function() {} + }, + void 0 === c.window.document && (c.window.document = c.document)), + void 0 === c.navigator && (c.navigator = c.window.navigator || { + userAgent: "" + }, + void 0 === c.window.navigator && (c.window.navigator = c.navigator)), + void 0 === c.screen && (c.screen = c.window.screen || {}, + void 0 === c.window.screen && (c.window.screen = c.screen)), + void 0 === c.history && (c.history = c.window.history || {}, + void 0 === c.window.history && (c.window.history = c.history)), + void 0 === c.location && (c.location = c.window.location || { + hostname: "", + search: "", + href: "", + origin: "" + }, + void 0 === c.window.location && (c.window.location = c.location)); + try { + void 0 === c.localStorage && (c.localStorage = c.window.localStorage || { + getItem: function() {}, + setItem: function() {} + }, + void 0 === c.window.localStorage && (c.window.localStorage = c.localStorage)) + } catch (e) {} + }(), + Object.defineProperty || (Object.defineProperty = function(t, e, n) { + t[e] = "[object Object]" === Object.prototype.toString.call(n) && n.hasOwnProperty("value") ? n.value : n + } + ), + Object.assign || Object.defineProperty(Object, "assign", { + value: function(t) { + if (null === t) + throw new TypeError("Cannot convert undefined or null to object"); + for (var e = Object(t), n = 1; n < arguments.length; n++) { + var r = arguments[n]; + if (null !== r) + for (var o in r) + Object.prototype.hasOwnProperty.call(r, o) && (e[o] = r[o]) + } + return e + }, + writable: !0, + configurable: !0 + }), + Function.prototype.bind || (Function.prototype.bind = function(t) { + if ("function" != typeof this) + throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); + var e = Array.prototype.slice.call(arguments, 1) + , n = this + , r = function() {} + , o = function() { + var o = this instanceof r ? this : t; + return n.apply(o, e.concat(Array.prototype.slice.call(arguments))) + }; + return this.prototype && (r.prototype = this.prototype), + o.prototype = new r, + o + } + ), + Array.prototype.indexOf || (Array.prototype.indexOf = function(t, e) { + var n; + if (null == this) + throw new TypeError('"this" is null or not defined'); + var r = Object(this) + , o = r.length >>> 0; + if (0 === o) + return -1; + var i = +e || 0; + if (Math.abs(i) === 1 / 0 && (i = 0), + i >= o) + return -1; + for (n = Math.max(i >= 0 ? i : o - Math.abs(i), 0); n < o; ) { + if (n in r && r[n] === t) + return n; + n++ + } + return -1 + } + ), + Object.keys || (Object.keys = (o = Object.prototype.hasOwnProperty, + i = !{ + toString: null + }.propertyIsEnumerable("toString"), + a = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], + function(t) { + if ("object" != typeof t && "function" != typeof t || null === t) + throw new TypeError("Object.keys called on non-object"); + var e = []; + for (var n in t) + o.call(t, n) && e.push(n); + if (i) + for (var r = 0, s = a; r < s.length; r++) { + var c = s[r]; + o.call(t, c) && e.push(c) + } + return e + } + )), + Array.prototype.forEach || (Array.prototype.forEach = function(t, e) { + var n, r; + if (null == this) + throw new TypeError(" this is null or not defined"); + var o = Object(this) + , i = o.length >>> 0; + if ("function" != typeof t) + throw new TypeError(t + " is not a function"); + for (arguments.length > 1 && (n = e), + r = 0; r < i; ) { + var a = void 0; + r in o && (a = o[r], + t.call(n, a, r, o)), + r++ + } + } + ); + var u = function(t, e) { + return (u = Object.setPrototypeOf || { + __proto__: [] + }instanceof Array && function(t, e) { + t.__proto__ = e + } + || function(t, e) { + for (var n in e) + e.hasOwnProperty(n) && (t[n] = e[n]) + } + )(t, e) + }; + function l(t, e) { + function n() { + this.constructor = t + } + u(t, e), + t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, + new n) + } + var d = function() { + return (d = Object.assign || function(t) { + for (var e, n = 1, r = arguments.length; n < r; n++) + for (var o in e = arguments[n]) + Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]); + return t + } + ).apply(this, arguments) + }; + function p(t, e) { + var n = {}; + for (var r in t) + Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]); + if (null != t && "function" == typeof Object.getOwnPropertySymbols) { + var o = 0; + for (r = Object.getOwnPropertySymbols(t); o < r.length; o++) + e.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[o]) && (n[r[o]] = t[r[o]]) + } + return n + } + function h(t, e, n, r) { + return new (n || (n = Promise))((function(o, i) { + function a(t) { + try { + c(r.next(t)) + } catch (t) { + i(t) + } + } + function s(t) { + try { + c(r.throw(t)) + } catch (t) { + i(t) + } + } + function c(t) { + var e; + t.done ? o(t.value) : (e = t.value, + e instanceof n ? e : new n((function(t) { + t(e) + } + ))).then(a, s) + } + c((r = r.apply(t, e || [])).next()) + } + )) + } + function m(t, e) { + var n, r, o, i, a = { + label: 0, + sent: function() { + if (1 & o[0]) + throw o[1]; + return o[1] + }, + trys: [], + ops: [] + }; + return i = { + next: s(0), + throw: s(1), + return: s(2) + }, + "function" == typeof Symbol && (i[Symbol.iterator] = function() { + return this + } + ), + i; + function s(i) { + return function(s) { + return function(i) { + if (n) + throw new TypeError("Generator is already executing."); + for (; a; ) + try { + if (n = 1, + r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), + 0) : r.next) && !(o = o.call(r, i[1])).done) + return o; + switch (r = 0, + o && (i = [2 & i[0], o.value]), + i[0]) { + case 0: + case 1: + o = i; + break; + case 4: + return a.label++, + { + value: i[1], + done: !1 + }; + case 5: + a.label++, + r = i[1], + i = [0]; + continue; + case 7: + i = a.ops.pop(), + a.trys.pop(); + continue; + default: + if (o = a.trys, + !((o = o.length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) { + a = 0; + continue + } + if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { + a.label = i[1]; + break + } + if (6 === i[0] && a.label < o[1]) { + a.label = o[1], + o = i; + break + } + if (o && a.label < o[2]) { + a.label = o[2], + a.ops.push(i); + break + } + o[2] && a.ops.pop(), + a.trys.pop(); + continue + } + i = e.call(t, a) + } catch (t) { + i = [6, t], + r = 0 + } finally { + n = o = 0 + } + if (5 & i[0]) + throw i[1]; + return { + value: i[0] ? i[1] : void 0, + done: !0 + } + }([i, s]) + } + } + } + function f() { + for (var t = 0, e = 0, n = arguments.length; e < n; e++) + t += arguments[e].length; + var r = Array(t) + , o = 0; + for (e = 0; e < n; e++) + for (var i = arguments[e], a = 0, s = i.length; a < s; a++, + o++) + r[o] = i[a]; + return r + } + var g, y, v = { + unknown: 0, + none: 1, + wifi: 2, + "4g": 3, + "3g": 4, + "2g": 5, + "5g": 7, + "slow-2g": 5 + }; + !function(t) { + t.CLICK = "CLICK", + t.DOUBLE_CLICK = "DOUBLE_CLICK", + t.TRIPLE_CLICK = "TRIPLE_CLICK", + t.LONG_PRESS = "LONG_PRESS", + t.PULL = "PULL", + t.DRAG = "DRAG", + t.SCALE = "SCALE", + t.PULL_DOWN = "PULL_DOWN", + t.PULL_UP = "PULL_UP", + t.AUTO = "AUTO" + }(g || (g = {})), + function(t) { + t.PV = "PV", + t.SHOW = "SHOW", + t.VIDEO = "VIDEO", + t.CUSTOM = "CUSTOM", + t.RADAR = "RADAR" + }(y || (y = {})); + var b = { + sessionId: "", + appDevicePackageReady: !1, + identityPackageReady: !1 + } + , S = function() { + function t(t, e) { + switch (this.page = "", + this.identity = "", + e) { + case "web": + this.page_type = 2; + break; + case "native": + this.page_type = 1; + break; + case "mina": + this.page_type = 3; + break; + default: + this.page_type = 0 + } + this.update(t.page, t.params) + } + return t.prototype.update = function(t, e) { + void 0 === t && (t = ""), + t && t !== this.page && (this.page = t, + this.identity = this.generatePageId(t)), + e && (this.params = Object.assign(this.params || {}, e)) + } + , + t.prototype.toJSON = function() { + return { + page: this.page, + identity: this.identity, + page_type: this.page_type, + params: JSON.stringify(this.params) + } + } + , + t.prototype.generatePageId = function(t) { + return t + (new Date).getTime() + } + , + t + }() + , w = ["Kwai", "Kwai_Lite", "Kwai_Pro", "livemate", "ksthanos", "ksNebula", "ksnebula", "kwaiying", "pearl", "kinder", "m2u", "LOLita", "XFunCore", "ACVideoCore", "ZIKZAK"].concat(["UVideo", "Vstatus", "Kwaigo", "MvMaster"]); + function L() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.error; + return n && n.call.apply(n, f([console], t)) + } catch (t) { + return + } + } + function k(t, e, n, r) { + return "attachEvent"in t ? t.attachEvent("on" + e, n) : t.addEventListener(e, n, r) + } + function x(t, e, n, r) { + return "attachEvent"in t ? t.detachEvent("on" + e, n) : t.removeEventListener(e, n, r) + } + function T(t, e, n) { + if (void 0 === n && (n = " "), + (e -= t.length) <= 0) + return t; + for (var r = ""; e; ) + 1 & e && (r += n), + e >>= 1, + n += n; + return r + t + } + var N = function() { + var t = null; + return function() { + try { + if (null === t) + for (var e = window.navigator.userAgent.toLowerCase(), n = 0; n < w.length; n++) + if (e.indexOf(w[n].toLowerCase()) > -1) + return t = !0 + } catch (t) { + return !1 + } + } + }(); + function _(t) { + for (var e = {}, n = 0, r = t.split("&"); n < r.length; n++) { + var o = r[n].split("=") + , i = o[0] + , a = o[1]; + i in e ? e[i]instanceof Array ? e[i].push(a) : e[i] = [e[i], a] : e[i] = a + } + return e + } + function P(t) { + void 0 === t && (t = location.href); + var e = t.lastIndexOf("?"); + return -1 === e ? { + page: t + } : { + page: t.slice(0, e), + params: _(t.slice(e + 1)) + } + } + var G = function(t) { + return t && "object" == typeof t && !Array.isArray(t) + }; + function Z(t) { + return !t || !/^(https?:)?\/\//.test(t) || (L("[error 108]", "\u8bf7\u6ce8\u610f\u5f53\u524d\u57cb\u70b9\u9875\u9762\u4fe1\u606f\u4e3a " + t + "\uff0c\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u4e0a\u62a5\u5931\u8d25\uff01"), + !1) + } + var E, C = (E = "", + function() { + if (E) + return E; + try { + var t = window.devicePixelRatio || 1 + , e = Math.floor(screen.width * t) + , n = Math.floor(screen.height * t); + return E = e + "x" + n + } catch (t) { + return "" + } + } + ), I = function() { + return !(!((null === window || void 0 === window ? void 0 : window.Worker) && (null === window || void 0 === window ? void 0 : window.Uint8Array) && window.URL) || function() { + var t, e, n = (null === (t = null === window || void 0 === window ? void 0 : window.navigator) || void 0 === t ? void 0 : t.userAgent) || "", r = /mobile|tablet|ip(ad|hone|od)|android|(windows phone)/i.test(n), o = "MacIntel" === (null === window || void 0 === window ? void 0 : window.navigator.platform) && (null === (e = null === window || void 0 === window ? void 0 : window.navigator) || void 0 === e ? void 0 : e.maxTouchPoints) > 1; + return r || o + }()) + }, K = function(t) { + try { + return Math.abs(Math.floor(t)) + } catch (n) { + return t + } + }, X = function() { + function t() { + this.events = {} + } + return t.prototype.on = function(t, e) { + e && "function" == typeof e && (this.events[t] = this.events[t] || [], + this.events[t].push(e)) + } + , + t.prototype.off = function(t, e) { + var n, r, o; + this.events[t] && (e && "function" == typeof e && (n = this.events[t], + r = e, + (o = n.indexOf(r)) > -1 && n.splice(o, 1)), + e || (this.events[t] = [])) + } + , + t.prototype.emit = function(t) { + for (var e = [], n = 1; n < arguments.length; n++) + e[n - 1] = arguments[n]; + this.events[t] && this.events[t].forEach((function(t) { + t.apply(void 0, e) + } + )) + } + , + t + }(), W = 0, M = function(t) { + function e(n, r) { + var o, i = t.call(this) || this; + return i.version = "3.9.48", + i.plugins = {}, + i.flush = function() { + i.logger.flush() + } + , + i.baseOption = d({}, r), + i.logConfig = (o = n, + d({ + env: "production", + proto: "v3", + timeout: 3e4, + wait: 1e3, + maxBatchLength: 50, + sampleRate: 1, + yoda: "undefined" != typeof window && window.yoda, + forbidV2HttpUrlPage: !0 + }, o || {})), + i.initUrlPackage(), + e.__instance || (e.__instance = i), + i + } + return l(e, t), + Object.defineProperty(e.prototype, "sessionId", { + get: function() { + return b.sessionId + }, + enumerable: !1, + configurable: !0 + }), + e.prototype.initUrlPackage = function() { + this.updateCurrentUrlPackage() + } + , + e.prototype.updateCurrentUrlPackage = function(t, e) { + if (void 0 === t && (t = {}), + void 0 === e && (e = "web"), + "object" == typeof t && t.page && this.currentUrlPackage && t.page === this.currentUrlPackage.page) + return this.currentUrlPackage.update(t.page, t.params); + this.currentUrlPackage = new S(t,e) + } + , + e.prototype.updateReferUrlPackage = function(t, e) { + void 0 === t && (t = this.currentUrlPackage), + void 0 === e && (e = "web"), + this.referUrlPackage = t instanceof S ? t : new S(t,e) + } + , + e.prototype.updateBase = function(t) { + this.updateCommonPackage(t) + } + , + e.prototype.updateCommonPackage = function(t) { + "object" == typeof t && this.commonPackage.update(t) + } + , + e.prototype.addPlugins = function() { + var t = this; + this.logConfig.plugins && this.logConfig.plugins.length && this.logConfig.plugins.forEach((function(e) { + "object" == typeof e && "function" == typeof e.apply && t.addPluginInstance(e) + } + )) + } + , + e.prototype.addPluginInstance = function(t) { + if (t) { + var e = t.key || t.constructor && t.constructor.key || "plugin_auto_key_" + W++; + "function" != typeof t.apply || t.weblog && t.weblog === this || t.apply(this), + this.plugins[e] = t + } + } + , + e.prototype.plug = function(t, e) { + if (this.plugins[t.key]) + return L("[code 301]", t.key + " \u63d2\u4ef6\u91cd\u590d\u52a0\u8f7d\uff01"); + this.addPluginInstance(new t(this,e)) + } + , + e.prototype.unplug = function(t) { + var e = this.plugins[t]; + e && (e.destroy(), + delete this.plugins[t]) + } + , + e.prototype.unplugAll = function() { + for (var t in this.plugins) + this.plugins[t] && this.unplug(t) + } + , + e.prototype.generateLog = function(t, e) { + return {} + } + , + e.prototype.send = function(t, e, n) { + void 0 === t && (t = g.CLICK); + var r = this.generateLog(t.toUpperCase(), e) + , o = "object" == typeof e && e.callback || void 0; + return "function" == typeof this.beforeSend && this.beforeSend(t, e, r), + this.logger.send(r, !!n, o) + } + , + e.prototype.collect = function(t, e) { + this.send(t, e) + } + , + e.prototype.sendImmediately = function(t, e) { + this.send(t, e, !0) + } + , + e.prototype.sendPackage = function(t, e) { + this.logger.sendPackage(t, e) + } + , + e.prototype.destroy = function() { + this.unplugAll() + } + , + e + }(X); + function O(t, e, n) { + var r = {}; + if (t.length > 0) + for (var o = e ? decodeURIComponent : function(t) { + return t + } + , i = t.split(/;\s/g), a = null, s = null, c = null, u = 0, l = i.length; u < l; u++) { + if (null !== (c = i[u].match(/([^=]+)=/i))) + try { + a = decodeURIComponent(c[1]), + s = o(i[u].substring(c[1].length + 1)) + } catch (t) {} + else + a = decodeURIComponent(i[u]), + s = ""; + null !== a && (r[a] = s) + } + return r + } + var U, R = {}; + function H(t, e, n) { + void 0 === e && (e = {}), + void 0 === n && (n = !1); + try { + if (!n && t in R) + return R[t]; + if (!(null === window || void 0 === window ? void 0 : window.document)) + return; + var r = document.cookie || ""; + return r === U ? R[t] : (U = r, + (R = O(r, !e.raw))[t]) + } catch (t) {} + } + function D(t, e, n) { + void 0 === n && (n = {}); + try { + document.cookie = function(t, e, n, r) { + void 0 === r && (r = {}); + var o = encodeURIComponent(t) + "=" + (n ? encodeURIComponent(e) : e) + , i = r.expires + , a = r.path || "/" + , s = r.domain || ""; + return i instanceof Date && (o += "; expires=" + i.toUTCString()), + "number" == typeof i && (o += "; max-age==" + i), + "" !== a && (o += "; path=" + a), + "" !== s && (o += "; domain=" + s), + !0 === r.secure && (o += "; secure"), + o + }(t, e, !n.raw, n), + R[t] = e + } catch (t) {} + } + var Y = { + getCookie: H, + setCookie: D, + parseCookieString: O + }; + function j() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(t) { + var e = 16 * Math.random() | 0; + return ("x" == t ? e : 3 & e | 8).toString(16) + } + )) + } + function V(t) { + if (void 0 === t && (t = "undefined" != typeof location ? location.hostname : ""), + !t) + return ""; + var e = t.split(".") + , n = e.length; + return n <= 2 ? "" : "." + e[n - 2] + "." + e[n - 1] + } + var z = ""; + function A() { + if (z) + return z; + try { + if (!(z = H("did") || H("_did"))) { + z = "web_" + function() { + for (var t = 1e9 * Math.random() >>> 0, e = [], n = 0; n < 7; n++) + e.push("0123456789ABCDEF".charAt(16 * Math.random())); + return t + e.join("") + }(); + var t = new Date; + t.setFullYear(t.getFullYear() + 1), + D("_did", z, { + expires: t, + domain: V(), + path: "/" + }) + } + return z + } catch (t) { + return "" + } + } + var J, F, B, Q = function(t) { + function e(e, n, r) { + var o = t.call(this, {}, n) || this; + if ("string" == typeof e) { + var i = P(e); + o.page = i.page, + o.params = i.params + } else + o.page = (e || {}).page || "", + o.params = (e || {}).params || void 0; + return o.identity = o.generatePageId(), + r && "string" == typeof e && o.init(e, r), + o + } + return l(e, t), + e.prototype.init = function(t, e) { + void 0 === e && (e = {}); + var n = function(t, e) { + var n = t.url + , r = t.page + , o = t.params + , i = t.pageId; + if (!r && "string" == typeof n) { + var a = P(n); + r = a.page, + o = a.params + } + if ("function" == typeof e) + try { + var s = e({ + url: n, + page: r, + params: o + }); + "string" == typeof s ? r = s : "object" == typeof s && (s.page && (r = s.page), + s.params && (o = s.params), + s.pageId && (i = s.pageId)) + } catch (t) {} + else if ("object" == typeof e) { + var c = ""; + for (var u in e) + if ((n || r || "").indexOf(u) > -1) { + c = e[u]; + break + } + c && (r = c) + } + return { + page: r, + params: o, + pageId: i + } + }({ + url: t, + page: this.page, + params: this.params + }, e) + , r = n.page + , o = n.params; + this.update(r, o) + } + , + e.prototype.attachUrl = function() { + if (this.params || (this.params = {}), + null === location || void 0 === location ? void 0 : location.href) { + this.params.origin_url = this.params.origin_url || (null === location || void 0 === location ? void 0 : location.href); + var t = P(location.href).page + , e = void 0 === t ? "" : t; + this.params.origin_pathname = e + } + } + , + e.prototype.getRealUrlPackage = function() { + var t = P(location.href) + , e = t.page + , n = t.params; + return { + page: e, + params: JSON.stringify(d({ + page_code: this.page, + url: location.href, + query: n + }, n)), + page_type: this.page_type, + identity: this.identity + } + } + , + e.prototype.generatePageId = function() { + return j() + } + , + e + }(S), q = function() { + function t(t) { + if (this.identity_package = { + device_id: void 0, + global_id: void 0, + user_id: void 0, + union_id: void 0, + open_id: void 0, + iu_id: void 0 + }, + this.app_package = { + product: void 0, + language: void 0, + platform: void 0, + container: "H5", + package_name: void 0, + product_name: void 0, + version_name: void 0, + channel: void 0, + version_code: void 0 + }, + this.experiment = void 0, + this.service_name = void 0, + this.safety_id = void 0, + this.sub_biz = void 0, + this.device_package = { + os_version: void 0, + model: void 0, + ua: void 0 + }, + this.need_encrypt = !1, + this.network_package = { + type: v.unknown + }, + this.h5_extra_attr = { + sdk_name: "webLogger", + sdk_version: "3.9.48", + sdk_bundle: "log.hybrid.js" + }, + this.global_attr = { + entry_tag: [] + }, + this.update(t), + this.app_package.version_name) { + var e = this.app_package.version_name.lastIndexOf("."); + this.app_package.version_code = +this.app_package.version_name.slice(e + 1) || 0 + } + this.app_package.version_name || (this.app_package.version_name = void 0), + this.app_package.version_code || (this.app_package.version_code = void 0) + } + return t.prototype.getH5ExtraAttr = function(t) { + return Object.assign({}, this.h5_extra_attr, t) + } + , + t.prototype.update = function(t) { + if ("object" == typeof t) { + !function(t, e) { + if (G(t) && G(e)) { + var n = function(t, e, n) { + G(t[n]) && G(e[n]) ? Object.assign(t[n], e[n]) : G(t[n]) || G(e[n]) || (t[n] = e[n]) + }; + for (var r in e) + if (t.hasOwnProperty(r)) + n(t, e, r); + else + for (var o in t) + G(t[o]) && t[o].hasOwnProperty(r) && n(t[o], e, r) + } + }(this, t); + var e = t.network_type; + e && v[e] && (this.network_package.type = v[e]) + } + } + , + t.prototype.updateGlobalAttr = function(t) { + Object.assign(this.global_attr || {}, t) + } + , + t.prototype.toJSON = function() { + this.identity_package.user_id || (this.identity_package.user_id = void 0); + var t = d(d({}, this), { + toJSON: function() { + return d(d({}, t), { + h5_extra_attr: JSON.stringify(t.h5_extra_attr), + global_attr: JSON.stringify(t.global_attr) + }) + } + }); + return t.global_attr = d({}, this.global_attr), + this.global_attr.entry_tag && this.global_attr.entry_tag.length ? t.global_attr.entry_tag = this.global_attr.entry_tag.slice() : delete t.global_attr.entry_tag, + Object.keys(this.global_attr).length || delete t.global_attr, + t + } + , + t + }(), $ = "https://data-track.corp.kuaishou.com", tt = $ + "/", et = "production", nt = "logger", rt = "logger-oversea", ot = "rest/wd/common/log/collect/", it = [et, "test", "development", nt, "oversea"], at = "https://logsdk.kwai-pro.com/", st = { + v2: "rest/kd/log/collect?_json=1&biz=", + v3: ot + "misc2", + radar: ot + "radar" + }, ct = { + v2: { + production: ["https://wlog.ksapisrv.com/", "https://wlog.gifshow.com/"][Math.round(Math.random())], + development: tt, + test: tt, + oversea: at + }, + v3: { + production: "https://log-sdk.ksapisrv.com/", + development: tt, + test: tt, + oversea: at + } + }, ut = function(t, e, n) { + return void 0 === t && (t = et), + void 0 === e && (e = !1), + void 0 === n && (n = "v3"), + -1 === it.indexOf(t) ? t + st[n] : e && ct.v3[t] ? ct.v3[t] + st.radar : ct[n][t] && st[n] ? ct[n][t] + st[n] : ct.v3.production + st.v3 + }, lt = function(t, e) { + if (!e) + return t; + try { + return /\?(.+?)$/.test(t) ? t.replace(/\?(.+?)$/, "?" + e + "&$1") : t + "?" + e + } catch (e) { + return t + } + }, dt = function() { + function t(t, e) { + var n = this; + this.asyncQueue = [], + this.throttleQueue = [], + this.errorQueue = [], + this.sendingQueue = {}, + this.url = "", + this.isV2 = !1, + this.isDebug = !1, + this.radarUrl = "", + this.drained = !1, + this.batchCount = 50, + this.sendingYield = null, + this.flush = function(t) { + n.sendLogs(n.throttleQueue.concat(n.asyncQueue), t), + n.throttleQueue = [], + n.asyncQueue = [] + } + , + this.drain = function() { + n.drained = !0, + n.flush(), + n.flushErrorLogs(), + setTimeout((function() { + n.drained = !1 + } + ), 1e3) + } + , + this.config = t, + this.config.maxBatchLength && this.config.maxBatchLength > 1 && (this.batchCount = Math.min(50, this.config.maxBatchLength)), + this.commonPackage = e, + this.isDebug = this.config.logger || "logger" === this.config.env, + this.isV2 = "v2" === this.config.proto, + this.updateUrls() + } + return t.prototype.sendData = function(t, e) { + return "function" == typeof this.config.sender ? this.config.sender(t, e) : this.baseSendData(t, e) + } + , + t.prototype.updateUrls = function() { + var t = this.config.env; + t && /^(https?:)?\/\//.test(t) ? this.url = t : this.url = ut(t), + this.formatUrl() + } + , + t.prototype.formatUrl = function() { + this.radarUrl || (this.radarUrl = this.url.replace(-1 !== this.url.indexOf(st.v2) ? st.v2 : st.v3, st.radar), + -1 !== this.radarUrl.indexOf(ct.v2.production) && this.radarUrl.replace(ct.v2.production, ct.v3.production)); + var t = this.commonPackage.app_package + , e = t.product_name + , n = t.product + , r = "v=3.9.48&kpn=" + (e || n); + this.url = lt(this.url, r), + this.radarUrl = lt(this.radarUrl, r) + } + , + t.prototype.getCommonPackageJSON = function() { + return this.commonPackage.toJSON() + } + , + t.prototype.send = function(t, e, n) { + if (void 0 === e && (e = !1), + n || this.drained) + return this.sendLogs([t], n); + e ? this.sendAsync(t, n) : this.sendThrottle(t) + } + , + t.prototype.sendAsync = function(t, e) { + return h(this, void 0, void 0, (function() { + return m(this, (function(e) { + switch (e.label) { + case 0: + return this.asyncQueue.push(t), + this.asyncQueue.length >= this.batchCount ? (this.flush(), + [2]) : this.sendingYield ? [4, this.sendingYield] : [3, 2]; + case 1: + e.sent(), + this.sendingYield = null, + e.label = 2; + case 2: + return e.trys.push([2, 4, , 5]), + [4, Promise.resolve()]; + case 3: + case 4: + return e.sent(), + [3, 5]; + case 5: + return this.asyncQueue.length ? (this.flush(), + [2]) : [2] + } + } + )) + } + )) + } + , + t.prototype.sendThrottle = function(t) { + var e = this; + this.throttleQueue.push(t), + this.throttleQueue.length >= this.batchCount ? this.flush() : (clearTimeout(this.batchWaitTimer), + this.batchWaitTimer = setTimeout((function() { + e.flush() + } + ), this.config.wait)) + } + , + t.prototype.sendLogs = function(t, e) { + var n = this; + if (!t || !t.length) + return "function" == typeof e && e(); + var r = this.buildLogPackage(t, this.url); + this.sendPackage(r, (function(t) { + t ? n.errHandler(r) : n.flushErrorLogs(), + "function" == typeof e && e(t) + } + )) + } + , + t.prototype.sendPackage = function(t, e) { + var n = this.config.timeout; + try { + this.sendData(d(d({}, t), { + isDebug: this.isDebug, + timeout: n + }), e) + } catch (t) { + "function" == typeof e && e(t) + } + } + , + t.prototype.buildLogPackage = function(t, e) { + return this.isV2 ? this.buildV2Package(t, e) : this.buildV3Package(t, e) + } + , + t.prototype.buildV2Package = function(t, e) { + return { + url: e, + data: { + log: { + event: t + } + } + } + } + , + t.prototype.buildV3Package = function(t, e, n) { + var r = this.getCommonPackageJSON(); + return n && Object.assign(r, n), + { + url: e, + data: { + common: r, + logs: t + } + } + } + , + t.prototype.errHandler = function(t) { + var e; + if (this.isV2) + this.errorQueue.unshift(t); + else { + var n = t.data; + if (n.logs.length) { + delete n.common.h5_extra_attr.http_seq_id, + delete n.common.h5_extra_attr.client_timestamp; + for (var r = !1, o = 0; o < this.errorQueue.length; o++) { + var i = this.errorQueue[o]; + if (i.url === t.url && i.data.logs.length + n.logs.length <= 100 && JSON.stringify(i.data.common) === JSON.stringify(n.common)) { + r = !0, + (e = i.data.logs).push.apply(e, n.logs); + break + } + } + r || (this.errorQueue.length >= 5 && this.errorQueue.pop(), + this.errorQueue.unshift(t)) + } + } + } + , + t.prototype.flushErrorLogs = function() { + var t = this; + this.errorQueue.forEach((function(e) { + t.sendPackage(e) + } + )), + this.errorQueue = [] + } + , + t.prototype.destory = function() { + this.batchWaitTimer && clearTimeout(this.batchWaitTimer), + this.compensateTimer && clearTimeout(this.compensateTimer) + } + , + t.prototype.sendRadar = function(t, e) { + var n = e ? { + service_name: e + } : void 0 + , r = this.buildV3Package([t], this.radarUrl || this.url, n); + this.sendPackage(r) + } + , + t + }(), pt = (null === (J = null === window || void 0 === window ? void 0 : window.navigator) || void 0 === J ? void 0 : J.userAgent) || "", ht = function() { + if (F) + return F; + var t = "unknow" + , e = /android/i + , n = "Mac OS" + , r = "Windows" + , o = "Android" + , i = "iPhone" + , a = "iPhone" + , s = "Windows Phone" + , c = "Linux"; + F = { + os: { + name: t, + version: t + }, + model: t + }; + try { + var u = pt.match(/\((.*?)\)/); + if (!u) + return e.test(pt) && (F.os.name = o), + F; + var l = u[1] + ")" + , d = l.split(";").map((function(t) { + return t.trim() + } + )) + , p = void 0 + , h = void 0 + , m = void 0; + if (pt.indexOf(s) > -1) + m = p = s, + (y = l.match(/Windows\sPhone\s(.*?)[;\)\s]/)) && (h = y[1]), + m = d[d.length - 1].replace(")", ""); + else if (e.test(pt)) { + p = o; + var f = l.match(/android.*?;(.*?)build\//i); + f && (m = (m = f[1].split(";").pop()) && m.trim()); + for (var g = 0; g < d.length; g++) + if (e.test(d[g])) { + h = d[g].replace(e, ""), + m || (m = d[g + 1]); + break + } + } else if (pt.indexOf(i) > -1 || pt.indexOf(a) > -1) + m = pt.indexOf(i) > -1 ? i : a, + p = "iOS", + (y = l.match(/OS\s(.*?)\slike/)) && (h = y[1]); + else if (pt.indexOf(n) > -1) + m = p = n, + (y = l.match(/OS\sX\s(.*?)[;\)\s]/)) && (h = y[1]); + else if (pt.indexOf(r) > -1) { + var y; + m = p = r, + (y = l.match(/Windows\s(.*?)[;\)]/)) && (h = y[1]) + } else if (pt.indexOf("Nokia") > -1) { + p = "Symbian"; + var v = pt.match(/Symbian.*?\/(.*?);/); + v && (h = v[1]); + var b = pt.match(/Nokia(.*?)\//); + b && (m = b[1]) + } else + l.indexOf(c) > -1 && (p = m = c); + F = { + os: { + name: p || t, + version: h && h.replace(/_/g, ".").trim() || t + }, + model: m || t + } + } catch (t) {} + return F + }; + function mt() { + return void 0 === B && (B = N() && H("kpn") || function() { + if ("undefined" == typeof window) + return ""; + for (var t = window.navigator.userAgent, e = [[/ Kwai\//, "KUAISHOU"], [/ ksthanos\//, "THANOS"], [/ ksNebula\//i, "NEBULA"]], n = 0; n < e.length; n++) { + var r = e[n] + , o = r[0] + , i = r[1]; + if (o.exec(t)) + return i + } + return "" + }() || ""), + B + } + var ft = { + supportsPushState: function() { + var t = window.navigator.userAgent; + return (-1 === t.indexOf("Android 2.") && -1 === t.indexOf("Android 4.0") || -1 === t.indexOf("Mobile Safari") || -1 !== t.indexOf("Chrome") || -1 !== t.indexOf("Windows Phone")) && window.history && "pushState"in window.history + }, + getUAInfo: ht, + getDefaultKpn: mt + } + , gt = [["a7", "640x1136", ["iPhone 5", "iPhone 5s"]], ["a7", "1536x2048", ["iPad Air", "iPad Mini 2", "iPad Mini 3"]], ["a8", "640x1136", ["iPod touch (6th gen)"]], ["a8", "750x1334", ["iPhone 6"]], ["a8", "1242x2208", ["iPhone 6 Plus"]], ["a8", "1536x2048", ["iPad Air 2", "iPad Mini 4"]], ["a9", "640x1136", ["iPhone SE"]], ["a9", "750x1334", ["iPhone 6s"]], ["a9", "1242x2208", ["iPhone 6s Plus"]], ["a9x", "1536x2048", ["iPad Pro (1st gen 9.7-inch)"]], ["a9x", "2048x2732", ["iPad Pro (1st gen 12.9-inch)"]], ["a10", "750x1334", ["iPhone 7"]], ["a10", "1242x2208", ["iPhone 7 Plus"]], ["a10x", "1668x2224", ["iPad Pro (2th gen 10.5-inch)"]], ["a10x", "2048x2732", ["iPad Pro (2th gen 12.9-inch)"]], ["a11", "750x1334", ["iPhone 8"]], ["a11", "1242x2208", ["iPhone 8 Plus"]], ["a11", "1125x2436", ["iPhone X"]], ["a12", "828x1792", ["iPhone Xr"]], ["a12", "1125x2436", ["iPhone Xs"]], ["a12", "1242x2688", ["iPhone Xs Max"]], ["a12x", "1668x2388", ["iPad Pro (3rd gen 11-inch)"]], ["a12x", "2048x2732", ["iPad Pro (3rd gen 12.9-inch)"]]] + , yt = function() { + try { + var t = ht() + , e = N() + , n = t.model || t.os.name || "unknown"; + if ("iOS" !== t.os.name || e) + return n; + var r = function() { + for (var t = C(), e = [], n = 0, r = gt; n < r.length; n++) { + var o = r[n]; + t === o[1] && (e = e.concat(o[2])) + } + return e.length && e + }(); + return r ? r.join(" or ") : n + } catch (t) { + return "unknown" + } + } + , vt = {} + , bt = function(t) { + try { + if (window && window.localStorage && "undefined" != typeof Storage && window.localStorage instanceof Storage) { + var e = Number(function(t) { + try { + if (window && window.localStorage) { + var e = window.localStorage.getItem(t); + if (e) + try { + return JSON.parse(e) + } catch (t) { + return e + } + } + } catch (t) { + return null + } + return null + }(t)) || 0; + return e + 1 > 1e8 && (e = 0), + function(t, e) { + try { + if (window && window.localStorage) + window.localStorage.setItem(t, JSON.stringify(e)) + } catch (t) { + return !1 + } + }(t, e + 1), + e + } + } catch (t) {} + return vt[t] || (vt[t] = 0), + vt[t]++ + } + , St = 0 + , wt = N(); + function Lt() { + try { + var t = ht().os.name; + return St = t ? "Android" === t ? wt ? 6 : 8 : "iOS" === t ? wt ? 7 : 9 : 10 : 0 + } catch (t) { + return 0 + } + } + function kt() { + var t = "unknown" + , e = null === window || void 0 === window ? void 0 : window.navigator + , n = (null == e ? void 0 : e.connection) || (null == e ? void 0 : e.mozConnection) || (null == e ? void 0 : e.webkitConnection); + return n && (t = n.type || n.effectiveType), + t + } + var xt = function(t) { + function e(e) { + var n = t.call(this, d({ + platform: Lt(), + container: 10 === St ? "WEB" : "H5", + version_name: wt && H("appver", void 0, !0) || "", + network_type: kt(), + device_id: A(), + global_id: wt && H("egid") || "", + app_package: { + language: navigator.language + }, + device_package: { + os_version: ht().os.version, + model: yt(), + ua: navigator.userAgent + } + }, e)) || this; + return Object.assign(n.h5_extra_attr, { + host_product: mt(), + resolution: C(), + screen_with: K(screen.width), + screen_height: K(screen.height), + device_pixel_ratio: window.devicePixelRatio || 1, + domain: window.location.origin + }, e.h5_extra_attr), + n + } + return l(e, t), + e.prototype.getVersionName = function() { + return this.app_package.version_name + } + , + e.prototype.update = function(e) { + t.prototype.update.call(this, e); + var n = this.app_package.version_name; + if ("string" == typeof n) { + var r = n.lastIndexOf("."); + this.app_package.version_code = +n.slice(r + 1) || 0, + this.h5_extra_attr.app_version_name = n + } + } + , + e.prototype.setAdditionalSeqIdPackage = function(t) { + var e, n; + this.additional_seq_id_package = { + channel: 3, + channel_seq_id: (n = "NORMAL", + void 0 === n && (n = ""), + bt("WEBLOGGER_CHANNEL_SEQ_ID_" + n)), + custom_type: t, + custom_seq_id: (e = t, + bt("WEBLOGGER_V2_SEQ_ID_" + e)) + } + } + , + e.prototype.increaseH5SeqId = function(t) { + this.h5_extra_attr.client_timestamp = K((new Date).valueOf()), + this.h5_extra_attr.seq_id = bt(t ? "WEBLOGGER_H5_CUSTOM_SEQ_ID" : "WEBLOGGER_H5_SEQ_ID") + } + , + e + }(q) + , Tt = function(t, e, n) { + return L("[error 400]", "\u57cb\u70b9\u4e0a\u62a5\u63a5\u53e3\u8bf7\u6c42\u62a5\u9519", "\nurl:", e, "\ndata", n, "\nerror:", t || "server decode log failed") + }; + function Nt(t, e) { + var n = t.url + , r = t.data + , o = t.timeout + , i = new XMLHttpRequest; + i.open("POST", n), + i.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"), + "object" != typeof r || r instanceof Uint8Array || (r = JSON.stringify(r)), + o && (i.timeout = o), + i.onload = function() { + var t = function(t, e, n, r) { + var o; + if (t < 200 || t >= 300 && 304 !== t) + ; + else + try { + var i = JSON.parse(e) + , a = i.exception + , s = i.result + , c = i.error_msg; + a && (o = a), + 1 !== s && (o = c || "result is " + s) + } catch (t) { + o = t.message + } + return o && Tt(o, n, r), + o + }(i.status, i.response, n, r); + e && e(t) + } + , + i.ontimeout = i.onerror = function(t) { + t && Tt(t, n, r), + e && e(t ? "networkTimeout" : "") + } + , + i.send(r) + } + var _t = function(t) { + var e = function(e) { + return L("[error 401]", "GET \u8bf7\u6c42\u51fa\u9519 url: " + t, e) + }; + try { + var n = new XMLHttpRequest; + n.open("GET", t), + n.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"), + n.send(), + n.onerror = e + } catch (t) { + e(t) + } + } + , Pt = null === window || void 0 === window ? void 0 : window.navigator + , Gt = Pt && -1 !== Pt.userAgent.indexOf("Chrome") && "function" == typeof Pt.sendBeacon; + function Zt(t, e) { + var n = t.url + , r = t.data + , o = t.timeout + , i = t.isDebug; + if (r = JSON.stringify(r), + !i && function(t) { + var e = t.url + , n = t.data; + if (!Gt) + return !1; + "object" == typeof n && n.fd && (n = n.fd); + try { + return Pt.sendBeacon(e, n) + } catch (t) { + return L("[error 403]", "navigator.sendBeacon \u62a5\u9519", t), + !1 + } + }({ + url: n, + data: r + })) + return e && e(); + Nt({ + url: n, + data: r, + timeout: o + }, e) + } + var Et, Ct = function(t, e, n) { + return void 0 === t && (t = $), + function() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.log; + n && n.call.apply(n, f([console], t)) + } catch (t) { + return + } + }("%c\u57cb\u70b9\u6293\u5305\u6821\u9a8c: %c" + t + "/#/logger/index?sessionId=" + n, "color:#1abf89;font-size:1.2em;line-height:2.4em;", "font-size:1.2em;"), + e + "/" + n + "/" + }; + !function(t) { + t.loading = "loading", + t.loaded = "loaded" + }(Et || (Et = {})); + var It, Kt, Xt, Wt = Object.create(null), Mt = "weblogger_switch", Ot = function(t) { + var e = function() { + try { + var t = H(Mt) || "undefined" != typeof sessionStorage && sessionStorage.getItem(Mt); + if (!t) + return; + var e = JSON.parse(t) + , n = e.loggerSessionId + , r = e.reportHost + , o = e.loggerHost + , i = e.handshakeApi; + return n ? (_t(i || r + "/" + n), + Ct(o, r, n)) : "" + } catch (t) { + return "" + } + }() || function(t) { + void 0 === t && (t = location.href); + var e = t.lastIndexOf("?"); + if (-1 === e) + return ""; + var n = _(t.slice(e + 1)).webloggerSwitch; + if (!n) + return ""; + try { + var r = decodeURIComponent(n) + , o = JSON.parse(r) + , i = o.loggerSessionId + , a = o.reportHost + , s = o.loggerHost + , c = o.handshakeApi; + return i ? ("undefined" != typeof sessionStorage && sessionStorage.setItem(Mt, r), + _t(c || a + "/" + i), + Ct(s, a, i)) : "" + } catch (t) { + return "" + } + }(); + if (e) + return ut(e, !1, t) + }, Ut = function(t) { + function e(e, n) { + var r = t.call(this, e, n) || this; + return r.baseSendData = r.sendLog, + r + } + return l(e, t), + e.prototype.updateUrls = function() { + var t = this.config + , e = t.env + , n = void 0 === e ? et : e + , r = t.logger + , o = t.proto + , i = t.isBridge + , a = t.disableCompress + , s = Ot(o); + if (s) + this.url = s, + this.isDebug = !0; + else if (r || n === nt || n === rt) { + var c = function(t, e) { + void 0 === t && (t = A()), + void 0 === e && (e = !1); + var n = e ? "https://data-track-sgp.corp.kuaishou.com" : $; + return _t(n + "/rest/" + t), + Ct(n, n + "/rest", t) + }(this.commonPackage.identity_package.device_id, n === rt); + this.url = ut(c, !1, o), + this.isDebug = !0 + } else + n && /^(https?:)?\/\//.test(n) ? this.url = n : (this.isDebug = n !== et, + this.url = ut(n, !1, o), + this.radarUrl = ut(n, !0, o)); + this.enableAsyncGzip = !a && "v3" === o && !i && I() && n === et && !s && !r, + this.enableAsyncGzip && function(t, e, n) { + if (void 0 === e && (e = !0), + Wt[t]) + return n && n(t + " load repeat"); + var r = Wt[t] = { + state: Et.loading + } + , o = document.createElement("script"); + o.src = t, + e && (o.async = !0); + var i = document.getElementsByTagName("script")[0]; + i && i.parentNode ? i.parentNode.insertBefore(o, i) : document.head.appendChild(o), + o.onload = function() { + r.state = Et.loaded, + n && n() + } + , + o.onerror = function(e) { + r.state = Et.loaded, + n && n(t + " loaded failed, " + e) + } + }("https://static.yximgs.com/udata/pkg/ks-track-platform-new/weblogger/3.9.48/async/gzipper.min.js"), + this.formatUrl() + } + , + e.prototype.sendLog = function(t, e) { + !this.drained && this.enableAsyncGzip && this.sendGzip(t, e) || Zt(t, e) + } + , + e.prototype.sendGzip = function(t, n) { + var r; + return !!(null === (r = e.Gzipper) || void 0 === r ? void 0 : r.sendData) && e.Gzipper.sendData(t, (function(e) { + e && Zt(t, n) + } + )) + } + , + e.prototype.getCommonPackageJSON = function() { + return this.commonPackage.toJSON() + } + , + e.prototype.send = function(e, n, r) { + void 0 === n && (n = !1), + this.isV2 && (this.commonPackage.setAdditionalSeqIdPackage(e.getEventType()), + e.common_package = this.getCommonPackageJSON()), + t.prototype.send.call(this, e, n, r) + } + , + e + }(dt); + !function(t) { + var e, n, r, o, i, a, s, c; + (e = t.ElementStatus || (t.ElementStatus = {}))[e.UNKNOWN_STATUS = 0] = "UNKNOWN_STATUS", + e[e.CHECKED = 1] = "CHECKED", + e[e.UNCHECKED = 2] = "UNCHECKED", + (n = t.PageShowAction || (t.PageShowAction = {}))[n.UNKNOWN_ACTION = 0] = "UNKNOWN_ACTION", + n[n.ENTER = 1] = "ENTER", + n[n.LEAVE = 2] = "LEAVE", + n[n.RESUME = 3] = "RESUME", + (r = t.ActionStatus || (t.ActionStatus = {}))[r.UNKNOWN_STATUS = 0] = "UNKNOWN_STATUS", + r[r.SUCCESS = 1] = "SUCCESS", + r[r.FAIL = 2] = "FAIL", + (o = t.ActionType || (t.ActionType = {}))[o.UNKNOWN_ACTION_TYPE = 0] = "UNKNOWN_ACTION_TYPE", + o[o.CLICK = 1] = "CLICK", + o[o.LEFT_PULL = 2] = "LEFT_PULL", + o[o.RIGHT_PULL = 3] = "RIGHT_PULL", + o[o.UP_PULL = 4] = "UP_PULL", + o[o.DOWN_PULL = 5] = "DOWN_PULL", + (i = t.SubAction || (t.SubAction = {}))[i.UNKNOWN_SUB_ACTION = 0] = "UNKNOWN_SUB_ACTION", + i[i.PAGE_ENTER = 1] = "PAGE_ENTER", + i[i.PAGE_LEAVE = 2] = "PAGE_LEAVE", + i[i.PAGE_RESUME = 3] = "PAGE_RESUME", + i[i.PAGE_PAUSE = 4] = "PAGE_PAUSE", + (a = t.Direction || (t.Direction = {}))[a.UNKNOWN2 = 0] = "UNKNOWN2", + a[a.UP = 1] = "UP", + a[a.DOWN = 2] = "DOWN", + a[a.LEFT = 3] = "LEFT", + a[a.RIGHT = 4] = "RIGHT", + (s = t.TaskStatus || (t.TaskStatus = {}))[s.UNKNOWN_STATUS = 0] = "UNKNOWN_STATUS", + s[s.START = 1] = "START", + s[s.RETRY = 2] = "RETRY", + s[s.PAUSE = 3] = "PAUSE", + s[s.RESUME = 4] = "RESUME", + s[s.PENDING = 5] = "PENDING", + s[s.PROCESSING = 6] = "PROCESSING", + s[s.SUCCESS = 7] = "SUCCESS", + s[s.FAIL = 8] = "FAIL", + s[s.CANCEL = 9] = "CANCEL", + s[s.FINISH = 10] = "FINISH", + (c = t.OperationType || (t.OperationType = {}))[c.UNKNOWN_OPERATION = 0] = "UNKNOWN_OPERATION", + c[c.CLICK = 1] = "CLICK", + c[c.DOUBLE_CLICK = 2] = "DOUBLE_CLICK", + c[c.TRIPLE_CLICK = 3] = "TRIPLE_CLICK", + c[c.LONG_PRESS = 4] = "LONG_PRESS", + c[c.PULL = 5] = "PULL", + c[c.DRAG = 6] = "DRAG", + c[c.SCALE = 7] = "SCALE", + c[c.PULL_DOWN = 8] = "PULL_DOWN", + c[c.PULL_UP = 9] = "PULL_UP", + c[c.RIGHT_CLICK = 10] = "RIGHT_CLICK", + c[c.AUTO = 11] = "AUTO" + }(It || (It = {})), + function(t) { + var e, n; + (e = t.ShowType || (t.ShowType = {}))[e.UNKNOWN_TYPE = 0] = "UNKNOWN_TYPE", + e[e.PAGE_AUTO = 10] = "PAGE_AUTO", + e[e.PAGE_CUSTOM = 11] = "PAGE_CUSTOM", + e[e.ELEMENT = 12] = "ELEMENT", + (n = t.TaskEventType || (t.TaskEventType = {}))[n.UNKNOWN_TYPE = 0] = "UNKNOWN_TYPE", + n[n.USER_OPERATION = 1] = "USER_OPERATION", + n[n.STAY_LENGTH_STAT_EVENT = 2] = "STAY_LENGTH_STAT_EVENT", + n[n.BACKGROUND_TASK_EVENT = 3] = "BACKGROUND_TASK_EVENT" + }(Kt || (Kt = {})), + function(t) { + var e; + (e = t.ShowType || (t.ShowType = {}))[e.UNKNOWN2 = 0] = "UNKNOWN2", + e[e.PAGE = 1] = "PAGE" + }(Xt || (Xt = {})); + var Rt, Ht, Dt = !0, Yt = (new Date).valueOf(), jt = function(t, e) { + var n, r; + void 0 === e && (e = !1); + var o = t.type + , i = t.currentUrlPackage + , a = t.referUrlPackage + , s = t.name + , c = void 0 === s ? "" : s + , u = t.action + , l = t.beginTime + , p = t.params + , h = t.contentPackage + , m = t.status + , f = t.actionType + , g = t.auto + , y = ((n = { + status: m ? It.ActionStatus[m] || It.ActionStatus.UNKNOWN_STATUS : It.ActionStatus.SUCCESS + })[e ? "show_type" : "action_type"] = f ? It.ActionType[f] || It.ActionType.UNKNOWN_ACTION_TYPE : It.ActionType.CLICK, + n.url_package = i, + n.refer_url_package = a, + n[e ? "content_wrapper" : "content_package"] = h, + n); + if ("PV" === o) { + var v = It.SubAction.PAGE_ENTER + , b = It.PageShowAction.ENTER + , S = Dt + , w = 0; + switch (Dt = !1, + u) { + case "leave": + b = It.PageShowAction.LEAVE, + v = It.SubAction.PAGE_LEAVE, + w = K((new Date).valueOf() - (l || Yt)); + break; + case "enter": + b = It.PageShowAction.ENTER, + v = It.SubAction.PAGE_ENTER, + Yt = (new Date).valueOf(); + break; + case "visible": + b = It.PageShowAction.RESUME, + v = It.SubAction.PAGE_RESUME, + Yt = (new Date).valueOf(); + break; + case "hidden": + b = It.PageShowAction.LEAVE, + v = It.SubAction.PAGE_PAUSE, + w = K((new Date).valueOf() - (l || Yt)) + } + var L = g ? Kt.ShowType.PAGE_AUTO : Kt.ShowType.PAGE_CUSTOM; + return e && (S = void 0, + L = Xt.ShowType.PAGE), + { + show_event: d({ + action: b, + sub_action: v, + type: L, + first_load: S, + time_cost: 0, + stay_length: w + }, y) + } + } + return { + show_event: d({ + action: e ? 0 : It.PageShowAction.ENTER, + type: e ? 0 : Kt.ShowType.ELEMENT, + sub_action: e ? 0 : It.SubAction.PAGE_ENTER, + element_package: (r = {}, + r[e ? "action2" : "action"] = c, + r.params = JSON.stringify(p), + r) + }, y) + } + }, Vt = function(t, e) { + var n, r; + void 0 === e && (e = !1); + var o = t.sessionId + , i = t.currentUrlPackage + , a = t.referUrlPackage + , s = t.name + , c = t.params + , u = t.type + , l = t.contentPackage + , p = t.status + , h = t.taskType + , m = t.operationDirection + , f = ((n = { + url_package: i, + refer_url_package: a, + element_package: (r = {}, + r[e ? "action2" : "action"] = s, + r.params = JSON.stringify(c), + r) + })[e ? "content_wrapper" : "content_package"] = l, + n); + return e ? "CLICK" === u ? { + click_event: d({ + type: h && It.OperationType[h] || It.OperationType.CLICK, + direction: m && It.Direction[m] || It.Direction.UNKNOWN2 + }, f) + } : { + task_event: d({ + action2: u, + status: p && It.TaskStatus[p] || It.TaskStatus.UNKNOWN_STATUS + }, f) + } : { + task_event: d({ + type: h && Kt.TaskEventType[h] || Kt.TaskEventType.USER_OPERATION, + status: p && It.TaskStatus[p] || It.TaskStatus.UNKNOWN_STATUS, + operation_type: It.OperationType[u] || It.OperationType.CLICK, + operation_direction: m && It.Direction[m] || It.Direction.UNKNOWN2, + session_id: o + }, f) + } + }, zt = function(t) { + var e = t.name + , n = t.params + , r = t.currentUrlPackage + , o = t.referUrlPackage + , i = p(t, ["name", "params", "currentUrlPackage", "referUrlPackage"]); + return { + key: e, + value: JSON.stringify(d(d({ + url_package: r, + refer_url_package: o + }, n), i)) + } + }, At = function(t) { + var e = t.currentUrlPackage + , n = t.referUrlPackage + , r = t.options; + return { + video_stat_event: d(d({}, r), { + url_package: e, + refer_url_package: n + }) + } + }, Jt = (Rt = (new Date).getTimezoneOffset() / 60) <= 0 ? "GMT+" + T(-Rt + "", 2, "0") + ":00" : "GMT-" + T(Rt + "", 2, "0") + ":00", Ft = function() { + function t(t, e) { + void 0 === e && (e = !1), + this.client_timestamp = K((new Date).valueOf()), + this.client_increment_id = 0, + this.session_id = b.sessionId, + this.event_id = "", + e || (this.time_zone = Jt), + Object.assign(this, t), + this.genIncrementId() + } + return t.prototype.genIncrementId = function() { + this.client_increment_id = this.isCustomStatEvent() ? bt("WEBLOGGER_CUSTOM_INCREAMENT_ID_KEY") : bt("WEBLOGGER_INCREAMENT_ID_KEY") + } + , + t.prototype.isCustomStatEvent = function() { + return !(!this.stat_package || !("custom_stat_event"in this.stat_package)) + } + , + t.prototype.getEventType = function() { + if (this.event_package) { + var t = this.event_package + , e = t.task_event + , n = t.show_event + , r = t.click_event + , o = t.custom_event; + if (n) + return "showEvent"; + if (r) + return "clickEvent"; + if (e) + return "taskEvent"; + if (o) + return "customEvent" + } + return "customEvent" + } + , + t + }(); + function Bt(t, e, n) { + var r; + void 0 === n && (n = !1); + var o, i = e.eventId, a = e.currentUrlPackage, s = e.referUrlPackage, c = e.contentPackage, u = e.name, l = e.params; + switch (n && "RADAR" !== t && "CUSTOM" !== t && (a && (a.page2 = a.page, + delete a.page), + s && (s.page2 = s.page, + delete s.page)), + t) { + case "PV": + case "SHOW": + return new Ft({ + event_package: jt({ + type: t, + status: e.status, + currentUrlPackage: a, + referUrlPackage: s, + action: e.type, + beginTime: e.beginTime, + actionType: e.actionType, + name: u, + params: l, + contentPackage: c, + operationDirection: e.operationDirection, + auto: e.auto + }, n), + event_id: i + },n); + case "CUSTOM": + case "CUSTOM_STAT_EVENT": + var d = zt({ + name: u, + params: l, + currentUrlPackage: a, + referUrlPackage: s + }); + return new Ft(n ? { + event_package: { + custom_event: d + }, + event_id: i + } : { + stat_package: { + custom_stat_event: d + }, + event_id: i + },n); + case "RADAR": + return new Ft({ + stat_package: { + custom_stat_event: zt({ + name: u, + params: l, + currentUrlPackage: a, + referUrlPackage: s + }) + }, + event_id: i + },n); + case "HEART_BEAT_EVENT": + case "LAUNCH_EVENT": + case "APP_USAGE_STAT_EVENT": + case "EXCEPTION_EVENT": + case "DEVICE_STAT_EVENT": + return new Ft({ + stat_package: (r = {}, + r[t.toLowerCase()] = (o = e, + o.currentUrlPackage, + o.referUrlPackage, + o.taskType, + p(o, ["currentUrlPackage", "referUrlPackage", "taskType"])), + r) + },n); + case "VIDEO": + return new Ft(n ? { + stat_package: At({ + currentUrlPackage: a, + referUrlPackage: s, + options: l.params + }) + } : { + event_package: Vt({ + type: t, + status: e.status, + taskType: e.taskType, + sessionId: b.sessionId, + currentUrlPackage: a, + referUrlPackage: s, + name: u, + params: l.params, + contentPackage: c + }, n), + event_id: i + },n); + default: + return new Ft({ + event_package: Vt({ + type: t, + status: e.status, + taskType: e.taskType, + sessionId: b.sessionId, + currentUrlPackage: a, + referUrlPackage: s, + name: u, + params: l, + contentPackage: c + }, n), + event_id: i + },n) + } + } + var Qt, qt = null, $t = "tool", te = !1, ee = function(t) { + return void 0 === t && (t = Ht || "undefined" != typeof window && window.yoda), + Ht && Ht.isInYoda ? Ht : t && t.isInYoda ? Ht = t : null + }, ne = function() { + return h(void 0, void 0, void 0, (function() { + return m(this, (function(t) { + switch (t.label) { + case 0: + if (!Ht || te) + return [2]; + t.label = 1; + case 1: + return t.trys.push([1, 6, , 7]), + qt ? [4, qt] : [3, 3]; + case 2: + return t.sent(), + [3, 5]; + case 3: + return [4, qt = Ht.ready()]; + case 4: + t.sent(), + Ht.register({ + namespace: "webview", + name: "getPageLoadData" + }), + Ht.register({ + namespace: "tool", + name: "setClientLog" + }), + Ht.register({ + namespace: "tool", + name: "sendRadarLog" + }), + Ht.register({ + namespace: "tool", + name: "sendSummarizedLog" + }), + Ht.register({ + namespace: "tool", + name: "getKswitchData" + }), + t.label = 5; + case 5: + return qt = null, + te = !0, + [3, 7]; + case 6: + return t.sent(), + [3, 7]; + case 7: + return [2] + } + } + )) + } + )) + }, re = function(t, e) { + return void 0 === e && (e = "tool"), + h(void 0, void 0, void 0, (function() { + var n, r, o; + return m(this, (function(i) { + switch (i.label) { + case 0: + return n = !1, + Ht ? te ? [3, 2] : [4, ne()] : [3, 5]; + case 1: + i.sent(), + i.label = 2; + case 2: + return i.trys.push([2, 4, , 5]), + [4, Ht.tool.canIUse({ + namespace: e, + name: t + })]; + case 3: + return r = i.sent().canUse, + n = r, + [3, 5]; + case 4: + return o = i.sent(), + L("[error 206]", "yoda.tool.canIUse({ '" + e + "', '" + t + "' }) \u62a5\u9519: " + o.message), + [3, 5]; + case 5: + return [2, n] + } + } + )) + } + )) + }, oe = function(t, e) { + return h(void 0, void 0, void 0, (function() { + var n; + return m(this, (function(r) { + switch (r.label) { + case 0: + return Ht ? te ? [3, 2] : [4, ne()] : [2]; + case 1: + r.sent(), + r.label = 2; + case 2: + return r.trys.push([2, 4, , 5]), + [4, Ht[$t].setClientLog({ + type: t, + data: e + }, (function(n, r) { + n && 1 !== n.result && L("[error 203]", "yoda.tool.setClientLog \u57cb\u70b9\u53d1\u9001\u5931\u8d25", JSON.stringify({ + type: t, + data: e + }), "result: " + n + ", message: " + r) + } + ))]; + case 3: + return [2, r.sent()]; + case 4: + return n = r.sent(), + L("[error 209]", "yoda." + $t + ".setClientLog() \u62a5\u9519: " + n.message), + [3, 5]; + case 5: + return [2] + } + } + )) + } + )) + }, ie = function() { + return h(void 0, void 0, void 0, (function() { + var t; + return m(this, (function(e) { + switch (e.label) { + case 0: + return Ht ? [4, re(t = "setClientLog", "tool")] : [2, !1]; + case 1: + return e.sent() ? ($t = "tool", + [2, !0]) : [4, re(t, "platform")]; + case 2: + return e.sent() ? ($t = "platform", + [2, !0]) : [2, !1] + } + } + )) + } + )) + }, ae = void 0, se = function(t, e) { + return h(void 0, void 0, void 0, (function() { + var n, r; + return m(this, (function(o) { + switch (o.label) { + case 0: + return Ht ? te ? [3, 2] : [4, ne()] : [2]; + case 1: + o.sent(), + o.label = 2; + case 2: + return o.trys.push([2, 4, , 5]), + [4, null === (r = Ht.tool) || void 0 === r ? void 0 : r.handleEntryTag({ + type: t, + params: e + })]; + case 3: + return (n = o.sent()) && n.data && n.data.entryTag ? [2, n.data.entryTag] : [3, 5]; + case 4: + return L("[error 213]", "\u64cd\u4f5c\u67d3\u8272\u53c2\u6570\u62a5\u9519", o.sent()), + [3, 5]; + case 5: + return [2, null] + } + } + )) + } + )) + }, ce = { + isSupportBridgeLog: ie, + isSupportBridge: re, + getWebviewLoadPerf: function(t) { + return void 0 === t && (t = {}), + h(void 0, void 0, void 0, (function() { + var e; + return m(this, (function(n) { + switch (n.label) { + case 0: + return Ht ? te ? [3, 2] : [4, ne()] : [2]; + case 1: + n.sent(), + n.label = 2; + case 2: + return n.trys.push([2, 4, , 5]), + [4, null === (e = Ht.webview) || void 0 === e ? void 0 : e.getPageLoadData(t)]; + case 3: + return [2, n.sent()]; + case 4: + return L("[error 207]", "yoda.webview.getPageLoadData() \u62a5\u9519: " + n.sent().message), + [3, 5]; + case 5: + return [2] + } + } + )) + } + )) + }, + sendRadarLog: function(t) { + return void 0 === t && (t = {}), + h(void 0, void 0, void 0, (function() { + var e; + return m(this, (function(n) { + switch (n.label) { + case 0: + return Ht ? te ? [3, 2] : [4, ne()] : [2]; + case 1: + n.sent(), + n.label = 2; + case 2: + return n.trys.push([2, 4, , 5]), + [4, null === (e = Ht.tool) || void 0 === e ? void 0 : e.sendRadarLog(t, (function(e, n) { + e && 1 !== e.result && L("[error 205]", "yoda.tool.sendRadarLog \u57cb\u70b9\u53d1\u9001\u5931\u8d25", JSON.stringify(t), "result: " + e + ", message: " + n) + } + ))]; + case 3: + return [2, n.sent()]; + case 4: + return L("[error 207]", "yoda.tool.sendRadarLog() \u62a5\u9519: " + n.sent().message), + [3, 5]; + case 5: + return [2] + } + } + )) + } + )) + }, + setClientLog: oe, + initYoda: ne, + yodaAlready: te, + getKDSWebviewLoadPerf: function(t) { + return void 0 === t && (t = {}), + h(void 0, void 0, void 0, (function() { + var e; + return m(this, (function(n) { + switch (n.label) { + case 0: + return Ht ? te ? [3, 2] : [4, ne()] : [2]; + case 1: + n.sent(), + n.label = 2; + case 2: + return [4, re("getPageLoadData", "system")]; + case 3: + if (!n.sent()) + return [3, 7]; + n.label = 4; + case 4: + return n.trys.push([4, 6, , 7]), + [4, null === (e = Ht.system) || void 0 === e ? void 0 : e.getPageLoadData(t)]; + case 5: + return [2, n.sent()]; + case 6: + return L("[error 212]", "yoda.system.getPageLoadData() \u62a5\u9519", n.sent().message), + [3, 7]; + case 7: + return [2] + } + } + )) + } + )) + }, + sendSummarizedLog: function(t) { + return void 0 === t && (t = {}), + h(void 0, void 0, void 0, (function() { + var e; + return m(this, (function(n) { + switch (n.label) { + case 0: + if (!Ht) + return [2]; + n.label = 1; + case 1: + return n.trys.push([1, 5, , 6]), + te ? [3, 3] : [4, ne()]; + case 2: + n.sent(), + n.label = 3; + case 3: + return [4, null === (e = Ht.tool) || void 0 === e ? void 0 : e.sendSummarizedLog(t)]; + case 4: + return [2, n.sent()]; + case 5: + return L("[error 208]", "yoda.tool.sendSummarizedLog() \u62a5\u9519: " + n.sent().message), + [3, 6]; + case 6: + return [2] + } + } + )) + } + )) + } + }, ue = function(t, e, n, r) { + void 0 === t && (t = g.CLICK), + void 0 === e && (e = {}), + "string" != typeof t && (t = t.type), + t = t.toUpperCase(); + var o = {}; + return "string" == typeof e ? (o.contentPackage = r, + "CUSTOM" === t ? (o.key = e, + o.value = n) : (o.params = n, + "PV" === t ? o.page = e : o.action = e)) : o = e, + [t, o] + }, le = "WEBLOGGER_SILENCED"; + "undefined" != typeof window && ("object" != typeof window._WEBLOGGER && (window._WEBLOGGER = { + _silenced: !1, + constructors: [], + instances: [], + silence: function(t) { + try { + t ? sessionStorage.setItem(le, "1") : sessionStorage.removeItem(le), + window._WEBLOGGER.instances.forEach((function(e) { + null == e || e.silence(t) + } + )) + } catch (t) {} + } + }), + Qt = window._WEBLOGGER); + var de, pe, he = !1, me = Math.random(), fe = function(t) { + function e(e, n) { + void 0 === e && (e = {}); + var r, o, i, a, s = t.call(this, e, n) || this; + return s.yoda = null, + s.SampledPageMap = {}, + s.beforeUnload = function(t) { + if (!he) { + for (var e in s.logger.drain(), + s.plugins) { + var n = s.plugins[e]; + "function" == typeof n.beforeUnload && n.beforeUnload(t) + } + he = !0, + setTimeout((function() { + he = !1 + } + ), 2e3) + } + } + , + s.isBridge = e.bridgeMode && e.yoda && e.yoda.isInYoda, + s.logConfig.isBridge = s.isBridge, + r = "sessionId", + o = n && n.session_id || H("sid") || (i = "", + N() && (i = H("session_id") || H("sid")) ? i : j()), + b[r] = o, + s.isV2 = "v2" === s.logConfig.proto, + s.getSampled(e), + s.presetBaseOption(s.baseOption), + s.commonPackage = new xt(s.baseOption), + s.logger = new Ut(s.logConfig,s.commonPackage), + s.initYoda(), + s.addPlugins(), + k(window, "pagehide", s.beforeUnload), + k(window, "beforeunload", s.beforeUnload), + a = s, + (null == Qt ? void 0 : Qt.instances) && a && -1 === Qt.instances.indexOf(a) && (Qt.instances.push(a), + Qt._silenced && (null == a || a.silence(!0))), + s + } + return l(e, t), + e.prototype.getSampled = function(t) { + "function" == typeof t.sampleRateFn ? this.sampled = !!t.sampleRateFn() : void 0 !== t.sampleRate && (this.sampled = me < Number(t.sampleRate)) + } + , + e.prototype.presetBaseOption = function(t) { + this.isBridge || (this.isV2 ? ("number" != typeof t.product && L("[error 101]", "\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684 product \u503c\uff0c\u503c\u7c7b\u578b\u4e3a number!"), + delete t.product_name) : (t.product_name && "string" == typeof t.product_name || L("[error 100]", "\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684 product_name \u503c\uff0c\u503c\u7c7b\u578b\u4e3a string!"), + delete t.product), + t.user_id || (t.user_id = H("userId") || H("userName") || void 0, + t.user_id || function() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.warn; + n && n.call.apply(n, f([console], t)) + } catch (t) { + return + } + }("[warn 102]", "user_id \u4e3a\u7a7a\uff0c\u8bf7\u786e\u5b9a\u662f\u5426\u4f20\u5165\uff0c\u5982\u679c\u662f\u5f02\u6b65\u901a\u8fc7 updateCommonPackage \u63a5\u53e3\u4f20\u5165\uff0c\u53ef\u4ee5\u5ffd\u7565\u8be5\u63d0\u793a!")), + t.device_id || (t.device_id = A(), + t.device_id || L("[error 103]", "device_id \u4e3a\u7a7a\uff0c\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684\u8bbe\u5907 id!")), + !t.global_id && N() && (t.global_id = H("egid") || "")) + } + , + Object.defineProperty(e.prototype, "Utils", { + get: function() { + return { + yoda: this.yoda && ce, + cookie: Y, + ua: ft, + io: { + sendData: Zt + } + } + }, + enumerable: !1, + configurable: !0 + }), + Object.defineProperty(e.prototype, "isKSwitchSampled", { + get: function() { + return void 0 !== typeof ae + }, + enumerable: !1, + configurable: !0 + }), + e.prototype.initYoda = function() { + return h(this, void 0, void 0, (function() { + var t = this; + return m(this, (function(e) { + switch (e.label) { + case 0: + return this.logConfig.yoda && !this.yoda && (this.yoda = ee(this.logConfig.yoda)), + this.yoda ? [4, ne()] : [3, 2]; + case 1: + e.sent(), + e.label = 2; + case 2: + return h(void 0, void 0, void 0, (function() { + var t, e, n, r, o; + return m(this, (function(i) { + switch (i.label) { + case 0: + if (!Ht) + return [2, ae = null]; + if (void 0 !== ae) + return [2, ae]; + i.label = 1; + case 1: + return i.trys.push([1, 4, , 5]), + [4, re("getKswitchData", "tool")]; + case 2: + return i.sent() ? [4, Ht.tool.getKswitchData({ + keys: [{ + key: "webloggerSampling" + }] + })] : [2, ae = null]; + case 3: + if ((t = i.sent()) && t.data && ("string" == typeof (e = t.data[0]) && (e = JSON.parse(e)), + n = e ? e.value : null)) { + for (o in "string" == typeof n && (n = JSON.parse(n)), + r = "undefined" != typeof location ? location.host : "*", + n) + "*" !== o && -1 === o.indexOf(r) || (ae || (ae = {}), + ae[o] = n[o]); + if (ae) + return [2, ae] + } + return [3, 5]; + case 4: + return L("[error 201]", "yoda.tool.getKswitchData \u91c7\u6837\u914d\u7f6e\u83b7\u53d6\u51fa\u9519", i.sent().message), + [3, 5]; + case 5: + return [2, ae = null] + } + } + )) + } + )).then((function() { + t.currentUrlPackage && (t.currentUrlPackage.sampled = t.getPageSampled()) + } + )), + h(void 0, void 0, void 0, (function() { + var t; + return m(this, (function(e) { + switch (e.label) { + case 0: + return Ht ? [4, re("getDeviceInfo", "system")] : [2, null]; + case 1: + if (!e.sent()) + return [3, 5]; + e.label = 2; + case 2: + return e.trys.push([2, 4, , 5]), + [4, null === (t = Ht.system) || void 0 === t ? void 0 : t.getDeviceInfo()]; + case 3: + return [2, e.sent()]; + case 4: + return L("[error 210]", "yoda.system.getDeviceInfo() \u62a5\u9519", e.sent().message), + [3, 5]; + case 5: + return [2] + } + } + )) + } + )).then((function(e) { + e && e.mod && (t.commonPackage.device_package.model = e.mod) + } + )), + h(void 0, void 0, void 0, (function() { + var t; + return m(this, (function(e) { + switch (e.label) { + case 0: + return Ht ? [4, re("getAppInfo", "system")] : [2, null]; + case 1: + if (!e.sent()) + return [3, 5]; + e.label = 2; + case 2: + return e.trys.push([2, 4, , 5]), + [4, null === (t = Ht.system) || void 0 === t ? void 0 : t.getAppInfo()]; + case 3: + return [2, e.sent()]; + case 4: + return L("[error 209]", "yoda.system.getAppInfo() \u62a5\u9519", e.sent().message), + [3, 5]; + case 5: + return [2] + } + } + )) + } + )).then((function(e) { + e && (e.did && (t.commonPackage.identity_package.device_id = e.did), + e.userId && !t.commonPackage.identity_package.user_id && (t.commonPackage.identity_package.user_id = e.userId), + e.appver && (t.commonPackage.app_package.version_name = e.appver)) + } + )), + [2] + } + } + )) + } + )) + } + , + e.prototype.initUrlPackage = function() { + t.prototype.initUrlPackage.call(this); + var e, n = this.logConfig.referer, r = "web"; + n ? (e = n.value, + r = n.type && n.type || r) : "undefined" != typeof document && document.referrer && (e = document.referrer), + e && this.updateReferUrlPackage(e, r) + } + , + e.prototype.updateCurrentUrlPackage = function(t, e) { + if (void 0 === t && (t = (null === location || void 0 === location ? void 0 : location.href) || ""), + void 0 === e && (e = "web"), + "object" == typeof t && !t.force && this.currentUrlPackage) { + var n = t.page + , r = void 0 === n ? this.currentUrlPackage.page : n + , o = t.params + , i = void 0 === o ? {} : o; + if (r === this.currentUrlPackage.page) + return this.currentUrlPackage.update(r, i) + } + this.currentUrlPackage = new Q(t,e,this.logConfig.urlMap), + this.currentUrlPackage.sampled = this.getPageSampled(), + this.logConfig.attachUrl && this.currentUrlPackage.attachUrl() + } + , + e.prototype.updateReferUrlPackage = function(t, e) { + void 0 === t && (t = this.currentUrlPackage), + void 0 === e && (e = "web"), + this.referUrlPackage = t instanceof Q ? t : new Q(t,e,this.logConfig.urlMap) + } + , + e.prototype.getPageSampled = function() { + if (!ae) + return "boolean" != typeof this.sampled || this.sampled; + var t = "undefined" != typeof location ? location.href.replace(/https?:\/\//, "").split("?")[0] : "*"; + if (this.SampledPageMap && void 0 !== this.SampledPageMap[t]) + return this.SampledPageMap[t]; + if (ae) { + var e = void 0 + , n = 0 + , r = null + , o = []; + for (var i in ae) + if (ae.hasOwnProperty(i)) { + var a = 0; + if ("*" === i ? a = 1 : 0 === t.indexOf(i) && (i === t ? a = 100 : "/" === i[i.length - 1] && (a = 11 - 1 / i.length)), + !a) + continue; + var s = ae[i] + , c = s.radar + , u = s.overwrite + , l = s.overall; + a += u ? 1e3 : 0, + c && o.push({ + radar: c, + level: a + }), + a > n && (n = a, + e = l) + } + n && (r = {}, + o.sort((function(t, e) { + return t.level - e.level + } + )).forEach((function(t) { + Object.assign(r, t.radar) + } + ))); + var d = void 0; + d = n > 1e3 || void 0 === this.sampled ? Math.random() < Number(e) && (!r || { + radar: r + }) : "boolean" != typeof this.sampled || this.sampled, + this.SampledPageMap && (this.SampledPageMap[t] = d) + } + return this.SampledPageMap && this.SampledPageMap[t] + } + , + Object.defineProperty(e.prototype, "isSendSampled", { + get: function() { + return this.currentUrlPackage && this.currentUrlPackage.sampled || this.logger.isDebug + }, + enumerable: !1, + configurable: !0 + }), + e.prototype.generateLog = function(t, e, n) { + void 0 === n && (n = Bt); + var r, o = e, i = o.action, a = o.params, s = o.status, c = o.type, u = o.eventId, l = o.contentPackage, p = o.urlPage; + if (l && (l = "string" == typeof l ? l : JSON.stringify(l)), + t === y.PV) { + var h = e + , m = h.page + , f = h.type; + f || (e.type = f = "enter"), + "enter" === f && m ? this.updateCurrentUrlPackage({ + page: m, + params: a + }) : this.currentUrlPackage.update(m, a) + } else + p && p.page && (r = { + page: p.page, + identity: p.identity || j(), + params: JSON.stringify(p.params), + page_type: this.currentUrlPackage.page_type + }); + var g = { + currentUrlPackage: r || this.currentUrlPackage.toJSON(), + referUrlPackage: this.referUrlPackage ? this.referUrlPackage.toJSON() : void 0, + contentPackage: l + }; + if (t !== y.RADAR && g.currentUrlPackage.page.indexOf("http"), + t === y.PV) { + var v = e.type; + return n(t, d(d(d({}, e), { + type: v + }), g), this.isV2) + } + if (t === y.SHOW) + return n(t, d(d(d({}, e), { + name: i + }), g), this.isV2); + if (t === y.VIDEO) + return n(t, d({ + params: e, + name: "VIDEO" + }, g), this.isV2); + if (t === y.RADAR) + return n(t, e, this.isV2); + if (t === y.CUSTOM) { + var b = e + , S = b.key + , w = b.value + , L = b.eventId; + return n(t, d(d(d({}, e), { + params: w, + eventId: L, + name: S + }), g), this.isV2) + } + return n(t, d(d(d({}, e), { + params: a, + status: s, + taskType: c, + eventId: u, + name: i + }), g), this.isV2) + } + , + e.prototype.collect = function(t, e, n, r) { + var o = ue(t, e, n, r) + , i = o[0] + , a = o[1]; + return this.send(i, a, !1) + } + , + e.prototype.sendImmediately = function(t, e, n, r) { + var o = ue(t, e, n, r) + , i = o[0] + , a = o[1]; + return this.send(i, a, !0) + } + , + e.prototype.beforeSend = function(t, e, n) { + var r, o, i = this; + if (this.emit("event", { + type: t, + action: e.type || e.action, + data: n + }), + "CLICK" === t) { + var a = null === (r = e) || void 0 === r ? void 0 : r.entryTag; + this.yoda && a && se("setPendingEntryTag", { + entryTag: d({ + page_name: this.currentUrlPackage.page, + element_action: null == e ? void 0 : e.action + }, a) + }) + } else + "PV" === t && this.yoda && !this.isBridge && "enter" === ((null === (o = e) || void 0 === o ? void 0 : o.type) || "enter") && (this.logger.sendingYield = h(i, void 0, void 0, (function() { + var t, e; + return m(this, (function(n) { + switch (n.label) { + case 0: + return t = this.currentUrlPackage.identity, + [4, se("clearEntryTag", { + subPage: t + })]; + case 1: + return n.sent(), + [4, se("consumeEntryTag", { + subPage: t + })]; + case 2: + return e = n.sent(), + this.commonPackage.updateGlobalAttr({ + entry_tag: e + }), + [2] + } + } + )) + } + ))) + } + , + e.prototype.send = function(t, e, n) { + if (!this._silenced) { + var r = this.generateLog(t, e); + if (this.beforeSend(t, e, r), + "RADAR" === t) + return this.logger.sendRadar(r, null == e ? void 0 : e.serviceName); + if ((!this.isV2 || !this.logConfig.forbidV2HttpUrlPage || Z(this.currentUrlPackage.page)) && this.isSendSampled) { + var o = "object" == typeof e && e.callback || void 0; + this.logger.send(r, !!n, o) + } + } + } + , + e.prototype.destroy = function() { + t.prototype.destroy.call(this), + x(window, "pagehide", this.beforeUnload), + x(window, "beforeunload", this.beforeUnload), + function(t) { + if (null == Qt ? void 0 : Qt.instances) { + var e = Qt.instances.indexOf(t); + -1 !== e && Qt.instances.splice(e, 1) + } + }(this) + } + , + e.prototype.silence = function(t) { + this._silenced = t + } + , + e.Logger = Ut, + e + }(M); + try { + pe = ee(s.default.default || s.default) + } catch (e) { + pe = ee("undefined" != typeof window && (window.yoda || window.KSYoda)) + } + var ge, ye = null === (de = null === window || void 0 === window ? void 0 : window.navigator) || void 0 === de ? void 0 : de.platform, ve = ye && -1 !== ["iOS", "Android"].indexOf(ye), be = function(t) { + function e(e, n) { + var r = t.call(this, d(d({}, e), { + yoda: pe || void 0, + bridgeMode: !(null == e ? void 0 : e.disableBridge) + }), n) || this; + return r.entered = "", + r.checkYodaSupport(), + r + } + return l(e, t), + e.prototype.checkYodaSupport = function() { + return h(this, void 0, void 0, (function() { + var t, e = this; + return m(this, (function(n) { + switch (n.label) { + case 0: + return this.waitYodaQueue && this.yodaStatus ? [2] : (this.waitYodaQueue = [], + this.yodaStatus = "CHECKING", + this.logConfig.disableBridge ? (this.yodaStatus = "DISABLED", + [3, 3]) : [3, 1]); + case 1: + return [4, ie()]; + case 2: + t = n.sent(), + this.yodaStatus = t ? "READY" : "DISABLED", + this.waitYodaQueue.forEach((function(t) { + var n = t.type + , r = t.options + , o = t.immediately; + e.send(n, r, o) + } + )), + this.waitYodaQueue = [], + n.label = 3; + case 3: + return [2] + } + } + )) + } + )) + } + , + e.prototype.sendByBridge = function(t, e, n) { + void 0 === t && (t = g.CLICK); + var r = e.contentPackage; + if (r && (r = "string" == typeof r ? r : JSON.stringify(r)), + "PV" === t) { + var o = e + , i = o.page + , a = o.type + , s = o.params + , c = o.coPage; + a || (e.type = a = "enter"), + "enter" === a ? ((i = i || this.currentUrlPackage.page) && (this.updateCurrentUrlPackage({ + page: i, + params: s || this.currentUrlPackage.params, + force: !0 + }), + this.entered = i), + c && (this.currentUrlPackage.coPage = c)) : this.currentUrlPackage.update(i, s) + } + var u = !!this.currentUrlPackage.coPage + , l = function(t, e) { + var n = e + , r = n.action + , o = n.params + , i = n.eventId + , a = n.contentPackage + , s = n.currentUrlPackage + , c = n.status; + n.name; + var u = n.feedLogCtx; + switch (t) { + case "PV": + var l = e + , p = l.type + , h = l.beginTime; + return d(d({}, s), { + actionType: p, + contentPackage: a, + pageType: "H5", + status: c || "SUCCESS", + beginTime: h, + eventId: i + }); + case "SHOW": + return { + action: r, + params: JSON.stringify(o), + contentPackage: a, + feedLogCtx: u, + eventId: i + }; + case "RADAR": + case "CUSTOM": + var m = e + , f = m.key + , g = m.value + , y = m.biz; + return { + key: f, + value: JSON.stringify(d(d({}, g), { + url_package: s + })), + biz: y, + eventId: i + }; + default: + var v = e.type; + return { + action: r, + params: JSON.stringify(o), + contentPackage: a, + type: v || "USER_OPERATION", + status: c || "UNKNOWN_STATUS", + operationType: t, + operationDirection: "UNKNOWN2", + feedLogCtx: u, + eventId: i + } + } + }(t, d(d({}, e), { + contentPackage: r, + currentUrlPackage: this.currentUrlPackage.toJSON() + })) + , p = -1 !== ["CUSTOM", "RADAR"].indexOf(t); + this.commonPackage.increaseH5SeqId(p); + var h = this.baseOption + , m = h.service_name + , f = h.sub_biz + , y = h.need_encrypt; + if (l.h5ExtraAttr = JSON.stringify(this.commonPackage.getH5ExtraAttr({ + bridge_info: (null == pe ? void 0 : pe.version) || !0, + coPage: u + })), + l.realtime = !!n, + l.serviceName = m || "", + l.subBiz = f || "", + l.needEncrypt = y || !1, + l.container = ve ? "REACT_NATIVE" : "H5", + this.emit("event", { + type: t, + action: e.type || e.action, + data: l + }), + "PV" !== t) { + if (this.currentUrlPackage && !this.logConfig.disablePV && (l.urlPage = { + page: this.currentUrlPackage.page, + params: JSON.stringify(this.currentUrlPackage.params), + identity: this.currentUrlPackage.identity, + coPage: u + }), + "SHOW" === t) + return oe("addElementShowEvent", l); + if (p) { + this.logConfig.biz && !l.biz && (l.biz = this.logConfig.biz); + var v = this.logConfig.customStatToCustom ? "addCustomEvent" : "addCustomStatEvent"; + return oe(v, l) + } + return oe("addTaskEvent", l) + } + this.logConfig.disablePV || Z(this.currentUrlPackage.page) && ("enter" !== (a = e.type) && "visible" !== a || (l.coPage = u, + l.pageType = ve ? "NATIVE" : "H5", + oe("setCurrentPage", l))) + } + , + e.prototype.updateCurrentUrlPackage = function(t, e) { + if (void 0 === t && (t = (null === location || void 0 === location ? void 0 : location.href) || ""), + void 0 === e && (e = "web"), + "object" == typeof t && !t.force && this.currentUrlPackage) { + var n = t.page + , r = void 0 === n ? this.currentUrlPackage.page : n + , o = t.params + , i = void 0 === o ? {} : o; + if (!r || r === this.currentUrlPackage.page) { + this.currentUrlPackage.update(r, i); + var a = this.entered === r; + return void ("DISABLED" !== this.yodaStatus && a && this.send("PV", { + type: "visible", + page: r, + params: i + }, !0)) + } + } + this.currentUrlPackage = new Q(t,e,this.logConfig.urlMap), + this.currentUrlPackage.sampled = this.getPageSampled(), + this.logConfig.attachUrl && this.currentUrlPackage.attachUrl() + } + , + e.prototype.sendByHttp = function(e, n, r) { + return void 0 === e && (e = g.CLICK), + t.prototype.send.call(this, e, n, r) + } + , + e.prototype.send = function(t, e, n) { + void 0 === t && (t = g.CLICK), + this.checkYodaSupport(); + var r = "CUSTOM" === t && this.logConfig.enableV3CustomEvent; + return this.logConfig.openHttpSender || "DISABLED" === this.yodaStatus || r ? this.sendByHttp(t, e, n) : "CHECKING" !== this.yodaStatus ? "READY" === this.yodaStatus ? (this.beforeSend(t, e), + this.sendByBridge(t, e, n)) : void 0 : void this.waitYodaQueue.push({ + type: t, + options: e, + immediately: n + }) + } + , + e + }(fe), Se = function() { + function t() {} + return t.prototype.apply = function(t) { + this.weblog = t + } + , + t + }(); + ge = be, + void 0 !== window._GLOBAL_KS_WEBLOGGER_ ? window._GLOBAL_KS_WEBLOGGER_.Factory = ge : window.Weblog = ge, + (null == Qt ? void 0 : Qt.constructors) && ge && -1 === Qt.constructors.indexOf(ge) && (ge._classId = Qt.constructors.length, + Qt.constructors.push(ge)), + function() { + if (null == Qt ? void 0 : Qt.silence) + try { + Qt._silenced = !!sessionStorage.getItem(le) + } catch (e) {} + }(), + e.BasePlugin = Se, + e.Weblog = be, + e.default = be, + Object.defineProperty(e, "__esModule", { + value: !0 + }) + } + )) + } + ).call(this, n("c8ba")) + }, + "0181": function(t, e, n) { + (function(e) { + !function(e, n) { + t.exports = n() + }(0, (function() { + "use strict"; + function t(t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function") + } + function n(t, e) { + for (var n = 0; n < e.length; n++) { + var r = e[n]; + r.enumerable = r.enumerable || !1, + r.configurable = !0, + "value"in r && (r.writable = !0), + Object.defineProperty(t, r.key, r) + } + } + function r(t, e, r) { + return e && n(t.prototype, e), + r && n(t, r), + t + } + function o(t, e) { + if ("function" != typeof e && null !== e) + throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), + e && a(t, e) + } + function i(t) { + return (i = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) { + return t.__proto__ || Object.getPrototypeOf(t) + } + )(t) + } + function a(t, e) { + return (a = Object.setPrototypeOf || function(t, e) { + return t.__proto__ = e, + t + } + )(t, e) + } + function s() { + if ("undefined" == typeof Reflect || !Reflect.construct) + return !1; + if (Reflect.construct.sham) + return !1; + if ("function" == typeof Proxy) + return !0; + try { + return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {} + ))), + !0 + } catch (t) { + return !1 + } + } + function c(t, e, n) { + return (c = s() ? Reflect.construct : function(t, e, n) { + var r = [null]; + r.push.apply(r, e); + var o = new (Function.bind.apply(t, r)); + return n && a(o, n.prototype), + o + } + ).apply(null, arguments) + } + function u(t, e) { + return !e || "object" != typeof e && "function" != typeof e ? function(t) { + if (void 0 === t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return t + }(t) : e + } + function l(t) { + var e = s(); + return function() { + var n, r = i(t); + if (e) { + var o = i(this).constructor; + n = Reflect.construct(r, arguments, o) + } else + n = r.apply(this, arguments); + return u(this, n) + } + } + function d(t, e, n) { + return (d = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) { + var r = function(t, e) { + for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = i(t)); ) + ; + return t + }(t, e); + if (r) { + var o = Object.getOwnPropertyDescriptor(r, e); + return o.get ? o.get.call(n) : o.value + } + } + )(t, e, n || t) + } + var p = function(t, e) { + return (p = Object.setPrototypeOf || { + __proto__: [] + }instanceof Array && function(t, e) { + t.__proto__ = e + } + || function(t, e) { + for (var n in e) + e.hasOwnProperty(n) && (t[n] = e[n]) + } + )(t, e) + } + , h = function() { + return (h = Object.assign || function(t) { + for (var e, n = 1, r = arguments.length; n < r; n++) + for (var o in e = arguments[n]) + Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]); + return t + } + ).apply(this, arguments) + }; + function m(t, e) { + var n = {}; + for (var r in t) + Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]); + if (null != t && "function" == typeof Object.getOwnPropertySymbols) { + var o = 0; + for (r = Object.getOwnPropertySymbols(t); o < r.length; o++) + e.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[o]) && (n[r[o]] = t[r[o]]) + } + return n + } + function f(t, e, n, r) { + return new (n || (n = Promise))((function(o, i) { + function a(t) { + try { + c(r.next(t)) + } catch (t) { + i(t) + } + } + function s(t) { + try { + c(r.throw(t)) + } catch (t) { + i(t) + } + } + function c(t) { + var e; + t.done ? o(t.value) : (e = t.value, + e instanceof n ? e : new n((function(t) { + t(e) + } + ))).then(a, s) + } + c((r = r.apply(t, e || [])).next()) + } + )) + } + function g(t, e) { + var n, r, o, i, a = { + label: 0, + sent: function() { + if (1 & o[0]) + throw o[1]; + return o[1] + }, + trys: [], + ops: [] + }; + return i = { + next: s(0), + throw: s(1), + return: s(2) + }, + "function" == typeof Symbol && (i[Symbol.iterator] = function() { + return this + } + ), + i; + function s(i) { + return function(s) { + return function(i) { + if (n) + throw new TypeError("Generator is already executing."); + for (; a; ) + try { + if (n = 1, + r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), + 0) : r.next) && !(o = o.call(r, i[1])).done) + return o; + switch (r = 0, + o && (i = [2 & i[0], o.value]), + i[0]) { + case 0: + case 1: + o = i; + break; + case 4: + return a.label++, + { + value: i[1], + done: !1 + }; + case 5: + a.label++, + r = i[1], + i = [0]; + continue; + case 7: + i = a.ops.pop(), + a.trys.pop(); + continue; + default: + if (o = a.trys, + !((o = o.length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) { + a = 0; + continue + } + if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { + a.label = i[1]; + break + } + if (6 === i[0] && a.label < o[1]) { + a.label = o[1], + o = i; + break + } + if (o && a.label < o[2]) { + a.label = o[2], + a.ops.push(i); + break + } + o[2] && a.ops.pop(), + a.trys.pop(); + continue + } + i = e.call(t, a) + } catch (t) { + i = [6, t], + r = 0 + } finally { + n = o = 0 + } + if (5 & i[0]) + throw i[1]; + return { + value: i[0] ? i[1] : void 0, + done: !0 + } + }([i, s]) + } + } + } + function y() { + for (var t = 0, e = 0, n = arguments.length; e < n; e++) + t += arguments[e].length; + var r = Array(t) + , o = 0; + for (e = 0; e < n; e++) + for (var i = arguments[e], a = 0, s = i.length; a < s; a++, + o++) + r[o] = i[a]; + return r + } + function v() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.error; + return n && n.call.apply(n, y([console], t)) + } catch (t) { + return + } + } + function b(t, e, n, r) { + return "attachEvent"in t ? t.attachEvent("on" + e, n) : t.addEventListener(e, n, r) + } + function S(t, e, n, r) { + return "attachEvent"in t ? t.detachEvent("on" + e, n) : t.removeEventListener(e, n, r) + } + function w(t) { + for (var e = {}, n = 0, r = t.split("&"); n < r.length; n++) { + var o = r[n].split("=") + , i = o[0] + , a = o[1]; + i in e ? e[i]instanceof Array ? e[i].push(a) : e[i] = [e[i], a] : e[i] = a + } + return e + } + function L(t) { + if (t === document.body) + return "HTML/" + t.tagName; + var e = 0; + if (t && t.parentNode) + for (var n = t.parentNode.childNodes, r = 0; r < n.length; r++) { + var o = n[r]; + if (o === t) + return L(t.parentNode) + "/" + t.tagName + "[" + (e + 1) + "]"; + 1 === o.nodeType && o.tagName === t.tagName && e++ + } + return "" + } + var k, x = function(t, e) { + var n = t.url + , r = t.page + , o = t.params + , i = t.pageId; + if (!r && "string" == typeof n) { + var a = function(t) { + void 0 === t && (t = location.href); + var e = t.lastIndexOf("?"); + return -1 === e ? { + page: t + } : { + page: t.slice(0, e), + params: w(t.slice(e + 1)) + } + }(n); + r = a.page, + o = a.params + } + if ("function" == typeof e) + try { + var s = e({ + url: n, + page: r, + params: o + }); + "string" == typeof s ? r = s : "object" == typeof s && (s.page && (r = s.page), + s.params && (o = s.params), + s.pageId && (i = s.pageId)) + } catch (t) {} + else if ("object" == typeof e) { + var c = ""; + for (var u in e) + if ((n || r || "").indexOf(u) > -1) { + c = e[u]; + break + } + c && (r = c) + } + return { + page: r, + params: o, + pageId: i + } + }, T = (k = "", + function() { + if (k) + return k; + try { + var t = window.devicePixelRatio || 1 + , e = Math.floor(screen.width * t) + , n = Math.floor(screen.height * t); + return k = e + "x" + n + } catch (t) { + return "" + } + } + ), N = "undefined" != typeof window ? window.performance : null, _ = N && N.timing || null; + N && N.getEntriesByType && N.getEntriesByType("navigation")[0]; + var P = function() { + function t() {} + return t.prototype.apply = function(t) { + this.weblog = t + } + , + t + }() + , G = "1.4.0" + , Z = { + test: { + appKey: "26", + secretKey: "4d987a04c739527acc8439696cd06913" + }, + production: { + appKey: "10001001", + secretKey: "f2fff381c551a8dcdb765e316f3d44ac" + } + } + , E = { + test: "https://infra-gdfp.test.gifshow.com", + production: "https://gdfp.gifshow.com", + kwai: "https://g-gdfp.kwai-pro.com", + snack: "https://g-gdfp.snackvideo.com" + } + , C = "/p/z/s" + , I = "/s/u/v" + , K = function() { + function e() { + t(this, e) + } + return r(e, [{ + key: "mixIn", + value: function(t) { + return Object.assign(this, t) + } + }, { + key: "clone", + value: function() { + var t = new this.constructor; + return Object.assign(t, this), + t + } + }], [{ + key: "create", + value: function() { + for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) + e[n] = arguments[n]; + return c(this, e) + } + }]), + e + }() + , X = function(e) { + o(a, e); + var n = l(a); + function a() { + var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 4 * r.length; + t(this, a), + e = n.call(this); + var i = r; + if (i instanceof ArrayBuffer && (i = new Uint8Array(i)), + (i instanceof Int8Array || i instanceof Uint8ClampedArray || i instanceof Int16Array || i instanceof Uint16Array || i instanceof Int32Array || i instanceof Uint32Array || i instanceof Float32Array || i instanceof Float64Array) && (i = new Uint8Array(i.buffer,i.byteOffset,i.byteLength)), + i instanceof Uint8Array) { + for (var s = i.byteLength, c = [], u = 0; u < s; u += 1) + c[u >>> 2] |= i[u] << 24 - u % 4 * 8; + e.words = c, + e.sigBytes = s + } else + e.words = r, + e.sigBytes = o; + return e + } + return r(a, [{ + key: "toString", + value: function() { + var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : W; + return t.stringify(this) + } + }, { + key: "concat", + value: function(t) { + var e = this.words + , n = t.words + , r = this.sigBytes + , o = t.sigBytes; + if (this.clamp(), + r % 4) + for (var i = 0; i < o; i += 1) { + var a = n[i >>> 2] >>> 24 - i % 4 * 8 & 255; + e[r + i >>> 2] |= a << 24 - (r + i) % 4 * 8 + } + else + for (var s = 0; s < o; s += 4) + e[r + s >>> 2] = n[s >>> 2]; + return this.sigBytes += o, + this + } + }, { + key: "clamp", + value: function() { + var t = this.words + , e = this.sigBytes; + t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, + t.length = Math.ceil(e / 4) + } + }, { + key: "clone", + value: function() { + var t = d(i(a.prototype), "clone", this).call(this); + return t.words = this.words.slice(0), + t + } + }], [{ + key: "random", + value: function(t) { + for (var e, n = [], r = function(t) { + var e = t + , n = 987654321 + , r = 4294967295; + return function() { + var t = ((n = 36969 * (65535 & n) + (n >> 16) & r) << 16) + (e = 18e3 * (65535 & e) + (e >> 16) & r) & r; + return t /= 4294967296, + (t += .5) * (Math.random() > .5 ? 1 : -1) + } + }, o = 0; o < t; o += 4) { + var i = r(4294967296 * (e || Math.random())); + e = 987654071 * i(), + n.push(4294967296 * i() | 0) + } + return new a(n,t) + } + }]), + a + }(K) + , W = { + stringify: function(t) { + for (var e = t.words, n = t.sigBytes, r = [], o = 0; o < n; o += 1) { + var i = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r.push((i >>> 4).toString(16)), + r.push((15 & i).toString(16)) + } + return r.join("") + }, + parse: function(t) { + for (var e = t.length, n = [], r = 0; r < e; r += 2) + n[r >>> 3] |= parseInt(t.substr(r, 2), 16) << 24 - r % 8 * 4; + return new X(n,e / 2) + } + } + , M = function(t) { + for (var e = t.words, n = t.sigBytes, r = [], o = 0; o < n; o += 1) { + var i = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r.push(String.fromCharCode(i)) + } + return r.join("") + } + , O = function(t) { + for (var e = t.length, n = [], r = 0; r < e; r += 1) + n[r >>> 2] |= (255 & t.charCodeAt(r)) << 24 - r % 4 * 8; + return new X(n,e) + } + , U = function(t) { + try { + return decodeURIComponent(escape(M(t))) + } catch (t) { + throw new Error("Malformed UTF-8 data") + } + } + , R = function(t) { + return O(unescape(encodeURIComponent(t))) + } + , H = function(e) { + o(a, e); + var n = l(a); + function a(e) { + var r; + return t(this, a), + (r = n.call(this)).blockSize = 16, + r.cfg = Object.assign(new K, e), + r.reset(), + r + } + return r(a, [{ + key: "reset", + value: function() { + d(i(a.prototype), "reset", this).call(this), + this._doReset() + } + }, { + key: "update", + value: function(t) { + return this._append(t), + this._process(), + this + } + }, { + key: "finalize", + value: function(t) { + return t && this._append(t), + this._doFinalize() + } + }], [{ + key: "_createHelper", + value: function(t) { + return function(e, n) { + return new t(n).finalize(e) + } + } + }, { + key: "_createHmacHelper", + value: function(t) { + return function(e, n) { + return new D(t,n).finalize(e) + } + } + }]), + a + }(function(e) { + o(a, e); + var n = l(a); + function a() { + var e; + return t(this, a), + (e = n.call(this))._minBufferSize = 0, + e + } + return r(a, [{ + key: "reset", + value: function() { + this._data = new X, + this._nDataBytes = 0 + } + }, { + key: "_append", + value: function(t) { + var e = t; + "string" == typeof e && (e = R(e)), + this._data.concat(e), + this._nDataBytes += e.sigBytes + } + }, { + key: "_process", + value: function(t) { + var e, n = this._data, r = this.blockSize, o = n.words, i = n.sigBytes, a = i / (4 * r), s = (a = t ? Math.ceil(a) : Math.max((0 | a) - this._minBufferSize, 0)) * r, c = Math.min(4 * s, i); + if (s) { + for (var u = 0; u < s; u += r) + this._doProcessBlock(o, u); + e = o.splice(0, s), + n.sigBytes -= c + } + return new X(e,c) + } + }, { + key: "clone", + value: function() { + var t = d(i(a.prototype), "clone", this).call(this); + return t._data = this._data.clone(), + t + } + }]), + a + }(K)) + , D = function(e) { + o(i, e); + var n = l(i); + function i(e, r) { + var o; + t(this, i), + o = n.call(this); + var a = new e; + o._hasher = a; + var s = r; + "string" == typeof s && (s = R(s)); + var c = a.blockSize + , u = 4 * c; + s.sigBytes > u && (s = a.finalize(r)), + s.clamp(); + var l = s.clone(); + o._oKey = l; + var d = s.clone(); + o._iKey = d; + for (var p = l.words, h = d.words, m = 0; m < c; m += 1) + p[m] ^= 1549556828, + h[m] ^= 909522486; + return l.sigBytes = u, + d.sigBytes = u, + o.reset(), + o + } + return r(i, [{ + key: "reset", + value: function() { + var t = this._hasher; + t.reset(), + t.update(this._iKey) + } + }, { + key: "update", + value: function(t) { + return this._hasher.update(t), + this + } + }, { + key: "finalize", + value: function(t) { + var e = this._hasher + , n = e.finalize(t); + return e.reset(), + e.finalize(this._oKey.clone().concat(n)) + } + }]), + i + }(K) + , Y = [] + , j = function(e) { + o(a, e); + var n = l(a); + function a() { + return t(this, a), + n.apply(this, arguments) + } + return r(a, [{ + key: "_doReset", + value: function() { + this._hash = new X([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + } + }, { + key: "_doProcessBlock", + value: function(t, e) { + for (var n = this._hash.words, r = n[0], o = n[1], i = n[2], a = n[3], s = n[4], c = 0; c < 80; c += 1) { + if (c < 16) + Y[c] = 0 | t[e + c]; + else { + var u = Y[c - 3] ^ Y[c - 8] ^ Y[c - 14] ^ Y[c - 16]; + Y[c] = u << 1 | u >>> 31 + } + var l = (r << 5 | r >>> 27) + s + Y[c]; + l += c < 20 ? 1518500249 + (o & i | ~o & a) : c < 40 ? 1859775393 + (o ^ i ^ a) : c < 60 ? (o & i | o & a | i & a) - 1894007588 : (o ^ i ^ a) - 899497514, + s = a, + a = i, + i = o << 30 | o >>> 2, + o = r, + r = l + } + n[0] = n[0] + r | 0, + n[1] = n[1] + o | 0, + n[2] = n[2] + i | 0, + n[3] = n[3] + a | 0, + n[4] = n[4] + s | 0 + } + }, { + key: "_doFinalize", + value: function() { + var t = this._data + , e = t.words + , n = 8 * this._nDataBytes + , r = 8 * t.sigBytes; + return e[r >>> 5] |= 128 << 24 - r % 32, + e[14 + (r + 64 >>> 9 << 4)] = Math.floor(n / 4294967296), + e[15 + (r + 64 >>> 9 << 4)] = n, + t.sigBytes = 4 * e.length, + this._process(), + this._hash + } + }, { + key: "clone", + value: function() { + var t = d(i(a.prototype), "clone", this).call(this); + return t._hash = this._hash.clone(), + t + } + }]), + a + }(H) + , V = H._createHelper(j); + H._createHmacHelper(j); + var z = { + stringify: function(t) { + var e = t.words + , n = t.sigBytes + , r = this._map; + t.clamp(); + for (var o = [], i = 0; i < n; i += 3) + for (var a = (e[i >>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (e[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255) << 8 | e[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, s = 0; s < 4 && i + .75 * s < n; s += 1) + o.push(r.charAt(a >>> 6 * (3 - s) & 63)); + var c = r.charAt(64); + if (c) + for (; o.length % 4; ) + o.push(c); + return o.join("") + }, + parse: function(t) { + var e = t.length + , n = this._map + , r = this._reverseMap; + if (!r) { + this._reverseMap = [], + r = this._reverseMap; + for (var o = 0; o < n.length; o += 1) + r[n.charCodeAt(o)] = o + } + var i = n.charAt(64); + if (i) { + var a = t.indexOf(i); + -1 !== a && (e = a) + } + return function(t, e, n) { + for (var r = [], o = 0, i = 0; i < e; i += 1) + if (i % 4) { + var a = n[t.charCodeAt(i - 1)] << i % 4 * 2 | n[t.charCodeAt(i)] >>> 6 - i % 4 * 2; + r[o >>> 2] |= a << 24 - o % 4 * 8, + o += 1 + } + return X.create(r, o) + }(t, e, r) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + } + , A = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof e ? e : "undefined" != typeof self ? self : {} + , J = function(t, e) { + return t(e = { + exports: {} + }, e.exports), + e.exports + }((function(t) { + !function(e) { + function n(t, e) { + var n = (65535 & t) + (65535 & e); + return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n + } + function r(t, e, r, o, i, a) { + return n((s = n(n(e, t), n(o, a))) << (c = i) | s >>> 32 - c, r); + var s, c + } + function o(t, e, n, o, i, a, s) { + return r(e & n | ~e & o, t, e, i, a, s) + } + function i(t, e, n, o, i, a, s) { + return r(e & o | n & ~o, t, e, i, a, s) + } + function a(t, e, n, o, i, a, s) { + return r(e ^ n ^ o, t, e, i, a, s) + } + function s(t, e, n, o, i, a, s) { + return r(n ^ (e | ~o), t, e, i, a, s) + } + function c(t, e) { + var r, c, u, l, d; + t[e >> 5] |= 128 << e % 32, + t[14 + (e + 64 >>> 9 << 4)] = e; + var p = 1732584193 + , h = -271733879 + , m = -1732584194 + , f = 271733878; + for (r = 0; r < t.length; r += 16) + c = p, + u = h, + l = m, + d = f, + p = o(p, h, m, f, t[r], 7, -680876936), + f = o(f, p, h, m, t[r + 1], 12, -389564586), + m = o(m, f, p, h, t[r + 2], 17, 606105819), + h = o(h, m, f, p, t[r + 3], 22, -1044525330), + p = o(p, h, m, f, t[r + 4], 7, -176418897), + f = o(f, p, h, m, t[r + 5], 12, 1200080426), + m = o(m, f, p, h, t[r + 6], 17, -1473231341), + h = o(h, m, f, p, t[r + 7], 22, -45705983), + p = o(p, h, m, f, t[r + 8], 7, 1770035416), + f = o(f, p, h, m, t[r + 9], 12, -1958414417), + m = o(m, f, p, h, t[r + 10], 17, -42063), + h = o(h, m, f, p, t[r + 11], 22, -1990404162), + p = o(p, h, m, f, t[r + 12], 7, 1804603682), + f = o(f, p, h, m, t[r + 13], 12, -40341101), + m = o(m, f, p, h, t[r + 14], 17, -1502002290), + p = i(p, h = o(h, m, f, p, t[r + 15], 22, 1236535329), m, f, t[r + 1], 5, -165796510), + f = i(f, p, h, m, t[r + 6], 9, -1069501632), + m = i(m, f, p, h, t[r + 11], 14, 643717713), + h = i(h, m, f, p, t[r], 20, -373897302), + p = i(p, h, m, f, t[r + 5], 5, -701558691), + f = i(f, p, h, m, t[r + 10], 9, 38016083), + m = i(m, f, p, h, t[r + 15], 14, -660478335), + h = i(h, m, f, p, t[r + 4], 20, -405537848), + p = i(p, h, m, f, t[r + 9], 5, 568446438), + f = i(f, p, h, m, t[r + 14], 9, -1019803690), + m = i(m, f, p, h, t[r + 3], 14, -187363961), + h = i(h, m, f, p, t[r + 8], 20, 1163531501), + p = i(p, h, m, f, t[r + 13], 5, -1444681467), + f = i(f, p, h, m, t[r + 2], 9, -51403784), + m = i(m, f, p, h, t[r + 7], 14, 1735328473), + p = a(p, h = i(h, m, f, p, t[r + 12], 20, -1926607734), m, f, t[r + 5], 4, -378558), + f = a(f, p, h, m, t[r + 8], 11, -2022574463), + m = a(m, f, p, h, t[r + 11], 16, 1839030562), + h = a(h, m, f, p, t[r + 14], 23, -35309556), + p = a(p, h, m, f, t[r + 1], 4, -1530992060), + f = a(f, p, h, m, t[r + 4], 11, 1272893353), + m = a(m, f, p, h, t[r + 7], 16, -155497632), + h = a(h, m, f, p, t[r + 10], 23, -1094730640), + p = a(p, h, m, f, t[r + 13], 4, 681279174), + f = a(f, p, h, m, t[r], 11, -358537222), + m = a(m, f, p, h, t[r + 3], 16, -722521979), + h = a(h, m, f, p, t[r + 6], 23, 76029189), + p = a(p, h, m, f, t[r + 9], 4, -640364487), + f = a(f, p, h, m, t[r + 12], 11, -421815835), + m = a(m, f, p, h, t[r + 15], 16, 530742520), + p = s(p, h = a(h, m, f, p, t[r + 2], 23, -995338651), m, f, t[r], 6, -198630844), + f = s(f, p, h, m, t[r + 7], 10, 1126891415), + m = s(m, f, p, h, t[r + 14], 15, -1416354905), + h = s(h, m, f, p, t[r + 5], 21, -57434055), + p = s(p, h, m, f, t[r + 12], 6, 1700485571), + f = s(f, p, h, m, t[r + 3], 10, -1894986606), + m = s(m, f, p, h, t[r + 10], 15, -1051523), + h = s(h, m, f, p, t[r + 1], 21, -2054922799), + p = s(p, h, m, f, t[r + 8], 6, 1873313359), + f = s(f, p, h, m, t[r + 15], 10, -30611744), + m = s(m, f, p, h, t[r + 6], 15, -1560198380), + h = s(h, m, f, p, t[r + 13], 21, 1309151649), + p = s(p, h, m, f, t[r + 4], 6, -145523070), + f = s(f, p, h, m, t[r + 11], 10, -1120210379), + m = s(m, f, p, h, t[r + 2], 15, 718787259), + h = s(h, m, f, p, t[r + 9], 21, -343485551), + p = n(p, c), + h = n(h, u), + m = n(m, l), + f = n(f, d); + return [p, h, m, f] + } + function u(t) { + var e, n = "", r = 32 * t.length; + for (e = 0; e < r; e += 8) + n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255); + return n + } + function l(t) { + var e, n = []; + for (n[(t.length >> 2) - 1] = void 0, + e = 0; e < n.length; e += 1) + n[e] = 0; + var r = 8 * t.length; + for (e = 0; e < r; e += 8) + n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32; + return n + } + function d(t) { + var e, n, r = "0123456789abcdef", o = ""; + for (n = 0; n < t.length; n += 1) + e = t.charCodeAt(n), + o += r.charAt(e >>> 4 & 15) + r.charAt(15 & e); + return o + } + function p(t) { + return unescape(encodeURIComponent(t)) + } + function h(t) { + return function(t) { + return u(c(l(t), 8 * t.length)) + }(p(t)) + } + function m(t, e) { + return function(t, e) { + var n, r, o = l(t), i = [], a = []; + for (i[15] = a[15] = void 0, + o.length > 16 && (o = c(o, 8 * t.length)), + n = 0; n < 16; n += 1) + i[n] = 909522486 ^ o[n], + a[n] = 1549556828 ^ o[n]; + return r = c(i.concat(l(e)), 512 + 8 * e.length), + u(c(a.concat(r), 640)) + }(p(t), p(e)) + } + function f(t, e, n) { + return e ? n ? m(e, t) : d(m(e, t)) : n ? h(t) : d(h(t)) + } + t.exports ? t.exports = f : e.md5 = f + }(A) + } + )); + function F(t) { + return z.stringify(R(t)) + } + function B(t) { + var e = t.env || "production" + , n = E[e]; + "production" === e && t.host && E[t.host] && (n = E[t.host]); + var r = Z[e] + , o = r.appKey + , i = r.secretKey + , a = ((new Date).valueOf() / 1e3).toFixed() + , s = J(o + i + a); + return "" + n + I + "?appkey=" + o + "&seckey=" + i + "&bussType=" + t.bussType + "×tamp=" + a + "&sign=" + s + "&type=SDK_INIT" + } + function Q() { + var t = navigator.userAgent + , e = t.indexOf("Android") > -1 || t.indexOf("Adr") > -1 + , n = !!t.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); + return e || n + } + function q() { + var t = -1 !== location.href.indexOf("sf2021=1") + , e = navigator.userAgent + , n = -1 !== e.indexOf("ISLP/1") || -1 !== e.indexOf("Kwai") && -1 === e.indexOf("ISLP/"); + return t && n + } + function $(t) { + if (t.plugins && t.plugins.length > 0) { + for (var e = new Array, n = 0; n < t.plugins.length; n++) { + var r = {}; + r.name = t.plugins[n].name, + r.filename = t.plugins[n].filename, + r.description = t.plugins[n].description, + e[n] = r + } + return JSON.stringify(e) + } + return "" + } + function tt(t) { + if (t.mimeTypes && t.mimeTypes.length > 0) { + for (var e = new Array, n = 0; n < t.mimeTypes.length; n++) { + var r = {}; + r.type = t.mimeTypes[n].type, + r.description = t.mimeTypes[n].description, + e[n] = r + } + return JSON.stringify(e) + } + return "" + } + function et() { + var t = function() { + var t = document.createElement("canvas") + , e = null; + try { + e = t.getContext("webgl") + } catch (t) {} + return e || (e = null), + e + }(); + if (!t) + return null; + var e = [] + , n = t.createBuffer(); + if (null != n) { + t.bindBuffer(t.ARRAY_BUFFER, n); + var r = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + t.bufferData(t.ARRAY_BUFFER, r, t.STATIC_DRAW); + var o = t.createProgram() + , i = t.createShader(t.VERTEX_SHADER); + if (null != i && null != o) { + t.shaderSource(i, "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"), + t.compileShader(i); + var a = t.createShader(t.FRAGMENT_SHADER); + if (null != a) { + t.shaderSource(a, "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"), + t.compileShader(a), + t.attachShader(o, i), + t.attachShader(o, a), + t.linkProgram(o), + t.useProgram(o); + var s = t.getAttribLocation(o, "attrVertex") + , c = t.getUniformLocation(o, "uniformOffset"); + try { + t.enableVertexAttribArray(o.vertexPosArray), + t.vertexAttribPointer(s, 3, t.FLOAT, !1, 0, 0), + t.uniform2f(c, 1, 1), + t.drawArrays(t.TRIANGLE_STRIP, 0, 3); + var u = t.canvas; + e.push(u.toDataURL()) + } catch (t) {} + return { + hash: J(e[0]), + rawData: e[0] + } + } + } + } + return null + } + function nt() { + try { + var t = document.createElement("canvas"); + t.width = 2e3, + t.height = 200, + t.style.display = "inline"; + var e = t.getContext("2d"); + if (null != e) { + e.textBaseline = "alphabetic", + e.fillStyle = "#f60", + e.fillRect(125, 1, 62, 20), + e.fillStyle = "#069", + e.font = "11pt Arial", + e.globalCompositeOperation = "multiply", + e.fillStyle = "rgb(255,255,0)", + e.beginPath(), + e.arc(75, 100, 50, 0, 2 * Math.PI, !0), + e.closePath(), + e.fill(), + e.fillStyle = "rgb(255,0,255)", + e.arc(75, 75, 75, 0, 2 * Math.PI, !0), + e.arc(75, 75, 25, 0, 2 * Math.PI, !0), + e.fill("evenodd"); + var n = t.toDataURL(); + return { + hash: J(n), + rawData: n + } + } + } catch (t) {} + return null + } + var rt = Math + , ot = function() { + return 0 + }; + function it() { + var t, e = rt.acos || ot, n = rt.acosh || ot, r = rt.asin || ot, o = rt.asinh || ot, i = rt.atanh || ot, a = rt.atan || ot, s = rt.sin || ot, c = rt.sinh || ot, u = rt.cos || ot, l = rt.cosh || ot, d = rt.tan || ot, p = rt.tanh || ot, h = rt.exp || ot, m = rt.expm1 || ot, f = rt.log1p || ot, g = { + acos: e(.12312423423423424), + acosh: n(1e308), + acoshPf: (t = 1e154, + rt.log(t + rt.sqrt(t * t - 1))), + asin: r(.12312423423423424), + asinh: o(1), + asinhPf: function(t) { + return rt.log(t + rt.sqrt(t * t + 1)) + }(1), + atanh: i(.5), + atanhPf: function(t) { + return rt.log((1 + t) / (1 - t)) / 2 + }(.5), + atan: a(.5), + sin: s(-1e300), + sinh: c(1), + sinhPf: function(t) { + return rt.exp(t) - 1 / rt.exp(t) / 2 + }(1), + cos: u(10.000000000123), + cosh: l(1), + coshPf: function(t) { + return (rt.exp(t) + 1 / rt.exp(t)) / 2 + }(1), + tan: d(-1e300), + tanh: p(1), + tanhPf: function(t) { + return (rt.exp(2 * t) - 1) / (rt.exp(2 * t) + 1) + }(1), + exp: h(1), + expm1: m(1), + expm1Pf: function(t) { + return rt.exp(t) - 1 + }(1), + log1p: f(10), + log1pPf: function(t) { + return rt.log(1 + t) + }(10), + powPI: function(t) { + return rt.pow(rt.PI, t) + }(-100) + }; + return { + h: J(JSON.stringify(g)), + d: g + } + } + function at(t) { + var e = 0; + for (var n in t) + e++; + return { + pc: Object.getOwnPropertyNames(t).length, + kc: Object.keys(t).length, + lc: e + } + } + function st() { + return new Promise((function(t, e) { + var n = "" + , r = "" + , o = { + timeout: 1e3, + excludeIOS11: !0 + }; + if (navigator.userAgent.match(/OS 11.+Version\/11.+Safari/)) + return t(n); + var i = window.OfflineAudioContext; + if (null == i) + return t(r); + var a = new i(1,44100,44100) + , s = a.createOscillator(); + s.type = "triangle", + s.frequency.setValueAtTime(1e4, a.currentTime); + var c = a.createDynamicsCompressor(); + [["threshold", -50], ["knee", 40], ["ratio", 12], ["reduction", -20], ["attack", 0], ["release", .25]].forEach((function(t, e, n) { + var r = t[0] + , o = c[r]; + void 0 !== o && "function" == typeof o.setValueAtTime && o.setValueAtTime(t[1], a && a.currentTime || 0) + } + )), + s.connect(c), + c.connect(a.destination), + s.start(0), + a.startRendering(); + var u = setTimeout((function() { + return a = void 0, + t("audioTimeout") + } + ), o.timeout); + a.oncomplete = function(e) { + var n; + try { + clearTimeout(u), + n = e.renderedBuffer.getChannelData(0).slice(4500, 5e3).reduce((function(t, e) { + return t + Math.abs(e) + } + ), 0).toString(), + s.disconnect(), + c.disconnect() + } catch (e) { + return void t(e) + } + t(n) + } + } + )).then((function(t) { + return { + hash: J(t + ""), + rawData: t + } + } + )) + } + function ct(t) { + var e = new (window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection)({ + iceServers: [{ + urls: ["stun:stun.rapidnet.de:3478", "stun:stun.voipwise.com:3478", "stun:stun.voipzoom.com:3478", "stun:stun.voipstunt.com:3478", "stun:stun.voxgratia.org:3478", "stun:stun.l.google.com:19302"] + }] + }); + e.createDataChannel(""), + e.createOffer().then((function(t) { + e.setLocalDescription(t) + } + )); + var n = { + can: "", + sdp: "" + }; + e.onicecandidate = function(e) { + if (e && e.candidate) { + var r = e.target.localDescription + , o = r && r.sdp; + n.can += ";" + e.candidate.candidate, + e.target && o ? n.sdp += ";" + o : n.sdp += ";", + t && t(n) + } + } + } + function ut() { + return Array.prototype.slice.apply(document.querySelectorAll("script")).filter((function(t) { + return t.src + } + )).map((function(t) { + return t.src + } + )) + } + function lt() { + var t = (new Error).stack; + return null == (t = null == t ? void 0 : t.replace("Error\n", "")) ? void 0 : t.replace(/\s*/g, "") + } + function dt(t, e, n) { + var r = void 0 === e ? null : e + , o = function(t, e) { + var n = atob(t); + if (e) { + for (var r = new Uint8Array(n.length), o = 0, i = n.length; o < i; ++o) + r[o] = n.charCodeAt(o); + return String.fromCharCode.apply(null, new Uint16Array(r.buffer)) + } + return n + }(t, void 0 !== n && n) + , i = o.indexOf("\n", 10) + 1 + , a = o.substring(i) + (r ? "//# sourceMappingURL=" + r : "") + , s = new Blob([a],{ + type: "application/javascript" + }); + return URL.createObjectURL(s) + } + function pt(t, e, n) { + var r; + return function(o) { + return r = r || dt(t, e, n), + new Worker(r,o) + } + } + var ht = pt("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGUodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBuKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH1mdW5jdGlvbiByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmkodCxlKX1mdW5jdGlvbiBvKHQpe3JldHVybihvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9KSh0KX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuKGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfWZ1bmN0aW9uIGEoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIHUodCxlLG4pe3JldHVybih1PWEoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbih0LGUsbil7dmFyIHI9W251bGxdO3IucHVzaC5hcHBseShyLGUpO3ZhciBvPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHQscikpO3JldHVybiBuJiZpKG8sbi5wcm90b3R5cGUpLG99KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiFlfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2Z1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCk6ZX1mdW5jdGlvbiBjKHQpe3ZhciBlPWEoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixyPW8odCk7aWYoZSl7dmFyIGk9byh0aGlzKS5jb25zdHJ1Y3RvcjtuPVJlZmxlY3QuY29uc3RydWN0KHIsYXJndW1lbnRzLGkpfWVsc2Ugbj1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcyh0aGlzLG4pfX1mdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4oZj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0LGUpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZudWxsIT09KHQ9byh0KSk7KTtyZXR1cm4gdH0odCxlKTtpZihyKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSk7cmV0dXJuIGkuZ2V0P2kuZ2V0LmNhbGwobik6aS52YWx1ZX19KSh0LGUsbnx8dCl9dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dCh0aGlzLGUpfXJldHVybiBuKGUsW3trZXk6Im1peEluIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx0aGlzKSx0fX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHUodGhpcyxlKX19XSksZX0oKSxoPWZ1bmN0aW9uKGUpe3IoYSxlKTt2YXIgaT1jKGEpO2Z1bmN0aW9uIGEoKXt2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0Km4ubGVuZ3RoO3QodGhpcyxhKSxlPWkuY2FsbCh0aGlzKTt2YXIgbz1uO2lmKG8gaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKG89bmV3IFVpbnQ4QXJyYXkobykpLChvIGluc3RhbmNlb2YgSW50OEFycmF5fHxvIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fG8gaW5zdGFuY2VvZiBJbnQxNkFycmF5fHxvIGluc3RhbmNlb2YgVWludDE2QXJyYXl8fG8gaW5zdGFuY2VvZiBJbnQzMkFycmF5fHxvIGluc3RhbmNlb2YgVWludDMyQXJyYXl8fG8gaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fG8gaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpJiYobz1uZXcgVWludDhBcnJheShvLmJ1ZmZlcixvLmJ5dGVPZmZzZXQsby5ieXRlTGVuZ3RoKSksbyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2Zvcih2YXIgdT1vLmJ5dGVMZW5ndGgscz1bXSxjPTA7Yzx1O2MrPTEpc1tjPj4+Ml18PW9bY108PDI0LWMlNCo4O2Uud29yZHM9cyxlLnNpZ0J5dGVzPXV9ZWxzZSBlLndvcmRzPW4sZS5zaWdCeXRlcz1yO3JldHVybiBlfXJldHVybiBuKGEsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp2O3JldHVybiB0LnN0cmluZ2lmeSh0aGlzKX19LHtrZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53b3JkcyxuPXQud29yZHMscj10aGlzLnNpZ0J5dGVzLG89dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksciU0KWZvcih2YXIgaT0wO2k8bztpKz0xKXt2YXIgYT1uW2k+Pj4yXT4+PjI0LWklNCo4JjI1NTtlW3IraT4+PjJdfD1hPDwyNC0ocitpKSU0Kjh9ZWxzZSBmb3IodmFyIHU9MDt1PG87dSs9NCllW3IrdT4+PjJdPW5bdT4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1vLHRoaXN9fSx7a2V5OiJjbGFtcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlczt0W2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0KjgsdC5sZW5ndGg9TWF0aC5jZWlsKGUvNCl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1mKG8oYS5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9fV0sW3trZXk6InJhbmRvbSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10scj1mdW5jdGlvbih0KXt2YXIgZT10LG49OTg3NjU0MzIxLHI9NDI5NDk2NzI5NTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD0oKG49MzY5NjkqKDY1NTM1Jm4pKyhuPj4xNikmcik8PDE2KSsoZT0xOGUzKig2NTUzNSZlKSsoZT4+MTYpJnIpJnI7cmV0dXJuIHQvPTQyOTQ5NjcyOTYsKHQrPS41KSooTWF0aC5yYW5kb20oKT4uNT8xOi0xKX19LG89MDtvPHQ7bys9NCl7dmFyIGk9cig0Mjk0OTY3Mjk2KihlfHxNYXRoLnJhbmRvbSgpKSk7ZT05ODc2NTQwNzEqaSgpLG4ucHVzaCg0Mjk0OTY3Mjk2KmkoKXwwKX1yZXR1cm4gbmV3IGEobix0KX19XSksYX0obCksdj17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LndvcmRzLG49dC5zaWdCeXRlcyxyPVtdLG89MDtvPG47bys9MSl7dmFyIGk9ZVtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7ci5wdXNoKChpPj4+NCkudG9TdHJpbmcoMTYpKSxyLnB1c2goKDE1JmkpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHIuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVtdLHI9MDtyPGU7cis9MiluW3I+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIociwyKSwxNik8PDI0LXIlOCo0O3JldHVybiBuZXcgaChuLGUvMil9fSx5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVtdLHI9MDtyPGU7cis9MSluW3I+Pj4yXXw9KDI1NSZ0LmNoYXJDb2RlQXQocikpPDwyNC1yJTQqODtyZXR1cm4gbmV3IGgobixlKX0scD1mdW5jdGlvbih0KXtyZXR1cm4geSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX0sZD1mdW5jdGlvbihlKXtyKGEsZSk7dmFyIGk9YyhhKTtmdW5jdGlvbiBhKGUpe3ZhciBuO3JldHVybiB0KHRoaXMsYSksKG49aS5jYWxsKHRoaXMpKS5ibG9ja1NpemU9MTYsbi5jZmc9T2JqZWN0LmFzc2lnbihuZXcgbCxlKSxuLnJlc2V0KCksbn1yZXR1cm4gbihhLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXtmKG8oYS5wcm90b3R5cGUpLCJyZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnRoaXMuX2FwcGVuZCh0KSx0aGlzLl9kb0ZpbmFsaXplKCl9fV0sW3trZXk6Il9jcmVhdGVIZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBuZXcgdChuKS5maW5hbGl6ZShlKX19fSx7a2V5OiJfY3JlYXRlSG1hY0hlbHBlciIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyBnKHQsbikuZmluYWxpemUoZSl9fX1dKSxhfShmdW5jdGlvbihlKXtyKGEsZSk7dmFyIGk9YyhhKTtmdW5jdGlvbiBhKCl7dmFyIGU7cmV0dXJuIHQodGhpcyxhKSwoZT1pLmNhbGwodGhpcykpLl9taW5CdWZmZXJTaXplPTAsZX1yZXR1cm4gbihhLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBoLHRoaXMuX25EYXRhQnl0ZXM9MH19LHtrZXk6Il9hcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQ7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1wKGUpKSx0aGlzLl9kYXRhLmNvbmNhdChlKSx0aGlzLl9uRGF0YUJ5dGVzKz1lLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5fZGF0YSxyPXRoaXMuYmxvY2tTaXplLG89bi53b3JkcyxpPW4uc2lnQnl0ZXMsYT1pLyg0KnIpLHU9KGE9dD9NYXRoLmNlaWwoYSk6TWF0aC5tYXgoKDB8YSktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqcixzPU1hdGgubWluKDQqdSxpKTtpZih1KXtmb3IodmFyIGM9MDtjPHU7Yys9cil0aGlzLl9kb1Byb2Nlc3NCbG9jayhvLGMpO2U9by5zcGxpY2UoMCx1KSxuLnNpZ0J5dGVzLT1zfXJldHVybiBuZXcgaChlLHMpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZihvKGEucHJvdG90eXBlKSwiY2xvbmUiLHRoaXMpLmNhbGwodGhpcyk7cmV0dXJuIHQuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLHR9fV0pLGF9KGwpKSxnPWZ1bmN0aW9uKGUpe3IoaSxlKTt2YXIgbz1jKGkpO2Z1bmN0aW9uIGkoZSxuKXt2YXIgcjt0KHRoaXMsaSkscj1vLmNhbGwodGhpcyk7dmFyIGE9bmV3IGU7ci5faGFzaGVyPWE7dmFyIHU9bjsic3RyaW5nIj09dHlwZW9mIHUmJih1PXAodSkpO3ZhciBzPWEuYmxvY2tTaXplLGM9NCpzO3Uuc2lnQnl0ZXM+YyYmKHU9YS5maW5hbGl6ZShuKSksdS5jbGFtcCgpO3ZhciBmPXUuY2xvbmUoKTtyLl9vS2V5PWY7dmFyIGw9dS5jbG9uZSgpO3IuX2lLZXk9bDtmb3IodmFyIGg9Zi53b3Jkcyx2PWwud29yZHMseT0wO3k8czt5Kz0xKWhbeV1ePTE1NDk1NTY4Mjgsdlt5XV49OTA5NTIyNDg2O3JldHVybiBmLnNpZ0J5dGVzPWMsbC5zaWdCeXRlcz1jLHIucmVzZXQoKSxyfXJldHVybiBuKGksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKHQpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faGFzaGVyLG49ZS5maW5hbGl6ZSh0KTtyZXR1cm4gZS5yZXNldCgpLGUuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChuKSl9fV0pLGl9KGwpLF89W10sdz1mdW5jdGlvbihlKXtyKGEsZSk7dmFyIGk9YyhhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIHQodGhpcyxhKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gbihhLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBoKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfX0se2tleToiX2RvUHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLl9oYXNoLndvcmRzLHI9blswXSxvPW5bMV0saT1uWzJdLGE9blszXSx1PW5bNF0scz0wO3M8ODA7cys9MSl7aWYoczwxNilfW3NdPTB8dFtlK3NdO2Vsc2V7dmFyIGM9X1tzLTNdXl9bcy04XV5fW3MtMTRdXl9bcy0xNl07X1tzXT1jPDwxfGM+Pj4zMX12YXIgZj0ocjw8NXxyPj4+MjcpK3UrX1tzXTtmKz1zPDIwPzE1MTg1MDAyNDkrKG8maXx+byZhKTpzPDQwPzE4NTk3NzUzOTMrKG9eaV5hKTpzPDYwPyhvJml8byZhfGkmYSktMTg5NDAwNzU4ODoob15pXmEpLTg5OTQ5NzUxNCx1PWEsYT1pLGk9bzw8MzB8bz4+PjIsbz1yLHI9Zn1uWzBdPW5bMF0rcnwwLG5bMV09blsxXStvfDAsblsyXT1uWzJdK2l8MCxuWzNdPW5bM10rYXwwLG5bNF09bls0XSt1fDB9fSx7a2V5OiJfZG9GaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxuPTgqdGhpcy5fbkRhdGFCeXRlcyxyPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtyPj4+NV18PTEyODw8MjQtciUzMixlWzE0KyhyKzY0Pj4+OTw8NCldPU1hdGguZmxvb3Iobi80Mjk0OTY3Mjk2KSxlWzE1KyhyKzY0Pj4+OTw8NCldPW4sdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZihvKGEucHJvdG90eXBlKSwiY2xvbmUiLHRoaXMpLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fV0pLGF9KGQpO2QuX2NyZWF0ZUhlbHBlcih3KSxkLl9jcmVhdGVIbWFjSGVscGVyKHcpO3ZhciBiLGs9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZT10LndvcmRzLG49dC5zaWdCeXRlcyxyPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBvPVtdLGk9MDtpPG47aSs9Mylmb3IodmFyIGE9KGVbaT4+PjJdPj4+MjQtaSU0KjgmMjU1KTw8MTZ8KGVbaSsxPj4+Ml0+Pj4yNC0oaSsxKSU0KjgmMjU1KTw8OHxlW2krMj4+PjJdPj4+MjQtKGkrMiklNCo4JjI1NSx1PTA7dTw0JiZpKy43NSp1PG47dSs9MSlvLnB1c2goci5jaGFyQXQoYT4+PjYqKDMtdSkmNjMpKTt2YXIgcz1yLmNoYXJBdCg2NCk7aWYocylmb3IoO28ubGVuZ3RoJTQ7KW8ucHVzaChzKTtyZXR1cm4gby5qb2luKCIiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbj10aGlzLl9tYXAscj10aGlzLl9yZXZlcnNlTWFwO2lmKCFyKXt0aGlzLl9yZXZlcnNlTWFwPVtdLHI9dGhpcy5fcmV2ZXJzZU1hcDtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rPTEpcltuLmNoYXJDb2RlQXQobyldPW99dmFyIGk9bi5jaGFyQXQoNjQpO2lmKGkpe3ZhciBhPXQuaW5kZXhPZihpKTstMSE9PWEmJihlPWEpfXJldHVybiBmdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPVtdLG89MCxpPTA7aTxlO2krPTEpaWYoaSU0KXt2YXIgYT1uW3QuY2hhckNvZGVBdChpLTEpXTw8aSU0KjJ8blt0LmNoYXJDb2RlQXQoaSldPj4+Ni1pJTQqMjtyW28+Pj4yXXw9YTw8MjQtbyU0Kjgsbys9MX1yZXR1cm4gaC5jcmVhdGUocixvKX0odCxlLHIpfSxfbWFwOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSJ9LG09InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj0oNjU1MzUmdCkrKDY1NTM1JmUpO3JldHVybih0Pj4xNikrKGU+PjE2KSsobj4+MTYpPDwxNnw2NTUzNSZufWZ1bmN0aW9uIHIodCxlLHIsbyxpLGEpe3JldHVybiBuKCh1PW4obihlLHQpLG4obyxhKSkpPDwocz1pKXx1Pj4+MzItcyxyKTt2YXIgdSxzfWZ1bmN0aW9uIG8odCxlLG4sbyxpLGEsdSl7cmV0dXJuIHIoZSZufH5lJm8sdCxlLGksYSx1KX1mdW5jdGlvbiBpKHQsZSxuLG8saSxhLHUpe3JldHVybiByKGUmb3xuJn5vLHQsZSxpLGEsdSl9ZnVuY3Rpb24gYSh0LGUsbixvLGksYSx1KXtyZXR1cm4gcihlXm5ebyx0LGUsaSxhLHUpfWZ1bmN0aW9uIHUodCxlLG4sbyxpLGEsdSl7cmV0dXJuIHIobl4oZXx+byksdCxlLGksYSx1KX1mdW5jdGlvbiBzKHQsZSl7dmFyIHIscyxjLGYsbDt0W2U+PjVdfD0xMjg8PGUlMzIsdFsxNCsoZSs2ND4+Pjk8PDQpXT1lO3ZhciBoPTE3MzI1ODQxOTMsdj0tMjcxNzMzODc5LHk9LTE3MzI1ODQxOTQscD0yNzE3MzM4Nzg7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrPTE2KXM9aCxjPXYsZj15LGw9cCxoPW8oaCx2LHkscCx0W3JdLDcsLTY4MDg3NjkzNikscD1vKHAsaCx2LHksdFtyKzFdLDEyLC0zODk1NjQ1ODYpLHk9byh5LHAsaCx2LHRbcisyXSwxNyw2MDYxMDU4MTkpLHY9byh2LHkscCxoLHRbciszXSwyMiwtMTA0NDUyNTMzMCksaD1vKGgsdix5LHAsdFtyKzRdLDcsLTE3NjQxODg5NykscD1vKHAsaCx2LHksdFtyKzVdLDEyLDEyMDAwODA0MjYpLHk9byh5LHAsaCx2LHRbcis2XSwxNywtMTQ3MzIzMTM0MSksdj1vKHYseSxwLGgsdFtyKzddLDIyLC00NTcwNTk4MyksaD1vKGgsdix5LHAsdFtyKzhdLDcsMTc3MDAzNTQxNikscD1vKHAsaCx2LHksdFtyKzldLDEyLC0xOTU4NDE0NDE3KSx5PW8oeSxwLGgsdix0W3IrMTBdLDE3LC00MjA2Myksdj1vKHYseSxwLGgsdFtyKzExXSwyMiwtMTk5MDQwNDE2MiksaD1vKGgsdix5LHAsdFtyKzEyXSw3LDE4MDQ2MDM2ODIpLHA9byhwLGgsdix5LHRbcisxM10sMTIsLTQwMzQxMTAxKSx5PW8oeSxwLGgsdix0W3IrMTRdLDE3LC0xNTAyMDAyMjkwKSxoPWkoaCx2PW8odix5LHAsaCx0W3IrMTVdLDIyLDEyMzY1MzUzMjkpLHkscCx0W3IrMV0sNSwtMTY1Nzk2NTEwKSxwPWkocCxoLHYseSx0W3IrNl0sOSwtMTA2OTUwMTYzMikseT1pKHkscCxoLHYsdFtyKzExXSwxNCw2NDM3MTc3MTMpLHY9aSh2LHkscCxoLHRbcl0sMjAsLTM3Mzg5NzMwMiksaD1pKGgsdix5LHAsdFtyKzVdLDUsLTcwMTU1ODY5MSkscD1pKHAsaCx2LHksdFtyKzEwXSw5LDM4MDE2MDgzKSx5PWkoeSxwLGgsdix0W3IrMTVdLDE0LC02NjA0NzgzMzUpLHY9aSh2LHkscCxoLHRbcis0XSwyMCwtNDA1NTM3ODQ4KSxoPWkoaCx2LHkscCx0W3IrOV0sNSw1Njg0NDY0MzgpLHA9aShwLGgsdix5LHRbcisxNF0sOSwtMTAxOTgwMzY5MCkseT1pKHkscCxoLHYsdFtyKzNdLDE0LC0xODczNjM5NjEpLHY9aSh2LHkscCxoLHRbcis4XSwyMCwxMTYzNTMxNTAxKSxoPWkoaCx2LHkscCx0W3IrMTNdLDUsLTE0NDQ2ODE0NjcpLHA9aShwLGgsdix5LHRbcisyXSw5LC01MTQwMzc4NCkseT1pKHkscCxoLHYsdFtyKzddLDE0LDE3MzUzMjg0NzMpLGg9YShoLHY9aSh2LHkscCxoLHRbcisxMl0sMjAsLTE5MjY2MDc3MzQpLHkscCx0W3IrNV0sNCwtMzc4NTU4KSxwPWEocCxoLHYseSx0W3IrOF0sMTEsLTIwMjI1NzQ0NjMpLHk9YSh5LHAsaCx2LHRbcisxMV0sMTYsMTgzOTAzMDU2Miksdj1hKHYseSxwLGgsdFtyKzE0XSwyMywtMzUzMDk1NTYpLGg9YShoLHYseSxwLHRbcisxXSw0LC0xNTMwOTkyMDYwKSxwPWEocCxoLHYseSx0W3IrNF0sMTEsMTI3Mjg5MzM1MykseT1hKHkscCxoLHYsdFtyKzddLDE2LC0xNTU0OTc2MzIpLHY9YSh2LHkscCxoLHRbcisxMF0sMjMsLTEwOTQ3MzA2NDApLGg9YShoLHYseSxwLHRbcisxM10sNCw2ODEyNzkxNzQpLHA9YShwLGgsdix5LHRbcl0sMTEsLTM1ODUzNzIyMikseT1hKHkscCxoLHYsdFtyKzNdLDE2LC03MjI1MjE5NzkpLHY9YSh2LHkscCxoLHRbcis2XSwyMyw3NjAyOTE4OSksaD1hKGgsdix5LHAsdFtyKzldLDQsLTY0MDM2NDQ4NykscD1hKHAsaCx2LHksdFtyKzEyXSwxMSwtNDIxODE1ODM1KSx5PWEoeSxwLGgsdix0W3IrMTVdLDE2LDUzMDc0MjUyMCksaD11KGgsdj1hKHYseSxwLGgsdFtyKzJdLDIzLC05OTUzMzg2NTEpLHkscCx0W3JdLDYsLTE5ODYzMDg0NCkscD11KHAsaCx2LHksdFtyKzddLDEwLDExMjY4OTE0MTUpLHk9dSh5LHAsaCx2LHRbcisxNF0sMTUsLTE0MTYzNTQ5MDUpLHY9dSh2LHkscCxoLHRbcis1XSwyMSwtNTc0MzQwNTUpLGg9dShoLHYseSxwLHRbcisxMl0sNiwxNzAwNDg1NTcxKSxwPXUocCxoLHYseSx0W3IrM10sMTAsLTE4OTQ5ODY2MDYpLHk9dSh5LHAsaCx2LHRbcisxMF0sMTUsLTEwNTE1MjMpLHY9dSh2LHkscCxoLHRbcisxXSwyMSwtMjA1NDkyMjc5OSksaD11KGgsdix5LHAsdFtyKzhdLDYsMTg3MzMxMzM1OSkscD11KHAsaCx2LHksdFtyKzE1XSwxMCwtMzA2MTE3NDQpLHk9dSh5LHAsaCx2LHRbcis2XSwxNSwtMTU2MDE5ODM4MCksdj11KHYseSxwLGgsdFtyKzEzXSwyMSwxMzA5MTUxNjQ5KSxoPXUoaCx2LHkscCx0W3IrNF0sNiwtMTQ1NTIzMDcwKSxwPXUocCxoLHYseSx0W3IrMTFdLDEwLC0xMTIwMjEwMzc5KSx5PXUoeSxwLGgsdix0W3IrMl0sMTUsNzE4Nzg3MjU5KSx2PXUodix5LHAsaCx0W3IrOV0sMjEsLTM0MzQ4NTU1MSksaD1uKGgscyksdj1uKHYsYykseT1uKHksZikscD1uKHAsbCk7cmV0dXJuW2gsdix5LHBdfWZ1bmN0aW9uIGModCl7dmFyIGUsbj0iIixyPTMyKnQubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrPTgpbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W2U+PjVdPj4+ZSUzMiYyNTUpO3JldHVybiBufWZ1bmN0aW9uIGYodCl7dmFyIGUsbj1bXTtmb3IoblsodC5sZW5ndGg+PjIpLTFdPXZvaWQgMCxlPTA7ZTxuLmxlbmd0aDtlKz0xKW5bZV09MDt2YXIgcj04KnQubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrPTgpbltlPj41XXw9KDI1NSZ0LmNoYXJDb2RlQXQoZS84KSk8PGUlMzI7cmV0dXJuIG59ZnVuY3Rpb24gbCh0KXt2YXIgZSxuLHI9IjAxMjM0NTY3ODlhYmNkZWYiLG89IiI7Zm9yKG49MDtuPHQubGVuZ3RoO24rPTEpZT10LmNoYXJDb2RlQXQobiksbys9ci5jaGFyQXQoZT4+PjQmMTUpK3IuY2hhckF0KDE1JmUpO3JldHVybiBvfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh0KSl9ZnVuY3Rpb24gdih0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGMocyhmKHQpLDgqdC5sZW5ndGgpKX0oaCh0KSl9ZnVuY3Rpb24geSh0LGUpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuLHIsbz1mKHQpLGk9W10sYT1bXTtmb3IoaVsxNV09YVsxNV09dm9pZCAwLG8ubGVuZ3RoPjE2JiYobz1zKG8sOCp0Lmxlbmd0aCkpLG49MDtuPDE2O24rPTEpaVtuXT05MDk1MjI0ODZeb1tuXSxhW25dPTE1NDk1NTY4Mjheb1tuXTtyZXR1cm4gcj1zKGkuY29uY2F0KGYoZSkpLDUxMis4KmUubGVuZ3RoKSxjKHMoYS5jb25jYXQociksNjQwKSl9KGgodCksaChlKSl9ZnVuY3Rpb24gcCh0LGUsbil7cmV0dXJuIGU/bj95KGUsdCk6bCh5KGUsdCkpOm4/dih0KTpsKHYodCkpfXQuZXhwb3J0cz90LmV4cG9ydHM9cDplLm1kNT1wfShtKX0pKGI9e2V4cG9ydHM6e319LGIuZXhwb3J0cyksb25tZXNzYWdlPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiBrLnN0cmluZ2lmeShwKHQpKX0odC5kYXRhKTtzZWxmLnBvc3RNZXNzYWdlKGUpLHNlbGYuY2xvc2UoKX19KCk7Cgo=", null, !1) + , mt = pt("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGUodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBuKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH1mdW5jdGlvbiByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmkodCxlKX1mdW5jdGlvbiBvKHQpe3JldHVybihvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9KSh0KX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuKGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfWZ1bmN0aW9uIGEoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIHUodCxlLG4pe3JldHVybih1PWEoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbih0LGUsbil7dmFyIHI9W251bGxdO3IucHVzaC5hcHBseShyLGUpO3ZhciBvPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHQscikpO3JldHVybiBuJiZpKG8sbi5wcm90b3R5cGUpLG99KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiFlfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2Z1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCk6ZX1mdW5jdGlvbiBjKHQpe3ZhciBlPWEoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixyPW8odCk7aWYoZSl7dmFyIGk9byh0aGlzKS5jb25zdHJ1Y3RvcjtuPVJlZmxlY3QuY29uc3RydWN0KHIsYXJndW1lbnRzLGkpfWVsc2Ugbj1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcyh0aGlzLG4pfX1mdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4oZj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0LGUpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZudWxsIT09KHQ9byh0KSk7KTtyZXR1cm4gdH0odCxlKTtpZihyKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSk7cmV0dXJuIGkuZ2V0P2kuZ2V0LmNhbGwobik6aS52YWx1ZX19KSh0LGUsbnx8dCl9dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dCh0aGlzLGUpfXJldHVybiBuKGUsW3trZXk6Im1peEluIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx0aGlzKSx0fX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHUodGhpcyxlKX19XSksZX0oKSxoPWZ1bmN0aW9uKGUpe3IoYSxlKTt2YXIgaT1jKGEpO2Z1bmN0aW9uIGEoKXt2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0Km4ubGVuZ3RoO3QodGhpcyxhKSxlPWkuY2FsbCh0aGlzKTt2YXIgbz1uO2lmKG8gaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKG89bmV3IFVpbnQ4QXJyYXkobykpLChvIGluc3RhbmNlb2YgSW50OEFycmF5fHxvIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fG8gaW5zdGFuY2VvZiBJbnQxNkFycmF5fHxvIGluc3RhbmNlb2YgVWludDE2QXJyYXl8fG8gaW5zdGFuY2VvZiBJbnQzMkFycmF5fHxvIGluc3RhbmNlb2YgVWludDMyQXJyYXl8fG8gaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fG8gaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpJiYobz1uZXcgVWludDhBcnJheShvLmJ1ZmZlcixvLmJ5dGVPZmZzZXQsby5ieXRlTGVuZ3RoKSksbyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2Zvcih2YXIgdT1vLmJ5dGVMZW5ndGgscz1bXSxjPTA7Yzx1O2MrPTEpc1tjPj4+Ml18PW9bY108PDI0LWMlNCo4O2Uud29yZHM9cyxlLnNpZ0J5dGVzPXV9ZWxzZSBlLndvcmRzPW4sZS5zaWdCeXRlcz1yO3JldHVybiBlfXJldHVybiBuKGEsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp2O3JldHVybiB0LnN0cmluZ2lmeSh0aGlzKX19LHtrZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53b3JkcyxuPXQud29yZHMscj10aGlzLnNpZ0J5dGVzLG89dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksciU0KWZvcih2YXIgaT0wO2k8bztpKz0xKXt2YXIgYT1uW2k+Pj4yXT4+PjI0LWklNCo4JjI1NTtlW3IraT4+PjJdfD1hPDwyNC0ocitpKSU0Kjh9ZWxzZSBmb3IodmFyIHU9MDt1PG87dSs9NCllW3IrdT4+PjJdPW5bdT4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1vLHRoaXN9fSx7a2V5OiJjbGFtcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlczt0W2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0KjgsdC5sZW5ndGg9TWF0aC5jZWlsKGUvNCl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1mKG8oYS5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9fV0sW3trZXk6InJhbmRvbSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10scj1mdW5jdGlvbih0KXt2YXIgZT10LG49OTg3NjU0MzIxLHI9NDI5NDk2NzI5NTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD0oKG49MzY5NjkqKDY1NTM1Jm4pKyhuPj4xNikmcik8PDE2KSsoZT0xOGUzKig2NTUzNSZlKSsoZT4+MTYpJnIpJnI7cmV0dXJuIHQvPTQyOTQ5NjcyOTYsKHQrPS41KSooTWF0aC5yYW5kb20oKT4uNT8xOi0xKX19LG89MDtvPHQ7bys9NCl7dmFyIGk9cig0Mjk0OTY3Mjk2KihlfHxNYXRoLnJhbmRvbSgpKSk7ZT05ODc2NTQwNzEqaSgpLG4ucHVzaCg0Mjk0OTY3Mjk2KmkoKXwwKX1yZXR1cm4gbmV3IGEobix0KX19XSksYX0obCksdj17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LndvcmRzLG49dC5zaWdCeXRlcyxyPVtdLG89MDtvPG47bys9MSl7dmFyIGk9ZVtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7ci5wdXNoKChpPj4+NCkudG9TdHJpbmcoMTYpKSxyLnB1c2goKDE1JmkpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHIuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVtdLHI9MDtyPGU7cis9MiluW3I+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIociwyKSwxNik8PDI0LXIlOCo0O3JldHVybiBuZXcgaChuLGUvMil9fSxwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LndvcmRzLG49dC5zaWdCeXRlcyxyPVtdLG89MDtvPG47bys9MSl7dmFyIGk9ZVtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXJldHVybiByLmpvaW4oIiIpfSx5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVtdLHI9MDtyPGU7cis9MSluW3I+Pj4yXXw9KDI1NSZ0LmNoYXJDb2RlQXQocikpPDwyNC1yJTQqODtyZXR1cm4gbmV3IGgobixlKX0sZD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocCh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFVURi04IGRhdGEiKX19LGc9ZnVuY3Rpb24odCl7cmV0dXJuIHkodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9LF89ZnVuY3Rpb24oZSl7cihhLGUpO3ZhciBpPWMoYSk7ZnVuY3Rpb24gYShlKXt2YXIgbjtyZXR1cm4gdCh0aGlzLGEpLChuPWkuY2FsbCh0aGlzKSkuYmxvY2tTaXplPTE2LG4uY2ZnPU9iamVjdC5hc3NpZ24obmV3IGwsZSksbi5yZXNldCgpLG59cmV0dXJuIG4oYSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7ZihvKGEucHJvdG90eXBlKSwicmVzZXQiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hcHBlbmQodCksdGhpcy5fZG9GaW5hbGl6ZSgpfX1dLFt7a2V5OiJfY3JlYXRlSGVscGVyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gbmV3IHQobikuZmluYWxpemUoZSl9fX0se2tleToiX2NyZWF0ZUhtYWNIZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBuZXcgdyh0LG4pLmZpbmFsaXplKGUpfX19XSksYX0oZnVuY3Rpb24oZSl7cihhLGUpO3ZhciBpPWMoYSk7ZnVuY3Rpb24gYSgpe3ZhciBlO3JldHVybiB0KHRoaXMsYSksKGU9aS5jYWxsKHRoaXMpKS5fbWluQnVmZmVyU2l6ZT0wLGV9cmV0dXJuIG4oYSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgaCx0aGlzLl9uRGF0YUJ5dGVzPTB9fSx7a2V5OiJfYXBwZW5kIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10OyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZyhlKSksdGhpcy5fZGF0YS5jb25jYXQoZSksdGhpcy5fbkRhdGFCeXRlcys9ZS5zaWdCeXRlc319LHtrZXk6Il9wcm9jZXNzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuX2RhdGEscj10aGlzLmJsb2NrU2l6ZSxvPW4ud29yZHMsaT1uLnNpZ0J5dGVzLGE9aS8oNCpyKSx1PShhPXQ/TWF0aC5jZWlsKGEpOk1hdGgubWF4KCgwfGEpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCkpKnIscz1NYXRoLm1pbig0KnUsaSk7aWYodSl7Zm9yKHZhciBjPTA7Yzx1O2MrPXIpdGhpcy5fZG9Qcm9jZXNzQmxvY2sobyxjKTtlPW8uc3BsaWNlKDAsdSksbi5zaWdCeXRlcy09c31yZXR1cm4gbmV3IGgoZSxzKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWYobyhhLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fX1dKSxhfShsKSksdz1mdW5jdGlvbihlKXtyKGksZSk7dmFyIG89YyhpKTtmdW5jdGlvbiBpKGUsbil7dmFyIHI7dCh0aGlzLGkpLHI9by5jYWxsKHRoaXMpO3ZhciBhPW5ldyBlO3IuX2hhc2hlcj1hO3ZhciB1PW47InN0cmluZyI9PXR5cGVvZiB1JiYodT1nKHUpKTt2YXIgcz1hLmJsb2NrU2l6ZSxjPTQqczt1LnNpZ0J5dGVzPmMmJih1PWEuZmluYWxpemUobikpLHUuY2xhbXAoKTt2YXIgZj11LmNsb25lKCk7ci5fb0tleT1mO3ZhciBsPXUuY2xvbmUoKTtyLl9pS2V5PWw7Zm9yKHZhciBoPWYud29yZHMsdj1sLndvcmRzLHA9MDtwPHM7cCs9MSloW3BdXj0xNTQ5NTU2ODI4LHZbcF1ePTkwOTUyMjQ4NjtyZXR1cm4gZi5zaWdCeXRlcz1jLGwuc2lnQnl0ZXM9YyxyLnJlc2V0KCkscn1yZXR1cm4gbihpLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaGVyLnVwZGF0ZSh0KSx0aGlzfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2hhc2hlcixuPWUuZmluYWxpemUodCk7cmV0dXJuIGUucmVzZXQoKSxlLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQobikpfX1dKSxpfShsKSxiPVtdLGs9ZnVuY3Rpb24oZSl7cihhLGUpO3ZhciBpPWMoYSk7ZnVuY3Rpb24gYSgpe3JldHVybiB0KHRoaXMsYSksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG4oYSxbe2tleToiX2RvUmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX19LHtrZXk6Il9kb1Byb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5faGFzaC53b3JkcyxyPW5bMF0sbz1uWzFdLGk9blsyXSxhPW5bM10sdT1uWzRdLHM9MDtzPDgwO3MrPTEpe2lmKHM8MTYpYltzXT0wfHRbZStzXTtlbHNle3ZhciBjPWJbcy0zXV5iW3MtOF1eYltzLTE0XV5iW3MtMTZdO2Jbc109Yzw8MXxjPj4+MzF9dmFyIGY9KHI8PDV8cj4+PjI3KSt1K2Jbc107Zis9czwyMD8xNTE4NTAwMjQ5KyhvJml8fm8mYSk6czw0MD8xODU5Nzc1MzkzKyhvXmleYSk6czw2MD8obyZpfG8mYXxpJmEpLTE4OTQwMDc1ODg6KG9eaV5hKS04OTk0OTc1MTQsdT1hLGE9aSxpPW88PDMwfG8+Pj4yLG89cixyPWZ9blswXT1uWzBdK3J8MCxuWzFdPW5bMV0rb3wwLG5bMl09blsyXStpfDAsblszXT1uWzNdK2F8MCxuWzRdPW5bNF0rdXwwfX0se2tleToiX2RvRmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsbj04KnRoaXMuX25EYXRhQnl0ZXMscj04KnQuc2lnQnl0ZXM7cmV0dXJuIGVbcj4+PjVdfD0xMjg8PDI0LXIlMzIsZVsxNCsocis2ND4+Pjk8PDQpXT1NYXRoLmZsb29yKG4vNDI5NDk2NzI5NiksZVsxNSsocis2ND4+Pjk8PDQpXT1uLHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWYobyhhLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX1dKSxhfShfKTtfLl9jcmVhdGVIZWxwZXIoayksXy5fY3JlYXRlSG1hY0hlbHBlcihrKTt2YXIgbSxCPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC53b3JkcyxuPXQuc2lnQnl0ZXMscj10aGlzLl9tYXA7dC5jbGFtcCgpO2Zvcih2YXIgbz1bXSxpPTA7aTxuO2krPTMpZm9yKHZhciBhPShlW2k+Pj4yXT4+PjI0LWklNCo4JjI1NSk8PDE2fChlW2krMT4+PjJdPj4+MjQtKGkrMSklNCo4JjI1NSk8PDh8ZVtpKzI+Pj4yXT4+PjI0LShpKzIpJTQqOCYyNTUsdT0wO3U8NCYmaSsuNzUqdTxuO3UrPTEpby5wdXNoKHIuY2hhckF0KGE+Pj42KigzLXUpJjYzKSk7dmFyIHM9ci5jaGFyQXQoNjQpO2lmKHMpZm9yKDtvLmxlbmd0aCU0OylvLnB1c2gocyk7cmV0dXJuIG8uam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dGhpcy5fbWFwLHI9dGhpcy5fcmV2ZXJzZU1hcDtpZighcil7dGhpcy5fcmV2ZXJzZU1hcD1bXSxyPXRoaXMuX3JldmVyc2VNYXA7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKz0xKXJbbi5jaGFyQ29kZUF0KG8pXT1vfXZhciBpPW4uY2hhckF0KDY0KTtpZihpKXt2YXIgYT10LmluZGV4T2YoaSk7LTEhPT1hJiYoZT1hKX1yZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1bXSxvPTAsaT0wO2k8ZTtpKz0xKWlmKGklNCl7dmFyIGE9blt0LmNoYXJDb2RlQXQoaS0xKV08PGklNCoyfG5bdC5jaGFyQ29kZUF0KGkpXT4+PjYtaSU0KjI7cltvPj4+Ml18PWE8PDI0LW8lNCo4LG8rPTF9cmV0dXJuIGguY3JlYXRlKHIsbyl9KHQsZSxyKX0sX21hcDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0ifSxBPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307KGZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsZSl7dmFyIG49KDY1NTM1JnQpKyg2NTUzNSZlKTtyZXR1cm4odD4+MTYpKyhlPj4xNikrKG4+PjE2KTw8MTZ8NjU1MzUmbn1mdW5jdGlvbiByKHQsZSxyLG8saSxhKXtyZXR1cm4gbigodT1uKG4oZSx0KSxuKG8sYSkpKTw8KHM9aSl8dT4+PjMyLXMscik7dmFyIHUsc31mdW5jdGlvbiBvKHQsZSxuLG8saSxhLHUpe3JldHVybiByKGUmbnx+ZSZvLHQsZSxpLGEsdSl9ZnVuY3Rpb24gaSh0LGUsbixvLGksYSx1KXtyZXR1cm4gcihlJm98biZ+byx0LGUsaSxhLHUpfWZ1bmN0aW9uIGEodCxlLG4sbyxpLGEsdSl7cmV0dXJuIHIoZV5uXm8sdCxlLGksYSx1KX1mdW5jdGlvbiB1KHQsZSxuLG8saSxhLHUpe3JldHVybiByKG5eKGV8fm8pLHQsZSxpLGEsdSl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByLHMsYyxmLGw7dFtlPj41XXw9MTI4PDxlJTMyLHRbMTQrKGUrNjQ+Pj45PDw0KV09ZTt2YXIgaD0xNzMyNTg0MTkzLHY9LTI3MTczMzg3OSxwPS0xNzMyNTg0MTk0LHk9MjcxNzMzODc4O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKz0xNilzPWgsYz12LGY9cCxsPXksaD1vKGgsdixwLHksdFtyXSw3LC02ODA4NzY5MzYpLHk9byh5LGgsdixwLHRbcisxXSwxMiwtMzg5NTY0NTg2KSxwPW8ocCx5LGgsdix0W3IrMl0sMTcsNjA2MTA1ODE5KSx2PW8odixwLHksaCx0W3IrM10sMjIsLTEwNDQ1MjUzMzApLGg9byhoLHYscCx5LHRbcis0XSw3LC0xNzY0MTg4OTcpLHk9byh5LGgsdixwLHRbcis1XSwxMiwxMjAwMDgwNDI2KSxwPW8ocCx5LGgsdix0W3IrNl0sMTcsLTE0NzMyMzEzNDEpLHY9byh2LHAseSxoLHRbcis3XSwyMiwtNDU3MDU5ODMpLGg9byhoLHYscCx5LHRbcis4XSw3LDE3NzAwMzU0MTYpLHk9byh5LGgsdixwLHRbcis5XSwxMiwtMTk1ODQxNDQxNykscD1vKHAseSxoLHYsdFtyKzEwXSwxNywtNDIwNjMpLHY9byh2LHAseSxoLHRbcisxMV0sMjIsLTE5OTA0MDQxNjIpLGg9byhoLHYscCx5LHRbcisxMl0sNywxODA0NjAzNjgyKSx5PW8oeSxoLHYscCx0W3IrMTNdLDEyLC00MDM0MTEwMSkscD1vKHAseSxoLHYsdFtyKzE0XSwxNywtMTUwMjAwMjI5MCksaD1pKGgsdj1vKHYscCx5LGgsdFtyKzE1XSwyMiwxMjM2NTM1MzI5KSxwLHksdFtyKzFdLDUsLTE2NTc5NjUxMCkseT1pKHksaCx2LHAsdFtyKzZdLDksLTEwNjk1MDE2MzIpLHA9aShwLHksaCx2LHRbcisxMV0sMTQsNjQzNzE3NzEzKSx2PWkodixwLHksaCx0W3JdLDIwLC0zNzM4OTczMDIpLGg9aShoLHYscCx5LHRbcis1XSw1LC03MDE1NTg2OTEpLHk9aSh5LGgsdixwLHRbcisxMF0sOSwzODAxNjA4MykscD1pKHAseSxoLHYsdFtyKzE1XSwxNCwtNjYwNDc4MzM1KSx2PWkodixwLHksaCx0W3IrNF0sMjAsLTQwNTUzNzg0OCksaD1pKGgsdixwLHksdFtyKzldLDUsNTY4NDQ2NDM4KSx5PWkoeSxoLHYscCx0W3IrMTRdLDksLTEwMTk4MDM2OTApLHA9aShwLHksaCx2LHRbciszXSwxNCwtMTg3MzYzOTYxKSx2PWkodixwLHksaCx0W3IrOF0sMjAsMTE2MzUzMTUwMSksaD1pKGgsdixwLHksdFtyKzEzXSw1LC0xNDQ0NjgxNDY3KSx5PWkoeSxoLHYscCx0W3IrMl0sOSwtNTE0MDM3ODQpLHA9aShwLHksaCx2LHRbcis3XSwxNCwxNzM1MzI4NDczKSxoPWEoaCx2PWkodixwLHksaCx0W3IrMTJdLDIwLC0xOTI2NjA3NzM0KSxwLHksdFtyKzVdLDQsLTM3ODU1OCkseT1hKHksaCx2LHAsdFtyKzhdLDExLC0yMDIyNTc0NDYzKSxwPWEocCx5LGgsdix0W3IrMTFdLDE2LDE4MzkwMzA1NjIpLHY9YSh2LHAseSxoLHRbcisxNF0sMjMsLTM1MzA5NTU2KSxoPWEoaCx2LHAseSx0W3IrMV0sNCwtMTUzMDk5MjA2MCkseT1hKHksaCx2LHAsdFtyKzRdLDExLDEyNzI4OTMzNTMpLHA9YShwLHksaCx2LHRbcis3XSwxNiwtMTU1NDk3NjMyKSx2PWEodixwLHksaCx0W3IrMTBdLDIzLC0xMDk0NzMwNjQwKSxoPWEoaCx2LHAseSx0W3IrMTNdLDQsNjgxMjc5MTc0KSx5PWEoeSxoLHYscCx0W3JdLDExLC0zNTg1MzcyMjIpLHA9YShwLHksaCx2LHRbciszXSwxNiwtNzIyNTIxOTc5KSx2PWEodixwLHksaCx0W3IrNl0sMjMsNzYwMjkxODkpLGg9YShoLHYscCx5LHRbcis5XSw0LC02NDAzNjQ0ODcpLHk9YSh5LGgsdixwLHRbcisxMl0sMTEsLTQyMTgxNTgzNSkscD1hKHAseSxoLHYsdFtyKzE1XSwxNiw1MzA3NDI1MjApLGg9dShoLHY9YSh2LHAseSxoLHRbcisyXSwyMywtOTk1MzM4NjUxKSxwLHksdFtyXSw2LC0xOTg2MzA4NDQpLHk9dSh5LGgsdixwLHRbcis3XSwxMCwxMTI2ODkxNDE1KSxwPXUocCx5LGgsdix0W3IrMTRdLDE1LC0xNDE2MzU0OTA1KSx2PXUodixwLHksaCx0W3IrNV0sMjEsLTU3NDM0MDU1KSxoPXUoaCx2LHAseSx0W3IrMTJdLDYsMTcwMDQ4NTU3MSkseT11KHksaCx2LHAsdFtyKzNdLDEwLC0xODk0OTg2NjA2KSxwPXUocCx5LGgsdix0W3IrMTBdLDE1LC0xMDUxNTIzKSx2PXUodixwLHksaCx0W3IrMV0sMjEsLTIwNTQ5MjI3OTkpLGg9dShoLHYscCx5LHRbcis4XSw2LDE4NzMzMTMzNTkpLHk9dSh5LGgsdixwLHRbcisxNV0sMTAsLTMwNjExNzQ0KSxwPXUocCx5LGgsdix0W3IrNl0sMTUsLTE1NjAxOTgzODApLHY9dSh2LHAseSxoLHRbcisxM10sMjEsMTMwOTE1MTY0OSksaD11KGgsdixwLHksdFtyKzRdLDYsLTE0NTUyMzA3MCkseT11KHksaCx2LHAsdFtyKzExXSwxMCwtMTEyMDIxMDM3OSkscD11KHAseSxoLHYsdFtyKzJdLDE1LDcxODc4NzI1OSksdj11KHYscCx5LGgsdFtyKzldLDIxLC0zNDM0ODU1NTEpLGg9bihoLHMpLHY9bih2LGMpLHA9bihwLGYpLHk9bih5LGwpO3JldHVybltoLHYscCx5XX1mdW5jdGlvbiBjKHQpe3ZhciBlLG49IiIscj0zMip0Lmxlbmd0aDtmb3IoZT0wO2U8cjtlKz04KW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodFtlPj41XT4+PmUlMzImMjU1KTtyZXR1cm4gbn1mdW5jdGlvbiBmKHQpe3ZhciBlLG49W107Zm9yKG5bKHQubGVuZ3RoPj4yKS0xXT12b2lkIDAsZT0wO2U8bi5sZW5ndGg7ZSs9MSluW2VdPTA7dmFyIHI9OCp0Lmxlbmd0aDtmb3IoZT0wO2U8cjtlKz04KW5bZT4+NV18PSgyNTUmdC5jaGFyQ29kZUF0KGUvOCkpPDxlJTMyO3JldHVybiBufWZ1bmN0aW9uIGwodCl7dmFyIGUsbixyPSIwMTIzNDU2Nzg5YWJjZGVmIixvPSIiO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKz0xKWU9dC5jaGFyQ29kZUF0KG4pLG8rPXIuY2hhckF0KGU+Pj40JjE1KStyLmNoYXJBdCgxNSZlKTtyZXR1cm4gb31mdW5jdGlvbiBoKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBjKHMoZih0KSw4KnQubGVuZ3RoKSl9KGgodCkpfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbixyLG89Zih0KSxpPVtdLGE9W107Zm9yKGlbMTVdPWFbMTVdPXZvaWQgMCxvLmxlbmd0aD4xNiYmKG89cyhvLDgqdC5sZW5ndGgpKSxuPTA7bjwxNjtuKz0xKWlbbl09OTA5NTIyNDg2Xm9bbl0sYVtuXT0xNTQ5NTU2ODI4Xm9bbl07cmV0dXJuIHI9cyhpLmNvbmNhdChmKGUpKSw1MTIrOCplLmxlbmd0aCksYyhzKGEuY29uY2F0KHIpLDY0MCkpfShoKHQpLGgoZSkpfWZ1bmN0aW9uIHkodCxlLG4pe3JldHVybiBlP24/cChlLHQpOmwocChlLHQpKTpuP3YodCk6bCh2KHQpKX10LmV4cG9ydHM/dC5leHBvcnRzPXk6ZS5tZDU9eX0oQSl9KShtPXtleHBvcnRzOnt9fSxtLmV4cG9ydHMpLG9ubWVzc2FnZT1mdW5jdGlvbih0KXt2YXIgZSxuPXQuZGF0YSxyPW4udHlwZSxvPW4uaW5mbzsiZW5jcnlwdCI9PT1yPyhvLmRhdGE9KGU9by5kYXRhLEIuc3RyaW5naWZ5KGcoZSkpKSxzZWxmLnBvc3RNZXNzYWdlKG8pKToiZGVjcnlwdCI9PT1yJiZzZWxmLnBvc3RNZXNzYWdlKEpTT04ucGFyc2UoZnVuY3Rpb24odCl7cmV0dXJuIGQoQi5wYXJzZSh0KSl9KG8pKSl9fSgpOwoK", null, !1) + , ft = "hashchange" + , gt = function(t) { + function e(e) { + var n = t.call(this) || this; + n.beginTime = _ && _.fetchStart || (new Date).valueOf(), + n.options = {}, + n.touchStartObject = {}, + n.touchMoveObject = {}, + n.mousedown = !1, + n.mouseDownObject = {}, + n.mouseMoveArray = [], + n.logQueue = [], + n.reportUrl = "", + n.firstSend = !0, + n.encryptFailedFunc = function() {} + , + n.encryptSuccessFunc = function() {} + , + n.decryptFailedFunc = function() {} + , + n.decryptSuccessFunc = function() {} + , + n.auH = "", + n.rtcH = "", + n.rtcS = "", + n.ts = {}, + n.mouseDownEvent = function(t) { + n.mousedown = !0, + n.mouseDownObject = n.pickMouseEventProps(t), + n.ts.ms = (new Date).getTime() + } + , + n.mouseMoveEvent = function(t) { + n.mousedown && (n.mouseMoveArray.push(n.pickMouseEventProps(t)), + n.ts.mm = (new Date).getTime()) + } + , + n.mouseUpEvent = function(t) { + if (n.mousedown) { + var e = n.pickMouseEventProps(t) + , r = { + mouseDown: {}, + mouseMove: [], + mouseUp: {} + }; + r.mouseDown = n.mouseDownObject, + r.mouseMove = n.mouseMoveArray, + r.mouseUp = e; + var o = n.dataFormat(t); + if (o) { + var i = void 0; + i = 0 === n.mouseMoveArray.length ? n.generateModuleSection(h({ + type: "CLICK", + timestamp: (new Date).valueOf() + }, o), "19") : n.generateModuleSection(h(h({ + type: "MOUSE", + timestamp: (new Date).valueOf() + }, o), { + mouseInfo: r + }), "22"), + n.send(i) + } + n.mousedown = !1, + n.mouseDownObject = {}, + n.mouseMoveArray = [], + n.ts.me = (new Date).getTime() + } + } + , + n.pickMouseEventProps = function(t) { + var e = t.clientX + , n = t.clientY + , r = t.altKey + , o = t.button + , i = t.buttons + , a = t.ctrlKey + , s = t.metaKey; + t.pageX, + t.pageY; + var c = t.region + , u = t.relatedTarget + , l = t.shiftKey + , d = t.which + , p = t.webkitForce; + return { + clientX: Number(e.toFixed(2)), + clientY: Number(n.toFixed(2)), + altKey: r, + button: o, + buttons: i, + ctrlKey: a, + metaKey: s, + pageX: Number(e.toFixed(2)), + pageY: Number(n.toFixed(2)), + region: c, + relatedTarget: u, + shiftKey: l, + which: d, + webkitForce: p, + timestamp: (new Date).valueOf() + } + } + , + n.keyDownHandler = function(t) { + var e; + e = n.generateModuleSection({ + type: "KEYBOARD", + timestamp: (new Date).valueOf(), + altKey: t.altKey, + code: t.code, + ctrlKey: t.ctrlKey, + isComposing: t.isComposing, + key: t.key, + locale: t.locale || "", + location: t.location, + metaKey: t.metaKey, + repeat: t.repeat, + shiftKey: t.shiftKey + }, "45"), + n.send(e) + } + , + n.gamepadConnectHandler = function(t) { + var e = n.generateModuleSection({ + type: "GAMEPADCONNECTED", + game_pad_id: t.gamepad.id, + timestamp: (new Date).valueOf() + }, 44); + n.send(e) + } + , + n.getConfig = function(t) { + var e = { + data: JSON.stringify({ + device_id: n.weblog.commonPackage.identity_package.device_id, + sdkver: G, + pver: "0.0.0", + hp: n.options.bussType, + platform: 3 + }), + flag: 2, + url: B(n.options) + }; + n.encryptFailedFunc = function(t, e) { + return function() { + var r = m(t, ["url"]); + r.data = F(r.data), + n.dataXhr(t, e) + } + }(e, t), + n.encryptSuccessFunc = function(t) { + return function(e) { + n.dataXhr(e, t) + } + }(t), + n.encryptDecryptWorker.postMessage({ + type: "encrypt", + info: e + }) + } + , + n.flush = function() { + n.sendLogs(n.logQueue), + n.logQueue = [] + } + , + n.touchStartEvent = function(t) { + n.ts.ts = (new Date).getTime(); + for (var e = t.touches, r = 0; r < e.length; r++) { + var o = e[r] + , i = o.clientX + , a = o.clientY + , s = o.identifier + , c = o.force; + if (n.touchStartObject[s]) + return; + n.touchStartObject[s] = { + clientX: Number(i.toFixed(2)), + clientY: Number(a.toFixed(2)), + force: c, + timestamp: (new Date).valueOf() + } + } + } + , + n.touchMoveEvent = function(t) { + n.ts.tm = (new Date).getTime(); + for (var e = t.changedTouches, r = 0; r < e.length; r++) { + var o = e[r] + , i = o.clientX + , a = o.clientY + , s = o.identifier + , c = o.force + , u = { + clientX: Number(i.toFixed(2)), + clientY: Number(a.toFixed(2)), + timestamp: (new Date).valueOf(), + force: c + }; + if (n.touchMoveObject[s]) + return void n.touchMoveObject[s].push(u); + n.touchMoveObject[s] = [u] + } + } + , + n.touchEndEvent = function(t) { + n.ts.te = (new Date).getTime(); + for (var e = t.changedTouches, r = [], o = 0; o < e.length; o++) { + var i = e[o] + , a = i.clientX + , s = i.clientY + , c = i.identifier + , u = i.force + , l = { + touchStart: {}, + touchMove: [], + touchEnd: {} + } + , d = n.touchStartObject[c] + , p = n.touchMoveObject[c]; + d && (l.touchStart = d, + delete n.touchStartObject[c]), + p && (l.touchMove = p, + delete n.touchMoveObject[c]), + l.touchEnd = { + clientX: Number(a.toFixed(2)), + clientY: Number(s.toFixed(2)), + timestamp: (new Date).valueOf(), + force: u + }, + r.push(l) + } + var m = r[0] && 0 === r[0].touchMove.length + , f = n.dataFormat(t); + if (f) { + var g = void 0; + g = m ? n.generateModuleSection(h(h({ + type: "CLICK", + timestamp: (new Date).valueOf() + }, f), { + clientX: r[0].touchEnd.clientX, + clientY: r[0].touchEnd.clientY + }), "19") : n.generateModuleSection(h(h({ + type: "TOUCH", + timestamp: (new Date).valueOf() + }, f), { + touchesInfo: r + }), "18"), + n.send(g) + } + } + , + n.urlChange = function() { + setTimeout((function() { + if (n.weblog && x({ + url: location.href + }, n.weblog.logConfig.urlMap).page !== n.weblog.currentUrlPackage.page) { + var t = (new Date).valueOf() + , e = n.generateModuleSection({ + type: "PAGE_LEAVE", + timestamp: t, + stay: t - n.beginTime + }, "23"); + if (n.send(e), + q()) + n.destroy(); + else { + n.beginTime = t; + var r = n.generateModuleSection({ + type: "PAGE_ENTER", + timestamp: t, + initTime: n.beginTime + }, "21"); + n.send(r) + } + } + } + )) + } + , + n.dataFormat = function(t) { + var e = t + , n = e.target + , r = e.clientX + , o = e.clientY; + if (n) { + var i = n.tagName; + if (-1 === ["html", "body"].indexOf(i.toLowerCase())) { + for (var a = L(n), s = n.innerText, c = n.nodeName, u = n.attributes, l = {}, d = 0; d < u.length; d++) { + var p = u[d] + , h = p.name + , m = p.value; + h.indexOf("data-"), + l[h] = m + } + return { + xpath: a, + innerText: s, + nodeName: c, + attributesSerialize: l, + clientX: r, + clientY: o, + customData: null + } + } + } + } + , + n.generateModuleSection = function(t, e) { + n.ts.gs = (new Date).getTime(); + var r = n.weblog + , o = r.referUrlPackage + , i = r.Utils.cookie + , a = r.commonPackage + , s = a.network_package + , c = a.device_package + , u = a.h5_extra_attr + , l = a.app_package + , d = a.identity_package + , p = r.sessionId + , h = ""; + n.estimate && void 0 !== n.estimate.usage && void 0 !== n.estimate.quota && (h = (n.estimate.usage / n.estimate.quota).toFixed(2)); + var m = et() + , f = nt() + , g = function(t) { + try { + var e = t.createElement("canvas").getContext("webgl"); + if (null != e) { + var n = e.getExtension("WEBGL_debug_renderer_info"); + if (n) { + var r = e.getParameter(n.UNMASKED_VENDOR_WEBGL) + , o = e.getParameter(n.UNMASKED_RENDERER_WEBGL) + , i = {}; + i[61] = r, + i[62] = o; + var a = e.getParameter(e.VENDOR) + , s = e.getParameter(e.VERSION); + i[64] = a, + i[65] = s; + var c = e.getParameter(e.SHADING_LANGUAGE_VERSION) + , u = e.getParameter(e.STENCIL_BITS); + i[66] = c, + i[67] = u; + var l = e.getContextAttributes(); + if (null != l) { + var d = l.antialias ? "1" : "0"; + i[63] = d + } + return i + } + } + } catch (t) {} + return {} + }(document) + , y = ""; + try { + y = navigator.webdriver.toString() + } catch (t) {} + var v = !1; + try { + v = navigator.webdriver + } catch (t) {} + var b = void 0; + try { + b = navigator.webdriver + } catch (t) {} + n.ts.ge = (new Date).getTime(); + var S, w = lt.toString(), L = et.toString(), k = nt.toString(), x = it.toString(), N = ut.toString(), _ = st.toString(), P = ct.toString(), G = eval.toString(), Z = Object.getOwnPropertyNames.toString(), E = Object.keys.toString(), C = document.cookie.toString(), I = { + 1: o || "", + 2: location.href, + 3: s && s.ip, + 4: u && u.domain, + 5: p, + 6: document && document.title || "", + 7: i.parseCookieString(document && document.cookie || "", !0), + 8: T(), + 9: document && document.body && document.body.clientHeight || "", + 10: document && document.body && document.body.clientWidth || "", + 11: c && c.ua, + 12: c && c.os_version, + 13: l && l.language, + 14: c && c.model, + 16: d && d.user_id, + 17: d && d.device_id, + 24: n.options.taskType, + 25: n.options.subTaskType, + 26: "0", + 28: (S = d.device_id + (o || "") + T() + c.ua + location.href, + V(S).toString()), + 29: new URL(n.reportUrl).pathname, + 30: n.options.host || "ks", + 31: n.battery && n.battery.level, + 32: h, + 33: navigator.appCodeName, + 34: navigator.appName, + 35: navigator.appVersion, + 36: navigator.platform, + 37: JSON.stringify(navigator.languages), + 39: navigator.oscpu, + 40: navigator.buildID, + 41: navigator.productSub, + 42: navigator.vendor, + 43: navigator.vendorSub, + 44: navigator.hardwareConcurrency, + 90: n.options.reserved ? n.options.reserved : "", + 50: navigator.maxTouchPoints, + 51: navigator.doNotTrack ? navigator.doNotTrack : "", + 52: navigator.cookieEnabled ? 1 : 0, + 53: navigator.product, + 54: navigator.onLine, + 55: v ? 1 : 0, + 56: navigator.userAgent, + 57: navigator.language ? navigator.language : "", + 58: $(navigator), + 59: tt(navigator), + 61: g[61] ? g[61] : "", + 62: g[62] ? g[62] : "", + 63: g[63] ? g[63] : "", + 64: g[64] ? g[64] : "", + 65: g[65] ? g[65] : "", + 66: g[66] ? g[66] : "", + 67: g[67], + 68: m ? m.hash : "", + 69: f ? f.hash : "", + 70: n.auH, + 75: b ? "0" : "1", + 76: y, + 77: ut(), + 78: { + w: at(window), + n: at(window.navigator) + }, + 79: lt(), + 80: window.outerWidth - window.innerWidth + "", + 81: window.outerHeight - window.innerHeight + "", + 82: { + pc: w.length, + ph: J(w), + wf: L.length, + wh: J(L), + cf: k.length, + ch: J(k), + mf: x.length, + mh: J(x), + ff: N.length, + fh: J(N), + af: _.length, + ah: J(_), + gr: P.length, + gh: J(P), + el: G.length, + eh: J(G), + ow: Z.length, + oh: J(Z), + ky: E.length, + kh: J(E), + ci: C.length, + ih: J(C) + }, + 85: n.rtcH, + 86: n.rtcS, + 87: { + w: window.screen.width, + h: window.screen.height, + c: window.screen.colorDepth, + p: window.screen.pixelDepth + }, + 88: it().h, + 89: n.ts + }; + return e && (I[e] = t), + I + } + , + n.beforeunload = function() { + if (n.weblog) { + var t = (new Date).valueOf() + , e = n.generateModuleSection({ + type: "PAGE_LEAVE", + timestamp: t, + stay: t - n.beginTime + }, "23"); + n.send(e), + n.flush() + } + } + , + n.destroy = function() { + S(window, "onpagehide"in window ? "pagehide" : "beforeunload", n.beforeunload), + S(window, ft, n.urlChange), + Q() ? (window.removeEventListener("touchstart", n.touchStartEvent, !0), + window.removeEventListener("touchmove", n.touchMoveEvent, !0), + window.removeEventListener("touchend", n.touchEndEvent, !0)) : (window.removeEventListener("mousedown", n.mouseDownEvent, !0), + window.removeEventListener("mousemove", n.mouseMoveEvent, !0), + window.removeEventListener("mouseup", n.mouseUpEvent, !0)), + n.batchWaitTimer && clearTimeout(n.batchWaitTimer), + window.removeEventListener("keydown", n.keyDownHandler), + window.removeEventListener("gamepadconnected", n.gamepadConnectHandler) + } + , + n.options = e || {}, + n.ts.cs = (new Date).getTime(), + st().then((function(t) { + var e = t.hash; + n.auH = e, + n.ts.cae = (new Date).getTime() + } + )).catch((function(t) {} + )); + try { + ct((function(t) { + n.rtcH = t.can, + n.rtcS = t.sdp, + n.ts.cre = (new Date).getTime() + } + )) + } catch (t) {} + return n.ts.ce = (new Date).getTime(), + n + } + return function(t, e) { + function n() { + this.constructor = t + } + p(t, e), + t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, + new n) + }(e, t), + e.prototype.apply = function(t) { + var e = this; + if (this.ts.as = (new Date).getTime(), + this.verifyParams() && !q() && t && t.logger) { + this.weblog = t, + this.options.switch = !0, + this.options.wait = 0, + this.options.maxBatchLength = 10, + this.options.enableNative = !1; + try { + this.createEncryptDecryptWorker() + } catch (t) {} + var n = function() { + Q() ? (window.addEventListener("touchstart", e.touchStartEvent, !0), + window.addEventListener("touchmove", e.touchMoveEvent, !0), + window.addEventListener("touchend", e.touchEndEvent, !0)) : (window.addEventListener("mousedown", e.mouseDownEvent, !0), + window.addEventListener("mousemove", e.mouseMoveEvent, !0), + window.addEventListener("mouseup", e.mouseUpEvent, !0)), + ft = t.Utils.ua.supportsPushState() ? "popstate" : "hashchange", + b(window, ft, e.urlChange), + b(window, "onpagehide"in window ? "pagehide" : "beforeunload", e.beforeunload), + window.addEventListener("keydown", e.keyDownHandler, !0), + window.addEventListener("gamepadconnected", e.gamepadConnectHandler, !0) + } + , r = function() { + return f(e, void 0, void 0, (function() { + var t, e, r, o, i, a, s, c = this; + return g(this, (function(u) { + switch (u.label) { + case 0: + return u.trys.push([0, 3, , 4]), + navigator.getBattery ? [4, navigator.getBattery()] : [3, 2]; + case 1: + (t = u.sent()) && (this.battery = t, + this.battery.addEventListener("chargingchange", (function() { + var t = c.generateModuleSection({ + type: "CHARGINGCHANGGE", + level: c.battery.level, + timestamp: (new Date).valueOf() + }, 45); + c.send(t) + } + ))), + u.label = 2; + case 2: + return [3, 4]; + case 3: + return v(u.sent()), + [3, 4]; + case 4: + return u.trys.push([4, 7, , 8]), + navigator.storage ? [4, navigator.storage.estimate()] : [3, 6]; + case 5: + (e = u.sent()) && (this.estimate = e), + u.label = 6; + case 6: + return [3, 8]; + case 7: + return v(u.sent()), + [3, 8]; + case 8: + return this.options.switch ? (r = this.weblog.yoda, + this.options.enableNative && r && r.isInYoda ? [4, r.ready()] : [3, 11]) : [3, 12]; + case 9: + return u.sent(), + r.register({ + namespace: "weapon", + name: "recordJSScene" + }), + [4, r.tool.canIUse({ + namespace: "weapon", + name: "recordJSScene" + })]; + case 10: + o = u.sent(), + i = o.result, + a = o.canUse, + 1 === i && a && r.weapon.recordJSScene({ + bussType: this.options.bussType, + jsVersion: G, + taskType: this.options.taskType, + subTaskType: "1111" + }, (function() {} + )), + u.label = 11; + case 11: + this.reportUrl = function(t) { + var e = t.env || "production" + , n = E[e]; + "production" === e && t.host && E[t.host] && (n = E[t.host]); + var r = Z[e] + , o = r.appKey + , i = r.secretKey + , a = ((new Date).valueOf() / 1e3).toFixed() + , s = J(o + i + a); + return "" + n + (t.reportUrls ? t.reportUrls[Math.floor(Math.random() * t.reportUrls.length)] : C) + "?appkey=" + o + "&seckey=" + i + "&bussType=" + t.bussType + "×tamp=" + a + "&sign=" + s + }(this.options), + s = this.generateModuleSection({ + type: "PAGE_ENTER", + timestamp: (new Date).valueOf(), + initTime: this.beginTime + }, "21"), + this.send(s), + n(), + u.label = 12; + case 12: + return [2] + } + } + )) + } + )) + }; + try { + this.options.switchAsync ? (r(), + this.getConfig((function() {} + ))) : this.getConfig(r) + } catch (t) {} + this.ts.ae = (new Date).getTime() + } + } + , + e.prototype.verifyParams = function() { + return this.options.bussType && "string" == typeof this.options.bussType ? this.options.taskType && "string" == typeof this.options.taskType ? !(!this.options.subTaskType || "string" != typeof this.options.subTaskType) || (v("\u3010\u98ce\u63a7sdk\u3011\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684subTaskType\u503c!"), + !1) : (v("\u3010\u98ce\u63a7sdk\u3011\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684taskType\u503c!"), + !1) : (v("\u3010\u98ce\u63a7sdk\u3011\u8bf7\u8bbe\u7f6e\u6709\u6548\u7684bussType\u503c!"), + !1) + } + , + e.prototype.dataXhr = function(t, e) { + var n = this + , r = t.url + , o = m(t, ["url"]) + , i = new XMLHttpRequest; + i.onreadystatechange = function() { + if (4 === i.readyState) + if (i.status >= 200 && i.status < 300 || 304 == i.status) { + if (i.responseText) { + var t = JSON.parse(i.responseText); + 1 === t.result ? (n.decryptFailedFunc = function(t, e) { + return function() { + var r, o = JSON.parse(function(t) { + return U(z.parse(t)) + }(t)); + n.options.switch = o.switch, + n.options.maxBatchLength = o.maxBatchLength, + n.options.wait = o.wait, + n.options.reportUrls = null === (r = null == o ? void 0 : o.reportConfig) || void 0 === r ? void 0 : r.reportUrls, + n.options.enableNative = o.enableNative, + e() + } + }(t.antispamPluginRsp, e), + n.decryptSuccessFunc = function(t) { + return function(e) { + var r; + n.options.switch = e.switch, + n.options.maxBatchLength = e.maxBatchLength, + n.options.wait = e.wait, + n.options.reportUrls = null === (r = e.reportConfig) || void 0 === r ? void 0 : r.reportUrls, + n.options.enableNative = e.enableNative, + t() + } + }(e), + n.encryptDecryptWorker.postMessage({ + type: "decrypt", + info: t.antispamPluginRsp + })) : e() + } + } else + e() + } + , + i.open("POST", r), + i.send(JSON.stringify(o)) + } + , + e.prototype.send = function(t, e) { + var n, r = this; + void 0 === e && (e = !1), + this.options.switch && (e ? this.sendLogs([t]) : (this.batchWaitTimer && clearTimeout(this.batchWaitTimer), + this.logQueue.push(t), + this.logQueue.length >= ((null === (n = this.options) || void 0 === n ? void 0 : n.maxBatchLength) || 0) ? this.flush() : this.batchWaitTimer = setTimeout((function() { + r.flush() + } + ), this.options.wait))) + } + , + e.prototype.sendLogs = function(t) { + t && t.length && this.buildLogPackage(this.logQueue) + } + , + e.prototype.createEncryptDecryptWorker = function() { + var t = this; + this.encryptDecryptWorker = mt(); + var e = 0; + this.encryptDecryptWorker.onerror = function(n) { + v("worker onerror", n.message), + 1 === ++e ? t.encryptFailedFunc() : 2 === e && (t.decryptFailedFunc(), + t.encryptDecryptWorker.terminate()) + } + , + this.encryptDecryptWorker.onmessageerror = function(n) { + v("worker onmessageerror", n.message), + 1 === ++e ? t.encryptFailedFunc() : 2 === e && (t.decryptFailedFunc(), + t.encryptDecryptWorker.terminate()) + } + , + this.encryptDecryptWorker.onmessage = function(n) { + 1 === ++e ? t.encryptSuccessFunc(n.data) : 2 === e && (t.decryptSuccessFunc(n.data), + t.encryptDecryptWorker.terminate()) + } + } + , + e.prototype.buildLogPackage = function(t) { + var e = this; + this.ts.ls = (new Date).getTime(); + var n, r = this.weblog.Utils.cookie, o = {}, i = {}; + if (i[1] = this.weblog.commonPackage.identity_package.device_id, + i[2] = r.getCookie("kpn"), + i[3] = "10001001", + i[4] = this.weblog.commonPackage.app_package.version_name, + i[5] = r.getCookie("kpn"), + i[6] = this.options.bussType, + i[7] = this.weblog.commonPackage.app_package.platform, + i[8] = this.weblog.commonPackage.app_package.version_code, + i[9] = (new Date).valueOf(), + i[10] = "", + i[11] = this.options.primaryKey, + i[12] = (n = this.options.env, + Z[n = n || "production"]).appKey, + i[13] = this.options.pluginPackageName || "", + i[14] = G, + i.module_section = t, + o.flag = 2, + this.firstSend) { + this.firstSend = !1; + var a = ht(); + a.onerror = function(t) { + v("worker onerror", t.message), + o.data = F(JSON.stringify(i)), + e.weblog.Utils.io.sendData({ + data: o, + url: e.reportUrl, + format: "string" + }) + } + , + a.onmessageerror = function(t) { + v("worker onmessageerror", t.message), + o.data = F(JSON.stringify(i)), + e.weblog.Utils.io.sendData({ + data: o, + url: e.reportUrl, + format: "string" + }) + } + , + a.onmessage = function(t) { + o.data = t.data, + e.weblog.Utils.io.sendData({ + data: o, + url: e.reportUrl, + format: "string" + }) + } + , + a.postMessage(JSON.stringify(i)) + } else + o.data = F(JSON.stringify(i)), + this.weblog.Utils.io.sendData({ + data: o, + url: this.reportUrl, + format: "string" + }); + this.ts.le = (new Date).getTime() + } + , + e.key = "risk-mgt", + e + }(P); + return function(t, e, n) { + if ("undefined" != typeof window && void 0 !== window._GLOBAL_KS_WEBLOGGER_ && "function" == typeof t) { + var r = window._GLOBAL_KS_WEBLOGGER_ + , o = r.weblog + , i = r.config + , a = e && i.plugins[e] ? i.plugins[e].options : void 0; + if ("radar" === e) { + var s = a || o.logConfig[e]; + if (!s) + return; + if (s.sampling = s.sampling || 1, + !t.samplingControl(s)) + return o.plug(n) + } + o.addPluginInstance(new t(a)) + } + }(gt, "riskMgt"), + gt + } + )) + } + ).call(this, n("c8ba")) + }, + "febe": function(t, e, n) { + !function(e, n) { + t.exports = n() + }(0, (function() { + "use strict"; + var t = function(e, n) { + return (t = Object.setPrototypeOf || { + __proto__: [] + }instanceof Array && function(t, e) { + t.__proto__ = e + } + || function(t, e) { + for (var n in e) + e.hasOwnProperty(n) && (t[n] = e[n]) + } + )(e, n) + }; + function e(e, n) { + function r() { + this.constructor = e + } + t(e, n), + e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, + new r) + } + var n = function() { + return (n = Object.assign || function(t) { + for (var e, n = 1, r = arguments.length; n < r; n++) + for (var o in e = arguments[n]) + Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]); + return t + } + ).apply(this, arguments) + }; + function r(t, e) { + var n = {}; + for (var r in t) + Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]); + if (null != t && "function" == typeof Object.getOwnPropertySymbols) { + var o = 0; + for (r = Object.getOwnPropertySymbols(t); o < r.length; o++) + e.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[o]) && (n[r[o]] = t[r[o]]) + } + return n + } + function o(t, e, n, r) { + return new (n || (n = Promise))((function(o, i) { + function a(t) { + try { + c(r.next(t)) + } catch (t) { + i(t) + } + } + function s(t) { + try { + c(r.throw(t)) + } catch (t) { + i(t) + } + } + function c(t) { + var e; + t.done ? o(t.value) : (e = t.value, + e instanceof n ? e : new n((function(t) { + t(e) + } + ))).then(a, s) + } + c((r = r.apply(t, e || [])).next()) + } + )) + } + function i(t, e) { + var n, r, o, i, a = { + label: 0, + sent: function() { + if (1 & o[0]) + throw o[1]; + return o[1] + }, + trys: [], + ops: [] + }; + return i = { + next: s(0), + throw: s(1), + return: s(2) + }, + "function" == typeof Symbol && (i[Symbol.iterator] = function() { + return this + } + ), + i; + function s(i) { + return function(s) { + return function(i) { + if (n) + throw new TypeError("Generator is already executing."); + for (; a; ) + try { + if (n = 1, + r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), + 0) : r.next) && !(o = o.call(r, i[1])).done) + return o; + switch (r = 0, + o && (i = [2 & i[0], o.value]), + i[0]) { + case 0: + case 1: + o = i; + break; + case 4: + return a.label++, + { + value: i[1], + done: !1 + }; + case 5: + a.label++, + r = i[1], + i = [0]; + continue; + case 7: + i = a.ops.pop(), + a.trys.pop(); + continue; + default: + if (o = a.trys, + !((o = o.length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) { + a = 0; + continue + } + if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { + a.label = i[1]; + break + } + if (6 === i[0] && a.label < o[1]) { + a.label = o[1], + o = i; + break + } + if (o && a.label < o[2]) { + a.label = o[2], + a.ops.push(i); + break + } + o[2] && a.ops.pop(), + a.trys.pop(); + continue + } + i = e.call(t, a) + } catch (t) { + i = [6, t], + r = 0 + } finally { + n = o = 0 + } + if (5 & i[0]) + throw i[1]; + return { + value: i[0] ? i[1] : void 0, + done: !0 + } + }([i, s]) + } + } + } + function a() { + for (var t = 0, e = 0, n = arguments.length; e < n; e++) + t += arguments[e].length; + var r = Array(t) + , o = 0; + for (e = 0; e < n; e++) + for (var i = arguments[e], a = 0, s = i.length; a < s; a++, + o++) + r[o] = i[a]; + return r + } + function s() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.warn; + return n && n.call.apply(n, a([console], t)) + } catch (t) { + return + } + } + function c() { + for (var t = [], e = 0; e < arguments.length; e++) + t[e] = arguments[e]; + try { + var n = null === console || void 0 === console ? void 0 : console.error; + return n && n.call.apply(n, a([console], t)) + } catch (t) { + return + } + } + function u(t, e, n, r) { + return "attachEvent"in t ? t.attachEvent("on" + e, n) : t.addEventListener(e, n, r) + } + function l(t, e, n, r) { + return "attachEvent"in t ? t.detachEvent("on" + e, n) : t.removeEventListener(e, n, r) + } + function d(t) { + for (var e = {}, n = 0, r = t.split("&"); n < r.length; n++) { + var o = r[n].split("=") + , i = o[0] + , a = o[1]; + i in e ? e[i]instanceof Array ? e[i].push(a) : e[i] = [e[i], a] : e[i] = a + } + return e + } + function p(t) { + var e = ""; + if ("string" == typeof t) + e = t; + else + try { + e = JSON.stringify(t) + } catch (n) { + e = String(t) + } + for (var n = 0, r = 0; r < e.length; r++) { + var o = e.charCodeAt(r); + n += o < 128 ? 1 : o < 2048 ? 2 : o < 65536 ? 3 : o < 1 << 21 ? 4 : o < 1 << 26 ? 5 : o < 1 << 31 ? 6 : Number.NaN + } + return n + } + var h, m, f, g = function() { + function t() {} + return t.prototype.apply = function(t) { + this.weblog = t + } + , + t + }(), y = function() { + var t = "undefined" != typeof window ? window.performance : null; + if (t && t.timing) { + if ("function" == typeof t.timing.toJSON) { + var e = t.timing.toJSON(); + return e && !e.redirectStart && (e.redirectStart = e.navigationStart), + e + } + return t.timing + } + return null + }, v = "radar_log"; + !function(t) { + t.LOAD = "load", + t.RES = "resource", + t.API = "api", + t.ERROR = "error", + t.SDK_ERROR = "sdk_error", + t.CUSTOM = "custom", + t.BATCH = "batch", + t.EVENT = "event" + }(h || (h = {})), + function(t) { + t.LOAD = "load_statistics", + t.RES = "resource_statistics", + t.API = "api_statistics", + t.ERROR = "error_statistics", + t.SDK_ERROR = "sdk_error", + t.CUSTOM = "custom_statistics" + }(m || (m = {})), + function(t) { + t.SCRIPT = "script", + t.RES = "res", + t.API = "api", + t.VIDEO = "video" + }(f || (f = {})); + var b, S, w = { + redirect: { + end: "fetchStart", + start: "navigationStart" + }, + dns: { + end: "domainLookupEnd", + start: "domainLookupStart" + }, + dns_start: { + end: "domainLookupEnd", + start: "navigationStart" + }, + tcp: { + end: "connectEnd", + start: "connectStart" + }, + tcp_start: { + end: "connectEnd", + start: "navigationStart" + }, + redirect_count: { + custom: function(t, e) { + return e.redirectCount + } + }, + ssl: { + custom: function(t, e) { + return 0 === e.secureConnectionStart ? 0 : e.connectEnd - e.secureConnectionStart + } + }, + ssl_start: { + custom: function(t, e) { + return 0 === e.secureConnectionStart ? 0 : e.secureConnectionStart - e.redirectStart + } + }, + ttfb: { + end: "responseStart", + start: "requestStart" + }, + trans: { + end: "responseEnd", + start: "responseStart" + }, + dom_parse: { + end: "domInteractive", + start: "responseEnd" + }, + dom_parse_start: { + end: "domInteractive", + start: "navigationStart" + }, + blank: { + end: "domLoading", + start: "navigationStart" + }, + fb: { + end: "responseStart", + start: "navigationStart" + }, + dom_ready: { + end: "domContentLoadedEventEnd", + start: "navigationStart" + }, + total: { + end: "loadEventStart", + start: "navigationStart" + }, + resource: { + end: "loadEventStart", + start: "domContentLoadedEventEnd" + }, + fp: { + custom: function() { + if ("function" != typeof performance.getEntries) + return null; + var t = performance.getEntries().filter((function(t) { + return "first-paint" === t.name + } + ))[0]; + return t ? Math.ceil(t.startTime + t.duration) : null + } + }, + js_cost: { + custom: function() { + if ("function" != typeof performance.getEntries) + return null; + var t = y() + , e = performance.getEntries() + , n = performance.getEntries().filter((function(t) { + return "navigation" === t.initiatorType + } + ))[0] + , r = e.filter((function(t) { + return "script" === t.initiatorType + } + ))[0] + , o = n ? n.domComplete : t.domComplete - t.navigationStart; + return r && o ? o - r.fetchStart : null + } + }, + tti: { + end: "domInteractive", + start: "navigationStart" + }, + protocol: { + custom: function(t, e) { + return e.nextHopProtocol + } + }, + dom_num: { + custom: function() { + return "undefined" != typeof document ? document.all.length : null + } + } + }, L = { + fetch_start: { + custom: function(t, e) { + return Math.round(e.fetchStart) + } + }, + dns: { + end: "domainLookupEnd", + start: "domainLookupStart", + cachedSkip: !0 + }, + tcp: { + end: "connectEnd", + start: "connectStart", + cachedSkip: !0 + }, + ssl: { + cachedSkip: !0, + custom: function(t, e) { + return 0 === e.secureConnectionStart ? 0 : e.connectEnd - e.secureConnectionStart + } + }, + ttfb: { + end: "responseStart", + start: "requestStart", + cachedSkip: !0 + }, + trans: { + end: "responseEnd", + start: "responseStart", + cachedSkip: !0 + }, + fb: { + end: "responseStart", + start: "fetchStart", + cachedSkip: !0 + }, + total: { + end: "responseEnd", + start: "fetchStart" + }, + duration: { + end: "responseEnd", + start: "fetchStart" + }, + size: { + cachedSkip: !0, + custom: function(t, e) { + return e.encodedBodySize + }, + noThrottle: !0 + }, + protocol: { + custom: function(t, e) { + return e.nextHopProtocol + } + }, + file: { + custom: function(t, e) { + return e.name + }, + noThrottle: !0 + }, + res_type: { + custom: function(t, e) { + return e.initiatorType + } + }, + cached: { + custom: function(t, e) { + return 0 === e.transferSize || null == e.transferSize && 0 === e.domainLookupStart + }, + noThrottle: !0 + } + }, k = { + fetch_start: { + custom: function(t, e) { + return Math.round(e.fetchStart) + }, + noThrottle: !0 + }, + dns: { + end: "domainLookupEnd", + start: "domainLookupStart", + cachedSkip: !0 + }, + tcp: { + end: "connectEnd", + start: "connectStart", + cachedSkip: !0 + }, + ssl: { + cachedSkip: !0, + custom: function(t, e) { + return 0 === e.secureConnectionStart ? 0 : e.connectEnd - e.secureConnectionStart + } + }, + ttfb: { + end: "responseStart", + start: "requestStart", + cachedSkip: !0 + }, + trans: { + end: "responseEnd", + start: "responseStart", + cachedSkip: !0 + }, + fb: { + end: "responseStart", + start: "fetchStart", + cachedSkip: !0 + }, + total: { + end: "responseEnd", + start: "fetchStart" + }, + duration: { + end: "responseEnd", + start: "fetchStart" + }, + size: { + cachedSkip: !0, + custom: function(t, e) { + return e.encodedBodySize + }, + noThrottle: !0 + }, + protocol: { + custom: function(t, e) { + return e.nextHopProtocol + } + }, + file: { + custom: function(t, e) { + return e.name + }, + noThrottle: !0 + }, + res_type: { + custom: function(t, e) { + return e.initiatorType + } + }, + cached: { + custom: function(t, e) { + return 0 === e.transferSize || null == e.transferSize && 0 === e.domainLookupStart + }, + noThrottle: !0 + } + }, x = ["//wlog.kuaishou.com/rest/n/log/web/collect", "/rest/wd/common/log/collect/misc2", "/rest/wd/common/log/collect/radar", "/rest/kd/log/collect"], T = { + to_webview_page_start: { + end: "pageStart", + start: "userStart" + }, + to_webview_page_show: { + end: "pageShow", + start: "userStart" + }, + to_webview_pre_create: { + end: "preCreate", + start: "userStart" + }, + to_webview_created: { + end: "created", + start: "userStart" + }, + to_webview_start_load: { + end: "startLoad", + start: "userStart" + }, + to_webview_did_start_load: { + end: "didStartLoad", + start: "userStart" + }, + to_webview_did_end_load: { + end: "didEndLoad", + start: "userStart" + }, + to_navigation_start: { + end: "navigationStart", + start: "userStart" + }, + to_fetch_start: { + end: "fetchStart", + start: "userStart" + }, + to_connect_start: { + end: "connectStart", + start: "userStart" + }, + to_dom_ready: { + end: "domContentLoadedEventEnd", + start: "userStart" + }, + to_total: { + end: "loadEventStart", + start: "userStart" + }, + to_fmp: { + end: "radarFmp", + start: "userStart", + notCatchIfUndefined: !0 + }, + to_main_data_receive_end: { + end: "main_data_receive_end", + start: "userStart", + notCatchIfUndefined: !0 + } + }, N = { + navigation_start_time: "navigationStart", + fetch_start_time: "fetchStart", + dns_start_time: "domainLookupStart", + dns_end_time: "domainLookupEnd", + connect_start_time: "connectStart", + ssl_start_time: "secureConnectionStart", + request_start_time: "requestStart", + response_start_time: "responseStart", + response_end_time: "responseEnd", + dom_interactive_time: "domInteractive", + dom_loading_time: "domLoading", + dom_ready_time: "domContentLoadedEventEnd", + load_event_time: "loadEventStart", + fmp_time: "radarFmp" + }, _ = function() { + return "".concat(Date.now(), "-").concat(Math.floor(8999999999999 * Math.random()) + 1e12) + }, P = function(t) { + var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : -1; + return { + name: t, + value: e, + delta: 0, + entries: [], + id: _(), + isFinal: !1 + } + }, G = function(t, e) { + try { + if (PerformanceObserver.supportedEntryTypes.includes(t)) { + var n = new PerformanceObserver((function(t) { + return t.getEntries().map(e) + } + )); + return n.observe({ + type: t, + buffered: !0 + }), + n + } + } catch (t) {} + }, Z = !1, E = !1, C = function(t) { + Z = !t.persisted + }, I = function() { + addEventListener("pagehide", C), + addEventListener("beforeunload", (function() {} + )) + }, K = function(t) { + var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; + E || (I(), + E = !0), + addEventListener("visibilitychange", (function(e) { + var n = e.timeStamp; + "hidden" === document.visibilityState && t({ + timeStamp: n, + isUnloading: Z + }) + } + ), { + capture: !0, + once: e + }) + }, X = function(t, e, n, r) { + var o; + return function() { + n && e.isFinal && n.disconnect(), + e.value >= 0 && (r || e.isFinal || "hidden" === document.visibilityState) && (e.delta = e.value - (o || 0), + (e.delta || e.isFinal || void 0 === o) && (t(e), + o = e.value)) + } + }, W = function() { + return void 0 === b && (b = "hidden" === document.visibilityState ? 0 : 1 / 0, + K((function(t) { + var e = t.timeStamp; + return b = e + } + ), !0)), + { + get timeStamp() { + return b + } + } + }, M = function() { + return S || (S = new Promise((function(t) { + return ["scroll", "keydown", "pointerdown"].map((function(e) { + addEventListener(e, t, { + once: !0, + passive: !0, + capture: !0 + }) + } + )) + } + ))), + S + }, O = /^(https?:)?\/\//; + function U(t) { + return "number" == typeof t ? t.toFixed() : t + } + function R(t) { + if ("string" != typeof t) + return ""; + try { + var e = t.lastIndexOf("."); + return t.substr(e + 1) + } catch (t) { + return "" + } + } + function H(t, e) { + if (!t) + return !1; + var n = t.replace(O, ""); + return e.some((function(t) { + return n.indexOf(t) >= 0 + } + )) + } + var D = {}; + function Y(t, e) { + var n = D[t]; + n ? n.endTime || (n.endTime = (new Date).getTime(), + n.duration = n.endTime - n.startTime, + delete n.startTime, + delete n.endTime) : D[t] = { + startTime: (new Date).getTime() + } + } + var j = {} + , V = [{ + name: "fid", + collectFn: function(t) { + var e = P("FID") + , n = W() + , r = function(t) { + t.startTime < n.timeStamp && (e.value = t.processingStart - t.startTime, + e.entries.push(t), + e.isFinal = !0, + i()) + } + , o = G("first-input", r) + , i = X(t, e, o); + o ? K((function() { + o.takeRecords().map(r), + o.disconnect() + } + ), !0) : window.perfMetrics && window.perfMetrics.onFirstInputDelay && window.perfMetrics.onFirstInputDelay((function(t, r) { + r.timeStamp < n.timeStamp && (e.value = t, + e.isFinal = !0, + e.entries = [{ + entryType: "first-input", + name: r.type, + target: r.target, + cancelable: r.cancelable, + startTime: r.timeStamp, + processingStart: r.timeStamp + t + }], + i()) + } + )) + } + }, { + name: "lcp", + collectFn: function(t) { + var e, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = P("LCP"), o = W(), i = function(t) { + var n = t.startTime; + n < o.timeStamp ? (r.value = n, + r.entries.push(t)) : r.isFinal = !0, + e() + }, a = G("largest-contentful-paint", i); + if (a) { + e = X(t, r, a, n); + var s = function() { + r.isFinal || (a.takeRecords().map(i), + r.isFinal = !0, + e()) + }; + M().then(s), + K(s, !0) + } + } + }, { + name: "cls", + collectFn: function(t) { + var e, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = P("CLS", 0), o = function(t) { + t.hadRecentInput || (r.value += t.value, + r.entries.push(t), + e()) + }, i = G("layout-shift", o); + i && (e = X(t, r, i, n), + K((function(t) { + var n = t.isUnloading; + i.takeRecords().map(o), + n && (r.isFinal = !0), + e() + } + ))) + } + }, { + name: "fcp", + collectFn: function(t) { + var e, n = P("FCP"), r = W(), o = G("paint", (function(t) { + "first-contentful-paint" === t.name && t.startTime < r.timeStamp && (n.value = t.startTime, + n.isFinal = !0, + n.entries.push(t), + e()) + } + )); + o && (e = X(t, n, o)) + } + }] + , z = function(t) { + for (var e = [], n = 1; n < arguments.length; n++) + e[n - 1] = arguments[n]; + var r = d(location.search.slice(1)); + 1 == +r.debug && s.apply(void 0, a(["[radar] " + t + ": "], e)) + } + , A = function() { + var t = window.navigator.userAgent + , e = {}; + return t.split(" ").map((function(t) { + var n = t.split("/"); + e[n[0]] = n[1] + } + )), + e + } + , J = function() { + var t = window.navigator.userAgent; + if (-1 !== t.indexOf("Android")) + return "WebView"; + if (-1 !== t.indexOf("iPhone")) { + var e = A(); + return e.Yoda && "WK" === e.WebViewType ? "YodaWKWebView" : e.Yoda || "WKWebView" !== e.WebView ? "UIWebView" : "WKWebView" + } + return "" + } + , F = function(t, e) { + var n = {}; + return Object.keys(e).forEach((function(r) { + t[e[r]] >= 0 && (n[r] = U(t[e[r]])) + } + )), + n + }; + function B(t) { + return Array.isArray(t) ? t.map((function(t) { + var e = t.tagName + , n = void 0 === e ? "" : e + , r = t.id + , o = t.getAttribute ? t.getAttribute("class") : t.className || "" + , i = n.toLowerCase(); + return r && (i += "#" + r), + o && (i += o.split(/\s+/g).map((function(t) { + return "." + t + } + )).join("")), + i + } + )).filter((function(t) { + return t + } + )).join(",") : "" + } + function Q(t) { + return JSON.parse(JSON.stringify(t)) + } + var q = function(t) { + try { + if (window && window.localStorage && "undefined" != typeof Storage && window.localStorage instanceof Storage) { + var e = Number(function(t) { + try { + if (window && window.localStorage) { + var e = window.localStorage.getItem(t); + if (e) + try { + return JSON.parse(e) + } catch (t) { + return e + } + } + } catch (t) { + return null + } + return null + }(t)) || 0; + return e + 1 > 1e8 && (e = 0), + function(t, e) { + try { + if (window && window.localStorage) + window.localStorage.setItem(t, JSON.stringify(e)) + } catch (t) { + return !1 + } + }(t, e + 1), + e + } + } catch (t) {} + } + , $ = {} + , tt = function(t) { + return $[t] || ($[t] = 0), + $[t]++ + }; + function et(t) { + if (!(null == t ? void 0 : t.name)) + throw new Error("[Radar] \u5173\u952e\u52a8\u4f5c\u4e0a\u62a5\u5fc5\u987b\u914d\u7f6ename"); + if ((null == t ? void 0 : t.extra_info) && !(t.extra_info instanceof Object)) + throw new Error("[Radar] \u5173\u952e\u52a8\u4f5c\u4e0a\u62a5 extra_info \u5fc5\u987b\u4e3a plain object") + } + function nt(t, e) { + if (!Array.isArray(e)) + return -1; + var n = -1; + return e.forEach((function(e, r) { + new RegExp(e).test(t) && (n = r) + } + )), + n + } + var rt, ot, it = function() { + function t() { + for (var t, e = [], n = 0; n < arguments.length; n++) + e[n] = arguments[n]; + this.middlewares = [], + (t = this.middlewares).push.apply(t, e) + } + return t.prototype.use = function() { + for (var t, e = [], n = 0; n < arguments.length; n++) + e[n] = arguments[n]; + var r = this.middlewares.pop(); + (t = this.middlewares).push.apply(t, e), + this.middlewares.push(r) + } + , + t.prototype.invoke = function(t) { + var e; + return (e = this.middlewares, + function(t, n) { + var r = -1; + return function o(i) { + if (i <= r) + return new Error("`next` \u88ab\u91cd\u590d\u8c03\u7528"); + r = i; + var a = e[i]; + if (i === e.length && (a = n), + a) + try { + return a(t, o.bind(null, i + 1)) + } catch (t) { + return t + } + }(0) + } + )(t) + } + , + t + }(), at = ["KUAISHOU", "THANOS", "NEBULA"], st = function(t) { + function r(e, r) { + var o, i, s = t.call(this) || this; + return s.kpn = "", + s.plugins = [], + s.logQueue = [], + s.logQueueNext = [], + s.queueConfig = { + wait: 1e3, + maxBatchLength: 200 + }, + s.eventName = "onpagehide"in window ? "pagehide" : "beforeunload", + s.batchTimer = 0, + s.batchTimerNext = 0, + s.startedLoadReport = !1, + s.radarSessionId = "", + s.radarSessionIdNext = "", + s.chromeMetric = V, + s.isInKwai = !1, + s.isUsingBridge = null, + s.isUsingLegacy = null, + s.isUsingDetachedReport = null, + s.isSupportedYodaConcat = null, + s.customDimension = {}, + s.webviewData = null, + s.webviewStart = null, + s.webviewStartTime = null, + s.finalSampling = {}, + s.sampleData = null, + s.sampleList = [h.LOAD, h.API, h.CUSTOM, h.ERROR, h.EVENT, h.RES], + s.defaultSampleList = { + load: 1, + api: 1, + resource: .1, + error: 1, + event: 1, + custom: 1, + isHit: !0 + }, + s.ignoreList = ["https://web-trace.ksapisrv.com/ktrace/collect"], + s.lastRadarLogId = "", + s.computedSamplingAgain = !0, + s.realSampledList = [], + s.hasFmp = !1, + s.customPerfList = {}, + s.mainApiList = [], + s.mainApiResult = [], + s.observeResource = function(t) { + t.getEntriesByType("resource").forEach((function(t) { + return s.reportPerformance(t) + } + )) + } + , + s.asyncReportTiming = function() { + Y("radarCreatedToOnload"), + Y("onloadToFirstReport"), + setTimeout((function() { + Y("asyncReportTiming"), + s.reportPerformance(y()), + s.startedLoadReport = !0; + try { + s.observeResource(performance), + s.observeChromeMetrics(s.chromeMetric), + new PerformanceObserver(s.observeResource).observe({ + entryTypes: ["resource"] + }) + } catch (t) {} + Y("radarCreatedToFirstReport"), + Y("onloadToFirstReport"), + Y("asyncReportTiming") + } + ), 0) + } + , + s.chromeMetricCallback = function(t) { + var e, n, r = t.name, o = t.value; + r = r.toLocaleLowerCase(); + var i = { + key: h.CUSTOM, + value: (e = {}, + e[r] = o, + e) + }; + s.logCollect(i), + s.logCollectNext({ + key: h.EVENT, + dimension: { + name: r + }, + value: { + duration: o + } + }), + Y(r + "Collect"), + function(t) { + Object.assign(j, t) + }(((n = {})[r] = o, + n)) + } + , + s.observeChromeMetrics = function(t) { + var e = s.options; + t.forEach((function(t) { + var n = t.name; + e && !e[n] || (Y(n + "Collect"), + t.collectFn(s.chromeMetricCallback)) + } + )) + } + , + s.asyncMetricCollectDone = function() { + var t = {}; + Object.keys(D).forEach((function(e) { + var n = D[e]; + !n.duration && n.startTime && (n.duration = 0, + delete n.startTime), + t[e] = n.duration + } + )); + var e = { + key: h.CUSTOM, + value: t + }; + s.logCollect(e), + s.flush(), + s.weblog.flush(), + l(window, s.eventName, s.asyncMetricCollectDone) + } + , + s.flush = function() { + if (s.beforeFlush(), + s.options && !(s.logQueue.length <= 0) && s.startedLoadReport) { + var t = JSON.stringify(n(n({}, s.weblog.commonPackage.getH5ExtraAttr()), { + url: location.href, + hash: location.hash, + webviewStart: s.webviewStart, + webviewStartTime: s.webviewStartTime, + sampling_list: s.finalSampling ? JSON.stringify(s.finalSampling) : "" + })) + , e = { + project_id: s.options.projectId, + radar_session_id: s.radarSessionId, + h5_extra_attr: t + } + , r = s.weblog.commonPackage + , o = r.service_name + , i = r.sub_biz + , c = r.need_encrypt + , u = r.app_package + , l = s.currentUrlPackage && s.currentUrlPackage.toJSON() + , d = null; + s.options.httpReportFirst || (d = s.addRadarStatEvent({ + key: v, + value: n(n({}, e), { + data: a(s.logQueue), + url_package: l, + app_version_name: u.version_name + }), + serviceName: o || "", + subBiz: i || "", + needEncrypt: c || !1, + container: u.container, + realtime: !1, + h5ExtraAttr: t + })), + d && !s.options.httpReportFirst || s.weblog.collect("RADAR", { + name: v, + params: n(n({}, e), { + data: a(s.logQueue) + }), + currentUrlPackage: l, + referUrlPackage: s.referUrlPackage && s.referUrlPackage.toJSON(), + serviceName: o || "radar_service_name" + }), + s.logQueue = [] + } + } + , + s.flushNext = function() { + if (s.options && !(s.logQueueNext.length <= 0)) { + var t = null; + s.options.httpReportFirst || (t = s.reportByBridge()), + t && !s.options.httpReportFirst || s.reportByHttp(), + s.logQueueNext = [] + } + } + , + s.getCommonData = function() { + var t, e, r, o = s.weblog.commonPackage.app_package, i = JSON.stringify(n(n({}, s.weblog.commonPackage.getH5ExtraAttr()), { + app_version_name: o.version_name, + url: location.href, + hash: location.hash, + online: null === navigator || void 0 === navigator ? void 0 : navigator.onLine, + downlink: null === (t = null === navigator || void 0 === navigator ? void 0 : navigator.connection) || void 0 === t ? void 0 : t.downlink, + rtt: null === (e = null === navigator || void 0 === navigator ? void 0 : navigator.connection) || void 0 === e ? void 0 : e.rtt + })), a = s.currentUrlPackage && s.currentUrlPackage.toJSON(), c = null === (r = s.options) || void 0 === r ? void 0 : r.projectId; + return { + h5_extra_attr: i, + url_package: a, + app_version_name: o.version_name, + project_id: c + } + } + , + r && (o = r), + e && (e.logger ? s.apply(e) : o = e), + Y("radarCreatedToFirstReport"), + Y("radarCreatedToOnload"), + s.options = o, + s.queueConfig = n(n({}, s.queueConfig), s.options ? s.options.queue : {}), + s.options && "string" == typeof s.options.mainApi ? (s.mainApiList.push(s.options.mainApi), + s.mainApiResult.push({})) : s.options && Array.isArray(s.options.mainApi) && (s.options.mainApi.length, + s.mainApiList = s.options.mainApi.slice(0, 3), + s.mainApiList.forEach((function() { + return s.mainApiResult.push({}) + } + ))), + s.ignoreList = s.ignoreList.concat((void 0 === (i = s.options && s.options.ignoreList) && (i = []), + i.concat(x).map((function(t) { + return t.replace(O, "") + } + )))), + s + } + return e(r, t), + Object.defineProperty(r.prototype, "KSwitchSampled", { + get: function() { + return this.weblog.currentUrlPackage.sampled + }, + enumerable: !1, + configurable: !0 + }), + Object.defineProperty(r.prototype, "isKSwitchSampled", { + get: function() { + return this.weblog.isKSwitchSampled + }, + enumerable: !1, + configurable: !0 + }), + r.prototype.samplingControl = function(t) { + if (!t) + return !1; + var e = Math.random(); + return "number" == typeof t ? e < t : e < t.sampling + } + , + r.prototype.use = function(t, e) { + var n = new t(e,this.options); + this.plugins.push(n), + this.weblog && n.created() + } + , + r.prototype.apply = function(t) { + var e, n; + this.weblog = t, + this.kpn = this.weblog.Utils.ua.getDefaultKpn(), + this.isInKwai = at.indexOf(this.kpn) >= 0, + this.upadteUrlPackage(), + this.register(), + this.ignoreList.push(null === (n = null === (e = this.weblog) || void 0 === e ? void 0 : e.logger) || void 0 === n ? void 0 : n.url), + this.created() + } + , + r.prototype.created = function() { + this.plugins.forEach((function(t) { + t.created() + } + )) + } + , + r.prototype.destroy = function() { + l(window, "load", this.asyncReportTiming), + this.plugins.forEach((function(t) { + t.destroy() + } + )) + } + , + r.prototype.computedRealSampled = function(t, e) { + if (this.isKSwitchSampled) { + var n = void 0; + if ("object" == typeof this.KSwitchSampled && this.KSwitchSampled.radar) { + var r = this.KSwitchSampled.radar.all; + r = "number" != typeof r ? 1 : r; + var o = this.KSwitchSampled.radar[e]; + n = "number" != typeof o ? r : o * r + } else + n = this.KSwitchSampled ? 1 : 0; + return n * t + } + return 1 + } + , + r.prototype.getWebviewData = function() { + if (window.__yodaCommonDataObject__ && window.__yodaCommonDataObject__.pageLoadData) { + var t = null; + try { + var e = window.__yodaCommonDataObject__.pageLoadData; + t = "string" == typeof e ? JSON.parse(e) : e + } catch (t) { + return + } + var r = t.created + , o = t.pageStart + , i = t.userStart; + this.webviewData = n({ + webviewStart: i || o || r + }, t); + var a = { + key: h.EVENT, + value: null, + dimension: { + name: "\u5ba2\u6237\u7aef\u6570\u636e\u6ce8\u5165\u6210\u529f", + event_type: "radar_inject_success" + } + }; + this.logCollect(a), + this.logCollectNext(a) + } + } + , + r.prototype.getSampleData = function() { + var t = this + , e = this.weblog.Utils.yoda; + if (e ? (this.sampleData = this.defaultSampleList, + window.updateYodaSampleRateWithParams = function(e) { + t.updateSampleData(e), + t.handleSample() + } + ) : this.handleSample(), + window.__yodaCommonDataObject__ && window.__yodaCommonDataObject__.sampleData) { + this.updateSampleData(), + this.handleSample(); + var n = { + key: h.EVENT, + value: null, + dimension: { + name: "\u5ba2\u6237\u7aef\u91c7\u6837\u7387\u6ce8\u5165\u6210\u529f", + event_type: "radar_sample_inject_success" + } + }; + this.logCollect(n), + this.logCollectNext(n) + } else + e && e.getWebviewLoadPerf().then((function(e) { + e.sampleData && (t.updateSampleData(e.sampleData), + t.handleSample()) + } + )) + } + , + r.prototype.updateSampleData = function(t) { + var e = this + , n = null; + try { + var r = t || window.__yodaCommonDataObject__.sampleData; + n = "string" == typeof r ? JSON.parse(r) : r + } catch (t) { + return + } + this.sampleData = this.defaultSampleList, + n && Object.keys(n).forEach((function(t) { + e.sampleData[t] = n[t] + } + )) + } + , + r.prototype.register = function() { + return o(this, void 0, void 0, (function() { + var t, e, n; + return i(this, (function(r) { + switch (r.label) { + case 0: + return y() ? ("undefined" != typeof window && window.yodaCollectErrorDataDestroy && window.yodaCollectErrorDataDestroy(), + performance.timing.loadEventStart > 0 ? this.asyncReportTiming() : u(window, "load", this.asyncReportTiming), + this.options && this.options.radarCost && u(window, this.eventName, this.asyncMetricCollectDone), + u(window, this.eventName, this.flush), + u(window, this.eventName, this.flushNext), + this.getSampleData(), + this.getWebviewData(), + this.radarSessionId = this.nanoId(), + this.radarSessionIdNext = this.uuid(), + (t = this.weblog.Utils.yoda) ? [3, 1] : (this.isUsingBridge = !1, + this.isSupportedYodaConcat = !1, + this.isUsingLegacy = !1, + [3, 6])) : [2]; + case 1: + return null != this.isUsingBridge ? [3, 3] : (e = this, + [4, t.isSupportBridgeLog()]); + case 2: + e.isUsingBridge = r.sent(), + r.label = 3; + case 3: + return null != this.isSupportedYodaConcat ? [3, 5] : (n = this, + [4, t.isSupportBridge("sendRadarLog")]); + case 4: + n.isSupportedYodaConcat = r.sent(), + r.label = 5; + case 5: + this.isUsingLegacy = this.isUsingBridge && !this.isSupportedYodaConcat, + r.label = 6; + case 6: + return this.isUsingDetachedReport = this.isInKwai && !this.isUsingBridge || this.isUsingLegacy, + [2] + } + } + )) + } + )) + } + , + r.prototype.throttle = function(t, e, n, r) { + if (void 0 === r && (r = {}), + e.noThrottle || "number" != typeof t) + return t; + var o = r.startPoint + , i = r.endPoint; + if (t > 6e4 || t < 0 || isNaN(t)) { + if (Math.random() < .1) { + var a = "[" + n + " \u5f02\u5e38]: " + t + "\uff0c\u539f\u59cb\u6570\u636e\u4e3a\uff1a" + e.end + ": " + i + " - " + e.start + ": " + o + , s = { + key: h.EVENT, + value: null, + dimension: { + name: "\u96f7\u8fbe\u6570\u636e\u5f02\u5e38", + event_type: "radar_error", + message: a, + src: location.href, + webViewType: J(), + yoda_version: A().yoda_version || "" + } + }; + this.logCollect(s), + this.logCollectNext(s) + } + return null + } + return Math.round(t) + } + , + r.prototype.reportPerformance = function(t) { + this.plugins.forEach((function(e) { + t && e.when(t) && e.onPerfReport(t) + } + )) + } + , + r.prototype.calculate = function(t, e, n) { + var r = e[t]; + if (r) { + if (r.cachedSkip && this.calculate("cached", e, n)) + return; + if ("function" == typeof r.custom) { + var o = r.custom(t, n); + return this.throttle(o, r, t) + } + var i = r.end + , a = r.start + , s = +n[i] || performance.timing[i] + , u = +n[a] || performance.timing[a] + , l = s - u; + if (!r.notCatchIfUndefined || void 0 !== s && void 0 !== u) + return this.throttle(l, r, t, { + startPoint: u, + endPoint: s + }) + } else + c("[warn 310]", "[Radar] perf key " + t + " is unexpected!") + } + , + r.prototype.calculateNext = function(t, e, n) { + var r = e[t]; + if (r) { + if (r.cachedSkip && this.calculateNext("cached", e, n)) + return; + if ("function" == typeof r.custom) + return U(r.custom(t, n)); + var o = r.end + , i = r.start + , a = +n[o] || performance.timing[o] + , s = +n[i] || performance.timing[i] + , c = a - s; + if (!r.notCatchIfUndefined || void 0 !== a && void 0 !== s) + return U(c) + } + } + , + r.prototype.generateLog = function(t, e, n) { + var r = this; + void 0 === n && (n = !0); + var o = {}; + return Object.keys(t).forEach((function(i) { + var a = i + , s = n ? r.calculate(a, t, e) : r.calculateNext(a, t, e); + null != s && (o[a] = s) + } + )), + o + } + , + r.prototype.subDimension = function(t) { + this.customDimension && (t.dimension || (t.dimension = {}), + Object.assign(t.dimension, this.customDimension)) + } + , + r.prototype.nanoId = function() { + for (var t = 1e9 * Math.random() >>> 0, e = [], n = 0; n < 7; n++) + e.push("0123456789ABCDEF".charAt(16 * Math.random())); + return t + e.join("") + } + , + r.prototype.uuid = function() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(t) { + var e = 16 * Math.random() | 0; + return ("x" === t ? e : 3 & e | 8).toString(16) + } + )) + } + , + r.prototype.beforeFlush = function() { + var t = this; + if (this.computedSamplingAgain) { + var e = { + radarLoadSampling: { + sampling: 1, + type: "load" + }, + radarApiSampling: { + sampling: this.options && this.options.apiSampling || 1, + type: "api" + }, + radarErrorSampling: { + sampling: this.options && this.options.errorSampling || 1, + type: "error" + }, + radarResourceSampling: { + sampling: this.options && this.options.resourceSampling || .1, + type: "resource" + }, + radarCustomSampling: { + sampling: this.options && this.options.customSampling || 1, + type: "custom" + }, + radarEventSampling: { + sampling: this.options && this.options.eventSampling || 1, + type: "event" + } + }; + this.realSampledList = [], + Object.keys(e).forEach((function(n) { + var r = t.isKSwitchSampled ? t.computedRealSampled(e[n].sampling, e[n].type) : e[n] + , o = t.samplingControl(r); + t.finalSampling[e[n].type] = r, + o && t.realSampledList.push(e[n].type) + } + )), + this.isKSwitchSampled && (this.computedSamplingAgain = !1) + } + this.logQueue = this.logQueue.filter((function(e) { + return -1 !== t.realSampledList.indexOf(e.key) + } + )) + } + , + r.prototype.upadteUrlPackage = function() { + this.weblog && (this.computedSamplingAgain = !0, + this.currentUrlPackage = this.weblog.currentUrlPackage, + this.referUrlPackage = this.weblog.referUrlPackage) + } + , + r.prototype.decorateLog = function(t) { + this.currentUrlPackage || this.upadteUrlPackage(), + this.customDimension && this.subDimension(t), + this.currentUrlPackage && this.currentUrlPackage.page !== this.weblog.currentUrlPackage.page && (this.flushNext(), + this.flush(), + this.upadteUrlPackage()) + } + , + r.prototype.logCollect = function(t) { + var e = this; + if (this.options && !this.options.unuseOldRadar) { + this.decorateLog(t); + try { + window.dispatchEvent(new CustomEvent("get-radar-data",{ + detail: { + kv: t + } + })) + } catch (t) {} + var n = !0; + if ("load" === t.key) + for (var r = 0; r < this.logQueue.length; r++) { + var o = this.logQueue[r]; + if ("load" === o.key) { + Object.assign(o, t), + n = !1; + break + } + } + n && this.logQueue.push(t), + z("radarLog", JSON.parse(JSON.stringify(t))), + this.batchTimer || (this.logQueue.length > this.queueConfig.maxBatchLength ? this.flush() : this.batchTimer = window.setTimeout((function() { + e.flush(), + clearTimeout(e.batchTimer), + e.batchTimer = 0 + } + ), this.queueConfig.wait)) + } + } + , + r.prototype.addRadarStatEvent = function(t) { + var e = this; + try { + var r = this.weblog.Utils.yoda; + if (!r) + return !1; + var o = function(t) { + var e, r; + if (!t.value) + return t; + var o = t.value + , i = function(t) { + var e, n = []; + return t.forEach((function(t) { + "load" === t.key ? e = t : n.push(t) + } + )), + [e, n] + }(o.data) + , a = i[0] + , s = i[1] + , c = { + project_id: o.project_id, + app_version_name: o.app_version_name, + url_package: o.url_package, + h5_extra_attr: t.h5ExtraAttr + }; + return { + loadLog: a ? { + removeStashedLog: [], + sendImmediate: null !== (r = null === (e = a.dimension) || void 0 === e ? void 0 : e.sendImmediate) && void 0 !== r && r, + customData: n({ + data: [a] + }, c) + } : null, + commonLog: s.length ? { + removeStashedLog: [], + sendImmediate: !0, + customData: n({ + data: s + }, c) + } : null + } + }(t) + , i = o.loadLog + , a = o.commonLog; + if (i) { + if (this.lastRadarLogId && (i.removeStashedLog = [this.lastRadarLogId], + i.sendImmediate)) { + var s = { + removeStashedLog: [this.lastRadarLogId], + sendImmediate: !1, + customData: { + "": "" + } + }; + r.sendRadarLog(s).then((function(t) { + t && t.logId && (e.lastRadarLogId = t.logId) + } + )) + } + r.sendRadarLog(i).then((function(t) { + t && t.logId && (e.lastRadarLogId = t.logId) + } + )) + } + return a && r.sendRadarLog(a), + !0 + } catch (t) { + return !1 + } + } + , + r.prototype.calculateSample = function(t) { + var e = (null == t ? void 0 : t.load) || 1 + , n = {}; + return t && Object.keys(t).forEach((function(r) { + var o = t[r] / e; + n[r] = o > 1 ? 1 : o + } + )), + n + } + , + r.prototype.handleSample = function() { + var t, e, n, r, o, i, a, s, c = this, u = this.weblog.Utils.yoda; + u || this.sampleData || (this.sampleData = { + load: (null === (t = this.options) || void 0 === t ? void 0 : t.sampling) || 1, + api: (null === (e = this.options) || void 0 === e ? void 0 : e.apiSampling) || 1, + resource: (null === (n = this.options) || void 0 === n ? void 0 : n.resourceSampling) || .1, + error: (null === (r = this.options) || void 0 === r ? void 0 : r.errorSampling) || 1, + event: (null === (o = this.options) || void 0 === o ? void 0 : o.eventSampling) || 1, + custom: (null === (i = this.options) || void 0 === i ? void 0 : i.customSampling) || 1 + }), + s = this.calculateSample(this.sampleData), + a = { + radarLoadSampling: { + sampling: 1, + type: "load" + }, + radarApiSampling: { + sampling: (null == s ? void 0 : s.api) || 1, + type: "api" + }, + radarErrorSampling: { + sampling: (null == s ? void 0 : s.error) || 1, + type: "error" + }, + radarResourceSampling: { + sampling: (null == s ? void 0 : s.resource) || .1, + type: "resource" + }, + radarCustomSampling: { + sampling: (null == s ? void 0 : s.custom) || 1, + type: "custom" + }, + radarEventSampling: { + sampling: (null == s ? void 0 : s.event) || 1, + type: "event" + } + }, + this.sampleList = [], + Object.keys(a).forEach((function(t) { + var e = a[t]; + c.samplingControl(e) && c.sampleList.push(a[t].type) + } + )) + } + , + r.prototype.logCollectNext = function(t) { + var e = this + , r = Q(t); + if (this.options && (!this.sampleData || !1 !== this.sampleData.isHit) && this.sampleList.some((function(t) { + return t === r.key + } + ))) { + this.decorateLog(r); + var o = this.getCommonData() + , i = o.app_version_name; + delete o.app_version_name; + var a = new it((function(t, r) { + return t.dimension.app_version_name = i, + n(n(n({}, t), o), { + event_client_timestamp: Date.now(), + event_trigger_source: "H5", + radar_session_id: e.radarSessionIdNext + }) + } + )); + if (a.use((function(t, e) { + return t.key && "load" === t.key && (t.dimension = n(n({}, t.dimension), { + load_device_increase_id: q("LOAD_DEVICE_INCREASE_ID"), + load_session_increase_id: tt("LOAD_SESSION_INCREASE_ID") + })), + t.key && "load" !== t.key && (t.dimension = n(n({}, t.dimension), { + other_device_increase_id: q("OTHER_DEVICE_INCREASE_ID"), + other_session_increase_id: tt("OTHER_SESSION_INCREASE_ID") + })), + e() + } + ), (function(t, n) { + return t.dimension.sample_rate = e.sampleData && e.sampleData[t.key] || 1, + n() + } + )), + (r = a.invoke(r))instanceof Error) + throw r; + try { + window.dispatchEvent(new CustomEvent("get-radar-next-data",{ + detail: { + kv: r + } + })) + } catch (t) {} + var s = !0; + if ("load" === r.key) + for (var c = 0; c < this.logQueueNext.length; c++) { + var u = this.logQueueNext[c]; + if ("load" === u.key) { + Object.assign(u, r), + s = !1; + break + } + } + s && this.logQueueNext.push(r), + z("radarLogNext", JSON.parse(JSON.stringify(r))), + this.batchTimerNext || (this.logQueueNext.length > this.queueConfig.maxBatchLength ? this.flushNext() : this.batchTimerNext = window.setTimeout((function() { + e.flushNext(), + clearTimeout(e.batchTimerNext), + e.batchTimerNext = 0 + } + ), this.queueConfig.wait)) + } + } + , + r.prototype.reportByHttp = function() { + var t, e = this.getCommonData(), n = { + project_id: null === (t = this.options) || void 0 === t ? void 0 : t.projectId, + radar_session_id: this.radarSessionIdNext, + h5_extra_attr: e.h5_extra_attr + }, r = this.logQueueNext.filter((function(t) { + return "load" === t.key + } + )), o = this.logQueueNext.filter((function(t) { + return "load" !== t.key + } + )); + Array.isArray(r) && r.length && this.collectLog(n, r, "radarSDK"), + Array.isArray(o) && o.length && this.collectLog(n, o, "radarSDKSupplement") + } + , + r.prototype.collectLog = function(t, e, r) { + this.weblog.collect("RADAR", { + name: v, + params: n(n({}, t), { + data: a(e) + }), + serviceName: r + }) + } + , + r.prototype.reportByBridge = function() { + var t = this.weblog.Utils.yoda; + if (!t) + return !1; + var e = this.logQueueNext.filter((function(t) { + return "load" === t.key + } + )) + , n = this.logQueueNext.filter((function(t) { + return "load" !== t.key + } + )); + if (!e.length && !n.length) + return !0; + try { + if (e.length) { + var r = e[0]; + t.sendSummarizedLog({ + key: "h5_load", + data: r + }) + } + return n.length && t.sendRadarLog({ + data: n + }), + !0 + } catch (t) { + return !1 + } + } + , + r + }(g), ct = function(t, e) { + this.radar = t, + this.options = e + }, ut = function(t) { + function n() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "navigation", + e.logData = {}, + e.logSended = !1, + e.saveWebviewEntry = {}, + e.hasReportBase = !1, + e.record = { + fmp: !1, + base: !1, + webviewPerf: !1 + }, + e.loadTimeout = null, + e.gettingWebview = !1, + e.REPEAT_TIME = 5, + e.getWebviewTimes = e.REPEAT_TIME, + e.reportOnUnload = function(t) { + e.logSended || e.radar.isSupportedYodaConcat || (e.logSended = !0, + e.reportFirstScreen(Object.assign(e.logData, j)), + e.radar.logCollect(e.data), + "noflush" !== t && (e.radar.flush(), + e.radar.weblog.flush())) + } + , + e + } + return e(n, t), + Object.defineProperty(n.prototype, "sendImmediate", { + get: function() { + return this.record.fmp && this.record.base && this.record.webviewPerf && !(!(t = window.navigator.userAgent.match(/tbht\/([\w]+)/i)) || "0" === t[1]); + var t + }, + enumerable: !1, + configurable: !0 + }), + Object.defineProperty(n.prototype, "data", { + get: function() { + return this.sepDimension({ + key: h.LOAD, + value: this.logData + }) + }, + enumerable: !1, + configurable: !0 + }), + n.prototype.created = function() { + return o(this, void 0, void 0, (function() { + return i(this, (function(t) { + return [2] + } + )) + } + )) + } + , + n.prototype.when = function(t) { + if (t.custom) { + var e = (t.entry || {}).key; + return ["fmp", "play_clicked", "play_idr", "webViewPerf"].indexOf(e) > -1 + } + return !t.entryType || "navigation" === t.entryType + } + , + n.prototype.getWebviewLoadData = function() { + return o(this, void 0, void 0, (function() { + var t, e, n, r, o, a, s; + return i(this, (function(i) { + switch (i.label) { + case 0: + return this.record.webviewPerf ? [2, !0] : (t = this.radar.weblog.Utils.yoda, + (n = t) ? [4, t.getWebviewLoadPerf()] : [3, 2]); + case 1: + n = i.sent(), + i.label = 2; + case 2: + return (e = n) && e.timeData ? (this.record.webviewPerf = !0, + r = e.timeData, + o = r.userStart, + a = r.pageStart, + s = r.created, + this.radar.webviewStart = "userStart", + this.radar.webviewStartTime = o, + o || (a ? (e.timeData.userStart = a, + this.radar.webviewStart = "pageStart", + this.radar.webviewStartTime = a) : (e.timeData.userStart = s, + this.radar.webviewStart = "created", + this.radar.webviewStartTime = s)), + this.onPerfReport({ + custom: !0, + entry: { + key: "webViewPerf", + value: e.timeData + } + }), + [2, !0]) : [2, !1] + } + } + )) + } + )) + } + , + n.prototype.webviewPatch = function() { + return o(this, void 0, void 0, (function() { + return i(this, (function(t) { + switch (t.label) { + case 0: + return this.gettingWebview ? [2] : (this.gettingWebview = !0, + [4, this.repeatWebview()]); + case 1: + return t.sent(), + this.gettingWebview = !1, + [2] + } + } + )) + } + )) + } + , + n.prototype.repeatWebview = function() { + return o(this, void 0, void 0, (function() { + return i(this, (function(t) { + switch (t.label) { + case 0: + return [4, this.getWebviewLoadData()]; + case 1: + return !t.sent() && this.getWebviewTimes > 0 ? (this.getWebviewTimes--, + [4, this.repeatWebview()]) : [3, 3]; + case 2: + t.sent(), + t.label = 3; + case 3: + return this.getWebviewTimes = this.REPEAT_TIME, + [2] + } + } + )) + } + )) + } + , + n.prototype.onPerfReport = function(t) { + return o(this, void 0, void 0, (function() { + var e, n, r, o, a, s, c, u, l, d = this; + return i(this, (function(i) { + if (t.custom) { + if ((e = t.entry) && (n = e.key, + r = e.value, + o = t.renderTime, + "fmp" === n && (performance.timing.radarFmp = o, + this.record.fmp = !0, + u = F(performance.timing, N), + Object.assign(this.logData, ((l = {})[n] = r, + l), u), + this.webviewPatch(), + this.record.webviewPerf && (s = this.radar.generateLog(T, this.saveWebviewEntry), + Object.assign(this.logData, s))), + "webViewPerf" === n)) { + if (!(a = e.value)) + return [2]; + this.saveWebviewEntry = a, + s = this.radar.generateLog(T, a), + Object.assign(this.logData, s) + } + } else + c = this.radar.generateLog(w, t), + u = F(performance.timing, N), + Object.assign(this.logData, c, u), + this.record.base = !0; + return this.radar.isSupportedYodaConcat ? (this.webviewPatch(), + this.radar.logCollect(this.data)) : this.radar.isUsingDetachedReport && this.record.webviewPerf && this.record.fmp && this.record.base ? this.reportOnUnload("noflush") : this.record.fmp && this.record.base && !this.hasReportBase ? (clearTimeout(this.loadTimeout), + this.loadTimeout = null, + this.loadReport()) : !this.hasReportBase && this.record.base && (this.loadTimeout = setTimeout((function() { + d.loadReport(), + d.hasReportBase = !0 + } + ), 2e3)), + [2] + } + )) + } + )) + } + , + n.prototype.destroy = function() { + clearTimeout(this.delay) + } + , + n.prototype.sepDimension = function(t) { + var e = t.key + , n = t.value + , o = n.protocol; + return { + key: e, + value: r(n, ["protocol"]), + dimension: { + protocol: o, + sendImmediate: this.sendImmediate + } + } + } + , + n.prototype.reportFirstScreen = function(t) { + if (t.play_clicked && t.play_idr) { + var e = t.play_idr - t.play_clicked; + e > 0 && e < 6e4 && (this.logData.play_first_screen = e) + } + } + , + n.prototype.loadReport = function() { + Object.assign(this.logData, j), + this.radar.logCollect(Q(this.data)), + this.radar.flush(), + this.radar.weblog.flush() + } + , + n + }(ct); + !function(t) { + t.LOAD = "load", + t.RES = "resource", + t.API = "api", + t.ERROR = "error", + t.SDK_ERROR = "sdk_error", + t.CUSTOM = "custom", + t.BATCH = "batch", + t.EVENT = "event" + }(rt || (rt = {})), + function(t) { + t.SCRIPT = "script", + t.RES = "res", + t.API = "api", + t.VIDEO = "video" + }(ot || (ot = {})); + var lt = { + redirect: { + end: "redirectEnd", + start: "redirectStart" + }, + dns: { + end: "domainLookupEnd", + start: "domainLookupStart" + }, + dns_start: { + end: "domainLookupEnd", + start: "navigationStart" + }, + tcp: { + end: "connectEnd", + start: "connectStart" + }, + tcp_start: { + end: "connectEnd", + start: "navigationStart" + }, + redirect_count: { + custom: function(t, e) { + return e.redirectCount + } + }, + ssl: { + custom: function(t, e) { + var n = e; + return e.secureConnectionStart || e.requestStart || (n = performance.timing), + 0 === n.secureConnectionStart ? 0 : n.requestStart - n.secureConnectionStart + } + }, + ssl_start: { + custom: function(t, e) { + var n = e; + return e.secureConnectionStart || e.requestStart || (n = performance.timing), + 0 === n.secureConnectionStart ? 0 : n.secureConnectionStart - n.redirectStart + } + }, + ttfb: { + end: "responseStart", + start: "requestStart" + }, + request_start: { + end: "requestStart", + start: "navigationStart" + }, + trans: { + end: "responseEnd", + start: "responseStart" + }, + dom_parse: { + end: "domInteractive", + start: "responseEnd" + }, + dom_parse_start: { + end: "domInteractive", + start: "navigationStart" + }, + blank: { + end: "domLoading", + start: "navigationStart" + }, + fb: { + end: "responseStart", + start: "navigationStart" + }, + dom_ready: { + end: "domContentLoadedEventEnd", + start: "navigationStart" + }, + total: { + end: "loadEventStart", + start: "navigationStart" + }, + resource: { + end: "loadEventStart", + start: "domInteractive" + }, + fp: { + custom: function() { + if ("function" != typeof performance.getEntries) + return null; + var t = performance.getEntries().filter((function(t) { + return "first-paint" === t.name + } + ))[0]; + return t ? Math.ceil(t.startTime + t.duration) : null + } + }, + js_cost: { + custom: function() { + if ("function" != typeof performance.getEntries) + return null; + var t = y() + , e = performance.getEntries() + , n = performance.getEntries().filter((function(t) { + return "navigation" === t.initiatorType + } + ))[0] + , r = e.filter((function(t) { + return "script" === t.initiatorType + } + ))[0] + , o = n ? n.domComplete : t.domComplete - t.navigationStart; + return r && o ? o - r.fetchStart : null + } + }, + tti: { + end: "domInteractive", + start: "navigationStart" + }, + protocol: { + custom: function(t, e) { + return e.nextHopProtocol + } + }, + dom_num: { + custom: function() { + return "undefined" != typeof document ? document.all.length : null + } + } + } + , dt = { + fetch_start: { + custom: function(t, e) { + return Math.round(e.fetchStart) + }, + noThrottle: !0 + }, + dns: { + end: "domainLookupEnd", + start: "domainLookupStart", + cachedSkip: !0 + }, + tcp: { + end: "connectEnd", + start: "connectStart", + cachedSkip: !0 + }, + ssl: { + cachedSkip: !0, + custom: function(t, e) { + return 0 === e.secureConnectionStart ? 0 : e.requestStart - e.secureConnectionStart + } + }, + ttfb: { + end: "responseStart", + start: "requestStart", + cachedSkip: !0 + }, + trans: { + end: "responseEnd", + start: "responseStart", + cachedSkip: !0 + }, + fb: { + end: "responseStart", + start: "fetchStart", + cachedSkip: !0 + }, + total: { + end: "responseEnd", + start: "fetchStart" + }, + duration: { + end: "responseEnd", + start: "fetchStart" + }, + size: { + cachedSkip: !0, + custom: function(t, e) { + return e.encodedBodySize + }, + noThrottle: !0 + }, + protocol: { + custom: function(t, e) { + return e.nextHopProtocol + } + }, + file: { + custom: function(t, e) { + return e.name + }, + noThrottle: !0 + }, + res_type: { + custom: function(t, e) { + return e.initiatorType + } + }, + cached: { + custom: function(t, e) { + return 0 === e.transferSize || null == e.transferSize && 0 === e.domainLookupStart + }, + noThrottle: !0 + } + } + , pt = { + main_api: { + end: "apiEnd", + start: "apiStart" + }, + main_api_offset: { + end: "apiStart", + start: "domLoading" + } + } + , ht = { + navigation_start_time: "navigationStart", + fetch_start_time: "fetchStart", + dns_start_time: "domainLookupStart", + dns_end_time: "domainLookupEnd", + connect_start_time: "connectStart", + ssl_start_time: "secureConnectionStart", + request_start_time: "requestStart", + response_start_time: "responseStart", + response_end_time: "responseEnd", + dom_interactive_time: "domInteractive", + dom_loading_time: "domLoading", + dom_ready_time: "domContentLoadedEventEnd", + load_event_time: "loadEventStart", + fmp_time: "radarFmp", + connect_end_time: "connectEnd", + load_event_end: "loadEventEnd", + dom_complete: "domComplete", + dom_content_loaded_event_start: "domContentLoadedEventStart", + redirect_start: "redirectStart", + redirect_end: "redirectEnd" + } + , mt = { + navigation_start: "startTime", + redirect_start: "redirectStart", + redirect_end: "redirectEnd", + dns_start: "domainLookupStart", + dns_end: "domainLookupEnd", + connect_start: "connectStart", + connect_end: "connectEnd", + ssl_start: "secureConnectionStart", + request_start: "requestStart", + response_start: "responseStart", + response_end: "responseEnd" + } + , ft = { + redirect_start: "redirectStart", + redirect_end: "redirectEnd", + dns_start: "domainLookupStart", + dns_end: "domainLookupEnd", + connect_start: "connectStart", + connect_end: "connectEnd", + ssl_start: "secureConnectionStart", + request_start: "requestStart", + response_start: "responseStart", + response_end: "responseEnd" + } + , gt = function(t) { + function n() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "navigation-radar-plus", + e.logData = {}, + e.isMainApi = !1, + e.hasReportMainApi = !1, + e + } + return e(n, t), + Object.defineProperty(n.prototype, "data", { + get: function() { + return this.sepDimension({ + key: rt.LOAD, + value: this.logData + }) + }, + enumerable: !1, + configurable: !0 + }), + n.prototype.created = function() { + return o(this, void 0, void 0, (function() { + return i(this, (function(t) { + return this.onPerfReport({ + custom: !0, + entry: { + key: "radar_init", + value: null + } + }), + [2] + } + )) + } + )) + } + , + n.prototype.when = function(t) { + if (t.custom) { + var e = (t.entry || {}).key; + return ["fmp", "customPerf"].indexOf(e) > -1 + } + return this.isMainApi = this.radar.mainApiResult.some((function(e) { + return e.url && t.name === e.url + } + )), + !(!this.isMainApi || "fetch" !== t.initiatorType && "xmlhttprequest" !== t.initiatorType || !this.radar.mainApiResult.filter((function(t) { + return t.url + } + )).every((function(t) { + return t.catch + } + )) || this.hasReportMainApi || (this.hasReportMainApi = !0, + !this.radar.hasFmp)) || (!t.entryType || "navigation" === t.entryType) + } + , + n.prototype.onPerfReport = function(t) { + return o(this, void 0, void 0, (function() { + var e, n, r, o, a, s, c, u = this; + return i(this, (function(i) { + if (t.custom) { + if ((e = t.entry) && (n = e.key, + r = e.value, + o = t.renderTime, + "radar_init" === n && Object.assign(this.logData, { + event_name: "radar_init" + }), + "fmp" === n && (performance.timing.radarFmp = o, + a = this.radar.generateLog(pt, performance.timing, !1), + Object.assign(this.logData, ((c = {})[n] = r, + c), { + event_name: "fmp" + }, a)), + "customPerf" === n && (s = {}, + Object.keys(this.radar.customPerfList).forEach((function(t) { + s[t + "_time"] = u.radar.customPerfList[t].time + } + )), + Object.assign(this.logData, { + event_name: "h5_custom_metric", + custom_metric: JSON.stringify(s), + custom_metric_name: r, + custom_metric_timestamp: this.radar.customPerfList[r].time + }), + this.radar.customPerfList[r] && this.radar.customPerfList[r].options && !0 !== this.radar.customPerfList[r].options.sendTimeline))) + return [2] + } else + this.isMainApi ? Object.assign(this.logData, { + event_name: "main_api" + }) : Object.assign(this.logData, { + event_name: "h5_load" + }); + return this.getCommonLog(t), + this.loadReport(), + [2] + } + )) + } + )) + } + , + n.prototype.destroy = function() {} + , + n.prototype.getCommonLog = function(t) { + var e = this.radar.generateLog(lt, t, !1) + , n = F(performance.timing, ht); + Object.assign(this.logData, e, n, { + main_api_list: this.radar.mainApiResult + }) + } + , + n.prototype.sepDimension = function(t) { + var e = t.key + , n = t.value + , o = n.protocol + , i = n.event_name + , a = n.custom_metric + , s = n.custom_metric_name + , c = n.main_api_list; + return { + key: e, + value: r(n, ["protocol", "event_name", "custom_metric", "custom_metric_name", "main_api_list"]), + dimension: { + protocol: o, + event_name: i, + custom_metric: a, + custom_metric_name: s, + main_api_list: c + } + } + } + , + n.prototype.loadReport = function() { + Object.assign(this.logData, j), + this.collectAndFlush() + } + , + n.prototype.collectAndFlush = function() { + this.radar.logCollectNext(Q(this.data)), + this.radar.flushNext(), + this.radar.weblog.flush() + } + , + n + }(ct) + , yt = function(t) { + function n() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "resource", + e.onResError = function(t) { + e.isScriptError(t) || e.radar.logCollect(e.sepDimension({ + key: h.RES, + value: { + failed: !0, + file: t.target.src, + res_path: B(t.path || t.composedPath && t.composedPath()) + } + })) + } + , + e + } + return e(n, t), + n.prototype.created = function() { + u(window, "error", this.onResError, !0) + } + , + n.prototype.when = function(t) { + return !H(t.name, this.radar.ignoreList) && "resource" === t.entryType && "fetch" !== t.initiatorType && "xmlhttprequest" !== t.initiatorType + } + , + n.prototype.isScriptError = function(t) { + return t.message || null != t.lineno + } + , + n.prototype.onPerfReport = function(t) { + var e = this.radar.generateLog(k, t); + this.radar.logCollect(this.sepDimension({ + key: h.RES, + value: e + })) + } + , + n.prototype.destroy = function() { + l(window, "error", this.onResError, !0) + } + , + n.prototype.sepDimension = function(t) { + var e = t.key + , n = t.value + , o = n.protocol + , i = n.file + , a = n.cached + , s = n.res_path + , c = n.failed + , u = n.res_type; + return { + key: e, + value: r(n, ["protocol", "file", "cached", "res_path", "failed", "res_type"]), + dimension: { + protocol: o, + file: i, + cached: a, + failed: c, + res_path: s, + res_type: u + } + } + } + , + n + }(ct) + , vt = function(t) { + function o() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "resource", + e.onResError = function(t) { + e.isScriptError(t) || e.radar.logCollectNext(e.sepDimension({ + key: rt.RES, + value: { + failed: !0, + file: t.target.src || t.target.href, + res_path: B(t.path || t.composedPath && t.composedPath()) + } + })) + } + , + e + } + return e(o, t), + o.prototype.created = function() { + u(window, "error", this.onResError, !0) + } + , + o.prototype.when = function(t) { + return !H(t.name, this.radar.ignoreList) && ("resource" === t.entryType && "fetch" !== t.initiatorType && "xmlhttprequest" !== t.initiatorType || "resource" === t.entryType && ("fetch" === t.initiatorType || "xmlhttprequest" === t.initiatorType) && ("js" === R(t.name) || "css" === R(t.name))) + } + , + o.prototype.isScriptError = function(t) { + return t.message || null != t.lineno + } + , + o.prototype.onPerfReport = function(t) { + var e = this.radar.generateLog(dt, t, !1) + , r = { + encoded_body_size: t.encodedBodySize + "", + decoded_body_size: t.decodedBodySize + "" + }; + Object.keys(ft).forEach((function(e) { + r[e] = Number(t[ft[e]] + performance.timing.navigationStart).toFixed() + } + )), + this.radar.logCollectNext(this.sepDimension({ + key: rt.RES, + value: n(n(n({}, e), r), { + failed: !1 + }) + })) + } + , + o.prototype.destroy = function() { + l(window, "error", this.onResError, !0) + } + , + o.prototype.sepDimension = function(t) { + var e = t.key + , n = t.value + , o = n.protocol + , i = n.file + , a = n.cached + , s = n.res_path + , c = n.failed + , u = n.res_type; + return { + key: e, + value: r(n, ["protocol", "file", "cached", "res_path", "failed", "res_type"]), + dimension: { + protocol: o, + file: i, + cached: a, + failed: c, + res_path: s, + res_type: u + } + } + } + , + o + }(ct); + function bt(t) { + return void 0 === t && (t = ""), + "__radar_" + t + Math.random().toString(36).substring(2, 8) + } + function St(t, e) { + var r = window.XMLHttpRequest; + return r ? (window.XMLHttpRequest = function() { + var o = new r; + o._radarRequest = Object.create(null), + o._radarResponse = Object.create(null); + var i = bt(); + o._radarRequest.id = i; + var a = function() { + var t, e, n, r; + for (t in o._radarResponse.status = o.status, + o._radarResponse.statusText = o.statusText, + r = function(t, e) { + switch (null == e && (e = {}), + typeof t) { + case "object": + var n = []; + for (var r in t) { + var o = t[r] + , i = r.toLowerCase(); + n.push(i + ":\t" + o) + } + return n.join("\n") + "\n"; + case "string": + for (var a = 0, s = (n = t.split("\n")).length; a < s; a++) { + var c = n[a]; + if (/([^:]+):\s*(.+)/.test(c)) { + var u = RegExp.$1 + , l = null != u ? u.toLowerCase() : void 0; + o = RegExp.$2, + null == e[l] && (e[l] = o) + } + } + return e + } + }(o.getAllResponseHeaders())) + n = r[t], + o._radarResponse && o._radarResponse.headers && !o._radarResponse.headers[t] && (e = t.toLowerCase(), + o._radarResponse.headers[e] = n) + }; + if (o.addEventListener("readystatechange", (function() { + switch (o.readyState) { + case 4: + "function" == typeof e && (a(), + function() { + if (o.responseType && "text" !== o.responseType) + "document" === o.responseType ? (o._radarResponse.xml = o.responseXML, + o._radarResponse.data = o.responseXML) : o._radarResponse.data = o.response; + else { + o._radarResponse.text = o.responseText, + o._radarResponse.data = o.responseText; + try { + o._radarResponse.xml = o.responseXML + } catch (t) {} + } + "responseURL"in o && (o._radarResponse.finalUrl = o.responseURL) + }(), + e(o._radarRequest, o._radarResponse)) + } + } + )), + "function" == typeof o.open) { + var s = o.open; + o.open = function(t, e, r, o, i) { + var a = [].slice.call(arguments); + return this._radarRequest = n({ + method: t, + url: e, + async: r, + user: o, + pass: i + }, this._radarRequest), + this._radarResponse.headers = {}, + s.apply(this, a) + } + } + if ("function" == typeof o.send) { + var c = o.send; + o.send = function() { + var e = [].slice.call(arguments); + return "function" == typeof t && t(this._radarRequest), + c.apply(this, e) + } + } + return o + } + , + ["DONE", "HEADERS_RECEIVED", "LOADING", "OPENED", "UNSENT"].forEach((function(t) { + window.XMLHttpRequest[t] = r[t] + } + )), + window.XMLHttpRequest.prototype = r.prototype, + function() { + r && (window.XMLHttpRequest = r) + } + ) : (c("HAS NOT XMLHttpRequest!"), + !1) + } + function wt(t, e) { + var n = function(t) { + if ("function" != typeof t.fetch) + return null; + var e = t.fetch; + return t.fetch = function(t) { + return function() { + for (var e = [], n = 0; n < arguments.length; n++) + e[n] = arguments[n]; + return kt.apply(void 0, a([t], e)) + } + }(t.fetch), + { + register: function(t) { + return Lt.push(t), + function() { + var e = Lt.indexOf(t); + e >= 0 && Lt.splice(e, 1) + } + }, + clear: function() { + Lt = [] + }, + unRegister: function() { + e && (t.fetch = e) + } + } + }("function" == typeof importScripts ? self : window); + return n && n.register({ + request: function(e, n) { + "function" == typeof t && t(e) + }, + response: function(t, n) { + "function" == typeof e && e(n, t) + }, + responseError: function(t, n) { + "function" == typeof e && e(n, { + status: 0, + statusText: t + }) + } + }), + null == n ? void 0 : n.unRegister + } + var Lt = []; + function kt(t) { + for (var e = [], n = 1; n < arguments.length; n++) + e[n - 1] = arguments[n]; + var r = Lt.reduce((function(t, e) { + return [e].concat(t) + } + ), []) + , o = "string" == typeof e[0] ? new Request(e[0],e[1]) : e[0]; + o.id = bt(), + r.forEach((function(t) { + var e = t.request; + o = e(o) || o + } + )); + var i = t.apply(void 0, e) + , a = null; + return i.then((function(t) { + t = t.clone(), + a = t; + var e = t.headers.get("content-type"); + return e && (e.indexOf("application/json") > -1 || e.indexOf("text/html") > -1) ? t.clone().text() : "[object Object]" + } + )).then((function(t) { + var e = a.clone(); + return e.data = t, + r.forEach((function(t) { + var n = t.response; + n && (e = n(e, o) || e) + } + )), + a.clone() + } + ), (function(t) { + throw r.forEach((function(e) { + var n = e.responseError; + n && (t = n(t, o) || t) + } + )), + t + } + )) + } + var xt = function(t) { + function o() { + var e = null !== t && t.apply(this, arguments) || this; + return e.queue = [], + e.key = "api", + e.logList = [], + e.perfList = [], + e.unhookXML = null, + e.unhookFetch = null, + e.beforeHook = function(t) { + if (!H(t.url, e.radar.ignoreList) && "js" !== R(t.url) && "css" !== R(t.url)) { + var n = { + api: e.requestURLCompletion(t.url), + method: t.method, + request: t, + startTime: Date.now() + }; + e.queue.push(n) + } + } + , + e.afterHook = function(t, o) { + var i = e.queue.filter((function(e) { + return e.request === t + } + ))[0]; + if (i) { + var a = nt(i.api, e.radar.mainApiList); + a > -1 && !e.radar.hasFmp && (e.radar.mainApiResult[a].url = i.api), + delete i.request; + var s = i.startTime + , c = r(i, ["startTime"]) + , u = Date.now() + , l = u - s + "" + , d = o.status; + "function" == typeof e.options.customizeRadarStatus && (d = e.options.customizeRadarStatus(o)); + var p = e.customHook({ + request: t, + response: o, + duration: l + }) + , m = Tt(o.headers) + , f = n(n({ + duration: l, + logTime: Date.now().toString(), + total: l, + status: d, + size: +m + "", + custom_failed: !(d >= 200 && d < 300) + }, c), p); + "string" == typeof o.text && (f.responseData = o.text); + var g = n(n({}, o), { + status: d + }); + if (e.isResponseError(g)) + e.radar.logCollect(e.sepDimension({ + key: h.API, + value: f + })), + e.radar.logCollectNext(e.sepDimension({ + key: h.API, + value: f + })); + else { + if (!e.radar.hasFmp) { + var y = performance.timing.apiStart; + performance.timing.apiStart = y ? Math.min(y, s) : s; + var v = performance.timing.apiEnd; + performance.timing.apiEnd = v ? Math.max(v, u) : u + } + !e.mergeAPIPerf(null, f) && e.logList.push(f) + } + e.queue = e.queue.filter((function(e) { + return e.request && e.request !== t + } + )) + } + } + , + e + } + return e(o, t), + o.prototype.when = function(t) { + return !H(t.name, this.radar.ignoreList) && "resource" === t.entryType && ("fetch" === t.initiatorType || "xmlhttprequest" === t.initiatorType) && "js" !== R(t.name) && "css" !== R(t.name) + } + , + o.prototype.onPerfReport = function(t) { + var e = this.radar.generateLog(L, t, !1); + e.perfTime = Date.now().toString(); + var r = { + encoded_body_size: t.encodedBodySize && t.encodedBodySize + "", + decoded_body_size: t.decodedBodySize && t.decodedBodySize + "" + }; + Object.keys(mt).forEach((function(e) { + r[e] = Number(t[mt[e]] + performance.timing.navigationStart).toFixed() + } + )); + var o = n(n({}, e), { + api: e.file, + apiTime: r + }); + !this.mergeAPIPerf(o) && this.perfList.push(o) + } + , + o.prototype.mergeAPIPerf = function(t, e) { + var r = t || e + , o = t ? this.logList : this.perfList; + if (!r) + return !1; + for (var i = -1, a = 0, s = o.length; a < s; a++) { + var c = o[a] + , u = (r.api || "").replace(/\?.+$/, "") + , l = (c.api || "").replace(/\?.+$/, "") + , d = r.size; + if (u === l) { + Object.assign(r, c); + var m = nt(u, this.radar.mainApiList); + m > -1 && !0 !== this.radar.mainApiResult[m].catch && (this.radar.mainApiResult[m] = n(n({}, r.apiTime), { + url: r.api, + status: r.status, + size_radar: r.size, + cached: r.cached, + method: r.method, + catch: !0, + perfTime: r.perfTime + })), + Object.assign(r, r.apiTime), + delete r.file, + d && (r.size = d), + !r.size && r.responseData && (r.size = p(r.responseData)), + delete r.responseData, + i = a + } + } + return -1 !== i && (o.splice(i, 1), + this.radar.logCollect(this.sepDimension({ + key: h.API, + value: r + })), + this.radar.logCollectNext(this.sepDimension(Q({ + key: h.API, + value: r + }))), + !0) + } + , + o.prototype.sepDimension = function(t) { + var e = t.key + , n = t.value + , o = n.res_type + , i = n.protocol + , a = n.cached + , s = n.custom_failed + , c = n.status + , u = n.api + , l = n.method + , d = n.response_code + , p = n.response_msg; + return n.apiTime, + { + key: e, + value: r(n, ["res_type", "protocol", "cached", "custom_failed", "status", "api", "method", "response_code", "response_msg", "apiTime"]), + dimension: { + res_type: o, + protocol: i, + api: u, + custom_failed: s, + status: c, + cached: a, + method: l, + response_code: d, + response_msg: p + } + } + } + , + o.prototype.requestURLCompletion = function(t) { + var e = document.location + , n = e.protocol + , r = e.host; + return 0 === t.indexOf("//") ? n + t : 0 === t.indexOf("/") ? n + "//" + r + t : t + } + , + o.prototype.isResponseError = function(t) { + return 0 === t.status + } + , + o.prototype.created = function() { + this.unhookXML = St(this.beforeHook, this.afterHook), + this.unhookFetch = wt(this.beforeHook, this.afterHook) + } + , + o.prototype.destroy = function() { + this.unhookXML && this.unhookXML(), + this.unhookFetch && this.unhookFetch() + } + , + o.prototype.customHook = function(t) { + var e = {}; + if ("function" != typeof this.options.APIHook) + return e; + var n = {}; + try { + n = this.options.APIHook(t) + } catch (t) { + return {} + } + if (!n) + return e; + var r = n.response_msg + , o = n.response_code + , i = n.status + , a = n.custom_failed; + try { + e.response_msg = JSON.stringify(r).slice(0, 100) + } catch (t) { + e.response_msg = "radar error: \u4f20\u5165\u7684response_msg\u6709\u9519\u8bef" + } + return e.response_code = Number(o), + void 0 !== i && (e.status = i), + void 0 !== a && (e.custom_failed = a), + e + } + , + o + }(ct); + function Tt(t) { + return t ? "function" == typeof t.get ? +t.get("Content-Length") || 0 : +t["content-length"] || 0 : 0 + } + var Nt = []; + function _t(t, e) { + Gt(e) >= 0 || (Nt.push(e), + setTimeout((function() { + Nt.splice(Gt(e), 1) + } + ), 2e3), + Pt(t, e)) + } + function Pt(t, e) { + var n = function(t) { + var e = h.ERROR + , n = t.error_cons_type + , o = t.file + , i = t.error_type + , a = t.msg + , s = t.col + , c = t.line + , u = t.stack + , l = r(t, ["error_cons_type", "file", "error_type", "msg", "col", "line", "stack"]); + return { + key: e, + value: l, + dimension: { + error_cons_type: n, + file: o, + error_type: i, + msg: a, + col: s, + line: c, + stack: u + } + } + }(e); + t.logCollect(n) + } + function Gt(t) { + for (var e = 0; e < Nt.length; e++) + if (n = Nt[e], + r = t, + n.msg === r.msg && n.stack === r.stack && n.file === r.file && n.line === r.line && n.col === r.col) + return e; + var n, r; + return -1 + } + function Zt(t) { + return t.message || null != t.lineno + } + function Et(t, e, n) { + var r, o, i, a; + return (a = e) && (a instanceof Error || "object" == typeof a && "string" == typeof a.message) ? (r = e.name || "ErrorLikeObject", + o = e.message || "", + i = e.stack || void 0) : !function(t, e) { + return null == t && "Script error." === (null == e ? void 0 : e.message) + }(e, n) ? (r = null == e ? "" + e : typeof e, + o = "* " + t + " with value: " + function(t) { + var e; + try { + e = t.toString() + } catch (t) {} + return "string" != typeof e || "" === e ? e = null === t ? "" : void 0 === t ? "" : "" === e ? "" : "" : e.length > 2e3 && (e = e.substring(0, 2e3) + "<<< \u2026\u2026"), + e + }(e) + "\n -- by WebLogger Radar Plugin") : (r = "CrossOriginError", + o = "* cross origin " + t + " with message: " + ((null == n ? void 0 : n.message) || "") + "\n -- by WebLogger Radar Plugin"), + { + error_type: f.SCRIPT, + error_cons_type: r, + msg: o, + stack: i + } + } + var Ct = function(t) { + function r() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "error", + e.onError = function(t) { + if (Zt(t)) { + var r = n(n({}, Et("global error", t.error, t)), { + file: t.filename, + line: t.lineno, + col: t.colno + }); + _t(e.radar, r) + } + } + , + e.onPromiseError = function(t) { + var n = Et("promise error", t.reason); + _t(e.radar, n) + } + , + e + } + return e(r, t), + r.prototype.when = function(t) { + if (t.custom) { + var e = (t.entry || {}).key; + if (["play_block", "play_error"].indexOf(e) > -1) + return !0 + } + return !1 + } + , + r.prototype.onPerfReport = function(t) { + if (t.custom) { + var e = t.entry || {} + , n = e.key + , r = e.value; + Pt(this.radar, { + error_type: f.VIDEO, + error_cons_type: n, + msg: r + }) + } + } + , + r.prototype.created = function() { + u(window, "error", this.onError, !0), + u(window, "unhandledrejection", this.onPromiseError) + } + , + r.prototype.destroy = function() { + l(window, "error", this.onError, !0), + l(window, "unhandledrejection", this.onPromiseError) + } + , + r + }(ct) + , It = []; + function Kt(t, e) { + Wt(e) >= 0 || (It.push(e), + setTimeout((function() { + It.splice(Wt(e), 1) + } + ), 2e3), + Xt(t, e)) + } + function Xt(t, e) { + var n = function(t) { + var e = rt.ERROR + , n = t.error_cons_type + , o = t.file + , i = t.error_type + , a = t.msg + , s = t.col + , c = t.line + , u = t.stack + , l = r(t, ["error_cons_type", "file", "error_type", "msg", "col", "line", "stack"]); + return { + key: e, + value: l, + dimension: { + error_cons_type: n, + file: o, + error_type: i, + msg: a, + col: s, + line: c, + stack: u + } + } + }(e); + t.logCollectNext(n) + } + function Wt(t) { + for (var e = 0; e < It.length; e++) + if (n = It[e], + r = t, + n.msg === r.msg && n.stack === r.stack && n.file === r.file && n.line === r.line && n.col === r.col) + return e; + var n, r; + return -1 + } + function Mt(t) { + return t.message || null != t.lineno + } + function Ot(t, e, n) { + var r, o, i, a; + return (a = e) && (a instanceof Error || "object" == typeof a && "string" == typeof a.message) ? (r = e.name || "ErrorLikeObject", + o = e.message || "", + i = e.stack || void 0) : !function(t, e) { + return null == t && "Script error." === (null == e ? void 0 : e.message) + }(e, n) ? null === e && (null == n ? void 0 : n.message) && "Uncaught null" !== n.message ? (r = "Error", + o = t + " - message: " + n.message) : (r = null == e ? "" + e : typeof e, + o = t + " - value: " + function(t) { + var e; + try { + e = t.toString() + } catch (t) {} + return "string" != typeof e || "" === e ? e = null === t ? "" : void 0 === t ? "" : "" === e ? "" : "" : e.length > 2e3 && (e = e.substring(0, 2e3) + "<<< \u2026\u2026"), + e + }(e)) : (r = "CrossOriginError", + o = t + " - message: " + ((null == n ? void 0 : n.message) || "")), + { + error_type: ot.SCRIPT, + error_cons_type: r, + msg: o, + stack: i + } + } + var Ut = function(t) { + function r() { + var e = null !== t && t.apply(this, arguments) || this; + return e.key = "error", + e.onError = function(t) { + if (Mt(t)) { + var r = n(n({}, Ot("Global Uncaught Exception", t.error, t)), { + file: t.filename, + line: t.lineno, + col: t.colno + }); + Kt(e.radar, r) + } + } + , + e.onPromiseError = function(t) { + var n = Ot("Unhandled Promise Rejection", t.reason); + Kt(e.radar, n) + } + , + e + } + return e(r, t), + r.prototype.when = function(t) { + if (t.custom) { + var e = (t.entry || {}).key; + if (["play_block", "play_error"].indexOf(e) > -1) + return !0 + } + return !1 + } + , + r.prototype.onPerfReport = function(t) { + if (t.custom) { + var e = t.entry || {} + , n = e.key + , r = e.value; + Xt(this.radar, { + error_type: ot.VIDEO, + error_cons_type: n, + msg: r + }) + } + } + , + r.prototype.created = function() { + u(window, "error", this.onError, !0), + u(window, "unhandledrejection", this.onPromiseError) + } + , + r.prototype.destroy = function() { + l(window, "error", this.onError, !0), + l(window, "unhandledrejection", this.onPromiseError) + } + , + r + }(ct) + , Rt = ["play_block", "play_error"] + , Ht = ["c_dimension1", "c_dimension2", "c_dimension3"] + , Dt = ["main_data_receive_end"]; + return function(t) { + function n(e, n) { + var r = t.call(this, e, n) || this; + return r.radarIgnoreList = ["https://web-trace.ksapisrv.com/ktrace/collect"], + r.radarFmp = 0, + r.customReported = [], + r.customKeyList = [], + r.timelineLastTime = null, + r.action = { + start: function(t) { + et(t), + r.event({ + name: t.name, + extra_info: t.extra_info || "", + event_type: "radar_action_start" + }) + }, + end: function(t) { + et(t), + r.event({ + name: t.name, + extra_info: t.extra_info || "", + result_type: t.result_type || "", + event_type: "radar_action_end" + }) + } + }, + r.validOption() ? (r.options && r.options.unuseResourcePlugin || (r.use(yt, r), + r.use(vt, r)), + r.options && r.options.unuseAPIPlugin || r.use(xt, r), + r.options && r.options.unuseErrorPlugin || (r.use(Ct, r), + r.use(Ut, r)), + r.use(ut, r), + r.use(gt, r), + r) : r + } + return e(n, t), + n.samplingControl = function(t) { + if (!t) + return !1; + var e = Math.random(); + return "number" == typeof t ? e < t : e < t.sampling + } + , + n.prototype.collect = function(t, e) { + if (0 !== t.indexOf("c_") && Dt.indexOf(t) < 0) + c("[error 305]", "[Radar] \u4f20\u5165\u7684\u81ea\u5b9a\u4e49\u6307\u6807 " + t + " \u5fc5\u987b\u4e3a c_ \u5f00\u5934"); + else if (Dt.indexOf(t) > -1) + this.handleCollectKey(t); + else { + s("[radar]:Radar+\u4e4b\u540e\u5c06\u4e0d\u518d\u652f\u6301collect\u65b9\u6cd5\uff0c\u8bf7\u7528event\u65b9\u6cd5\u66ff\u4ee3\u3002"); + var n = { + key: h.CUSTOM, + value: { + metric_value: e + }, + dimension: { + metric_name: t + } + }; + this.logCollect(n), + this.logCollectNext({ + key: h.EVENT, + value: { + duration: e + }, + dimension: { + name: t + } + }) + } + } + , + n.prototype.handleCollectKey = function(t) { + switch (t) { + case "main_data_receive_end": + var e = Date.now(); + try { + performance.timing && (performance.timing[t] = e) + } catch (t) {} + z(t, e) + } + } + , + n.prototype.reportTimePoint = function(t, e) { + if (this.customReported.indexOf(t) > -1) + return null; + -1 === Rt.indexOf(t) && this.customReported.push(t); + var n = e; + if ("string" != typeof e) { + var r = function(t) { + var e = "undefined" != typeof window ? window.performance : null; + if (!e) + return { + value: null + }; + if (null != t) + return { + value: t - e.timing.navigationStart, + detail: { + start: "navigationStart", + startPoint: e.timing.navigationStart, + end: "customTime", + endPoint: t + } + }; + if ("function" == typeof e.now) + return { + value: e.now(), + detail: { + start: "navigationStart", + startPoint: e.timing.navigationStart, + end: "perfNowAPI", + endPoint: e.now() + } + }; + var n = Date.now(); + return { + value: n - e.timing.navigationStart, + detail: { + start: "navigationStart", + startPoint: e.timing.navigationStart, + end: "dateNow", + endPoint: n + } + } + }(e); + if (null == r.value) + return; + n = this.throttle(r.value, r.detail, "fmp", r.detail) + } + return null != n ? (this.reportPerformance({ + custom: !0, + entry: { + key: t, + value: n + }, + renderTime: e + }), + n) : void 0 + } + , + n.prototype.fmp = function(t) { + if (t && "number" != typeof t) + c("[radar]: fmp\u65b9\u6cd5\u5165\u53c2\u8bf7\u4f20\u65f6\u95f4\u6233\uff0c\u6216\u9009\u62e9\u4e0d\u4f20\uff01"); + else { + this.radarFmp = t || Date.now(); + var e = this.reportTimePoint("fmp", this.radarFmp); + if (e) { + this.hasFmp = !0; + try { + performance.timing && (performance.timing.fmp = e, + performance.timing.radarFmp = this.radarFmp) + } catch (t) {} + z("fmp", e); + var n = { + key: h.CUSTOM, + value: { + fmp: e, + fmp_time: this.radarFmp, + merge: !0 + } + }; + this.logCollect(n), + this.logCollectNext({ + key: h.EVENT, + value: { + duration: e + }, + dimension: { + name: "fmp" + } + }) + } + } + } + , + n.prototype.event = function(t, e) { + if (t && t.name) + if ("string" == typeof t.name) { + t.name.length > 127 && (c("[radar]:\u4e8b\u4ef6\u540d\u79f0\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7127\u5b57\u7b26\uff0c\u8d85\u8fc7\u4f1a\u622a\u53d6\u540e\u4e0a\u62a5\uff0c\u8bf7\u9650\u5236"), + t.name = t.name.slice(0, 127)); + var n = A(); + t.extra_info && t.extra_info instanceof Object && (t.extra_info = JSON.stringify(t.extra_info)), + void 0 === t.yoda_version && (t.yoda_version = n.Yoda || ""), + void 0 === t.webview_type && (t.webview_type = J()); + var r = { + key: h.EVENT, + value: e, + dimension: t + }; + this.logCollect(r), + this.logCollectNext(r) + } else + c("[radar]:name\u5b57\u6bb5\u9700\u8981\u4e3aString\u7c7b\u578b"); + else + c("[radar]:\u4e8b\u4ef6\u540d\u79f0\u4e3a\u5fc5\u586b\u5b57\u6bb5\uff0c\u7528\u4e8e\u76d1\u63a7\u5c55\u793a\u3001\u62a5\u8b66\u914d\u7f6e\uff0c\u8bf7\u586b\u5199") + } + , + n.prototype.customStage = function(t, e) { + if (!(this.customKeyList.length > 2)) { + if (e = e || { + sendTimeline: !0 + }, + this.customKeyList.indexOf(t) > -1) + return null; + this.customKeyList.push(t); + var n = Date.now(); + "production" !== this.weblog.logConfig.env && (this.timelineLastTime ? this.timelineLastTime : this.timelineLastTime = n), + this.customPerfList[t] = { + options: e, + time: n + }, + this.reportPerformance({ + custom: !0, + entry: { + key: "customPerf", + value: t + }, + renderTime: n + }) + } + } + , + n.prototype.headlessTestReport = function() { + -1 === window.navigator.userAgent.indexOf("headless") || this.asyncReportTiming() + } + , + n.prototype.playClicked = function(t) { + this.reportTimePoint("play_clicked", t) + } + , + n.prototype.playIDR = function(t) { + this.reportTimePoint("play_idr", t) + } + , + n.prototype.playBlock = function(t) { + this.reportTimePoint("play_block", t) + } + , + n.prototype.playError = function(t) { + this.reportTimePoint("play_error", t) + } + , + n.prototype.setDimensions = function(t) { + var e = this + , n = Object.keys(t); + n.some((function(t) { + return -1 === Ht.indexOf(t) + } + )) && c("[error 306]", "[Radar] \u4f20\u5165\u7684\u81ea\u5b9a\u4e49\u7ef4\u5ea6\u53ea\u80fd\u4e3a " + Ht.join("\u3001") + "\uff0c\u76ee\u524d\u4f20\u5165\u7684\u662f\uff1a" + n.join("\u3001")), + n.forEach((function(n) { + var r = n; + null == t[r] ? delete e.customDimension[r] : e.customDimension[r] = t[r] + } + )) + } + , + n.prototype.validOption = function() { + var t = this; + if (!this.options) + return !1; + var e = this.options + , n = e.sampling; + return "string" != typeof e.projectId ? (c("[error 303]", "[Radar] \u5fc5\u987b\u914d\u7f6e projectId \u5c5e\u6027\uff0c\u7c7b\u578b\u4e3a string!"), + !1) : n > 1 || n < 0 ? (c("[error 304]", "[Radar] \u91c7\u6837\u7387 sampling \u5fc5\u987b\u4e3a 0~1 \u4e4b\u95f4\u7684\u6570\u5b57"), + !1) : (["apiSampling", "errorSampling", "resourceSampling", "customSampling", "eventSampling"].forEach((function(e) { + var n = t.options[e]; + "number" == typeof n && 0 === n && c("[error 304]", "[Radar] \u91c7\u6837\u7387 " + e + " \u4e0d\u80fd\u88ab\u8bbe\u7f6e\u4e3a 0\uff0c\u5c06\u6539\u7528\u9ed8\u8ba4\u503c") + } + )), + !0) + } + , + n.prototype.captureException = function(t) { + _t(this, Et("capture exception", t)), + Kt(this, Ot("Captured Exception", t)) + } + , + n.__test__ = { + MORE_REPORTED: Rt, + CUSTOM_DIM_KEY: Ht, + CUSTOM_COLLECT_KEY: Dt + }, + n.key = "radar", + n + }(st) + } + )) + }, + "088e":function(t, n, e) { + "use strict"; + (function(t) { + e("a4d3"), + e("e01a"), + e("d3b7"), + e("d28b"), + e("e260"), + e("3ca3"), + e("ddb0"), + e("b0c0"), + e("25f0"), + e("ac1f"), + e("1276"), + e("a15b"), + e("4c53"), + e("a9e3"), + e("4d63"), + e("ace4"), + e("5cc6"), + e("9a8c"), + e("a975"), + e("735e"), + e("c1ac"), + e("d139"), + e("3a7b"), + e("d5d6"), + e("82f8"), + e("e91f"), + e("60bd"), + e("5f96"), + e("3280"), + e("3fcc"), + e("ca91"), + e("25a1"), + e("cd26"), + e("3c5d"), + e("2954"), + e("649e"), + e("219c"), + e("170b"), + e("b39a"), + e("72f7"), + e("baa5"), + e("fb6a"), + e("944a"), + e("0c47"), + e("23dc"); + function n(t) { + return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } + : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + } + , + n(t) + } + !function(r, o) { + r.Jose = o(); + }(window, (function() { + return r = {}, + t.m = e = [function(t, n) { + (function() { + var t = function(t) { + return t.constructor.prototype + } + , e = Object.create + , r = function(t, n) { + return Object.prototype.hasOwnProperty.call(t, n) + } + , o = Array.isArray + , i = function(t, n, e) { + return Object.defineProperty(t, n, e) + }; + n.prototypeOf = t, + n.create = e, + n.hasProp = r, + n.isArray = o, + n.defProp = i + } + ).call(this) + } + , function(t, n) { + (function() { + function t(t) { + this.elements = t, + this.index = 0 + } + t.prototype.next = function() { + if (this.index >= this.elements.length) + throw new Error("array over"); + return this.elements[this.index++] + } + , + n.ArrayIterator = t + } + ).call(this) + } + , function(t, e, r) { + function o(t) { + return (o = "function" == typeof Symbol && "symbol" == n(Symbol.iterator) ? function(t) { + return n(t) + } + : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : n(t) + } + )(t) + } + (function() { + var t = {}.hasOwnProperty + , n = r(0).isArray + , i = (u.prototype.run = function() { + for (var t = this.callStack[this.depth], n = t.error; 0 <= this.depth && t && !this.paused; ) + if ((t = n ? this.unwind(n) : t).run(), + (n = t.error)instanceof Error && this.injectStackTrace(n), + t.done()) { + if (t.guards.length) { + var e = t.guards.pop(); + if (e.finalizer) { + t.ip = e.finalizer, + t.exitIp = e.end, + t.paused = !1; + continue + } + } + !t.construct || "object" !== (e = o(this.rv)) && "function" !== e && (this.rv = t.scope.get(0)), + (t = this.popFrame()) && !n && (t.evalStack.push(this.rv), + this.rv = void 0) + } else + n = (t = this.callStack[this.depth]).error; + if (this.timedOut() && (n = new Error(this), + this.injectStackTrace(n)), + n) + throw n + } + , + u.prototype.unwind = function(t) { + for (var n = this.callStack[this.depth]; n; ) { + n.error = t; + var e = n.ip - 1 + , r = n.guards.length; + if (r && (r = n.guards[r - 1], + r.start <= e && e <= r.end)) { + if (null !== r.handler) + if (e <= r.handler) + n.evalStack.push(t), + n.error = null, + n.ip = r.handler; + else { + if (!(r.finalizer && n.ip <= r.finalizer)) { + n = this.popFrame(); + continue + } + n.ip = r.finalizer + } + else + n.ip = r.finalizer; + return n.paused = !1, + n + } + n = this.popFrame() + } + throw t + } + , + u.prototype.injectStackTrace = function(t) { + var e, r, o, i, u, p, s, c = [], a = 0; + for (this.depth > this.maxTraceDepth && (a = this.depth - this.maxTraceDepth), + r = o = u = this.depth, + p = a; u <= p ? o <= p : p <= o; r = u <= p ? ++o : --o) + "" === (i = (e = this.callStack[r]).script.name) && e.fname && (i = e.fname), + c.push({ + at: { + name: i, + filename: e.script.filename + }, + line: e.line, + column: e.column + }); + if (t.trace) { + for (s = t.trace; n(s[s.length - 1]); ) + s = s[s.length - 1]; + s.push(c) + } else + t.trace = c; + return t.stack = t.toString() + } + , + u.prototype.pushFrame = function(t, n, e, r, o, i, u) { + if (null == i && (i = ""), + null == u && (u = !1), + this.checkCallStack()) + return e = new f(e,t.localNames,t.localLength), + e.set(0, n), + u = new p(this,t,e,this.realm,i,u), + o && u.evalStack.push(o), + r && u.evalStack.push(r), + this.callStack[++this.depth] = u + } + , + u.prototype.checkCallStack = function() { + return this.depth !== this.maxDepth || (this.callStack[this.depth].error = new Error("maximum call stack size exceeded"), + this.pause(), + !1) + } + , + u.prototype.popFrame = function() { + var t = this.callStack[--this.depth]; + return t && (t.paused = !1), + t + } + , + u.prototype.pause = function() { + return this.paused = this.callStack[this.depth].paused = !0 + } + , + u.prototype.resume = function(t) { + if (this.timeout = null != t ? t : -1, + this.paused = !1, + this.callStack[this.depth].paused = !1, + this.run(), + !this.paused) + return this.rexp + } + , + u.prototype.timedOut = function() { + return 0 === this.timeout + } + , + u.prototype.send = function(t) { + return this.callStack[this.depth].evalStack.push(t) + } + , + u.prototype.done = function() { + return -1 === this.depth + } + , + u); + function u(t, n) { + this.realm = t, + this.timeout = null != n ? n : -1, + this.maxDepth = 1e3, + this.maxTraceDepth = 50, + this.callStack = [], + this.evalStack = null, + this.depth = -1, + this.yielded = this.rv = void 0, + this.paused = !1, + this.r1 = this.r2 = this.r3 = null, + this.rexp = null + } + var p = (s.prototype.run = function() { + for (var t = this.script.instructions; this.ip !== this.exitIp && !this.paused && 0 !== this.fiber.timeout; ) + this.fiber.timeout--, + t[this.ip++].exec(this, this.evalStack, this.scope, this.realm); + 0 === this.fiber.timeout && (this.paused = this.fiber.paused = !0); + var n = this.evalStack.len(); + if (!this.paused && !this.error && 0 !== n) + throw new Error("Evaluation stack has " + n + " items after execution") + } + , + s.prototype.done = function() { + return this.ip === this.exitIp + } + , + s.prototype.setLine = function(t) { + this.line = t + } + , + s.prototype.setColumn = function(t) { + this.column = t + } + , + s); + function s(t, n, e, r, o, i) { + this.fiber = t, + this.script = n, + this.scope = e, + this.realm = r, + this.fname = o, + this.construct = null != i && i, + this.evalStack = new c(this.script.stackSize,this.fiber), + this.ip = 0, + this.exitIp = this.script.instructions.length, + this.paused = !1, + this.finalizer = null, + this.guards = [], + this.rv = void 0, + this.line = this.column = -1 + } + var c = (a.prototype.push = function(t) { + if (this.idx === this.array.length) + throw new Error("maximum evaluation stack size exceeded"); + return this.array[this.idx++] = t + } + , + a.prototype.pop = function() { + return this.array[--this.idx] + } + , + a.prototype.top = function() { + return this.array[this.idx - 1] + } + , + a.prototype.len = function() { + return this.idx + } + , + a.prototype.clear = function() { + return this.idx = 0 + } + , + a); + function a(t, n) { + this.fiber = n, + this.array = new Array(t), + this.idx = 0 + } + var f = (h.prototype.get = function(t) { + return this.data[t] + } + , + h.prototype.set = function(t, n) { + return this.data[t] = n + } + , + h.prototype.name = function(n) { + var e, r = this.names; + for (e in r) + if (t.call(r, e) && r[e] === n) + return parseInt(e); + return -1 + } + , + h); + function h(t, n, e) { + this.parent = t, + this.names = n, + this.data = new Array(e) + } + var l = (d.prototype.get = function(t) { + return this.object[t] + } + , + d.prototype.set = function(t, n) { + return this.object[t] = n + } + , + d.prototype.has = function(t) { + return t in this.object + } + , + d); + function d(t, n) { + this.parent = t, + this.object = n + } + e.Fiber = i, + e.Scope = f, + e.WithScope = l + } + ).call(this) + } + , function(t, n, e) { + e = new (e(4)), + e.eval('["