├── another_script
├── test_small_fragment.js
├── res_json.json
├── fuck_js.html
├── pinduoduo.py
├── pdd.py
└── SearchGoods - 副本.vue
├── .idea
├── .gitignore
├── vcs.xml
├── inspectionProfiles
│ └── profiles_settings.xml
├── modules.xml
├── misc.xml
└── pdd_spider.iml
├── Workplace
├── chromedriver.exe
├── chromedriver.py
├── get_anticontent.html
├── instruction.md
├── pdd_不登录.py
├── pdd_登录.py
└── 上次可用的文件
│ └── pdd_登录_bk.py
├── 源文件
└── 测试.js
├── 别人的
├── pdd.py
└── antiContent_Js.js
└── README.md
/another_script/test_small_fragment.js:
--------------------------------------------------------------------------------
1 | fuck_l[n[v("0xf5", "eVth")]](u[v("0xe4", "BHlB")](""))
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /workspace.xml
3 | # Default ignored files
4 | /workspace.xml
--------------------------------------------------------------------------------
/Workplace/chromedriver.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jynvch/pdd_spider/HEAD/Workplace/chromedriver.exe
--------------------------------------------------------------------------------
/源文件/测试.js:
--------------------------------------------------------------------------------
1 | window._plt = [
2 | ["tm", "ps", 1564718639663],
3 | ["tm", "fp", 1564718675941],
4 | ];
--------------------------------------------------------------------------------
/another_script/res_json.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jynvch/pdd_spider/HEAD/another_script/res_json.json
--------------------------------------------------------------------------------
/Workplace/chromedriver.py:
--------------------------------------------------------------------------------
1 | from selenium import webdriver
2 |
3 | browser = webdriver.Chrome()
4 | browser.get('http://mobile.yangkeduo.com/search_result.html?search_key=%E6%9C%88%E9%A5%BC')
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/another_script/fuck_js.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | inverse_js
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Workplace/get_anticontent.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | inverse_js
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/pdd_spider.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Workplace/instruction.md:
--------------------------------------------------------------------------------
1 | # 拼多多js解密
2 | const getContent = (search_key, P, F, next_scrollTop_timestamp, user_agent, _nano_fp) => {
3 |
4 | ### search_key
5 | 搜索关键词. e.g. '月饼'
6 |
7 | ### P
8 | 1564808831636
9 | 当前时间的时间戳, 13位数字
10 |
11 | ### F
12 | 另一个时间戳, 在P的基础上加20秒, 13位数字
13 |
14 | ### next_scrollTop_timestamp
15 | 这是python实现的next_scrollTop_timestamp参数的值, 其中E是另一个时间戳, 在P的基础上加10秒, 13位数字
16 | P E F 的值不随翻页而改变
17 |
18 | def yield_scrollTop_timestamp():
19 | data = [
20 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E},
21 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E},
22 | ]
23 | while True:
24 | yield data
25 | data = data[-1:] # 截取最后一个,作为下一次的第一个值
26 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E})
27 |
28 | 第一次请求 传入下面这个数组即可
29 | [{'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E},
30 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E}]
31 |
32 | 以后每次请求, 数组第一个值为上一次的最后一个值, 第二个值的scrollTop加3000, timestamp用当前时间戳-E即可
33 |
34 |
35 | ### user_agent
36 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
37 | 传入请求头里的user_agent即可
38 |
39 |
40 | ### _nano_fp
41 | "Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L"
42 | 传入cookie里_nano_fp的值
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/another_script/pinduoduo.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import re
3 | import execjs
4 | from urllib.request import quote # py3: from urllib import quote 会失败
5 |
6 | headers = {
7 | 'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
8 | "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
9 | }
10 | with open('get_anticontent.js', 'r', encoding='utf-8') as f:
11 | js = f.read()
12 |
13 | key_name = quote('情侣衣服') # 搜索的关键字
14 | url = 'http://yangkeduo.com/search_result.html?search_key=' + key_name
15 |
16 | response = requests.get(url, headers=headers)
17 | list_id = re.search('"listID":"([^"]+)"', response.text).group(1)
18 | flip = re.search('"flip":"([^"]+)"', response.text).group(1)
19 |
20 | ctx = execjs.compile(js)
21 | anti_content = ctx.call('get_anti', url)
22 | # 获取下一页
23 | next_url = 'http://apiv3.yangkeduo.com/search?page={0}&size=50&sort=default&requery=0&list_id={1}&q={2}&flip={3}&anti_content={4}&pdduid=0'
24 | # 获取下一页的参数有这几个,其中第一个参数为页数,最后一个参数为加密参数,其他的从搜索页第一页获取,上面代码获取,都是不变的
25 | r = requests.get(next_url.format(2, list_id, key_name, flip, anti_content), headers=headers)
26 | print(r.text)
27 |
28 | # 不断获取下一页
29 | # def get_next_page(page, url):
30 | # ctx = execjs.compile(js)
31 | # anti_content = ctx.call('get_anti', url) # 每一页的anti-content 都不一样
32 | # url = next_url.format(page, list_id, key_name, flip, anti_content)
33 | # r = requests.get(url, headers=headers)
34 | # for item in r.json()['items']:
35 | # print(item)
36 | #
37 | #
38 | # for i in range(2, 11):
39 | # get_next_page(i, url)
40 |
--------------------------------------------------------------------------------
/别人的/pdd.py:
--------------------------------------------------------------------------------
1 | import requests
2 | from lxml import etree
3 | import json
4 | import urllib.parse
5 | from antiContent_Js import js
6 | import execjs
7 |
8 |
9 | def get_next_msg(html):
10 | parse_html = etree.HTML(html)
11 | data = json.loads(parse_html.xpath('//script[@id="__NEXT_DATA__"]/text()')[0])
12 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \
13 | data['props']['pageProps']['data']['ssrListData']['flip']
14 | req_params = dict(json.loads(req_params), **{"flip": flip})
15 | return req_params
16 |
17 |
18 | def get_anticontent(q):
19 | ctx = execjs.compile(js)
20 | anti_content = ctx.call('result', q)
21 | return anti_content
22 |
23 |
24 | def get_json_msg(session, req_params):
25 | url = "http://mobile.yangkeduo.com/proxy/api/search"
26 | headers = {
27 | 'Host': 'mobile.yangkeduo.com',
28 | 'Connection': 'keep-alive',
29 | 'AccessToken': '',
30 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
31 | 'VerifyAuthToken': 'oUa4c7ABPA_2S-6i_70a6w',
32 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
33 | 'Accept': '*/*',
34 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(req_params['q']),
35 | 'Accept-Encoding': 'gzip, deflate',
36 | 'Accept-Language': 'zh-CN,zh;q=0.9',
37 | 'Cookie': 'api_uid=rBUoFl0B72BSXB6ppHvaAg=='
38 |
39 | }
40 | flip_temp = ''
41 | for page in range(2, 5):
42 | anti_content = get_anticontent(headers['Referer'])
43 | params = dict(req_params, **{"anti_content": anti_content, "pdduid": ""})
44 | params['page'] = page
45 | if page != 2:
46 | params['flip'] = flip_temp
47 | res = session.get(url, headers=headers, params=params)
48 | # print(res.text)
49 | flip_temp = res.json()['flip']
50 | with open('res_json.json', 'a', encoding='GBK') as f:
51 | f.write(res.text)
52 | f.write('\n\n')
53 |
54 |
55 | def get_data():
56 | session = requests.session()
57 | url = "http://mobile.yangkeduo.com/search_result.html?search_key=学生文具用品笔"
58 | headers = {
59 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
60 | 'Accept-Encoding': 'gzip, deflate',
61 | 'Accept-Language': 'zh-CN,zh;q=0.9',
62 | 'Connection': 'keep-alive',
63 | 'Host': 'mobile.yangkeduo.com',
64 | 'Upgrade-Insecure-Requests': '1',
65 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
66 | }
67 | res = session.get(url, headers=headers)
68 | req_params = get_next_msg(res.text)
69 | # print(req_params)
70 | get_json_msg(session, req_params)
71 |
72 |
73 | if __name__ == '__main__':
74 | get_data()
75 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # pdd_spider
2 | 通过requests方式请求获得拼多多h5页面异步加载的信息,
3 | http://mobile.yangkeduo.com/search_result.html?search_key=%E6%9C%88%E9%A5%BC
4 |
5 | 查找加密位置:
6 |
7 | [找加密位置](https://sergiojune.com/2019/03/26/pinduoduo_anti_content/)
8 |
9 | [通过F11逐步查找](https://www.cnblogs.com/pupilheart/p/11065797.html)
10 |
11 | 在GoodList.js下搜 getAntiContent,
12 | 在case 0到case 4之间他已经加密完成了,
13 | 接下来就再一次在case 0到case 4之间一直按F11观察情况了。
14 | 在GoodList.js的第482行, 进入RiskControl.js
15 | case 3:
16 | return t = e.sent,
17 | e.abrupt("return", t.messagePackSync());
18 | 此时e的值为
19 | e = {
20 | arg: Dt {}
21 | delegate: null
22 | done: false
23 | method: "next"
24 | next: 3
25 | prev: 3
26 | sent: Dt {}
27 | tryEntries: (2) [{…}, {…}]
28 | _sent: Dt {}
29 | __proto__: Object
30 | }
31 | 然后按着按着就来到了RiskControl.js的1260行
32 | Dt[v("0x108", "([hh")][v("0x109", "*B)d")] = function() { // v("0x108", "([hh")为prototype, v("0x109", "*B)d")为messagePackSync
33 | var t = {};
34 | return t[v("0x10a", "Tadf")] = function(t, n) {
35 | return t(n)
36 | }
37 |
38 | RiskControl.js里
39 | 13个变量大部分都是在第一页的时候执行了初始化, 翻页的时候不再初始化,
40 | 有几个变量是每次都初始化一次,
41 | Dt[v("0xff", "%ilK")][v("0x100", "@!cA")] = function(t) { // v("0xff", "%ilK")为prototype,v("0x100", "@!cA")为updateServerTime
42 | F = G[m](),
43 | P = t
44 | }
45 |
46 | 涉及到js解密, 主要解决anti_content参数
47 | 简单说一下 这个算法: 它获取了href,push,屏幕宽高,打开网页的时间,当前时间戳,使用math随机生成一个与时间有关的字符串,Referer,User-Agent 等等,
48 |
49 | 拼多多策略修改, 列表页及搜索页都需要在请求头中加 'AccessToken': "登录后的 token", 才可以访问!!!
50 | 或者 IP 质量较好,直接访问也是可以获取数据的!!!
51 | 拼多多对请求的请求头检查比较严格
52 | 如图 ,我见过拼多多所有系列都是用的同一套加密方式,有个0a开头。加密是他自己写的一套加密方式,涉及到的加密参数有:鼠标点击位置、href、ua、cookie和时间戳
53 |
54 | {
55 | key: "initRiskController",
56 | value: function() {
57 | this.riskControlCrawler || (this.riskControlCrawler = new n.a({
58 | serverTime: this.serverTime,
59 | _2827c887a48a351a: !1
60 | }),
61 | this.riskControlCrawler.init())
62 | }
63 | }
64 | 爬虫控制风险,看名字就知道不简单,这里先做了一次初始化,初始化的时候记录了一个serverTime的时间戳,而且以后的每一次下拉页面都有拿时间作比较.等等…
65 |
66 | js破解之再战pdd(搜索商品列表页anti_content参数破解)(不是吧,好像历时一天多就凉了?)
67 | 2019-07-01 测试发现,单个ip若首次使用示例py代码调用为不成功时,此时使用浏览器访问搜索链接则需要登录,此时用户完成登录,后再使用py示例代码调用则正确返回数据。(猜测ip与用户登录态存在某些权重绑定,欢迎大家测试)(测试环境为本机ip,本机chrome浏览器)
68 | 2019-07-05 测试发现,首先用浏览器成功访问一下pdd的搜索,不管是登录也好,滑块也罢,只要浏览器能成功展示页面,此时使用py代码调用亦可成功。(还是猜测ip存在某些权重绑定,需要验证一下)(测试环境为本机ip,本机chrome浏览器)
69 | 特殊说明:本人测试同一anti_content有效调用次数为2次,目前ip限制较为严重,但代理不在本文讨论之列,请合理安排策略
70 |
71 | 嗯,最近跟风在看pdd的那个anti参数,扣代码的各位有没有头大😂。大致看了一下,随便说两句,仿照webpackJsonp打包的方式,去处理模块,保留那个i函数和数组内好像大约19个函数,这样就不用考虑模块间的引用问题,处理下异常就好了,也就是url,cookie和一个浏览器宽高的数值,然后找到目标模块,把目标函数的返回值return出来,也就达到所谓的秒破效果了。
72 |
73 | 增加浏览器scrollTop和一个timestamp检测,scrollTop就不说了,稍微提一下timestamp,timestamp是触发ajax时的一个Date.now()-J的差值(ps:J的值为js加载的时候记录的一个时间戳也是由Date.now()得到),类似于这样
74 | var st = {};
75 | st['data'] = [
76 | {"scrollTop": 1.5, "timestamp": 954},
77 | {"scrollTop": 13.5, "timestamp": 966},
78 | {"scrollTop": 43.5, "timestamp": 1015},
79 | {"scrollTop": 174, "timestamp": 1029},
80 | {"scrollTop": 457.5, "timestamp": 1055}];
81 |
82 |
83 | 参考文章:
84 | https://zhuanlan.zhihu.com/p/64242695
85 | https://blog.csdn.net/weixin_44472296/article/details/92181707
86 | [Js解密](https://sergiojune.com/2019/04/10/how_to_code/)
87 |
88 |
--------------------------------------------------------------------------------
/another_script/pdd.py:
--------------------------------------------------------------------------------
1 | import requests
2 | from lxml import html
3 | import json
4 | import urllib.parse
5 | import execjs
6 |
7 | """
8 | 使用基于 Token 的身份验证方法,大概的流程是这样的:
9 | 1. 客户端使用用户名跟密码请求登录
10 | 2. 服务端收到请求,去验证用户名与密码
11 | 3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
12 | 4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
13 | 5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
14 | 6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
15 |
16 | 总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,
17 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。
18 | """
19 | cookies = {
20 | ' PDDAccessToken': 'TS3PENFODKSZRTJVRK6MJ6INWF6WYXWLV2TDIUVUSQIINQJ5TKGQ102e177',
21 | ' _nano_fp': 'Xpdjn0Tolp9JnqTqXT_00tbGBlJQr7tqieXhl6_1',
22 | 'api_uid': 'rBQFFF09DZ2SYjQcFPR2Ag==',
23 | ' goods_detail': 'goods_detail_xvWOXv',
24 | ' goods_detail_mall': 'goods_detail_mall_Omt5sQ',
25 | ' msec': '1800000',
26 | ' pdd_user_id': '4277963319009',
27 | ' pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA',
28 | ' ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36',
29 | ' webp': '1',
30 | }
31 |
32 |
33 | def get_anticontent(q): # 只需要传一个 搜索页的 url 即可
34 | # ctx = execjs.compile(js)
35 | # anti_content = ctx.call('result', q)
36 | anti_content = input("输入anti_content: ")
37 | return anti_content
38 |
39 |
40 | def query_second_page(session, req_params):
41 | url = "http://mobile.yangkeduo.com/proxy/api/search"
42 | headers = {
43 | 'Accept': '*/*',
44 | 'Accept-Encoding': 'gzip, deflate',
45 | 'Accept-Language': 'zh-CN,zh;q=0.9',
46 | 'AccessToken': 'TS3PENFODKSZRTJVRK6MJ6INWF6WYXWLV2TDIUVUSQIINQJ5TKGQ102e177',
47 | 'Connection': 'keep-alive',
48 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
49 | 'Host': 'mobile.yangkeduo.com',
50 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(req_params['q']),
51 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
52 | 'VerifyAuthToken': 'c0dZLte5V81nRIainPtbRw',
53 | }
54 | flip_temp = ''
55 | anti_content = get_anticontent(headers['Referer'])
56 | for page in range(2, 3):
57 | # print('anti_content', anti_content)
58 | params = dict(req_params, **{"anti_content": anti_content})
59 | params['page'] = page
60 | if page != 2:
61 | params['flip'] = flip_temp
62 | print('params', params)
63 | res = session.get(url, headers=headers, params=params)
64 | print(res.status_code, res.text)
65 | flip_temp = res.json()['flip']
66 | with open('res_json.json', 'a', encoding='GBK') as f:
67 | f.write(res.text)
68 | f.write('\n\n')
69 |
70 |
71 | def query_first_page():
72 | session = requests.session()
73 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key=月饼'
74 | headers = {
75 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
76 | 'Accept-Encoding': 'gzip, deflate',
77 | 'Accept-Language': 'zh-CN,zh;q=0.9',
78 | 'Connection': 'keep-alive',
79 | 'Host': 'mobile.yangkeduo.com',
80 | 'Upgrade-Insecure-Requests': '1',
81 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
82 | }
83 | session.cookies.update(cookies)
84 | res = session.get(url, headers=headers)
85 | tree = html.fromstring(res.text)
86 | # with open('first_page.html', 'w', encoding='utf-8') as f:
87 | # f.write(res.text)
88 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0])
89 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \
90 | data['props']['pageProps']['data']['ssrListData']['flip']
91 | req_params = dict(json.loads(req_params), **{"flip": flip})
92 | query_second_page(session, req_params)
93 |
94 |
95 | if __name__ == '__main__':
96 | query_first_page()
97 | # with open('get_anticontent.js', encoding='utf-8') as f:
98 | # js = f.read()
99 | # ctx = execjs.compile(js)
100 | # anti_content = ctx.call('start')
101 |
--------------------------------------------------------------------------------
/Workplace/pdd_不登录.py:
--------------------------------------------------------------------------------
1 | """
2 | 不登陆
3 | """
4 | import os
5 | import time
6 |
7 | import requests
8 | from lxml import html
9 | import json
10 | import urllib.parse
11 | import execjs
12 |
13 | """
14 | 使用基于 Token 的身份验证方法,大概的流程是这样的:
15 | 1. 客户端使用用户名跟密码请求登录
16 | 2. 服务端收到请求,去验证用户名与密码
17 | 3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
18 | 4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
19 | 5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
20 | 6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
21 |
22 | 总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,
23 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。
24 | """
25 | cookies = {
26 | '_nano_fp': 'Xpdjn0EylpgxX0TblT_Ck2gblydHufJpSZGHsEc7',
27 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==',
28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36',
29 | 'webp': '1',
30 | }
31 | headers = {
32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
33 | 'Accept-Encoding': 'gzip, deflate',
34 | 'Accept-Language': 'zh-CN,zh;q=0.9',
35 | 'Cache-Control': 'no-cache',
36 | 'Connection': 'keep-alive',
37 | 'Host': 'mobile.yangkeduo.com',
38 | 'Upgrade-Insecure-Requests': '1',
39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
40 | }
41 |
42 |
43 | def get_anticontent(search_key, cookie_dict, user_agent):
44 | with open('get_anticontent.js', encoding='utf-8') as f:
45 | js = f.read()
46 | ctx = execjs.compile(js)
47 | # 处理cookie_dict, 转为cookie_arr
48 | cookie_arr = []
49 | for key, value in cookie_dict.items():
50 | cookie_arr.append(' ' + key + '=' + value)
51 | print('传入js的参数', 'search_key:', search_key)
52 | print('传入js的参数', 'cookie_arr:', cookie_arr)
53 | print('传入js的参数', 'user_agent:', user_agent)
54 | anti_content = ctx.call('getContent', search_key, cookie_arr, user_agent)
55 | return anti_content
56 |
57 |
58 | def query_second_page(key, session, req_params):
59 | headers.update({
60 | 'Accept': '*/*',
61 | 'AccessToken': '',
62 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
63 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key),
64 | 'VerifyAuthToken': 'rKx3sBDN7CtHa3-bn--g_A',
65 | })
66 | session.cookies.update(cookies)
67 | flip_temp = ''
68 | for page in range(2, 10):
69 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent'])
70 | # anti_content = input("请输入anti_content:")
71 | req_params.update({"anti_content": anti_content})
72 | req_params['page'] = page
73 | if page != 2:
74 | req_params['flip'] = flip_temp
75 | print('第 {} 页的请求头 '.format(page), req_params)
76 | url = "http://mobile.yangkeduo.com/proxy/api/search"
77 | while True:
78 | try:
79 | res = session.get(url, headers=headers, params=req_params)
80 | except Exception as e:
81 | print('出现异常')
82 | print(e)
83 | time.sleep(5)
84 | else:
85 | if res.status_code != 200:
86 | print(res.status_code, res.json())
87 | time.sleep(5)
88 | else:
89 | break
90 |
91 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie'])
92 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text)
93 | flip_temp = res.json()['flip']
94 | # with open('res_json.json', 'a', encoding='GBK') as f:
95 | # f.write(res.text)
96 | # f.write('\n\n')
97 | time.sleep(5)
98 |
99 |
100 | def query_first_page(key):
101 | session = requests.session()
102 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key)
103 | res = session.get(url, headers=headers)
104 | tree = html.fromstring(res.text)
105 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0])
106 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \
107 | data['props']['pageProps']['data']['ssrListData']['flip']
108 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 0})
109 | return session, req_params
110 |
111 |
112 | def query(key):
113 | session, req_params = query_first_page(key)
114 | query_second_page(key, session, req_params)
115 |
116 |
117 | if __name__ == '__main__':
118 | search_key = "月饼"
119 | query(search_key)
120 |
121 | # with open('get_anticontent.js', encoding='utf-8') as f:
122 | # js = f.read()
123 | # os.environ['EXECJS_RUNTIME'] = "Node"
124 | # ctx = execjs.compile(js)
125 | # anti_content = ctx.call('start')
126 |
--------------------------------------------------------------------------------
/Workplace/pdd_登录.py:
--------------------------------------------------------------------------------
1 | import os
2 | import time
3 |
4 | import requests
5 | from lxml import html
6 | import json
7 | import urllib.parse
8 | import execjs
9 |
10 | """
11 | 使用基于 Token 的身份验证方法,大概的流程是这样的:
12 | 1. 客户端使用用户名跟密码请求登录
13 | 2. 服务端收到请求,去验证用户名与密码
14 | 3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
15 | 4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
16 | 5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
17 | 6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
18 |
19 | 总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,
20 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。
21 | """
22 | cookies = {
23 | 'PDDAccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177',
24 | '_nano_fp': 'Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L',
25 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==',
26 | 'pdd_user_id': '4277963319009',
27 | 'pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA',
28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36',
29 | 'webp': '1',
30 | }
31 | headers = {
32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
33 | 'Accept-Encoding': 'gzip, deflate',
34 | 'Accept-Language': 'zh-CN,zh;q=0.9',
35 | 'Cache-Control': 'no-cache',
36 | 'Connection': 'keep-alive',
37 | 'Host': 'mobile.yangkeduo.com',
38 | 'Upgrade-Insecure-Requests': '1',
39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
40 | }
41 |
42 | P = int(time.time() * 1000) - 20 * 1000
43 | E = P + 10 * 1000
44 | F = P + 20 * 1000
45 |
46 |
47 | def yield_scrollTop_timestamp():
48 | data = [
49 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E},
50 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E},
51 | ]
52 | while True:
53 | yield data
54 | data = data[-1:] # 截取最后一个,作为下一次的第一个值
55 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E})
56 |
57 |
58 | next_scrollTop_timestamp = yield_scrollTop_timestamp()
59 |
60 |
61 | def get_anticontent(search_key, cookie_dict, user_agent):
62 | with open('get_anticontent.js', encoding='utf-8') as f:
63 | js = f.read()
64 | ctx = execjs.compile(js)
65 |
66 | scrollTop_timestamp = next(next_scrollTop_timestamp)
67 |
68 | print('传入js的参数', 'search_key:', search_key)
69 | print('传入js的参数', 'P:', P)
70 | print('传入js的参数', 'F:', F)
71 | print('传入js的参数', 'scrollTop_timestamp:', scrollTop_timestamp)
72 | print('传入js的参数', 'user_agent:', user_agent)
73 | print('传入js的参数', '_nano_fp:', cookie_dict['_nano_fp'])
74 |
75 | anti_content = ctx.call('getContent',
76 | search_key, # 查询关键词
77 | P, # 时间戳
78 | F, # 时间戳
79 | scrollTop_timestamp, # 向下滚动
80 | user_agent, # UA
81 | cookie_dict['_nano_fp'])
82 | return anti_content
83 |
84 |
85 | def query_second_page(key, session, req_params):
86 | headers.update({
87 | 'Accept': '*/*',
88 | 'AccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', # 貌似跟cookie里的PDDAccessToken一样
89 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
90 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key),
91 | 'VerifyAuthToken': 'UyLUw5WRIhP4WmEG_anvLw',
92 | })
93 | session.cookies.update(cookies)
94 | flip_temp = ''
95 | for page in range(2, 25):
96 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent'])
97 | # anti_content = input("请输入anti_content:")
98 | req_params.update({"anti_content": anti_content})
99 | req_params['page'] = page
100 | if page != 2:
101 | req_params['flip'] = flip_temp
102 | print('第 {} 页的请求头 '.format(page), req_params)
103 | url = "http://mobile.yangkeduo.com/proxy/api/search"
104 | res = session.get(url, headers=headers, params=req_params)
105 |
106 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie'])
107 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text)
108 | flip_temp = res.json()['flip']
109 | print(end='\n\n')
110 | # with open('res_json.json', 'a', encoding='GBK') as f:
111 | # f.write(res.text)
112 | # f.write('\n\n')
113 | time.sleep(3)
114 |
115 |
116 | def query_first_page(key):
117 | session = requests.session()
118 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key)
119 | res = session.get(url, headers=headers, cookies=cookies)
120 | tree = html.fromstring(res.text)
121 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0])
122 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \
123 | data['props']['pageProps']['data']['ssrListData']['flip']
124 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 4277963319009})
125 | print(req_params)
126 | return session, req_params
127 |
128 |
129 | def query(key):
130 | session, req_params = query_first_page(key)
131 | query_second_page(key, session, req_params)
132 |
133 |
134 | if __name__ == '__main__':
135 | search_key = "饼干"
136 | query(search_key)
137 |
138 | # with open('get_anticontent.js', encoding='utf-8') as f:
139 | # js = f.read()
140 | # os.environ['EXECJS_RUNTIME'] = "Node"
141 | # ctx = execjs.compile(js)
142 | # anti_content = ctx.call('start')
143 |
--------------------------------------------------------------------------------
/Workplace/上次可用的文件/pdd_登录_bk.py:
--------------------------------------------------------------------------------
1 | import os
2 | import time
3 |
4 | import requests
5 | from lxml import html
6 | import json
7 | import urllib.parse
8 | import execjs
9 |
10 | """
11 | 使用基于 Token 的身份验证方法,大概的流程是这样的:
12 | 1. 客户端使用用户名跟密码请求登录
13 | 2. 服务端收到请求,去验证用户名与密码
14 | 3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
15 | 4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
16 | 5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
17 | 6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
18 |
19 | 总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,
20 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。
21 | """
22 | cookies = {
23 | 'PDDAccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177',
24 | '_nano_fp': 'Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L',
25 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==',
26 | 'pdd_user_id': '4277963319009',
27 | 'pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA',
28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36',
29 | 'webp': '1',
30 | }
31 | headers = {
32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
33 | 'Accept-Encoding': 'gzip, deflate',
34 | 'Accept-Language': 'zh-CN,zh;q=0.9',
35 | 'Cache-Control': 'no-cache',
36 | 'Connection': 'keep-alive',
37 | 'Host': 'mobile.yangkeduo.com',
38 | 'Upgrade-Insecure-Requests': '1',
39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
40 | }
41 |
42 | P = int(time.time() * 1000)
43 | E = P + 10 * 1000
44 | F = P + 20 * 1000
45 |
46 |
47 | def yield_scrollTop_timestamp():
48 | data = [
49 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E},
50 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E},
51 | ]
52 | while True:
53 | yield data
54 | data = data[-1:] # 截取最后一个,作为下一次的第一个值
55 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E})
56 |
57 |
58 | next_scrollTop_timestamp = yield_scrollTop_timestamp()
59 |
60 |
61 | def get_anticontent(search_key, cookie_dict, user_agent):
62 | with open('get_anticontent.js', encoding='utf-8') as f:
63 | js = f.read()
64 | ctx = execjs.compile(js)
65 | # 提取cookie中的_nano_fp
66 | _nano_fp = cookie_dict['_nano_fp']
67 | # 处理cookie_dict, 转为cookie_arr
68 | cookie_arr = [' _nano_fp=' + cookie_dict['_nano_fp']]
69 |
70 | # for key, value in cookie_dict.items():
71 | # cookie_arr.append(' ' + key + '=' + value)
72 | print('传入js的参数', 'search_key:', search_key)
73 | print('传入js的参数', 'cookie_arr:', cookie_arr)
74 | print('传入js的参数', 'user_agent:', user_agent)
75 | print('传入js的参数', '_nano_fp:', _nano_fp)
76 | print('传入js的参数', 'P:', P)
77 | print('传入js的参数', 'F:', F)
78 | scrollTop_timestamp = next(next_scrollTop_timestamp)
79 | print('传入js的参数', 'scrollTop_timestamp:', scrollTop_timestamp)
80 |
81 | anti_content = ctx.call('getContent',
82 | search_key,
83 | cookie_arr, user_agent, _nano_fp, P, F, scrollTop_timestamp)
84 | return anti_content
85 |
86 |
87 | def query_second_page(key, session, req_params):
88 | headers.update({
89 | 'Accept': '*/*',
90 | 'AccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', # 貌似跟cookie里的PDDAccessToken一样
91 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
92 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key),
93 | 'VerifyAuthToken': 'UyLUw5WRIhP4WmEG_anvLw',
94 | })
95 | session.cookies.update(cookies)
96 | flip_temp = ''
97 | for page in range(2, 25):
98 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent'])
99 | # anti_content = input("请输入anti_content:")
100 | req_params.update({"anti_content": anti_content})
101 | req_params['page'] = page
102 | if page != 2:
103 | req_params['flip'] = flip_temp
104 | print('第 {} 页的请求头 '.format(page), req_params)
105 | url = "http://mobile.yangkeduo.com/proxy/api/search"
106 | res = session.get(url, headers=headers, params=req_params)
107 |
108 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie'])
109 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text)
110 | flip_temp = res.json()['flip']
111 | print(end='\n\n')
112 | # with open('res_json.json', 'a', encoding='GBK') as f:
113 | # f.write(res.text)
114 | # f.write('\n\n')
115 | time.sleep(3)
116 |
117 |
118 | def query_first_page(key):
119 | session = requests.session()
120 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key)
121 | res = session.get(url, headers=headers, cookies=cookies)
122 | tree = html.fromstring(res.text)
123 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0])
124 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \
125 | data['props']['pageProps']['data']['ssrListData']['flip']
126 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 4277963319009})
127 | print(req_params)
128 | return session, req_params
129 |
130 |
131 | def query(key):
132 | session, req_params = query_first_page(key)
133 | query_second_page(key, session, req_params)
134 |
135 |
136 | if __name__ == '__main__':
137 | search_key = "月饼"
138 | query(search_key)
139 |
140 | # with open('get_anticontent.js', encoding='utf-8') as f:
141 | # js = f.read()
142 | # os.environ['EXECJS_RUNTIME'] = "Node"
143 | # ctx = execjs.compile(js)
144 | # anti_content = ctx.call('start')
145 |
--------------------------------------------------------------------------------
/another_script/SearchGoods - 副本.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | 搜索
18 | 测试
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
155 |
160 |
161 |
--------------------------------------------------------------------------------
/别人的/antiContent_Js.js:
--------------------------------------------------------------------------------
1 | var encrypt;
2 | var deflate = {};
3 | var deflate2 = {};
4 | var DDD;
5 | var href_data;
6 | (function() {
7 | var n, r, e = ["WMKPO8ONwrHCnTM=", "w4HDqMO4R8KDw4Q=", "cV97wr4AAsOPw7o=", "w53DkMKT", "w5fDu8OBcsOtw6c=",
8 | "w7A/CRDCiSDChV1MwqvCkDJrDidnwqPCpMK0",
9 | "w5PDlMOVNQsVAsKgEcK0woPDv8KCe8OCwpTCoRbDui/DsUMDw58RH24twqDDjsKNwrRfGCTDt2sVw7HCrcOze8OYwqkkwpXCp8O3asKnw7sGHV/DkBUTw71kRcKfwqQVw5c=",
10 | "woNjOcKOYsONw7jDgcOJHzcXwop/KMOwKSTCrg==", "wpgRwod3NsKHPg==", "w64QQ3LDtMOvwrZiNA==", "bMOGZ8KJISnDl2sPwqw=",
11 | "wrLDizPDhhrCjA==", "w5vDnMKRORQ2", "QRDDssOI",
12 | "w6XDvcKRwpgsMCx0FMO+w7HDjAxzJsKZwpEgdjPDvMOaHMO8McKMwofCo8OCZ8KnIsOANCzCm8KUe8OJOizDtB8ZU8Owfz1tMHELL8O1AMOOw6zDlGMnExwKw6Y=",
13 | "YUd2wqU3"
14 | ];
15 | n = e,
16 | r = 249,
17 | function(t) {
18 | for (; --t;)
19 | n.push(n.shift())
20 | }(++r);
21 | var i = function t(n, r) {
22 | var i, a = e[n -= 0];
23 | void 0 === t.OYUOmT && ((i = function() {
24 | var t;
25 | try {
26 | t = Function('return (function() {}.constructor("return this")( ));')()
27 | } catch (n) {
28 | t = window
29 | }
30 | return t
31 | }()).atob || (i.atob = function(t) {
32 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ?
33 | 64 *
34 | n + r : r,
35 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0)
36 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);
37 | return o
38 | }),
39 | t.KlaBWf = function(t, n) {
40 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++)
41 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2);
42 | t = decodeURIComponent(o);
43 | for (var c = 0; c < 256; c++)
44 | e[c] = c;
45 | for (c = 0; c < 256; c++)
46 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256,
47 | r = e[c],
48 | e[c] = e[i],
49 | e[i] = r;
50 | c = 0,
51 | i = 0;
52 | for (var f = 0; f < t.length; f++)
53 | i = (i + e[c = (c + 1) % 256]) % 256,
54 | r = e[c],
55 | e[c] = e[i],
56 | e[i] = r,
57 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]);
58 | return a
59 | },
60 | t.qLLMER = {},
61 | t.OYUOmT = !0);
62 | var o = t.qLLMER[n];
63 | return void 0 === o ? (void 0 === t.ERaocM && (t.ERaocM = !0),
64 | a = t.KlaBWf(a, r),
65 | t.qLLMER[n] = a) : a = o,
66 | a
67 | },
68 | a = i("0x0", "Z*YI"),
69 | o = i("0x1", "eHoP"),
70 | s = i("0x2", "xf4l"),
71 | u = i("0x3", "4H[4"),
72 | c = i("0x4", "jbx*"),
73 | f = i("0x5", "pe(C")[i("0x6", "j)OB")](""),
74 | w = {};
75 |
76 | function l(t) {
77 | return t[i("0x7", "gQva")](/[+\/=]/g, function(t) {
78 | return w[t]
79 | })
80 | }
81 | w["+"] = "-",
82 | w["/"] = "_",
83 | w["="] = "";
84 | var d = {};
85 | d[i("0x8", "O7N@")] = function(t) {
86 | for (var n = function(t, n) {
87 | return t(n)
88 | }, r = function(t, n) {
89 | return t < n
90 | }, e = function(t, n) {
91 | return t + n
92 | }, i = function(t, n) {
93 | return t + n
94 | }, a = function(t, n) {
95 | return t >>> n
96 | }, o = function(t, n) {
97 | return t & n
98 | }, u = function(t, n) {
99 | return t | n
100 | }, c = function(t, n) {
101 | return t << n
102 | }, w = function(t, n) {
103 | return t | n
104 | }, d = function(t, n) {
105 | return t === n
106 | }, _ = function(t, n) {
107 | return t + n
108 | }, p = function(t, n) {
109 | return t >>> n
110 | }, x = function(t, n) {
111 | return t + n
112 | }, g = function(t, n) {
113 | return t & n
114 | }, v = void 0, b = void 0, m = void 0, y = "", D = t[s], C = 0, K = function(t, n) {
115 | return t * n
116 | }(n(h, function(t, n) {
117 | return t / n
118 | }(D, 3)), 3); r(C, K);)
119 | v = t[C++],
120 | b = t[C++],
121 | m = t[C++],
122 | y += e(e(i(f[a(v, 2)], f[o(u(c(v, 4), a(b, 4)), 63)]), f[o(w(c(b, 2), a(m, 6)), 63)]), f[o(m, 63)]);
123 | var k = function(t, n) {
124 | return t - n
125 | }(D, K);
126 | return d(k, 1) ? (v = t[C],
127 | y += i(_(f[p(v, 2)], f[function(t, n) {
128 | return t & n
129 | }(c(v, 4), 63)]), "==")) : d(k, 2) && (v = t[C++],
130 | b = t[C],
131 | y += _(x(x(f[p(v, 2)], f[g(w(function(t, n) {
132 | return t << n
133 | }(v, 4), function(t, n) {
134 | return t >>> n
135 | }(b, 4)), 63)]), f[g(function(t, n) {
136 | return t << n
137 | }(b, 2), 63)]), "=")),
138 | n(l, y)
139 | },
140 | d[i("0x9", "j)OB")] = function(t) {
141 | for (var n = function(t, n) {
142 | return t < n
143 | }, r = function(t, n) {
144 | return t >= n
145 | }, e = function(t, n) {
146 | return t <= n
147 | }, i = function(t, n) {
148 | return t <= n
149 | }, a = function(t, n) {
150 | return t | n
151 | }, f = function(t, n) {
152 | return t & n
153 | }, h = function(t, n) {
154 | return t >> n
155 | }, w = function(t, n) {
156 | return t & n
157 | }, l = function(t, n) {
158 | return t >= n
159 | }, d = function(t, n) {
160 | return t <= n
161 | }, _ = function(t, n) {
162 | return t | n
163 | }, p = function(t, n) {
164 | return t & n
165 | }, x = function(t, n) {
166 | return t & n
167 | }, g = function(t, n) {
168 | return t >> n
169 | }, v = function(t, n) {
170 | return t & n
171 | }, b = function(t, n) {
172 | return t < n
173 | }, m = [], y = 0, D = 0; n(D, t[s]); D += 1) {
174 | var C = t[o](D);
175 | r(C, 0) && e(C, 127) ? (m[c](C),
176 | y += 1) : e(128, 80) && i(C, 2047) ? (y += 2,
177 | m[c](a(192, f(31, h(C, 6)))),
178 | m[c](a(128, w(63, C)))) : (l(C, 2048) && d(C, 55295) || l(C, 57344) && d(C, 65535)) && (y += 3,
179 | m[c](_(224, p(15, h(C, 12)))),
180 | m[c](_(128, x(63, g(C, 6)))),
181 | m[c](_(128, v(63, C))))
182 | }
183 | for (var K = 0; b(K, m[s]); K += 1)
184 | m[K] &= 255;
185 | return function(t, n) {
186 | return t <= n
187 | }(y, 255) ? [0, y][u](m) : [function(t, n) {
188 | return t >> n
189 | }(y, 8), v(y, 255)][u](m)
190 | },
191 | d.es = function(t) {
192 | t || (t = "");
193 | var n = t[a](0, 255),
194 | r = [],
195 | e = d.charCode(n).slice(2);
196 | return r[c](e[s]),
197 | r[u](e)
198 | },
199 | d.en = function(t) {
200 | var n = function(t, n) {
201 | return t !== n
202 | },
203 | r = function(t, n) {
204 | return t % n
205 | },
206 | e = function(t, n) {
207 | return t < n
208 | },
209 | i = function(t, n) {
210 | return t * n
211 | },
212 | o = function(t, n) {
213 | return t * n
214 | },
215 | u = function(t, n) {
216 | return t + n
217 | },
218 | f = function(t, n, r) {
219 | return t(n, r)
220 | },
221 | h = function(t, n) {
222 | var r = String(t);
223 | return parseInt(r, n >>> 0 || (false ? 16 : 10))
224 | };
225 | t || (t = 0);
226 | var w = function(t, n) {
227 | function h(t, n) {
228 | var r = String(t)
229 | return parseInt(r, n >>> 0 || (false ? 16 : 10))
230 | }
231 | return h(n)
232 | }(0, t),
233 | l = [];
234 | ! function(t, n) {
235 | return t > n
236 | }(w, 0) ? l[c](1): l[c](0);
237 | for (var d = Math.abs(w).toString(2).split(""), _ = 0; n(r(d[s], 8), 0); _ += 1)
238 | d.unshift("0");
239 | d = d.join("");
240 |
241 | for (var p = Math.ceil(function(t, n) {
242 | return t / n
243 | }(d[s], 8)), x = 0; e(x, p); x += 1) {
244 | var g = d[a](i(x, 8), o(u(x, 1), 8));
245 |
246 | l[c](f(h, g, 2))
247 | }
248 | var v = l[s];
249 | return l.unshift(v),
250 | l
251 | },
252 | d[i("0xa", "4H[4")] = function(t) {
253 | for (var n = function(t, n) {
254 | return t < n
255 | }, r = [], e = t.toString(2).split(""), i = 0; n(e[s], 16); i += 1)
256 | e.unshift(0);
257 |
258 | function h(t, n) {
259 | var r = String(t)
260 | return parseInt(r, n >>> 0 || (false ? 16 : 10))
261 | }
262 | return e = e.join(""),
263 | r[c](function(t, n, r) {
264 | return t(n, r)
265 | }(h, e[a](0, 8), 2), function(t, n, r) {
266 | return t(n, r)
267 | }(h, e[a](8, 16), 2)),
268 | r
269 | },
270 | d[i("0xb", "n1$k")] = function(t) {
271 | for (var n = {
272 | siKwF: i("0xc", "3sl8"),
273 | cCTci: i("0xd", "$oSo"),
274 | gJSsU: function(t, n) {
275 | return t < n
276 | },
277 | jKThZ: i("0xe", "VRJR"),
278 | rZJxP: function(t, n) {
279 | return t | n
280 | },
281 | BJGzg: function(t, n) {
282 | return t << n
283 | },
284 | dkecu: function(t, n) {
285 | return t & n
286 | },
287 | YDHhf: function(t, n) {
288 | return t - n
289 | },
290 | PTrMw: function(t, n) {
291 | return t >> n
292 | },
293 | inPLI: function(t, n) {
294 | return t << n
295 | },
296 | DFOkJ: function(t, n) {
297 | return t(n)
298 | },
299 | kkUqO: function(t, n) {
300 | return t - n
301 | },
302 | CCwIR: function(t, n) {
303 | return t(n)
304 | },
305 | qYmFj: function(t, n) {
306 | return t + n
307 | },
308 | fGVLX: function(t, n) {
309 | return t & n
310 | },
311 | BCdUS: function(t, n) {
312 | return t - n
313 | },
314 | WIZIR: function(t, n) {
315 | return t < n
316 | }
317 | }, r = n.siKwF.split("|"), e = 0;;) {
318 | switch (r[e++]) {
319 | case "0":
320 | return _.replace(/=/g, "");
321 | case "1":
322 | var a = n.cCTci;
323 | continue;
324 | case "2":
325 | var u, c, f, h;
326 | continue;
327 | case "3":
328 | for (d = 0; n.gJSsU(d, t[s]); d = g._bK)
329 | for (var w = n.jKThZ.split("|"), l = 0;;) {
330 | switch (w[l++]) {
331 | case "0":
332 | p._á(g._bf());
333 | continue;
334 | case "1":
335 | f = n.rZJxP(n.BJGzg(n.dkecu(p._ê[n.YDHhf(p._bÌ, 1)], 15), 2), n.PTrMw(p._ê[p._bÌ], 6));
336 | continue;
337 | case "2":
338 | c = n.rZJxP(n.inPLI(n.dkecu(p._ê[n.YDHhf(p._bÌ, 2)], 3), 4), n.PTrMw(p._ê[n.YDHhf(p._bÌ, 1)], 4));
339 | continue;
340 | case "3":
341 | n.DFOkJ(isNaN, p._ê[n.kkUqO(p._bÌ, 1)]) ? f = h = 64 : n.CCwIR(isNaN, p._ê[p._bÌ]) && (h = 64);
342 | continue;
343 | case "4":
344 | _ = n.qYmFj(n.qYmFj(n.qYmFj(n.qYmFj(_, p._ê[u]), p._ê[c]), p._ê[f]), p._ê[h]);
345 | continue;
346 | case "5":
347 | p._á(g._bf());
348 | continue;
349 | case "6":
350 | h = n.fGVLX(p._ê[p._bÌ], 63);
351 | continue;
352 | case "7":
353 | u = n.PTrMw(p._ê[n.BCdUS(p._bÌ, 2)], 2);
354 | continue;
355 | case "8":
356 | p._á(g._bf());
357 | continue;
358 | case "9":
359 | p._bÌ -= 3;
360 | continue
361 | }
362 | break
363 | }
364 | continue;
365 | case "4":
366 | for (var d = 0; n.WIZIR(d, a[s]); d++)
367 | p._á(a.charAt(d));
368 | continue;
369 | case "5":
370 | p._á("=");
371 | continue;
372 | case "6":
373 | var _ = "";
374 | continue;
375 | case "7":
376 | var p = {
377 | "_ê": new Array(4095),
378 | "_bÌ": -1,
379 | "_á": function(t) {
380 | this._bÌ++,
381 | this._ê[this._bÌ] = t
382 | },
383 | "_bÝ": function() {
384 | return this._bÌ--,
385 | x.ElHZO(this._bÌ, 0) && (this._bÌ = 0),
386 | this._ê[this._bÌ]
387 | }
388 | };
389 | continue;
390 | case "8":
391 | var x = {
392 | ElHZO: function(t, r) {
393 | return n.WIZIR(t, r)
394 | }
395 | };
396 | continue;
397 | case "9":
398 | var g = {
399 | "_bÇ": t,
400 | _bK: 0,
401 | _bf: function() {
402 | return t[o](this._bK++)
403 | }
404 | };
405 | continue
406 | }
407 | break
408 | }
409 | }
410 | encrypt = d
411 | })();
412 | // var n, e, i = "function" == typeof _ && "symbol" == x(w) ? function(t) {
413 | // return x(t)
414 | // } :
415 | // function(t) {
416 | // return t && "function" == typeof _ && t.constructor === _ && t !== _.prototype ? "symbol" : x(t)
417 | // },
418 | p = ["w70sw71bG8Kvw5zCtsOJ", "wp7DsBxr", "eg4NVsKlw6cvw4DCiCvDqBQ=", "w7w/w7F0Hg==", "w63CnsOTCcKQ", "G2JaLMKbwr0=",
419 | "wo5QwpBYw5E=", "wq3DksOpwpFk", "wqDDg8OJwrR7", "TsKyA8K9LQHCjsOGAQ==", "OcOTF3fCjQ==", "WDJnwpBf", "woPCtVclLg==",
420 | "w5cuw6x3Lg==", "w7jCo8K5wrs/", "G8OINGXCkw==", "eAgxYcKd", "woXCtU8pHg==", "wqdBwr7Dv8Kj", "HH5eB8K4",
421 | "w4rDowbDmD0=", "w7zCjsKlwrklScOawrdHw7nDqA==", "S2AgJRk=", "w7fCssKlwroG", "w4NXXFbCi8O2GCh+wrA=", "w6nDgwzDuB0=",
422 | "Y8OMaD8v", "ehUNXMKiw4wiw5rCmyLDrg==", "w6AWR8Ozwro=", "NsKvwo7CuUw2wpjDpcOzUQ==", "w7cEw79ULQ==",
423 | "QCg0EcOkw55aw5TDu8OVwrI=", "w6TDvAnDhxg=", "w47DiUVXJg==", "wrxIw6lRwpXCtQjCrg==", "G8OtGlPCkQ==", "w7DDnxnDmRQ=",
424 | "w6fDpBrDuDrDpg==", "QMKywqlbGw==", "ZkjDhBcJ", "CmFRwqg=", "wq3DoQBtAw==", "w4hcw7TDmMOt", "w6A9w6pFEg==",
425 | "R3rDocKFWA==", "wrXCrFcvBA==", "QMKkGMOKYDLChcKGIw==", "w5Ihw4hvwoY=", "KcK+HMKgw6TDlURfeMODFcKycg==",
426 | "w60HZ8OWwqU=", "wp7Dsg9LBg==", "RyY1PMOBw4JUw5fDrsOOwrZvIcOyEAjDuMKpwpBOwqzChsOP", "w53DsFlSIA==", "MsKCwpLCu1Y=",
427 | "QHjDpsKSYGZFSyA=", "w45LRlc=", "w4lIAl7Chg==", "w5HCgcK1wrB/", "w6PCicK+wqg4dcOGwq5F", "e8OETh0=",
428 | "Q8KuKcOaYDLCncKE", "RcKkCsOCczjClg==", "dMOFaCEq", "wq7Dvjt6JgMsw5Y=", "w5tywpHCv8Kb", "wrDCtVIyAx0ow7kl",
429 | "wpdXw5JEwonCqAnCpA==", "w41EwpfCmMKYwqfCtMK8", "SV8nw4TDj1d3", "NMKywrLChHM=", "OcK+IsKVw6PDiEVV", "VhU5Th0=",
430 | "JMK4GMKow5c=", "wrTDmSJiHg==", "CcO+Hg==", "w73Cs8KbwrAd", "wqFUwrRfw4Y=", "FnxVZTM=", "WG7Dvh8n", "cBYcV8Kk",
431 | "wrBdwrFyw4U=", "TxwQZjI/w7V8XX5sw5ABUg==", "MMK0wpPCqA==", "w5VWw7DDlcOpw55gDcK0wopA", "w5HCrcOABA==", "BmJRwqg=",
432 | "w7ssw6VWEMKrw63Cr8Oew4nDiQ==", "QDHDrcKw", "w6DCkVBE", "JFluTRrDmkTDpsKiKEk=", "w4lKwqfChw==", "RDdkwo0=",
433 | "WDHDoMK/w6DCt1Qew6cQCw==", "PFljQg==", "wqx2woLDmA==", "XThuwpI=", "w7rClcK4wqg=", "wpp4wodV", "w41Ww73Dmg==",
434 | "wrPDvwF6", "Tzkqwrk=", "wotuwpMy", "w4VMQUc=", "LFxEZcKMOcKvwp9tw4bCsHjDqVDDqsOjcMOQw7/DncOywpc=", "wocFQMOJ",
435 | "HHleOg==", "LsOqbFJxTcK8woAsw7ErG0PDojp+Kg==", "acOMQxI=", "w7rDogjDkA==", "Uyg7Fg==", "w7zCjFxCwr57eWXDnw==",
436 | "ZQEaUg==", "w7ojw6JG", "H21bwrc=", "VcK9CcK3FAvCj8OMDl3Cv8KpccOS", "QzhjwpZoDcOfUHw4wpfCo8OdIcK3", "w7TDsyjDpgg=",
437 | "wol1wo1dw6s=", "w6pmw7nDv8OX", "w6fDiMOcbEEQScKmw6kv", "w7RbJlHCmg==", "QRsEezA+w75fXA==", "w7vDq39HHg==",
438 | "w6DCmMKjwrM7bQ==", "w7vDomVJIA==", "QjEed8KC", "JW90wrDCqA==", "JHx5OMKX", "RMKuwqhbKQ==", "w5zDuXZgEg==",
439 | "w4IEw6FQNw==", "DFZRecKCOcKOwplBw4/Cu2HDrUrDtw==", "wpl6wpZRw6zDicO/wpUI", "CMOgfkI=", "woQHUcONwrLCucKXwpbDnw==",
440 | "wpR5wr0XPQ==", "asKVDcK6AA==", "wpDCpVbChw==", "OBIsDjE=", "N1h+HcKk", "wpnDmVTCmsKQFEZFbnl4bg==", "HsOlclB8",
441 | "KS0uDzs=", "FVlLwpLCtQ==", "fBNPwqF8", "w4zDqwbDjx4=", "S0jDvBYy", "HlBBGcKd", "GQwNKgw=", "Ri8Yb8KF",
442 | "QjPDqMKPw6U=", "SBEXZDQuw7Q=", "w7puRVjCtw==", "wp/DpAB8AQ==", "WFhc", "cF03Nws=", "w7Yjw6hdGMKr", "w7Ubw5pZwq0=",
443 | "LDs3MA==", "w6PCmsKywrc=", "w7nCnlpb", "wqfDksOCwrw=", "R8KjwqJT", "R8KgGcOF", "w5XDsB/DtQ==", "wpZqwpItNg==",
444 | "woTCjE3CucOa", "WTZewo1FF8OFWA==", "w5LCvMOPBsKm", "wpXCs0/CuMOQ", "woIKUMOKwrfCs8K3", "w7AYZsOb", "wpltw7J+wq0=",
445 | "w5jCtXtowrQ=", "JMKrC8Kww5A=", "aDvDnMKzw58=", "WxfDuMKMw68=", "JF11FsK1", "dQbDl8Kqw5g=", "w79tSWXCrA==",
446 | "RDrDpsKww6I=", "wpdSw6lbwpU=", "GMKpwq9CBw==", "wod4wpQ=", "wol4wohS", "woLCiHQVNg==", "w7PDnRHDtRE=",
447 | "woBtwoPDnsKH", "w45EwqPCmMK6", "wq93woLDgg==", "wrPDmDh9Dg==", "J2hHTTs=", "w5TCosOHCsK0MsOvw47Cow==",
448 | "w7zCkMKJwpoW", "e3XDhioi", "wqxRwrvDn8KI", "RglKwp16", "w6Y9w69TCMKrw7vCvMOJw5HDmMOIVx3CsHg=", "I1NYbzc=",
449 | "wp8yS8O2wp0=", "PEpvXRnDi3jDoMKi", "w5lSTFLCjcOEIil4wq4OQRB6EMK9", "w5HCvsOMG8K9L8O4w5vCog==", "d0A/NzQ7wpMcLQ==",
450 | "WFYyw4nDnHdzQsK5aQ==", "GEtdeMKAKMKZwp1h", "wo5dw7JDwprCpgLCk0F4w5o=", "djkBwqfChw==", "wqnCpX3CmcOn",
451 | "w45KBUnCvsO8w5bDmsO7", "XW/DusKVbnVZayTCnH/DmzMZw5A=", "w79Da1jClw==", "w67Dtlt3AA==", "VFMTKDU=", "CE5qbwE=",
452 | "w4/DuEFeBTAr", "w4xbwqDCjcKewqvCicK+woPCvEpcTmoZGg==", "Szk7wrXCtig=", "wpkLVA==", "w5LCucOBHMKmKcOow4XCoA==",
453 | "PcK+Bg==", "woUFTcOGwrHCuA==", "TD07wqTCti5ew7wRag==", "FHNTC8KIwqrDiQ/CncKRwoEEw6vCvMKkfQ==", "wr7Dvgt7OQ8sw4U=",
454 | "w4fCosKSwoxGGGJSw4rDslc=", "wotvwoVXw6zDssOCwp4Mw5M=", "wrZ7wpnDicK3RQ==", "w5bCu8KBwpE=", "wp8WRsOE",
455 | "BFZRbcKbNcKPwoM=", "YQkUXMKjw7Amw57CjA==", "w4XCuMKawoBEJF4=", "wqPCq1QjAh0J", "fMOBRRQCNDXDhcO0",
456 | "w5FSw7DDlsOxw5M=", "w4bDvhLDvT7DoA==", "XVUlw63Dj1d6", "wppswpdW", "NTQ9Lw==", "DFhGbQ==", "wqLDncOFwrJKaMOywqBy",
457 | "wpbDrU3Dom3DqMKcFMKD", "YFPDghcV", "w5cWe8Od"
458 | ];
459 | n = p, e = 217;
460 |
461 | (function(t) {
462 | for (; --t;)
463 | n.push(n.shift())
464 | })(++e);
465 | var g = function t(n, r) {
466 | var e, i = p[n -= 0];
467 | void 0 === t.KzjjyN && ((e = function() {
468 | var t;
469 | try {
470 | t = Function('return (function() {}.constructor("return this")( ));')()
471 | } catch (n) {
472 | t = window
473 | }
474 | return t
475 | }()).atob || (e.atob = function(t) {
476 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ? 64 *
477 | n + r : r,
478 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0)
479 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);
480 | return o
481 | }),
482 | t.JhihyY = function(t, n) {
483 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++)
484 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2);
485 | t = decodeURIComponent(o);
486 | for (var c = 0; c < 256; c++)
487 | e[c] = c;
488 | for (c = 0; c < 256; c++)
489 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256,
490 | r = e[c],
491 | e[c] = e[i],
492 | e[i] = r;
493 | c = 0,
494 | i = 0;
495 | for (var f = 0; f < t.length; f++)
496 | i = (i + e[c = (c + 1) % 256]) % 256,
497 | r = e[c],
498 | e[c] = e[i],
499 | e[i] = r,
500 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]);
501 | return a
502 | },
503 | t.vchwhE = {},
504 | t.KzjjyN = !0);
505 | var a = t.vchwhE[n];
506 | return void 0 === a ? (void 0 === t.DeBsWl && (t.DeBsWl = !0),
507 | i = t.JhihyY(i, r),
508 | t.vchwhE[n] = i) : i = a,
509 | i
510 | }
511 | //--------------------------------------------------------------------------------------------------------------------------------------
512 | ,
513 | v = g("0x0", "o0J["),
514 | b = "id",
515 | m = g("0x1", "(DVf"),
516 | y = g("0x2", "cZ6)"),
517 | D = g("0x3", "ud5t"),
518 | C = g("0x4", "(DVf"),
519 | K = g("0x5", "o0J["),
520 | k = g("0x6", "Bx!c"),
521 | O = g("0x7", "hI@*"),
522 | z = g("0x8", "%J*e"),
523 | A = g("0x9", "Qcn!"),
524 | B = g("0xa", "KX$#"),
525 | M = g("0xb", "%J*e"),
526 | q = g("0xc", "(DVf"),
527 | j = g("0xd", "4[q*"),
528 | T = g("0xe", "7sIF"),
529 | Q = g("0xf", "%J*e"),
530 | R = g("0x10", "aVX("),
531 | F = g("0x11", "m$X7"),
532 | S = g("0x12", "kSgJ"),
533 | E = g("0x13", "!Ry0"),
534 | U = g("0x14", "(*Fv"),
535 | I = g("0x15", "Qcn!"),
536 | H = g("0x16", "TNEu"),
537 | L = g("0x17", "4[q*"),
538 | J = 0,
539 | V = void 0,
540 | P = Date.now().valueOf() - parseInt(Math.random() * 50000),
541 | X = 5,
542 | Z = function() {},
543 | N = void 0,
544 | Y = void 0,
545 | G = void 0,
546 | W = void 0,
547 | $ = void 0;
548 |
549 |
550 | function rt(t) {
551 | var n = {};
552 | return n[g("0x65", "hI@*")] = g("0x66", "%@B*"),
553 | encrypt[n[g("0x67", "7z7d")]](t[S])[E](t)
554 | }
555 |
556 | function et(t, n) {
557 | var r = {};
558 | if (r[g("0x68", "Qcn!")] = function(t, n) {
559 | return t < n
560 | },
561 | r[g("0x69", "1(8m")] = function(t, n) {
562 | return t - n
563 | },
564 | r[g("0x6a", "e6f^")](t[L][S], X)) {
565 | var e = n || N[g("0x6b", "7sIF")],
566 | i = e[v][b] || "",
567 | a = {};
568 | if (a[F] = i,
569 | a[T] = r[g("0x6c", "Qcn!")](G[m](), J),
570 | $) {
571 | var o = e[g("0x6d", "XimS")];
572 | o && o[S] && (a[R] = o[0][R],
573 | a[Q] = o[0][Q])
574 | } else
575 | a[R] = e[R],
576 | a[Q] = e[Q];
577 | t[L][I](a)
578 | }
579 | }
580 | var it = {};
581 | it["data"] = []
582 | it[g("0x6e", "KozE")] = function() {
583 | this[L] = []
584 | },
585 | it[g("0x6f", "kSgJ")] = function(t) {
586 | if (function(t, n) {
587 | return t < X
588 | }(this[L][S])) {
589 | var n = t || N.event,
590 | r = n[v][b] || "",
591 | e = {};
592 | e[F] = r,
593 | e[R] = n[R],
594 | e[Q] = n[Q],
595 | e[T] = function(t, n) {
596 | return t - n
597 | }(G[m](), J),
598 | this[L][I](e)
599 | }
600 | },
601 | it[g("0x70", "cZ6)")] = function() {
602 | var t = [][E](encrypt.es("db"));
603 | return this[L][U](function(n) {
604 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T]))
605 | }),
606 | rt(t)
607 | };
608 | var at = {};
609 | at["data"] = []
610 | at[g("0x71", "FWpL")] = function() {
611 | this[L] = []
612 | },
613 | at[g("0x72", "o(R[")] = function(t) {
614 | et(this, t)
615 | },
616 | at[g("0x73", "Ja(b")] = function() {
617 | var t = [][E](encrypt.es("wt"));
618 | return this[L][U](function(n) {
619 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T]))
620 | }),
621 | rt(t)
622 | };
623 | var ot = {};
624 | ot["data"] = [];
625 | ot[g("0x74", "c9Yw")] = function() {
626 | this[L] = []
627 | },
628 | ot[g("0x75", "1(8m")] = function(t) {
629 | et(this, t)
630 | },
631 | ot[g("0x76", "UAA6")] = function() {
632 | var t = [][E](l.es("tw"));
633 | return this[L][U](function(n) {
634 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T]))
635 | }),
636 | rt(t)
637 | };
638 | var st = {};
639 | st["data"] = [{
640 | scrollTop: 8626,
641 | timestamp: 2444866
642 | },
643 | {
644 | scrollTop: 12990,
645 | timestamp: 2448085
646 | },
647 | {
648 | scrollTop: 13000,
649 | timestamp: 2448100
650 | },
651 | {
652 | scrollTop: 13002,
653 | timestamp: 3012411
654 | },
655 | {
656 | scrollTop: 13012,
657 | timestamp: 3012427
658 | }
659 | ];
660 | st[g("0x77", "zQEU")] = function() {
661 | this[L] = []
662 | },
663 | st[g("0x78", "Ja(b")] = function() {
664 | if (function(t, n) {
665 | return t < X
666 | }(this[L][S])) {
667 | var t = {};
668 | t.scrollTop = document.documentElement.scrollTop || document.body.scrollTop,
669 | t[T] = function(t, n) {
670 | return t - n
671 | }(G[m](), J),
672 | this[L][I](t)
673 | }
674 | },
675 | st[g("0x79", "1(8m")] = function() {
676 | var t = [][E](encrypt.es("zc"));
677 |
678 | return this[L][U](function(n) {
679 | t = t[E](encrypt.en(n.scrollTop), encrypt.en(n[T]))
680 | }),
681 | rt(t)
682 | };
683 | var ut = {};
684 | ut[g("0x7a", "KX$#")] = function() {
685 | this[L] = {},
686 | this[L][q] = href_data,
687 | this[L][M] = ""
688 | },
689 | ut[g("0x7b", "zQEU")] = function() {
690 | this[H]();
691 | return rt([][E](encrypt.es("kf"), encrypt.es(this[L][q]), encrypt.es(this[L][M])))
692 | };
693 | var ct = {};
694 | ct["data"] = {
695 | availHeight: 1040,
696 | availWidth: 1920
697 | }
698 | ct[g("0x7c", "7z7d")] = function() {
699 | this[L] = {},
700 | this[L][A] = N[B][A],
701 | this[L][z] = N[B][z]
702 | },
703 | ct[g("0x7d", "Qcn!")] = function() {
704 | return rt([][E](encrypt.es("lh"), encrypt.en(this[L][z]), encrypt.en(this[L][A])))
705 | };
706 | var ft = {};
707 | ft[g("0x77", "zQEU")] = function() {
708 | var t = function(t, n) {
709 | return t + n
710 | },
711 | n = function(t, n) {
712 | return t * n
713 | },
714 | W = Math;
715 |
716 | function h(t, n) {
717 | var r = String(t)
718 | return parseInt(r, n >>> 0 || (false ? 16 : 10))
719 | };
720 | this[L] = t(function(t, n, r) {
721 | return t(n, r)
722 | }(h, function(t, n) {
723 | return t(n)
724 | }(String, n(W[C](), t(W[D](2, 52), 1))), 10), function(t, n, r) {
725 | return t(n, r)
726 | }(h, function(t, n) {
727 | return t(n)
728 | }(String, n(W[C](), t(W[D](2, 30), 1))), 10)) + "-" + (new Date()).valueOf().toString()
729 | },
730 | ft[g("0x7e", "kSgJ")] = function() {
731 | return this[H](),
732 | rt([][E](encrypt.es("ie"), encrypt.es(this[L])))
733 | };
734 | var ht = {};
735 | ht["data"] = 0
736 | ht[g("0x7f", "hI@*")] = function() {
737 | this[L] = function() {
738 | var t = {};
739 | t[g("0x1f", "o(R[")] = function(t, n) {
740 | return t !== n
741 | },
742 | t[g("0x20", "cZ6)")] = g("0x21", "Bx!c"),
743 | t[g("0x22", "Qcn!")] = function(t, n) {
744 | return t !== n
745 | },
746 | t[g("0x23", "q2rP")] = function(t, n) {
747 | return t < n
748 | },
749 | t[g("0x24", "q2rP")] = g("0x25", "aMpH"),
750 | t[g("0x26", "%@B*")] = function(t, n) {
751 | return t === n
752 | },
753 | t[g("0x27", "zQEU")] = function(t, n) {
754 | return t === n
755 | },
756 | t[g("0x28", "aVX(")] = function(t, n) {
757 | return t === n
758 | },
759 | t[g("0x29", "o(R[")] = function(t, n) {
760 | return t === n
761 | },
762 | t[g("0x2a", "7z7d")] = function(t, n) {
763 | return t === n
764 | },
765 | t[g("0x2b", "%@B*")] = function(t, n) {
766 | return t !== n
767 | },
768 | t[g("0x2c", "7sIF")] = g("0x2d", "aVX("),
769 | t[g("0x2e", "KX$#")] = function(t, n) {
770 | return t !== n
771 | },
772 | t[g("0x2f", "Bx!c")] = function(t, n) {
773 | return t << n
774 | };
775 | var n = [];
776 | t[g("0x30", "!Ry0")](i(N[g("0x31", "7z7d")]), t[g("0x32", "7qw^")]) || t[g("0x33", "7z7d")](i(N[g("0x34", "5%pL")]),
777 | t[g("0x35", "!Ry0")]) ? n[0] = 1 : n[0] = t[g("0x36", "m$X7")](N[g("0x37", "7sIF")], 1) || t[g("0x38", "CK20")]
778 | (
779 | N[g("0x39", "KozE")], 1) ? 1 : 0,
780 | n[1] = t[g("0x3a", "o(R[")](i(N[g("0x3b", "yKUA")]), t[g("0x3c", "aW!n")]) || t[g("0x3d", "h0NV")](i(N[g("0x3e",
781 | "yuh1")]), t[g("0x3f", "%@B*")]) ? 1 : 0,
782 | n[2] = t[g("0x40", "!Ry0")](i(N[g("0x41", "!Ry0")]), t[g("0x42", "Ed8T")]) ? 0 : 1,
783 | n[3] = t[g("0x43", "e6f^")](i(N[g("0x44", "FWpL")]), t[g("0x45", "hI@*")]) ? 0 : 1,
784 | n[4] = t[g("0x46", "kSgJ")](i(N[g("0x47", "o(R[")]), t[g("0x48", ")w9L")]) ? 0 : 1,
785 | n[5] = t[g("0x49", "aVX(")](Y[g("0x4a", "rqNV")], !0) ? 1 : 0,
786 | n[6] = t[g("0x4b", "rUI6")](i(N[g("0x4c", "ud5t")]), t[g("0x4d", "CK20")]) && t[g("0x4e", "hI@*")](i(N[g("0x4f",
787 | "yKUA")]), t[g("0x50", "h0NV")]) ? 0 : 1;
788 | try {
789 | t[g("0x51", "KozE")](i(Function[g("0x52", ")w9L")][g("0x53", "5%pL")]), t[g("0x54", "o5mZ")]) && (n[7] = 1),
790 | t[g("0x55", "%J*e")](Function[g("0x56", "7z7d")][g("0x57", "m$X7")][g("0x58", "rqNV")]()[g("0x59", "rqNV")](
791 | /bind/g, t[g("0x5a", "m$X7")]), Error[g("0x5b", "hI@*")]()) && (n[7] = 1),
792 | t[g("0x5c", "UAA6")](Function[g("0x5d", "aVX(")][g("0x5e", "yuh1")][g("0x5f", "UAA6")]()[g("0x60", "(*Fv")](
793 | /toString/g, t[g("0x61", "KozE")]), Error[g("0x62", "ud5t")]()) && (n[7] = 1)
794 | } catch (t) {}
795 | for (var r = 0, e = 0; t[g("0x63", "XimS")](e, n[S]); e++)
796 | r += t[g("0x64", "ud5t")](n[e], e);
797 | return r
798 | }()
799 | },
800 | ht[g("0x80", "o0J[")] = function() {
801 | return rt([][E](encrypt.es("hb"), encrypt.en(this[L])))
802 | };
803 | var wt = {};
804 | wt[g("0x81", "2xv*")] = function() {
805 | var e, i, a, o, s;
806 | stringToBytes = function(t) {
807 | for (var n = [], r = 0; r < t.length; r++)
808 | n.push(255 & t.charCodeAt(r));
809 | return n
810 | }
811 | rotl = function(t, n) {
812 | return t << n | t >>> 32 - n
813 | }
814 | bytesToWords = function(t) {
815 | for (var n = [], r = 0, e = 0; r < t.length; r++,
816 | e += 8)
817 | n[e >>> 5] |= t[r] << 24 - e % 32;
818 | return n
819 | }
820 | endian = function(t) {
821 | if (t.constructor == Number)
822 | return 16711935 & rotl(t, 8) | 4278255360 & rotl(t, 24);
823 | for (var n = 0; n < t.length; n++)
824 | t[n] = endian(t[n]);
825 | return t
826 | }
827 | bytesToHex = function(t) {
828 | for (var n = [], r = 0; r < t.length; r++)
829 | n.push((t[r] >>> 4).toString(16)),
830 | n.push((15 & t[r]).toString(16));
831 | return n.join("")
832 | }
833 | s = function t(n, r) {
834 | n = stringToBytes(n);
835 | for (var s = bytesToWords(n), u = 8 * n.length, c = 1732584193, h = -271733879, w = -1732584194, l = 271733878,
836 | d = 0; d < s.length; d++)
837 | s[d] = 16711935 & (s[d] << 8 | s[d] >>> 24) | 4278255360 & (s[d] << 24 | s[d] >>> 8);
838 | s[u >>> 5] |= 128 << u % 32,
839 | s[14 + (u + 64 >>> 9 << 4)] = u;
840 | var _ = _ff,
841 | p = _gg,
842 | x = _hh,
843 | g = _ii;
844 | for (d = 0; d < s.length; d += 16) {
845 | var v = c,
846 | b = h,
847 | m = w,
848 | y = l;
849 | h = g(h = g(h = g(h = g(h = x(h = x(h = x(h = x(h = p(h = p(h = p(h = p(h = _(h = _(h = _(h = _(h, w = _(w, l = _(
850 | l, c = _(c, h, w, l, s[d + 0], 7, -680876936), h, w, s[d + 1], 12, -389564586), c, h, s[d + 2],
851 | 17, 606105819), l, c, s[d + 3], 22, -1044525330), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 4],
852 | 7, -176418897), h, w, s[d + 5], 12, 1200080426), c, h, s[d + 6], 17, -1473231341), l, c, s[d + 7],
853 | 22, -45705983), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 8], 7, 1770035416), h, w, s[d + 9], 12,
854 | -1958414417), c, h, s[d + 10], 17, -42063), l, c, s[d + 11], 22, -1990404162), w = _(w, l = _(l, c =
855 | _(c, h, w, l, s[d + 12], 7, 1804603682), h, w, s[d + 13], 12, -40341101), c, h, s[d + 14], 17, -
856 | 1502002290), l, c, s[d + 15], 22, 1236535329), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 1], 5, -
857 | 165796510), h, w, s[d + 6], 9, -1069501632), c, h, s[d + 11], 14, 643717713), l, c, s[d + 0], 20, -
858 | 373897302), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 5], 5, -701558691), h, w, s[d + 10], 9,
859 | 38016083), c, h, s[d + 15], 14, -660478335), l, c, s[d + 4], 20, -405537848), w = p(w, l = p(l, c = p(
860 | c, h, w, l, s[d + 9], 5, 568446438), h, w, s[d + 14], 9, -1019803690), c, h, s[d + 3], 14, -
861 | 187363961), l, c, s[d + 8], 20, 1163531501), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 13], 5, -
862 | 1444681467), h, w, s[d + 2], 9, -51403784), c, h, s[d + 7], 14, 1735328473), l, c, s[d + 12], 20, -
863 | 1926607734), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 5], 4, -378558), h, w, s[d + 8], 11, -2022574463),
864 | c, h, s[d + 11], 16, 1839030562), l, c, s[d + 14], 23, -35309556), w = x(w, l = x(l, c = x(c, h, w, l, s[
865 | d + 1], 4, -1530992060), h, w, s[d + 4], 11, 1272893353), c, h, s[d + 7], 16, -155497632), l, c, s[d +
866 | 10], 23, -1094730640), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 13], 4, 681279174), h, w, s[d + 0], 11,
867 | -358537222), c, h, s[d + 3], 16, -722521979), l, c, s[d + 6], 23, 76029189), w = x(w, l = x(l, c = x(c, h,
868 | w, l, s[d + 9], 4, -640364487), h, w, s[d + 12], 11, -421815835), c, h, s[d + 15], 16, 530742520), l, c, s[
869 | d + 2], 23, -995338651), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 0], 6, -198630844), h, w, s[d + 7], 10,
870 | 1126891415), c, h, s[d + 14], 15, -1416354905), l, c, s[d + 5], 21, -57434055), w = g(w, l = g(l, c = g(c, h,
871 | w, l, s[d + 12], 6, 1700485571), h, w, s[d + 3], 10, -1894986606), c, h, s[d + 10], 15, -1051523), l, c, s[d +
872 | 1], 21, -2054922799), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 8], 6, 1873313359), h, w, s[d + 15], 10, -
873 | 30611744), c, h, s[d + 6], 15, -1560198380), l, c, s[d + 13], 21, 1309151649), w = g(w, l = g(l, c = g(c, h, w,
874 | l, s[d + 4], 6, -145523070), h, w, s[d + 11], 10, -1120210379), c, h, s[d + 2], 15, 718787259), l, c, s[d + 9],
875 | 21, -343485551),
876 | c = c + v >>> 0,
877 | h = h + b >>> 0,
878 | w = w + m >>> 0,
879 | l = l + y >>> 0
880 | }
881 | return endian([c, h, w, l])
882 | }
883 | _ff = function(t, n, r, e, i, a, o) {
884 | var s = t + (n & r | ~n & e) + (i >>> 0) + o;
885 | return (s << a | s >>> 32 - a) + n
886 | };
887 | _gg = function(t, n, r, e, i, a, o) {
888 | var s = t + (n & e | r & ~e) + (i >>> 0) + o;
889 | return (s << a | s >>> 32 - a) + n
890 | };
891 | _hh = function(t, n, r, e, i, a, o) {
892 | var s = t + (n ^ r ^ e) + (i >>> 0) + o;
893 | return (s << a | s >>> 32 - a) + n
894 | };
895 | _ii = function(t, n, r, e, i, a, o) {
896 | var s = t + (r ^ (n | ~e)) + (i >>> 0) + o;
897 | return (s << a | s >>> 32 - a) + n
898 | };
899 | s._blocksize = 16,
900 | s._digestsize = 16;
901 |
902 | function aa(t, n) {
903 | function e_wordsToBytes(t) {
904 | for (var n = [], r = 0; r < 32 * t.length; r += 8)
905 | n.push(t[r >>> 5] >>> 24 - r % 32 & 255);
906 | return n
907 | }
908 | var r = e_wordsToBytes(s(t, n));
909 | return bytesToHex(r)
910 | }
911 | this[L] = aa(
912 | href_data
913 | )
914 | },
915 | wt[g("0x79", "1(8m")] = function() {
916 | return wt.init(), rt([][E](encrypt.es("ml"), encrypt.es(this[L])))
917 | };
918 | var lt = {};
919 | lt["data"] = "y"
920 | lt[g("0x82", "5%pL")] = function() {
921 | var t = g("0x83", "4[q*");
922 | this[L] = N[t] ? "y" : "n"
923 | },
924 | lt[g("0x84", "(DVf")] = function() {
925 | return rt([][E](encrypt.es("qc"), encrypt.es(this[L])))
926 | };
927 | var dt = {};
928 | dt["data"] = "y"
929 | dt[g("0x85", "Bx!c")] = function() {
930 | var t = g("0x86", "$^D!");
931 | this[L] = N[t] ? "y" : "n"
932 | },
933 | dt[g("0x87", "m$X7")] = function() {
934 | return rt([][E](encrypt.es("za"), encrypt.es(this[L])))
935 | };
936 | var _t = {};
937 | _t[g("0x88", "aW!n")] = function() {
938 | G = Date;
939 | this[L] = G[m]() - P
940 | },
941 | _t[g("0x89", "yKUA")] = function() {
942 | return this[H](),
943 | rt([][E](encrypt.es("xq"), encrypt.en(this[L])))
944 | };
945 | var pt = {};
946 | pt["data"] =
947 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
948 | pt[g("0x77", "zQEU")] = function() {
949 | var t = g("0x8a", "c9Yw");
950 | this[L] = Y[t]
951 | },
952 | pt[g("0x8b", "7sIF")] = function() {
953 | return rt([][E](encrypt.es("te"), encrypt.es(this[L])))
954 | };
955 | var xt = {};
956 | xt["data"] = naNo_fp();
957 |
958 | function naNo_fp() {
959 | u = ["QzwKMQ4=", "w6fCisOpFyEo", "w7LDkcKMw4F9", "wqLDlVkyLG7Cvg==", "w4nDvHUmUg==", "CGTDnk7DoMO0Eg==",
960 | "woBEw60FeA==", "w684w4vDhWM=", "w7HDv2zDocKF", "w7LDmcK9KTQ=", "LcOPWsKmwro=", "w7A+FDZH", "w4PCvSM=", "KMOiaA==",
961 | "RMOiwq3CjsOr", "wqLDhEI=", "WcOOdlx8", "w7HDs8K9w55Bw4cs", "JMK5IcOPRcOawrjDgMKq", "a8KKw5bCk8OdcxjCjW/DlcO1w7Y=",
962 | "LcOyw5LDiyES", "ecOAwp7Cg8O1w6o3w6k=", "wqzCt8K5wr8Zw5M=", "wo0HwpQSw6bDosKTYsO2", "PMOiaMKrez3CkCBs",
963 | "DMKLZkFBw50Lwqlvw7k=", "wq/Cq8K9w5BHw5tiXA==", "w4vDvnkvSMK8w4t7w4U=", "w6bDi8KLwq3ClcKJR8KkZlQ=",
964 | "wrvDkG9HY8OVFS/CqQQ=", "wph9w6w=", "wpsWR8KTwog=", "wqhfwobDr8KJ", "wqDCkklGTg==", "w7LDuX/DsMKY", "flXCtwhS",
965 | "w63DlcKvwoPCkQ==", "UBYOOB56", "w6bDvMK1w59h", "wpMvw5M8Jg==", "UzfCosOewog=", "L0DDtV7DjA==", "fmk/w7jCuQ==",
966 | "YMKzw6/DmQLDrw==", "w7/CszLDi8O+I8OuHMKGSQ==", "w6gZw6vDvUY=", "wrkewp4Nw6I=", "GCJdwqvClw==", "T8OzRR/ClXPChw==",
967 | "JXwNwo3Cjg==", "YBYIID8=", "fsOHwpzChMOZw7s=", "wpQsw68vMwrDng8jw5UK", "w6/CtzrDmsOY", "wojDrGY4Pg==",
968 | "wpYMwoUSw40=", "wpfCj2ZfUg==", "IcOmcsKHSzTCiw==", "RcOIV3Z9"
969 | ];
970 | n = u,
971 | e = 136,
972 | function(t) {
973 | for (; --t;)
974 | n.push(n.shift())
975 | }(++e);
976 | var c = function t(n, r) {
977 | var e, i = u[n -= 0];
978 | void 0 === t.KnuQDT && ((e = function() {
979 | var t;
980 | try {
981 | t = Function('return (function() {}.constructor("return this")( ));')()
982 | } catch (n) {
983 | t = window
984 | }
985 | return t
986 | }()).atob || (e.atob = function(t) {
987 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ? 64 *
988 | n + r : r,
989 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0)
990 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);
991 | return o
992 | }),
993 | t.fyxzDe = function(t, n) {
994 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++)
995 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2);
996 | t = decodeURIComponent(o);
997 | for (var c = 0; c < 256; c++)
998 | e[c] = c;
999 | for (c = 0; c < 256; c++)
1000 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256,
1001 | r = e[c],
1002 | e[c] = e[i],
1003 | e[i] = r;
1004 | c = 0,
1005 | i = 0;
1006 | for (var f = 0; f < t.length; f++)
1007 | i = (i + e[c = (c + 1) % 256]) % 256,
1008 | r = e[c],
1009 | e[c] = e[i],
1010 | e[i] = r,
1011 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]);
1012 | return a
1013 | },
1014 | t.aBwsIj = {},
1015 | t.KnuQDT = !0);
1016 | var a = t.aBwsIj[n];
1017 | return void 0 === a ? (void 0 === t.oBOLyG && (t.oBOLyG = !0),
1018 | i = t.fyxzDe(i, r),
1019 | t.aBwsIj[n] = i) : i = a,
1020 | i
1021 | };
1022 |
1023 | function b() {
1024 | function s(t, n, r) {
1025 | if ("string" != typeof t)
1026 | throw new Error("The string parameter must be a string.");
1027 | if (t.length < 1)
1028 | throw new Error("The string parameter must be 1 character or longer.");
1029 | if ("number" != typeof n)
1030 | throw new Error("The length parameter must be a number.");
1031 | if ("string" != typeof r && r)
1032 | throw new Error("The character parameter must be a string.");
1033 | var e = -1;
1034 | for (n -= t.length,
1035 | r || 0 === r || (r = " "); ++e < n;)
1036 | t += r;
1037 | return t
1038 | };
1039 | var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date[c("0xc", "HxY!")](),
1040 | n = {};
1041 | n[c("0xd", "E7dI")] = function(t, n) {
1042 | return t(n)
1043 | },
1044 | n[c("0xe", "r[(a")] = function(t) {
1045 | return t()
1046 | },
1047 | n[c("0xf", "kkhd")] = function(t, n) {
1048 | return t % n
1049 | },
1050 | n[c("0x10", "l*OF")] = function(t, n, r, e) {
1051 | return t(n, r, e)
1052 | },
1053 | n[c("0x11", "zgAZ")] = function(t, n) {
1054 | return t(n)
1055 | },
1056 | n[c("0x12", "gPk6")] = c("0x13", "jhb9");
1057 | var r = n[c("0x14", "#BDR")](String, t)[c("0x15", "mUZ7")](0, 10),
1058 | e = n[c("0x16", "!LcL")](o),
1059 | i = n[c("0x17", "OPo!")]((r + "_" + e)[c("0x18", "mpB0")]("")[c("0x19", "*%RS")](function(t, n) {
1060 | return t + n[c("0x1a", "[)ww")](0)
1061 | }, 0), 1e3),
1062 | u = n[c("0x1b", "BmuK")](s, n[c("0x1c", "kWt7")](String, i), 3, "0");
1063 | return encrypt[n[c("0x1d", "ogP5")]]("" + r + u)[c("0x1e", "v*sR")](/=/g, "") + "_" + e
1064 | };
1065 |
1066 | function o(t) {
1067 | t = t || 21;
1068 | for (var n = ""; 0 < t--;)
1069 | n += "_~varfunctio0125634789bdegjhklmpqswxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" [64 * Math.random() | 0];
1070 | return n
1071 | };
1072 |
1073 | function getCookie(t) {
1074 | var arr = ["api_uid=rBRqP1z/EExwECSVC267Ag==",
1075 | " ua=Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F73.0.3683.86%20Safari%2F537.36"
1076 | ]
1077 | for (var n = function(t, n) {
1078 | return t + n
1079 | }, r = function(t, n) {
1080 | return t < n
1081 | }, e = function(t, n) {
1082 | return t === n
1083 | }, i = n(t = n("_", t), "="), a = arr, o = 0; r(o, a[p]); o++) {
1084 | for (var s = a[o]; e(s.charAt(0), " ");)
1085 | s = s[f](1, s[p]);
1086 | if (e(s.indexOf(i), 0))
1087 | return s[f](i[p], s[p])
1088 | }
1089 | return null
1090 | };
1091 |
1092 | function setCookie(t, n) {
1093 | var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 9999,
1094 | e = {
1095 | hNolq: function(t, n) {
1096 | return t + n
1097 | },
1098 | HSBcF: function(t, n) {
1099 | return t * n
1100 | },
1101 | QsJzw: function(t, n) {
1102 | return t * n
1103 | },
1104 | irUnm: c("0x7", "3hFI"),
1105 | ZRUhv: function(t, n) {
1106 | return t + n
1107 | },
1108 | KcgwS: function(t, n) {
1109 | return t + n
1110 | },
1111 | NcxmC: function(t, n) {
1112 | return t || n
1113 | },
1114 | HWavj: c("0x8", "#BDR")
1115 | };
1116 | t = e.hNolq("_", t);
1117 | var i = "";
1118 | if (r) {
1119 | var a = new Date;
1120 | a.setTime(e.hNolq(a.getTime(), e.HSBcF(e.HSBcF(e.QsJzw(e.QsJzw(r, 24), 60), 60), 1e3))),
1121 | i = e.hNolq(e.irUnm, a.toUTCString())
1122 | }
1123 | window.document.cookie = e.hNolq(e.ZRUhv(e.KcgwS(e.KcgwS(t, "="), e.NcxmC(n, "")), i), e.HWavj)
1124 | };
1125 |
1126 | function getStorage(t) {
1127 | return t = "_" + t,
1128 | getItem(t)
1129 | }
1130 |
1131 |
1132 | var t = {};
1133 | t[c("0x24", "!jRO")] = function(t, n) {
1134 | return t(n)
1135 | },
1136 | t[c("0x25", "kWt7")] = function(t, n) {
1137 | return t(n)
1138 | },
1139 | t[c("0x26", "kkhd")] = c("0x27", "6axu"),
1140 | t[c("0x28", "3hFI")] = function(t) {
1141 | return t()
1142 | },
1143 | t[c("0x29", "jhb9")] = c("0x2a", "7CAL"),
1144 | t[c("0x2b", "#BDR")] = c("0x2c", "!jRO"),
1145 | t[c("0x2d", "&8PU")] = c("0x2e", "OPo!");
1146 | var n = t[c("0x2f", "HxY!")],
1147 | r = {},
1148 | e = t[c("0x30", "BmuK")](b);
1149 | return [t[c("0x31", "l*OF")], t[c("0x32", "jFJ8")]][t[c("0x33", "Ayw(")]](function(i) {
1150 | if (i == "cookie") {
1151 | try {
1152 | var a = c("0x34", "AVSJ") + i + c("0x35", "[)ww");
1153 | r[a] = getCookie(n),
1154 | r[a] || (setCookie(n, e),
1155 | r[a] = e)
1156 | } catch (t) {}
1157 | } else {
1158 | try {
1159 | var a = c("0x34", "AVSJ") + i + c("0x35", "[)ww");
1160 | r[a] = e
1161 | } catch (t) {}
1162 | }
1163 | }),
1164 | r
1165 | };
1166 | xt[g("0x8d", "FWpL")] = function() {
1167 | var t = this,
1168 | n = g("0x8e", "aMpH"),
1169 | r = g("0x8f", "zQEU"),
1170 | e = [],
1171 | i = {};
1172 | u = ["nano_cookie_fp", "nano_storage_fp"]
1173 | return i[n] = "ys",
1174 | i[r] = "ut",
1175 | u[U](function(n) {
1176 | var r = [][E](encrypt.es(i[n]), encrypt.es(t[L][n]));
1177 | e[I](function(t, n) {
1178 | return t(n)
1179 | }(rt, r))
1180 | }),
1181 | e
1182 | }
1183 |
1184 | function gt() {
1185 | [ct, ht, wt, lt, dt, pt, xt, st, at, ot, it][U](function(t) {
1186 | t[H]()
1187 | })
1188 | }
1189 |
1190 | function vt() {
1191 | var t = {};
1192 | t[g("0x90", "!Ry0")] = g("0x91", "Qcn!"),
1193 | t[g("0x92", "kSgJ")] = g("0x93", "BotX"),
1194 | t[g("0x94", "o5mZ")] = g("0x95", "XimS"),
1195 | t[g("0x96", "h0NV")] = g("0x97", "7z7d"),
1196 | N[O][k](t[g("0x98", "h0NV")], it, !0),
1197 | $ ? N[O][k](t[g("0x99", "7sIF")], ot, !0) : (N[O][k](t[g("0x9a", "FWpL")], at, !0),
1198 | N[O][k](t[g("0x9b", "Bx!c")], st, !0))
1199 | }
1200 |
1201 | function bt() {
1202 | [st, at, ot, it][U](function(t) {
1203 | t[L] = (t[L] || [])[g("0x9c", "Ed8T")](-1)
1204 | })
1205 | }
1206 |
1207 | function mt() {
1208 | var t = {};
1209 | if (t[g("0x9d", "h0NV")] = function(t, n) {
1210 | return t > n
1211 | },
1212 | t[g("0x9e", "o(R[")] = function(t, n) {
1213 | return t - n
1214 | },
1215 | $) {
1216 | var n = document[g("0x9f", "4[q*")][g("0xa0", "Qcn!")] || document[g("0xa1", "$^D!")][g("0xa2", "(DVf")];
1217 | return t[g("0xa3", "2xv*")](n, 0) ? (st[L] = [{
1218 | scrollTop: n,
1219 | timestamp: t[g("0xa4", "aMpH")](G[m](), J)
1220 | }],
1221 | st[g("0x76", "UAA6")]()) : []
1222 | }
1223 | return st[g("0xa5", "ogba")]()
1224 | };
1225 |
1226 |
1227 |
1228 |
1229 | //var tr_ = {};------------------------------------------------------------------------------------------------------------------------------------------------------
1230 | var tr_ = {};
1231 | (function(t, n, r) {
1232 | "use strict";
1233 |
1234 | var n = tr_;
1235 |
1236 | function i(t) {
1237 | for (var n = t.length; --n >= 0;)
1238 | t[n] = 0
1239 | }
1240 | var a = 0,
1241 | o = 256,
1242 | s = o + 1 + 29,
1243 | u = 30,
1244 | c = 19,
1245 | f = 2 * s + 1,
1246 | h = 15,
1247 | w = 16,
1248 | l = 256,
1249 | d = 16,
1250 | _ = 17,
1251 | p = 18,
1252 | x = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0],
1253 | g = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],
1254 | v = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
1255 | b = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
1256 | m = new Array(2 * (s + 2));
1257 | i(m);
1258 | var y = new Array(2 * u);
1259 | i(y);
1260 | var D = new Array(512);
1261 | i(D);
1262 | var C = new Array(256);
1263 | i(C);
1264 | var K = new Array(29);
1265 | i(K);
1266 | var k, O, z, A = new Array(u);
1267 |
1268 | function B(t, n, r, e, i) {
1269 | this.static_tree = t,
1270 | this.extra_bits = n,
1271 | this.extra_base = r,
1272 | this.elems = e,
1273 | this.max_length = i,
1274 | this.has_stree = t && t.length
1275 | }
1276 |
1277 | function M(t, n) {
1278 | this.dyn_tree = t,
1279 | this.max_code = 0,
1280 | this.stat_desc = n
1281 | }
1282 |
1283 | function q(t) {
1284 | return t < 256 ? D[t] : D[256 + (t >>> 7)]
1285 | }
1286 |
1287 | function j(t, n) {
1288 | t.pending_buf[t.pending++] = 255 & n,
1289 | t.pending_buf[t.pending++] = n >>> 8 & 255
1290 | }
1291 |
1292 | function T(t, n, r) {
1293 | t.bi_valid > w - r ? (t.bi_buf |= n << t.bi_valid & 65535,
1294 | j(t, t.bi_buf),
1295 | t.bi_buf = n >> w - t.bi_valid,
1296 | t.bi_valid += r - w) : (t.bi_buf |= n << t.bi_valid & 65535,
1297 | t.bi_valid += r)
1298 | }
1299 |
1300 | function Q(t, n, r) {
1301 | T(t, r[2 * n], r[2 * n + 1])
1302 | }
1303 |
1304 | function R(t, n) {
1305 | var r = 0;
1306 | do {
1307 | r |= 1 & t,
1308 | t >>>= 1,
1309 | r <<= 1
1310 | } while (--n > 0);
1311 | return r >>> 1
1312 | }
1313 |
1314 | function F(t, n, r) {
1315 | var e, i, a = new Array(h + 1),
1316 | o = 0;
1317 | for (e = 1; e <= h; e++)
1318 | a[e] = o = o + r[e - 1] << 1;
1319 | for (i = 0; i <= n; i++) {
1320 | var s = t[2 * i + 1];
1321 | 0 !== s && (t[2 * i] = R(a[s]++, s))
1322 | }
1323 | }
1324 |
1325 | function S(t) {
1326 | var n;
1327 | for (n = 0; n < s; n++)
1328 | t.dyn_ltree[2 * n] = 0;
1329 | for (n = 0; n < u; n++)
1330 | t.dyn_dtree[2 * n] = 0;
1331 | for (n = 0; n < c; n++)
1332 | t.bl_tree[2 * n] = 0;
1333 | t.dyn_ltree[2 * l] = 1,
1334 | t.opt_len = t.static_len = 0,
1335 | t.last_lit = t.matches = 0
1336 | }
1337 |
1338 | function E(t) {
1339 | t.bi_valid > 8 ? j(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf),
1340 | t.bi_buf = 0,
1341 | t.bi_valid = 0
1342 | }
1343 |
1344 | function U(t, n, r, e) {
1345 | var i = 2 * n,
1346 | a = 2 * r;
1347 | return t[i] < t[a] || t[i] === t[a] && e[n] <= e[r]
1348 | }
1349 |
1350 | function I(t, n, r) {
1351 | for (var e = t.heap[r], i = r << 1; i <= t.heap_len && (i < t.heap_len && U(n, t.heap[i + 1], t.heap[i], t.depth) &&
1352 | i++,
1353 | !U(n, e, t.heap[i], t.depth));)
1354 | t.heap[r] = t.heap[i],
1355 | r = i,
1356 | i <<= 1;
1357 | t.heap[r] = e
1358 | }
1359 |
1360 | function H(t, n, r) {
1361 | var e, i, a, s, u = 0;
1362 | if (0 !== t.last_lit)
1363 | do {
1364 | e = t.pending_buf[t.d_buf + 2 * u] << 8 | t.pending_buf[t.d_buf + 2 * u + 1],
1365 | i = t.pending_buf[t.l_buf + u],
1366 | u++,
1367 | 0 === e ? Q(t, i, n) : (Q(t, (a = C[i]) + o + 1, n),
1368 | 0 !== (s = x[a]) && T(t, i -= K[a], s),
1369 | Q(t, a = q(--e), r),
1370 | 0 !== (s = g[a]) && T(t, e -= A[a], s))
1371 | } while (u < t.last_lit);
1372 | Q(t, l, n)
1373 | }
1374 |
1375 | function L(t, n) {
1376 | var r, e, i, a = n.dyn_tree,
1377 | o = n.stat_desc.static_tree,
1378 | s = n.stat_desc.has_stree,
1379 | u = n.stat_desc.elems,
1380 | c = -1;
1381 | for (t.heap_len = 0,
1382 | t.heap_max = f,
1383 | r = 0; r < u; r++)
1384 | 0 !== a[2 * r] ? (t.heap[++t.heap_len] = c = r,
1385 | t.depth[r] = 0) : a[2 * r + 1] = 0;
1386 | for (; t.heap_len < 2;)
1387 | a[2 * (i = t.heap[++t.heap_len] = c < 2 ? ++c : 0)] = 1,
1388 | t.depth[i] = 0,
1389 | t.opt_len--,
1390 | s && (t.static_len -= o[2 * i + 1]);
1391 | for (n.max_code = c,
1392 | r = t.heap_len >> 1; r >= 1; r--)
1393 | I(t, a, r);
1394 | i = u;
1395 | do {
1396 | r = t.heap[1],
1397 | t.heap[1] = t.heap[t.heap_len--],
1398 | I(t, a, 1),
1399 | e = t.heap[1],
1400 | t.heap[--t.heap_max] = r,
1401 | t.heap[--t.heap_max] = e,
1402 | a[2 * i] = a[2 * r] + a[2 * e],
1403 | t.depth[i] = (t.depth[r] >= t.depth[e] ? t.depth[r] : t.depth[e]) + 1,
1404 | a[2 * r + 1] = a[2 * e + 1] = i,
1405 | t.heap[1] = i++,
1406 | I(t, a, 1)
1407 | } while (t.heap_len >= 2);
1408 | t.heap[--t.heap_max] = t.heap[1],
1409 | function(t, n) {
1410 | var r, e, i, a, o, s, u = n.dyn_tree,
1411 | c = n.max_code,
1412 | w = n.stat_desc.static_tree,
1413 | l = n.stat_desc.has_stree,
1414 | d = n.stat_desc.extra_bits,
1415 | _ = n.stat_desc.extra_base,
1416 | p = n.stat_desc.max_length,
1417 | x = 0;
1418 | for (a = 0; a <= h; a++)
1419 | t.bl_count[a] = 0;
1420 | for (u[2 * t.heap[t.heap_max] + 1] = 0,
1421 | r = t.heap_max + 1; r < f; r++)
1422 | (a = u[2 * u[2 * (e = t.heap[r]) + 1] + 1] + 1) > p && (a = p,
1423 | x++),
1424 | u[2 * e + 1] = a,
1425 | e > c || (t.bl_count[a]++,
1426 | o = 0,
1427 | e >= _ && (o = d[e - _]),
1428 | s = u[2 * e],
1429 | t.opt_len += s * (a + o),
1430 | l && (t.static_len += s * (w[2 * e + 1] + o)));
1431 | if (0 !== x) {
1432 | do {
1433 | for (a = p - 1; 0 === t.bl_count[a];)
1434 | a--;
1435 | t.bl_count[a]--,
1436 | t.bl_count[a + 1] += 2,
1437 | t.bl_count[p]--,
1438 | x -= 2
1439 | } while (x > 0);
1440 | for (a = p; 0 !== a; a--)
1441 | for (e = t.bl_count[a]; 0 !== e;)
1442 | (i = t.heap[--r]) > c || (u[2 * i + 1] !== a && (t.opt_len += (a - u[2 * i + 1]) * u[2 * i],
1443 | u[2 * i + 1] = a),
1444 | e--)
1445 | }
1446 | }(t, n),
1447 | F(a, c, t.bl_count)
1448 | }
1449 |
1450 | function J(t, n, r) {
1451 | var e, i, a = -1,
1452 | o = n[1],
1453 | s = 0,
1454 | u = 7,
1455 | c = 4;
1456 | for (0 === o && (u = 138,
1457 | c = 3),
1458 | n[2 * (r + 1) + 1] = 65535,
1459 | e = 0; e <= r; e++)
1460 | i = o,
1461 | o = n[2 * (e + 1) + 1],
1462 | ++s < u && i === o || (s < c ? t.bl_tree[2 * i] += s : 0 !== i ? (i !== a && t.bl_tree[2 * i]++,
1463 | t.bl_tree[2 * d]++) : s <= 10 ? t.bl_tree[2 * _]++ : t.bl_tree[2 * p]++,
1464 | s = 0,
1465 | a = i,
1466 | 0 === o ? (u = 138,
1467 | c = 3) : i === o ? (u = 6,
1468 | c = 3) : (u = 7,
1469 | c = 4))
1470 | }
1471 |
1472 | function V(t, n, r) {
1473 | var e, i, a = -1,
1474 | o = n[1],
1475 | s = 0,
1476 | u = 7,
1477 | c = 4;
1478 | for (0 === o && (u = 138,
1479 | c = 3),
1480 | e = 0; e <= r; e++)
1481 | if (i = o,
1482 | o = n[2 * (e + 1) + 1],
1483 | !(++s < u && i === o)) {
1484 | if (s < c)
1485 | do {
1486 | Q(t, i, t.bl_tree)
1487 | } while (0 != --s);
1488 | else
1489 | 0 !== i ? (i !== a && (Q(t, i, t.bl_tree),
1490 | s--),
1491 | Q(t, d, t.bl_tree),
1492 | T(t, s - 3, 2)) : s <= 10 ? (Q(t, _, t.bl_tree),
1493 | T(t, s - 3, 3)) : (Q(t, p, t.bl_tree),
1494 | T(t, s - 11, 7));
1495 | s = 0,
1496 | a = i,
1497 | 0 === o ? (u = 138,
1498 | c = 3) : i === o ? (u = 6,
1499 | c = 3) : (u = 7,
1500 | c = 4)
1501 | }
1502 | }
1503 | i(A);
1504 | var P = !1;
1505 |
1506 | function X(t, n, r, i) {
1507 | function arraySet(t, n, r, e, i) {
1508 | if (n.subarray && t.subarray)
1509 | t.set(n.subarray(r, r + e), i);
1510 | else
1511 | for (var a = 0; a < e; a++)
1512 | t[i + a] = n[r + a]
1513 | };
1514 | T(t, (a << 1) + (i ? 1 : 0), 3),
1515 | function(t, n, r, i) {
1516 | E(t),
1517 | j(t, r),
1518 | j(t, ~r),
1519 | arraySet(t.pending_buf, t.window, n, r, t.pending),
1520 | t.pending += r
1521 | }(t, n, r)
1522 | }
1523 | n._tr_init = function(t) {
1524 | P || (function() {
1525 | var t, n, r, e, i, a = new Array(h + 1);
1526 | for (r = 0,
1527 | e = 0; e < 28; e++)
1528 | for (K[e] = r,
1529 | t = 0; t < 1 << x[e]; t++)
1530 | C[r++] = e;
1531 | for (C[r - 1] = e,
1532 | i = 0,
1533 | e = 0; e < 16; e++)
1534 | for (A[e] = i,
1535 | t = 0; t < 1 << g[e]; t++)
1536 | D[i++] = e;
1537 | for (i >>= 7; e < u; e++)
1538 | for (A[e] = i << 7,
1539 | t = 0; t < 1 << g[e] - 7; t++)
1540 | D[256 + i++] = e;
1541 | for (n = 0; n <= h; n++)
1542 | a[n] = 0;
1543 | for (t = 0; t <= 143;)
1544 | m[2 * t + 1] = 8,
1545 | t++,
1546 | a[8]++;
1547 | for (; t <= 255;)
1548 | m[2 * t + 1] = 9,
1549 | t++,
1550 | a[9]++;
1551 | for (; t <= 279;)
1552 | m[2 * t + 1] = 7,
1553 | t++,
1554 | a[7]++;
1555 | for (; t <= 287;)
1556 | m[2 * t + 1] = 8,
1557 | t++,
1558 | a[8]++;
1559 | for (F(m, s + 1, a),
1560 | t = 0; t < u; t++)
1561 | y[2 * t + 1] = 5,
1562 | y[2 * t] = R(t, 5);
1563 | k = new B(m, x, o + 1, s, h),
1564 | O = new B(y, g, 0, u, h),
1565 | z = new B(new Array(0), v, 0, c, 7)
1566 | }(),
1567 | P = !0),
1568 | t.l_desc = new M(t.dyn_ltree, k),
1569 | t.d_desc = new M(t.dyn_dtree, O),
1570 | t.bl_desc = new M(t.bl_tree, z),
1571 | t.bi_buf = 0,
1572 | t.bi_valid = 0,
1573 | S(t)
1574 | },
1575 | n._tr_stored_block = X,
1576 | n._tr_flush_block = function(t, n, r, e) {
1577 | var i, a, s = 0;
1578 | t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = function(t) {
1579 | var n, r = 4093624447;
1580 | for (n = 0; n <= 31; n++,
1581 | r >>>= 1)
1582 | if (1 & r && 0 !== t.dyn_ltree[2 * n])
1583 | return 0;
1584 | if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26])
1585 | return 1;
1586 | for (n = 32; n < o; n++)
1587 | if (0 !== t.dyn_ltree[2 * n])
1588 | return 1;
1589 | return 0
1590 | }(t)),
1591 | L(t, t.l_desc),
1592 | L(t, t.d_desc),
1593 | s = function(t) {
1594 | var n;
1595 | for (J(t, t.dyn_ltree, t.l_desc.max_code),
1596 | J(t, t.dyn_dtree, t.d_desc.max_code),
1597 | L(t, t.bl_desc),
1598 | n = c - 1; n >= 3 && 0 === t.bl_tree[2 * b[n] + 1]; n--)
1599 | ;
1600 | return t.opt_len += 3 * (n + 1) + 5 + 5 + 4,
1601 | n
1602 | }(t),
1603 | i = t.opt_len + 3 + 7 >>> 3,
1604 | (a = t.static_len + 3 + 7 >>> 3) <= i && (i = a)) : i = a = r + 5,
1605 | r + 4 <= i && -1 !== n ? X(t, n, r, e) : 4 === t.strategy || a === i ? (T(t, 2 + (e ? 1 : 0), 3),
1606 | H(t, m, y)) : (T(t, 4 + (e ? 1 : 0), 3),
1607 | function(t, n, r, e) {
1608 | var i;
1609 | for (T(t, n - 257, 5),
1610 | T(t, r - 1, 5),
1611 | T(t, e - 4, 4),
1612 | i = 0; i < e; i++)
1613 | T(t, t.bl_tree[2 * b[i] + 1], 3);
1614 | V(t, t.dyn_ltree, n - 1),
1615 | V(t, t.dyn_dtree, r - 1)
1616 | }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1),
1617 | H(t, t.dyn_ltree, t.dyn_dtree)),
1618 | S(t),
1619 | e && E(t)
1620 | },
1621 | n._tr_tally = function(t, n, r) {
1622 | return t.pending_buf[t.d_buf + 2 * t.last_lit] = n >>> 8 & 255,
1623 | t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & n,
1624 | t.pending_buf[t.l_buf + t.last_lit] = 255 & r,
1625 | t.last_lit++,
1626 | 0 === n ? t.dyn_ltree[2 * r]++ : (t.matches++,
1627 | n--,
1628 | t.dyn_ltree[2 * (C[r] + o + 1)]++,
1629 | t.dyn_dtree[2 * q(n)]++),
1630 | t.last_lit === t.lit_bufsize - 1
1631 | },
1632 | n._tr_align = function(t) {
1633 | T(t, 2, 3),
1634 | Q(t, l, m),
1635 | function(t) {
1636 | 16 === t.bi_valid ? (j(t, t.bi_buf),
1637 | t.bi_buf = 0,
1638 | t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf,
1639 | t.bi_buf >>= 8,
1640 | t.bi_valid -= 8)
1641 | }(t)
1642 | }
1643 | })();
1644 | //-----------------------------------------------------------------------------------------------------------------------------------------------------
1645 |
1646 | function shrinkBuf(t, n) {
1647 | return t.length === n ? t : t.subarray ? t.subarray(0, n) : (t.length = n,
1648 | t)
1649 | }
1650 |
1651 |
1652 |
1653 |
1654 | //deflateint2-----------------------------------------------------------------------------------------------------------------------------------------
1655 | (function(t, n, r) {
1656 | "use strict";
1657 | var n = deflate2;
1658 | var e,
1659 | o = function(t, n, r, e) {
1660 | for (var i = 65535 & t | 0, a = t >>> 16 & 65535 | 0, o = 0; 0 !== r;) {
1661 | r -= o = r > 2e3 ? 2e3 : r;
1662 | do {
1663 | a = a + (i = i + n[e++] | 0) | 0
1664 | } while (--o);
1665 | i %= 65521,
1666 | a %= 65521
1667 | }
1668 | return i | a << 16 | 0
1669 | },
1670 | u = {
1671 | 0: "",
1672 | 1: "stream end",
1673 | 2: "need dictionary",
1674 | 1: "file error",
1675 | 2: "stream error",
1676 | 3: "data error",
1677 | 4: "insufficient memory",
1678 | 5: "buffer error",
1679 | 6: "incompatible version"
1680 | },
1681 | c = 0,
1682 | f = 4,
1683 | h = 0,
1684 | w = -2,
1685 | l = -1,
1686 | d = 1,
1687 | _ = 4,
1688 | p = 2,
1689 | x = 8,
1690 | g = 9,
1691 | v = 286,
1692 | b = 30,
1693 | m = 19,
1694 | y = 2 * v + 1,
1695 | D = 15,
1696 | C = 3,
1697 | K = 258,
1698 | k = K + C + 1,
1699 | O = 42,
1700 | z = 103,
1701 | A = 113,
1702 | B = 666,
1703 | M = 1,
1704 | q = 2,
1705 | j = 3,
1706 | T = 4;
1707 |
1708 | function Q(t, n) {
1709 | return t.msg = u[n],
1710 | n
1711 | }
1712 |
1713 | function R(t) {
1714 | return (t << 1) - (t > 4 ? 9 : 0)
1715 | }
1716 |
1717 | function F(t) {
1718 | for (var n = t.length; --n >= 0;)
1719 | t[n] = 0
1720 | }
1721 |
1722 | function arraySet(t, n, r, e, i) {
1723 | if (n.subarray && t.subarray)
1724 | t.set(n.subarray(r, r + e), i);
1725 | else
1726 | for (var a = 0; a < e; a++)
1727 | t[i + a] = n[r + a]
1728 | };
1729 |
1730 | function S(t) {
1731 |
1732 | var n = t.state,
1733 | r = n.pending;
1734 | r > t.avail_out && (r = t.avail_out),
1735 | 0 !== r && (arraySet(t.output, n.pending_buf, n.pending_out, r, t.next_out),
1736 | t.next_out += r,
1737 | n.pending_out += r,
1738 | t.total_out += r,
1739 | t.avail_out -= r,
1740 | n.pending -= r,
1741 | 0 === n.pending && (n.pending_out = 0))
1742 | }
1743 |
1744 | function E(t, n) {
1745 | tr_._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, n),
1746 | t.block_start = t.strstart,
1747 | S(t.strm)
1748 | }
1749 |
1750 | function U(t, n) {
1751 | t.pending_buf[t.pending++] = n
1752 | }
1753 |
1754 | function I(t, n) {
1755 | t.pending_buf[t.pending++] = n >>> 8 & 255,
1756 | t.pending_buf[t.pending++] = 255 & n
1757 | }
1758 |
1759 | function H(t, n) {
1760 | var r, e, i = t.max_chain_length,
1761 | a = t.strstart,
1762 | o = t.prev_length,
1763 | s = t.nice_match,
1764 | u = t.strstart > t.w_size - k ? t.strstart - (t.w_size - k) : 0,
1765 | c = t.window,
1766 | f = t.w_mask,
1767 | h = t.prev,
1768 | w = t.strstart + K,
1769 | l = c[a + o - 1],
1770 | d = c[a + o];
1771 | t.prev_length >= t.good_match && (i >>= 2),
1772 | s > t.lookahead && (s = t.lookahead);
1773 | do {
1774 | if (c[(r = n) + o] === d && c[r + o - 1] === l && c[r] === c[a] && c[++r] === c[a + 1]) {
1775 | a += 2,
1776 | r++;
1777 | do {} while (c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] &&
1778 | c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && a < w);
1779 | if (e = K - (w - a),
1780 | a = w - K,
1781 | e > o) {
1782 | if (t.match_start = n,
1783 | o = e,
1784 | e >= s)
1785 | break;
1786 | l = c[a + o - 1],
1787 | d = c[a + o]
1788 | }
1789 | }
1790 | } while ((n = h[n & f]) > u && 0 != --i);
1791 | return o <= t.lookahead ? o : t.lookahead
1792 | }
1793 |
1794 | function L(t) {
1795 | var n, r, e, a, u, c, f, h, w, l, d = t.w_size;
1796 | do {
1797 | if (a = t.window_size - t.lookahead - t.strstart,
1798 | t.strstart >= d + (d - k)) {
1799 | arraySet(t.window, t.window, d, d, 0),
1800 | t.match_start -= d,
1801 | t.strstart -= d,
1802 | t.block_start -= d,
1803 | n = r = t.hash_size;
1804 | do {
1805 | e = t.head[--n],
1806 | t.head[n] = e >= d ? e - d : 0
1807 | } while (--r);
1808 | n = r = d;
1809 | do {
1810 | e = t.prev[--n],
1811 | t.prev[n] = e >= d ? e - d : 0
1812 | } while (--r);
1813 | a += d
1814 | }
1815 | if (0 === t.strm.avail_in)
1816 | break;
1817 | if (c = t.strm,
1818 | f = t.window,
1819 | h = t.strstart + t.lookahead,
1820 | w = a,
1821 | l = void 0,
1822 | (l = c.avail_in) > w && (l = w),
1823 | r = 0 === l ? 0 : (c.avail_in -= l,
1824 | arraySet(f, c.input, c.next_in, l, h),
1825 | 1 === c.state.wrap ? c.adler = o(c.adler, f, l, h) : 2 === c.state.wrap && (c.adler = s(c.adler, f, l, h)),
1826 | c.next_in += l,
1827 | c.total_in += l,
1828 | l),
1829 | t.lookahead += r,
1830 | t.lookahead + t.insert >= C)
1831 | for (u = t.strstart - t.insert,
1832 | t.ins_h = t.window[u],
1833 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[u + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^
1834 | t.window[u + C - 1]) & t.hash_mask,
1835 | t.prev[u & t.w_mask] = t.head[t.ins_h],
1836 | t.head[t.ins_h] = u,
1837 | u++,
1838 | t.insert--,
1839 | !(t.lookahead + t.insert < C));)
1840 | ;
1841 | } while (t.lookahead < k && 0 !== t.strm.avail_in)
1842 | }
1843 |
1844 | function J(t, n) {
1845 | for (var r, e;;) {
1846 | if (t.lookahead < k) {
1847 | if (L(t),
1848 | t.lookahead < k && n === c)
1849 | return M;
1850 | if (0 === t.lookahead)
1851 | break
1852 | }
1853 | if (r = 0,
1854 | t.lookahead >= C && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask,
1855 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],
1856 | t.head[t.ins_h] = t.strstart),
1857 | 0 !== r && t.strstart - r <= t.w_size - k && (t.match_length = H(t, r)),
1858 | t.match_length >= C)
1859 | if (e = tr_._tr_tally(t, t.strstart - t.match_start, t.match_length - C),
1860 | t.lookahead -= t.match_length,
1861 | t.match_length <= t.max_lazy_match && t.lookahead >= C) {
1862 | t.match_length--;
1863 | do {
1864 | t.strstart++,
1865 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask,
1866 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],
1867 | t.head[t.ins_h] = t.strstart
1868 | } while (0 != --t.match_length);
1869 | t.strstart++
1870 | } else
1871 | t.strstart += t.match_length,
1872 | t.match_length = 0,
1873 | t.ins_h = t.window[t.strstart],
1874 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask;
1875 | else
1876 | e = tr_._tr_tally(t, 0, t.window[t.strstart]),
1877 | t.lookahead--,
1878 | t.strstart++;
1879 | if (e && (E(t, !1),
1880 | 0 === t.strm.avail_out))
1881 | return M
1882 | }
1883 | return t.insert = t.strstart < C - 1 ? t.strstart : C - 1,
1884 | n === f ? (E(t, !0),
1885 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1),
1886 | 0 === t.strm.avail_out) ? M : q
1887 | }
1888 |
1889 | function V(t, n) {
1890 | for (var r, e, i;;) {
1891 | if (t.lookahead < k) {
1892 | if (L(t),
1893 | t.lookahead < k && n === c)
1894 | return M;
1895 | if (0 === t.lookahead)
1896 | break
1897 | }
1898 | if (r = 0,
1899 | t.lookahead >= C && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask,
1900 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],
1901 | t.head[t.ins_h] = t.strstart),
1902 | t.prev_length = t.match_length,
1903 | t.prev_match = t.match_start,
1904 | t.match_length = C - 1,
1905 | 0 !== r && t.prev_length < t.max_lazy_match && t.strstart - r <= t.w_size - k && (t.match_length = H(t, r),
1906 | t.match_length <= 5 && (t.strategy === d || t.match_length === C && t.strstart - t.match_start > 4096) && (t.match_length =
1907 | C - 1)),
1908 | t.prev_length >= C && t.match_length <= t.prev_length) {
1909 | i = t.strstart + t.lookahead - C,
1910 | e = tr_._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - C),
1911 | t.lookahead -= t.prev_length - 1,
1912 | t.prev_length -= 2;
1913 | do {
1914 | ++t.strstart <= i && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask,
1915 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],
1916 | t.head[t.ins_h] = t.strstart)
1917 | } while (0 != --t.prev_length);
1918 | if (t.match_available = 0,
1919 | t.match_length = C - 1,
1920 | t.strstart++,
1921 | e && (E(t, !1),
1922 | 0 === t.strm.avail_out))
1923 | return M
1924 | } else if (t.match_available) {
1925 | if ((e = tr_._tr_tally(t, 0, t.window[t.strstart - 1])) && E(t, !1),
1926 | t.strstart++,
1927 | t.lookahead--,
1928 | 0 === t.strm.avail_out)
1929 | return M
1930 | } else
1931 | t.match_available = 1,
1932 | t.strstart++,
1933 | t.lookahead--
1934 | }
1935 | return t.match_available && (e = tr_._tr_tally(t, 0, t.window[t.strstart - 1]),
1936 | t.match_available = 0),
1937 | t.insert = t.strstart < C - 1 ? t.strstart : C - 1,
1938 | n === f ? (E(t, !0),
1939 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1),
1940 | 0 === t.strm.avail_out) ? M : q
1941 | }
1942 |
1943 | function P(t, n, r, e, i) {
1944 | this.good_length = t,
1945 | this.max_lazy = n,
1946 | this.nice_length = r,
1947 | this.max_chain = e,
1948 | this.func = i
1949 | }
1950 |
1951 | function X(t) {
1952 | var n;
1953 | return t && t.state ? (t.total_in = t.total_out = 0,
1954 | t.data_type = p,
1955 | (n = t.state).pending = 0,
1956 | n.pending_out = 0,
1957 | n.wrap < 0 && (n.wrap = -n.wrap),
1958 | n.status = n.wrap ? O : A,
1959 | t.adler = 2 === n.wrap ? 0 : 1,
1960 | n.last_flush = c,
1961 | tr_._tr_init(n),
1962 | h) : Q(t, w)
1963 | }
1964 |
1965 | function Z(t) {
1966 | var n, r = X(t);
1967 | return r === h && ((n = t.state).window_size = 2 * n.w_size,
1968 | F(n.head),
1969 | n.max_lazy_match = e[n.level].max_lazy,
1970 | n.good_match = e[n.level].good_length,
1971 | n.nice_match = e[n.level].nice_length,
1972 | n.max_chain_length = e[n.level].max_chain,
1973 | n.strstart = 0,
1974 | n.block_start = 0,
1975 | n.lookahead = 0,
1976 | n.insert = 0,
1977 | n.match_length = n.prev_length = C - 1,
1978 | n.match_available = 0,
1979 | n.ins_h = 0),
1980 | r
1981 | }
1982 |
1983 | function N(t, n, r, e, a, o) {
1984 | if (!t)
1985 | return w;
1986 | var s = 1;
1987 | if (n === l && (n = 6),
1988 | e < 0 ? (s = 0,
1989 | e = -e) : e > 15 && (s = 2,
1990 | e -= 16),
1991 | a < 1 || a > g || r !== x || e < 8 || e > 15 || n < 0 || n > 9 || o < 0 || o > _)
1992 | return Q(t, w);
1993 | 8 === e && (e = 9);
1994 | var u = new function() {
1995 | this.strm = null,
1996 | this.status = 0,
1997 | this.pending_buf = null,
1998 | this.pending_buf_size = 0,
1999 | this.pending_out = 0,
2000 | this.pending = 0,
2001 | this.wrap = 0,
2002 | this.gzhead = null,
2003 | this.gzindex = 0,
2004 | this.method = x,
2005 | this.last_flush = -1,
2006 | this.w_size = 0,
2007 | this.w_bits = 0,
2008 | this.w_mask = 0,
2009 | this.window = null,
2010 | this.window_size = 0,
2011 | this.prev = null,
2012 | this.head = null,
2013 | this.ins_h = 0,
2014 | this.hash_size = 0,
2015 | this.hash_bits = 0,
2016 | this.hash_mask = 0,
2017 | this.hash_shift = 0,
2018 | this.block_start = 0,
2019 | this.match_length = 0,
2020 | this.prev_match = 0,
2021 | this.match_available = 0,
2022 | this.strstart = 0,
2023 | this.match_start = 0,
2024 | this.lookahead = 0,
2025 | this.prev_length = 0,
2026 | this.max_chain_length = 0,
2027 | this.max_lazy_match = 0,
2028 | this.level = 0,
2029 | this.strategy = 0,
2030 | this.good_match = 0,
2031 | this.nice_match = 0,
2032 | this.dyn_ltree = new Uint16Array(2 * y),
2033 | this.dyn_dtree = new Uint16Array(2 * (2 * b + 1)),
2034 | this.bl_tree = new Uint16Array(2 * (2 * m + 1)),
2035 | F(this.dyn_ltree),
2036 | F(this.dyn_dtree),
2037 | F(this.bl_tree),
2038 | this.l_desc = null,
2039 | this.d_desc = null,
2040 | this.bl_desc = null,
2041 | this.bl_count = new Uint16Array(D + 1),
2042 | this.heap = new Uint16Array(2 * v + 1),
2043 | F(this.heap),
2044 | this.heap_len = 0,
2045 | this.heap_max = 0,
2046 | this.depth = new Uint16Array(2 * v + 1),
2047 | F(this.depth),
2048 | this.l_buf = 0,
2049 | this.lit_bufsize = 0,
2050 | this.last_lit = 0,
2051 | this.d_buf = 0,
2052 | this.opt_len = 0,
2053 | this.static_len = 0,
2054 | this.matches = 0,
2055 | this.insert = 0,
2056 | this.bi_buf = 0,
2057 | this.bi_valid = 0
2058 | };
2059 | return t.state = u,
2060 | u.strm = t,
2061 | u.wrap = s,
2062 | u.gzhead = null,
2063 | u.w_bits = e,
2064 | u.w_size = 1 << u.w_bits,
2065 | u.w_mask = u.w_size - 1,
2066 | u.hash_bits = a + 7,
2067 | u.hash_size = 1 << u.hash_bits,
2068 | u.hash_mask = u.hash_size - 1,
2069 | u.hash_shift = ~~((u.hash_bits + C - 1) / C),
2070 | u.window = new Uint8Array(2 * u.w_size),
2071 | u.head = new Uint16Array(u.hash_size),
2072 | u.prev = new Uint16Array(u.w_size),
2073 | u.lit_bufsize = 1 << a + 6,
2074 | u.pending_buf_size = 4 * u.lit_bufsize,
2075 | u.pending_buf = new Uint8Array(u.pending_buf_size),
2076 | u.d_buf = 1 * u.lit_bufsize,
2077 | u.l_buf = 3 * u.lit_bufsize,
2078 | u.level = n,
2079 | u.strategy = o,
2080 | u.method = r,
2081 | Z(t)
2082 | }
2083 | e = [new P(0, 0, 0, 0, function(t, n) {
2084 | var r = 65535;
2085 | for (r > t.pending_buf_size - 5 && (r = t.pending_buf_size - 5);;) {
2086 | if (t.lookahead <= 1) {
2087 | if (L(t),
2088 | 0 === t.lookahead && n === c)
2089 | return M;
2090 | if (0 === t.lookahead)
2091 | break
2092 | }
2093 | t.strstart += t.lookahead,
2094 | t.lookahead = 0;
2095 | var e = t.block_start + r;
2096 | if ((0 === t.strstart || t.strstart >= e) && (t.lookahead = t.strstart - e,
2097 | t.strstart = e,
2098 | E(t, !1),
2099 | 0 === t.strm.avail_out))
2100 | return M;
2101 | if (t.strstart - t.block_start >= t.w_size - k && (E(t, !1),
2102 | 0 === t.strm.avail_out))
2103 | return M
2104 | }
2105 | return t.insert = 0,
2106 | n === f ? (E(t, !0),
2107 | 0 === t.strm.avail_out ? j : T) : (t.strstart > t.block_start && (E(t, !1),
2108 | t.strm.avail_out),
2109 | M)
2110 | }), new P(4, 4, 8, 4, J), new P(4, 5, 16, 8, J), new P(4, 6, 32, 32, J), new P(4, 4, 16, 16, V), new P(8, 16, 32,
2111 | 32, V), new P(8, 16, 128, 128, V), new P(8, 32, 128, 256, V), new P(32, 128, 258, 1024, V), new P(32, 258, 258,
2112 | 4096, V)],
2113 | n.deflateInit = function(t, n) {
2114 | return N(t, n, x, 15, 8, 0)
2115 | },
2116 | n.deflateInit2 = N,
2117 | n.deflateReset = Z,
2118 | n.deflateResetKeep = X,
2119 | n.deflateSetHeader = function(t, n) {
2120 | return t && t.state ? 2 !== t.state.wrap ? w : (t.state.gzhead = n,
2121 | h) : w
2122 | },
2123 | n.deflate = function(t, n) {
2124 | var r, i, o, u;
2125 | if (!t || !t.state || n > 5 || n < 0)
2126 | return t ? Q(t, w) : w;
2127 | if (i = t.state,
2128 | !t.output || !t.input && 0 !== t.avail_in || i.status === B && n !== f)
2129 | return Q(t, 0 === t.avail_out ? -5 : w);
2130 | if (i.strm = t,
2131 | r = i.last_flush,
2132 | i.last_flush = n,
2133 | i.status === O)
2134 | if (2 === i.wrap)
2135 | t.adler = 0,
2136 | U(i, 31),
2137 | U(i, 139),
2138 | U(i, 8),
2139 | i.gzhead ? (U(i, (i.gzhead.text ? 1 : 0) + (i.gzhead.hcrc ? 2 : 0) + (i.gzhead.extra ? 4 : 0) + (i.gzhead.name ?
2140 | 8 : 0) + (i.gzhead.comment ? 16 : 0)),
2141 | U(i, 255 & i.gzhead.time),
2142 | U(i, i.gzhead.time >> 8 & 255),
2143 | U(i, i.gzhead.time >> 16 & 255),
2144 | U(i, i.gzhead.time >> 24 & 255),
2145 | U(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0),
2146 | U(i, 255 & i.gzhead.os),
2147 | i.gzhead.extra && i.gzhead.extra.length && (U(i, 255 & i.gzhead.extra.length),
2148 | U(i, i.gzhead.extra.length >> 8 & 255)),
2149 | i.gzhead.hcrc && (t.adler = s(t.adler, i.pending_buf, i.pending, 0)),
2150 | i.gzindex = 0,
2151 | i.status = 69) : (U(i, 0),
2152 | U(i, 0),
2153 | U(i, 0),
2154 | U(i, 0),
2155 | U(i, 0),
2156 | U(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0),
2157 | U(i, 3),
2158 | i.status = A);
2159 | else {
2160 | var l = x + (i.w_bits - 8 << 4) << 8;
2161 | l |= (i.strategy >= 2 || i.level < 2 ? 0 : i.level < 6 ? 1 : 6 === i.level ? 2 : 3) << 6,
2162 | 0 !== i.strstart && (l |= 32),
2163 | l += 31 - l % 31,
2164 | i.status = A,
2165 | I(i, l),
2166 | 0 !== i.strstart && (I(i, t.adler >>> 16),
2167 | I(i, 65535 & t.adler)),
2168 | t.adler = 1
2169 | }
2170 | if (69 === i.status)
2171 | if (i.gzhead.extra) {
2172 | for (o = i.pending; i.gzindex < (65535 & i.gzhead.extra.length) && (i.pending !== i.pending_buf_size || (i.gzhead
2173 | .hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)),
2174 | S(t),
2175 | o = i.pending,
2176 | i.pending !== i.pending_buf_size));)
2177 | U(i, 255 & i.gzhead.extra[i.gzindex]),
2178 | i.gzindex++;
2179 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)),
2180 | i.gzindex === i.gzhead.extra.length && (i.gzindex = 0,
2181 | i.status = 73)
2182 | } else
2183 | i.status = 73;
2184 | if (73 === i.status)
2185 | if (i.gzhead.name) {
2186 | o = i.pending;
2187 | do {
2188 | if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf,
2189 | i.pending - o, o)),
2190 | S(t),
2191 | o = i.pending,
2192 | i.pending === i.pending_buf_size)) {
2193 | u = 1;
2194 | break
2195 | }
2196 | u = i.gzindex < i.gzhead.name.length ? 255 & i.gzhead.name.charCodeAt(i.gzindex++) : 0,
2197 | U(i, u)
2198 | } while (0 !== u);
2199 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)),
2200 | 0 === u && (i.gzindex = 0,
2201 | i.status = 91)
2202 | } else
2203 | i.status = 91;
2204 | if (91 === i.status)
2205 | if (i.gzhead.comment) {
2206 | o = i.pending;
2207 | do {
2208 | if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf,
2209 | i.pending - o, o)),
2210 | S(t),
2211 | o = i.pending,
2212 | i.pending === i.pending_buf_size)) {
2213 | u = 1;
2214 | break
2215 | }
2216 | u = i.gzindex < i.gzhead.comment.length ? 255 & i.gzhead.comment.charCodeAt(i.gzindex++) : 0,
2217 | U(i, u)
2218 | } while (0 !== u);
2219 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)),
2220 | 0 === u && (i.status = z)
2221 | } else
2222 | i.status = z;
2223 | if (i.status === z && (i.gzhead.hcrc ? (i.pending + 2 > i.pending_buf_size && S(t),
2224 | i.pending + 2 <= i.pending_buf_size && (U(i, 255 & t.adler),
2225 | U(i, t.adler >> 8 & 255),
2226 | t.adler = 0,
2227 | i.status = A)) : i.status = A),
2228 | 0 !== i.pending) {
2229 | if (S(t),
2230 | 0 === t.avail_out)
2231 | return i.last_flush = -1,
2232 | h
2233 | } else if (0 === t.avail_in && R(n) <= R(r) && n !== f)
2234 | return Q(t, -5);
2235 | if (i.status === B && 0 !== t.avail_in)
2236 | return Q(t, -5);
2237 | if (0 !== t.avail_in || 0 !== i.lookahead || n !== c && i.status !== B) {
2238 | var d = 2 === i.strategy ? function(t, n) {
2239 | for (var r;;) {
2240 | if (0 === t.lookahead && (L(t),
2241 | 0 === t.lookahead)) {
2242 | if (n === c)
2243 | return M;
2244 | break
2245 | }
2246 | if (t.match_length = 0,
2247 | r = tr_._tr_tally(t, 0, t.window[t.strstart]),
2248 | t.lookahead--,
2249 | t.strstart++,
2250 | r && (E(t, !1),
2251 | 0 === t.strm.avail_out))
2252 | return M
2253 | }
2254 | return t.insert = 0,
2255 | n === f ? (E(t, !0),
2256 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1),
2257 | 0 === t.strm.avail_out) ? M : q
2258 | }(i, n) : 3 === i.strategy ? function(t, n) {
2259 | for (var r, e, i, o, s = t.window;;) {
2260 | if (t.lookahead <= K) {
2261 | if (L(t),
2262 | t.lookahead <= K && n === c)
2263 | return M;
2264 | if (0 === t.lookahead)
2265 | break
2266 | }
2267 | if (t.match_length = 0,
2268 | t.lookahead >= C && t.strstart > 0 && (e = s[i = t.strstart - 1]) === s[++i] && e === s[++i] && e === s[++i]) {
2269 | o = t.strstart + K;
2270 | do {} while (e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] &&
2271 | e ===
2272 | s[++i] && e === s[++i] && i < o);
2273 | t.match_length = K - (o - i),
2274 | t.match_length > t.lookahead && (t.match_length = t.lookahead)
2275 | }
2276 | if (t.match_length >= C ? (r = tr_._tr_tally(t, 1, t.match_length - C),
2277 | t.lookahead -= t.match_length,
2278 | t.strstart += t.match_length,
2279 | t.match_length = 0) : (r = tr_._tr_tally(t, 0, t.window[t.strstart]),
2280 | t.lookahead--,
2281 | t.strstart++),
2282 | r && (E(t, !1),
2283 | 0 === t.strm.avail_out))
2284 | return M
2285 | }
2286 | return t.insert = 0,
2287 | n === f ? (E(t, !0),
2288 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1),
2289 | 0 === t.strm.avail_out) ? M : q
2290 | }(i, n) : e[i.level].func(i, n);
2291 | if (d !== j && d !== T || (i.status = B),
2292 | d === M || d === j)
2293 | return 0 === t.avail_out && (i.last_flush = -1),
2294 | h;
2295 | if (d === q && (1 === n ? tr_._tr_align(i) : 5 !== n && (tr_._tr_stored_block(i, 0, 0, !1),
2296 | 3 === n && (F(i.head),
2297 | 0 === i.lookahead && (i.strstart = 0,
2298 | i.block_start = 0,
2299 | i.insert = 0))),
2300 | S(t),
2301 | 0 === t.avail_out))
2302 | return i.last_flush = -1,
2303 | h
2304 | }
2305 | return n !== f ? h : i.wrap <= 0 ? 1 : (2 === i.wrap ? (U(i, 255 & t.adler),
2306 | U(i, t.adler >> 8 & 255),
2307 | U(i, t.adler >> 16 & 255),
2308 | U(i, t.adler >> 24 & 255),
2309 | U(i, 255 & t.total_in),
2310 | U(i, t.total_in >> 8 & 255),
2311 | U(i, t.total_in >> 16 & 255),
2312 | U(i, t.total_in >> 24 & 255)) : (I(i, t.adler >>> 16),
2313 | I(i, 65535 & t.adler)),
2314 | S(t),
2315 | i.wrap > 0 && (i.wrap = -i.wrap),
2316 | 0 !== i.pending ? h : 1)
2317 | },
2318 | n.deflateEnd = function(t) {
2319 | var n;
2320 | return t && t.state ? (n = t.state.status) !== O && 69 !== n && 73 !== n && 91 !== n && n !== z && n !== A && n !==
2321 | B ? Q(t, w) : (t.state = null,
2322 | n === A ? Q(t, -3) : h) : w
2323 | },
2324 | n.deflateSetDictionary = function(t, n) {
2325 | var r, e, a, s, u, c, f, l, d = n.length;
2326 | if (!t || !t.state)
2327 | return w;
2328 | if (2 === (s = (r = t.state).wrap) || 1 === s && r.status !== O || r.lookahead)
2329 | return w;
2330 | for (1 === s && (t.adler = o(t.adler, n, d, 0)),
2331 | r.wrap = 0,
2332 | d >= r.w_size && (0 === s && (F(r.head),
2333 | r.strstart = 0,
2334 | r.block_start = 0,
2335 | r.insert = 0),
2336 | l = new Uint8Array(r.w_size),
2337 | arraySet(l, n, d - r.w_size, r.w_size, 0),
2338 | n = l,
2339 | d = r.w_size),
2340 | u = t.avail_in,
2341 | c = t.next_in,
2342 | f = t.input,
2343 | t.avail_in = d,
2344 | t.next_in = 0,
2345 | t.input = n,
2346 | L(r); r.lookahead >= C;) {
2347 | e = r.strstart,
2348 | a = r.lookahead - (C - 1);
2349 | do {
2350 | r.ins_h = (r.ins_h << r.hash_shift ^ r.window[e + C - 1]) & r.hash_mask,
2351 | r.prev[e & r.w_mask] = r.head[r.ins_h],
2352 | r.head[r.ins_h] = e,
2353 | e++
2354 | } while (--a);
2355 | r.strstart = e,
2356 | r.lookahead = C - 1,
2357 | L(r)
2358 | }
2359 | return r.strstart += r.lookahead,
2360 | r.block_start = r.strstart,
2361 | r.insert = r.lookahead,
2362 | r.lookahead = 0,
2363 | r.match_length = r.prev_length = C - 1,
2364 | r.match_available = 0,
2365 | t.next_in = c,
2366 | t.input = f,
2367 | t.avail_in = u,
2368 | r.wrap = s,
2369 | h
2370 | },
2371 | n.deflateInfo = "pako deflate (from Nodeca project)"
2372 | })()
2373 |
2374 |
2375 | //-----------------------------------------------------------------------------------------------------------------------------------------------------
2376 | function flattenChunks(t) {
2377 | var n, r, e, i, a, o;
2378 | for (e = 0,
2379 | n = 0,
2380 | r = t.length; n < r; n++)
2381 | e += t[n].length;
2382 | for (o = new Uint8Array(e),
2383 | i = 0,
2384 | n = 0,
2385 | r = t.length; n < r; n++)
2386 | a = t[n],
2387 | o.set(a, i),
2388 | i += a.length;
2389 | return o
2390 | }
2391 | //deflate_init------------------------------------------------------------------------------------------------------------------------------------------
2392 | function i_assign(t) {
2393 | var e = function(t) {
2394 | return typeof t
2395 | }
2396 | for (var n = Array.prototype.slice.call(arguments, 1); n.length;) {
2397 | var r = n.shift();
2398 | if (r) {
2399 | if ("object" !== (void 0 === r ? "undefined" : e(r)))
2400 | throw new TypeError(r + "must be non-object");
2401 | for (var i in r)
2402 | a(r, i) && (t[i] = r[i])
2403 | }
2404 | }
2405 | return t
2406 | };
2407 | (function(t, n, r) {
2408 | "use strict";
2409 |
2410 | var u = Object.prototype.toString,
2411 | c = 0,
2412 | f = -1,
2413 | h = 0,
2414 | w = 8;
2415 | n = deflate;
2416 |
2417 | function s() {
2418 | this.input = null,
2419 | this.next_in = 0,
2420 | this.avail_in = 0,
2421 | this.total_in = 0,
2422 | this.output = null,
2423 | this.next_out = 0,
2424 | this.avail_out = 0,
2425 | this.total_out = 0,
2426 | this.msg = "",
2427 | this.state = null,
2428 | this.data_type = 2,
2429 | this.adler = 0
2430 | };
2431 |
2432 | function l(t) {
2433 | if (!(this instanceof l))
2434 | return new l(t);
2435 | this.options = i_assign({
2436 | level: f,
2437 | method: w,
2438 | chunkSize: 16384,
2439 | windowBits: 15,
2440 | memLevel: 8,
2441 | strategy: h,
2442 | to: ""
2443 | }, t || {});
2444 | var n = this.options;
2445 | n.raw && n.windowBits > 0 ? n.windowBits = -n.windowBits : n.gzip && n.windowBits > 0 && n.windowBits < 16 && (n.windowBits +=
2446 | 16),
2447 | this.err = 0,
2448 | this.msg = "",
2449 | this.ended = !1,
2450 | this.chunks = [],
2451 | this.strm = new s,
2452 | this.strm.avail_out = 0;
2453 | var r = deflate2.deflateInit2(this.strm, n.level, n.method, n.windowBits, n.memLevel, n.strategy);
2454 | if (r !== c)
2455 | throw new Error(o[r]);
2456 | if (n.header && deflate2.deflateSetHeader(this.strm, n.header),
2457 | n.dictionary) {
2458 | var d;
2459 | if (d = "string" == typeof n.dictionary ? a.string2buf(n.dictionary) : "[object ArrayBuffer]" === u.call(n.dictionary) ?
2460 | new Uint8Array(n.dictionary) : n.dictionary,
2461 | (r = deflate2.deflateSetDictionary(this.strm, d)) !== c)
2462 | throw new Error(o[r]);
2463 | this._dict_set = !0
2464 | }
2465 | }
2466 |
2467 | function d(t, n) {
2468 | var r = new l(n);
2469 | if (r.push(t, !0),
2470 | r.err)
2471 | throw r.msg || o[r.err];
2472 | return r.result
2473 | }
2474 | l.prototype.push = function(t, n) {
2475 | var r, o, s = this.strm,
2476 | f = this.options.chunkSize;
2477 | if (this.ended)
2478 | return !1;
2479 | o = n === ~~n ? n : !0 === n ? 4 : 0,
2480 | "string" == typeof t ? s.input = a.string2buf(t) : "[object ArrayBuffer]" === u.call(t) ? s.input = new Uint8Array(
2481 | t) : s.input = t,
2482 | s.next_in = 0,
2483 | s.avail_in = s.input.length;
2484 | do {
2485 | if (0 === s.avail_out && (s.output = new Uint8Array(f),
2486 | s.next_out = 0,
2487 | s.avail_out = f),
2488 | 1 !== (r = deflate2.deflate(s, o)) && r !== c)
2489 | return this.onEnd(r),
2490 | this.ended = !0,
2491 | !1;
2492 | 0 !== s.avail_out && (0 !== s.avail_in || 4 !== o && 2 !== o) || ("string" === this.options.to ? this.onData(a.buf2binstring(
2493 | shrinkBuf(s.output, s.next_out))) : this.onData(shrinkBuf(s.output, s.next_out)))
2494 | } while ((s.avail_in > 0 || 0 === s.avail_out) && 1 !== r);
2495 | return 4 === o ? (r = deflate2.deflateEnd(this.strm),
2496 | this.onEnd(r),
2497 | this.ended = !0,
2498 | r === c) : 2 !== o || (this.onEnd(c),
2499 | s.avail_out = 0,
2500 | !0)
2501 | },
2502 | l.prototype.onData = function(t) {
2503 | this.chunks.push(t)
2504 | },
2505 | l.prototype.onEnd = function(t) {
2506 | t === c && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = flattenChunks(this
2507 | .chunks)),
2508 | this.chunks = [],
2509 | this.err = t,
2510 | this.msg = this.strm.msg
2511 | },
2512 | n.Deflate = l,
2513 | n.deflate = d,
2514 | n.deflateRaw = function(t, n) {
2515 | return (n = n || {}).raw = !0,
2516 | d(t, n)
2517 | },
2518 | n.gzip = function(t, n) {
2519 | return (n = n || {}).gzip = !0,
2520 | d(t, n)
2521 | }
2522 | })()
2523 | //e_deflate------------------------------------------------------------------------------------------------------------------------------------------------
2524 |
2525 |
2526 |
2527 | //lll--------------------------------------------------------------------------------------------------------------------------------------------
2528 | function yt() {
2529 | var t, n = {};
2530 | n[g("0xa6", "TNEu")] = function(t) {
2531 | return t()
2532 | },
2533 | n[g("0xa7", "Bx!c")] = g("0xa8", "8ZIE"),
2534 | n[g("0xa9", "$^D!")] = function(t, n, r) {
2535 | return t(n, r)
2536 | },
2537 | n[g("0xaa", "TNEu")] = function(t, n) {
2538 | return t < n
2539 | },
2540 | n[g("0xab", "FWpL")] = function(t, n) {
2541 | return t === n
2542 | },
2543 | n[g("0xac", "zQEU")] = function(t, n) {
2544 | return t > n
2545 | },
2546 | n[g("0xad", "!Ry0")] = function(t, n) {
2547 | return t <= n
2548 | },
2549 | n[g("0xae", "e6f^")] = function(t, n) {
2550 | return t - n
2551 | },
2552 | n[g("0xaf", "Bx!c")] = function(t, n) {
2553 | return t << n
2554 | },
2555 | n[g("0xb0", "TNEu")] = function(t, n) {
2556 | return t - n
2557 | },
2558 | n[g("0xb1", "7sIF")] = function(t, n) {
2559 | return t << n
2560 | },
2561 | n[g("0xb2", "Ja(b")] = g("0xb3", "XimS"),
2562 | n[g("0xb4", "5%pL")] = function(t, n) {
2563 | return t + n
2564 | },
2565 | n[g("0xb5", "hI@*")] = g("0xb6", "4[q*"),
2566 | n[g("0xb7", "7qw^")] = g("0xb8", "o(R[");
2567 | var r = (t = [])[E].apply(t, [n[g("0xb9", "rUI6")](mt), $ ? ot[g("0x84", "(DVf")]() : at[g("0xba", "TNEu")](), it[g(
2568 | "0xbb", "7z7d")](), ut[g("0xba", "TNEu")](), ct[g("0xbb", "7z7d")](), ft[g("0x8b", "7sIF")](), ht[g("0xbc",
2569 | "c9Yw")](), wt[g("0xa5", "ogba")](), lt[g("0xbd", "q2rP")](), dt[g("0xbe", "Ed8T")](), _t[g("0xbf", "rqNV")](),
2570 | pt[g("0xc0", "!Ry0")]()
2571 | ].concat(function(t) {
2572 | if (true) {
2573 | for (var n = 0, r = Array(t.length); n < t.length; n++)
2574 | r[n] = t[n];
2575 | return r
2576 | }
2577 | return c(t)
2578 | }(xt[g("0xc0", "!Ry0")]())));
2579 | n[g("0xc1", "2xv*")](setTimeout, function() {
2580 | n[g("0xc2", "ogba")](bt)
2581 | }, 0);
2582 | for (var e = r[S][g("0xc3", "zQEU")](2)[g("0xc4", "cZ6)")](""), i = 0; n[g("0xc5", "ogba")](e[S], 16); i += 1)
2583 | e[g("0xc6", "(DVf")]("0");
2584 | e = e[g("0xc7", "CK20")]("");
2585 | var a = [];
2586 |
2587 | function h(t, n) {
2588 | var r = String(t)
2589 | return parseInt(r, n >>> 0 || (false ? 16 : 10))
2590 | };
2591 | n[g("0xc8", "yuh1")](r[S], 0) ? a[I](0, 0) : n[g("0xc9", "c9Yw")](r[S], 0) && n[g("0xca", "ud5t")](r[S], n[g("0xcb",
2592 | "Ja(b")](n[g("0xcc", "Ja(b")](1, 8), 1)) ? a[I](0, r[S]) : n[g("0xcd", "Bx!c")](r[S], n[g("0xce", "Ja(b")](n[g(
2593 | "0xcf", "5%pL")](1, 8), 1)) && a[I](n[g("0xd0", "Ja(b")](h, e[y](0, 8), 2), n[g("0xd1", "yuh1")](h, e[y](8, 16), 2)),
2594 | r = [][E]([1], [0, 0, 0], a, r);
2595 |
2596 | // function defalte(t, n) {
2597 | // var r = new lll(n);
2598 | // if (r.push(t, !0),
2599 | // r.err)
2600 | // throw r.msg || o[r.err];
2601 | // return r.result
2602 | // };
2603 | var s = deflate.deflate(r),
2604 | u = [][g("0xd3", "Qcn!")][g("0xd4", "Qcn!")](s, function(t) {
2605 | return String[n[g("0xd5", "aVX(")]](t)
2606 | });
2607 | return n[g("0xd6", "!Ry0")](n[g("0xd7", "KX$#")], encrypt[n[g("0xd8", "UAA6")]](u[g("0xd9", "KX$#")]("")))
2608 | }
2609 |
2610 | function result(url) {
2611 | href_data = url;
2612 | console.log(href_data)
2613 | return yt()
2614 | }
2615 | console.log(result(
2616 | "http://mobile.yangkeduo.com/search_result.html?search_key=%E5%AD%A6%E7%94%9F%E6%96%87%E5%85%B7%E7%94%A8%E5%93%81%E7%AC%94"
2617 | ))
--------------------------------------------------------------------------------