diff --git a/test_pc_小红书破解/client/bg.png b/test_pc_小红书破解/client/bg.png new file mode 100644 index 0000000..92ddf6f Binary files /dev/null and b/test_pc_小红书破解/client/bg.png differ diff --git a/test_pc_小红书破解/client/fg.png b/test_pc_小红书破解/client/fg.png new file mode 100644 index 0000000..412781d Binary files /dev/null and b/test_pc_小红书破解/client/fg.png differ diff --git a/test_pc_小红书破解/client/verification_code.py b/test_pc_小红书破解/client/verification_code.py new file mode 100644 index 0000000..a17374a --- /dev/null +++ b/test_pc_小红书破解/client/verification_code.py @@ -0,0 +1,1314 @@ +import base64 +import re +import cv2 +import json +import time +import requests +import numpy as np +from pyDes import ECB +from pyDes import des +from urllib import parse +import gc +import traceback +r = requests.session() +r.keep_alive = False + +jscode = ''' +var f = function(value) { + var standard = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; + var str = '' + , result = ''; + for (var a = 0, b, c, d = 0; + c = value['charAt'](d++); + ~c && (b = a % 4 ? b * 64 + c : c,a++ % 4) ? str += String['fromCharCode'](255 & b >> (-2 * a & 6)) : 0) { + c = standard['indexOf'](c); + } + for (var i = 0, length = str['length']; i < length; i++) { + result += '%' + ('00' + str['charCodeAt'](i)['toString'](16))['slice'](-2); + } + return decodeURIComponent(result) + }; +''' + + +def pyObDecode(value): + standard = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=' + string = '' + result = '' + a = 0 + b = 0 + d = 0 + c = value[d] + while True: + try: + c = value[d] + except: + break + d += 1 + c = standard.index(c) + if a % 4: + b = b * 64 + c + else: + b = c + end = a % 4 + a += 1 + if -c - 1 and end: + string += chr(255 & b >> (-2 * a & 6)) + i = 0 + length = len(string) + while i < length: + result += '%' + ('00' + hex(ord(string[i])))[-2:] + i += 1 + return parse.unquote(result) + + +def parseInt(value): + s = "" + for v in value: + if v.isdigit(): + s += v + else: + break + if s == "": + s = "None" + return int(s) + + +def re_get(url, headers, params=None): + while True: + try: + response = r.get(url, headers=headers, params=params, timeout=10) + return response + except: + print(traceback.format_exc()) + time.sleep(3) + continue + + +def requestConfig(): + configUrl = "https://captcha.fengkongcloud.com/ca/v1/conf" + headers = { + 'accept': '*/*', + 'accept-language': 'zh-CN,zh;q=0.9', + 'referer': 'https://www.xiaohongshu.com/', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,' + ' like Gecko) Chrome/94.0.4606.81 Safari/537.36' + } + params = {'lang': 'zh-cn', + 'model': 'slide', + 'sdkver': '1.1.3', + 'callback': 'sm_' + str(round(time.time() * 1000) + 1199), + 'rversion': '1.0.1', + 'appId': 'default', + 'organization': 'eR46sBuqF0fdw7KWFLYa', + "channel": "web", + } + + configResponse = re_get(configUrl, headers, params) + r.close() + return configResponse.text + + +def parseConfigText(configText): + start = re.search('"js":"', configText).span()[1] + end = re.search('\.js', configText).span()[1] + jsUrl = configText[start:end] + return "PASS" in configText, jsUrl + + +def getProtocol(jsUrl): + # jsUrl = "/pr/auto-build/v1.0.3-126/captcha-sdk.min.js" + result = re.search("\d\d\d", jsUrl) + protocol = result.group() + rversion = re.search("\d\.\d\.\d", jsUrl).group() + return protocol, rversion + + +def requestCapatureJs(jsPath): + jsUrl = "https://castatic.fengkongcloud.com" + jsPath + headers = { + + 'Connection': 'keep-alive', + 'Sec-Fetch-Mode': 'no-cors', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' + ' (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', + 'Accept': '*/*', + # 'X-Requested-With': 'com.baidu.searchbox', + 'Sec-Fetch-Site': 'cross-site', + 'Referer': 'https://www.xiaohongshu.com/', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + + } + # jsResponse = r.get(jsUrl, headers=headers, timeout=10) + jsResponse = re_get(jsUrl, headers) + r.close() + + return jsResponse.text + + +def getInitArray(obDecodeText): + # var _0x2c88=['BevNqMrLzgfVtgvNyw1P'....'y1joD0y'];var _0x5e6ac7 + # 获取初始的解密大数组 _0x2c88 + obDecodeArrayStart = re.search("var _\w{6,9}=\['", obDecodeText).span()[1] - 2 + obDecodeArrayEnd = re.search("'\];", obDecodeText).span()[1] - 1 + + obDecodeArray = eval(obDecodeText[obDecodeArrayStart:obDecodeArrayEnd]) + return obDecodeArray + + +def getCaculatePattern(arrayGetInitLoc, obDecodeArray, argsLoc, caculateText): + decodeParseArgs = [] + for loc in argsLoc: + # strvalue = vvv.call( "f", jsArray[loc - start] ) + parseArg = pyObDecode(obDecodeArray[loc - arrayGetInitLoc]) + + decodeParseArgs.append(parseArg) + + # 将_0x16f195(0x572) 替换为%r,最后使用eval执行语句 + msgList = re.findall("_\w{6,9}\(\w{3,9}\)", caculateText, ) + msg = caculateText + for i in range(len(msgList)): + msg = msg.replace(msgList[i], "'" + decodeParseArgs[i] + "'") + + return msg + + +def moveArray(obDecodeArray, obDecodeText): + # 对初始的解密大数组_0x2c88,进行移动 + + # (function(_0x116e31,_0x3c9760){..._0x116e31['push'](_0x116e31['shift']())...}(_0x2c88,0x92900) + # 获取对大数组移动的次数 0x92900 + arrayMoveCount = re.findall(",(.*?)\)", obDecodeText, re.S)[-1] + arrayMoveCount = int(arrayMoveCount, 16) + + # ){_0x160e49=_0x160e49-0x152;var _0x45155f=_0x2c88[_0x160e49]; + + # 获取从数组中获取的起始位置 0x152 + + arrayGetInitLoc = re.search("\)\{\w{6,9}=_\w{6,9}-\w{3,9};var", obDecodeText).group() + arrayGetInitLoc = int(arrayGetInitLoc[arrayGetInitLoc.index("-") + 1:arrayGetInitLoc.index(";")], 16) + + # 获取数组终止移动的条件 var _0x3314bc=-parseInt(_0x16f195(0x572))*...-parseInt(_0x16f195(0x5c0)); + caculateText = re.search("=-parse.*\)\);if\(_\w{6,9}===", obDecodeText).group() + caculateText = caculateText[1:-16] + + # 获取parseInt的参数 _0x16f195(0x572) + argsLoc = [] + encodeParseArgs = re.findall("_0x\w{4,9}\(\w{3,9}\)\)", caculateText) + for arg in encodeParseArgs: + arg = arg[arg.index("(") + 1:arg.index(")")] + argLoc = int(arg, 16) + argsLoc.append(argLoc) + i = 0 + # 移动数组 + while i < 1000000: + i += 1 + try: + + # 获取最终表达式 + msg = getCaculatePattern(arrayGetInitLoc, obDecodeArray, argsLoc, caculateText) + + stopMoveCondition = eval(msg) + + # 满足条件,终止交换 + if arrayMoveCount == stopMoveCondition: + + break + else: + obDecodeArray.append(obDecodeArray.pop(0)) + except Exception as e: + obDecodeArray.append(obDecodeArray.pop(0)) + + return obDecodeArray + + +def initObDecode(jsText): + # 获取混淆解密部分的文本,即轨迹加密前的js文本 + obDecodeText = re.search(";\}\}\}\(_\w{6,9},\w{6,9}\),function\(\w{6,9},", jsText).span()[1] + obDecodeText = jsText[:obDecodeText - 20] + + # ;function _0x19bb(_0x2ee4e1,_0x231fa0) + # 获取混淆解密函数名字_0x19bb + obDecode = re.search(";function _\w{6,9}\(_\w{6,9},_\w{6,9}\)\{", obDecodeText).group() + obDecode = obDecode[obDecode.index("ion ") + 4:obDecode.index("(")] + + # ;var _0x5e6ac7=_0x19bb;function + # 获取混淆机密函数名字赋值的函数_0x5e6ac7 + obDecodeCopy = re.search("var _\w{6,9}=" + obDecode, obDecodeText).group() + obDecodeCopy = obDecodeCopy[obDecodeCopy.index("var "):obDecodeCopy.index(obDecode)] + obDecodeCopy = obDecodeCopy[4:-1] + + # 获取初始的解密大数组 + obDecodeArray = getInitArray(obDecodeText) # 匹配开头的大数组 + + obDecodeArray = moveArray(obDecodeArray, obDecodeText) + + return obDecodeCopy, obDecodeArray + + +def static(str): + digitNum = 0 + letterNum = 0 + if len(str) == 8: + for s in str: + if s.isdigit(): + digitNum += 1 + if s.isalpha() and s.islower(): + letterNum += 1 + return letterNum, digitNum + + +def getStart(jsText): + value = re.search("\)\{\w{6,9}=_\w{6,9}-\w{3,9};var", jsText).group() + + return (value[value.index("-") + 1:value.index(";")]) + + +def getParams(jsText, f, jsArray): + # getStart( jsText ) + keys = re.findall("'[a-z][a-z]'", jsText) + + keys = keys[9:21] # 获取传输的key + params = {} + argumentText = jsText[jsText.index(keys[0]) - 50:] # argumentText + for i in range(len(keys) - 1): + startKey = keys[i] + endKey = keys[i + 1] + start = argumentText.index(startKey) # 匹配 _0x28c7f6(0x2fc) 加密key + end = argumentText.index(endKey) + 4 + text = argumentText[start:end] + values = text.split(",") + desKey = "" + for value in values: + + if f in value and "(" in value and ")" in value: + # v = vm.call(f,value[9:14]) + s = value.index("(") + + e = value.index(")") + + sss = int(getStart(jsText), 16) + + # v = vvv.call("f",jsArray[int(value[s+1:e], 16)-sss]) + v = pyObDecode(jsArray[int(value[s + 1:e], 16) - sss]) + + letterNum, digitNum = static(v) + if letterNum >= 1 and digitNum >= 1 and letterNum + digitNum == 8: + desKey = v + if digitNum == 8: + desKey = v + if len(value) == 10: + v = eval(value) + letterNum, digitNum = static(v) + if letterNum >= 1 and digitNum >= 1 and letterNum + digitNum == 8: + desKey = v + if digitNum == 8: + desKey = v + params[eval(startKey)[::-1]] = desKey[::-1] + + return params + + +# ---------------------------- + + +def requestRegister(): + params = { + 'callback': 'sm_' + str(round(time.time() * 100)), + "lang": "zh-cn", + "channel": "web", + "rversion": "1.0.1", + "data": {}, + "model": "slide", + "appId": "default", + "organization": "eR46sBuqF0fdw7KWFLYa", + "sdkver": "1.1.3", + } + headers = { + 'Connection': 'keep-alive', + 'Sec-Fetch-Mode': 'no-cors', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', + 'Accept': '*/*', + # 'X-Requested-With': 'com.baidu.searchbox', + 'Sec-Fetch-Site': 'cross-site', + 'Referer': 'https://www.xiaohongshu.com/', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + + } + registerUrl = 'https://captcha.fengkongcloud.com/ca/v1/register' + RegisterResponse = re_get(registerUrl, headers, params) + + return RegisterResponse.text + + +traces = {51: + [[0, 0, 1] + , [3, -3, 112] + , [40, -11, 203] + , [59, -15, 301] + , [65, -15, 401] + , [65, -15, 501] + , [65, -15, 602] + , [61, -15, 704] + , [54, -14, 803] + , [51, -12, 901] + , [51, -12, 1002] + , [51, -12, 1102] + , [51, -12, 1201] + ], + + 53: [ + [0, 0, 0] + , [11, -2, 100] + , [27, -5, 201] + , [38, -7, 301] + , [45, -7, 413] + , [45, -7, 508] + , [47, -7, 602] + , [50, -8, 705] + , [52, -8, 811] + , [53, -9, 912] + ], + + 61: [ + [0, 0, 0] + , [4, 0, 100] + , [32, -3, 200] + , [43, -6, 300] + , [48, -7, 400] + , [54, -8, 501] + , [60, -9, 601] + , [61, -10, 701] + , [61, -10, 806] + ], + + 65: [ + [0, -4, 0] + , [4, -1, 102] + , [37, -11, 200] + , [62, -19, 301] + , [68, -21, 401] + , [70, -21, 510] + , [70, -21, 603] + , [70, -21, 711] + , [68, -21, 801] + , [63, -20, 900] + , [61, -19, 1001] + , [61, -19, 1114] + , [61, -19, 1208] + , [61, -19, 1303] + , [61, -19, 1413] + , [62, -19, 1505] + , [65, -20, 1601] + , [65, -20, 1708] + , [65, -20, 1801] + , [65, -20, 1910] + , [65, -20, 2003] + , [65, -20, 2112] + ], + 68: [ + [0, -1, 0] + , [5, 0, 101] + , [25, -6, 200] + , [41, -9, 301] + , [60, -10, 404] + , [65, -10, 508] + , [65, -10, 601] + , [65, -10, 711] + , [67, -10, 801] + , [68, -10, 901] + , [68, -10, 1008] + , [68, -10, 1101] + ], + + 74: [ + [0, 2, 0] + , [6, -1, 100] + , [23, -4, 201] + , [40, -2, 301] + , [51, 0, 400] + , [62, 2, 502] + , [69, 3, 601] + , [73, 4, 701] + , [74, 4, 813] + , [74, 4, 906] + , [74, 4, 1015] + ], + + 80: [ + [0, 0, 0] + , [30, -7, 108] + , [46, -10, 201] + , [59, -11, 306] + , [70, -12, 403] + , [74, -12, 501] + , [78, -14, 607] + , [80, -14, 701] + , [80, -14, 802] + , [80, -14, 901] + ], + + 88: [ + [0, 0, 0] + , [2, -1, 100] + , [37, -1, 201] + , [58, 2, 301] + , [75, 2, 401] + , [79, 2, 501] + , [82, 2, 611] + , [82, 1, 705] + , [87, 1, 818] + , [88, 0, 903] + , [88, 0, 1003] + , [88, 0, 1118] + ], + + 90: [ + [0, 0, 0] + , [9, 1, 101] + , [36, -4, 201] + , [58, -9, 300] + , [73, -9, 400] + , [79, -6, 500] + , [83, -7, 601] + , [86, -7, 700] + , [89, -7, 800] + , [89, -7, 911] + , [90, -7, 1005] + , [90, -7, 1115] + + ], + + 92: [ + [0, -5, 0] + , [1, 0, 115] + , [30, -8, 202] + , [47, -13, 301] + , [63, -18, 402] + , [76, -21, 501] + , [83, -23, 602] + , [85, -23, 708] + , [87, -24, 800] + , [88, -25, 901] + , [90, -26, 1001] + , [92, -26, 1100] + , [92, -26, 1203] + , [92, -26, 1312] + ], + + 96: [ + [0, 3, 0] + , [4, 0, 102] + , [24, -7, 202] + , [46, -13, 304] + , [53, -14, 402] + , [66, -16, 501] + , [75, -16, 601] + , [83, -15, 702] + , [88, -13, 802] + , [91, -12, 901] + , [93, -11, 1001] + , [96, -10, 1101] + , [96, -10, 1209] + , [96, -10, 1302] + ], + + 99: [ + [0, 0, 0] + , [0, 0, 114] + , [13, -4, 203] + , [32, -8, 302] + , [78, -9, 401] + , [92, -12, 501] + , [101, -12, 601] + , [102, -12, 701] + , [102, -12, 802] + , [102, -12, 908] + , [101, -12, 1001] + , [99, -12, 1102] + , [99, -12, 1202] + , [99, -12, 1311] + + ], + + 103: [ + [0, 0, 1] + , [12, 1, 101] + , [37, -3, 202] + , [53, -5, 301] + , [63, -5, 401] + , [76, -8, 502] + , [85, -8, 602] + , [91, -7, 702] + , [96, -7, 802] + , [100, -7, 902] + , [102, -6, 1012] + , [102, -6, 1107] + , [103, -6, 1203] + , [103, -6, 1309] + , [103, -6, 1402] + ], + + 106: [ + [0, -2, 0] + , [8, 2, 103] + , [42, -6, 201] + , [71, -8, 302] + , [83, -8, 401] + , [90, -8, 501] + , [94, -8, 601] + , [98, -8, 701] + , [101, -9, 804] + , [105, -9, 901] + , [106, -9, 1002] + , [106, -9, 1116] + ], + + 115: [ + [0, 0, 1] + , [3, 1, 104] + , [20, -2, 204] + , [40, -5, 301] + , [55, -8, 402] + , [80, -8, 502] + , [94, -7, 602] + , [108, -6, 702] + , [112, -6, 802] + , [114, -5, 902] + , [114, -5, 1002] + , [115, -4, 1102] + , [115, -4, 1203] + , [115, -4, 1302] + , [115, -4, 1401] + , [115, -4, 1502] + , [115, -4, 1602] + , [115, -4, 1702] + ], + + 126: [ + [0, 0, 1] + , [8, -3, 101] + , [31, -10, 201] + , [53, -14, 301] + , [77, -14, 401] + , [98, -14, 502] + , [107, -16, 602] + , [117, -14, 702] + , [119, -14, 801] + , [122, -14, 902] + , [122, -14, 1003] + , [122, -14, 1113] + , [122, -14, 1207] + , [124, -14, 1301] + , [126, -14, 1401] + , [126, -14, 1501] + , [126, -14, 1610] + ], + + 127: [ + [0, 0, 0] + , [8, 0, 100] + , [38, -9, 201] + , [64, -12, 300] + , [87, -12, 401] + , [99, -13, 501] + , [110, -16, 601] + , [120, -19, 702] + , [124, -19, 802] + , [127, -19, 901] + , [127, -19, 1001] + , [127, -19, 1110] + , [127, -19, 1203] + ], + + 132: [ + [0, -6, 0] + , [1, 0, 101] + , [40, 0, 202] + , [62, -4, 300] + , [87, -8, 400] + , [110, -9, 500] + , [124, -7, 603] + , [126, -6, 704] + , [127, -6, 800] + , [131, -6, 900] + , [132, -6, 1002] + , [132, -6, 1111] + , [132, -6, 1205] + ], + + 140: [ + [0, 1, 0] + , [1, 0, 101] + , [29, -11, 201] + , [58, -11, 301] + , [90, -13, 401] + , [107, -13, 502] + , [115, -13, 601] + , [123, -14, 701] + , [128, -14, 801] + , [132, -14, 901] + , [135, -16, 1001] + , [137, -16, 1101] + , [139, -16, 1201] + , [140, -15, 1301] + , [140, -15, 1403] + + ], + 134: [ + [0, 0, 0] + , [11, -1, 101] + , [43, 1, 200] + , [69, 7, 300] + , [99, 13, 400] + , [116, 15, 501] + , [126, 18, 600] + , [129, 19, 700] + , [129, 19, 806] + , [129, 19, 915] + , [129, 19, 1009] + , [133, 19, 1102] + , [134, 19, 1204] + , [134, 19, 1306] + + ], + + 148: [ + [0, 0, 0] + , [15, -2, 101] + , [58, -14, 201] + , [83, -13, 301] + , [106, -4, 401] + , [118, -2, 501] + , [122, -2, 601] + , [134, -2, 701] + , [135, -2, 801] + , [139, -2, 901] + , [142, -3, 1001] + , [145, -3, 1101] + , [146, -4, 1205] + , [148, -5, 1301] + , [148, -5, 1408] + , [148, -5, 1504] + ], + 153: [ + [0, 1, 0] + , [36, -7, 101] + , [67, -12, 201] + , [102, -17, 302] + , [117, -17, 401] + , [130, -18, 502] + , [140, -20, 601] + , [143, -20, 701] + , [147, -21, 810] + , [149, -21, 904] + , [149, -21, 1013] + , [149, -21, 1106] + , [149, -21, 1215] + , [151, -21, 1308] + , [153, -22, 1401] + , [153, -22, 1513] + , [153, -22, 1607] + ], + + 154: [ + [0, 0, 0] + , [17, -6, 101] + , [58, -8, 201] + , [93, -14, 300] + , [125, -12, 401] + , [137, -12, 505] + , [145, -12, 601] + , [150, -12, 701] + , [152, -12, 800] + , [154, -12, 901] + , [154, -12, 1003] + , [154, -12, 1112] + , [154, -12, 1206] + + ], + + 163: [ + [0, 0, 0] + , [17, 0, 102] + , [58, -3, 201] + , [90, -3, 302] + , [105, -3, 401] + , [125, 1, 501] + , [141, 5, 602] + , [151, 7, 702] + , [154, 8, 801] + , [159, 8, 902] + , [162, 8, 1001] + , [163, 8, 1101] + ], + + 166: [ + [0, 0, 0] + , [7, 0, 102] + , [75, -12, 201] + , [111, -14, 301] + , [122, -18, 402] + , [131, -21, 501] + , [142, -21, 601] + , [148, -21, 701] + , [153, -21, 801] + , [158, -22, 902] + , [159, -22, 1001] + , [162, -23, 1107] + , [164, -24, 1201] + , [165, -24, 1301] + , [166, -24, 1404] + , [166, -24, 1514] + , [166, -24, 1606] + + ], + 174: [ + [0, 0, 0] + , [6, -2, 102] + , [20, -8, 202] + , [60, -18, 300] + , [79, -19, 401] + , [105, -19, 500] + , [133, -22, 601] + , [159, -22, 700] + , [170, -22, 801] + , [174, -22, 901] + , [174, -22, 1010] + , [174, -22, 1104] + , [174, -22, 1214] + , [174, -22, 1307] + + ], + + 178: [ + [0, 0, 0] + , [0, 0, 110] + , [17, 0, 203] + , [72, 6, 304] + , [110, 13, 401] + , [134, 7, 505] + , [153, 5, 611] + , [162, 5, 701] + , [166, 5, 800] + , [168, 5, 902] + , [170, 4, 1000] + , [172, 4, 1102] + , [174, 4, 1214] + , [175, 4, 1301] + , [177, 4, 1414] + , [178, 4, 1516] + , [178, 4, 1609] + ], + 186: [ + [0, 0, 0] + , [4, 1, 102] + , [27, -2, 201] + , [44, -5, 300] + , [101, -14, 401] + , [134, -14, 501] + , [156, -17, 602] + , [171, -20, 702] + , [174, -21, 801] + , [176, -22, 901] + , [179, -23, 1001] + , [181, -23, 1102] + , [182, -23, 1203] + , [185, -24, 1315] + , [186, -25, 1400] + , [186, -25, 1514] + + ], + 188: [ + [0, 0, 0] + , [7, 0, 100] + , [95, -1, 202] + , [129, -4, 301] + , [156, -12, 401] + , [173, -16, 502] + , [178, -18, 602] + , [180, -18, 701] + , [182, -18, 802] + , [185, -18, 902] + , [186, -18, 1001] + , [186, -18, 1115] + , [188, -18, 1200] + , [188, -18, 1301] + + ], + + 191: [ + [0, 0, 1] + , [0, 0, 101] + , [39, -9, 202] + , [95, -23, 301] + , [130, -27, 402] + , [153, -31, 501] + , [162, -33, 602] + , [171, -37, 701] + , [176, -37, 801] + , [179, -37, 901] + , [182, -37, 1001] + , [183, -38, 1101] + , [187, -39, 1202] + , [189, -40, 1310] + , [191, -40, 1402] + , [191, -41, 1509] + , [191, -41, 1604] + , [191, -41, 1703] + + ], + + 189: [ + [0, 0, 0] + , [22, -4, 100] + , [67, -19, 202] + , [110, -23, 301] + , [146, -17, 401] + , [153, -15, 501] + , [162, -14, 602] + , [172, -15, 701] + , [176, -15, 801] + , [179, -15, 901] + , [183, -15, 1000] + , [188, -15, 1100] + , [189, -15, 1201] + , [189, -15, 1306] + , [189, -15, 1415] + ], + + 200: [ + [0, 0, 0] + , [0, 1, 101] + , [100, 1, 202] + , [123, 1, 300] + , [153, -4, 401] + , [185, -8, 501] + , [193, -8, 610] + , [197, -8, 700] + , [200, -8, 800] + , [200, -8, 903] + , [200, -8, 1012] + , [200, -8, 1107] + ], + + 203: [ + [0, -2, 0] + , [9, 0, 101] + , [49, 2, 201] + , [102, 2, 303] + , [137, 4, 401] + , [175, 3, 501] + , [185, -1, 601] + , [190, -2, 702] + , [192, -3, 801] + , [194, -3, 907] + , [194, -3, 1003] + , [197, -3, 1101] + , [199, -3, 1200] + , [202, -2, 1300] + , [203, -2, 1406] + , [203, -2, 1515] + , [203, -2, 1609] + ], + 211: [ + [0, 0, 0] + , [3, 0, 101] + , [51, -9, 204] + , [98, -17, 301] + , [127, -17, 407] + , [157, -17, 504] + , [171, -17, 605] + , [185, -19, 701] + , [191, -20, 801] + , [198, -24, 902] + , [199, -24, 1013] + , [202, -25, 1101] + , [205, -26, 1201] + , [205, -26, 1309] + , [205, -26, 1404] + , [205, -26, 1512] + , [209, -26, 1605] + , [211, -26, 1702] + , [211, -26, 1810] + + ], + + 213: [ + [0, 0, 0] + , [17, 0, 100] + , [55, -2, 202] + , [79, -2, 301] + , [101, -1, 401] + , [145, -1, 501] + , [171, 4, 601] + , [183, 6, 702] + , [196, 8, 801] + , [204, 8, 901] + , [205, 8, 1015] + , [209, 9, 1101] + , [210, 9, 1201] + , [211, 9, 1311] + , [212, 10, 1401] + , [213, 10, 1514] + , [213, 10, 1608] + + ], + + 221: [ + [0, 0, 0] + , [2, 0, 101] + , [28, -3, 200] + , [89, -17, 301] + , [128, -28, 400] + , [146, -28, 500] + , [163, -29, 601] + , [192, -36, 700] + , [202, -37, 801] + , [205, -39, 904] + , [212, -41, 1001] + , [213, -41, 1109] + , [215, -42, 1210] + , [219, -43, 1301] + , [220, -43, 1410] + , [221, -44, 1507] + ], + + 222: [ + [0, 0, 0] + , [2, 0, 103] + , [10, -1, 201] + , [41, -5, 305] + , [123, -15, 400] + , [162, -19, 500] + , [184, -23, 600] + , [197, -27, 701] + , [203, -28, 801] + , [207, -29, 901] + , [211, -29, 1000] + , [216, -29, 1101] + , [219, -28, 1201] + , [221, -28, 1307] + , [222, -27, 1401] + , [222, -27, 1512] + , [222, -27, 1615] + + ], + + 226: [ + [0, 0, 0] + , [10, -4, 100] + , [51, -10, 201] + , [108, -14, 301] + , [130, -20, 401] + , [149, -27, 500] + , [166, -31, 601] + , [182, -33, 703] + , [193, -33, 801] + , [202, -31, 904] + , [207, -30, 1001] + , [212, -28, 1100] + , [214, -28, 1217] + , [216, -28, 1301] + , [218, -28, 1400] + , [220, -28, 1501] + , [222, -28, 1603] + , [224, -28, 1700] + , [226, -28, 1804] + , [226, -28, 1903] + , [226, -28, 2004] + + ], + } + +modelTraceX = [51, 53, 61, 65, 68, 74, 80, 88, 90, 92, 96, 99, 103, 106, + 115, 126, 127, 132, 140, 134, 148, 153, 154, 163, 166, + 174, 178, 186, 188, 191, 189, 200, 203, 211, 213, 221, + 222, 226] + + +def GetnearX(distX): + length = len(modelTraceX) + nearX = 90 + for i in range(length): + + if i <= length - 2 and modelTraceX[i] <= distX and distX < modelTraceX[i + 1]: + nearX = modelTraceX[i] + break + if i >= length - 1: + nearX = modelTraceX[-1] + break + + if distX <= modelTraceX[0]: + nearX = modelTraceX[0] + break + + return nearX + + +def CreatTrace(distX): + # 获取离其最近的distX的距离 + + distX = round(distX * 0.516) + + distX = round(distX) + + nearX = GetnearX(distX) + + # 获取标准轨迹 + trace = traces[nearX] + # print('标准的长度{},测出的长度{}'.format(nearX, distX)) + + # 计算比例 + rate = distX / nearX + + # 根据比例求取制造轨迹 + # trace = [[0,0,0],[0,0,100],[8.421051025390625,-2.10528564453125,200],[21.052627563476562,-7.368438720703125,301],[42.105262756347656,-10.526336669921875,401],[62.105262756347656,-10.526336669921875,501],[93.68421936035156,-8.42108154296875,601],[106.3157958984375,-8.42108154296875,701],[135.7894744873047,-9.47369384765625,801],[151.57894897460938,-9.47369384765625,901],[160,-9.47369384765625,1001],[169.47369384765625,-9.47369384765625,1101],[184.2105255126953,-13.684234619140625,1200],[190.5263214111328,-15.78948974609375,1302],[196.8421173095703,-16.842132568359375,1402],[200.00001525878906,-18.9473876953125,1500],[202.1052703857422,-18.9473876953125,1609],[202.1052703857422,-18.9473876953125,1702],[202.1052703857422,-18.9473876953125,1810],[202.1052703857422,-18.9473876953125,1904],[202.1052703857422,-18.9473876953125,2012]] + + newTrace = [[xyt[0] * rate, xyt[1], xyt[2]] for xyt in trace] + + # print(newTrace) + return distX, newTrace + + +def get_xy(bg_content: bytes, ct_content: bytes): + bg_img = cv2.imdecode(np.frombuffer(bg_content, np.uint8), + cv2.IMREAD_COLOR) # 如果是PIL.images就换读取方式 + tp_img = cv2.imdecode(np.frombuffer(ct_content, np.uint8), + cv2.IMREAD_COLOR) + bg_edge = cv2.Canny(bg_img, 100, 200) + tp_edge = cv2.Canny(tp_img, 100, 200) + bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB) + tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB) + res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED) + min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) + # th, tw = tp_pic.shape[:2] + # print('缺口所在的位置,x是--->{},y是--->{}'.format(max_loc[:2][0],max_loc[:2][1])) + return max_loc[:2] + + +def GetData(bg_content, ct_content): + distX, distY = get_xy(bg_content, ct_content) + + distX, newTrace = CreatTrace(distX) + return newTrace[-1][0], newTrace + + +def parseText(registerTex): + start = re.search('{"code', registerTex).span()[0] + end = re.search('"}}', registerTex).span()[1] + register = json.loads(registerTex[start:end])['detail'] + + bgUrl = register['bg'] + fgUrl = register['fg'] + return register, bgUrl, fgUrl + + +# --------------------------------------------------------- + + +def downPhoto(bgUrl, fgUrl): + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' + } + bgUrl = 'https://castatic.fengkongcloud.com' + bgUrl + fgUrl = 'https://castatic.fengkongcloud.com' + fgUrl + bgRespone = re_get(bgUrl, headers) + bgContent = bgRespone.content + fgResponse = re_get(fgUrl, headers) + fgConten = fgResponse.content + # with open( + # r'C:\Users\newrank\Desktop\Python\xhs\photo\bg.jpg', + # 'wb') as fp: + # fp.write(bgContent) + # with open( + # r'C:\Users\newrank\Desktop\Python\xhs\photo\cut.png', + # 'wb') as fp: + # fp.write(fgConten) + + return bgContent, fgConten + + +def getTrace(bgContent, fgConten): + startTime = round(time.time() * 1000) + mouseEndX, mouseData = GetData(bgContent, fgConten) + endTime = startTime + 7 + mouseData[-1][-1] + # print(mouseEndX, mouseData[-1][0], startTime, endTime) + trace = { + "selectData": [ + + ], + "trueWidth": 310.40000000000003, + "trueHeight": 155.20000000000002, + "blockWidth": 46.5, + "endTime": endTime, + "mouseEndX": mouseEndX, + "mouseData": mouseData, + "startTime": startTime + + } + return trace + + +def desEncrypt(data, key): + """des加密""" + des_obj = des(key.encode(), mode=ECB) + content = zeroPad(str(data).replace(" ", "").encode()) + return base64.b64encode(des_obj.encrypt(content)).decode("utf-8") + + +def zeroPad(data): + """ + zeroPadding + """ + block_size = 8 + while len(data) % block_size: + data += b"\0" + return data + + +def mainEncrypt(jsText, register, trace, protocol, rversion): + print(trace) + exit() + # 获取混淆解密函数obDecode,解密大数组 + # obDecode, jsArray = initObDecode(jsText) + # params = getParams(jsText, obDecode, jsArray) + params = { + 'nm': '4ee2f32f', + 'dy': 'aee9ca04', + 'lx': 'dec417a4', + 'xy': 'c179010f', + 'dl': '2575232a', + 'oe': '59bca469', + 'gi': 'bc1b5ed3', + 'aw': '013f32d6', + 'xp': 'ff19d8d3', + 'ux': '8d1339ba', + 'vk': '2323fc45' + } + result = { + 'organization': "eR46sBuqF0fdw7KWFLYa", + 'ostype': "web", + 'protocol': protocol, + 'rid': register["rid"], + 'rversion': rversion, + 'sdkver': "1.1.3", + "act.os": "web_pc", + } + + keys = list(params.keys()) + result[keys[0]] = desEncrypt(trace["mouseData"], params[keys[0]]) + result[keys[1]] = desEncrypt(trace["endTime"] - trace["startTime"], params[keys[1]]) + result[keys[2]] = desEncrypt(trace["trueWidth"], params[keys[2]]) + result[keys[3]] = desEncrypt(trace["trueHeight"], params[keys[3]]) + result[keys[4]] = desEncrypt(trace["mouseEndX"] / trace["trueWidth"], params[keys[4]]) + result[keys[5]] = desEncrypt(1, params[keys[5]]) + result[keys[6]] = desEncrypt(0, params[keys[6]]) + result[keys[7]] = desEncrypt(-1, params[keys[7]]) + result[keys[8]] = desEncrypt("default", params[keys[8]]) + result[keys[9]] = desEncrypt("web", params[keys[9]]) + result[keys[10]] = desEncrypt("zh-cn", params[keys[10]]) + result["callback"] = "sm_" + str(round(time.time() * 1000) + 1000) + return result + + +def requestVerify(params): + headers = { + # 'Host': 'captcha.fengkongcloud.cn', + 'Connection': 'keep-alive', + 'Sec-Fetch-Mode': 'no-cors', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,' + ' like Gecko) Chrome/94.0.4606.81 Safari/537.36', + 'Accept': '*/*', + # 'X-Requested-With': 'com.baidu.searchbox', + 'Sec-Fetch-Site': 'cross-site', + 'Referer': 'https://www.xiaohongshu.com', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + + } + + verifyUrl = 'http://captcha.fengkongcloud.com/ca/v2/fverify?' + url = verifyUrl + parse.urlencode(params) + response = re_get(url, headers) + + if "PASS" in response.text: + print("xhs 验证成功", response.text, params) + return 1 + else: + print("xhs 验证失败", response.text, params) + return 0 + + +def mainStream(): + configText = requestConfig() + start, jsUrl = parseConfigText(configText) + protocol, rversion = getProtocol(jsUrl) + jsText = requestCapatureJs(jsUrl) + registerTex = requestRegister() + register, bgUrl, fgUrl = parseText(registerTex) + bgContent, fgConten = downPhoto(bgUrl, fgUrl) + trace = getTrace(bgContent, fgConten) + params = mainEncrypt(jsText, register, trace, protocol, rversion) + + del jsText + del bgContent + del fgConten + gc.collect() + + code = requestVerify(params) + + return code, register["rid"] + + +def get_xsign(url): + screen_key = "WSUDD" + _st = url.split(".com")[-1] + screen_key + import hashlib + m = hashlib.md5() + m.update(_st.encode(encoding='UTF-8')) + md5String = m.hexdigest() + return "X" + md5String + + +def reply_xhs(rid, timestamp2): + url = "https://www.xiaohongshu.com/fe_api/burdock/v2/shield/captcha?c=pp" + data = { + "rid": rid, + "callFrom": "web", + "status": 1 + } + x_sign = get_xsign(url) + headers = { + 'cookie': timestamp2, + 'X-Sign': x_sign, + 'Referer': 'https://www.xiaohongshu.com/website-login/captcha?redirectPath=http://www.xiaohongshu.com/' + 'discovery/item/615d2dd80000000021034b04', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' + 'Chrome/94.0.4606.81 Safari/537.36', + 'sec-fetch-site': 'same-origin', + 'origin': 'www.xiaohongshu.com', + + } + while True: + try: + response = r.post(url, headers=headers, json=data, timeout=10) + break + except: + print(traceback.format_exc()) + time.sleep(2) + continue + + response = json.loads(response.text) + if response['data']['passed']: + print("解封成功") + return True + else: + print("解封失败") + return False + + +code, rid = mainStream() +reply_xhs(rid, "202204249a5650dd48685fb2e9f5b470") diff --git a/test_pc_小红书破解/encryption_2.js b/test_pc_小红书破解/encryption_2.js new file mode 100644 index 0000000..2f77c76 --- /dev/null +++ b/test_pc_小红书破解/encryption_2.js @@ -0,0 +1,1655 @@ +var I = { + Asdid: function(n, t) { + return I.Aezou(n, t) + }, + SzYiB: function(n, t) { + return n === t + }, + pwhAw: function(n, t) { + return n + t + }, + VWEsv: function(n, t) { + return n >>> t + }, + WeCKB: function(n, t) { + return n & t + }, + IenfU: function(n, t) { + return n & t + }, + kYqKP: function(n, t) { + return n + t + }, + GsHCg: function(n, t) { + return n | t + }, + RFSIx: function(n, t) { + return n | t + }, + npjWu: function(n, t) { + return n + t + }, + xGwfM: function(n, t) { + return n & t + }, + cZkfp: function(n, t) { + return n < t + }, + upWOx: function(n, t) { + return n + t + }, + SwXTA: function(n, t) { + return n + t + }, + kjnHL: function(n, t) { + return n(t) + }, + DGNMh: function(n, t) { + return n >> t + }, + iBKMw: function(n, t) { + return n | t + }, + QcglW: function(n, t) { + return n << t + }, + mYtFS: function(n, t) { + return t < n + }, + vaMfw: function(n, t) { + return n < t + }, + xKFwC: function(n, t) { + return n >> t + }, + WHCrI: function(n, t) { + return n | t + }, + jbUcg: function(n, t) { + return n | t + }, + EpncC: function(n, t) { + return n >> t + }, + nHflh: function(n, t) { + return n >> t + }, + KzYvT: function(n, t) { + return t < n + }, + XdDjW: function(n, t) { + return n * t + }, + pSREF: function(n, t) { + return n ^ t + }, + LtAyD: function(n, t) { + return n >>> t + }, + TLybH: function(n, t) { + return n << t + }, + utkMS: function(n, t) { + return n >>> t + }, + TqbuK: function(n, t) { + return n >>> t + }, + vJxfn: function(n, t) { + return n | t + }, + iezfU: function(n, t) { + return n | t + }, + tkPoM: function(n, t) { + return n >>> t + }, + UBzpF: function(n, t) { + return n & t + }, + BKnIZ: function(n, t) { + return n >>> t + }, + fzIKl: function(n, t) { + return n & t + }, + uFaBa: function(n, t) { + return n >>> t + }, + xWsjD: function(n, t) { + return n | t + }, + rMtuY: function(n, t) { + return n | t + }, + nzqwS: function(n, t) { + return n | t + }, + RaIAs: function(n, t) { + return n >>> t + }, + sekvQ: function(n, t) { + return n & t + }, + chCjH: function(n, t) { + return n >>> t + }, + OhkZO: function(n, t) { + return n & t + }, + JvHkh: function(n, t) { + return n & t + }, + EVsUu: function(n, t) { + return n & t + }, + wHpTz: function(n, t) { + return n & t + }, + raCsD: function(n, t) { + return n ^ t + }, + ABBdW: function(n, t) { + return n >>> t + }, + HWuIR: function(n, t) { + return n ^ t + }, + ZwtgZ: function(n, t) { + return n & t + }, + nTNmp: function(n, t) { + return n >>> t + }, + VnlUj: function(n, t) { + return n << t + }, + fwvBa: function(n, t) { + return n | t + }, + WZioj: function(n, t) { + return n | t + }, + ffAAl: function(n, t) { + return n & t + }, + HTlgi: function(n, t) { + return n >>> t + }, + BeRtJ: function(n, t) { + return n >>> t + }, + CgCbY: function(n, t) { + return n >>> t + }, + BYwiT: function(n, t) { + return n << t + }, + viRaN: function(n, t) { + return n | t + }, + pDGks: function(n, t) { + return n | t + }, + XcXsG: function(n, t) { + return n << t + }, + zHSLP: function(n, t) { + return n << t + }, + mivzY: function(n, t) { + return n(t) + }, + uPhZo: function(n, t, e, r) { + return n(t, e, r) + }, + BGSkH: function(n, t) { + return n === t + }, + FwRKa: function(n, t) { + return n === t + }, + ifKOv: function(n, t, e) { + return n(t, e) + }, + ZGVRs: function(n, t) { + return n === t + }, + vzSlt: function(n, t) { + return n >> t + }, + Aezou: function(n, t) { + return n < t + }, + tMSfz: function(n, t) { + return n << t + }, + LqJoT: function(n, t) { + return n ^ t + }, + kRIWH: function(n, t) { + return n >>> t + }, + QfxdE: function(n, t) { + return n != t + }, + keUrN: function(n, t) { + return n ^ t + }, + NktuR: function(n, t) { + return n | t + }, + XYboy: function(n, t) { + return n | t + }, + VePBf: function(n, t) { + return n ^ t + }, + RjFQm: function(n, t) { + return n & t + }, + KRTmi: function(n, t) { + return n & t + }, + JRrCe: function(n, t) { + return n << t + }, + pYrBQ: function(n, t) { + return n ^ t + }, + ekeqp: function(n, t) { + return n >>> t + }, + fRCAR: function(n, t) { + return n >>> t + }, + HpTXn: function(n, t) { + return n & t + }, + HUFrw: function(n, t) { + return n == t + }, + rkyMh: function(n, t) { + return n | t + }, + Lsbva: function(n, t) { + return n - t + }, + xPxbp: function(n, t) { + return n ^ t + }, + tVFxW: function(n, t) { + return n ^ t + }, + rfiUh: function(n, t) { + return n ^ t + }, + zdGKA: function(n, t) { + return n & t + }, + FNlLv: function(n, t) { + return n + t + }, + JnDDd: function(n, t) { + return n & t + }, + kMfSb: function(n, t) { + return n ^ t + }, + yomed: function(n, t) { + return n | t + }, + NYepw: function(n, t, e) { + return n(t, e) + }, + yKazt: function(n, t, e, r) { + return n(t, e, r) + }, + edMHu: function(n, t, e) { + return n(t, e) + }, + qrTqB: function(n, t, e) { + return n(t, e) + }, + RLkkV: function(n, t, e) { + return n(t, e) + }, + wewLb: function(n, t, e) { + return n(t, e) + }, + mAMqQ: function(n, t, e) { + return n(t, e) + }, + OveAk: function(n, t, e) { + return n(t, e) + }, + VMxmP: function(n, t, e) { + return n(t, e) + }, + NXyYc: function(n, t, e) { + return n(t, e) + }, + Xdrpx: function(n, t) { + return n >>> t + }, + cKMfC: function(n, t) { + return n & t + }, + fXLWv: function(n, t) { + return n ^ t + }, + nEBJZ: function(n, t, e) { + return n(t, e) + }, + eSsQc: function(n, t, e) { + return n(t, e) + }, + kqtHM: function(n, t) { + return n * t + }, + UmkzM: function(n, t) { + return n - t + }, + ltptG: function(n, t) { + return n % t + }, + NJytL: function(n, t) { + return n < t + }, + ewGRe: function(n, t) { + return n / t + }, + HlrdL: function(n, t) { + return n < t + }, + PPseo: function(n) { + return n() + }, + wyYrO: function(n, t) { + return n(t) + }, + LxiIw: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + BjVxz: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + FRVvy: function(n, t) { + return n + t + }, + UjJed: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + RTQNc: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + uovaF: function(n, t) { + return n + t + }, + AjGrt: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + xwrRh: function(n, t) { + return n + t + }, + cGcWG: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + IFRIH: function(n, t) { + return n + t + }, + FBUyM: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + ThNPj: function(n, t) { + return n + t + }, + nkMpT: function(n, t) { + return n + t + }, + jmdyi: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + HFhar: function(n, t) { + return n + t + }, + CDYeI: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + QvcMB: function(n, t) { + return n + t + }, + SDkvq: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + Lapsh: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + NYkua: function(n, t) { + return n + t + }, + AWuxL: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + UTMjO: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + iVRDG: function(n, t) { + return n + t + }, + uwfvF: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + mpQeD: function(n, t, e) { + return n(t, e) + }, + UwtGv: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + kehqw: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + AbkvS: function(n, t) { + return n + t + }, + fnzmI: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + AJapW: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + HUXIX: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + xFNLD: function(n, t) { + return n + t + }, + MQial: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + cgKhB: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + szdNH: function(n, t) { + return n + t + }, + YwRZd: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + VKZpx: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + bRgVF: function(n, t) { + return n + t + }, + RXqiQ: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + NnHyg: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + cheGG: function(n, t) { + return n + t + }, + YBIIy: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + GxCaq: function(n, t, e, r, o, i, u, c) { + return n(t, e, r, o, i, u, c) + }, + SHBYG: function(n, t) { + return n + t + }, + KHNwR: function(n, t) { + return n + t + }, + XvXJZ: function(n, t) { + return n + t + }, + TvfNw: function(n, t) { + return n(t) + }, + EhBAi: function(n, t) { + return n(t) + }, + kQqPx: function(n, t) { + return n(t) + }, + nXFYO: function(n, t) { + return n(t) + }, + SfYbG: function(n, t) { + return n * t + }, + fwAMm: function(n, t) { + return n >>> t + }, + xcKaL: function(n, t) { + return n & t + }, + zTuEC: function(n, t) { + return n & t + }, + mKgRD: function(n, t) { + return n + t + }, + gKMdP: function(n, t) { + return n * t + }, + QSkbb: function(n, t) { + return n * t + }, + kTruI: function(n, t) { + return n << t + }, + NxOYR: function(n, t) { + return n * t + }, + flLFd: function(n, t) { + return n * t + }, + LXnUO: function(n, t) { + return n >>> t + }, + kzYid: function(n, t) { + return n & t + }, + ypxDS: function(n, t) { + return n >>> t + }, + lwTjZ: function(n, t) { + return n & t + }, + oMLaJ: function(n, t) { + return n === t + }, + IhLzb: function(n, t) { + return n - t + }, + oKGOJ: function(n, t) { + return n << t + }, + VtGxK: function(n, t) { + return n >>> t + }, + BwWVf: function(n, t) { + return n | t + }, + mGqzS: function(n, t) { + return n - t + }, + yxNzF: function(n, t) { + return n === t + }, + ddiLP: function(n, t) { + return n << t + }, + SsHvp: function(n, t) { + return n >>> t + }, + IQpZL: function(n, t) { + return n << t + }, + coGME: function(n, t) { + return n ^ t + }, + xlooc: function(n, t) { + return n ^ t + }, + jqgEq: function(n, t, e) { + return n(t, e) + }, + DdJny: function(n, t) { + return n >>> t + }, + jjbwR: function(n, t, e) { + return n(t, e) + }, + lIukw: function(n, t) { + return n >>> t + }, + SqpEx: function(n, t) { + return n || t + }, + gsEnE: function(n, t) { + return n % t + }, + iQEQv: function(n, t) { + return n - t + }, + TwHZI: function(n, t) { + return n < t + }, + ibQwP: function(n, t) { + return n & t + }, + DEwxr: function(n, t) { + return n & t + }, + NOdkO: function(n, t) { + return n + t + }, + LpspI: function(n, t) { + return n & t + }, + zPpyV: function(n, t) { + return n | t + }, + XnnVI: function(n, t) { + return n + t + }, + vdvSX: function(n, t) { + return n << t + }, + ogUTG: function(n, t) { + return n & t + }, + tsYel: function(n, t) { + return n << t + }, + ZVdBE: function(n, t) { + return n + t + }, + uOTzC: function(n, t) { + return n & t + }, + jyNom: function(n, t) { + return n + t + }, + TSXjL: function(n, t, e) { + return n(t, e) + }, + lNrBq: function(n, t, e) { + return n(t, e) + }, + GJRbu: function(n, t, e) { + return n(t, e) + }, + WbEDk: function(n, t, e) { + return n(t, e) + }, + TKBbc: function(n, t, e) { + return n(t, e) + }, + xuzXZ: function(n, t, e) { + return n(t, e) + }, + xLvUU: function(n, t) { + return n | t + }, + PgtQJ: function(n, t) { + return n & t + }, + nPLtg: function(n, t) { + return n << t + }, + yKuRz: function(n, t) { + return n << t + }, + oSyUk: function(n, t) { + return n + t + }, + olxBI: function(n, t) { + return n | t + }, + SxArR: function(n, t) { + return n << t + }, + PVyvH: function(n, t) { + return n + t + }, + TJEjI: function(n, t) { + return n + t + }, + PQnGv: function(n, t, e) { + return n(t, e) + }, + dRfnR: function(n, t, e) { + return n(t, e) + }, + KpSSJ: function(n, t, e) { + return n(t, e) + }, + uGDGu: function(n, t, e) { + return n(t, e) + }, + uwzBp: function(n, t) { + return n + t + }, + kdWvY: function(n, t) { + return n + t + }, + ANWNn: function(n, t, e) { + return n(t, e) + }, + ostWl: function(n, t, e) { + return n(t, e) + }, + ncKTe: function(n, t, e) { + return n(t, e) + }, + rPOrp: function(n, t) { + return n + t + }, + AKJPR: function(n, t, e) { + return n(t, e) + }, + vTDMk: function(n, t) { + return n + t + }, + sbNeo: function(n, t, e) { + return n(t, e) + }, + DbXGH: function(n, t) { + return n + t + }, + DtsUC: function(n, t, e) { + return n(t, e) + }, + Uztor: function(n, t, e) { + return n(t, e) + }, + icQNu: function(n, t, e) { + return n(t, e) + }, + Ndize: function(n, t) { + return n + t + }, + suLtE: function(n, t, e) { + return n(t, e) + }, + bpQDU: function(n, t, e) { + return n(t, e) + }, + IZmls: function(n, t) { + return n + t + }, + EgGBJ: function(n, t, e) { + return n(t, e) + }, + SzxUo: function(n, t, e) { + return n(t, e) + }, + rWZsL: function(n, t) { + return n + t + }, + wzGHQ: function(n, t) { + return n + t + }, + WDcAM: function(n, t) { + return n + t + }, + IPMLK: function(n, t) { + return n + t + }, + vJjlP: "00000000", + oJYfb: function(n, t) { + return n >>> t + }, + mQkte: function(n, t) { + return n >>> t + }, + oBvcE: function(n, t) { + return n === t + }, + kOjKY: function(n, t) { + return n === t + }, + QyAuu: function(n, t) { + return n < t + }, + irzNm: function(n, t, e, r) { + return n(t, e, r) + }, + eDyeh: function(n, t, e, r) { + return n(t, e, r) + }, + gOvzB: function(n, t) { + return n == t + }, + ANWvb: function(n, t) { + return n === t + }, + SPCco: "4|2|3|1|0", + LfhXp: function(n, t) { + return n == t + }, + cjoUF: "id=", + CAODF: function(n, t) { + return n(t) + }, + USNta: "catch", + htgrX: "15|4|12|13|5|9|6|8|0|1|10|3|14|16|11|7|2", + VUSLk: function(n, t) { + return n(t) + }, + qywHB: function(n, t, e) { + return n(t, e) + }, + LQaHK: "reduction", + UwkXJ: function(n, t) { + return n(t) + }, + BuRFi: 'Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: "', + CeSwE: function(n, t) { + return n(t) + }, + PlXqX: function(n, t) { + return n(t) + }, + HNrfZ: function(n, t) { + return n(t) + }, + CElIf: function(n, t) { + return n(t) + }, + VsoVR: function(n, t) { + return n(t) + }, + hFaXX: function(n, t) { + return n(t) + }, + nnXWj: function(n, t) { + return n(t) + }, + HCUnF: function(n, t) { + return n(t) + }, + dCpkX: function(n, t) { + return n(t) + }, + pPDwm: function(n, t) { + return n(t) + }, + wCZjq: function(n, t) { + return n(t) + }, + OkugN: function(n, t) { + return n(t) + }, + NzKgI: function(n, t) { + return n(t) + }, + tBANh: function(n, t) { + return n(t) + }, + BSWPd: function(n) { + return n() + }, + xfrIi: function(n, t) { + return n(t) + }, + GEqBJ: function(n, t) { + return n(t) + }, + XZsXi: function(n, t) { + return n(t) + }, + ojWNH: function(n) { + return n() + }, + tQozy: function(n) { + return n() + }, + UOJGw: function(n) { + return n() + }, + ENbkA: function(n) { + return n() + }, + wCltw: function(n, t) { + return n(t) + }, + HRCTQ: function(n, t, e) { + return n(t, e) + }, + bSbMj: function(n, t) { + return n === t + }, + nTZWl: "left", + ywDtF: function(n) { + return n() + }, + wuimU: function(n, t) { + return n + t + }, + VEQBL: function(n, t) { + return n < t + }, + LqCjk: function(n, t) { + return n < t + }, + ugqhR: function(n, t) { + return n !== t + }, + cdJKU: function(n, t) { + return n(t) + }, + RiXvr: function(n, t) { + return n(t) + }, + wkJtj: function(n, t) { + return n == t + }, + sbolW: function(n, t) { + return n in t + }, + qCwQZ: function(n, t, e) { + return n(t, e) + }, + SnCxi: function(n, t) { + return n(t) + }, + jARwv: function(n) { + return n() + }, + fbVHm: function(n, t) { + return n !== t + }, + upYgD: function(n, t) { + return n in t + }, + deGWr: function(n, t) { + return n !== t + }, + ZFrcE: function(n, t) { + return n + t + }, + CvwPU: function(n, t) { + return n(t) + }, + AWPLY: function(n, t) { + return n(t) + }, + gzChF: function(n, t) { + return n + t + }, + fGSCT: function(n, t) { + return n + t + }, + iFBIe: function(n, t) { + return n + t + }, + zWzwc: function(n, t) { + return n + t + }, + OhXyn: function(n, t) { + return n + t + }, + vErem: function(n, t) { + return n + t + }, + oFNVz: function(n, t) { + return n + t + }, + buggz: function(n, t) { + return n + t + }, + emXyb: function(n, t) { + return n + t + }, + mEhwQ: function(n, t) { + return n + t + }, + IcJaW: function(n, t) { + return n + t + }, + VoBCP: function(n, t, e) { + return n(t, e) + }, + SQWwb: function(n) { + return n() + }, + EzVGv: function(n, t) { + return n !== t + }, + zTzDd: function(n, t) { + return t <= n + }, + eWPwu: function(n, t) { + return n !== t + }, + KpakZ: function(n, t) { + return n === t + }, + nJWOB: function(n, t) { + return t <= n + }, + OsWjd: function(n, t) { + return n !== t + }, + ISutV: function(n, t) { + return t <= n + }, + BclsK: function(n, t) { + return n === t + }, + pIBWh: function(n, t) { + return t <= n + }, + GciZN: function(n, t) { + return n < t + }, + wLnmA: function(n, t) { + return n < t + }, + ocRrk: function(n, t) { + return t <= n + }, + Sdcoe: function(n, t) { + return t <= n + }, + PIPoW: function(n, t) { + return n !== t + }, + CFJut: function(n, t) { + return n !== t + }, + zIMiR: function(n, t) { + return n !== t + }, + joyvC: function(n, t) { + return n === t + }, + KCYeT: function(n, t) { + return t < n + }, + UQqOc: function(n, t) { + return t < n + }, + KRKUj: function(n, t) { + return t <= n + }, + IIVZC: function(n, t) { + return t <= n + }, + PGNCC: function(n, t) { + return t <= n + }, + HEbnw: function(n, t) { + return t <= n + }, + TlGvN: function(n, t) { + return t <= n + }, + qsYdU: function(n, t) { + return t <= n + }, + MgtAD: function(n, t) { + return n !== t + }, + FtaCF: function(n, t) { + return n === t + }, + wOHDj: function(n, t) { + return n === t + }, + dUlhQ: function(n, t) { + return n === t + }, + ueCzU: function(n, t) { + return n !== t + }, + DWZiG: function(n, t) { + return n !== t + }, + fsIBe: function(n, t) { + return n !== t + }, + FZQrz: function(n, t) { + return n(t) + }, + AtlxA: function(n, t) { + return n === t + }, + HLBTR: function(n, t) { + return n(t) + }, + fDMPG: function(n, t) { + return n(t) + }, + BDhYE: function(n, t) { + return n === t + }, + CzmIL: function(n, t) { + return t < n + }, + LEITf: function(n, t, e) { + return n(t, e) + }, + FdIxT: function(n, t) { + return n < t + }, + MIdeR: function(n, t) { + return n === t + }, + JawGx: function(n, t) { + return n === t + }, + xeOdR: function(n, t, e) { + return n(t, e) + }, + yCpJQ: function(n, t) { + return n !== t + }, + IULpW: function(n, t, e) { + return n(t, e) + }, + Nqbum: function(n, t) { + return n(t) + }, + DrohQ: function(n, t) { + return n + t + }, + pTowB: function(n, t) { + return n == t + }, + QkCjU: function(n, t) { + return n === t + }, +}; + + +function T() { + var n = ["SxIff", "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}", "mYtFS", "rPTfJ", "NEYHQ", "Technical", "4|13|8|10|9|6|12|5|14|1|3|7|0|2|11", "webgl alpha bits:", "APQnP", "webgl max combined texture image units:", "tZrYs", "2028168ISEjRH", "kUAAS", "FIoLl", "JNZKU", "RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)", "Adobe Garamond", "NOT_AVAILABLE", "Kaufmann BT", "sortPluginsFor", "isArray", "Forte", "Gill Sans MT Condensed", "fWJvy", "YJaFi", "uGKTs", "Baskerville", "webgl max vertex texture image units:", "rYbau", "VMAjX", "Asdid", "3|2|4|5|1|0", "Swis721 BlkEx BT", "appName", "Incised901 Bd BT", "bPnop", " opr/", "BeIpX", "Tunga", "VAhtO", "Univers", "OCR A Extended", "sddir", "viRaN", "vJxfn", "Gloucester MT Extra Condensed", "nvkbJ", "STENCIL_BITS", "MIdeR", "PgtQJ", "iVpri", "22|7|18|13|20|16|14|5|19|17|9|12|4|23|0|11|6|1|21|2|15|8|3|10", "VERTEX", "Sketch Rockwell", "WHCrI", "itemSize", "Herald", "Calligrapher", "Baskerville Old Face", "BIyvX", "YBIIy", "Lithograph", "HEbnw", "ucqiX", "4|0|2|5|3|1", "CaRjq", "bECmX", "HFhar", "charAt", "Thonburi", "FrankRuehl", "EXaJi", "FbmlO", "Amazone BT", "Gabriola", "Minion Pro", "compileShader", "ERROR", "Cooper Black", "TUtJd", "VsoVR", "FRUTIGER", "oejQo", "fbKGC", "adBlock", "jLKBZ", "dFruX", "firefox/", "aXLqh", "GfDHz", "function", "11pt no-real-font-123", "aShOC", "DKOFW", "edMHu", "TqbuK", "beginPath", "Constantia", "TJEjI", "ShockwaveFlash.ShockwaveFlash", "webgl shading language version:", "Modern", "NOSfR", "KaiTi", "hCoVP", "enableVertexAttribArray", "webgl max vertex attribs:", "Harrington", "ibQwP", "stringify", "charCodeAt", "oabeX", "Marker Felt", "DB LCD Temp", "RxXwn", "Sakkal Majalla", "iBPXg", "languages", "FvyKj", "XYboy", "rUQWL", "div", "kzgLl", "QkCjU", "DtsUC", "unmqq", "zLUFt", "Futura Md BT", "spSYE", "bpjfn", "android", "AWuxL", "jARwv", "DIN", "92fiHaBd", "hardwareConcurrency", "AVENIR", "ogUTG", "PhEpr", "Shell.UIHelper", "TLybH", "hFvMM", "SWCtl.SWCtl", "fbVHm", "uJELP", "image/jpeg", "Kailasa", "-9999px", "offsetHeight", "wYmxp", "VklNv", "NzKgI", "Vivaldi", "removeChild", "WEBKIT_EXT_texture_filter_anisotropic", "VENDOR", "kbDoV", "GciZN", "VuSbl", "rgb(255,255,0)", "MtJEO", "nPMzm", "msDoNotTrack", "ZGVRs", "rgb(0,255,255)", "DriFg", "sTgXt", "RyVRa", "WbEDk", "Stencil", "Mistral", "prototype", "Gill Sans Ultra Bold", "CJgfa", "UBHxL", "swf object not loaded", "getTimezoneOffset", "kOjKY", "Algerian", "arc", "hvmzJ", "aToKR", "xKFwC", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", "OqWgd", "HHOWK", "DIERs", "oKGOJ", "Script", "IyVYE", "niaJE", "7|12|16|14|1|2|9|5|0|15|6|13|4|8|17|11|10|3", "Android", "getSupportedExtensions", "sFCRe", "NEVIS", "lXmsb", "naNVj", "Harlow Solid Italic", "pfWCj", "Exotc350 Bd BT", "hogdk", "Charlesworth", "Plantagenet Cherokee", "mwOoC", "width", "font", "call", "VkhnK", "mAMqQ", "yerGp", "IYLsH", "addPreprocessedComponent", "Dozht", "jbUcg", "nXFYO", "Chrome", "Gigi", "DGNMh", "nHflh", "HCUnF", "hasFlashPlayerVersion", "MYnep", "yKuRz", "ZrLhD", "rfiUh", "ARCHER", "zYNsf", "MAX_VERTEX_ATTRIBS", "eXKAr", "AmerType Md BT", "openDatabase", "tVXEs", "Msxml2.DOMDocument", "viYmg", "kTruI", "PhKmd", "kDoWr", "usFaV", "Coronet", "oiqgd", "Copperplate Gothic Bold", "audioTimeout", "MONO", "JAeKU", "Bookshelf Symbol 7", "Aezou", "Pegasus", "sxQbi", "mqUJJ", "ADOBE GARAMOND PRO", "IcJaW", "rvQQG", "YwRZd", "Vladimir Script", "WebGLRenderingContext", "pDGks", "txWjX", "Mongolian Baiti", "UBzpF", "DdJny", "Mangal", "Abadi MT Condensed Light", "BDhYE", "fdLiH", "Freefrm721 Blk BT", "pYvMj", "vertexPosAttrib", "fillStyle", "Gungsuh", "createBuffer", "Albertus Extra Bold", "opera/", "fingerprintjs2", "xJXVn", "dQxaZ", "sfllr", "winnt", "Miriam Fixed", "Agency FB", "GxCaq", "LfhXp", "Tw Cen MT Condensed", "Tamil Sangam MN", "lHDQj", "ncKTe", "appendChild", "android 3.", "SsHvp", "FkHgm", "fsIBe", "Tw Cen MT Condensed Extra Bold", "xqnVF", "MingLiU-ExtB", "EpncC", "NYkua", "getParameter", "DELICIOUS", "BatangChe", "HTlgi", "VMxmP", "join", "HEyeC", "enumerateDevices", "FJnTO", "fXLWv", "TGGEI", "Rage Italic", "bUEhq", "Hiragino Mincho ProN", "FdIxT", "Windows Phone", "map", "Zapfino", "knee", "createShader", "Berlin Sans FB", "Korinna BT", "FrTxy", "mboos", "NBcDC", "toSource", "QcglW", "windows", "vQiEj", "nkMpT", "createProgram", "aZxnG", "Apple SD Gothic Neo", "tNGCG", "wOHDj", "oUEcO", "NXyYc", "Viner Hand ITC", "FoEmV", "QfxdE", "toString", "EXCLUDED", "vcrhL", "BuRFi", "antialias", "xhlqo", "FangSong", "hEMCC", "Helvetica", "Aparajita", "abqib", "error", "LYely", "30|63|6|57|62|50|37|64|51|53|9|59|10|22|38|61|4|15|44|0|43|48|33|12|71|54|2|32|17|25|28|3|49|36|47|31|19|42|55|24|34|27|60|18|46|70|41|7|69|20|1|52|23|66|5|56|45|29|58|8|65|35|16|21|13|26|14|67|11|40|68|39", "eTaUc", "MAX_CUBE_MAP_TEXTURE_SIZE", "Cornerstone", "Rockwell", "ezudT", "then", "cJoKe", "wAECB", "lurKq", "Bell MT", "BlvOv", "AcroPDF.PDF", "fontFamily", "suLtE", "kqtHM", "CElIf", "cKMfC", "QSkbb", "timeout", "vzyDb", "evenodd", "RjFQm", "NYepw", "kQqPx", "Cuckoo", "mwqRW", "CwcSE", "RRq9y03tuV", "concat", "height", "SfYbG", "rDyXG", "DsnRW", "HpTXn", "FRAGMENT_SHADER", "mKgRD", "Browallia New", "ZPDZP", "Matura MT Script Capitals", "wyYrO", "sbNeo", "tkuoa", "userDefinedFonts", "Serifa Th BT", "HUXIX", "Roman", "Eras Bold ITC", "fqgqO", "Didot", "eAfIz", "FNlLv", "screen", "lineHeight", "doNotTrack", "TKndj", "IIVZC", "Intl", "ypxDS", "MAX_RENDERBUFFER_SIZE", "GymEb", "experimental-webgl", "SILKSCREEN", "IenfU", "SDkvq", "vaMfw", "7|1|3|11|2|12|8|6|10|13|5|0|4|9|14", "MUSEO", "16qlutdv", "VERTEX_SHADER", "gKMdP", "Humanst521 Lt BT", "CeSwE", "bindBuffer", "key", "Agisd", "XSYlo", "Tw Cen MT", "getElementsByClassName", "Iskoola Pota", "emXyb", "FBUyM", "Skia", "tiDUz", "extraComponents", "webgl depth bits:", "OvbVC", "BeRtJ", "UwtGv", "cVWoa", "Pickwick", "STATIC_DRAW", "Papyrus", "yKazt", "SQWwb", "Geometr231 Hv BT", "yRDWR", "pPDwm", "wCDMn", "xmWfR", "QyAuu", "nmYwj", "GoudyOLSt BT", "xwrRh", "length", "RLkkV", "Californian FB", "sans-serif", "xqYxr", "ZapfHumnst BT", "qCwQZ", "webgl max viewport dims:", "OPVzy", "plugins", "createDynamicsCompressor", "KRHyI", "DVzDC", "trident/", "sort", "mediaDevices", "WMPlayer.OCX", "XSLtq", "Big Caslon", "bxcHf", "whiteSpace", "GeoSlab 703 XBd BT", "flash/compiled/FontList.swf", "getShaderPrecisionFormat", "fxios", "joyvC", "Khmer UI", "opWac", "android 2.", "pike", "getPromise", "jmdyi", " ", "Chaucer", "BjVxz", "xBsCe", "SRclD", "UGnPM", "Ravie", "webgl max vertex uniform vectors:", "Staccato222 BT", "engvC", "QSgnL", "flLFd", "WZioj", "TcFRu", "Lydian BT", "attack", "mivzY", "zEBOb", "laNsg", "cAIRm", "webgl", "Kabel Ult BT", "CopperplGoth Bd BT", "JnDDd", "OsWjd", "NzNeY", "UOJGw", "PGNCC", "Broadway", "AWPLY", "kMTnR", "hasOwnProperty", "WHITNEY", "TiVlx", "pRWYN", "Tempus Sans ITC", "Heiti TC", "OveAk", "PgCiz", "Chalkboard SE", "bgANs", "suDBy", "AqJSx", "tgZWi", "Palace Script MT", "Modern No. 20", "depthFunc", "encrypt", "ANbkd", "upYgD", "SnCxi", "Simplified Arabic Fixed", "position", "disconnect", "KRKUj", "bMISA", "cheGG", "Maiandra GD", "name", "RiXvr", "Chalkboard", "pYrBQ", "ChelthmITC Bk BT", "FLzer", "PVyvH", "aoGZP", "JTjQR", "GxvGD", "1198CTBSVW", "EVmyN", "Kabel Bk BT", "touchSupport", "Eras Light ITC", "GsHCg", "Narkisim", "fillRect", "wkJtj", "LOW", "ARNO PRO", "skqFy", "Malgun Gothic", "Juice ITC", "HyGCy", "Informal Roman", "ostWl", "platform", "mZFGo", "yhvxM", "aCyUS", "Microsoft JhengHei", "KdXhA", "yQcNL", "win95", "VUSLk", "Gujarati Sangam MN", "cpuClass", "tsYel", "nPLtg", "Berlin Sans FB Demi", "Rockwell Extra Bold", "webgl vendor:", "News GothicMT", "Bangla Sangam MN", "dRfnR", "yes", "Galliard BT", "vdvSX", "webgl version:", "ZapfEllipt BT", "ZJhiu", "_SHADER", "AXAdd", "Euphemia", "LQaHK", "ZNEMp", "BSWPd", "Other", "Bauer Bodoni", "ypEhe", "forEach", "kdWvY", "VWEsv", "DotumChe", "eDyeh", "ooTnT", "SzxUo", "Apple Chancery", "Oriya Sangam MN", "rMtuY", "Jokerman", "CG Times", "180005KBRtiI", "IZmls", "YzETf", "getData", "Arial", "hvHcp", "Edwardian Script ITC", "cGcWG", "bpQDU", "Storybook", "iphone", "Goudy Old Style", "RTQNc", "UwkXJ", "win", "UNMASKED_RENDERER_WEBGL", "cZAqX", "getOwnPropertyDescriptor", "HQYou", "VnlUj", "FRVvy", "lNrBq", "acuzV", "iOS", "DKqyn", "QuickTimeCheckObject.QuickTimeCheck.1", "seLSf", "dtUgD", "Teletype", "MAX_TEXTURE_SIZE", "Lsbva", "fXhTG", "Sherwood", "Copperplate", "DEPTH_BUFFER_BIT", "EgGBJ", "fzwYB", "AfzaL", "tlAoB", "pbyIN", "RXqiQ", "pbqXV", "VtGxK", "EhBAi", "win64", "tSeOW", "Andalus", "oIQNm", "YVvKs", "aQTmo", "decrypt", "413945XqSNzk", "irzNm", "wLnmA", "REBOM", "rgb(255,0,255)", "userLanguage", "TOaxJ", "yxNzF", "FreesiaUPC", "Gurmukhi MN", "ZwtgZ", "aZKUA", "cjeXR", "cMSVz", "FtaCF", "mCGQG", "XvXJZ", "webgl blue bits:", "LEQUAL", "NxOYR", "cRvCU", "IiIdz", "LqJoT", "kpfIG", "tOesP", "chCjH", "xbaxX", "WfjkI", "Cordia New", "uXAJu", "Perpetua", "Footlight MT Light", "gEygn", "dontUseFakeFontInCanvas", "Cezanne", "FnVMw", "hasLiedResolution", "swfContainerId", "QXULn", "reverse", "fonts", "GHSxn", "XnnVI", "CAzFq", "BlairMdITC TT", "UjJed", "IqDnP", "udYMm", "getExtension", "offsetUniform", "detectScreenOrientation", "NuOdZ", "jkEag", "tBANh", "ModZs", "KQjce", "display", "upWOx", "KpSSJ", "xLvUU", "uniformOffset", "HlrdL", "indexedDb", "yPauW", "fillText", "MQial", "audio", "FyirL", "vErem", "System", "vLLkl", "FyLTe", "PosterBodoni BT", "oCrcg", "OpkbS", "fill", "skeWa", "groupId", "Kunstler Script", "ACcvO", "drawArrays", "push", "ESkWG", "uFaBa", "DzgAX", "LrTHY", "impun", "Blackadder ITC", "kYqKP", "20030107", "fzIKl", "JawGx", "ajFJj", "EVsUu", "moyQw", "Cwm fjordbank glyphs vext quiz, 😃", "KRTmi", "unknown", "Gisha", "PetitaBold", "toDataURL", "XdDjW", "moDvy", "Cochin", "CgCbY", "WEBGL_debug_renderer_info", "xuzXZ", "qnEve", "style", "NJytL", "ULiaF", "'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200", "getTime", "bXftd", "hasLiedBrowser", "AvantGarde Md BT", "nFtkm", "SF UI Text", "zaatm", "xWsjD", "webgl ", "MAX_FRAGMENT_UNIFORM_VECTORS", "DevalVRXCtrl.DevalVRXCtrl.1", "pIBWh", "IQpZL", "tMSfz", "vQjux", "preprocessor", "Gill Sans", "nnXWj", "connect", "Humanst521 BT", "QuickTime.QuickTime", "UNMASKED_VENDOR_WEBGL", "nbBDV", "Denmark", "yCpJQ", "American Typewriter", "sessionStorage", "wCZjq", "webgl green bits:", "createElement", "multiply", "SnplC", "vkanf", "YCQRk", "EucrosiaUPC", "kzYid", "jYvai", "language", "FhIEq", "getV18", "XZsXi", "BYwiT", "oyOEr", "cnoOZ", "Gsjye", "Westminster", "Microsoft Internet Explorer", "Kannada Sangam MN", "Chalkduster", "ALIASED_LINE_WIDTH_RANGE", "SBnKV", "Fsanx", "aDhqa", "6027510CrvkqJ", "lFDPE", "ffAAl", "Playbill", "PPseo", "GEbIe", "wCltw", "Long Island", "Bodoni MT", "MEDIUM", "Ayuthaya", "rPOrp", "18pt Arial", "rgba(102, 204, 0, 0.2)", "suffixes", "type", "triangle", "SYDMx", "swfPath", "win98", "WenQuanYi Micro Hei", "iZvLw", "xaBud", "Humanst 521 Cn BT", "Gautami", "fGSCT", "1019311YWVfYU", "textShadow", "Old English Text MT", "Bank Gothic", "label", "fDMPG", "always", "8|15|21|25|24|29|3|13|36|31|1|12|6|34|37|5|19|20|2|38|17|7|33|18|16|35|10|4|14|0|26|30|27|23|22|32|9|28|11", "Nqbum", "gfmUW", "deGWr", "colorDepth", "Haettenschweiler", "iQkOb", "GungsuhChe", "swfobject", "PMingLiU-ExtB", "KHNwR", "tGcUb", "Serifa", "bSBWL", "ytjwd", "TSXjL", "vhpQs", "nTNmp", "precision ", "HaGWh", "dotwV", "Gill Sans Ultra Bold Condensed", "USNta", "bgYtZ", "coXhs", "timeZone", "ENJgY", "Ribbon131 Bd BT", "bqAQh", "Vrinda", "Niagara Solid", "setValueAtTime", "UmkzM", "Tristan", "Mona Lisa Solid ITC TT", "gsEnE", "CFNnO", "toLowerCase", "BankGothic Md BT", "mpQeD", "Angsana New", "JRrCe", "VsmkS", "serif", "IrisUPC", "vertexPosArray", "QTrlt", "COLOR_BUFFER_BIT", "DEwxr", "RBnqp", "Heiti SC", "DateTimeFormat", "npjWu", "Raavi", "HIyrt", "pTowB", "hHopu", "createOscillator", "yGncl", "yqMwE", "cjoUF", "none", "-apple-system", "BfWkI", "Rod", "Gill Sans MT", "blGrD", "textDecoration", "jzajN", "G89CfW4k", "TjaCy", "DOQud", "cZkfp", "Gulim", "Geometr231 BT", "qrTqB", "VERSION", "linkProgram", "RQUUn", "innerHTML", "vJBrG", "Centaur", "ANWvb", "BOqKF", "oZqaG", "DWZiG", "INCONSOLATA", "ojWNH", "Gedbn", "gNGUz", "ekeqp", "split", "Vagabond", "JdisC", "yomed", "bQuHD", "pzOIr", "textTransform", "Geeza Pro", "UYuwD", "mEhwQ", "Arabic Typesetting", "uaGiK", "windows phone", "slice", "Bandy", "iezfU", "qrkOk", "mjfiM", "Academy Engraved LET", "jgiHy", "npUrV", "utkMS", "AJSmC", "Pristina", "nTHEc", "vJjlP", "RFSIx", "iFBIe", "fwAMm", "3|1|4|5|0|2", "EzVGv", "lwTjZ", "Serifa BT", "pkQzr", "Script MT Bold", "lIukw", "Brush Script MT", "ocRrk", "AKJPR", "OiqVj", "vzXzz", "eKPUd", "LXnUO", "wzGHQ", "IHNWM", "jPMhP", "excludeIOS11", "nJWOB", "BevRJ", "globalCompositeOperation", "Zxyov", "Trajan", "fromCharCode", "wewLb", "Old Century", "BXxyQ", "EtyLE", "szdNH", "ongFH", "abs", "JvHkh", "getContext", "hQKPq", "FLOAT", "Tubular", "ENbkA", "zTzDd", "CG Omega", "00000000", "Jazz LET", "LtcMC", "FNuqM", "jhZMu", "QZirS", "Bodoni MT Black", "availWidth", "fRCAR", "LlAwE", "threshold", "Euphemia UCAS", "textAlign", "Unicorn", "xeOdR", "ZnDQC", "WuFrg", "Leelawadee", "mac", "OhkZO", "ePTmL", "ROtXg", "canvas", "jYOfN", "ZJbhz", "offsetWidth", "Kalinga", "pvlFT", "wordSpacing", "ontouchstart", "fwvBa", "FZTyP", "MOZ_EXT_texture_filter_anisotropic", "ItSfB", "UXOiF", "fkTJH", "nEBJZ", "nzqwS", "2|3|1|0|4|5", "linux", "screenResolution", "extensions:", "brOil", "NOICs", "Boulder", "AOSP", "timezoneOffset", "Vani", "ipod", "CDYeI", "gWtPS", "IRYcn", "Univers CE 55 Medium", "TvfNw", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "tavMH", "uwfvF", "gnVkc", "SkACi", "Skype.Detection", "Copperplate Gothic", "ZdTgF", "MgSVo", "DrohQ", "createEvent", "FPpGB", "MT Extra", "ewGRe", "x11", "PMingLiU", "ocbJu", "eSsQc", "oSyUk", "YFihx", "aGztd", "tkPoM", "Poor Richard", "tfrfS", "fontStyle", "ywDtF", "vrhgA", "Pythagoras", "kjnHL", "oncomplete", "missing options.fonts.swfPath", "UYuzx", "nurgb", "iemobile/", "hLJeO", "hFaXX", "gFqtt", "Levenim MT", "13|3|10|15|14|7|0|2|5|11|8|6|9|1|4|12", "UQqOc", "RWOzj", "yrYVd", "Bodoni 72 Oldstyle", "olxBI", "Corbel", "rMQNo", "webgl max fragment uniform vectors:", "OfuXv", "SimHei", "ABBdW", "9.0.0", "OhXyn", "fnzmI", "pCKlL", "nWPKA", "FXVbj", "Informal011 BT", "iqmvA", "KzYvT", "Bernard MT Condensed", "bRgVF", "XjNAe", "RvzzI", "French Script MT", "tQozy", "diZbL", "rrkrE", "FoxqG", "value", "iQEQv", "Arrus BT", "TJgvj", "uGDGu", "eWPwu", "substr", "Eras Demi ITC", "PdMPZ", "normal", "___fp_swf_loaded", "NRwXl", "njWOs", "PDF.PdfCtrl", "wuimU", "wtxCP", "gCbtf", "attachShader", "iKYFT", "FixQy", "BinnerD", "AjGrt", "MgtAD", "Market", "win16", "CvwPU", "uRImQ", "DBllB", "AFeIR", "nRiQP", "Gzddb", "ddiLP", "nOlDB", "fRdSa", "UIwxP", "LxiIw", "LpspI", "resolvedOptions", "LtAyD", "Firefox", "ZWAdobeF", "get", "cIYxU", "vGIJb", "Aharoni", "numItems", "deviceMemory", "qdSgd", "EEcgV", "nqLqO", "MS LineDraw", "availHeight", "NrJEX", "WeCKB", "kRIWH", "WAyln", "Niagara Engraved", "vzSlt", "Bazooka", "Helvetica Neue", "AngsanaUPC", "kcUQB", "fHFml", "SJTuz", "YgNWE", "description", "CjhhV", "left", "WJsFs", "CEVPp", "zCeoq", "jHVaG", "NOdkO", "raCsD", "jqgEq", "akXOL", "AkLkT", "webgl aliased line width range:", "Yacju", "pwhAw", "icQNu", "pExpn", "ActiveXObject", "ipad", "eEyIb", "ljvsL", "haXnC", "xdwum", "closePath", "XYyyE", "availableScreenResolution", "iBKMw", "XTFhn", "TiKJm", "mac_powerpc)", "5|4|0|3|2|1", "MingLiU", "UTMjO", "NHhuW", "Gill Sans MT Ext Condensed Bold", "msMaxTouchPoints", "Onyx BT", "precision", "Castellar", "RaIAs", "XbYKN", "XmtwK", "macintosh", "uOTzC", "JasmineUPC", "Showcard Gothic", "uovaF", "zGpbK", "oFNVz", "MS UI Gothic", "UuSrz", "JDfEP", "zCsZU", "DFKai-SB", "yOWTR", "Fixedsys", "SPCco", "Incised901 BT", "rangeMin", "IFRIH", "kind", "ILKUf", "abxkj", "LEITf", "destination", "Futura Bk BT", "wZgod", "lineBreak", "SzYiB", "Kaufmann Bd BT", "nTZWl", "Subway", "Magneto", "LTESe", "BGSkH", "English 111 Vivace BT", "Imprint MT Shadow", "Snell Roundhand", "Marlett", "ISutV", "Sdcoe", "rect", "Jswhe", "zdGKA", "startRendering", "BtrNb", "wtPgj", "undefined", "jocgx", "SwXTA", "Ndize", "kehqw", "SZZkl", "xPxbp", "Vijaya", "wHpTz", "monospace", "body", "XvlrH", "maxTouchPoints", "hfzvw", "Sinhala Sangam MN", "Microsoft PhagsPa", "IhLzb", "TRAJAN PRO", ";gid=", "FRAGMENT", " shader ", "gVzKI", "Ulsrd", "Party LET", "release", "Windows", "arm", "data", "OGRNn", "QegFT", "android 1.", "Shruti", "pjHJk", "10873800HrFoQU", "webdriver", "PSYpk", "AbkvS", "pSREF", "VHSNJ", "XNOAl", "Maugc", "BKnIZ", "VEQBL", "ALPHA_BITS", "ltQnP", "SimSun", "[object Array]", "rangeMax", "Onyx", "replace", "OPTIMA", "GulimChe", "lcvKX", "jjbwR", "x64hash128", "webgl aliased point size range:", "bqHQC", "SUUuw", "fJpXa", "Krungthep", "qywHB", "KLswB", "IqGxn", "RcNkb", "CAODF", "25|0|23|7|17|16|4|9|13|10|3|15|14|1|5|19|18|22|26|24|8|2|11|20|21|6|12", "Adodb.Stream", "HuFLd", "CFJut", "gyFth", "chrome/", "NSimSun", "2631MDhqLP", "vTDMk", "UsBuu", "OSAKA", "pixelRatio", "eEMHu", "LDwEG", "excludeIE", "WBANH", "DbXGH", "GEqBJ", "ReQVG", "Wide Latin", "webkitOfflineAudioContext", "RealPlayer", "Microsoft Yi Baiti", "kMfSb", "zUAqE", "Traditional Arabic", "gzChF", "dLBqf", "ifndi", "AgControl.AgControl", "CloisterBlack BT", "Lapsh", "Microsoft YaHei", "timezone", "wHjQP", "webgl max texture size:", "ltptG", "XnIcv", "Felix Titling", "DilleniaUPC", "span", "Nadeem", "Fransiscan", "ThNPj", "BWyrI", "BLUE_BITS", "ZFrcE", "excludes", "zPpyV", "VoBCP", "SimSun-ExtB", "Terminal", "cCIoW", "webgl unmasked vendor:", "Snap ITC", "Jester", "KwWut", "FEitm", "Antique Olive", "xGwfM", "bufferData", "TypoUpright BT", "enable", "uZvGu", "mGdbi", "VePBf", "HSbxY", "xfrIi", "Bodoni MT Poster Compressed", "currentTime", "HNrfZ", "oBvcE", "Sylfaen", "aeBOX", "Lithograph Light", "IPMLK", "addBehavior", "AtZmX", "Univers Condensed", "Freestyle Script", "hdYwZ", "ZVlij", "indexOf", "ugqhR", "LqCjk", "zIMiR", "XPTDO", "Latha", "CQhOi", "Opera", "INT", "Mac", "uPhZo", "Synchro LET", "ADOBE CASLON PRO", "dHCLI", "KpakZ", "buggz", "VAQZS", "svybQ", "match", "components", "PEKbo", "Calisto MT", "dVcrK", "PlXqX", "HUFrw", "HmGFT", "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "bymFL", "Linux", "fontSize", "bPgyE", "OLiFo", "EUROSTILE", "Signboard", "mmmmmmmmmmlli", "hYBRf", "Meiryo", "oMLaJ", "HWuIR", "FoCpm", "webgl stencil bits:", "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}", "Goudy Stout", "nXkeS", "BernhardMod BT", "Bodoni 72", "Minion", "Lao UI", "kczHm", "wow64", "mwJyF", "RealVideo.RealVideo(tm) ActiveX Control (32-bit)", "rkyMh", "AiGsR", "Netscape", "HELV", "FdXjJ", "webgl renderer:", "userAgent", "8|7|3|5|4|9|6|1|2|0", "UsBuA", "Internet Explorer", "zHSLP", "safari/", "localStorage", "epNNB", "shaderSource", "0|1|3|2|4", "iuvLL", "MingLiU_HKSCS-ExtB", "UFscN", "Hoefler Text", "RfBKH", "GoudyHandtooled BT", "NewsGoth BT", "Sceptre", "HLBTR", "MJtte", "rCIrI", "TwHZI", "getAttribLocation", "Dotum", "DEPTH_BITS", "keUrN", "DaunPenh", "Hiragino Sans GB", "zTuEC", "qGCJh", "renderedBuffer"]; + return (T = function() { + return n + } + )() +} + +C = function(n, t) { + var e = T(); + return e[n -= 175] +}; + + +function l(n, t,base64_t) { + var e, r, o, i, X = C, + H = { + qrkOk: "18|1|2|13|22|16|7|5|3|14|17|6|15|20|21|19|0|12|4|11|8|9|10", + xbaxX: function(n, t) { + return I["BGSkH"](n, t) + }, + KRHyI: "encrypt", + qApBh: function(n, t) { + return I.FwRKa(n, t) + }, + QTrlt: function(n, t) { + return I["BGSkH"](n, t) + }, + KhoyT: X(370), + Plrzb: function(n, t) { + return n == t + }, + Xusqg: function(n, t, e) { + return I.ifKOv(n, t, e) + }, + FbmlO: function(n, t) { + return n + t + }, + zYNsf: function(n, t) { + return I["ZGVRs"](n, t) + }, + IBqmw: function(n, t) { + return I["cZkfp"](n, t) + }, + WuFrg: function(n, t) { + return n + t + }, + kIzDb: function(n, t) { + return I["vzSlt"](n, t) + }, + RQUUn: function(n, t) { + return n & t + }, + SwLvn: function(n, t) { + return I["Aezou"](n, t) + }, + rrkrE: function(n, t) { + return I["fwvBa"](n, t) + }, + kczHm: function(n, t) { + return I["zHSLP"](n, t) + }, + PdMPZ: function(n, t) { + return I["pDGks"](n, t) + }, + bQuHD: function(n, t) { + return I["tMSfz"](n, t) + }, + aCyUS: function(n, t) { + return I["ZwtgZ"](n, t) + }, + LrTHY: function(n, t) { + return I.LqJoT(n, t) + }, + kcUQB: function(n, t) { + return I["VnlUj"](n, t) + }, + tZrYs: function(n, t) { + return I["CgCbY"](n, t) + }, + ZJhiu: function(n, t) { + return I["HWuIR"](n, t) + }, + dLBqf: function(n, t) { + return I.QcglW(n, t) + }, + GEbIe: function(n, t) { + return n & t + }, + ocbJu: function(n, t) { + return I["IenfU"](n, t) + }, + VMAjX: function(n, t) { + return I["kRIWH"](n, t) + }, + brOil: function(n, t) { + return I.RaIAs(n, t) + }, + XPTDO: function(n, t) { + return I["TLybH"](n, t) + }, + tGcUb: function(n, t) { + return I.cZkfp(n, t) + }, + Texck: function(n, t) { + return I.QfxdE(n, t) + }, + WAyln: '4|3|2|0|1', + JAeKU: function(n, t) { + return I["keUrN"](n, t) + }, + bgYtZ: function(n, t) { + return I.NktuR(n, t) + }, + qPWBi: function(n, t) { + return I["WZioj"](n, t) + }, + iKYFT: function(n, t) { + return I["XYboy"](n, t) + }, + FixQy: function(n, t) { + return n & t + }, + pYvMj: function(n, t) { + return I["UBzpF"](n, t) + }, + xJXVn: function(n, t) { + return I["LtAyD"](n, t) + }, + CEVPp: function(n, t) { + return n & t + }, + ReQVG: function(n, t) { + return I["UBzpF"](n, t) + }, + hQKPq: function(n, t) { + return I.VnlUj(n, t) + }, + NoXzg: function(n, t) { + return I["pwhAw"](n, t) + }, + XTFhn: function(n, t) { + return I["VePBf"](n, t) + }, + xBsCe: function(n, t) { + return I["HTlgi"](n, t) + }, + aXLqh: function(n, t) { + return n << t + }, + pXekF: function(n, t) { + return I["RjFQm"](n, t) + }, + DsnRW: function(n, t) { + return I["KRTmi"](n, t) + }, + nWPKA: function(n, t) { + return I.JRrCe(n, t) + }, + FvyKj: function(n, t) { + return I["pYrBQ"](n, t) + }, + iVpri: function(n, t) { + return I["ABBdW"](n, t) + }, + vrhgA: function(n, t) { + return I["ekeqp"](n, t) + }, + xmWfR: function(n, t) { + return I["fRCAR"](n, t) + }, + yerGp: function(n, t) { + return I["ZwtgZ"](n, t) + }, + FLzer: function(n, t) { + return I["WeCKB"](n, t) + }, + vkhGs: function(n, t) { + return n & t + }, + ooTnT: function(n, t) { + return I.RaIAs(n, t) + }, + kUAAS: function(n, t) { + return I["HpTXn"](n, t) + }, + hvHcp: function(n, t) { + return I["HUFrw"](n, t) + } + }, + h = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', + g = function(n) { + return t + }, + U = function(n) { + for (var t, e, r, o = X, + i = new Array(0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964), + u = new Array(0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697), + c = new Array(0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272), + a = new Array(0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144), + f = new Array(0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256), + s = new Array(0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488), + l = new Array(0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746), + v = new Array(0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568), + p = new Array(0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578), + d = new Array(0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488), + h = new Array(0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800), + g = new Array(0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744), + y = new Array(0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128), + w = new Array(0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261), + m = I["KzYvT"](n["length"], 8) ? 3 : 1, + x = new Array(I["XdDjW"](32, m)), + b = new Array(0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0), + T = 0, + S = 0, + C = 0; + I.cZkfp(C, m); C++) + for (var E = ['25', '0', '23', '7', '17', '16', '4', '9', '13', '10', '3', '15', '14', '1', '5', '19', '18', '22', '26', '24', '8', '2', '11', '20', '21', '6', '12'], A = 0; ; ) { + // 控制流平坦化 + switch (E[A++]) { + case "0": + var B = n.charCodeAt(T++) << 24 | I["QcglW"](n["charCodeAt"](T++), 16) | I.QcglW(n.charCodeAt(T++), 8) | n["charCodeAt"](T++); + continue; + case "1": + B ^= I["QcglW"](r, -16); + continue; + case "2": + B ^= r; + continue; + case "3": + O ^= I["QcglW"](r, 2); + continue; + case "4": + O ^= r; + continue; + case "5": + r = I["xGwfM"](I["pSREF"](O >>> 1, B), 1431655765); + continue; + case "6": + B = r; + continue; + case "7": + B ^= r; + continue; + case "8": + r = I["WeCKB"](I.pSREF(I.LtAyD(O, 1), B), 1431655765); + continue; + case "9": + B ^= I["QcglW"](r, -16); + continue; + case "10": + B ^= r; + continue; + case "11": + O ^= r << 1; + continue; + case "12": + for (var k = 0; k < b["length"]; k++) + B = b[k] ? (O = I["TLybH"](O, 2) | I["utkMS"](O, 26), + I["QcglW"](B, 2) | I["LtAyD"](B, 26)) : (O = I["jbUcg"](O << 1, I["TqbuK"](O, 27)), + I["vJxfn"](B << 1, I.TqbuK(B, 27))), + O &= -15, + B &= -15, + t = I["RFSIx"](I.iBKMw(I.RFSIx(I["iezfU"](I["iezfU"](i[I.tkPoM(O, 28)], u[I["UBzpF"](I["BKnIZ"](O, 24), 15)]), c[O >>> 20 & 15]), a[15 & I.TqbuK(O, 16)]), f[I["xGwfM"](I["BKnIZ"](O, 12), 15)]), s[I["fzIKl"](O >>> 8, 15)]) | l[I["fzIKl"](I.uFaBa(O, 4), 15)], + e = I["xWsjD"](I["rMtuY"](I["nzqwS"](I.RFSIx(v[B >>> 28], p[I.xGwfM(I["RaIAs"](B, 24), 15)]), d[I.sekvQ(I["chCjH"](B, 20), 15)]), h[I["OhkZO"](B >>> 16, 15)]), g[I["JvHkh"](B >>> 12, 15)]) | y[I.fzIKl(I["chCjH"](B, 8), 15)] | w[I["EVsUu"](I["LtAyD"](B, 4), 15)], + r = I["wHpTz"](I["raCsD"](I["ABBdW"](e, 16), t), 65535), + x[S++] = I["HWuIR"](t, r), + x[S++] = I.raCsD(e, r << 16); + continue; + case "13": + r = I.ZwtgZ(I["raCsD"](I["TqbuK"](O, 2), B), 858993459); + continue; + case "14": + O ^= r; + continue; + case "15": + r = I["JvHkh"](I.pSREF(I["nTNmp"](B, -16), O), 65535); + continue; + case "16": + r = I["WeCKB"](I["pSREF"](B >>> -16, O), 65535); + continue; + case "17": + O ^= I["TLybH"](r, 4); + continue; + case "18": + O ^= I["QcglW"](r, 1); + continue; + case "19": + B ^= r; + continue; + case "20": + r = I.xWsjD(I["VnlUj"](O, 8), B >>> 20 & 240); + continue; + case "21": + O = I["fwvBa"](I["WZioj"](B << 24, I.fzIKl(I["VnlUj"](B, 8), 16711680)) | I["ffAAl"](I["chCjH"](B, 8), 65280), I.WeCKB(I["HTlgi"](B, 24), 240)); + continue; + case "22": + r = 16711935 & (I["BeRtJ"](B, 8) ^ O); + continue; + case "23": + r = I["JvHkh"](I["pSREF"](I["CgCbY"](O, 4), B), 252645135); + continue; + case "24": + B ^= I["BYwiT"](r, 8); + continue; + case "25": + var O = I["viRaN"](I.pDGks(I["QcglW"](n["charCodeAt"](T++), 24), I.XcXsG(n.charCodeAt(T++), 16)), I["zHSLP"](n["charCodeAt"](T++), 8)) | n.charCodeAt(T++); + continue; + case "26": + O ^= r; + continue + } + break + } + return x + }; + return e = "G89CfW4k", + r = t, + i = base64_t, + I["uPhZo"](function(n, t, e) { + for (var r = X, o = '18|1|2|13|22|16|7|5|3|14|17|6|15|20|21|19|0|12|4|11|8|9|10'["split"]("|"), i = 0; ; ) { + switch (o[i++]) { + case "0": + w = 3 == j ? H["xbaxX"](e, H["KRHyI"]) ? new Array(0,32,2) : new Array(30,-2,-2) : H.qApBh(e, H["KRHyI"]) ? new Array(0,32,2,62,30,-2,64,96,2) : new Array(94,62,-2,32,64,2,30,-2,-2); + continue; + case "1": + if (H["QTrlt"](e, H.KhoyT)) { + for (var u = "", c = H.Plrzb(t["substr"](0, 2), "0x") ? 2 : 0; c < t["length"]; c += 2) + u += String["fromCharCode"](H.Xusqg($.a, t["substr"](c, 2), 16)); + R = u + } + continue; + case "2": + var a = new Array(16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756); + continue; + case "3": + var f = new Array(2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154); + continue; + case "4": + var s = ""; + continue; + case "5": + var l = new Array(536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312); + continue; + case "6": + var v, p, d, h, g, y, w, m = 0; + continue; + case "7": + var x = new Array(256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080); + continue; + case "8": + var b = H["FbmlO"](k, s); + continue; + case "9": + if (H["zYNsf"](e, "encrypt")) { + var T = "" + , + S = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); + + for (c = 0; H.IBqmw(c, b["length"]); c++) + T += H["WuFrg"](S[H.kIzDb(b["charCodeAt"](c), 4)], S[H["RQUUn"](b["charCodeAt"](c), 15)]); + return T + } + continue; + case "10": + return k + s; + case "11": + for (; H.SwLvn(m, D); ) { + for (g = H["rrkrE"](H["rrkrE"](H["kczHm"](R["charCodeAt"](m++), 24) | H["kczHm"](R["charCodeAt"](m++), 16), H["kczHm"](R["charCodeAt"](m++), 8)), R["charCodeAt"](m++)), + y = H["PdMPZ"](H["kczHm"](R["charCodeAt"](m++), 24) | H["bQuHD"](R["charCodeAt"](m++), 16) | R["charCodeAt"](m++) << 8, R["charCodeAt"](m++)), + y ^= p = H["aCyUS"](H.LrTHY(g >>> 4, y), 252645135), + g ^= H["kcUQB"](p, 4), + y ^= p = H.RQUUn(H["LrTHY"](H.tZrYs(g, 16), y), 65535), + g ^= H["kcUQB"](p, 16), + g ^= p = 858993459 & H["ZJhiu"](y >>> 2, g), + y ^= H["dLBqf"](p, 2), + g ^= p = H["GEbIe"](H["tZrYs"](y, 8) ^ g, 16711935), + y ^= H.dLBqf(p, 8), + y ^= p = H["ocbJu"](H["LrTHY"](H["VMAjX"](g, 1), y), 1431655765), + g ^= p << 1, + g = H["rrkrE"](H["dLBqf"](g, 1), H["brOil"](g, 31)), + y = H["XPTDO"](y, 1) | y >>> 31, + v = 0; H["tGcUb"](v, j); v += 3) + for (var C = "4|5|2|1|3|0".split("|"), E = 0; ; ) { + switch (C[E++]) { + case "0": + y = p; + continue; + case "1": + p = g; + continue; + case "2": + for (c = w[v]; H.Texck(c, M); c += L) + for (var A = H["WAyln"]["split"]("|"), B = 0; ; ) { + switch (A[B++]) { + case "0": + g = y; + continue; + case "1": + y = H["JAeKU"](p, H["PdMPZ"](H["bgYtZ"](H.qPWBi(H["rrkrE"](H["iKYFT"](O[H.FixQy(H["tZrYs"](d, 24), 63)], P[H.pYvMj(d >>> 16, 63)]) | l[H["FixQy"](H["VMAjX"](d, 8), 63)], I[H["FixQy"](d, 63)]), a[H.RQUUn(h >>> 24, 63)]) | G[H["RQUUn"](H["xJXVn"](h, 16), 63)], x[H["CEVPp"](H["tZrYs"](h, 8), 63)]), f[H["ReQVG"](h, 63)])); + continue; + case "2": + p = g; + continue; + case "3": + h = H["rrkrE"](H["tZrYs"](y, 4), H["hQKPq"](y, 28)) ^ F[H.NoXzg(c, 1)]; + continue; + case "4": + d = H["XTFhn"](y, F[c]); + continue + } + break + } + continue; + case "3": + g = y; + continue; + case "4": + M = w[H.FbmlO(v, 1)]; + continue; + case "5": + L = w[H["FbmlO"](v, 2)]; + continue + } + break + } + g = H.bgYtZ(H.xJXVn(g, 1), g << 31), + y = H["bgYtZ"](H["xBsCe"](y, 1), H.aXLqh(y, 31)), + y ^= p = H.pXekF(H["XTFhn"](g >>> 1, y), 1431655765), + g ^= H["aXLqh"](p, 1), + g ^= p = H["DsnRW"](H["ZJhiu"](H["tZrYs"](y, 8), g), 16711935), + y ^= H["nWPKA"](p, 8), + g ^= p = 858993459 & H["FvyKj"](H["iVpri"](y, 2), g), + y ^= p << 2, + y ^= p = H["pYvMj"](H["FvyKj"](H["vrhgA"](g, 16), y), 65535), + g ^= H["XPTDO"](p, 16), + y ^= p = H.CEVPp(H["xmWfR"](g, 4) ^ y, 252645135), + g ^= H["kczHm"](p, 4), + s += String.fromCharCode(H["brOil"](g, 24), H["DsnRW"](H["xJXVn"](g, 16), 255), H["yerGp"](H["xmWfR"](g, 8), 255), H["FLzer"](g, 255), H["tZrYs"](y, 24), H.vkhGs(H["ooTnT"](y, 16), 255), H["kUAAS"](y >>> 8, 255), H["aCyUS"](y, 255)), + N += 8, + H["hvHcp"](N, 512) && (k += s, + s = "", + N = 0) + } + continue; + case "12": + var k = ""; + continue; + case "13": + var O = new Array(-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344); + continue; + case "14": + var I = new Array(268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696); + continue; + case "15": + var M, L; + continue; + case "16": + var P = new Array(8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928); + continue; + case "17": + var F = U(n); + continue; + case "18": + var R = t; + continue; + case "19": + var j = 32 == F["length"] ? 3 : 9; + continue; + case "20": + var D = R["length"]; + continue; + case "21": + var N = 0; + continue; + case "22": + var G = new Array(520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584); + continue + } + break + } + }, n, base64_t , "encrypt") +} + + + + +function timeStamp2(t) { + var base64_t = Buffer.from(t).toString('base64'); + var sign = l("G89CfW4k", t,base64_t); + console.log(sign); + return sign; +} + + +var params = '{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36","webdriver":false,"language":"zh-CN","colorDepth":24,"deviceMemory":8,"hardwareConcurrency":8,"screenResolution":"1920;1080","availableScreenResolution":"1920;1040","timezoneOffset":-480,"timezone":"Asia/Shanghai","sessionStorage":1,"localStorage":1,"indexedDb":1,"openDatabase":1,"cpuClass":"unknown","platform":"Win32","plugins":["Chrome PDF Plugin::Portable Document Format::application/x-google-chrome-pdf~pdf","Chrome PDF Viewer::::application/pdf~pdf","KGChromePlugin_64.dll::::application/kg-plugin~","Native Client::::application/x-nacl~,application/x-pnacl~"],"canvas":"10cfbbb02b2606dbc2ccb15a3cd2b558","adBlock":false,"hasLiedLanguages":false,"hasLiedResolution":false,"hasLiedOs":false,"hasLiedBrowser":false,"touchSupport":"0;false;false","fonts":"4;7;8","audio":"124.04347527516074"}'; +timeStamp2(params); + + +var params2 = '{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50","webdriver":false,"language":"zh-CN","colorDepth":24,"deviceMemory":8,"hardwareConcurrency":8,"screenResolution":"1920;1080","availableScreenResolution":"1920;1040","timezoneOffset":-480,"timezone":"Asia/Shanghai","sessionStorage":1,"localStorage":1,"indexedDb":1,"openDatabase":1,"cpuClass":"unknown","platform":"Win32","plugins":["Chrome PDF Plugin::Portable Document Format::application/x-google-chrome-pdf~pdf","Chrome PDF Viewer::::application/pdf~pdf","KGChromePlugin_64.dll::::application/kg-plugin~","Native Client::::application/x-nacl~,application/x-pnacl~"],"canvas":"10cfbbb02b2606dbc2ccb15a3cd2b558","adBlock":false,"hasLiedLanguages":false,"hasLiedResolution":false,"hasLiedOs":false,"hasLiedBrowser":false,"touchSupport":"0;false;false","fonts":"4;7;8","audio":"124.04347527516074"}'; +timeStamp2(params2); + +//id = md5 ( sign + "RRq9y03tuV") \ No newline at end of file