├── .gitignore ├── Bilibili ├── __init__.py ├── advanced_setting.py ├── check.py ├── core.py ├── decode.py ├── download.py ├── login.py └── settings.py ├── MainGUI.ui ├── README.md ├── TerraHistoricus └── __init__.py ├── main.py ├── main.spec ├── setting.py ├── source ├── main.ico ├── main.qrc └── main_rc.py ├── ui_MainGUI.py └── upx.exe /.gitignore: -------------------------------------------------------------------------------- 1 | /venv/ 2 | /B站漫画下载/ 3 | /.idea/ 4 | /build/ 5 | /dist/ 6 | /version.txt 7 | /Bilibili漫画下载器.exe.spec 8 | -------------------------------------------------------------------------------- /Bilibili/__init__.py: -------------------------------------------------------------------------------- 1 | def download_bilibili(manga_id: int, manga_range: str): 2 | pass 3 | -------------------------------------------------------------------------------- /Bilibili/advanced_setting.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/Bilibili/advanced_setting.py -------------------------------------------------------------------------------- /Bilibili/check.py: -------------------------------------------------------------------------------- 1 | def check_manga_id(manga_id: int): 2 | pass 3 | 4 | 5 | def check_manga_range(manga_range: str): 6 | pass 7 | -------------------------------------------------------------------------------- /Bilibili/core.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/Bilibili/core.py -------------------------------------------------------------------------------- /Bilibili/decode.py: -------------------------------------------------------------------------------- 1 | import json 2 | import numpy as np 3 | import zipfile 4 | import io 5 | from Bilibili.settings import url_ImageToken 6 | import requests 7 | 8 | from Bilibili.settings import headers 9 | 10 | 11 | def decode_index_data(season_id: int, episode_id: int, buf): 12 | u = [66, 73, 76, 73, 67, 79, 77, 73, 67] 13 | length = len(u) 14 | e = buf[length:] 15 | # print(buf) 16 | _e = [] 17 | for i in range(len(e)): 18 | _e.append(e[i]) 19 | e = np.uint8(_e) 20 | # print(e) 21 | n = [0, 0, 0, 0, 0, 0, 0, 0] 22 | n = np.array(n, dtype='uint8') 23 | n[0] = episode_id 24 | n[1] = episode_id >> 8 25 | n[2] = episode_id >> 16 26 | n[3] = episode_id >> 24 27 | n[4] = season_id 28 | n[5] = season_id >> 8 29 | n[6] = season_id >> 16 30 | n[7] = season_id >> 24 31 | # print(n) 32 | _n = 0 33 | r = len(e) 34 | while _n < r: 35 | e[_n] = e[_n] ^ n[_n % 8] 36 | _n = _n + 1 37 | # print("解密后:") 38 | # print(e) 39 | ret = bytes(e) 40 | # print(ret) 41 | z = zipfile.ZipFile(io.BytesIO(ret), 'r') 42 | j = z.read('index.dat') 43 | # print(j) 44 | # pprint(json.loads(j)['pics']) 45 | return json.loads(j)['pics'] 46 | 47 | 48 | # 单文件链接解析 49 | def get_image_url(img_url): 50 | # url = str('https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web') 51 | # 获取图片token 52 | res = requests.post(url_ImageToken, json.dumps({"urls": json.dumps([img_url])}), headers=headers) 53 | data = json.loads(res.text)['data'][0] 54 | url = data['url'] + '?token=' + data['token'] 55 | return url 56 | -------------------------------------------------------------------------------- /Bilibili/download.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import requests 4 | import traceback 5 | from Bilibili.decode import decode_index_data, get_image_url 6 | from Bilibili.settings import headers, url_ComicDetail, download_path, url_GetEpisode, url_GetImageIndex, get_cookie 7 | 8 | 9 | # TODO 加入代理设置 10 | 11 | 12 | def get_data(url, data, headers_user, log_out): # 网络数据获取 13 | try: 14 | res = requests.post(url, data, headers=headers_user) 15 | except Exception: 16 | log_out("0x00", "--+--+--+-- 错误 网络通信时出错 --+--+--+--") 17 | errmsg = traceback.format_exc(limit=3).split("\n")[-2].split(": ") 18 | log_out(errmsg[0] + "-" + errmsg[1]) 19 | if errmsg[0] == "requests.exceptions.SSLError": 20 | log_out("0x00", "请检查网络连接情况,并尝试关闭网络代理") 21 | return None 22 | return res 23 | 24 | 25 | def get_purchase_status(comic_id: int, log_out): # 购买情况查询 26 | # cookie 数据读取 27 | get_cookie() 28 | data_rt = [] 29 | # 数据解析 30 | data_re = get_data(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers, log_out) 31 | if data_re is None: 32 | return None 33 | try: 34 | data = json.loads(data_re.text)['data'] 35 | except Exception: 36 | log_out("0x00", "--*--*--*-- 错误 漫画数据解析时出错 --*--*--*--\n请检查输入的数据是否正确") 37 | return None 38 | data_rt.append([data['id'], data['title']]) 39 | manga_list = data['ep_list'] 40 | manga_list.reverse() 41 | ep_order: int = 1 42 | for ep in manga_list: 43 | data_rt_per = [] 44 | if ep['short_title'].isnumeric(): 45 | data_rt_per.append("#" + str(ep_order).rjust(3, "0") + "# " + '第' + ep['short_title'].rjust(3, '0') + '话—' + ep['title']) 46 | if ep['is_locked']: 47 | data_rt_per.append(':未购买') 48 | else: 49 | data_rt_per.append(':已购买') 50 | else: 51 | data_rt_per.append("#" + str(ep_order).rjust(3, "0") + "# " + ep['short_title'] + '—' + ep['title']) 52 | if ep['is_locked']: 53 | data_rt_per.append(':未购买') 54 | else: 55 | data_rt_per.append(':已购买') 56 | data_rt.append(data_rt_per) 57 | ep_order += 1 58 | return data_rt 59 | 60 | 61 | def download_manga_episode(episode_id: int, root_path: str, log_out): # ID-索引下载漫画模块 62 | data_re = get_data(url_GetEpisode, json.dumps({"id": episode_id}), headers, log_out) 63 | data = json.loads(data_re.text) 64 | short_title = data['data']['short_title'] 65 | title = short_title + '_' + data['data']['title'] 66 | comic_id = data['data']['comic_id'] 67 | log_out("0x00", '正在下载:' + title) 68 | # 获取索引文件cdn位置 69 | res = requests.post(url_GetImageIndex, json.dumps({"ep_id": episode_id}), headers=headers) 70 | data = json.loads(res.text) 71 | index_url = 'https://manga.hdslb.com' + data['data']['path'] 72 | # log_out('获取索引文件cdn位置:' + index_url) 73 | # 获取索引文件 74 | res = requests.get(index_url) 75 | # 解析索引文件 76 | pics = decode_index_data(comic_id, episode_id, res.content) 77 | # 文件储存 78 | ep_path = os.path.join(root_path, str(title).replace(" ", "")) 79 | if not os.path.exists(ep_path): 80 | os.makedirs(ep_path) 81 | for i, e in enumerate(pics): 82 | url = get_image_url(e) 83 | res = requests.get(url) 84 | with open(os.path.join(ep_path, str(i + 1).rjust(3, '0') + '.jpg'), 'wb+') as f: 85 | f.write(res.content) 86 | pass 87 | if i % 4 == 0 and i != 0: 88 | # time.sleep(1) 89 | pass 90 | log_out("0x00", '第' + str(i + 1).rjust(3, "0") + '页 "下载成功" ' + e) 91 | log_out("0x00", "") 92 | 93 | 94 | def download_main(comic_id: int, download_range: str, log_out): # 主下载模块 95 | # cookie 数据读取 96 | from Bilibili.settings import get_cookie 97 | get_cookie() 98 | data_re = get_data(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers, log_out) 99 | comic_info = json.loads(data_re.text)['data'] 100 | log_out("0x00", "正在下载 " + str(comic_info['id']) + "-" + str(comic_info['title'])) 101 | download_range = download_range.replace(',', ',') # 防呆设计 102 | download_range = download_range.replace('—', '-') 103 | download_range = download_range.replace(" ", "") 104 | if download_range == '0': 105 | data = json.loads(data_re.text)['data'] 106 | comic_title = data['title'] 107 | # 漫画下载目录检查&创建 108 | root_path = os.path.join(download_path, comic_title) 109 | if not os.path.exists(root_path): 110 | os.makedirs(root_path) 111 | manga_list = data['ep_list'] 112 | manga_list.reverse() 113 | # TODO 全部下载的进度条 114 | for ep in manga_list: 115 | # 检查付费章节是否购买 116 | if not ep['is_locked']: 117 | # log_out('正在下载第:' + ep['short_title'] + ep['title']) 118 | download_manga_episode(ep['id'], root_path, log_out) 119 | else: 120 | log_out("0x00", '第' + data['short_title'].rjust(3, '0') + '话—' + data['title'] + " 未购买,已跳过") 121 | continue 122 | log_out("0xe3", "--*--*--*-- 下载任务已完成 --*--*--*--") 123 | return None 124 | # 对用户输入的章节数据进行读取 125 | download_range = download_range.split(",") 126 | for chunk in download_range: 127 | chunk = chunk.split("-") 128 | if len(chunk) == 2: 129 | if not chunk[0].isnumeric() or not chunk[1].isnumeric(): 130 | log_out("0xe3", "下载范围输入错误,请检查输入") 131 | return None 132 | elif int(chunk[0]) >= int(chunk[1]): 133 | log_out("0xe3", "下载范围输入错误,请检查输入") 134 | return None 135 | else: 136 | section = int(chunk[0]) 137 | while section <= int(chunk[1]): 138 | download_manga_each(comic_id, section, log_out) 139 | section += 1 140 | elif chunk[0] == "": 141 | continue 142 | else: 143 | download_manga_each(comic_id, int(chunk[0]), log_out) 144 | log_out("0xe3", "--*--*--*-- 下载任务已完成 --*--*--*--") 145 | return None 146 | 147 | 148 | def download_manga_each(comic_id: int, section: int, log_out): 149 | res = requests.post(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers=headers) 150 | data = json.loads(res.text)['data'] 151 | comic_title = data['title'] 152 | # 漫画下载目录检查&创建 153 | root_path = os.path.join(download_path, comic_title) 154 | if not os.path.exists(root_path): 155 | os.makedirs(root_path) 156 | manga_list = data['ep_list'] 157 | manga_list.reverse() 158 | manga_section = manga_list[section - 1] 159 | if not manga_section['is_locked']: # 检查付费章节是否购买 160 | # TODO 单章下载的进度条 161 | download_manga_episode(manga_section['id'], root_path, log_out) 162 | else: 163 | log_out("0x00", '第' + data['short_title'].rjust(3, '0') + '话—' + data['title'] + " 未购买,已跳过") 164 | -------------------------------------------------------------------------------- /Bilibili/login.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import qrcode 3 | from threading import Thread 4 | import time 5 | import requests 6 | from io import BytesIO 7 | from PIL import Image 8 | import json 9 | 10 | import setting 11 | import settings 12 | 13 | requests.packages.urllib3.disable_warnings() 14 | 15 | 16 | class showpng(Thread): 17 | def __init__(self, data): 18 | Thread.__init__(self) 19 | self.data = data 20 | 21 | def run(self): 22 | img = Image.open(BytesIO(self.data)) 23 | img.show() 24 | 25 | 26 | def islogin(log_out): 27 | from setting import properties_global 28 | settings.headers["Cookie"] = "SESSDATA=" + str(settings.property_bilibili_get("cookie", properties_global)) 29 | loginurl = requests.get("https://api.bilibili.com/x/web-interface/nav", verify=False, headers=settings.headers).json() 30 | if loginurl['code'] == 0: 31 | log_out('Cookies值有效,' + loginurl['data']['uname'] + ',已登录!') 32 | return True 33 | else: 34 | log_out('Cookies值已经失效,请重新扫码登录!') 35 | return False 36 | 37 | 38 | def bzlogin(log_out): 39 | from setting import properties_global 40 | status = islogin(log_out) 41 | if not status: 42 | getlogin = requests.get('https://passport.bilibili.com/qrcode/getLoginUrl', headers=settings.headers).json() 43 | loginurl = requests.get(getlogin['data']['url'], headers=settings.headers).url 44 | oauthKey = getlogin['data']['oauthKey'] 45 | qr = qrcode.QRCode() 46 | qr.add_data(loginurl) 47 | img = qr.make_image() 48 | a = BytesIO() 49 | img.save(a, 'png') 50 | png = a.getvalue() 51 | a.close() 52 | t = showpng(png) 53 | t.start() 54 | tokenurl = 'https://passport.bilibili.com/qrcode/getLoginInfo' 55 | while 1: 56 | qrcodedata = requests.post(tokenurl, data={'oauthKey': oauthKey, 'gourl': 'https://www.bilibili.com/'}, headers=settings.headers_login) 57 | if qrcodedata.json()['data'] == -4: 58 | log_out('二维码未失效,请扫码!') 59 | elif qrcodedata.json()['data'] == -5: 60 | log_out('已扫码,请确认!') 61 | elif qrcodedata.json()['data'] == -2: 62 | log_out('二维码已失效,请重新运行!') 63 | elif qrcodedata.json()['status']: 64 | log_out('已确认,登入成功!') 65 | log_out(requests.get(qrcodedata.json()['data']['url'], headers=settings.headers)) 66 | sessdata = str(qrcodedata.cookies.get_dict(".Bilibili.com")["SESSDATA"]) 67 | log_out(sessdata) 68 | settings.property_bilibili_put("cookie", sessdata, properties_global) 69 | break 70 | else: 71 | log_out('其他:', qrcodedata.text) 72 | time.sleep(1) 73 | log_out("请关闭二维码窗口") 74 | 75 | 76 | if __name__ == '__main__': 77 | text = setting.settintfile_read() 78 | if len(text) > 0: 79 | setting.properties_global = json.loads(text) 80 | 81 | 82 | def log_out_test(message, code=None): 83 | if code is None: 84 | print(message) 85 | 86 | 87 | bzlogin(log_out_test) 88 | -------------------------------------------------------------------------------- /Bilibili/settings.py: -------------------------------------------------------------------------------- 1 | version = "v1.4.4" 2 | download_path = '../B站漫画下载' 3 | setting_file = 'setting.json' 4 | url_ImageToken = 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web' 5 | url_GetImageIndex = 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex?device=pc&platform=web' 6 | url_GetEpisode = 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetEpisode?device=pc&platform=web' 7 | url_ComicDetail = "https://manga.bilibili.com/twirp/comic.v2.Comic/ComicDetail?device=pc&platform=web" 8 | headers = { 9 | "accept": "application/json, text/plain, */*", 10 | "accept-language": "zh-CN,zh;q=0.9,en;q=0.8", 11 | "content-type": "application/json;charset=UTF-8", 12 | "origin": 'https://manga.bilibili.com', 13 | "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) " 14 | "Chrome/83.0.4103.61 Safari/537.36", 15 | "cookie": "", 16 | 'Referer': "https://www.bilibili.com/" 17 | } 18 | headers_login = { 19 | 'User-Agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", 20 | 'Host': 'passport.Bilibili.com', 21 | 'Referer': "https://passport.bilibili.com/login" 22 | } 23 | headers_cdn = { 24 | 'Host': 'manga.hdslb.com', 25 | 'Origin': 'https://manga.bilibili.com', 26 | } 27 | 28 | 29 | def property_bilibili_put(key, value, properties): 30 | """ 31 | 在bilibili域内,保存一个属性。如果key不存在,则创建;存在,则覆盖。 32 | """ 33 | from setting import property_put 34 | property_put(key, value, properties, domain="Bilibili") 35 | 36 | 37 | def property_bilibili_get(key, properties): 38 | """ 39 | 在bilibili域内,获取一个属性。如果不存在,则返回default。 40 | """ 41 | from setting import property_get 42 | return property_get(key, properties, domain="Bilibili") 43 | 44 | def get_cookie(): 45 | return None -------------------------------------------------------------------------------- /MainGUI.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 1360 10 | 786 11 | 12 | 13 | 14 | 15 | 770 16 | 610 17 | 18 | 19 | 20 | 21 | 5 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | :/main.ico:/main.ico 30 | 31 | 32 | /** 33 | * @file: list.h 34 | * @details: qt style sheet css example 35 | * @author: chenwen(chenwen1126@tom.com) 36 | * @datetime: 2017-7-25 37 | * @history: V1.0 first edition 38 | */ 39 | /*/////////////////////////////////////////////////QDialog///////////////////////////////////////////*/ 40 | QWidget, QFrame,QDialog 41 | { 42 | background:#f2f2f2; 43 | } 44 | 45 | QMainWindow 46 | { 47 | background:#f2f2f2; 48 | } 49 | 50 | QWebView 51 | { 52 | background:#fefefe; 53 | } 54 | 55 | /*/////////////////////////////////////////////////QStatusBar///////////////////////////////////////////*/ 56 | QStatusBar 57 | { 58 | border-top:1px solid #aaaaaa; 59 | min-height:20px; 60 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #f4f4f4, stop:1 #e4e4e4);/*渐变背景色*/ 61 | } 62 | 63 | /*/////////////////////////////////////////////////工具栏及窗口边框///////////////////////////////////////////*/ 64 | /*窗口边框,可*/ 65 | QFrame#window 66 | { 67 | padding:0px; 68 | border-width:2px;/*边框宽度*/ 69 | border-style:solid;/*边框类型*/ 70 | /*用渐变色可以营造光晕边框效果*/ 71 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #999999, stop:1 #ffffff)/*上边框渐变色*/ 72 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #999999, stop:1 #ffffff)/*右边框渐变色*/ 73 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #999999, stop:1 #ffffff)/*下边框渐变色*/ 74 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #999999, stop:1 #ffffff);/*左边框渐变色*/ 75 | } 76 | 77 | QFrame#dialog,QFrame#messagebox 78 | { 79 | padding:12px;/*设置透明阴影留出的padding空间,通过源码绘制透明阴影 注意在代码中设置QSSDIALOG_SHADOW_WIDTH为12*/ 80 | border:0px solid #ff0000;/*指定边框为0,实际边框时绘制阴影时直接画de直线,边框颜色也是在代码中指定的*/ 81 | } 82 | 83 | /*标题栏*/ 84 | QWidget#titlebar 85 | { 86 | min-height:25px;/*用min-height设置标题栏高度*/ 87 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #e4e4e4, stop:1 #d4d4d4);/*渐变背景色*/ 88 | border-bottom:1px solid #aaaaaa; 89 | } 90 | 91 | QWidget:active#titlebar 92 | { 93 | min-height:25px;/*用min-height设置标题栏高度*/ 94 | 95 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #f4f4f4, stop:1 #e4e4e4);/*渐变背景色*/ 96 | border-bottom:1px solid #aaaaaa; 97 | } 98 | 99 | /*标题栏图标*/ 100 | QPushButton#titlebaricon 101 | { 102 | min-width:24px;/*覆盖QPushButton中设置*/ 103 | min-height:24px;/*覆盖QPushButton中设置*/ 104 | width:24px;/*宽度*/ 105 | height:24px; 106 | padding:0px; 107 | padding-left:2px; 108 | padding-right:-2px; 109 | background:transparent;/*无背景无边框*/ 110 | border:none; 111 | } 112 | 113 | /*标题栏标题*/ 114 | QLabel#titlebartitle 115 | { 116 | padding-left:2px; 117 | font-weight:bold; 118 | font-size:10pt; 119 | color:#222222; 120 | background:transparent; 121 | } 122 | 123 | /*标题栏关闭按钮*/ 124 | QPushButton#titlebarclosebtn 125 | { 126 | padding:0px; 127 | padding-right:3px; 128 | min-width:39px; 129 | min-height:19px; 130 | width:39px; 131 | height:19px; 132 | outline:none; 133 | border: none; 134 | background:transparent;/*无背景无边框*/ 135 | image:url(:/qss/icon/btn_close_highlight.png);/*btn_close_normal*/ 136 | } 137 | 138 | QPushButton#titlebarclosebtn:hover 139 | { 140 | min-width:39px; 141 | min-height:19px; 142 | width:39px; 143 | height:19px; 144 | image:url(:/qss/icon/btn_close_highlight.png); 145 | } 146 | 147 | QPushButton#titlebarclosebtn:pressed 148 | { 149 | min-width:39px; 150 | min-height:19px; 151 | width:39px; 152 | height:19px; 153 | image:url(:/qss/icon/btn_close_down.png); 154 | } 155 | 156 | /*标题栏最小化按钮*/ 157 | QPushButton#titlebarminbtn 158 | { 159 | padding:0px; 160 | min-width:28px; 161 | min-height:19px; 162 | width:28px; 163 | height:19px; 164 | outline:none; 165 | border: none; 166 | background:transparent; 167 | image:url(:/qss/icon/btn_mini_normal.png); 168 | } 169 | 170 | QPushButton#titlebarminbtn:hover 171 | { 172 | min-width:28px; 173 | min-height:19px; 174 | width:28px; 175 | height:19px; 176 | image:url(:/qss/icon/btn_mini_highlight.png); 177 | } 178 | 179 | QPushButton#titlebarminbtn:pressed 180 | { 181 | min-width:28px; 182 | min-height:19px; 183 | width:28px; 184 | height:19px; 185 | image:url(:/qss/icon/btn_mini_down.png); 186 | } 187 | 188 | /*标题栏最大化按钮*/ 189 | QPushButton#titlebarmaxbtn 190 | { 191 | padding:0px; 192 | padding-bottom:3px;/*因为图表资源尺寸不对,做的微调*/ 193 | border: none; 194 | min-width:25px; 195 | min-height:18px; 196 | width:25px; 197 | height:18px; 198 | outline:none; 199 | background:transparent; 200 | image:url(:/qss/icon/btn_max_normal.png); 201 | } 202 | 203 | QPushButton#titlebarmaxbtn:hover 204 | { 205 | min-width:28px; 206 | min-height:19px; 207 | width:28px; 208 | height:19px; 209 | image:url(:/qss/icon/btn_max_highlight.png); 210 | } 211 | 212 | QPushButton#titlebarmaxbtn:pressed 213 | { 214 | min-width:28px; 215 | min-height:19px; 216 | width:28px; 217 | height:19px; 218 | image:url(:/qss/icon/btn_max_down.png); 219 | } 220 | 221 | /*标题栏还原按钮*/ 222 | QPushButton#titlebarrestorebtn 223 | { 224 | padding:0px; 225 | padding-bottom:3px;/*因为图表资源尺寸不对,做的微调*/ 226 | border: none; 227 | min-width:25px; 228 | min-height:18px; 229 | width:25px; 230 | height:18px; 231 | outline:none; 232 | background:transparent; 233 | image:url(:/qss/icon/btn_restore_normal.png); 234 | } 235 | 236 | QPushButton#titlebarrestorebtn:hover 237 | { 238 | min-width:28px; 239 | min-height:20px; 240 | width:28px; 241 | height:20px; 242 | image:url(:/qss/icon/btn_restore_highlight.png); 243 | } 244 | 245 | QPushButton#titlebarrestorebtn:pressed 246 | { 247 | min-width:28px; 248 | min-height:20px; 249 | width:28px; 250 | height:20px; 251 | image:url(:/qss/icon/btn_restore_down.png); 252 | } 253 | 254 | /*/////////////////////////////////////////////////QPushButton///////////////////////////////////////////*/ 255 | /*为QPushButton设置通用属性*/ 256 | QPushButton 257 | { 258 | padding:0px 4px;/*上下padding为0px 左右未6px {1,4}为上右下左*/ 259 | min-width:80; 260 | min-height:24; 261 | border: 1px solid #aaaaaa;/*边框*/ 262 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 263 | outline:none;/*表示foucs状态时取消虚线框*/ 264 | } 265 | 266 | QPushButton::disabled 267 | { 268 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 269 | border: 1px solid #dddddd;/*边框*/ 270 | } 271 | 272 | /*为hover状态QPushButton设置属性,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/ 273 | QPushButton:hover 274 | { 275 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 276 | } 277 | 278 | /*为pressed状态QPushButton设置属性*/ 279 | QPushButton:pressed 280 | { 281 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 282 | } 283 | 284 | /*按钮为默认按钮时(不管焦点直接接收键盘回车输入的按钮),一般对话框ok按钮为默认按钮*/ 285 | .QPushButton:default 286 | { 287 | border-width:2px;/*边框宽度*/ 288 | border-style:solid;/*边框类型*/ 289 | /*用渐变色可以营造光晕边框效果*/ 290 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*上边框渐变色*/ 291 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*右边框渐变色*/ 292 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #64bff0, stop:1 #bae3f7)/*下边框渐变色*/ 293 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7);/*左边框渐变色*/ 294 | } 295 | 296 | /*为focus状态QPushButton设置属性,QPushButtond的子类,如QCommandLinkButton不设置该属性*/ 297 | .QPushButton:focus 298 | { 299 | border-width:2px;/*边框宽度*/ 300 | border-style:solid;/*边框类型*/ 301 | 302 | /*用渐变色可以营造光晕边框效果*/ 303 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*上边框渐变色*/ 304 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*右边框渐变色*/ 305 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f9b158, stop:1 #ffe189)/*下边框渐变色*/ 306 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189);/*左边框渐变色*/ 307 | } 308 | 309 | /*为QCommandLinkButton设置通用属性*/ 310 | QCommandLinkButton 311 | { 312 | border: none;/*边框*/ 313 | background: none; 314 | } 315 | 316 | /*/////////////////////////////////////////////////QCheckBox///////////////////////////////////////////*/ 317 | /*QCheckBox的公用属性设置*/ 318 | QCheckBox 319 | { 320 | spacing:5px;/*指示器与文字之间的距离*/ 321 | outline:none;/*表示foucs状态时取消虚线框*/ 322 | } 323 | 324 | /*QCheckBox指示器subcontrol属性设置*/ 325 | QCheckBox::indicator 326 | { 327 | width:15px;/*设置固定宽度,width height设置的宽高为content区宽高*/ 328 | height:15px;/*设置固定高度*/ 329 | } 330 | 331 | /*QCheckBox指示器选中时属性设置*/ 332 | QCheckBox::indicator:checked 333 | { 334 | image:url(:/qss/icon/checkbox_p.png);/*图片*/ 335 | } 336 | 337 | /*QCheckBox指示器未选中时属性设置*/ 338 | QCheckBox::indicator:unchecked 339 | { 340 | image:url(:/qss/icon/checkbox.png);/*图片*/ 341 | } 342 | 343 | /*QCheckBox指示器未选中时且hover时属性设置*/ 344 | QCheckBox::indicator:unchecked:hover 345 | { 346 | image:url(:/qss/icon/checkbox_h.png);/*图片*/ 347 | 348 | } 349 | 350 | /*/////////////////////////////////////////////////QRadioButton///////////////////////////////////////////*/ 351 | /*QRadioButton公用属性设置*/ 352 | QRadioButton 353 | { 354 | spacing:5px;/*指示器与文字之间的距离*/ 355 | outline:none;/*表示foucs状态时取消虚线框*/ 356 | } 357 | 358 | /*QRadioButton指示器选中时属性设置*/ 359 | QRadioButton::indicator 360 | { 361 | width:15px;/*设置固定宽度,width height设置的宽高为content区宽高*/ 362 | height:15px;/*设置固定宽度*/ 363 | } 364 | 365 | /*QRadioButton指示器选中时属性设置*/ 366 | QRadioButton::indicator:checked 367 | { 368 | image:url(:/qss/icon/radio_p.png);/**/ 369 | } 370 | 371 | /*QRadioButton指示器未选中时属性设置*/ 372 | QRadioButton::indicator:unchecked 373 | { 374 | image:url(:/qss/icon/radio.png);/**/ 375 | } 376 | 377 | /*QRadioButton指示器未选中掠过时属性设置*/ 378 | QRadioButton::indicator:unchecked:hover 379 | { 380 | image:url(:/qss/icon/radio_h.png);/**/ 381 | 382 | } 383 | 384 | /*/////////////////////////////////////////////////QLineEdit///////////////////////////////////////////*/ 385 | /*QLineEdit公用属性设置*/ 386 | QLineEdit 387 | { 388 | padding:1px; 389 | padding-left:4px; 390 | border: 1px solid #aaaaaa; 391 | background: white; 392 | selection-background-color: #3399ff; 393 | } 394 | 395 | 396 | /*QLineEdit获得焦点时的属性设置,主要为光晕边框 397 | 这里带了.,所以该属性仅对QLineEdit直接类对象生效,这样做的目的在于,可编辑QTableWidget编辑item时的编辑框不带边框*/ 398 | .QLineEdit:focus1 399 | { 400 | padding:0px;/*padding,这里边框为2px为了不引起content尺寸变化padding设置为0*/ 401 | padding-left:3px; 402 | border-width:2px;/*边框宽度*/ 403 | border-style:solid;/*边框类型*/ 404 | /*用渐变色可以营造光晕边框效果*/ 405 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*上边框渐变色*/ 406 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*右边框渐变色*/ 407 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f9b158, stop:1 #ffe189)/*下边框渐变色*/ 408 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189);/*左边框渐变色*/ 409 | } 410 | 411 | QLineEdit:read-only 412 | { 413 | color: #787878; 414 | } 415 | 416 | /*/////////////////////////////////////////////////QPlainTextEdit///////////////////////////////////////////*/ 417 | QPlainTextEdit 418 | { 419 | padding:0px; 420 | border: 1px solid #aaaaaa; 421 | background: white; 422 | selection-background-color: #3399ff; 423 | } 424 | 425 | QPlainTextEdit:read-only 426 | { 427 | color: #787878; 428 | } 429 | 430 | /*/////////////////////////////////////////////////QTextEdit///////////////////////////////////////////*/ 431 | QTextEdit 432 | { 433 | padding:0px; 434 | border: 1px solid #aaaaaa; 435 | background: white; 436 | selection-background-color: #3399ff; 437 | } 438 | 439 | 440 | /*/////////////////////////////////////////////////QComboBox///////////////////////////////////////////*/ 441 | /*QComboBox设置公用属性*/ 442 | QComboBox 443 | { 444 | border: 1px solid #aaaaaa;/*边框*/ 445 | padding:2px 18px 2px 3px;/*内边距,有偏移18px为drop-down按钮留出空间,所以subcontrol-origin属性须设为padding*/ 446 | min-width:36px;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/ 447 | } 448 | 449 | /*QLineEdit获得焦点时的属性设置,设置边框为光晕边框*/ 450 | QComboBox:focus1 451 | { 452 | padding:1px 17px 1px 2px;/*padding,这里边框为2px为了不引起content尺寸变化padding均减1*/ 453 | border-width:2px; 454 | border-style:solid; 455 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*上边框渐变色*/ 456 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*右边框渐变色*/ 457 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #64bff0, stop:1 #bae3f7)/*下边框渐变色*/ 458 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7);/*左边框渐变色*/ 459 | } 460 | 461 | /*设置drop-down按钮上的箭头图片*/ 462 | QComboBox::down-arrow 463 | { 464 | image:url(:/qss/icon/downarrow.png); 465 | } 466 | 467 | /*设置drop-down按钮属性,自定义combox的重头戏。必须设置*/ 468 | QComboBox::drop-down { 469 | width:15px;/*drop-down按钮宽度*/ 470 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*drop-down按钮渐变背景色*/ 471 | subcontrol-origin: padding;/*drop-down按钮绘制位置依据父控件设置的padding决定*/ 472 | subcontrol-position: right top;/*drop-down按钮相对父控件位置*/ 473 | border-left:1px solid #aaaaaa;/*drop-down左边框*/ 474 | } 475 | 476 | /*设置QComboBox的:下拉时的视图属性。注意这不是设置的视图项,而是视图项主城的视图 477 | 子孙窗口部件,用空格隔开。*/ 478 | QComboBox QAbstractItemView 479 | { 480 | border: 1px solid #aaaaaa;/*边框*/ 481 | selection-background-color: #73c5f1;/*选中背景*/ 482 | outline:none;/*去掉选中时的虚线框*/ 483 | } 484 | 485 | /*/////////////////////////////////////////////////QGroupBox///////////////////////////////////////////*/ 486 | /*QGroupBox公用属性设置*/ 487 | QGroupBox { 488 | background: none;/*背景透明*/ 489 | border: 1px solid #aaaaaa;/*边框*/ 490 | border-radius: 5px;/*边框圆角*/ 491 | margin-top: 2ex; /* 为title绘制留出空间,以下title子控制器的subcontrol-origin设置为margin */ 492 | } 493 | 494 | /*QGroupBox title子控制器属性设置*/ 495 | QGroupBox::title 496 | { 497 | color:#3399ff;/*文本颜色*/ 498 | left:10px;/*子控制器相对于父控件的精确定位*/ 499 | subcontrol-origin: margin;/*子控制器绘制起始区域*/ 500 | subcontrol-position: top left; /*子控制器于父控件的相对位置*/ 501 | padding: 0px 2px;/*title文字左右padding设置使边框线条与title文字有间隔距离*/ 502 | background: none;/*背景透明*/ 503 | } 504 | 505 | /*/////////////////////////////////////////////////QProgressBar///////////////////////////////////////////*/ 506 | /*QProgressBar公用属性设置*/ 507 | QProgressBar 508 | { 509 | border: 1px solid #aaaaaa;/*边框*/ 510 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);渐变背景*/ 511 | border-radius: 4px;/*边框圆角*/ 512 | text-align:center;/*文本对齐*/ 513 | } 514 | 515 | /*chunk子控制器,指进度条内一块块依次向右的进度小块*/ 516 | QProgressBar::chunk 517 | { 518 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1); /*进度小块背景*/ 519 | width: 6px;/*进度小块宽度*/ 520 | margin: 0.5px;/*进度小块margin设置为0.5px以上可以隔开进度小块。隔开距离为2*margin 。设置为0.5以下进度小块连在一起*/ 521 | } 522 | 523 | /*/////////////////////////////////////////////////QSlider///////////////////////////////////////////*/ 524 | /*QSlider水平凹槽属性设置,未设置背景因为它反正会被add-page subControl覆盖*/ 525 | QSlider::groove:horizontal 526 | { 527 | border: 1px solid #aaaaaa;/*边框*/ 528 | height: 6px; /*水平凹槽高度*/ 529 | } 530 | 531 | /*QSlider水平滑块属性设置*/ 532 | QSlider::handle:horizontal 533 | { 534 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #666666, stop:0.5 #dddddd);/*渐变背景*/ 535 | border: 1px solid #5c5c5c;/*边框*/ 536 | width: 6px;/*滑块宽度*/ 537 | margin: -6px 0;/*通过设置margin上下margin为-6px,使得滑块高度比凹槽高度高12px。*/ 538 | border-radius: 4px;/*圆角边框*/ 539 | } 540 | 541 | /*通过add-page subControl设置未划过部分的背景*/ 542 | QSlider::add-page:horizontal 543 | { 544 | border: 1px solid #aaaaaa; 545 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);*/ 546 | } 547 | 548 | /*通过sub-page subControl设置划过部分的背景*/ 549 | QSlider::sub-page:horizontal 550 | { 551 | border: 1px solid #aaaaaa; 552 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1); 553 | } 554 | 555 | /*垂直滑动条:大同小异*/ 556 | QSlider::groove:vertical 557 | { 558 | border: 1px solid #aaaaaa; 559 | width: 6px; 560 | } 561 | 562 | QSlider::handle:vertical 563 | { 564 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #666666, stop:0.4 #dddddd);/*渐变背景*/ 565 | border: 1px solid #5c5c5c; 566 | height: 6px; 567 | margin: 0px -6px; 568 | border-radius: 4px; 569 | } 570 | 571 | QSlider::add-page:vertical 572 | { 573 | border: 1px solid #aaaaaa; 574 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1); 575 | } 576 | 577 | QSlider::sub-page:vertical 578 | { 579 | border: 1px solid #aaaaaa; 580 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);*/ 581 | } 582 | 583 | 584 | /*/////////////////////////////////////////////////QScrollBar///////////////////////////////////////////*/ 585 | /*水平滚动条公用属性设置*/ 586 | QScrollBar:horizontal 587 | { 588 | border-top: 1px solid #aaaaaa;/*边框*/ 589 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);渐变背景,也是滑轨背景*/ 590 | background:white; 591 | height: 16px;/*水平滚动条高度*/ 592 | margin: 0px 16px 0 16px;/*水平滚动条margin,左右留出空间给add-line按钮和sub-line按钮*/ 593 | } 594 | 595 | /*水平滚动条滑块公用属性设置*/ 596 | QScrollBar::handle:horizontal 597 | { 598 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);背景*/ 599 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 600 | min-width: 20px;/*最小宽度,滑块宽度自动调整但须设置一个最小宽度*/ 601 | border-radius: 0px;/**/ 602 | border-left:1px solid #aaaaaa; 603 | border-right:1px solid #aaaaaa; 604 | } 605 | 606 | /*水平滚动条滑块被掠过时*/ 607 | QScrollBar::handle:horizontal:hover 608 | { 609 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #90d9fe, stop:0.6 #e2f3fc, stop:1 #90d9fe);渐变背景*/ 610 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #eeeeee, stop:1 #ffffff);/*渐变背景色*/ 611 | } 612 | 613 | /*水平滚动条滑块被按压时*/ 614 | QScrollBar::handle:horizontal:pressed 615 | { 616 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #60c8fd, stop:0.6 #bde4f8, stop:1 #60c8fd);渐变背景*/ 617 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 618 | } 619 | 620 | /*水平滚动条sub-line(增加一行)按钮*/ 621 | QScrollBar::add-line:horizontal 622 | { 623 | border-top: 1px solid #aaaaaa;/*边框*/ 624 | border-left: 1px solid #aaaaaa;/*边框*/ 625 | border-right: 1px solid #aaaaaa;/*边框*/ 626 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景*/ 627 | width: 16px;/*宽度,跟父控件margin匹配*/ 628 | subcontrol-position: right;/*sub-line按钮相对于父控件位置设置*/ 629 | subcontrol-origin: margin;/*sub-line按钮绘制空间,之前父控件设置了margin为sub-line留出了控件*/ 630 | } 631 | 632 | /*水平滚动条add-line(增加一行)按钮被掠过时*/ 633 | QScrollBar::add-line:horizontal:hover 634 | { 635 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.4 #ffffff, stop:1 #eeeeee);/*渐变背景*/ 636 | } 637 | 638 | /*水平滚动条add-line(增加一行)按钮被按压时*/ 639 | QScrollBar::add-line:horizontal:pressed 640 | { 641 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.4 #eeeeee);/*渐变背景*/ 642 | } 643 | 644 | /*水平滚动条sub-line(减少一行)按钮*/ 645 | QScrollBar::sub-line:horizontal 646 | { 647 | border-top: 1px solid #aaaaaa;/*边框*/ 648 | border-right: 1px solid #aaaaaa;/*边框*/ 649 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景*/ 650 | width: 16px;/*宽度,跟父控件margin匹配*/ 651 | subcontrol-position: left;/*sub-line按钮相对于父控件位置设置*/ 652 | subcontrol-origin: margin;/*sub-line按钮绘制空间,之前父控件设置了margin为sub-line留出了控件*/ 653 | } 654 | 655 | /*水平滚动条sub-line(减少一行)按钮hover时*/ 656 | QScrollBar::sub-line:horizontal:hover 657 | { 658 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.4 #ffffff, stop:1 #eeeeee);/*渐变背景*/ 659 | } 660 | 661 | /*水平滚动条sub-line(减少一行)按钮被按压时*/ 662 | QScrollBar::sub-line:horizontal:pressed 663 | { 664 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.4 #eeeeee);/*渐变背景*/ 665 | } 666 | 667 | /*水平滚动条左箭头设置图像(在add-line中居中显示)*/ 668 | QScrollBar:left-arrow:horizontal 669 | { 670 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/ 671 | } 672 | 673 | /*水平滚动条右箭头设置图像(在sub-line中居中显示)*/ 674 | QScrollBar::right-arrow:horizontal 675 | { 676 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/ 677 | } 678 | 679 | /*水平滚动条add-page,sub-page指单击滑轨时滚动一页。可以为add-page,sub-page设置hover,pressed的背景 */ 680 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal 681 | { 682 | background: none;/*不设置add-page,sub-page背景*/ 683 | } 684 | 685 | 686 | /*垂直滚动条,大同小异*/ 687 | QScrollBar:vertical 688 | { 689 | border-left: 1px solid #aaaaaa; 690 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);*/ 691 | background:white; 692 | width: 16px; 693 | margin: 16px 0px 16px 0px; 694 | } 695 | 696 | QScrollBar::handle:vertical 697 | { 698 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);渐变背景色*/ 699 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 700 | min-height: 20px; 701 | border-radius: 0px; 702 | border-top:1px solid #aaaaaa; 703 | border-bottom:1px solid #aaaaaa; 704 | } 705 | 706 | QScrollBar::handle:vertical:hover 707 | { 708 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #90d9fe, stop:0.6 #e2f3fc, stop:1 #90d9fe);渐变背景*/ 709 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.2 #eeeeee, stop:1 #ffffff);/*渐变背景色*/ 710 | } 711 | 712 | QScrollBar::handle:vertical:pressed 713 | { 714 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #60c8fd, stop:0.6 #bde4f8, stop:1 #60c8fd);渐变背景色*/ 715 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 716 | } 717 | 718 | QScrollBar::add-line:vertical 719 | { 720 | border-left: 1px solid #aaaaaa; 721 | border-top: 1px solid #aaaaaa; 722 | border-bottom: 1px solid #aaaaaa; 723 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee); 724 | height: 16px; 725 | subcontrol-position: bottom; 726 | subcontrol-origin: margin; 727 | } 728 | 729 | QScrollBar::add-line:vertical:hover 730 | { 731 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.4 #ffffff, stop:1 #eeeeee); 732 | } 733 | 734 | QScrollBar::add-line:vertical:pressed 735 | { 736 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.4 #eeeeee); 737 | } 738 | 739 | QScrollBar::sub-line:vertical 740 | { 741 | border-left: 1px solid #aaaaaa; 742 | border-bottom: 1px solid #aaaaaa; 743 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee); 744 | height: 16px; 745 | subcontrol-position: top; 746 | subcontrol-origin: margin; 747 | } 748 | 749 | QScrollBar::sub-line:vertical:hover 750 | { 751 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.4 #ffffff, stop:1 #eeeeee); 752 | } 753 | 754 | QScrollBar::sub-line:vertical:pressed 755 | { 756 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.4 #eeeeee); 757 | } 758 | 759 | QScrollBar::down-arrow:vertical 760 | { 761 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 762 | } 763 | 764 | QScrollBar::up-arrow:vertical 765 | { 766 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 767 | } 768 | 769 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical 770 | { 771 | background: none; 772 | } 773 | 774 | /* 775 | 一种更为简洁的滚动条 776 | QScrollBar:horizontal 777 | { 778 | background: #f2f2f2; 779 | height: 12px; 780 | } 781 | 782 | QScrollBar::handle:horizontal 783 | { 784 | background: #dddddd; 785 | min-width: 20px; 786 | border-radius: 6px; 787 | } 788 | 789 | QScrollBar::handle:horizontal:hover 790 | { 791 | background: #d0d0d0; 792 | } 793 | 794 | QScrollBar::handle:horizontal:pressed 795 | { 796 | background: #d0d0d0; 797 | } 798 | 799 | QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal 800 | { 801 | background: none; 802 | } 803 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal 804 | { 805 | background: none; 806 | } 807 | 808 | 809 | QScrollBar:vertical 810 | { 811 | background: #f2f2f2; 812 | width: 12px; 813 | } 814 | 815 | QScrollBar::handle:vertical 816 | { 817 | background: #dddddd; 818 | min-height: 20px; 819 | border-radius: 6px; 820 | } 821 | 822 | QScrollBar::handle:vertical:hover 823 | { 824 | background: #d0d0d0; 825 | } 826 | 827 | QScrollBar::handle:vertical:pressed 828 | { 829 | background: #d0d0d0; 830 | } 831 | 832 | QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical 833 | { 834 | background: none; 835 | } 836 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical 837 | { 838 | background: none; 839 | } 840 | 841 | */ 842 | 843 | /*/////////////////////////////////////////////////QTabWidget///////////////////////////////////////////*/ 844 | /*QTabWidget由子控制器pane和tab-bar组成。pane为tab页所在区域,tab-bar为tab标签栏所在区域*/ 845 | /*QTabWidget pane子控制器属性设置*/ 846 | QTabWidget::pane 847 | { 848 | border: 0px solid #aaaaaa; /*tab有边框pane就不要边框了*/ 849 | margin-top:-1px;/*设置margin-top为-1是为了让tab-bar遮掉pane的上边框*/ 850 | } 851 | 852 | /*QTabWidget tab-bar子控制器属性设置*/ 853 | QTabWidget::tab-bar 854 | { 855 | left: 3px; /*left表示子控制器距父控件左边的距离定位*/ 856 | } 857 | 858 | /*tab-bar子控制器(tab标签栏)又由tab标签组成,子控制器tab表示tab标签*/ 859 | QTabBar::tab 860 | { 861 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #dddddd);/*渐变背景色*/ 862 | border-left: 1px solid #aaaaaa;/*边框,不设置标签底部边框*/ 863 | border-right: 1px solid #aaaaaa;/**/ 864 | border-top: 1px solid #aaaaaa;/**/ 865 | border-top-left-radius: 6px;/**/ 866 | border-top-right-radius: 6px;/**/ 867 | min-width: 18ex;/**/ 868 | padding: 4px;/**/ 869 | } 870 | 871 | /*tab标签被选中或掠过时*/ 872 | QTabBar::tab:selected, QTabBar::tab:hover 873 | { 874 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 875 | } 876 | 877 | /*tab标签被选中时*/ 878 | QTabBar::tab:selected 879 | { 880 | border-bottom: 3px solid #73c5f1;/*设置底部边框*/ 881 | margin-left: -4px;/*设置margin-top为-4px是为了扩大选中标签宽度,使得选中标签宽度大于未选中标签*/ 882 | margin-right: -4px;/**/ 883 | } 884 | 885 | /*tab标签未被选中时*/ 886 | QTabBar::tab:!selected 887 | { 888 | border-bottom: 1px solid #aaaaaa;/*设置底部边框*/ 889 | margin-top: 2px;/*设置margin-top为了压缩标签大小,使得未选中标签高度小于选中标签*/ 890 | } 891 | 892 | /*第一个tab标签被选中时*/ 893 | QTabBar::tab:first:selected 894 | { 895 | margin-left: 0px; /*左边不扩大宽度*/ 896 | } 897 | 898 | /*最后一个tab标签被选中时*/ 899 | QTabBar::tab:last:selected 900 | { 901 | margin-right: 0px;/*右边不扩大宽度*/ 902 | } 903 | 904 | /*只有一个tab标签时*/ 905 | QTabBar::tab:only-one 906 | { 907 | margin: 0px;/*不使用margin对标签大小作改变*/ 908 | } 909 | 910 | /*QTabBar上标签过多时出现的左右箭头QToolButton按钮属性设置*/ 911 | QTabBar QToolButton 912 | { 913 | border-radius: 6px; 914 | } 915 | 916 | /*QTabBar上标签过多时出现的左右箭头按钮箭头图片*/ 917 | QTabBar QToolButton::right-arrow 918 | { 919 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/ 920 | } 921 | 922 | /*QTabBar上标签过多时出现的左右箭头按钮箭头图片*/ 923 | QTabBar QToolButton::left-arrow 924 | { 925 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/ 926 | } 927 | 928 | 929 | /*/////////////////////////////////////////////////QCalendarWidget日历控件///////////////////////////////////////////*/ 930 | QCalendarWidget QToolButton 931 | { 932 | color:Black; 933 | } 934 | 935 | /*QCalendarWidget上左右箭头按钮箭头图片*/ 936 | QCalendarWidget QToolButton::right-arrow 937 | { 938 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/ 939 | } 940 | 941 | /*QCalendarWidget上左右箭头按钮箭头图片*/ 942 | QCalendarWidget QToolButton::left-arrow 943 | { 944 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/ 945 | } 946 | 947 | /*/////////////////////////////////////////////////QListView/QListWidget///////////////////////////////////////////*/ 948 | /*QListView公用属性设置*/ 949 | QListView 950 | { 951 | border:1px solid #aaaaaa;/*边框*/ 952 | selection-background-color: #73c5f1;/*选中背景*/ 953 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/ 954 | outline:none;/*去掉选中时的虚线框*/ 955 | } 956 | 957 | QListView::item 958 | { 959 | min-height:24px;/*调整项高度*/ 960 | margin-left:40px; 961 | } 962 | 963 | /*/////////////////////////////////////////////////QTableView/QTableWidget///////////////////////////////////////////*/ 964 | /*QTableView公用属性设置*/ 965 | QTableView 966 | { 967 | border:1px solid #aaaaaa;/*边框*/ 968 | background:#ffffff;/*背景*/ 969 | selection-background-color: #73c5f1;/*选中背景*/ 970 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/ 971 | } 972 | 973 | /*QTableView的CornerButton区域设置*/ 974 | QTableView QTableCornerButton::section 975 | { 976 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 977 | border: 1px outset #aaaaaa;/*边框 outset类型边框指右底边框比左上边框颜色深,可参见w3c border-style属性*/ 978 | } 979 | 980 | /*QTableView表头设置,设置表头所有位置的背景,而不是仅仅为section部分,包括垂直和水平表头*/ 981 | QTableView QHeaderView 982 | { 983 | background: #eeeeee;/*QHeaderView背景色*/ 984 | } 985 | 986 | /*QTableView表头section部分设置,包括垂直和水平表头*/ 987 | QTableView QHeaderView::section 988 | { 989 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 990 | border: 1px outset #aaaaaa;/**/ 991 | padding:4px;/*调整表头高度*/ 992 | } 993 | 994 | QTableView::item 995 | { 996 | min-height:24px;/*调整项高度*/ 997 | } 998 | 999 | /*/////////////////////////////////////////////////QTreeView/QTreeWidget///////////////////////////////////////////*/ 1000 | /*QTreeView公用属性设置*/ 1001 | QTreeView 1002 | { 1003 | border:1px solid #aaaaaa;/*边框*/ 1004 | show-decoration-selected: 1; 1005 | background:#ffffff;/*背景*/ 1006 | selection-background-color: #73c5f1;/*选中背景*/ 1007 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/ 1008 | } 1009 | 1010 | /*QTreeView表头设置,设置表头所有位置的背景,而不是仅仅为section部分,包括垂直和水平表头*/ 1011 | QTreeView QHeaderView 1012 | { 1013 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1014 | } 1015 | 1016 | /*QTreeView表头section部分设置,包括垂直和水平表头*/ 1017 | QTreeView QHeaderView::section 1018 | { 1019 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1020 | border: 1px outset #aaaaaa;/**/ 1021 | padding:4px;/*调整表头高度*/ 1022 | } 1023 | 1024 | /*QTreeView item子控制器属性设置*/ 1025 | QTreeView::item 1026 | { 1027 | min-height:30px;/*调整项高度*/ 1028 | } 1029 | 1030 | /*QTreeView item子控制器掠过时属性设置*/ 1031 | QTreeView::item:hover 1032 | { 1033 | background: #c5e7f9; 1034 | } 1035 | 1036 | /*QTreeView item子控制器选中时属性设置*/ 1037 | QTreeView::item:selected 1038 | { 1039 | border: 0px solid #aaaaaa; 1040 | } 1041 | 1042 | /*QTreeView item子控制器选中且有焦点(此时字体颜色为白)时属性设置*/ 1043 | QTreeView::item:selected:active 1044 | { 1045 | background: #73c5f1; 1046 | } 1047 | 1048 | /*QTreeView item子控制器选中且无焦点(此时字体颜色为黑)时属性设置*/ 1049 | QTreeView::item:selected:!active 1050 | { 1051 | background: #73c5f1; 1052 | } 1053 | 1054 | /*branch没有合适的素材,暂时先不定制 1055 | QTreeView::branch { 1056 | background: palette(base); 1057 | } 1058 | 1059 | QTreeView::branch:has-siblings:!adjoins-item { 1060 | background: cyan; 1061 | } 1062 | 1063 | QTreeView::branch:has-siblings:adjoins-item { 1064 | background: red; 1065 | } 1066 | 1067 | QTreeView::branch:!has-children:!has-siblings:adjoins-item { 1068 | background: blue; 1069 | } 1070 | 1071 | QTreeView::branch:closed:has-children:has-siblings { 1072 | background: pink; 1073 | } 1074 | 1075 | QTreeView::branch:has-children:!has-siblings:closed { 1076 | background: gray; 1077 | } 1078 | 1079 | QTreeView::branch:open:has-children:has-siblings { 1080 | background: magenta; 1081 | } 1082 | 1083 | QTreeView::branch:open:has-children:!has-siblings { 1084 | background: green; 1085 | } 1086 | 1087 | QTreeView::branch:has-siblings:!adjoins-item { 1088 | border-image: url(vline.png) 0; 1089 | } 1090 | 1091 | QTreeView::branch:has-siblings:adjoins-item { 1092 | border-image: url(branch-more.png) 0; 1093 | } 1094 | 1095 | QTreeView::branch:!has-children:!has-siblings:adjoins-item { 1096 | border-image: url(branch-end.png) 0; 1097 | } 1098 | 1099 | QTreeView::branch:has-children:!has-siblings:closed, 1100 | QTreeView::branch:closed:has-children:has-siblings { 1101 | border-image: none; 1102 | image: url(branch-closed.png); 1103 | } 1104 | 1105 | QTreeView::branch:open:has-children:!has-siblings, 1106 | QTreeView::branch:open:has-children:has-siblings { 1107 | border-image: none; 1108 | image: url(branch-open.png); 1109 | } 1110 | */ 1111 | 1112 | /*/////////////////////////////////////////////////QMenuBar///////////////////////////////////////////*/ 1113 | /*菜单栏公用属性设置*/ 1114 | QMenuBar 1115 | { 1116 | border-bottom:1px solid #aaaaaa; 1117 | /*background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0.2 #dddddd, stop:1 #ffffff);渐变背景色*/ 1118 | background:#f2f2f2; 1119 | } 1120 | 1121 | /*菜单栏item子控制器(菜单项)属性设置*/ 1122 | QMenuBar::item 1123 | { 1124 | spacing: 3px; /* 设置菜单项之间空隙*/ 1125 | padding: 2px 10px;/*通过padding设置菜单项之间空隙和菜单栏高度*/ 1126 | background: transparent;/* 菜单项目本身背景透明*/ 1127 | border-radius: 1px;/*菜单项的圆角边框 */ 1128 | } 1129 | 1130 | /* 菜单栏item子控制器(菜单项)被选中时(菜单中的被选中即为被掠过,此时不弹出菜单项目列表) */ 1131 | QMenuBar::item:selected 1132 | { 1133 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #cccccc);/*渐变背景色*/ 1134 | } 1135 | 1136 | /* 菜单栏item子控制器(菜单项)被按压时(此时弹出菜单项目列表) */ 1137 | QMenuBar::item:pressed 1138 | { 1139 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #dddddd, stop:0.8 #bbbbbb);/*渐变背景色*/ 1140 | } 1141 | 1142 | 1143 | /*/////////////////////////////////////////////////QMenu///////////////////////////////////////////*/ 1144 | /*菜单项目列表(就是那个下拉列表)属性设置*/ 1145 | QMenu 1146 | { 1147 | background-color: white; /* 背景色 */ 1148 | border: 1px solid #aaaaaa;/* 边框 */ 1149 | } 1150 | 1151 | /*菜单项目列表item子控制器(菜单项目列表中菜单项目,注意item子控制器不包括图表和指示器,所以该子控制器影响的只有)属性设置*/ 1152 | QMenu::item 1153 | { 1154 | background-color: transparent;/*背景色透明*/ 1155 | padding:4px 26px 4px 26px;/*通过菜单项目padding属性调整菜单项目中文字位置*/ 1156 | } 1157 | 1158 | /*菜单项目列表item子控制器被选中(菜单中的被选中即为被掠过)时属性设置*/ 1159 | QMenu::item:selected 1160 | { 1161 | background-color: #73c5f1;/*设置背景色*/ 1162 | } 1163 | 1164 | /*菜单项目列表separator子控制器属性设置,即对菜单项目列表中的分隔条设置*/ 1165 | QMenu::separator 1166 | { 1167 | height: 1px; 1168 | background: #AAAAAA; 1169 | margin-left: 25px;/*左右留空*/ 1170 | margin-right: 5px; 1171 | } 1172 | 1173 | /*菜单项目列表right-arrow子控制器属性设置,即对菜单项目列表中的二级菜单的箭头设置*/ 1174 | QMenu::right-arrow 1175 | { 1176 | right:5px;/*调整箭头位置*/ 1177 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/ 1178 | } 1179 | 1180 | /*菜单项目列表icon子控制器属性设置,即对菜单项目中图标的设置,但好像很多属性都不起作用如边框、背景、大小等,何解?*/ 1181 | QMenu::icon 1182 | { 1183 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/ 1184 | left: 5px;/*调整图表位置*/ 1185 | } 1186 | 1187 | 1188 | /*菜单项目列表indicator子控制器属性设置,即对菜单项目中指示器(包括checkable menu item前面的复选框、 1189 | exclusive checkable menu item前面的那个单选框)的设置,但好像很多属性都不起作用如边框、背景、大小等,何解?*/ 1190 | QMenu::indicator 1191 | { 1192 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/ 1193 | left: 5px;/*调整指示器位置*/ 1194 | } 1195 | 1196 | /*菜单项目非排他指示器即复选框为选中时的属性设置*/ 1197 | QMenu::indicator:non-exclusive:unchecked 1198 | { 1199 | image: url(:/qss/icon/checkbox.png); 1200 | } 1201 | 1202 | /*菜单项目非排他指示器即复选框为选中被掠过时的属性设置*/ 1203 | QMenu::indicator:non-exclusive:unchecked:selected 1204 | { 1205 | image: url(:/qss/icon/checkbox_h.png); 1206 | } 1207 | 1208 | /*菜单项目非排他指示器即复选框为选中时的属性设置*/ 1209 | QMenu::indicator:non-exclusive:checked 1210 | { 1211 | image: url(:/qss/icon/checkbox_p.png); 1212 | } 1213 | 1214 | /*菜单项目非排他指示器即复选框为选中被掠过时的属性设置*/ 1215 | QMenu::indicator:non-exclusive:checked:selected 1216 | { 1217 | image: url(:/qss/icon/checkbox_p.png); 1218 | } 1219 | 1220 | 1221 | /* 菜单项目排他指示器属性设置,大同小异 */ 1222 | QMenu::indicator:exclusive:unchecked 1223 | { 1224 | image: url(:/qss/icon/radio.png); 1225 | } 1226 | 1227 | QMenu::indicator:exclusive:unchecked:selected 1228 | { 1229 | image: url(:/qss/icon/radio_h.png); 1230 | } 1231 | 1232 | QMenu::indicator:exclusive:checked 1233 | { 1234 | image: url(:/qss/icon/radio_p.png); 1235 | } 1236 | 1237 | QMenu::indicator:exclusive:checked:selected 1238 | { 1239 | image: url(:/qss/icon/radio_p.png); 1240 | } 1241 | 1242 | 1243 | /*/////////////////////////////////////////////////QToolButton///////////////////////////////////////////*/ 1244 | /*QToolButton:工具栏上按钮或单独的工具按钮(单独工具按钮可弹出popupmenu)*/ 1245 | /**/ 1246 | /*QToolButton公用属性设置*/ 1247 | QToolButton 1248 | { 1249 | min-height:20px;/*最小宽度*/ 1250 | border: 1px solid #aaaaaa;/*边框*/ 1251 | border-radius: 4px;/*QToolButton与QPushButton基本一致,但这里设置的边框圆角不一致*/ 1252 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1253 | outline:none;/*表示foucs状态时取消虚线框*/ 1254 | } 1255 | 1256 | /*QToolButton类型为DelayPopup时为menu-indicator子控制器留出空间 1257 | DelayPopup表示持续按压按钮可弹出菜单*/ 1258 | QToolButton[popupMode="0"] 1259 | { 1260 | padding-right: 4px; /*用padding留出空间,初始subcontrol-origin属性要为padding*/ 1261 | } 1262 | 1263 | /*QToolButton类型为MenuButtonPopup时为menu-button子控制器留出空间 1264 | MenuButtonPopup表示点击menu-button子控制器可弹出菜单*/ 1265 | QToolButton[popupMode="1"] 1266 | { 1267 | padding-right: 18px; /*用padding留出空间,初始subcontrol-origin属性要为padding*/ 1268 | } 1269 | 1270 | /*QToolButton类型为InstantPopup时为menu-indicator子控制器留出空间 1271 | MenuButtonPopup表示点击QToolButton即可立即弹出菜单,Instant表示立即意思*/ 1272 | QToolButton[popupMode="2"] 1273 | { 1274 | padding-right: 4px;/*用padding留出空间,初始subcontrol-origin属性要为padding*/ 1275 | } 1276 | 1277 | /*QToolButton pressed伪状态时属性设置,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/ 1278 | QToolButton:hover 1279 | { 1280 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1281 | } 1282 | 1283 | /*QToolButton pressed伪状态时属性设置,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/ 1284 | QToolButton:pressed 1285 | { 1286 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1287 | } 1288 | 1289 | /*QToolButton menu-button子控制器属性设置 1290 | menu-button子控制器仅对MenuButtonPopup类型QToolButton生效*/ 1291 | QToolButton::menu-button 1292 | { 1293 | border-left: 1px solid #aaaaaa;/*设置左边边框即可*/ 1294 | border-top-right-radius: 4px;/*设置右上边框圆角,与QToolButton自身圆角保持一致*/ 1295 | border-bottom-right-radius: 4px;/*设置右小边框圆角,与QToolButton自身圆角保持一致*/ 1296 | width: 16px;/*设置menu-button宽度,注意与QToolButton的padding-right属性值匹配*/ 1297 | } 1298 | 1299 | /*QToolButton menu-arrow子控制器属性设置 1300 | menu-arrow子控制器仅对MenuButtonPopup类型QToolButton生效,它为menu-button箭头*/ 1301 | QToolButton::menu-arrow 1302 | { 1303 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/ 1304 | top: 1px; /*顶部相对偏移1px,调整menu-arrow相对父控件位置*/ 1305 | right: 1px; /*右边相对偏移1px,调整menu-arrow相对父控件位置*/ 1306 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);/*箭头图片*/ 1307 | } 1308 | 1309 | /*QToolButton menu-arrow子控制器在菜单展开式的属性设置 1310 | menu-arrow子控制器仅对MenuButtonPopup类型QToolButton生效,它为menu-button箭头*/ 1311 | QToolButton::menu-arrow:open 1312 | { 1313 | top: 2px; /*顶部偏移1px,让箭头有下沉效果*/ 1314 | } 1315 | 1316 | /*QToolButton menu-indicator子控制器属性设置 1317 | menu-indicator子控制器仅对MenuButtonPopup和InstantPopup类型QToolButton生效,它表示按钮拥有菜单的指示*/ 1318 | QToolButton::menu-indicator 1319 | { 1320 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);/*箭头图片*/ 1321 | width:7px;/*menu-indicator宽度*/ 1322 | height:7px;/*menu-indicator高度*/ 1323 | padding:0px 2px;/*调整menu-indicator位置*/ 1324 | } 1325 | 1326 | /*/////////////////////////////////////////////////QToolBar///////////////////////////////////////////*/ 1327 | /*QToolBar公用属性设置*/ 1328 | QToolBar 1329 | { 1330 | spacing:2px;/*调整工具栏按钮间距离*/ 1331 | background:#f2f2f2;/*设置背景色与主窗口背景一致,这样在拖动时就不会露出原来背景色*/ 1332 | } 1333 | 1334 | /*QToolBar handle子控制器(就是那个工具栏拖动按钮)属性设置 */ 1335 | QToolBar::handle 1336 | { 1337 | /*保存默认即可*/ 1338 | } 1339 | 1340 | /*QToolBar separator子控制器(就是工具栏之间风格条)属性设置 */ 1341 | QToolBar::separator 1342 | { 1343 | /*保存默认即可*/ 1344 | } 1345 | 1346 | /*由于QToolButton的属性对QToolBar上button属性的影响不知道怎么分离, 1347 | 所以QToolBar上按钮效果要完全自己定制,其实qt本身实现的XP系统上玻璃覆盖效果不错*/ 1348 | /*QToolBar上按钮属性设置*/ 1349 | QToolBar QToolButton 1350 | { 1351 | margin-bottom:2px;/*调整按钮大小,防止QToolButton hover时遮住QToolBar自身边框*/ 1352 | border: none;/*去掉边框*/ 1353 | background:transparent;/*设置normal状态下背景色为透明色*/ 1354 | border-radius: 4px;/*边框圆角*/ 1355 | } 1356 | 1357 | /*/////////////////////////////////////////////////QToolTip///////////////////////////////////////////*/ 1358 | /*QToolTip(提示条)公用属性设置*/ 1359 | QToolTip 1360 | { 1361 | /*background:#f4f4f4;*/ 1362 | border: 1px solid #aaaaaa;/*边框*/ 1363 | padding: 1px;/*调整大小*/ 1364 | border-radius: 0px;/*边框圆角*/ 1365 | background:#fafafa; 1366 | opacity: 240;/*不透明度,255时不透明*/ 1367 | } 1368 | 1369 | /*/////////////////////////////////////////////////QSpinBox///////////////////////////////////////////*/ 1370 | QSpinBox 1371 | { 1372 | min-height:20px; 1373 | padding-right: 15px; 1374 | border: 1px solid #aaaaaa;/*边框*/ 1375 | min-width:1em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/ 1376 | background:white; 1377 | } 1378 | 1379 | QSpinBox::up-button 1380 | { 1381 | subcontrol-origin: padding; 1382 | subcontrol-position: top right; 1383 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1384 | width: 15px; 1385 | border-left: 1px solid #aaaaaa; 1386 | border-bottom: 0px solid #aaaaaa; 1387 | } 1388 | 1389 | QSpinBox::up-button:hover 1390 | { 1391 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1392 | } 1393 | 1394 | QSpinBox::up-button:pressed 1395 | { 1396 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1397 | } 1398 | 1399 | QSpinBox::up-arrow 1400 | { 1401 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 1402 | width: 9px; 1403 | height: 9px; 1404 | } 1405 | 1406 | QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off 1407 | { 1408 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1409 | border: 0px solid #dddddd;/*边框*/ 1410 | } 1411 | 1412 | QSpinBox::down-button 1413 | { 1414 | subcontrol-origin: padding; 1415 | subcontrol-position: bottom right; 1416 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1417 | width: 15px; 1418 | border-left: 1px solid #aaaaaa; 1419 | border-top: 0px solid #aaaaaa; 1420 | } 1421 | 1422 | QSpinBox::down-button:hover 1423 | { 1424 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1425 | } 1426 | 1427 | QSpinBox::down-button:pressed 1428 | { 1429 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1430 | } 1431 | 1432 | QSpinBox::down-arrow 1433 | { 1434 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 1435 | width: 9px; 1436 | height: 9px; 1437 | } 1438 | 1439 | QSpinBox::down-arrow:disabled, 1440 | QSpinBox::down-arrow:off 1441 | { 1442 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1443 | border: 0px solid #dddddd;/*边框*/ 1444 | } 1445 | 1446 | 1447 | /*/////////////////////////////////////////////////QDoubleSpinBox///////////////////////////////////////////*/ 1448 | QDoubleSpinBox 1449 | { 1450 | min-height:20px; 1451 | padding-right: 15px; 1452 | border: 1px solid #aaaaaa;/*边框*/ 1453 | min-width:4em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/ 1454 | } 1455 | 1456 | QDoubleSpinBox::up-button 1457 | { 1458 | subcontrol-origin: padding; 1459 | subcontrol-position: top right; /* position at the top right corner */ 1460 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1461 | width: 15px; 1462 | border-left: 1px solid #aaaaaa; 1463 | border-bottom: 0px solid #aaaaaa; 1464 | } 1465 | 1466 | QDoubleSpinBox::up-button:hover 1467 | { 1468 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1469 | } 1470 | 1471 | QDoubleSpinBox::up-button:pressed 1472 | { 1473 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1474 | } 1475 | 1476 | QDoubleSpinBox::up-arrow 1477 | { 1478 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 1479 | width: 9px; 1480 | height: 9px; 1481 | } 1482 | 1483 | QDoubleSpinBox::up-arrow:disabled, 1484 | QSpinBox::up-arrow:off 1485 | { 1486 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1487 | border: 1px solid #dddddd;/*边框*/ 1488 | } 1489 | 1490 | QDoubleSpinBox::down-button 1491 | { 1492 | subcontrol-origin: padding; 1493 | subcontrol-position: bottom right; 1494 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1495 | width: 15px; 1496 | border-left: 1px solid #aaaaaa; 1497 | border-top: 0px solid #aaaaaa; 1498 | } 1499 | 1500 | QDoubleSpinBox::down-button:hover 1501 | { 1502 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1503 | } 1504 | 1505 | QDoubleSpinBox::down-button:pressed 1506 | { 1507 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1508 | } 1509 | 1510 | QDoubleSpinBox::down-arrow { 1511 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 1512 | width: 9px; 1513 | height: 9px; 1514 | } 1515 | 1516 | QDoubleSpinBox::down-arrow:disabled, 1517 | QDoubleSpinBox::down-arrow:off 1518 | { 1519 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1520 | border: 1px solid #dddddd;/*边框*/ 1521 | } 1522 | 1523 | /*/////////////////////////////////////////////////QTimeEdit///////////////////////////////////////////*/ 1524 | QTimeEdit 1525 | { 1526 | min-height:20px; 1527 | padding-right: 15px; 1528 | border: 1px solid #aaaaaa;/*边框*/ 1529 | min-width:8em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/ 1530 | } 1531 | 1532 | QTimeEdit::up-button 1533 | { 1534 | subcontrol-origin: padding; 1535 | subcontrol-position: top right; /* position at the top right corner */ 1536 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1537 | width: 15px; 1538 | border-left: 1px solid #aaaaaa; 1539 | border-bottom: 0px solid #aaaaaa; 1540 | } 1541 | 1542 | QTimeEdit::up-button:hover 1543 | { 1544 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1545 | } 1546 | 1547 | QTimeEdit::up-button:pressed 1548 | { 1549 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1550 | } 1551 | 1552 | QTimeEdit::up-arrow 1553 | { 1554 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 1555 | width: 9px; 1556 | height: 9px; 1557 | } 1558 | 1559 | QTimeEdit::up-arrow:disabled, 1560 | QTimeEdit::up-arrow:off 1561 | { 1562 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1563 | border: 1px solid #dddddd;/*边框*/ 1564 | } 1565 | 1566 | QTimeEdit::down-button 1567 | { 1568 | subcontrol-origin: padding; 1569 | subcontrol-position: bottom right; 1570 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1571 | width: 15px; 1572 | border-left: 1px solid #aaaaaa; 1573 | border-top: 0px solid #aaaaaa; 1574 | } 1575 | 1576 | QTimeEdit::down-button:hover 1577 | { 1578 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1579 | } 1580 | 1581 | QTimeEdit::down-button:pressed 1582 | { 1583 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1584 | } 1585 | 1586 | QTimeEdit::down-arrow 1587 | { 1588 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 1589 | width: 9px; 1590 | height: 9px; 1591 | } 1592 | 1593 | QTimeEdit::down-arrow:disabled, 1594 | QTimeEdit::down-arrow:off 1595 | { 1596 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1597 | border: 1px solid #dddddd;/*边框*/ 1598 | } 1599 | 1600 | 1601 | /*/////////////////////////////////////////////////QDateEdit///////////////////////////////////////////*/ 1602 | QDateEdit 1603 | { 1604 | min-height:20px; 1605 | padding-right: 15px; 1606 | border: 1px solid #aaaaaa;/*边框*/ 1607 | min-width:10em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/ 1608 | } 1609 | 1610 | QDateEdit::up-button 1611 | { 1612 | subcontrol-origin: padding; 1613 | subcontrol-position: top right; /* position at the top right corner */ 1614 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1615 | width: 15px; 1616 | border-left: 1px solid #aaaaaa; 1617 | border-bottom: 0px solid #aaaaaa; 1618 | } 1619 | 1620 | QDateEdit::up-button:hover 1621 | { 1622 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1623 | } 1624 | 1625 | QDateEdit::up-button:pressed 1626 | { 1627 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1628 | } 1629 | 1630 | QDateEdit::up-arrow 1631 | { 1632 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 1633 | width: 9px; 1634 | height: 9px; 1635 | } 1636 | 1637 | QDateEdit::up-arrow:disabled, 1638 | QDateEdit::up-arrow:off 1639 | { 1640 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1641 | border: 1px solid #dddddd;/*边框*/ 1642 | } 1643 | 1644 | QDateEdit::down-button 1645 | { 1646 | subcontrol-origin: padding; 1647 | subcontrol-position: bottom right; 1648 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1649 | width: 15px; 1650 | border-left: 1px solid #aaaaaa; 1651 | border-top: 0px solid #aaaaaa; 1652 | } 1653 | 1654 | QDateEdit::down-button:hover 1655 | { 1656 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1657 | } 1658 | 1659 | QTimeEdit::down-button:pressed 1660 | { 1661 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1662 | } 1663 | 1664 | QDateEdit::down-arrow 1665 | { 1666 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 1667 | width: 9px; 1668 | height: 9px; 1669 | } 1670 | 1671 | QDateEdit::down-arrow:disabled, 1672 | QDateEdit::down-arrow:off 1673 | { 1674 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1675 | border: 1px solid #dddddd;/*边框*/ 1676 | } 1677 | 1678 | /*/////////////////////////////////////////////////QDateTimeEdit///////////////////////////////////////////*/ 1679 | QDateTimeEdit 1680 | { 1681 | min-height:20px; 1682 | padding-right: 15px; 1683 | border: 1px solid #aaaaaa;/*边框*/ 1684 | background:white; 1685 | } 1686 | 1687 | QDateTimeEdit::up-button 1688 | { 1689 | subcontrol-origin: padding; 1690 | subcontrol-position: top right; /* position at the top right corner */ 1691 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1692 | width: 15px; 1693 | border-left: 1px solid #aaaaaa; 1694 | border-bottom: 0px solid #aaaaaa; 1695 | } 1696 | 1697 | QDateTimeEdit::up-button:hover 1698 | { 1699 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1700 | } 1701 | 1702 | QDateTimeEdit::up-button:pressed 1703 | { 1704 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1705 | } 1706 | 1707 | QDateTimeEdit::up-arrow 1708 | { 1709 | image:url(:/qss/icon/ver_scroll_top_arrow.png); 1710 | width: 9px; 1711 | height: 9px; 1712 | } 1713 | 1714 | QDateTimeEdit::up-arrow:disabled, 1715 | QDateTimeEdit::up-arrow:off 1716 | { 1717 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1718 | border: 1px solid #dddddd;/*边框*/ 1719 | } 1720 | 1721 | QDateTimeEdit::down-button 1722 | { 1723 | subcontrol-origin: padding; 1724 | subcontrol-position: bottom right; 1725 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/ 1726 | width: 15px; 1727 | border-left: 1px solid #aaaaaa; 1728 | border-top: 0px solid #aaaaaa; 1729 | } 1730 | 1731 | QDateTimeEdit::down-button:hover 1732 | { 1733 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/ 1734 | } 1735 | 1736 | QDateTimeEdit::down-button:pressed 1737 | { 1738 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/ 1739 | } 1740 | 1741 | QDateTimeEdit::down-arrow 1742 | { 1743 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png); 1744 | width: 9px; 1745 | height: 9px; 1746 | } 1747 | 1748 | QDateTimeEdit::down-arrow:disabled, 1749 | QDateTimeEdit::down-arrow:off 1750 | { 1751 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/ 1752 | border: 1px solid #dddddd;/*边框*/ 1753 | } 1754 | 1755 | /*/////////////////////////////////////////////////QGraphicsView///////////////////////////////////////////*/ 1756 | QGraphicsView 1757 | { 1758 | border:none; 1759 | } 1760 | /*/////////////////////////////////////////////////QSizeGrip///////////////////////////////////////////*/ 1761 | QSizeGrip 1762 | { 1763 | image: url(:/qss/icon/sizegrip.png); 1764 | width: 15px; 1765 | height: 15px; 1766 | } 1767 | 1768 | /*/////////////////////////////////////////////////QDockWidget///////////////////////////////////////////*/ 1769 | QDockWidget 1770 | { 1771 | border: 1px solid #aaaaaa; 1772 | background: #f2f2f2; 1773 | } 1774 | 1775 | QDockWidget::title { 1776 | text-align: left; /* align the text to the left */ 1777 | background: #f0f0f0; 1778 | padding-left: 5px; 1779 | padding-right: 5px; 1780 | border-bottom:1 solid #aaaaaa; 1781 | } 1782 | 1783 | QMainWindow::separator 1784 | { 1785 | width:0px; 1786 | height:0px; 1787 | border-width: 1px; 1788 | border-color:#f2f2f2 #f2f2f2 #aaaaaa #aaaaaa ; 1789 | border-style:solid; 1790 | } 1791 | 1792 | /*/////////////////////////////////////////////////QLCDNumber///////////////////////////////////////////*/ 1793 | QLCDNumber 1794 | { 1795 | /*background:white;*/ 1796 | } 1797 | 1798 | 1799 | 1800 | 1801 | 25 1802 | 25 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 900 1812 | 300 1813 | 1814 | 1815 | 1816 | 1817 | 16777215 1818 | 16777215 1819 | 1820 | 1821 | 1822 | 日志输出 1823 | 1824 | 1825 | 1826 | 1827 | 40 1828 | 40 1829 | 841 1830 | 191 1831 | 1832 | 1833 | 1834 | 1835 | 10 1836 | 1837 | 1838 | 10 1839 | 1840 | 1841 | 10 1842 | 1843 | 1844 | 10 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 90 1851 | 26 1852 | 1853 | 1854 | 1855 | 1856 | 10 1857 | 1858 | 1859 | 1860 | 清空日志 1861 | 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 90 1869 | 26 1870 | 1871 | 1872 | 1873 | 1874 | 10 1875 | 1876 | 1877 | 1878 | 滑至日志底部 1879 | 1880 | 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 10 1887 | 1888 | 1889 | 1890 | 1891 | 1892 | 1893 | 1894 | 仅保留最近30条记录 1895 | 1896 | 1897 | 1898 | 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1906 | 200 1907 | 0 1908 | 1909 | 1910 | 1911 | 动作控制 1912 | 1913 | 1914 | 1915 | 1916 | 20 1917 | 20 1918 | 281 1919 | 161 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 90 1928 | 26 1929 | 1930 | 1931 | 1932 | 1933 | 10 1934 | 1935 | 1936 | 1937 | 停止下载 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 90 1946 | 26 1947 | 1948 | 1949 | 1950 | 1951 | 16777215 1952 | 16777215 1953 | 1954 | 1955 | 1956 | 1957 | 12 1958 | 1959 | 1960 | 1961 | 查询购买情况 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 90 1970 | 26 1971 | 1972 | 1973 | 1974 | 1975 | 16777215 1976 | 16777215 1977 | 1978 | 1979 | 1980 | 1981 | 12 1982 | 1983 | 1984 | 1985 | 开始下载 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 身份验证 1997 | 1998 | 1999 | 2000 | 2001 | 20 2002 | 50 2003 | 160 2004 | 84 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 59 2013 | 50 2014 | 2015 | 2016 | 2017 | 2018 | 12 2019 | 2020 | 2021 | 2022 | Qt::LeftToRight 2023 | 2024 | 2025 | 2026 | B站扫码登录 2027 | 2028 | 2029 | 2030 | 2031 | B站输入SESSDATA 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 90 2041 | 26 2042 | 2043 | 2044 | 2045 | 2046 | 16777215 2047 | 70 2048 | 2049 | 2050 | 2051 | 2052 | 12 2053 | 2054 | 2055 | 2056 | 开始身份验证 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 0 2069 | 600 2070 | 2071 | 2072 | 2073 | 2074 | 16777215 2075 | 16777215 2076 | 2077 | 2078 | 2079 | 下载目标 2080 | 2081 | 2082 | 2083 | 2084 | 20 2085 | 230 2086 | 657 2087 | 70 2088 | 2089 | 2090 | 2091 | Qt::Horizontal 2092 | 2093 | 2094 | 2095 | 2096 | 12 2097 | 2098 | 2099 | 2100 | 下载范围: 2101 | 2102 | 2103 | Qt::AlignCenter 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 50 2110 | 0 2111 | 2112 | 2113 | 2114 | 2115 | 12 2116 | 2117 | 2118 | 2119 | Qt::DefaultContextMenu 2120 | 2121 | 2122 | Qt::LeftToRight 2123 | 2124 | 2125 | 漫画ID: 2126 | 2127 | 2128 | Qt::AlignCenter 2129 | 2130 | 2131 | 2132 | 2133 | 2134 | 0 2135 | 60 2136 | 2137 | 2138 | 2139 | 2140 | 16777215 2141 | 70 2142 | 2143 | 2144 | 2145 | 2146 | 10 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | 2153 | 16777215 2154 | 70 2155 | 2156 | 2157 | 2158 | 2159 | 10 2160 | 2161 | 2162 | 2163 | QFrame::NoFrame 2164 | 2165 | 2166 | QFrame::Plain 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bilibili漫画 下载器 2 | 哔哩哔哩漫画下载工具, 支持范围下载 3 | 4 | **各位也都看到了,这个项目仅仅是因为一个截图火起来的,本身作为Python爬虫项目,代码已经停留在两年前了,根据我的观察,项目原本使用的Bilibili Login API已经失效了,Bilibili Mnaga部分的API不确定是否出现更改,还请各位刷梗就好,如果项目代码有问题建议暂时另外开一个issue反馈,不要乱搞** 5 | 6 | ## 项目特点 7 | 1:拥有图形界面(易用程度大幅度提升)
8 | 2:支持多样的下载范围自定义
9 | 3:支持付费漫画下载(前提是已经购买的漫画) 10 | 11 | ## 使用说明 12 | 漫画id内填入B漫的id,如链接为`https://manga.bilibili.com/detail/mc28241` ,则id为`28241` 13 | 漫画范围,填`0`则是会尝试下载所有章节,`14-16`表示下载14到16,`58`表示下载序号为58,可用逗号隔开不同的下载范围 14 | 15 | ## TODO 16 | > 就目前而言,请使用release中的二进制版本,仓库中的代码还在进行开发,并非最终版本。预计未来会加上其他平台的支持,如鹰角网络 17 | - 增加高级设置,如手动输入SESSDATA和网络代理
18 | - 优化扫码登录的方案
19 | - 整合设置数据为json对象,并生成设置文件
20 | - 尝试引入双线程下载加速 21 | - 写使用说明 22 | 23 | ## 其他项目引用 24 | 图片解析部分来自 https://github.com/flaribbit/bilibili-manga-spider
25 | 下载逻辑参考 https://github.com/xuruoyu/bilibili_manga_downloader 26 | -------------------------------------------------------------------------------- /TerraHistoricus/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/TerraHistoricus/__init__.py -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import time 4 | from PySide6.QtWidgets import * 5 | from PySide6.QtCore import Slot, QThread, Signal 6 | import setting 7 | from ui_MainGUI import Ui_MainWindow 8 | import json 9 | 10 | 11 | class Thread_Login(QThread): 12 | """ 13 | 扫码登录线程 14 | """ 15 | signal = Signal(str) 16 | 17 | def __init__(self): 18 | super().__init__() 19 | 20 | def run(self): 21 | from Bilibili.login import bzlogin 22 | bzlogin(self.signal.emit) 23 | 24 | 25 | class Thread_Download(QThread): 26 | """ 27 | 下载线程,传入漫画ID和下载范围 28 | """ 29 | signal = Signal(str) 30 | 31 | def __init__(self, comic_id, comic_range): 32 | super().__init__() 33 | self.comic_id = comic_id 34 | self.comic_range = comic_range 35 | 36 | def run(self): 37 | from Bilibili.download import download_main 38 | download_main(self.comic_id, self.comic_range, self.signal.emit) 39 | 40 | 41 | class MainWindow(QMainWindow, Ui_MainWindow): 42 | 43 | @Slot() 44 | def datafile_check(self): 45 | """ 46 | 检查数据文件可访问性 47 | """ 48 | from Bilibili.settings import download_path 49 | if not os.path.exists(download_path): 50 | os.makedirs(download_path) 51 | if not os.path.exists(setting.setting_file): 52 | f = open(setting.setting_file, 'a+') 53 | f.close() 54 | text = setting.settintfile_read() 55 | if len(text) > 0: 56 | properties = json.loads(text) 57 | 58 | @Slot() 59 | def manga_id_get(self) -> int: 60 | """ 61 | 链接解析 62 | """ 63 | from urllib.parse import urlparse 64 | url = str(self.textEdit_2.toPlainText()) 65 | url = urlparse(url) 66 | if url.netloc == 'manga.Bilibili.com': 67 | if str(url.path).find('mc') == -1: 68 | self.textBrowser.append("未检测到漫画信息") 69 | return -1 70 | else: 71 | self.textBrowser.append("链接输入错误,非B漫链接") 72 | return -1 73 | return int(str(url.path).split("/")[2][2:]) 74 | 75 | @Slot() 76 | def purchase_staus_check(self): # 检查购买情况 77 | from Bilibili.download import get_purchase_status 78 | manga_id = self.manga_id_get() 79 | if manga_id == -1: 80 | self.textBrowser.append("漫画ID输入错误,请核对后再次执行") 81 | return None 82 | data_re = get_purchase_status(manga_id, self.textBrowser.append) 83 | if data_re is None: 84 | return None 85 | # TODO 做个防呆,避免用户非法输入 86 | self.textBrowser.append("查询 " + str(data_re[0][0]) + "-" + data_re[0][1]) 87 | self.textBrowser.append("查询时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) 88 | for data in data_re[1:]: 89 | self.textBrowser.append(data[0] + data[1]) 90 | 91 | @Slot() 92 | def manga_download(self): # 下载 93 | self.pushButton_3.setEnabled(False) 94 | if self.textEdit_2.toPlainText() == "" or not self.textEdit_2.toPlainText().isnumeric(): 95 | self.textBrowser.append("漫画ID输入错误,请检查输入") 96 | self.pushButton_3.setEnabled(True) 97 | return None 98 | if self.textEdit_3.toPlainText() == "": 99 | self.textBrowser.append("下载范围输入错误,请检查输入") 100 | self.pushButton_3.setEnabled(True) 101 | return None 102 | self.thread_download = Thread_Download(self.textEdit_2.toPlainText(), self.textEdit_3.toPlainText()) 103 | self.thread_download.signal.connect(self.log_append) 104 | self.thread_download.start() 105 | 106 | @Slot() 107 | def login_qrcode(self): # 登录 108 | self.thread_login = Thread_Login() 109 | self.thread_login.signal.connect(self.log_append) 110 | self.pushButton.setEnabled(False) 111 | self.thread_login.start() 112 | 113 | @Slot() 114 | def download_manga_stop(self): # 下载中断 115 | self.thread_download.terminate() 116 | self.textBrowser.append("下载任务已被中断") 117 | self.pushButton_3.setEnabled(True) 118 | 119 | @Slot(str) 120 | def log_append(self, status, message): # 日志输出,用槽函数接受信号 121 | if status == "0xe1": 122 | self.pushButton.setEnabled(True) 123 | if status == "0xe2": 124 | self.pushButton_2.setEnabled(True) 125 | if status == "0xe3": 126 | self.pushButton_3.setEnabled(True) 127 | self.textBrowser.append(message) 128 | 129 | @Slot() 130 | def log_scroll_down(self): # 日志下滑 131 | self.textBrowser.moveCursor(self.textBrowser.textCursor().End) 132 | 133 | @Slot() 134 | def log_clear(self): # 日志清空 135 | self.textBrowser.setText("") 136 | 137 | def __init__(self, parent=None): 138 | super(MainWindow, self).__init__(parent) 139 | self.thread_login = None 140 | self.thread_download = None 141 | self.setupUi(self) 142 | from Bilibili.settings import version 143 | self.setWindowTitle("Bilibili漫画下载器 " + version) 144 | self.datafile_check() 145 | # 漫画信息窗口-初始化 146 | 147 | self.pushButton_2.clicked.connect(self.purchase_staus_check) # 检查购买按钮 148 | self.pushButton.clicked.connect(self.login_qrcode) # 扫码登录按钮 149 | self.pushButton_3.clicked.connect(self.manga_download) # 开始下载按钮 150 | self.pushButton_6.clicked.connect(self.download_manga_stop) # 下载终止按钮 151 | self.pushButton_5.clicked.connect(self.log_scroll_down) # 日志框下滑按钮 152 | self.pushButton_4.clicked.connect(self.log_clear) # 日志清零 153 | 154 | 155 | if __name__ == "__main__": 156 | app = QApplication() 157 | window = MainWindow() 158 | window.show() 159 | sys.exit(app.exec()) 160 | -------------------------------------------------------------------------------- /main.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python ; coding: utf-8 -*- 2 | 3 | 4 | block_cipher = None 5 | 6 | 7 | a = Analysis(['main.py'], 8 | pathex=[], 9 | binaries=[], 10 | datas=[], 11 | hiddenimports=[], 12 | hookspath=[], 13 | hooksconfig={}, 14 | runtime_hooks=[], 15 | excludes=["pyinstaller","whell","setuptools","pyinstaller-hooks-contrib","pip","PySide6.QtNetwork","_tkinter"], 16 | win_no_prefer_redirects=False, 17 | win_private_assemblies=False, 18 | cipher=block_cipher, 19 | noarchive=False) 20 | pyz = PYZ(a.pure, a.zipped_data, 21 | cipher=block_cipher) 22 | 23 | exe = EXE(pyz, 24 | a.scripts, 25 | a.binaries, 26 | a.zipfiles, 27 | a.datas, 28 | [], 29 | name='main', 30 | debug=False, 31 | bootloader_ignore_signals=False, 32 | strip=False, 33 | upx=True, 34 | upx_exclude=[], 35 | runtime_tmpdir=None, 36 | console=False, 37 | disable_windowed_traceback=False, 38 | target_arch=None, 39 | codesign_identity=None, 40 | entitlements_file=None , icon='D:\\_Code\\Bilibili_manga_download\\main.ico') 41 | -------------------------------------------------------------------------------- /setting.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | setting_file = "setting.json" 4 | properties_global = {} 5 | 6 | 7 | def settintfile_read(): 8 | """ 9 | 读取设置文件所有内容 10 | """ 11 | f = open(setting_file, 'r') 12 | json_text = f.read() 13 | f.close() 14 | return json_text 15 | 16 | 17 | def settingfile_write(json_text): 18 | """ 19 | 所有内容覆盖到设置文件中。 20 | """ 21 | try: 22 | f = open(setting_file, 'w') 23 | f.write(json_text) 24 | f.close() 25 | return True 26 | except Exception: 27 | return False 28 | 29 | 30 | def property_put(key, value, properties, domain=None): 31 | """ 32 | 保存一个属性。如果key不存在,则创建;存在,则覆盖。 33 | """ 34 | properties[domain][key] = value 35 | json_text = json.dumps(properties) 36 | settingfile_write(json_text) 37 | return properties 38 | 39 | 40 | def property_get(key, properties, default=None, domain=None): 41 | """ 42 | 获取一个属性。如果不存在,则返回default。 43 | """ 44 | if key in properties[domain]: 45 | return properties[domain][key] 46 | else: 47 | return default 48 | -------------------------------------------------------------------------------- /source/main.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/source/main.ico -------------------------------------------------------------------------------- /source/main.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.ico 4 | 5 | -------------------------------------------------------------------------------- /source/main_rc.py: -------------------------------------------------------------------------------- 1 | # Resource object code (Python 3) 2 | # Created by: object code 3 | # Created by: The Resource Compiler for Qt version 6.2.3 4 | # WARNING! All changes made in this file will be lost! 5 | 6 | from PySide6 import QtCore 7 | 8 | qt_resource_data = b"\ 9 | \x00\x00S\xd6\ 10 | \x00\ 11 | \x04 >x\x9c\xed]\x05\x5cT\xd9\xf7\x7fC\x97t\ 12 | \xa8\x80(vw+`\xa04\x12\x8aHw(v\xb7\ 13 | \x98\xd8\xae\xdb\xe1\x96k\xbbvwwl\xfe\xf7\xb7\xdd\ 14 | a\xec\xaa0\xf3jf\xee\xff\x9e\xf7f\x10a\x86P\ 15 | \xe0\x0dr\xbf\xfb\xf9\xee\x08w\x98\xb9\xef\xbd{\xce=\ 16 | \xe7\xdcs\xcf\xa5(\x19\xfe\x0f \xa3\x9aRm\x9a\x9a\ 17 | P\xae\xf8\xdfm\xc4_P\x94\x91\xf8{\x01\xb8\x8d\x80\ 18 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 19 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 20 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 21 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 22 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 23 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 24 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 25 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\ 26 | \x80\x80\x80\x80\x80\x80\x80\xe0\xb9 \xc34\xc14\xc74\ 27 | \x96\xb8/\x04\x04\x045\x0b\x90sO\xcc03\x13\xa3\ 28 | \x156\xe6f;\xdd\x1d\x1a\x9cv\xb5\xb3\xbeeke\ 29 | ~\xb0\x81\x85\xd9\x87FF\xd4L\xdc\xde\x09\xd3R\xda\ 30 | \xae\x12\x10\x10\xbc \x8c0\xed0\xbbc\xb9\x9e\xd7\xd0\ 31 | \xde\xe6|\xd7f\x8d~\xcd\x0b\xec]\xb4)7\x92\xde\ 32 | 7c\x0csqI\x06\x7f\x01\xf3\xc4\xfc\x14\xd5\xd1\xb9\ 33 | \x89\xfc\x9a\xe4\xe1\x5c\x9cO\xa7\xc2\xa6.\xf6w\xb1\x8e\ 34 | \x98\x83\xff\xb6\x19%\xda\x09\x04\x04\x04\xb5\x03\xb0\xc9m\ 35 | 0\xed1\x1d0\x1d5\xff\x06Y\xb6\xa6\x9e\xda\xea2\ 36 | \xcd\xbfM1\xad0\xdd(q\xee\x1e\x86\x99men\ 37 | \xb6\xa3\xa9\x8b\xc37\xfe\x9d\x9b\xffW\x10\xefO\x9f\x9a\ 38 | \x9f\xcc\xdd,\xc8V\xdeY\x9d\xa3\xbe\xb52\x07\xdd\xc4\ 39 | \xbcU\x82\xda\x9f\xef\xac\xceU_Y\x96\xc9\xbf\x99\x11\ 40 | \xca\x0eh\xd3\xe4\x0fS\x13\xa3\xd5\xf8\xf3\xdaR\xa2>\ 41 | ! \x10e\xcf\x82\x12\xe5\x0ed\xd4\x19\xb3\x15f\ 42 | {\xcc\x0e\x98\x031\x031\x830#030\xb31\ 43 | s1\xf31W\x95\xe2Jx\xc5\x02\xb6\xca\xdc\xc4x\ 44 | \x17\x9e{?736\xfa\x15\xf3/Sc\xa3\xbf\xf1\ 45 | \xeb\x1f\x98?Y\x9a\x9a\xdc\xb4\xb10\xdd\x8c\x7f\xf7\x9a\ 46 | \x99\xa9\xf1\xfb\x96f&;\xf0\xcf\xa7\x9dm\xac\xee\xb6\ 47 | l\xe4\xf8\xa3O\xdb\xa6\x8f#{\xb7+\x9c\x16>\x80\ 48 | \xdb6i\x94\x12\xe6\xf7\xdb+sUwV\x892\xff\ 49 | \x1cT~\x98\x17\xc9\x84\xf6h\xf3\xb7\x95\x99\xe9&J\ 50 | \xd4/D\x0f\x10\xd4Ehc]0\x87\xc2\x5cj\xab\ 51 | yu\xc7lN\x89c\xbb\x17%\xcan\x08f\xe8\xd2\xb4\xd1C\x9f\ 67 | \xb6^\xf7\x87un\xf10\xb0k\xab\xc2\xa8>\xed\xd9\ 68 | x\x9f\xce\x5c\xfa\x90n\xcc\xb4\xb0\xfe\xf4\x8a\xf8a\xf2\ 69 | U\x89\xc3\xe5\x1f\x8c\x8d\x90o\x1e\x1fM\x1f\x9a\x9d\xc0\ 70 | \x1e\x9f\x97\xc4_Z\x92\xc9_[\x96\xa5\xbaU\x90\xa3\ 71 | \xba\xbd2[#{\x98\xabD\xe2\x9fQ1W>\xa5\ 72 | \xd6\xd6~QV\xa7|W\x867\x05\xdf G}`\ 73 | f\x1c\x9f>\xa4\x07\xdd\xa2\x91\xd3M\xac\x0f\xa7S\xa2\ 74 | \xcdcU\xc9g\x04\xb6C\x0b\xcc5\x96f\xa6?\xe1\ 75 | g!\x1f\xda\xb9\xb9\xa2\xa3\xa7[\x91\xab\xad\xf5C\xfc\ 76 | \xfb\xd71[R$\xe6@P9\x98av\xc4\x9c`\ 77 | l,\xdb\xefjk\xf5]\xef\x96\x1e\x8f\x12}:\xcb\ 78 | \xf1\x5c\xcb\xbc\x9a\x16\xc2b;\x98;<;\x81\xb9\xb4\ 79 | $\x83\xb9\xb1\x22\x9b\xbf\xbe\x22K\x85_U\xd8\x17\x16\ 80 | eV\x94U<_\xc2\xcf\xe2\xefn?\xbf\xbd\xfc\xd2\ 81 | \x13\xf4\x00\xe8\xb4\xcbK3\xf8\x8d\xf8\xfeb]\xf9_\ 82 | kw\xe7\xcf\xb0M\x04\xb2\x9b\x83\x19@\x89:\xb8\x11\ 83 | \xa6\x07fcJ\xd4\x11\xd9X_ln\xec\xd8\xe0\xaf\ 84 | x\x9fN\x85\x1f\xe7E\xc9\xb1\xcd\xa2\xfclu\xae\xea\ 85 | \xd6\xaa\x1c\x0e\xe2\x13SB\xfb3\xee\x0e\x0d\xee\xe1\xf7\ 86 | \xce\xa5D]N@P\x1a\xe0w\x83\x8f=\xd5\xc4X\ 87 | v\xde\xdb\xcd\xfe^\x92og\xfa\xbd\xec\x11\xec\xd9E\ 88 | \xa9\xd8\xdf\xcdQ\xdd!2\x5ck\xbc\x8b}\x8d\x9b\x05\ 89 | 9\xfc\x9e\xe9c\xb8\xf5)\x81\xdc\xb8\xc0\xdelt\xdf\ 90 | \xf6\xff\x0e\xeb\xdc\xfc/\xdfvM\x1f\xf9\xb4mz/\ 91 | \xa8k\xab\x7f'\x05\xf7c^O\x0f\x11\x9e\xd1]\x90\ 92 | y=\x9fu~Q*\x9b6\xb8[\xa1\x95\x99\xe9u\ 93 | \xfc\x8c\x87P\xc4'\xa8\x8f\x90i\x08\xfe:\xc4\xd6\xba\ 94 | `\xc6a\xae551\xbe\xd1\xd8\xd1\xf6\xf1\xa8\xbe\xed\ 95 | \xe9\xf7rF(\xae-\xcfd\x89\xac\x1b\x0e\xc16\x00\ 96 | 9\xbe+\xc4!\xc0\xbe\xcaU\xc1\xbf\xe1\xf7U\xf8\x0c\ 97 | \xf5\x87\xe3\xa2\xd8.\xcd\x1a\x16b\x9b\xe1c\xfc\xdc\xbd\ 98 | )\xe2\x13\xd4%@\x8c\x0d\xd6\x8c\xc0\x0f\x9fh\x04\xf1\ 99 | 3#\xa3\xd7\xb1/\xfe\xae\x99\xb1\xd1v3c\xe3O\ 100 | 0w\x99\x99\x1ao\xc3s\xf8.\xfc\xef\x8f\x8c\x8d\x8c\ 101 | 6c~\x80\xb9\x1d\xffn'\xe6I\xec#\xdeql\ 102 | `\xf9c\x8b\x86\x8e\x8f\x87wn\xc1\xe4\x05\xf6Q|\ 103 | <>J\x8emy\x1e\xc6\x16\x91\xfb\x97\x97\xf0l\xaf\ 104 | ,\xcbTN\x0f\x1fX\xe4lc\xf5;\x1eGk1\ 105 | ;S\xa2\xcfG`x\x00;\x0db7\x8b\xad\xcdM\ 106 | \xbf\xe9\xe0\xe9\xfao\xdc\xc0N\x8a%\xa3\x87\xd0\xaf\xa5\ 107 | \x07\xd3\x1f\x8c\x8b\xa4?\x9d\x1e\xcb\xee\xc1<8+^\ 108 | \x01\xaf\xfbf\xc4q\xbb\xa7\xc5\xd2\xbb\xa6\x8e\xa6\xb7M\ 109 | \x1a\xc9`\x9f\x90\xdd?\x8d\x03\xbb\x1c\xcf\xd7\ 119 | \x92\x8f\x17\xc2\x97\x93\xda\xd8\xee\xd5\xe5\x99\xdc\xfe\x19c\ 120 | \x98WR\x83\x15\xb9\xc3{\x16\x0dn\xdf\x8cn\xd9\xc8\ 121 | \xa9\xb0\x81\x85\xf9=\x13\x99\xec.\x1e\x97[1\xc7c\ 122 | \xf6\xa4\xc4|Jb#T?\x9a\x9b\x9a\x18}\x931\ 123 | \xb4{\xe1\x8d\x82l\xa5\xd4c\x83\xb0\xfe\xb18\xe7I\ 124 | \xd0\x09Y\xfc\x89\x05\xc9\xec\xc7\xe3\xa3\x98\x99#|\x8a\ 125 | \x86t\xf2Vx:\xda>2\x92\xc9\xbe\xc1c\xf5\x03\ 126 | J\xcc\xe9\x82\xbc#\xa2\x0b^\x1c\x90\xff\xb5gd\x9f\ 127 | \xf6E\xb0\x9e.\xf58 $,ImN\xc7\xc5%\ 128 | \xe9\xdc'\xe3G\xd2\x93C\xfb)\xfa\xb4\xf2(\xb2\xb5\ 129 | 4\xfb\x0f\x8f\xdb+\x98\xb31\xdbQD\x17<-^\x8du\x82\x0a\x7f\xbe\x12\xf4\x85\xa8\ 156 | ?\xa4~\x865\xc8\x82l\xd5\xfbc#\xe4\x03\xdaz\ 157 | \xc9\x8d\x8dd\x103|\x93\x12\xf3\x90\xeb# \xe7\x12\ 158 | \xf6u\xdd\xe8\xe1\xddXqqqZ\x9d\x8d\xf9\xc1^\ 159 | \xdd\xcbK3\x84\xb9\xee\xc8\x8c$\xd5!<\xae\x0fM\ 160 | \x8dW\x1f\x9c*\x8esA\x0e4<\x8c\x7f>2=\ 161 | A}\x14\xbf\xef\xb88\x17\xaaN\xcdMU\x9d\x99\x97\ 162 | \xc6cYS\x9d_\x94\x8e\xe7\xcd4\xe5\xa5\xc5\xe9\xea\ 163 | K\xa0?\x16g\x08\xff\xbe\xbc8\x83\x17~\xb78\x1d\ 164 | \xeb\x94\x0c\x15\xcc\xadX\xfeT \x93\xf8\xef@\xfe\xd0\ 165 | \xb9\x85\xa9j\xfc\xca\xe1~\xa8O\xcdMA\x02\xe7$\ 166 | \xabO\xccIf\x8f\xcdJV\xe19\x18\x1d\x9d\x91\x88\ 167 | \x8eLOD\x87A\x06q\xff\xa0?\xb8\x8f\xaa\x83\xf8\ 168 | g\xe8\xaf\x96\xd0\xef\x83S\xe3\x91\x96%dY]\x92\ 169 | b[|\xc96}\xf2\xae\x9fSE]\x00v\x01\xbe\ 170 | 6\x1e\xeb)\xd1O0\x80g[#\xe3\x05\xfb\x06\x1f\ 171 | \xe5E\xc9\xfb\xb6\xf6\x94\x1b\xc9d\x0f\xb0\x0c,\xa3\xc4\ 172 | \x9aL/3 w\x0ar& \x87?\x1ds\xb7\x99\ 173 | \x89\xf1\xa3\x90n\xad\x8b\x8e\xcdMb\xa4~&\xcf\xcb\ 174 | \x9bX\xf6\xcf-HU\x1e~\xde\xb1_\xe2\xef\x0e\x96\ 175 | \x90\x87g(\xfc.\xbe\xf8gA>\xa7j\xe4O\xf3\ 176 | ~\x8d\xccj\xe4\xb6\x8c,\xd7\x05\x16_'\xd8\x0fg\ 177 | \xe6\xa5*!W\x1f\xf6TK\xfd\x8ckN\x0f\xe4(\ 178 | _M\x0b\x96{\xbb9\xd0X\x1e\xbe\xc7\x1cM\xbd<\ 179 | {\x13a-\x1f\xf6V$a\xbe\x82y\x14\xdb\xf9_\ 180 | Y\x98\x9a0\x801\xf1\xfc\ 190 | \x848\xe1\xd6I#\x15-\x1b9\xc1Z\xc1\x0f\x94X\ 191 | 3\xae.\xc1\x89\x82z\x932\xd9?m=\x5c\xe8y\ 192 | Q\xber\xa8\x91\x039\xbc/_L?[}\x16\x8f\ 193 | \xc1\x17\xb0\xf9\x09_H\x1f\x88\xbe\x10\xc4\x18O\xccN\ 194 | \xe2\xcf\xcdO\x83\xf8\xa5\xf2\xe6K\x10?\xbc\xb44\x83\ 195 | \x0b\xee\xd6\xaa\x10\xcb\x12\xe4\x11\xa5H,\xd3\x95\x05\xd4\ 196 | \xb9\xbc\xed\xee\xd0\x80\x85\xdav\xd7\x96g\xf1\x10w~\ 197 | \x19\xf7\xdb\x81\x0d\x8a}S\x22\xfb\x86D1\xfe(\xe8\ 198 | \x82K\x8b\x8b\xe3\x87\x92\x8f\x95\xe7&\xf6\x89\xd3\x87t\ 199 | /\x94\xc9(\x88\x0b\x8c\xa3\x0c;\x87\x10\xea\xdb\xfe\xd4\ 200 | \xafu\x13\xc5\x89\xf9\xc9\x86]7\xa7 Gu}y\ 201 | \x96\xf2R~&\xafY\xc3\xc2\xcc\xe0/.\xceP\xc2\ 202 | \xfa\x1c\xd6[\xca\x9b\xe2\xbe\x03\x95v-[\xb3n\xa6\ 203 | \x86\xb5;x?\xc4\xec\x0f=\x8d\x7fK?\xf6\x09\xb5\ 204 | \x14\x9f\x09\xd6\x05\xc7\xb1\x1e\xb8\xb24\x8b\xaf\xcb\xeb\x89\ 205 | P7rl@\xaf\x22,\xf8\xa0\x03\xe2\xa4\x16r=\ 206 | \x80:\xd7_\x0el\xe3\xa5\xb8\xb08\xdd\x80\xf3\xf6\xb2\ 207 | \xd5\x17\xf3\xd3\xb9\xe3\xb3\x12\xf9C\xd3\x13\xb4\xeb\xd2\x9a\ 208 | x\xb36\xce.\xce!`SB\xfcY\x9b\xab\x02\xf1\ 209 | \xa7O'\xc7k\xd6\xb3\xe3\xd5u(\x9e^\xaf\x09\xcf\ 210 | \x0b\xdbi\xdc\xf5\x15Yu6\xbe\x0cu'\xa3\xfb\xb6\ 211 | \x97c\x19{D\x89\xf5\xea\x0c\x09`\x93\xbc\xee\xe1h\ 212 | \xcb\x9e\x98\x9b\xc4I}\xaf\xca\x93\xfd\xf3\x0b\xd2X\x8d\ 213 | |Wi\xde\xde?%\x1e\xcd\x8f\x1a\x8e\x86\xf6\xee\x87\ 214 | \xb6\x8c\x8b\x91|L\xeb\x22\xac\xbf\xef\x994\x06\xed\xc8\ 215 | \x8bA\x9b2#\xd0\xf4\x90\x01(\xd9\xa7+\x1a7\xac\ 216 | 7\xda\x90\x18\x84\xb6\x8d\x1b\x85vM\x18\x8d\xaf%\xee\ 217 | \xe9\xfab\xfd\xa1\xfa\xd8\xccD\xf0\x09\xb8\xbaj\x0b\xc0\ 218 | \xb9I\xad\x1a;\x83\x0dp\x81\x12k\x90\x18\x0a\xdac\ 219 | \xff\xe4\xbfec\x86\xd2\x06l\xf3\xab/\xe5\xa7\xb3U\ 220 | \x95{\x90\xa9\xd5\xf1\xa1h\xf8\xd0\x004\xe2\x9d\x1d(\ 221 | \xfe\xd4m\x94\xe1\xef[\xab\xf2\x03}8\x80\xf9\xe9\xc4\ 222 | X\xf4AV$Z\x9f\x10\x84f\x85\xf9\xa04\xbfn\ 223 | (\xa2G[4\xa0\xb5\x17\xea\xe0\xe1\x8a\x9a\xba\xd8\xa3\ 224 | F\xf66\xc8\xd1\xda\x12\xd9X\x98!K3\x13da\ 225 | j\x82,1\xad\xcdM\x91\x9d\x95\x05ri`\x8d\xdc\ 226 | \x1dlQ\x0b7G\xd4\xc5\xab!\xf2m\xdb\x14\x7fF\ 227 | ;\x94\x82\xf5\xc4\xd4\xe0\xfehe\xec0\xf4vz8\ 228 | \xda2v$\xda\x07zB\x9b\xf3#\xbd\xfcV\x13\xe3\ 229 | \xd5\xa7\xe7\xa5\x96\x5c/\x90z\x5cV\x89\xef\x8f\x8d\xa4\ 230 | \x8d\x8ddJ,sQR\x0b\xbd\x06\x90\xcb3\xdd\x13\ 231 | \xcf\xfdW\x85\xbcM\xe9\xef\x91.\xc2\xd9t\xc7f$\ 232 | qU\x91\xb9w2\xa2\xd0\x08\xbfA(p\xd9\xab(\ 233 | \xf3\x87G(\xebwV\xa0_b\x0e\xda\x9e7\xbaF\ 234 | \xc7\xe9\xf6\xbcQhm|\xa00w\x07wm\x8d:\ 235 | z\xba!W[kA\x9e-\xb0\x5c7th\x80\xda\ 236 | y\xba\xa2A\x1d\xbdQ\xcc\xc0\xce('\xb0\x0f\x9a\x19\ 237 | =\x08\xadL\x09Bo\xe4F\xa0\x0f'\x8dB[\xa6\ 238 | \x8eF\xdb\xa7\x8fA[\xa7\xc5\xa2\x8f&\xc7\xa0\xf7\xc6\ 239 | G\xa3\x0d\x19\xa1hi\xc2p4e\xc4@\x941\xac\ 240 | \x17\x1a\xd9\xbf#\xfe\x8c\xe6\xa8\x83\x97\x1b\xf2t\xb6C\ 241 | \x0d,\xcd\x91\xa9\xb1\x11j`a\x8e\xb0=\x87\xba5\ 242 | m\x8c\xc2\xbb\xb7Ac\xfd{c\xdd0\x1c}\x9c\x13\ 243 | -\xe8\x22\xe9\xe5\xf8\xb9)\xe8\x7f\xec\x13(\xcf/J\ 244 | \xe7\xeaZN\x11\xac\x95\xf7h\xee\x0e6\xc0\x09\xa9\x05\ 245 | _\x03X\xeb\xdb\x87}\x13\xc6\x90kh^Y\x92\xc1\ 246 | \x95\xc8M-\x97\x9b\xc7\xc6\xa0\xf8\xc1\xbeh\xc8\xe4\x05\ 247 | (\xed\xcb\xbf\x8a\xe5^\xcb1'n\xa2\xec\xe1\x83\xaa\ 248 | mL\x82\xae\x01\xdb|\xf1\xc8!hT\xef\x0e\xa8\x9d\ 249 | \xbb\x0b\xb2\xc7s5\xcc\xe1-\x1a9!\xff.-P\ 250 | nP\x1fA\xb6A\x9eO.\xc9@WV\x8fE\xb7\ 251 | \xd6\x8fGw6L@\xb7\x81\xf8\xdf\xb7\xaaH\xf8\x1b\ 252 | \xe1o7\x88?_[3\x0e\x9d[\x9e\x85\x0e\xccK\ 253 | F\x9b\xb0\xaeX\x10;\x14\xa5c\x1d1\xb8Ss\xd4\ 254 | \xda\xdd\x19\xd9Z\x99#[\xac\x1f\x9a8\xd9\xa1\xa1\x1d\ 255 | \xbc\xd18\xac\x13^M\x0e\x11|\x8e:i#L\x85\ 256 | <\xe3$\x1erP\xc4}\x11\xd2\x8f\xd3\xcapn\x94\ 257 | \x1f\xe4\x06\xc1~bW\x89e\x1f\xd0\x06\xf3\xdb)\xa1\ 258 | \xfd\xf8\xaa\xd4`\xafmB\xdeXE\xe3a\xd7\x84X\ 259 | \x94\x1b0\x18\xf9%\xe5\xa2\xa4+\xffCY\x7f\xb0e\ 260 | d_\xcbA\xb1ih\xc7\xf8\xd8\x17\x96\xf9\x19\xa1\x03\ 261 | \x05\xfb\xdd\x01\xdb\xec`\x9f\xf7j\xe9\x89r\x83\xfb\x0a\ 262 | s\xf8\x89\xc5\xe9\xe8\xc6\xba\xb4W;\xb4.=D\x90\xaf\x92\xf3\xb1\xa1\xf2\xb6\ 272 | F/\xdcX;\x0e\xed\x9b\x9b\x88\xe6\x8c\x1a\x8c\xfa\xb6\ 273 | \xf1\x12\xec\x15oW\x074!\xa0\xaf\x10\xab\x90Z\xae\ 274 | \xabD\xac\x03.\xe6\xa7\x1b\xf6\x9a\xb5\x86\xc7\xe6&\xf0\ 275 | \xe6\xa6& \xff\xfeR\x0b?%\xda\xffGF\xf6i\ 276 | O\x1b\xb2\xfd\x7fz~\xaa\xaa\xf43\x07?v\xd9\xe8\ 277 | `4tx\x08\x8a\xfc\xf8\x00\xca\xfa\x8d\xa9P\xee\x8b\ 278 | \x89u\x84\xdf\xc8$\xb4\xab\x0a\xe3|+\x9e\xefG`\ 279 | \xb9\x079\xe9\xd4\xb4\xa1\xe0\x87\x9f_\x91-\xd9\xdc^\ 280 | \x9d\xfa\x00\xf4\xd6\xe1\x05)(+\xa07rj`\x85\ 281 | Z7rF\xaf$\x06\xd7\x95u\x06!&ptf\ 282 | \x22\x7f\xb3\x0e\xd4\x9a\xdc6i\xa4v\xfe\xef&\xb5\xf0\ 283 | S\xe2\xda\xdf\xfc\xe6\x0d\x1d\xd8k\x06\xbc\xbe\x0a\xfbc\ 284 | \xb5\xeb\xf50\x07\xbf\x96\x12\x81B\x06\x0dE\xc1k\xdf\ 285 | C\x99?\x15V^\xeeK0f\xff\x0541\xa8r\ 286 | 6\xc0{\x19#P3\x17\x07\xd4\xcc\xcd\x01\xadO\x0f\ 287 | \x15\xeci\xa9\xe5\xb6\xbaySc\x17\x80\xdf\x12\xd8\xbd\ 288 | \xb5\x10+\x80\x98F]\x89\x0d@\xfd\x81\x9bu\xa0\x06\ 289 | \xc9\xbch\x83\xf2\xff\x01]\x8c\x8dd\x8a72Bi\ 290 | \xa9\xef\x8d>B\xce\x1e\xf8y\x1f\xe5\x8cT\xc7\x0c\xf2\ 291 | E\xfe\xb3\x97\xa3\xf4o\xee?\x97\xdc\x17\x13\xdb\x0b\x83\ 292 | \xa2`]\xae|\x9f\xf7\xd3I\xb1\xa8UC'\xd4\xbb\ 293 | \x95\xa70\xdfK-\xa7\xb5\xa1\x07\xc0&\x00[\x00\xe2\ 294 | \x98o\xa4\x84J.\xdb\x15\xce\xffS\x13\xd4\xb0\x97\xe8\ 295 | \x96\x81\xef\x1f\x12\xe2\xff\xde\x8d!\xfe\x7f\x5cj\xa1/\ 296 | \x01X\x03\xfc\xb4gsw\xdaPm\x80\xb3\xf9i\xea\ 297 | \x9c\xa0!*\xbf\xcc\xc9(\xe5\xd6O/&\xf7%8\ 298 | r\xe7I45th\xb9\xe3kR`?dom\ 299 | !\xcc\x8b/\xe3\xbc\xafS\x07\xac\xc3\xaf\x1b\xc6\xa3 \ 300 | l\x07\xf4i\xe1a\xa8k\x86\xe2Z &\xec\xe1\xaa\ 301 | \x0bk\x81\x9b\xc6F(\x0cl\xfd_\x8b\xb62\x99\xec\ 302 | \xfe\xccH\x9f\x22C\x8a\xa1\x5cY\x96\x89\x16b\x1f\x7f\ 303 | \xc8\xe8d!w\xa72\xb1\xbd\xaa\x91A\x83\xc3c\xf0\ 304 | \x1c\xaf\xdb\x06\x00\xdb\xb7G3wa\x9d\xbd\xae\xfb\xf9\ 305 | \xcfc\x07\xec\x9d\x9b(\xack\xbc\x93\x1e.\xb5\xac\xeb\ 306 | \x94{\xa83$\xac\xff\x19\xf8\xbc\xaf\x19\xcb|\x8b\x86\ 307 | \x8e0\xf7\x9f\xa7\xc4\xb3\xab\x0d\x0d\x19\x96f&\x8a\xb7\ 308 | \xb2\xc2\xe4R\xeb\x80\x1b\x05\xd9hCZ\x04\x1a\x1e\x16\ 309 | \x85F\xee8^\x03r\xff\x94\xd1\xdb\x8e\xa2\x19\xe1\xfe\ 310 | :\xc7\xda\xee\x89\xb1BN\xde\xf2\xa4\x80\x1a\x9771\ 311 | \x0e\xf7t\xcdN\x1f\xe1=\xb75\xef\xaf\xf1>\xe1\xef\ 312 | \x82\x1c\x86\xd9a>R\xcb|\xb1\xdc\x1f\x99\x91\xa8<\ 313 | =/E\x055\x85\xea\xca\x9a\x1f\xe4\xffG\xf4n\x0b\ 314 | {\x81\xa1V`G\xa9\x05]\x0fL0Wa\x9fO\ 315 | \xf1Nv\xb8$:\x00\xeaZ~\x98\x17\x83\xc2\x02\x02\ 316 | Q\xf8\x1b[P\xd6/\x8a\x1a\x93\xfb\xa7q\x00\x05\x1a\ 317 | \x1c\x12\x85\xf6N\x8e+3\xe6v\x8c\x8f\x11\xe6\xbf7\ 318 | s#\xaaE\x96nkl\x88\xcb\xabr\xd1\xb1Ei\ 319 | h\xcb\xb4X\xf4z\xce\x08a-aj\xa4\x0fJ\xf3\ 320 | \xef\x81\xc6\xf8vA\xd1\xd8\xde\x08\xed\xd5\x16\x05\xf7h\ 321 | \x8dB0\xc3{\xb7\x13l\x10hK\x1e\xd2\x1dM\x08\ 322 | \x1b\x80f\x8f\x1a\x8cV\xa7\x06\xa3\xb7\xc6F\xa2m\xd3\ 323 | \xc7\xa0#\x0bS\xd1\xc5\x82\x1c\xc1G\xb9\xad\xcd+z\ 324 | \xc1\xb5\xc8\xcf^\x99\x88\xba\xb7pG\xe3\x87\xf7\x91L\ 325 | \xe6a\x9e?6+Iuv~\xaa\xea\xca\x92\x0c\x15\ 326 | \xec\x09\x96z~\xaa\x0a\xef\xac\xcaQf\x0e\xed\xf1\x04\ 327 | \xcb\x16\xd4\x03\x89\x91X\xc6+\x02\xd8%\x05v\x96\xe6\ 328 | \xf2\x95\x09\xc3\x8bn\xaf\xac\x9dx*\xc8\xfd\xbe\x99\x89\ 329 | (v\xf8P\x14\xb8x=\xca\xf8\xfe\xbf\x9a\x97\xfb\x12\ 330 | \x8c\xfch?\x9a\x131\xac\xcc\xf8\x83\xfd6\xce\x0d\xac\ 331 | \xd0\xfa\x8c\x90\xe7\x9a\xcb/\xaf\xcaA;g\xc6\xa1\x15\ 332 | \xd8~H\x1f\xd6\x13\xf9wi\x89\xda\xb8\xbb g[\ 333 | k\xd4\xc0\xd2\x02YYX g'G\xd4\xaae\x0b\ 334 | \xd4\xa7wo\x148l\x18\x8a\x8e\x8aB\x09c\xc6\xa0\ 335 | \x8c\xd4\x14\x94\x9d\x91\x8e\xb2\xd2\xd3QZJ2\x8a\x8b\ 336 | \x8dE#\xa3\xa3QHP \x1a8`\x00\xea\xd6\xa5\ 337 | 3\xf2j\xd2\x049\xda\xdb#+\xfcY\xf0y\x8e\xb8\ 338 | \xafM\x5c\xec\x85Xe\x18\xd6\x19y!\xfd\xd0\xca\xe4\ 339 | \xb4cF\x1c\xbaP\x90]\xac\x87\xaar-\xb0\xe6\ 340 | 1\xabf\xe7\xff\x92{:\x84\x9a\x81PK\xf5\xdc\xc2\ 341 | 4\x1e\xea.__\x91\xa5\xae+\xf3|\x99q\xbd2\ 342 | [\x19?\xb0\xd3\x13\x19E\xc1\xde\xbfL\xa9\x85\xbb\x92\ 343 | 0\xc5\x9cdfb\xfc_\xa6\x7f\x8f\x22\xf0[j\xfa\ 344 | >\x9dZ\x90\x8a|\x07\x0eF\xa9\x9f\xff^\xabr_\ 345 | \xcc_i44(\x02\xed+e\x03@n\x11\xc4\xfe\ 346 | \xa7F\x0c,WF\xc0.\xbf\xbev\x1c:8?Y\ 347 | \xc8\xf3\x8d\xf7\xeb\x8a\xbaz7\x12l\x87\x06\xd6V\xc8\ 348 | \xd3\xc3\x03\x0d\x1d2\x18egf\xa0\xf5\xeb\xd6\xa2\xfd\ 349 | {\xf7\xa2\xbbwn\xa3\x7f\xfe\xfe\x1b\xc9\xe5r\xc4\xb2\ 350 | ,R*\x95H\xadV\x0bDz\xa8mW\xa9T\x88\ 351 | \xe7y\xc4\xd04\x92\x17\x15\xe1\xcf\xf9\x0b}\xf5\xc5\xe7\ 352 | \xe8\xc4\xb1c\xe8\x83\xf77\xa1\x05\xf3\xe7\xa1\xc4\xf8x\ 353 | \xe4\x83\xf5\x84\xa7\xbb;\xb2\xb5\xb1A6\x16\xe6\xa8U\ 354 | cgamoj\x84\x0fz7/\x0a\x9d^\x9aQ\ 355 | \xdc\x7f]\xd7u\x18\xdb\x14\xb0\x0e\x08y\xc25$\xf3\ 356 | B\xddp\xa8\xbdx1?]ymi&\xcc\xefB\ 357 | \x1d\xf5\xba4\xc7\xeb\xe2\xf9\xc5\xe9\xcc\xa0\xf6\xcd\xb46\ 358 | \x7f\xac\xc42]U@^\xc00\xfc\xbf/\xe1\xac\x83\ 359 | \x1dSb\xe8\x9a\xae\xfd\xb5$.\x04Em>(\x8d\ 360 | \xfcc\x8exo7Z\x10\x1dPf\xac\xfawh\x8e\ 361 | \x02\xba\xb5Bw^\x99\xf0\xcc\xfc\x0e9\xfc\xbbf\xc5\ 362 | \xa3\xb9\xd8\x0e\x07\x99\x82y\xd7\x1a\xcbX\xa3\x86n(\ 363 | (0\x00-\xc42x`\xdf>\xf4\xfdw\xdf\x0a2\ 364 | \xaa\xc2\xf2-\xc8q-\x01\xf4\x04\xe8\x14\xf8\xee_~\ 365 | \xfa\x09\x9d:q\x02m\xdc\xb0\x1e\xa5c\xbb\xa2{\xd7\ 366 | .\xc8\xc1^\xdc/\x04\xfb\x90F\x0d\xe8\x84m\x94@\ 367 | A\xdeo\xac\xcd+\x8e-\xcc\x88\xf2\x13\xf6\x0b\xec\xad\ 368 | \xbe\xbc`\xc1\x9e?\x8e\xe7\xf7\x0b\x8b\xd2\x85s\x14n\ 369 | \x16d\xa9o\xd7\x81\xf8]e\x09\xe7\x0do\x1a\x1bQ\ 370 | \xd8\xc4\xd9\x0eb}pV\x90!\xe4\xf9>/\x1aa\ 371 | \xbe\xd1\xc0\xc2\xec\x11\xd41:\x9f\x9f\xc6\xd6\x94\x1e\xb8\ 372 | \xb6<\x0b\xcbM\xc83{\xf5j\xd7\x06\x90#\xff\xe1\ 373 | \xa1\xc2\xbe\xd9\x92c\x16\xf6\xd5\xba\xd9\xdb\x08\xfe\xf5\xbb\ 374 | y\xd1hBh\x7f4\xb0}3\xc1\x86\xb707G\ 375 | m\xdb\xb4A)\xc9I\xe8\xbdw\xdfA_|\xfe\xb9\ 376 | 0'\xabkQ\xce\x9f\x07\xd0\xbf\xff\xfe}\x88._\ 377 | \xba\x88\xd6\xacZ\x85\xa2##\x05_\xc2\xcc\xd4\x04y\ 378 | 7tD1X\x1f\x80\xcf\xe3\xe9l\x8f\x92\x07v\xad\ 379 | \x1e\xb9\x9f\x9e\x00uV\xc5\xfa\xbfu\xd4\x9e/\x8f`\ 380 | \xaf\x5cX\x92\xc1\xc4\x0f\xec\xfc\xc4\xd4\xd8\x08d\xff\x0d\ 381 | J\xcc\xaf\xad\xeb\x80:\xe6>\x98\xa7<\x9cl\x0bg\ 382 | G\xfa\x16Bm\xc3\x9a\xd0\x03\x1f\xe4\xc5\xa0\x80Ek\ 383 | %\xb3\x01\xc2\xde\xdc\x8a\xf2G\x05\x0ac\x16\xd6\xfe>\ 384 | \xc9\x8dF\xb1};!|\xed\xc8\xca\xdc\x0c998\ 385 | \xa0\x9e\xdd\xbb\xa3\x89\xe3\xf3\xd0\x8em\xdb\xd0\x8f\xdf\x7f\ 386 | \x8fX\x861xy\xaf\x08\xd0\x7f\xb0\x13>\xbf{\x17\ 387 | \xbd\xb2~\x1d\x0a\x0d\x0eF.\xce\xce\xc8\xd8\xc8\x08\xe5\ 388 | \x0e\xed\x85v\x8e\x8fy\x9e\x5c`a\xae\x17\xce\x05\x9a\ 389 | \x9f\xaa\xbc\xbe,Ku\xbb\x0e\xed\xd3\xab\x8a\xdc\xdf\x5c\ 390 | \x99\xc3/\x1b3\xf4\x89\x9b\x9d5\xc8\xfd\x1d\xcc@\xca\ 391 | \xb0k\xfd=\x0f\xe0\x1c\x80\x91\x98W\x9b\xb9\xd8\x17\xce\ 392 | \x8d\xf6-\xba\xb0\xb8z\xed\x01\x88\x03&\x05\xfa\xa3\xe4\ 393 | \x1b?H\x22\xff\x90K<\xcc?\x08\xbd\x9d\x16.\xec\ 394 | \x9b\x07\xdf\xb7YS/\xb4|\xe9Rt\xe3\xfa5t\ 395 | \xef\x9f\x7f\x04\xdf\xfbe\x07\xe8\x83\xfb\xf7\xee\xa1w\xdf\ 396 | y\x1b\xf5\xe9\xd5\x0b\xb9\xda\xda\xa0\xe8^\xed\xd1[i\ 397 | a\xba\xf2\x815\xf5\xfa\x9e\x9e\x8btlf\xa2\xfa\xd4\ 398 | <\x88\xd7g\xaan\x14d\xd7\xd9\xf8]Er\x7f{\ 399 | U.\xbf15\xa8\xa8\xad\xbb3\xc4\xf7~\xc3\x9c\x8c\ 400 | i-\xa9\x94\xd6<\xe0\xec\x1f8\xdf\xe4\x9c\xbb\xa3\xed\ 401 | \x93\x09A}\x8a\x8e\xceMd\xaa+^st^\x0a\ 402 | \x1a\x92:N2\x1b p\xfd\x07\xc8\xa1\x81=\x1e\xf7\ 403 | =\xd1'\x1f\x7f\x84\x8a\x0a\x0bk\xd5o74p\x1c\ 404 | \x87\xae]\xb9,\xc4\x0d\x1a\xb9\xba\xa0\xbe-<\xd1\xb2\ 405 | \x91C\xd5\xfb&\xc5\x09\xb2~xF\xa2\x0a\xce$\x83\ 406 | \xb3\xca.,JSA\x0c\xefF\x81\x18\xb3\x7f\xd9\xe6\ 407 | \xfb\x9b\xa2\xdc\xa3\xeb+\xb2\xb8\x82\xf8a\x85\x1d\x9b\xb8\ 408 | \xc19\xa0\x7faYXH\x19N>\x7fm\x01\xec\x81\ 409 | \xe1\x98;\x1dl,\xefG\xf6j[\xb4y|\xb4p\ 410 | \xee\xf7\x8b\xea\x829#\x03Q\xcc\xa7g$\x91\xff\xf4\ 411 | \x1f\x9f\xa0\xa0\xe8\x04\xa4\x90\xcb\xa5\x16=\x83\x02\xd8\x04\ 412 | \xbf\xff\xfa+\xb6\x85\x96\xa0\x96\xcd\xbdQ\xeb\xc6.\xea\ 413 | \xb9\x91\xbe\xea\xf3\xf9i\xea\x9b/\xa1\xac?\xc3\x82\x1c\ 414 | \xf4\xd9\xea\xb1\xaa\x13\xf3\x93\xe9\xc9\xa1\xfd\x9e\xc0\xb9W\ 415 | \xd8\xb8\xff\x16\x8f\xfd\xe9\x98\x0d\xa5\x15C\xc9\x01yC\ 416 | \x90\xd3\xb4\xd2\xdc\xd4\xe4\xdb\x1e\xde\x8d\x9f,\x19=T\ 417 | .\xc4\x0aW?\x9f\x1e\x80\xbc\xdfa!#P\xe6\xcf\ 418 | \xcf\xb7\xb7\xefE\x19\xba\xe1Ct\xf6\xccy\xa9E\xce\ 419 | @\xa1FEE\x85\x82m\xd4\xbbgO\xd4\xcc\xcd\x11\ 420 | M\x0f\x1f\x80\xce,L\x95^N\xab\x91\xda5H\xf0\ 421 | q7\xa6\x05\x17\x0e\xed\xe4]dmn\x0ay<\xb0\ 422 | w\x07\xec\xdf\x06\x92J\x9da\x02l\xa0x\xcccn\ 423 | v6\x0fb\x07t,\xda2q\xa4\x02j7W\xd5\ 424 | &x3;\x1a\x05\xafzK\x1a?\xe0\xc7\xc7(1\ 425 | sB\xbd\xf0\xf5K\x03\xae\xb9\xb2\xf1L\x9aV\xa0\x83\ 426 | \x07\xf6\xa1\xa1\x83\x07\xa1&\xae\x0ehJh\x7ftv\ 427 | Q\xdd\xd4\x03\x10\xc7\xba\xbb*W\x05g\xde\xec\x9f\x19\ 428 | G/\x8f\xf3/\x0a\xec\xd2\xaa\xd0\xa9\x81%\xac\xe1\x7f\ 429 | \x81\xb9\x84\x12\xe79#)\x05\xac\x8e\x00l\x82\x0e\x98\ 430 | \xf3\xcdL\x8c\xeevk\xd6\xe8\xc9\xbch\xbf\xa2S\x0b\ 431 | S*]\xa3\x05b\x81\xb1\xc3\xfdQ\xeag\xbfI\xa2\ 432 | \x03\x82\x0a\xdeD\xd7\xae^\xafai3,\x80\xdc+\ 433 | \xe4\x0c\x92cr,Wi=\xc0\xf3\x1c:y\xfc\x18\ 434 | \x1a2\xc8\x0fy\xb98\xc0\x1ewt\x19r\x8b\x0c@\ 435 | \xae5s\xb90\x9fC\x8d\x1b8\xa7\x16\xce\xb2\xbb\xba\ 436 | <\x93;>/\x89\xde19\x86\xc6\xf3\xbb|bp\ 437 | \xdf'\x01]Z\xc8[6t*\xb443\xf9\x03\x8f\ 438 | \xdd3\x98\xf9\x98=)\xc3\xdc\xafSW\x00\xf1P\xa8\ 439 | u\xf4\xa6\xbd\x95\xc5\xaf\x01][\xca\xdf\xcc\x0a\x13\xe2\ 440 | \x04w*\xc8\xf3:0+\x09\x0d\xc9\x9d&\x8d\xfc\xaf\ 441 | |\x0b}\xf6\xd9\x175,q\x86\x07\x90\xe5\xc2\x22\x06\ 442 | \x15\xcaY\xa4P\xd0H\xc9\xf3\x95\xd6\x03\x1c\xc7\xa2C\ 443 | \x07\xf6c\xbf\xa0\x07j\xef\xe9\x86^K\x0f\x81XY\ 444 | \xcd\xca\xf6J\xf1\x8c\x1d\xb01/`\x9f\xf3\xf0\xec\x84\ 445 | \xa2\x8f\xc7G\x17\xc1y\xdc\x10\xa3[0j\xd0\xe3\x09\ 446 | !}\x0b\xe3}:\x17\x05wk]\xd8\xaf\x8dga\ 447 | [\x0f\x17\x85\x9b\xbdu\x91\xad\xa5\xf9}3c\xa3\x9f\ 448 | \xf1\xd8\xbc\x89\xf91\xe6L\xcc`L\x0fJ\x9c\xc3\x08\ 449 | \xaa\x0f\xb0\x1e\xea\x86\x19kb,\xdb\xd7\xcc\xcd\xe1\xc1\ 450 | \xd8\x80\xde\xf2C\xb3\xcb_;\x98\x98s,LM\ 475 | Ny:\xd9\xfd>\xa8}\xb3'y\x81\xbd\xe5\xbd{\ 476 | \xf4U\xa6\xfd\xdf=\xf5\x0b\xc9\xf6\x1f\x5c\xa5\xde\xe7?\ 477 | i\x01\xfa\xf7\xe1\xbf5,]u\x03\xa0\x03\x8a@\x07\ 478 | `\xd9/\x04\x9f@x\xa5\x05\x9f@]\x85\xf5\x91\x9f\ 479 | \x7f\xfc\x11\xf9\xf9\xf8 \x9f\xb6^\xe8\xcc\xc2\x94*\xcd\ 480 | \xf7\xb0\x8fv\xd7\x94\xd1E\xa3\x07t,t\xb0\xb2(\ 481 | \xc2\xe3\xe3.\xe6D\xcc&\x14\x99\xdb_V\xc0\xbe\x03\ 482 | \x17\xccA\x98s-\xcd\xadv\xf4\xcf\x9b\xcba\x19\xae\ 483 | \xba\x0e\xf8U\x81B\xd6\x7f\x80\xba\x06\xc5\xa0\x1e\x11\x89\ 484 | (z\xcba\xfd5\x85~cPJ\xee\x94:\x9f\xd3\ 485 | _\x9dPiu\x00\xd8\x00\x0aN\xd4\x01\x98\xe0\x13\xf0\ 486 | \x5c\xe5}\x82\xc7\x8f\x1e\xa1\x91Q\x91\xa8Gswt\ 487 | jAr\xb92\x0fv\xdf\xd9\xfcTf]r`\xd1\ 488 | \xb0\xce-\x0a\xed\xac,\xa0f\xee5\xcct\xcd\xb8 \ 489 | \xa8_\x905\xf1h\xbb~\xcc\xf9/\xd9\xaa\xca\xbf\xef\ 490 | \xd8Y\xc8\xb3Q\x0b\xd4\xa6U\x17\xd4\xd2\xbb#\xf2l\ 491 | \xdc\x12\xeb\x83\xf7u\xbe7\xe1\xec\x17\xe8\xf5W\xdf\xaa\ 492 | a\x89\xaa{\x10t\x80\xbc\x84\x0e\x90\xb3\x1a\x9f\x80A\ 493 | t\x15\xe2\x83\x90;\x14?&\x16um\xd6\x08\x9d^\ 494 | \x98\x5c\xbc\xd7\x1f\xe6\xf8+\xcb2\xb8\xfd3\xe2\x14\xcb\ 495 | \xc6\x0c-\x8a\xe8\xd5\xb6\xd0\xc3\xc9\xf6?\x13#\x19\xc4\ 496 | \xf0\xde\xc1\x1c\x86i/\xf1\x18$\x90\x10\x1e\xb6\x1e\x8e\ 497 | ]\xc2\x13~\xc1s\xb7\xaa\xb2\xb2\x1f\x7f\xfa\xae \xfb\ 498 | \x19i\xb9\xe8\xf1\xe3\xc7\xe8\xef\xbf\xfeFC\x07\x07#\ 499 | \xef\xe6\x9dQ\xc6\xff\x1e\x96y\x7f\xe0\xb2\xd7\xd0\xd7_\ 500 | \x7fS\xc3\xd2T7\xf1\x8c\x0e\xc0\xf2\x0fz\xe0\x89\xd6\ 501 | \x16\x10\xe3\x02\xea\xca\xd8\x02\xb4B\x81\xe2\xe3\xe2\xd4-\ 502 | \x1a:)c\xfau\x94\x87\xf4h\xad\xe8\xd5\xd2\xe3I\ 503 | SW\xfb\x87\x16f\xc6\xbf\xc9d\xd4\x15\xfc\xb8_\xc7\ 504 | \x0c\xa5\xc4=\xe8d-\x8e@\x80\xa7\x9bwj\xd8\xfb\ 505 | {\x99\xca\xca\x7f\xf8\x9b\xdb\x84\xf9~\xe7\x8eO\x8b\xc7\ 506 | \xdf\xc2\x05K\x85\xdf\xc5\x9d\xbc\xfd\xcc{a\xdd/$\ 507 | \xbd~\xe6\xfdU\x16BLP\x8c\x03\xa8\x05;\x00\xd6\ 508 | \x08\x15\x9c\xfa\xbf\xc7r\xf5\xa3BZ\x8d\xf5\x80\xb22\ 509 | J@.\x97\xabG\x8d\x1a\xc5\xe1G\xfa\x80\x12\xd7\xe4\ 510 | \x221\xfba6\xa5\xc4=f\xc4\xaf'\xd0\x05\xd3V\ 511 | \xdd}\xcfg\xfc\xf0\x98\xaf\x8c\xfc'h\xe6\xff\xcc\xf4\ 512 | \xb1\xe2\xfc\xff\xf7?%\xe6\xff\x07\xcf\xbc7\xfd\xab\xbf\ 513 | \xd1\x9c9\xf9\xb5!Fu\x1a<\xc7\xa1\xc7X\xfe\x1f\ 514 | >*R\x17\xd1\xbc\xa0\x074\xaf,~e\x18NE\ 515 | c\x05\xa0\xac\xe8s\x14\x0a\x852,,\x0c\xce\xc3\xd9\ 516 | C\x89\xebt\x04\x04\x15\xc2\xcd\xc9}p\xffq\xb3\x95\ 517 | \x19?>\xa9\x94\x0d\xe0\x933C\xf4\xff[vF-\ 518 | \x9au\x10\xfd\xffu\x9b\xca\xbc/\xf2\xc3}\xe8\xd8\x91\ 519 | \xe3\xb5!Bu\x1a0\xbd\xf3\xbc\x92\xc7\xb2\xcea\xd2\ 520 | Z\x1d \xea\x01\x0e~O+X%\xa3R\xab\xf9\x8a\ 521 | >\xab\xa8\xa8H\xe9\xe7\xe7\x07u3>\xa2\xc4\xda\x93\ 522 | \x04\x04\xe5\x01\xe6\x89\xdd\xadZ\xb6\xe5\xc6\xa4\xe5\xa9\x83\ 523 | V\xbc\x81\xd2\xbf\xfe\xa7\xfc3\x02~\xa5\x85\xf8\x7f\xf7\ 524 | \xa0\x18\xd43\x22\x11u\xe8\xeb\x8f\xb2~)zj\xf7\ 525 | \xff\xce\xa0\xe8\xadGPDR\x0ez\xf4\xe8qm\x88\ 526 | \xd0K\x01\xa5J\x0d\xf3='/\xa5\x030U\xf8w\ 527 | \x0a9\xa3d\xb1\x0e`+\xfa\x9c\x07\x0f\x1e\xf0]\xbb\ 528 | v\x05;`9E\xec~\x02\xfd0\xc3\xfc\xd8\xd3\xd3\ 529 | \x93\xfd\xfa\xeb\xafY\xf0\xd3o\xdd\xbc\x8d&L\x9e\x8d\ 530 | \x86M\xcbG\xc9\xd7\xbe+W\x0f\x80\x7f\x0f\xf4\x9b8\ 531 | \x0f\xcf\xf5{\x11\x9c\xff\x13\xb3\xfb\x14\x0aM\xcdC[\ 532 | ?\xd9.\xaci\x13T\x09j\xac\x03h\x90s,\xff\ 533 | l\x09\xf9\x07\x7f@\x05v\x80\x9c\xe1\xf1sRW\x98\ 534 | H\xfd\xd3O?qM\x9a4\x01; \xbb\x9c\xe7\x0f\ 535 | q@\x88\x07\xc2\xde\xb2\xa6\x98\x165?\xe4\x08\x0c\x04\ 536 | \xb0\xefr\x9d\xb3\xb33w\xf7\xee\xdd2s\xca/\xbf\ 537 | \xfc\x8a\x96.Y\x89\x86gOC\xb1\x07.\xa1\xecr\ 538 | \xf4@\xf2\xb5oQ'\x9f \x14\x92>\x11}\xf8\xfe\ 539 | fD+\xe8\x9a\x91\x8e\xfa\x015\xc7\xab`\xfe\x17l\ 540 | \x81\x92:\x00S\x8d\xfd\x01Z\xb4\x03P\x85v\xc0\x8d\ 541 | \x1b7X;;;\xd8c?\xa4\xd4\xb3\x87\x1c\xd1\x14\ 542 | c\x99\xecjC\xfb\x06\x85\x1d<]\x8b\x9a\xb8\xd8\xcb\ 543 | \xcdML`mp\x0e\xa6Cm\x0fF\x82Z\xc7D\ 544 | \x1b\x1b\x1b\xf6\xf4\xe9\xd30I\xeb\x8d/?~\xfc\x04\ 545 | \xbd\xf7\xce\x07hD\xfa\x04\x14\xb1i7\xca\xd2\xd6\x10\ 546 | \xf9\x8d\x15tB\xec\xe1\xcb(8c\x12\x1a\xe2\x17\x88\ 547 | \xae\x5c\xbeV\xad\x82P_\x01\xc7\x12\xb0\xbcJ\x01\xb1\ 548 | ?\xb0\xfd\xcb\xea\x00\xd1\x0e\xc0\xef\xab\xc8\x0ePo\xdb\ 549 | \xb6\x8d611\xf9\x9d\x12\xe7w@w\x13c\xd9\x0d\ 550 | \xff\x8e\xcd\xe9O\xc6G17\x0b\xb2\x94wWe\xab\ 551 | o\xaf\xccV\xed\x9f9\x86\x1d\xd5\xb7\x1dmfb\xf4\ 552 | ?J\xcc\x13#x9\x11\x80\xc7\x84\xe2\xe3\x8f?\x86\ 553 | \x89\xbaR\xc9f\x0c\xc3\xa0\xc3\x07\x8f\xa2\x84\xcc\x09\x08\ 554 | b\x04\xb1\x07.\xa2\x00,\xf7\x90\xdb\xf3\xe4\xc9\x13t\ 555 | \xec\xe8\x094m\xcal\x92\xe7W}P\xd2\xac\x92\x01\ 556 | \xbf\x1fd\xbe\x8c\x0ePpBLP]AL\x10\xd6\ 557 | \x0eg\xcd\x9a\xa5='\xd3\xdf\xd1\xc6\xf2\xfek\xe9\xc1\ 558 | \x8cF\xe6Qi\xc2\xef\xdf\xcf\x1d\xc1\xd8Y[\xdc\xc3\ 559 | \xefo/\xf18%\xa8~4\xc7\xfcc\xc6\x8c\x194\ 560 | \xf6\xf7\xab,\xac \xdf\xb7n\xde\x11l\x82\x92\xb1=\ 561 | \xc8Y\x1b\xe2\x17\x84\x8a\x0a\x8b\x9ec\xa8\x13\xe8\x02\xf8\ 562 | \xf9\x9a5\x01\xa6\x94\xfc\x17\xc7\x03hQ\x07\x94\xbb6\ 563 | \xc8\xb2\xacj\xc8\x90!\xb4\xb1\x91L\xfevV(s\ 564 | G\x8f\xec\x17\xeb\x80\xd5\xd9\xeaY\x11\x03!~\xf8\xb6\ 565 | \xd4\x83\x95\xa0Z\x01\xf1\xbe3x,\xe0\xe9\x9c\xa9\xf6\ 566 | \xa4\x9c\xb9\xb3\x17\xa1\xc3\x87\x8eV\xf7\xc7\xd6g\xa89\ 567 | \xa5\x18\x0b\xc02\xaf\xd4\xa1\x03\x94b~\x80\x92\xae(\ 568 | G\xe8\xe7\x9f\x7f\xe6<\xdc\xdd\xd9WS\x83\xe8\xf2d\ 569 | _\xcb\xa3s\x128\x0b3\x138o\x87\xd4\xeayy\ 570 | 0\xdb\xcd\xcd\x8d\x83\xd8pM\x0c\xd6\xf3\xe7.\xa2I\ 571 | \x13\xa6\xd7\xc4G\xd7g\xa8`\x8e\x87\xb9^\x87\x1f\x80\ 572 | 4\xf6\x01\x0b1CT\x81/\xb7o\xdf>\xba\xb1\x83\ 573 | -{fa\x0a_\x91\xfc_^\x9a\xaetn`\xf5\ 574 | 7\x1e3\x8eR\x0fZ\x82jA'\x99L\xf6x\xeb\ 575 | \xd6\xad\x95\xf6\xf9\xab\x0a\x9a\xa6\x91\xff\xe0`!V@\ 576 | P}\x00?@X\x13Tpli\xf9\xd7\xe8\x00\xd0\ 577 | \x0f\x1c\xf6\xe6\xca\xbd\xf1`#\xa4\xa6\xa6\xd2\xc1\xdd[\ 578 | \xd1\xfa\xfc\x7f-O\xccK\xe4\xad\xccM\x7f\xa0^\xfe\ 579 | \xf37\xea\x03`\x9d\xf7Txx8\xf3<>\x7fU\ 580 | \x90\x9e\x9a\x8b>\xaf\x87u\xfej\x18\xda5A]\xeb\ 581 | \x01B\xae\xb0\x10\x0fd \x16\x80\xca\x8d\x07\xde\xbbw\ 582 | \x8fo\xd6\xd4\x8b}%5\x88\xd1'\xfb\x10\x1fX4\ 583 | r\x10\xf8\xff[\xa5\x1e\xb8\x04\xd5\x82x[[[\xee\ 584 | \xbb\xef\xbe\xab\xf1\x02|\x9b\xde\xfb\x10\xbd\xf5\xc6\xbb5\ 585 | \xfd5\xf5\x0e\x90\xff\xaf\xd0\xf8\x01\xa5r\x03\x9f\x89\x07\ 586 | \xc2^\x01T\x81}\xb7}\xfbv\xba\xa9\xab={y\ 587 | I\xbaR\x97\xfc_Z\x9a\xa6l\xe2,\xe4\x0d\xf4\x95\ 588 | z\xe0\x12\xbc0`\xef\xd7\xb7s\xe7\xce\xad1\xbb\xbf\ 589 | $\xbe\xf8\xe2+l\x03\xe4\xd4\xf4\xd7\xd4K@n\xa0\ 590 | &/\x88\xd7\xe3\x07@\xee0\xcb+U\xe5\xfa\x01<\ 591 | \xcf\xab\x02\x02\x02\x98\xdc\xe1\xbd\xe8\xcfV?\xeb\x07\xdc\ 592 | ]\x9d\xa3\x9e\x12\xda\x0f\xd6\x0b7Q$w\xf8e@\ 593 | ^\xe3\xc6\x8d\xb9\x7f\xff\xfd\xb7\xc2\xbd#\xd5\x01\xb9\x5c\ 594 | \x81\xfc\x87\x84\x08\xf5.\x09\xaa\x1d*\x9a\x13\xfc\x00}\ 595 | 6\x80Z\xb3W\x88\xc5\x8a\xbe\xdc\xe7\x0d9\x9f\x0d\x1d\ 596 | \xed\xd9\xe3s\x13\xb9g\xd7\xffsT\x9d\x9a\xb8A-\ 597 | \xc0\x9eR\x0f\x5c\x82\x17\x86-\xe6\x0f+W\xae,7\ 598 | \xc7\xaf\xba\x11\x1b\x93\x84~\xfa\xe9\x97\xda\xfa\xbaz\x05\ 599 | \xd8#$\xd7\x9d\x1b\xfc\xd4\x0fPp\x0c\xcb)+\xb2\ 600 | \xf7\xd4\xc9\xc9\xc9tl\xff\x0e\xf4\xddgl\x80,U\ 601 | s7G\x90\xff\xd6R\x0f^\x82\x17F\x9a\x8b\x8bK\ 602 | \xad\xcd\xfdZ,\xc9_\x81\x0e\x92z\xbf5\x055]\ 603 | N\x1c@\xa3\x03Xa\x8f\x80\xaa\xfc\xbd\x82\xdf|\xf3\ 604 | \x0d\xeb\xe6\xe4\xc0\x1e\x9d\x9dPl\x03|\x86\xed\x7fX\ 605 | \x1f\xc0cg\x8a\xd4\x83\x97\xe0\x85\x00\xb9>\xb7!\xcf\ 606 | \xaf\xb6\x06\xa6\x16\xbbw\xedEkVo\xa8\xed\xaf\xad\ 607 | 7\xd0\xec\x13\x86\xb5@}q\x00\xc1\x0f\xa09%\xd8\ 608 | }z\xf3\xbc`=011\x91I\x19\xd4\xf5\x19\x1b\ 609 | `\xdf\xf4X\xce\xda\xc2\xecO<~<\xa5\x1e\xc4\x04\ 610 | \xcf\x0d?KKK\xee\xdbo\xbf\xadp\x9fXu\x03\ 611 | b\x80Y\x19\xe3j\xfbk\xeb\x13\xc4\x9c l\xe7\x97\ 612 | c\x03@\xdd\x10\x16\xeb\x8arc\x817n\xdc`\x1a\ 613 | ;\xd9\xb1\x97\x96\xa4\xf1\xb7J\xe4\xff\x8e\x0d\xe8\x056\ 614 | \x00\xac\xff\x91Z\x81u\x13\x1f\x06\x05\x05\xd5\xf8z\xbf\ 615 | .\xc0\xbe\x80\xe0\xc0HR\xf7\xaf\x06\x01r-\x17\xf3\ 616 | \x01\xca\xe4\x05\x97\xd0\x01\x9a\x9c\x00\xb5\xde\x07\xa1T*\ 617 | U}\xfb\xf6eV&\x0c{&\x1f\xe0\xfa\x8aL\xe5\ 618 | \xc06B\xfd\x00\xa8\x15l+\xf5`&\xa8\x12\xe0\x0c\ 619 | \xb6\x7fv\xee\xdc)I\x22\x1e\xcf\xf3h\xd8\xd0P\xc4\ 620 | 0\xb5nz\xd4'\x14\xdb\x00\xfa\xe5\x9fSjl\x80\ 621 | r}\xc0\x8d\x1b72\xbe\xed\x9a2\xe0\xfb\x97\xd4\x01\ 622 | W\x97g(G\xf7\xef\x00\xfb\x81\xa1.\x00\xd4\x11!\ 623 | u\x01\xea\x06\xe2 \xee\xf7\xf8\xf1\xe3Z\x8d\xfbi\x01\ 624 | \xf3~\xe0\xf0\x11\xc2\xbe`\x82\x1a\x83vo\x10\xf8\x00\ 625 | er\x02\x9f\xb1\x01\xd8\xf2\xe3\x00\xdf\x7f\xff=\xdb\xd8\ 626 | \xd9\x81=\x9f\x9f\xc2\x95\xce\x05\x02_`\xfb\xa4\x91l\ 627 | H\x8fV\xb4\x95\xb9PG`=%\xae\x0d\x1aK<\ 628 | \xc6\x09t\x03r6\xf6&%%\xd5\xea\x9a_I\xc0\ 629 | V\xb4\x88\xf0\xd1\xe8\x9f\x7f\xeeI\xf1\xf5\xf5\x06\xf8\xe1\ 630 | r\x9a\xb5@\x9d\xfb\x024\xb5\xc4E\x1b@\xa9\xdf\x06\ 631 | \x80|\xa0^\xbdz1\xebS\x02\xca\xcd\x09>5?\ 632 | \x89\x9b\x12\xd2\x8fn\xe7\xe1\x22751\xfa\x12\x8f\xb3\ 633 | \x95\x94X'\xc4\x8e\x22\xb9B\x86\x82\xc62\x99\xec\xe1\ 634 | \xa1C\x87$\xdd\x843zT\x22\xfa\xfd\xb7?\xa4\xec\ 635 | B}\x80\x9a-'\x1f\xe8\x99\xb5\x80\xf2m\x00\xf5\x82\ 636 | \x05\x0b\xe8\x11=\xdb\x94\xf1\x01J\x12\xe2\x83wD\xaa\ 637 | \xf6L\x1b\xcdN\x0e\xe9\xc7\xf4l\xde\x98\xb643\x81\ 638 | \xb3\xc1\xf7aN\xa2D\xdb\x00\xea\x8b\x11} \x0dR\ 639 | !\xdf\x0f\xdb\xde\x92&\xe0\x8d\x19\x9d\x8c~\xfd\xf57\ 640 | )\xbbP/\x00q@MN\xb0\xde8`\xa1\xa28\ 641 | \x0e\xa0wN\xb8v\xed\x1a\xeb\xe1b\xcf@\xdc\xefV\ 642 | A\xc5\xf5\x01J\xda\x05\xe7\x17\xa5\xf2\xaf\xa7\x073I\ 643 | ~\x9d\x99.^\x0d\x15\xb6\x96\xe6\x7fc\xe1?\x8a\xc7\ 644 | b>%\x9e9\xe4E\x91\xda\xa2\xb5\x01\xd0\xb9\x07`\ 645 | \x8f'\x92\xc8\xf6\xd7B\x98\xff\x7f'\xf3\x7fM\x03\xbb\ 646 | ZJM\xbd`\xbdq@m\x1c\xa0\xbc\xbdApn\ 647 | @\xcb\x96-\x99O&D\xb1\x95\x95}]\xb1\x02\xc8\ 648 | \x1f>\x87\xf5\xc1\xa6\xdc\x11\xcc\xc4\xe0\xbe\xcc\xe0\x0e\xcd\ 649 | \xe8F\x0e\x0d\x1eY\x98\x9a|\x85\xc7\xe6\x0e\xcci\x94\ 650 | X\x8f\xb4!%\xe6\xa8\x10T\x1f\x1a\x19\x82\xed\x0f\x88\ 651 | \x8a\x88E\xff\xfc\xfd\x8f\xd4\xdd\xa8\x0f\x80Z\xa1\xb4\x8e\ 652 | 3\x03t\xd5\x09\xe1\xca9?@\x9d\x99\x99\xc9d\x0e\ 653 | \xed^\xae\x0fP\x15b\xdb@\xc8'\xbcQ\x90\xa9<\ 654 | 43\x8e[\x9f\x1c\xc0\xa4\x0d\xee\xca\xf4m\xe5\xc1\xb8\ 655 | \xdaY\xffkb$\xbb\x85\xc7\xec\x87\x98c)q\xaf\ 656 | \xa1\x13E\xfc\x86\x17A\x5c\xc3\x86\x0d%\x8b\xfb\x17\x0f\ 657 | $<)\x85\x04F\xa2G\xff=\x92\xb2\x1b\xf5\x06\xaa\ 658 | \xca\xf9\x00j\xd0\x11l96\xc0\xfe\xfd\xfb\x99v\x9e\ 659 | \xae\xec\xe7\xabsU\xd5!\xff:m\x84U`#d\ 660 | \xab\xaf-\xcfP\xee\x9b1\x86]\x950\x8cI\xf0\xe9\ 661 | \xc4tm\xdaH\xeedc\xf9\xb7\xb1Lv\x89\x12\xd7\ 662 | \x18b0[R\xc4o\xa8,@o\xeeJHH\x90\ 663 | ,\xee\xaf\x85\xb0\xfe7,\x1c\xce\xa4\x94\xb2\x1b\xf5\x06\ 664 | \x82\x0f \xca\x7f\xb9>\x00&+\xd4\x0d\xd7\xb37\x10\ 665 | \xce\x0drqv\xe6\x22z\xb5\xa1wN\x1a\xc9\x80-\ 666 | _Q\xad\xd0\x17\xa16\x9e\x086\x02\xa6\xea\xe2\xe24\ 667 | ~\xeb\xc4hvv\xc4@&\xa0K\x0b\xa6\x89\xb3\xdd\ 668 | #S\x13\xa3/\xf0\xb8~\x0f3\x91\x12\xf5\x019\xd3\ 669 | L7\x5c\xb0\xed\xff\xf7\x9e={$\xb7\xfd!\xffg\ 670 | \xb8\x7f\x18\xc9\xff\xa9=\xa8\x19\xae\xfc=AZ\x1b\x00\ 671 | t\x04\xafT\xe9[\x0bT\x87\x86\x86B\xdd\x9f\xd3X\ 672 | \xee\xeeto\xd6H\xbed\xf4`\xe6\xc2\xe2TN\xeb\ 673 | \x13\xdc\xaa!]P\x9a\xf0}p6\xc1\xa1Yq\xec\ 674 | \xb2\xd8!Lx\xcf\xd6tS\x17\xfb'\xb8_\xb7q\ 675 | \xffVc\x0e\xa3H>RI\x8cptt\xe4@\x87\ 676 | \xd7\xea\xc8\xd3\x01\xa8\x03\x18\x80\xe5\x9f\xd4\x00\xa8=\xf0\ 677 | J\xc1\x07(7\x17H\x93\x13\xc8\x94\xb7\x16\xf8\xce;\ 678 | \xef\x80\xfc\x1f\xa1\xc4s!\xfd17;b\xbb<\xa0\ 679 | k\x0bzCJ s.?\x95\x13\xe2|\xabk\xce\ 680 | .(i\x1fh\xff\xfd\xb9F\x1f\xec\x99>\x9a\x9d\x11\ 681 | >\x80\xe9\xd3\xd2\x83\xb6\xb54\xff\x95\x12\xcf9\x0d\xc3\ 682 | \xb4\x97P\xf6\x0c\x01\x9b@wW\xe6\xac\xf8\x9a\xc6\x83\ 683 | \xfb\x0f\xd0\x88\xb0Q\xe4,\x90Z\x04\x9c\x03\xa2\xeb\xdc\ 684 | @}k\x81*=k\x81?\xfc\xf0\x03gcc\xf3\ 685 | \x80\x12\xe3\xf3Z\xb8a\xc6a~jke\xf1G\xef\ 686 | \x16\x1e\xf4\xd8\xe1=\x198'\xe4\x02\xb6\xd9\x05\x9f^\ 687 | \xa3\x0fj\xda>\xb8U\x90U\xec3\x9cY\x98\xcc\xad\ 688 | \x183\x94\x19\xd8\xa6\x09cen\xfa#%\xc6\x0d\xba\ 689 | R\xf5/7\x11\xf6g\xfc\xf4\xde{\xefIn\xfb\x03\ 690 | \xbe\xfe\xea\xffPF\xdaX\xa9\xbbQ\xdf\xa0\xaeh?\ 691 | @\xc9| F\xdc\x1b\x5cFAC.`\xff\xfe\xfd\ 692 | a\xdf\xcf(=c\x0d\xe6Y\xc8\xf9\x9b/\xa3\xa8\xe3\ 693 | X\x1f\xfc\xd5\xadY#E\xb2_\x17\x06\xec\x83\xa3s\ 694 | \x12\xd8\x1bx\x9e\x86\xbabwV\xe5\xd4\x8a}\x00\xba\ 695 | \xe0\xe4\xbc$njh?\xda\xdb\xd5\xa1P&\xa3\x8e\ 696 | \xe3\xfe\x05R\xf5'V\xe0kmm\xcd\xd6T]\xff\ 697 | \xaa\xe2\xf8\xb1\x93h\xe1\x82\xa5Rw\xa3\xde\x81\xe3U\ 698 | \xfb\xc0\xf2b\x00H\xb3V\xc0\xea\xa9\x15\xac^\xba\ 699 | t)\xc8\xffG\x95\x18wp\x86,\xf8\xe0\x03(1\ 700 | \xf7o\xbb\x85\xa9\xc97\x9eN\xb6\x8f\x06wh\xc6\x8c\ 701 | \x0f\xec\xc3@^\xd0\xf19\x09\x9cp\xce`\x0d\xfa\x0d\ 702 | \x90\xb3\x04\x9f\x0d\xdf\xf3Jj \xd3\xd9\xab\xa1B&\ 703 | \x93\x9d\xc1}\x1a\xac\xe9\xe7\xcb\x8c\x15\xfd\xfa\xf5ca\ 704 | /g\xad\x0f:\x1dx\xff\xbd\x8f\xd0\xa6w?\x94\xba\ 705 | \x1b\xf5\x0e\xc29\x01 \xdbz\xea\x82<[#\x8cg\ 706 | 9=q@\xa8\x0dhll\xfc3\x1eW\x0d\x9ec\ 707 | ,BN\x0f\xe4\xfb\x05c\xce\xc3\xdcmnj\xf2\xad\ 708 | \xbb\xa3\xed\x7f\x03\xdbx1Y\xfe\xdd\x99u\xc9\x01\xcc\ 709 | \xe1\xd9\xf1\xdc\x8d\x15\xa0\x13\xaa'\xd7\xa04\xb1\xed\xa1\ 710 | \x82s\x0e[6r\x92\xe3>l\xd7\xf4\xe9e\x04\xd8\ 711 | 8w\x97/_.\xf9\xba\x9f\x16\xf3\xe6,B'O\ 712 | \x9e\x91\xba\x1b\xf5\x0e\xb0\xcf\x1f\xf6\xfbWb\x1d\x10\xf6\ 713 | \x05\xe9\x8d\x03\xd24\xadj\xdd\xba5\xc4\x01\xfd\xaai\ 714 | \x8cB\x0d\x91&\x94\x18O\x9c\x81\xb9\xcd\xc4H\xf6\xb5\ 715 | \x87\xa3\xed#\xffN\xde\xcc\xecH\x1ff\xdf\x8cX\x16\ 716 | \xcf\xdd\xaa\xea\xd6\x07`\x0fL\x0b\xebO7\xb04\xff\ 717 | \x0b\x7fo2\xf5\xf2\xd9\x02\xedLMM\xe5\xb7o\xdf\ 718 | 6\x98\xc56\xc8\xfd\xff\x99\xd4\xff\x94\x02j\x86Si\ 719 | \xd7\x01\xca\xf5\x010\xf9\x22Z\xc9\xea\xc9\x07TO\x98\ 720 | 0\x01|\x80u58nA'4\xc5\x8c\xc0\xdc\x80\ 721 | \xf5\xc1\xe7M]\xed\x8b\xa0\xde\xc0\x9b\x99!\xcc\xa5%\ 722 | \xe9|\xe9\xda\xe4\xcfK\x88O\x1e\x9c\x15\xc7vm\xda\ 723 | \x10\xea\x9a\xbeO=\x9f]c\xa8\x18\x8fu5\x8bu\ 724 | \xb6A,\xb6\xc1\xd9_C\x07\x07\x0b9\x00\x04\xb5\x0f\ 725 | \xfeiM\x80\x8ab\x00j\xb1N\xb0J\xa7\xddx\xe6\ 726 | \xcc\x19\x06\xfb\xcfp\xfegm\xe5\xdfA\xcc\xbe\x05%\ 727 | \xd6\x199homqoX\xa7\xe6\xf4\x9a\xa4\xe1\x82\ 728 | .\xa8\x8e\xb8\xc1\x8d\x15\x99\xca\xb8\x81\x1di\x99\x8c\x82\ 729 | \x1cC\x8fZ\xba\xae\x9a\x04\xd82Grrr$\xdf\ 730 | \xef\xa3\xc5\xf7\xdf\xfd\x80\xe2cS\xa5\xeeF\xbd\x05\xcc\ 731 | \xe7\xe5\x9d\x11RJ\x070P\x1bD\xad\xc3\x07(,\ 732 | ,Tzxx\xc0|\xd9C\xa2\xb1\x0d5\xac \x07\ 733 | x\x97\xbd\xb5\xe5\x83\xc8\xdem\xe9O&D2wV\ 734 | \xe6\xbcPn2\xe43\xce\x08\x1f@c{\x03\xea\x17\ 735 | \xd4\xf5\x98\x00\xac\xd1\xde?x\xf0\xa0A\xac\xfb\x01\xb6\ 736 | ~\xb2\x03\xad[\xb3Q\xean\xd4[@\x0c\xa0\xa2\x9a\ 737 | %\xe4_[#T\xa7\x0f\x90\x9c\x9c\x0c1\x80\xf9\ 738 | R\x0frJ\xcc?\xc86\x96\xc9\xaeul\xe2*_\ 739 | \x990\x8c\xbe\xb52K\xe7\xd9e\x95\xf5\x07\xe6F\xf9\ 740 | \xd2F2\x0ar\x09\x9d\xa5\xbe\xb8\x17@\xa4\x93\x93\x13\ 741 | k\x089\x7fZ\xe4d\x8eG7\xae\xdf\x92\xba\x1b\xf5\ 742 | \x19B\x1e\x80\x9cQ\xd2\x95\x90\x7f!\x17\x80\xd5sv\ 743 | 8\xec\x07\xc2c\xec:e85\x80\xc1G\xf0\xc3\xdc\ 744 | \xdf\xc2\xcd\xb1hCJ \x0d{\x14\x9e'\xe7\x08\xec\ 745 | \x80,\xff\x1e\x10\xe3\xd8O\xd5\xdd}\xc8\xef\x04\x07\x07\ 746 | KR\xe3W\x17`\xbf\x0f\x9c\xffM\xd3\x06c\x8e\xd4\ 747 | K\xb0\x5c\xe5\xd6\x00\xb4>\x00\xec\x09\xc2\x7fV&~\ 748 | \xf4\xf0\xe1C\xde\xc5\xc5\x05\xd6\xcfZJ=\xd0K\x01\ 749 | \xfc\xde\x81\xd8\x8f?\xd7\xaf\x95'\xbdwz,[\xd1\ 750 | y\xe6\xbas\x06\xb2T\x83;6\x03\x1fg\xa1\xc4\xd7\ 751 | \xf3<\x80\xfc\xeco_\x7f\xfdu\x83Y\xf7;}\xea\ 752 | ,\x9a6e\xb6\xd4\xdd\xa8\xf7\x80\xf3?5\xb5\xc1+\ 753 | Z\x03\x00\xf9W\x0a{\x82T\xaa2>\x00\xe4\x92G\ 754 | FF\x82\x0d0Q\xea\xc1\xae\x07\xb0\xf6\x9dbaf\ 755 | \xfc\x0b\x9cW\x00y\x87U\xd5\x01P\xab\xc4\xc3\xc9\xb6\ 756 | \x90\x12\xf3\x84\xea\x12zXZZ2\xdf|\xf3\x8dA\ 757 | \xe4\xfc\x01\x16\xcc[\x82\x0e\x1d<*u7\xea=\xb4\ 758 | 1\xc0\xc2r\xce\x06(\xe5\x030\xfa\xea\x02l\xd9\xb2\ 759 | \x05\xe4\xff,\xa5{\xdd\xdcDC\xa9kv4\xc2\xdc\ 760 | \xd2\xd3\xdb]\x01y\xc0U\xdd\xb3\xfcnv\x18cj\ 761 | d\x04\xf5\x89\xec$\xbe\x8e\xaa`v\x97.]X\x8e\ 762 | \xe3\x0c\x22\xe7\x0f\xf6\xfc\xc3\x99\x1f\x0f\x1e<\x94\xba+\ 763 | \xf5\x1ex\xdaV\x0ay@\x0aN\xe7\x19\xa1:(\x9c\ 764 | \x17\x88t\xf8\x00\xf7\xef\xdf\xe7\xed\xec\xec\x9e\xe0\xf1\xe6\ 765 | ]b\xec\xf5\xc6\xfc\x18b\xe8\x9a8\xfaN\xcc4\xcc\ 766 | \xe6\x94t\xba\x00b\x03\xe3\x1b94x\xbceB\x14\ 767 | S\x15\x7f\x00\xd6\x16\xa3\xfa\xb45\x94Xge\x00\xd7\ 768 | zn\xe6\xcc\x99\x06\xb3\xeew\xff\xfe\x03\x14\x1a\x14E\ 769 | \xce\xfc1\x0c@\x1e`e\xea\x81<\xb3'\x10\xfb\x0d\ 770 | :\xd7\x01BBB@6\xc6Q\xa2l\x8f\xf5p\xb4\ 771 | }\x9c?z0}xv<{tN<\x0b\xf9\xbc\ 772 | Q\xbd\xdb\xd2\x9eNv\x8fp\xfb\x1e\xcc6\x12\xca\xc6\ 773 | pk\x0b\xb3?V&\xf8\xd3\x90KX\x99\xd8 \xbc\ 774 | \x07\xce@\xb527\xf9\x03\xff\xbd\x8d\x84}\xaf,<\ 775 | d2\xd9\x93s\xe7\xce\x19L\xa0\xed\xe4\x89\xd3h\xce\ 776 | \xec\x85Rw\x83@\x84\xb6\x1eHec\x80\x1a\x1f@\ 777 | \xf7\x9e\xc0\xf7\xdf\x7f\x1f\xe4\xff$f\x1a\xe4\xd3\x9f\x9c\ 778 | \x97\xc8\x95\x9e_a\x0f\xde\xb5\xe5\x99\xfc\xbch_\x1a\ 779 | \xcb\x1f\xd4\x03\xef)\xa1|t431\xfa\xbf\xfc\x98\ 780 | Ate}\x01\xd0\x15~\xed\x9a\xc2uFH\xd8\xef\ 781 | \xca\x22\xce\x10j|\x97\xc4\x9a\xd5\xaf\xa0\x9d\xdbwK\ 782 | \xdd\x0d\x02\x0d\xf0d^\xd9<\xe0\x92>\x00\xc8\x7f\x99\ 783 | 1\xf5\xd7_\x7fAM\x00\xda\xcd\xce\xe6\xc9\xb19\x09\ 784 | e\xce\x08*-G\xaf\xa5\x05\xc1\x99a\xe0\x17HY\ 785 | \x9f\xa7\xb9\xb9\xa9\xc9\xff6\xa6\x05U\xda\x17(\x88\x1f\ 786 | \x0a\xf2\xff\x81\x84}\xae,\xb6\xc6\xc4\xc4\x18D\xad\x0f\ 787 | -\xd2Ss\xd1W_~-u7\x084\x805\x00\ 788 | M\x0c\xb0R\xf2\x0f\xeb\x00r\x86gt\xe5\x02\xc1\xfa\ 789 | 2\x9c%;!\xa8\x0f]\xd9\xfc\x9a\xb0\x9e\xadam\ 790 | =Ob9\xe9\xe6\xd4\xc0\xea\xde\xe1Y\xf1\x5cE~\ 791 | \x00\xb4\x9f\x98\x97\xc8\x9ab\xbb\x812\xec|\x00\xa8\xbf\ 792 | \xf0\xc7'\x9f|b0\xb6?\xf8\xfc\xc3\x86\x84\x92z\ 793 | \x9f\x06\x04\x90c\x98\xd3+\xa8\x09\xack\x1d@\xa7\x0f\ 794 | \xf0\xc1\x07\x1f0\xdd\xbc\x1b3\x95\xd9\x9f\x07\xb2\xf4Q\ 795 | ^\x04k,\x93\x9d\xa5\xa4\xdfo\x97\xed\xd3\xd6Kq\ 796 | wev\x85y\xc3\x90[\xdc\xc8\xde\xe6_\xca\xb0\xf7\ 797 | \x06\xf8c[\x8c\xfd\xf3\xcf?\x0d&\xe7\xef\xdf\x87\xff\ 798 | \xa2\x90\xa0(\xa9\xbbA\xf0,x\x8d\xff_\xe1>\x80\ 799 | \xd2\xb9@PO\xb8\xf4\x87\xc1:\x80\xb3\x83=\x0b\xf6\ 800 | \x7fe\xe6\xd2\x0b\xf9\xa9\xbc\x83\xb5\x05\xc4\x01\xa4^S\ 801 | 3\xc7z\xe8\xdc[Y\xa1LE\xb1\x00\x88a\xf4m\ 802 | )\xecy\x18(q\x9f\xcb\xc3\xfa\xc1\x83\x07\x1bL\xce\ 803 | \x1f\xe0+\xa1\xdeW\xae\xd4\xdd x\x16*\x90\xe5\xca\ 804 | \xec\x03(\xbd\x0e\xa0R\x97\xad\x0d\xa8\xcd\x05\x9a\x1e\xd6\ 805 | \xbfR>\xc0\xb5\xe5\x99\x9c\xab\xad\xf5}\xca0\xf2\xeb\ 806 | \xc3\x07\xb6\xf5\xa2?\xab\xe0\x5c\x03\xd0\x0f#\xfb\xb5\x87\ 807 | \x18@\x0e\xa6\xb5\xd4\x9d\xd6\x01\xc8w\xfa~\xe3\xc6\x8d\ 808 | \xe5\x9e\xe7^\xdb8r\xf8\x18Z\x92\xbfB\xean\x10\ 809 | <\x0b\xb1\x1e \xcdW\xb8\x0f\xa0\xcc~\x00=\xeb\x00\ 810 | \x9f~\xfa)\xd3\xce\xc3\x99\x85\x9c\xfb\x8a\xe4\xff\xec\xc2\ 811 | d\xce\xd6\xd2\xfc\x17J\xacM)5l\xed,\xcd\x7f\ 812 | \x83\xda\xc5\x15\xf5{\x5c@/\x90\xffw0=\xa5\xee\ 813 | \xb4\x0e\xf4\xb2\xb4\xb4d\xbf\xfb\xee;\x83\xa9\xf5\x01x\ 814 | \xfb\xadM\xe8\x83\xf77K\xdd\x0d\x82R`\xc5Z \ 815 | \x95\x96\x7fA\x07(8F\xa1g\x1d\xe0\xc9\x93'|\ 816 | \xe3F\x0d\xd9]Sb\xd8\xf2|\x00\x88\xffA-N\ 817 | <^?\x96Z`4\x90a\x1f\xe0\xfc\xf6I#\x99\ 818 | \x8a|\x97\xb9Q>\xd0o\xa8\x0f\xd0^\xeaN\xeb\xc0\ 819 | \x8a\xbe}\xfb\x1aL\x9d?-\x16-X\x86\x8e\x1d=\ 820 | )u7\x08J\x01\xea\x81Vq\x0dP\xdc\x13\xac\x10\ 821 | \xea\x83\xeb\xcc\x05\xca\xc8\xc8\xa0S\xfc\xba\xd2w\xca\x91\ 822 | \xa1\x8f\xf2\x22\x19K3\xd3\x9f\xf0xm&\xb5\xc0\x94\ 823 | \xc0\xe6W\xd3\x82\xd9\x8a\xce6^4j\x90\x12\xbf\xf7\ 824 | \x7f\x98\xdd\xa4\xeep)\x98c~\xbdf\xcd\x1a\x83\x89\ 825 | \xfbk16g\x12\xfa\xec\xee\x17Rw\x83\xa0\x14\x94\ 826 | J5\xa3Y\x03(\xf7L\x90rr\x81\xca\xe0\xe2\xc5\ 827 | \x8b\x8c\xbb\xa3-\x0b\xe7\xf7\xe9\x92\x9f\xcf\xd7\xe4\xaa\xfd\ 828 | :\x08{\xea\xa2\xa5\x16\x98Rxcu\xc20EE\ 829 | \xf2\xbfp\xa4\x1f\x87\xdf\x0b{\x01\xbaJ\xdd\xe1R\x18\ 830 | `jj\xca\xfe\xf8\xe3\x8f\x06\xb3\xdfG\x8b\x98\x91\x09\ 831 | \xe8\xb7\xdf~\x97\xba\x1b\x04\xa5\x00k\x80\x90\xd7/\xa7\ 832 | y\x85f-@YQ>\x806\x06\xa0`\x85\xfd\x00\ 833 | e\xecL\xd8o\xd2\xb1cGvcj\x10\xa3O\xfe\ 834 | \x87v\xf2\x06\xf9\x0f\x97Z`Ja\xf3\xeb\x19\xc1L\ 835 | E\xf2?5T8\xfb\xe0\x10ex{\x9e_3\xb4\ 836 | \xb8\xbf\x16\xe1!#\xd1C\xb2\xef\xc7\x10\xa1\x86< \ 837 | \xc8\x05\xd6\x9c\x0d$\xfa\x03\xd8\xc7\x87s\xc04g\x82\ 838 | \x97\xb1\x0d\xb4u\x81\xf4\x9d\x15\x8emPzP\xfbf\ 839 | :\xd7\xd3\xc0/\x803}\xf1x\xddFI\xbf/P\ 840 | \x0b\x133\x13\xa3;\x07f\x8e)7n\x01\xd7\x93\xe0\ 841 | \xd3\x99\xc5\xef_@\x89g\x91\x1b\x0a \x86\xfa\xc7\xa6\ 842 | M\x9b\x0c\xce\xf6\x07\xc0Y\xbf\x85\x85ERw\x83@\ 843 | ?`\xce\xc0\xe6\x80\x9a\xe3\x95j\xa1\xde\x8f\x82U\xc1\ 844 | Z\xbf6>\xa0\xad\x19*\xe8\x03\xad\x0f\xc0\xf1\xba\xcf\ 845 | \x07\x80|`\xc8\x05\x80\xbc:]k\xffW\x96\xa6+\ 846 | 5y4R\xee\x03*\x09\x9fv\x1e.\xf2\xdb\x05\xe5\ 847 | \xe7\x00\xdd]\x95\x83\x06\xb4i\x02\xf3?\x9c-*u\ 848 | \xdeRI\x8cquu\xe5\xa0\x1eK-\x8f\x9bJ\x01\ 849 | \xea\xfd2\xa4\xe6O]\x02\xe8\x03\xac\x0e\x04}\xc0\x08\ 850 | \xfa\x80Q\x0a5C\x8a\xc4x\x01\xbc*\xca9'T\ 851 | \x1d\x1f\x1fOg\x0c\xedN\xeb\xca\xad\x87ytbp\ 852 | \x1f\xb0\x01\xde\x94Zp0l\x8ce\xb2\xcb\x1bR\x02\ 853 | *\xdc\x0b\x84m\x17UCQo5\x91\xba\xd3%\x00\ 854 | {}\xcf\xe6\xe6\xe6\x1a\xcc^\xdf\x92\x80-\x08C\x07\ 855 | \x05!\x965\xa8%I\x82\xaaA\xab\x0f\xb0\xbb\x00\xf6\ 856 | \x81\x1a\xfc\x7f8\x1f\x04\xc6\x9c\xce\xb5\xa6K\x97.1\ 857 | \x8d\x1dm\xd9\xcbx\xae\xd7%K\x97\x16\xa7\xf3\xcd\x5c\ 858 | \x1c\xa0n@\x8c\x84\xb2\x03s\xf8F8;\xbc\x22\xd9\ 859 | \x07\xbb\xe5\xd8\xdc\x04\xd6\xd4\xc8\x08j\x9e\x1bR\xfe\x7f\ 860 | _SSS\xee\xcb/\xbf4H\x01\x13\xe5\x1f\xcf\xff\ 861 | \x8cAv\x8f\xe0\xf9\xa1Bzd\x1f\x00k\xd0\x03\x06\ 862 | \x0c`\x16\x8e\xf4\xd3\x9b\x0f\xb8oz,\xeb\xe9d\xf7\ 863 | \x98\x12\xcf\x06\x94\xe2,\xce\xf1\x9d\x9a\xb8\xc9/-M\ 864 | \xabT]\xb0U\x09\xfe\x86\xb6\xff\x0f\xe2';\x0d\xe5\ 865 | \x5co}\x08\xf0\x0fCEE\xc4\xff\xafo\xd8\xb5k\ 866 | \x17\xdd\xa2\x91#\x0b\xe7j\xe8\x93\xa9S\xf3\x92\xb8\x81\ 867 | m\x9a(\xf0@>\x8c\xc7r\xa7Z\x92\x1b\x98\xf7s\ 868 | \x9a\xb9:\x14A=\xb0\xca\xc8>\xe4\xfe\x07um\x05\ 869 | \xf2\x1fWK}\xac\x0c\xfa\x98\x98\x98\xd0\x97/_6\ 870 | \xe8\xc9uD\xe8(\xa1\xfe\x0fA\xfd\x02\xc30JX\ 871 | \x0b\x5c\x958L\xe7Z`1\x0b\xb2UKc\x87\xd0\ 872 | p\xde\x1f\x1e\xd3\xefRbnMM\xd5\x14\x873=\ 873 | >\x84y\x1f\xdb\xf3\x95\x92\xfd\xdbB\xcc2\x83wj\ 874 | `\x05\xfds\xa9\xa1~U\x15\xe0\xf7\x9f\x8a\x8c\x8c\xa4\ 875 | \x0dy\xee\x07\xa4\xa7\xe6\xa0\xff\xfb\xfa\x1b\xa9\xbbAP\ 876 | \xfbP\x7f\xfc\xf1\xc7L\x1bwg\xf6z96\x80\x18\ 877 | [\xcfV\xc39^\xb3#\x07\xd2\xden\x0eO\xb0=\ 878 | \x00gs\x8f\xa5\xc45\x82\x17=c\x0ct\x09\xd8\x16\ 879 | \xabm\xad\xcc\xff\x1c\x17\xd0\x9b\xd6\x97\x9f\xa4\xd3\xf7/\ 880 | \xc8Fk\x93\x02`\xee\xdf\xf5\x82\xfd\xa8N\xa4\xdb\xda\ 881 | \xda\xf2\xff\xfb\xdf\xff\x0cz\xee\x07\xacX\xb6\x06\xed\xdd\ 882 | s@\xean\x10H\x00\xb0\x01:w\xea\xc4\xc0\xfc^\ 883 | Q\x9d\x1d\x88\xb1A\xad\xcd\x1b\x05\x99\xcaws\xc2\x99\ 884 | \x98\xfe\x1d\x98\xe6X\x17\x98\x9b\x9a@\xccm\x0b\xe6d\ 885 | \xccA\x94Xk\x14\xce\xe8\x04\xb9\x06[^\xa6\xa1\x91\ 886 | \xe6wPW\xa8\x1d\xe6H\xcc5&FF7[\xb8\ 887 | 9>\x19\x17\xd8\x9b\x06\x7f\xa3\xaag\x05\xc2~\xa6\x1e\ 888 | \xde\x8d!g)\xb0\xf6\xc5\x5c'Za\xde[\xbbv\ 889 | \xad\x02\x19`\xcc\xbf4\x8e\x1e9\x8e\xe6\xcf]\x5c[\ 890 | _\xa7\xd6E- ?JK\xa5RYL\x95\x06\x10\ 891 | \xb7*\xf1\xef\x92\xed\xc5\xd4B\xdfw\xd5\xd6\x85\xd6\x15\ 892 | \x1c8p\x80qw\xb2cO/L\xae\xb4\xbd\xad\xf5\ 893 | \xb9\xf1\xab\x12jo\xaeO\x09d\xd2\x87tc\xfa\xb7\ 894 | \xf6d\x9a\xba\xd8?\xb6\xb34\xff\xd9\xd4\xc4\xe8\xb6\xb1\ 895 | LvJ&\xa3\xf6`\xe1\xdf\x8d\xff}\xcc\xd4\xc8\xe8\ 896 | \xb6\xa3\x8d\xe5\x1f\xad\x1b;\xc9\x83\xba\xb6\x84\xb3\xc3\xe9\ 897 | \xddSa?R\x96\xf2y\xcf\x0e\x7f';\x8c\xc1\x9f\ 898 | }\x952\x8c\xb8?\xe4\xf9\x9f\x84\x5c?\x9e\xe7\x0dj\ 899 | \x9f\x8f>\xdc\xbbw\x1f\x05\x07D =nJ\xb1\xdc\ 900 | \x80l\xc15\xb1,\xab\x92\xcb\xe5\xca\xc7\x8f\x1f\xf3\x90\ 901 | K\xf2\xe3\x8f?\xf2_\x7f\xfd5s\xf3\xe6M\xfe\xe2\ 902 | \xc5\x8b\x8a\xa3G\x8fr{\xf7\xeee\xb1m)\x7f\xfd\ 903 | \xf5\xd7y\xd0\x83\xf9\xf9\xf9\xf2Y\xb3fs\xd3\xa6M\ 904 | c\xc7\x8f\x1f/\xcf\xca\xca\x92\xa7\xa4\xa4p\x89\x89\x89\ 905 | \xca\xd1\xa3G\xd3#F\x8c\x90\x07\x05\x05\xc9\xfd\xfd\xfd\ 906 | \xe9A\x83\x06q\xbe\xbe\x83T\x03\x07\x0e\xe4\xfb\xf7\xef\ 907 | \xcfb2}\xfb\xf6\xa5\xfb\xf4\xe9C\xf7\xee\xdd[\x81\ 908 | _\x15\xf0s\xbf~\xfd\xa0\x8d\x85\xf7\xe1\xbfQ\xc1\xdf\ 909 | \x0d\x1d:\x94\xc6\x9f\xa3\x80\xcf\x8b\x89\x89\xa1\x13\x12\x12\ 910 | \x94\xf0=\xf8\xfb\x14\xf0\xbd\xf0\xfd\xb3f\xcd\xe2\xa1?\ 911 | k\xd6\xacQ\xbc\xf6\xdak\xfcG\x1f}$\xc7\xfd\xa5\ 912 | \xa1\xdf\x17.\x5cP\xdc\xb8q\x83\xff\xfa\xab\xaf\x98\x1f\ 913 | ~\xf8\x81\xff\xf3\xcf?\xb9G\x8f\x1e\xf1p\xbdp\xdd\ 914 | \x1a\xfd\xf3R\xe9\x13\xb8\xa0\xb4\xb44zp\x87ft\ 915 | E96\x15\xe9\x03\xc8\x1f\xc6v\x82\xf2\xc2\xe24\xfe\ 916 | \xd0\xac8v\xeb\xc4hfS\xee\x08\xee\xbd\x9cp\xf6\ 917 | \xa3\xbcH\xee\xe0\xcc1\xece8\x0f\x18\xcf\xd9\x9f\xaf\ 918 | \xc9Q?\xcf\xb9?%ycy\xa6\xaa\x9d\x87+\xcc\ 919 | \xfdAR\x0b\xbe\x06\xf3\x5c\x5c\x5c\xb8\xef\xbf\xff\xde\xe0\ 920 | \xf2\xfcK@\x98\x1fa\xde\xc4cZ\x09\xfbB\xc3C\ 921 | G\xa9\x8e\x1c>\xca\x9f?\x7f\x9e\x06\xd9}\xe7\x9dw\ 922 | \xd8e\xcb\x96)&O\x9e\xcc\xa6\xa6\xa62\x10\xc7\xf0\ 923 | \xf3\xf3\xe3\xbat\xe9\xa2h\xd5\xb2%\xd7\xc4\xc3\x83\x81\ 924 | \xbd\xa4\xae\xce\x8e\x5cCgG\xba\xb1\x93-\xeb\xe9b\ 925 | G\xb7\xf6t\xe1:4m\xc8\xf4h\xe5\xa1\x18\xd0\xa1\ 926 | \x19?\xa4k\x0bEX\x9f\xb6\x8a\xe8\x81\x9d\x94\xb1\x83\ 927 | \xbb0i\x01\xbd\xe4cC\xfb1\xe3G\xf4WM\x8a\ 928 | \xf4af\xc5\x0c\x92/\x88\xf7\x97\xe7'\x0eg\x97$\ 929 | \x07\xa8\x96\xa5\x04(W\xa4\x052k2C\x14\x1br\ 930 | \xc2\xe4\xaf\x8c\x0d\x97\xbf:v\x84\xfc5\xcc\xd7\xc7E\ 931 | \xc8_\xcf\x8bT\xbc\x96\x17\xa1\x80\x9f\xe1\xf7\xaf\xe4\x86\ 932 | \xcb\xe1}\xf0\xfe\x02\xfcwKS\x02x\xf8\x9c\xfc\xc4\ 933 | a\xec|\xfc\xb9\xb3b\x07\x17M\x89\xf6\xa1'D\xf4\ 934 | W\x8d\x0d\xeb\xcb\xa6\x07\xf6\x92\x8f\x19\xd4\x95\x1e\xe9\xd3\ 935 | I\x19\xd6\xb7\x9d\x02\xfa7\xb0CSe\xcfV\x9e\x0a\ 936 | \xdco\xba\x0d\xee\x7f\x13W\x07\xe1z\xe0\xba\x5c\x9d\x1c\ 937 | \xb9\xc6\x0d\xddXO\x0fw\xa6e\xcb\x16\x5c\xa7N\x9d\ 938 | h?__.\x22\x22\x82NNNf'M\x9a\xc4\ 939 | ,]\xbaT\xf1\xf6\xdbo3{\xf6\xeca\xcf\x9d;\ 940 | G\x7f\xf6\xd9g\xec\xaf\xbf\xfe\xca\x81~\x04\xfb\x1a\xee\ 941 | s\x09{\xc4 \xf1\xdf\x7f\xff\xf1\xf8\xda\xd8)!\xfd\ 942 | \xe8\xe7\x9d\x87u\xf9\x0b\xb7\x0a\xb2\x9ee5|n\xc9\ 943 | \x98\x84\xe6\x0c@\xf0=\x0c!\xdf\xcf\xcf\xc8\xc8\xa8h\ 944 | \xdb\xb6mR\xe6\xfa\x08c\x0d\xf6y\x14\x15\x15)\x7f\ 945 | \xff\xfdw\xee\xd6\xad[\xec\xa1C\x87\x98w\xdf}\x97\ 946 | \x99?\x7f>\x0d\xba>$$\x84\xee\xd5\xab'\xdd\xdc\ 947 | \xdb\x9b\xc1\xe3\x9bk\xe4\xda\x98\xc7T\xb6twa\xba\ 948 | \xb5p\xa7\x07un\xceF\xf6\xef\xc0\xa6\x0d\xef)\x9f\ 949 | \x145\x80]\x940\x8c\xc62F\xbf31\x9a\xdb:\ 950 | +N\xb1wa\x12\x7f|E\x06s\xaa Kua\ 951 | m.\x7fe\xfd8\xd5\xb5W\xf2\x9476\x8eW\xdd\ 952 | |u\x82\xea\x16\xf0\xb5\xf1j-o\xbc:\x1e\x01\xaf\ 953 | o\xd42\x0f]\x7fE\xe45=\xbc\xba\xa1r\xd4\xf7\ 954 | \xf7\xd74\x9f/|\x97@\xf1\xbb\xb5}\xb9\x89Y\xdc\ 955 | G\xdc_\xe87\xf4\x1f\xae\x03\xae\x07\xae\x0b\xae\x0f\xae\ 956 | s\x1f\xbe\xdem\xb3\xe3\x14\xefN\x8a\xe6\xd6e\x87)\ 957 | \x16%\x0ec&G\xf9\x08\xfa,j@Gnp\xe7\ 958 | \xe6L\xf7\x96\xeet+\x0fg\xd6\xdd\xd5\x1et\x07\xdb\ 959 | \xd8\xcd\x95\xf3n\xd6\x8c\xe9\xd1\xa3\x07\x0d\xe7<\x82\x1e\ 960 | \x9d;w.\x0d\xba\x02lnlg\xb0\xbf\xfd\xf6\x1b\ 961 | \x87\x9f\x13\x0f\xcfKj\x1dq\xe7\xce\x1d\xd6\xcd\xd9\x89\ 962 | \xc3\xf3u\xf9\xeb\x01\x06@\xc8\x07Z2z0\x9c\xfb\ 963 | \xf3\x05e\x181\xff\xc6\x98\xdfa;\x93\xae\x85=>\ 964 | \x82-N\xd3\xb4\xea\xfe\xfd\xfb \xdf\xcc\xf6\xed\xdb\x99\ 965 | \x95+W2\xf8\xfb\x19\xa8\xf5\xda\xb1cG\x98\x9f\x19\ 966 | 7'\x07\xd6\xc3\xd5\x9e\xe9\xe4\xdd\x88\x19\xdc\xb9\x053\ 967 | \xda\xaf331b \xb349\x80yc|\x04\x8b\ 968 | \xc74{xI\x1a{dY\xba\xb2_\xa7\xae\xea\xf3\ 969 | kr5\xb2;A\x94[\x8d\xcc<\x95\xc9q\x22K\ 970 | \xca\xd8\xc6<\xb5\xc8q\xeak\xaf`\xe2\xd7\xab\xf0\xba\ 971 | \x01\xeb\x84\x0dc\x85\xd7\xcb\xeb\xc6\xf2\x97\xd7\xe6\xa8/\ 972 | \xad\xcdE\x97\xd6\xe6(/\xac\xcef.\xac\xcaR\x9d\ 973 | _\x9d\xa5>\xbf*\x0ba\xaa\xce\xad\xccT\x9cY\x9e\ 974 | N\x9f^\x96\xcec\xaaN/KS\x9f\xc1<\xbd4\ 975 | \x0d\xe9\xa3\xd0.\x10\xde\x9f\xce\x9f]\x91N\xc3\xe7\xc0\ 976 | \xe7i>W\x0d\xdf\x03\xdfw\x19\xcb3|?~U\ 977 | _^;\x96\xc7\xd7\xa1\xba\xbaa,\xba\xb6!Ou\ 978 | U\xd3o\xac/Tp-\xd7\xb4\xd4^w\x89k\xbf\ 979 | \x06\xd4\xe8\x95\x1b\xc5:\x04\xee\x17\xd6!X\x7f\x5c\xc5\ 980 | \xba\xe3\xfc\xea\x1c\xfe\xc8\xd24v\xfb\x9c8\xf6\xcd\x09\ 981 | \x91,\xb6k\x98I\x91\x03\x991\xd8\x06\x1a\x8a\xfd\xde\ 982 | \xce\xde\x8d\x19Olg\xc0\xf3i\x84\xed\x8b\x0e\x1d:\ 983 | 0\x01\x01\x01LFF\x06\xb3|\xf9r\x06\xcf!\xa0\ 984 | \x1f\x98{\xf7\xeeq\x0a\x85\xa2\xa4\xcfQ\xa3\xe3\xea\xfd\ 985 | \xf7\xdf\xa7=\x9d\xed\xd8\xd3\xf3\xab\x16\x0b\xa8m\xd9\x87\ 986 | \xb3\x01\xcc\x8c\x8d\xbe\xc72\xd7Zj\xc1\xa7\xc4\xb8\xc3\ 987 | \xde\xae]\xbb\xb2\xd5\x5c\xd3_\x88{a;R\xf9\xed\ 988 | \xb7\xdfr0g@\xfd\x00<\x7f3>>>\x8c\x97\ 989 | W\x13\xc6\xc9\xae\x01\xeb\x89\xe7\x1blo3\xe1\xfd\xda\ 990 | 1\xd8\xb6\xa6\xf1X\xa3\xdf\x9b<\x929\x90\x9f\xc2^\ 991 | X\x9b\xc3\xdd\xd8\x98\x87\xe7\xb6\xf1j\xe0\x8d\x12c\xba\ 992 | \xa4\xfc\xc2X\x9f5&D\x9d\x179L\x8deB}\ 993 | e\xfdX%\x96S5\x96\x1b\xfe\xfc\xca,,\x8fi\ 994 | \xaaSKS\xb9\xe3\xf9\xc9\xaa\xa3\x0b\x13\xd9\xc3\xf3\xe2\ 995 | \xd5\x07\xf1\xd8\xde7s\xb4z\xef\x8c\xd1\xdc\xee\xa9#\ 996 | U\x9fN\x8dV\xef\x9c\x14\xc9\xee\x98\x18\xa1\xc6\xe4\xb7\ 997 | \xe6\x8d\xe0\xb6\xe6\x85\xab\xf1\xabj\xcb\xb80~\xcb\xd8\ 998 | 0\xf5'c\xc3\xd0\x96\xb1\xa1\xf0\xaa\xfa$7T\xbd\ 999 | 97\x14\x01\xe1\xdf\xa5\xa9m\xab\x88\xba\xfe\xb6\xccg\ 1000 | \xe3\xef{\xfa\xfdaj\xe8\x0f\xf4K\xec_8\x0f\xfd\ 1001 | \xdd\x89\xfb\xbdsR\x14+^\xcbH%\xbe6v?\ 1002 | \xbe\xbe\x83s\xc60\x87\xe7\xc6\xab\x8f.Hd\x8f\xe7\ 1003 | '\xa9\xf1}`O/O\xc7\xfa*\x8b\xc7\xfaK\x89\ 1004 | \xf5\x89\x0a\xee\x17\xdc7\xad\xfe\xd3\xea\xc4\xd2\xf7\x1a\xee\ 1005 | \xbf\xf0,\x04\xdd\x9a\xa7\xba\xb0&\x97?\xb88\x85}\ 1006 | \x7f\xea(fEj\x10\x93\x17\xde\x9f\x89\xe8\xdf\x9e\xe9\ 1007 | \xd9\xda\x93i\xe2\xe6\xc0:\xd97`\x9bxz2\x90\ 1008 | \xab\x87\xfd\x0d\x1at<\xf6\xcf\x18XWz\xf4\xe8\x91\ 1009 | \x10\x8c@\xd5\xa8\x17@\xcf@\xaez\x0b7\x07n]\ 1010 | R\xa0\xe2\xe6\xca\xaa\x9f\xc9Y\x93\x84u\xc1\x14\xec\xbf\ 1011 | \x99\x18\xc9\xeeP\x86\xb3\xc7w\xba\x83\x83\x03\xff\xf9\xe7\ 1012 | \x9f\xbf\xd0Z\x1f\xc4\x96\xa0N+\xe4f\xbf\xfa\xea\xab\ 1013 | `\xa73\xbd{\xf7f\xdd\x1b7b\xdc\x1cl\xd9\xf6\ 1014 | \xd8\xaf\x0e\xed\xd3\x8e\x99\x101\x80^\x9f\x1d\xc6\xec\x9c\ 1015 | \x1b\xcf\x9eY\x95\xcd\xc1\x9c\x05\xf3\x0f\x8c+\x1d\xf6\xb4\ 1016 | 8&a\x0e\xc6\xe3\x14\xcb\xb3\xf2\xec\x8a\x0c\xfe\xc4\xe2\ 1017 | \x14\x1e\xcb1\x7fpn\x1c\x1e\xe7\xb1\xcaO\xa7\xc5p\ 1018 | \xdb&F\xf2>\x9d:\xab\xe7D\x0dQm\x1d\x17\xae\ 1019 | \x049\xd9\xac\x91S\xe0\xbb\xe9A\xeau\x09\xc3K\xc9\ 1020 | e\x98@\x90\xab\x97\x8e\x9ak\xd3\xa9kr\x8au\x8c\ 1021 | Z\xd4'\xe1\xcamy#\x94\xdb'F\xaavM\x8e\ 1022 | \xe2?\x9d6\x92\x87\xfbzhN\x9c\x12\xee\xf3I|\ 1023 | \xbf\xcf,\xcf\xe0\xe1\xfe\xc3s\x10l#AW\x08:\ 1024 | B]\xd2_\x81\xe7\x086\xc5\xf5W\xc7+\xcf\xad\xce\ 1025 | \xe6v\xcdK`_\xc9\x0dg&G\xfa`\x1d\xdf\x9e\ 1026 | \xe9\xd8\x0c\x8f\x07G[\xb0\x1b\x98\x9e={\x0aza\ 1027 | \xc3\x86\x0d\x0c\x9c'\xf5\xcf?\xff\xf0/\x1aw\x06\xbf\ 1028 | \xb1o\xdf\xbe\x8c\x8c\xa2\xf8\xb6\xee.\xf2U\x89\xc3\xe8\ 1029 | \xf2r\x04kk\xce\x07\xbf\xa4\xad\xbb3\x9cg\xfe!\ 1030 | e8\xfb{}\xb1\xcf_\xf8\xe1\x87\x1fV\xd5\xe7W\ 1031 | \xcb\xe5r\x1e|\xae7\xdex\x83IJJb\xb0\x0d\ 1032 | \xc8:\xd85`\x9aa\xdd\xeb\x8fm\xc4qa\xfd\x99\ 1033 | \x8dc\xc3\x99\xbd\x8b\x92\xd8\xcb\xeb\xc6\xf1 \xe3`\x8f\ 1034 | _+a\x7f\x0b\xf3\x0c\x96\xff+\xeb\xc6b\xd9\xceR\ 1035 | \xe2yI\x89\xe7(\xfe\xd0\xbc8<\xfeF\xf3x\x1e\ 1036 | \xc3s[\xa4\x12\xcfu\xca\xd2s\xae0\x9eK\x8d\xf9\ 1037 | 7R\x03Q\xff\x0e\x9dP\xacOo\xb4t\xf4P\xb4\ 1038 | \x22\xd6\x1fM\x0c\xf6A!\xbd\xba\xa3\x9em:\xa0\xf1\ 1039 | \xf8\xdf\x92\xcbe]ci\xdd16\x5c\xb5\x05\xdb\x1e\ 1040 | \xf0\x5cvO\x11\xec\x0c\xfe\xd0\xdc8\x1e\x9e\xdb\x19\xec\ 1041 | \xc3`\x9fE\xd4\x11Z_\xa4\x84\xff\x01\xcf\x1f\xc6\xc1\ 1042 | \x95\xf5\xe3xl\xdfq\xaf\x8d\x8b\x10\xe6\x83\x80\x1e\xad\ 1043 | \x99\xe6\x8d\x1dY\x07\xdb\x06L\xdb\xb6m\x991c\xc6\ 1044 | 0Pg\xf6\xe6\xcd\x9b`\x93\xf2U\x1c\x9b\x08\xdb\x9b\ 1045 | \xac\x8b\x8bK\x11\x1e\xdf\x8b0\xf7{\xb9\xd8\x17B\xee\ 1046 | \xcf\x85\xfc4\xfe\xee\xaa\xecj\x8d\xe3\x95G\xa8\xfb\xff\ 1047 | >\x96{\x9f\xb6^\x8c\x91L\x98\xf3C)\xc3\xa9K\ 1048 | \xe0\x86\xf9-\xc4\xd3*\xe1\xf3\x83\xbc+\xaf_\xbf\xce\ 1049 | \x16\x14\x14\xd0\xe0\xeb\xb97n\xccz:\xdb\xb3\x83\xbb\ 1050 | \xb4\xc0\xba} \xb3\x09\xdb\xec'Wd\xf2 \xcf\xda\ 1051 | \xb9\xfc\xa9\x1d9N\x0d2\x0ec\x03\xfb\xbd\xfc\x91\xf9\ 1052 | \x89\xca\xfd\xb3b\xf9\xddS\xa2\xf9m\x13\x22\xb0}\x1d\ 1053 | \xae*i\xf7\xbe\xc8x\xfd0;D\x90\xf9\xf0>=\ 1054 | PX\xef\x1e(uH?\xb4$f(\xfa(\xe7\xc5\ 1055 | >\x97\xb0|\x96\xd4\x11\xf0<\xb7\x8d\x8f\xc0\xb6D4\ 1056 | \xd8g\xdc\xd1\x05\x09<<\xf7\x0b\xab\xb2y\xf05`\ 1057 | <\x94\xf4/n\x08\xe3e\xbc\xeaTA\x16\xff\x01\xf6\ 1058 | %\xa6\x8d\xf4\xa5\xfd\xbb\xb7\xa4\xb1\x0f!\xac\xd3\x0c\x19\ 1059 | 2\x84^\xbat)\xe4\xa230\xbfWB\x1f\xa8w\ 1060 | \xee\xdc\xc9\x98\x9a\x9a\xfe\x88\xc7\xb8;%\xd6\xd3z\xcf\ 1061 | \xc1\xc6\xf2~\xdc\xc0\x8e\xf4\xae\xa91\x95\xaa#\xfc\x5c\ 1062 | 2\xbf:[\x0dk\x84Kb\x07\xd3\x1d<]\x15\xc6\ 1063 | 2\xd95\xfc\xddc0-\xa5\x14\xf6R\x80\xfc\xde\xed\ 1064 | \x9d;w\x06?L\xe7\xbe~\x88\xe7B|n\xf3\xe6\ 1065 | \xcd4\x9c\xf7\xe5\xe9\xe1\xc1z\xe1\xe7\x11\xd6\xb7\x1d\xbd\ 1066 | 8i8\xc4\x94\xd9+\x1b\xc6)\xc1\xd6\xd3\xc6\xd6\x84\ 1067 | g\xba!OuqM\xb6\xf2\xd4\xb24\xe5\x91\xf9\x09\ 1068 | \xfc\xde\xe91J\x98+\xaaS\xc6\x09\xeb\x16K\xeb\x06\ 1069 | \x18\x0f{\xa7\x8f\xe2\x8f\xcc\x8b\xe7O-M\x85x\xaa\ 1070 | \x12\xc6\x0d\x8c\x1f\xadm\x08\xe3\xea\xea+\xe3\x94`'\ 1071 | ,K\x09d\x22\x07t`\x9a5rb\xdc\xdd\x1b\xb3\ 1072 | QQQ\x0c\x9c\x0b\x0a\xf9\x1b\xfa\xf2\xd3\xe1\xf7yy\ 1073 | y\xb0\xbe\x06\xe7\x83k\xf3\xfdA\x17L\xc1\xfe\xf7]\ 1074 | ,\x9b\xf4\xb4\xd0~4\xac\xf3\xc3Z\x5ce\xcf\xea\xd4\ 1075 | E\xc8\x1d\xc0>\x06\xbf\x09\xfb9#\xfb\xb6c\x9c\x1a\ 1076 | X\xfd\x87\xbfg3%\x9e\xe5!\xc5\xde\xc3\x8a\x90d\ 1077 | mm-\xac\xad\x95\xbem\xd8\x07\xe3\xe0\xdeB.\x8b\ 1078 | \x9b\x93=\xdb\xbf}Sf\xd6\xe8A\xf4\x9e\x05\x89,\ 1079 | \xf8}%\xf56\xfc\xfb2\x9e\xd7\xc1'\x07Y\xdf\x83\ 1080 | \xfd\xc6\xad\xe3G\xa8>\x11cUj\xa9\xc7\x1da\x1d\ 1081 | \xa0F/@<\x13\xe2\x0e0\x8e\xce,O\xe7/\xaf\ 1082 | \xcfU\x82M\xa0\x1do\xa2n\x18\xa7>\xb0(\x85\x9d\ 1083 | \x177\x84\xf6\xed\xe8\xcd4t\xb6g\xfc\xfc\xfc\xe8\xb7\ 1084 | \xde~\x9b\x86\xb5\xe2\xd2\xba\xa0\xb0\xb0P\x099\x1fx\ 1085 | \xbc'\x97\x1a\xff\xa0\x0fza\xae\x8158\xc8\x03\x8e\ 1086 | \xc5\xfae\xc5\x98\xa1\xcc\xd6\x09Q\xcc\xf19\x89\xdc\xe5\ 1087 | \xa5\xe9\xdc\x0dl\x8f\xc0\xb9\x5c`+\x00AG\xdc,\ 1088 | \xc8\xe6a/\x01\xe8\x8d73C\x98\xc9!}\x19\xdf\ 1089 | v^\xb4\xbd\xb5\xc5}l\xd8\x1f\xa7\xc4\xf3;\x1a\xd5\ 1090 | \xb2a\ 1126 | \x9d$\x1e\xb7\x07\xe6\x8ca\x85\xbc\xc4Rc\xfb\xf2\xfa\ 1127 | \xb1\xca\x01\x1d\x9a22\x99\x0c\xce\xd7\x8b\x97Z\x10%\ 1128 | \xc2\x06Sc#\xe5\x8e\xb9\xf1\xac\xae\xbdf\xe0K}\ 1129 | \x92K\xd6\xec\x08\xeb0\xb1\x0e8[\x90Qfn\x03\ 1130 | \x1e\xccO\xe1\xac,LA\xfe\x17J-\x88\x12!\xd6\ 1131 | \xbb\xa1#\xa7\xcbF\x02\x1e\xcfOf\x89\xafOX\xa7\ 1132 | \x89\xc7\xef\xe1\x05\x09:\xe77\xd8\xdb\xd8\xd2\xdd\x09\xce\ 1133 | \xd7J\x93Z\x10%B\x8fF\x8e\x0d\x14\x97\x85\xfc\xcb\ 1134 | \xb2\xf7\xe7\xdc\xcaL%\xb1\xfd\x09\xeb4\xf1\xf8\x85}\ 1135 | \xd4zj)\xa8\x9a5t\x80:\x9b>R\x0b\xa2D\ 1136 | 0\x97Q\xd4\xf5\xa5)\x01L\xc9\xf5\xfd\x92\xb1\xbf\x03\ 1137 | \xb3\xc7pD\x07\x10\xd6I\xe6\x0ak\x01:\xfd\x7f\x88\ 1138 | mm\xc8\x09\x83=8\xff\x87\xe5\xc0ZjA\x94\x10\ 1139 | \xfd\xec\xac-\xff\xdd4e\x14\xd6\x01e\xf7wC\x8e\ 1140 | \x15\xec\xe5\xdaBrw\x09\xeb\x12!\xf67;\x96\x17\ 1141 | \xf7%\x97\xadY\x00ub\x9c\xed\xac\xe1,\xa0\xe1R\ 1142 | \x0b\xa0\x01 \xd0\xc6\xd2\xfc\xaf\xf9qCi]\xb1\x00\ 1143 | \xd0\x95gWd\xf2\xbb\xa7\x8eT\x8ay\xbd\x06\xf0|\ 1144 | \x09\x09KQ\x9b'\xbckJ\x94P\x9b@w\xbd\x92\ 1145 | \xf1\xaa\x15iA\x8c\xbd\x8d%\xac\xfbEK-x\x06\ 1146 | \x84vp\x06B\xbfv^\xf4\x96\x99\xb1\xac\xae{'\ 1147 | \xea\x81\x0c~\xcf\xf4\x98\xa7{\xf7\x0c\xe0\xb9\x13\xd6s\ 1148 | j\xf6\x06|:u\x94R\x90{\x1ds\x18\xcc\xf9;\ 1149 | \xe6\xc4\xb3\x83:7\xa75\xb5\xb5\xbbK-p\x06\x08\ 1150 | \xc8aN736\xfa\x0ej\xeb\xbd;y$\x03\xfb\ 1151 | \xadt\xe9\x01\xa8ywlQ\xa2\xb0_\x9f\xe4\x04\x12\ 1152 | \xd6656\xa8\x1a\xf6\x9bA=\x22\xc8O\xd57g\ 1153 | }4-\x86\x09\xe8\xd9\x8a675\xfe\x05\x8f\xef<\ 1154 | \xca\xb0\xf6\xdd\x1b\x22l0\xd3\xa1>Ik\x0f\x17\xc5\ 1155 | \x8cQ~\xf41a\x0f\x90\xee\xfb{\x19\xeb\x82\x93\x8b\ 1156 | S5{\x81\x22\x94O\xeb\xc2H?N\x08_\x12j\ 1157 | \xc6\x14\xec5\xdb7#\x86?\x91\x9f\xc2\xc3\x1ctM\ 1158 | \x97\x8d\xff\xaa\xb8\xf7g\xee\x98!t\xc7\xa6\x0d\x15&\ 1159 | F\xb2\xaf\xf0x\x1e\x87i'\xb1\x5c\xd55@\x1dP\ 1160 | 8\xff\xe8#Ks\x93{}\xdbz\xd1\xb0\xcf\xfa\xf0\ 1161 | \x924!O\xb8t\xedMm\xad\x0f\xc8\xbd\x86\xe7\xb3\ 1162 | \x7f\xd6h\xa1V\x97\x10;$\xfb\x81\x09+\xc9\x125\ 1163 | N\xd5;&D*a\x1c\x9d\xc8O\x12\xea\x88\x95\xde\ 1164 | \xf3[\x5c3\x0e\xf3\xd8\xf2t\x0e\xea\x98\x0f\xec\xd0\x8c\ 1165 | \xb1\xb60}\x80\xc7\xed6\xcc\x00\xea\xc5\xcf\xf3#\x10\ 1166 | \xf7=\xc6bn716\xfa\xab\xbd\x97\x1b\x93\x16\xd0\ 1167 | \x93ywR4snu\x0e/\xd4\xf7\xda(\xd6\xfc\ 1168 | yF\x1f\x08\xf5@r\x95\x10?\x84}\x04\xfb\xf0\xb3\ 1169 | \xdc9)J\x09\xf5\xe2H\xed\x9f\xfa\xcdgj\x00\xe5\ 1170 | \x85\xabvN\x8a\x14l\xc8c\x0b\x93\x84\xf8\x1d\x8c\x1b\ 1171 | X\x83.)\xefBM)\xcd^\x7f\xc8Y\x7f\x7f\xca\ 1172 | (&+\xa8\x8fP\x0f\xde\xdc\xc4\xf8\x1f<>\xf7`\ 1173 | &Q\x86QC\xffe\x05\xd8Q\xfe\x98\xab0\xef\xd8\ 1174 | Z\x99?\xee\xde\xd2\x83\xc9\x0e\xeeC\xbf9!\x929\ 1175 | Y\x90\xc9A\x9c\x15j\xc9\x8b\xcf\xac\xac\xcf\x00{2\ 1176 | \xa1\xc6\x13\xe4f\x80\xff\xb6\x7fV\xacr\xf7T\xa1\xf6\ 1177 | _\xd9\xba`D?\xd4Y\xea\xaa\x01\x081\xa3\xfd\xb3\ 1178 | A\xce\x13\xe1\x5c\x04a\xaf\xdeU\xf1\xbc\x95g\xe6u\ 1179 | \xed\xb8\x81\x1a\xa1\x90\xabw\xaa \x93\x7fgR\x14\x93\ 1180 | \x1b\xda\x8f\x86\xfdj\xf66\x16\xb0\x7f\x17\xce\xcbXO\ 1181 | \x89{Y\x1c%\x94\x89\xfa\x0a\xa8\x1b\x08g\x9c\xc3\xd9\ 1182 | \xa7\x1b1oX\x9a\x99\xfc\x0b\xb5[C\xfa\xb4ef\ 1183 | \x8d\x1e\xcc@\xfc\x05\xea\x06a\x9d\x0du@\x8b\xcf\x9f\ 1184 | \xd0\x15K\xc0\xaf*\xac\xf7\x05\xdd\x00s\x80P\xfbw\ 1185 | n\x1c\xbfwF\x8c\x12\xc6\xcdv\xd0\x0fy\xc2^D\ 1186 | \x889\x96[\xfb\x97\xb0\xe6e[\xb8\xef9\x9a\xf3\x08\ 1187 | \xb0|\xc3\xf3\xd999Z\x09{p\x85\x1a\xc0\x8b\xc4\ 1188 | \x1a\xc0 \xe3\xf0\x5c\xaf\x95\xa8\x01\xfc\x8c\xacksr\ 1189 | \x85s\x8c&\xa8\xa0\x0e\xfc\xe6\x19\xa3\xd99c\x860\ 1190 | \x11\xfd\xda\x0b\xe7\x10Y\x9b\x9b>\xc2\xe3\xeb6\xe6\x1b\ 1191 | \x94h\x8b6\xd3\x8c?\x02\xc3\x01\xd4Iq\xc5\xf4\xc3\ 1192 | \x9c\x86\xb9\x1d\xf3s\xfc\xec\x1e{\xb9:\xd0C\xbb\xb5\ 1193 | \xa0sB\xfa2k\xb3B\x19\xa8\x03\x7faM\x0ew\ 1194 | Ss\xb6V\xc9\xf8\xa2.\xfd \xd6\xfd\xcfSA\xad\ 1195 | \x97Kks\x95\xe7Wf)al\x1d\xcfO\x81\x1a\ 1196 | q\xdc\xc1\xd9cx\xa8Q\x005\xa8\xc1\x96\xc4c\x91\ 1197 | \xdf:.\x5c\xad\xd5\x15\xe5\x9d\xc7!\xb5,I)\xbf\ 1198 | :\xcf\x1c\x81\xda\xea\x98PW\x03\xee\xe3\xce\x89\x91<\ 1199 | \xdcW\xd0\xc3\x07\xf0}\x86\x9a|\xa0\x9b\xa1\xa6+<\ 1200 | \x07\x88\xc5\xc1s\xc1\xf6\xb9\xbat-\xdf\xd2\xcf\x13\x9e\ 1201 | 3\x9e\x11\xcb\xee[\x94\xcc\x9d\x5c\x91\xc9\xc2\xd9tp\ 1243 | F\xe6\x8dW\xc7+A_\xdc\x863._\x9d \xf8\ 1244 | \x9c74g\xf8\x96\x8c3\x17\x9f\xc9[\x09\xdda\x88\ 1245 | \xbc\xaaG\x07j\xe5X\x07\xeb)\xd8\x17\x87\xf3\xbd\x0f\xe0\xfe\xc2\ 1262 | \x9c\xbcuv\x1c\xbd\x09_\xc7k\xe3\x22\x14\x05\xe9A\ 1263 | \xfc\xa2\xc4a\xf2\xa9\xd1>\x5cvH\x1f\xf9\x98A]\ 1264 | \xf0\xf5\xb7Q\xf8v\xf2\xe6\xe0~\xb4\x86\xb3\xbe\x9dm\ 1265 | \x19\xb8O\xb0~\x8e\xe7\xec?\xf0\xfd\xfb\x06\xdf\xc7\xcb\ 1266 | \x98\xfb17a\xae\xc0\x1c\x8f9\x8a\x12\xed\xf4v\x9a\ 1267 | \xe7\x00\xcf\x03\xce\xb5\xa8\x8b5p\x09^N@\xac\x08\ 1268 | b\x0f`K@L\xb2\x05%\xd6{\x05}\x11F\x89\ 1269 | g@L\xa2\xc43\xe1\xd6a\xbe\x87\xb9\x03\xf3\x08\xe6\ 1270 | E\x99\x8c\xba\x0b\xe3\x1f\xcfm?\x82\x0e\xb103\xf9\ 1271 | \xd3\xda\xd2\xec!\xacw:6\xb0z\xdc\xd0\xd1F\xee\ 1272 | \xe1l\xc7\x83\x8f\x82m\x10E\x1bO\x17\xa6\x83\x97\x9b\ 1273 | \xb2S\xb3\x86\x5c\xb7\xe6\xee\x8a\x9e\xad=\xe5}\xda6\ 1274 | \x91\xf7o\xd7\x94\x1e\x88u\xcd\xa0N\xde*\xec\xf7\xaa\ 1275 | \x07u\xc6\xaf]Z\xf0\x98\xdc`\xccA\x22y\xdc&\ 1276 | \xb6\xe3\xf7\xc1\xfb\xfb\xb7\xf3\xa2\xe1\xef{\xb6\xf6\x90\xc3\ 1277 | \xe7uj\xd6\x88\xed\x88?\xbf\x8d\xa7+\xd3\xc2\xddY\ 1278 | \xd1\x14\x7f\xaf\xa7\xb3\x1d\x075\x1c\xa0?\xd0/\x1bK\ 1279 | \xb3\x7f\xa1\x9f\xb8\xbf\x7f\xe0~\xffdd$\xfb\x1f\x5c\ 1280 | \x07\x5c\x0f\xe6QJ<\xfb\x06\xe4\x18\xd6\xcc\xf21'\ 1281 | c\xa6`\x86S\xa2\ 1285 | \x96R\xa2\xcf\xb2\x95\x12u\x0a\xec;\x813\x1f\xbf\xc4\ 1286 | \xfc\x16\xf3g\xcc?0\x7f\xd1\xfc\x0c\xf1\xee\xbb\x9a\xf7\ 1287 | \x1d\xa3\xc4\xfc5X\xebZ\x869\x9d\x12c\xa7P\xab\ 1288 | n\x84\xe6\xfbzk\xbe\xbf\xbd\xa6?\xd0/wM?\ 1289 | \xa1\xbf\x90\xe7n\xa6\xb9\x0e\xb8\x1e\xe2c\x13\x10\x10\x10\ 1290 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1291 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1292 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1293 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1294 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1295 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1296 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1297 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1298 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1299 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1300 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1301 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1302 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\ 1303 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x14\ 1304 | \x03\x11\x10\x10\x10T\x17\x98\x05\xe5\xb7/4/\xff\xcf\ 1305 | \xcbUI?[`\x95\xe5\xab\xa7\xf1\x91F\xa5\xd9\xe9\ 1306 | \xfe\xdeb\x95g\x8c\x1ey\x95\xd3LQ\x0b\xce\x96\xe9\ 1307 | \xa3\xf2Y\xadi\x5c\xa6c\xe5\xab\xd5G\xa5\x9a\x9f\xbd\ 1308 | \x862\xad\xa5\xaeaa\xd9vjA\x89v]z\xbd\ 1309 | D\x0f\xd5\xba\xdaK\xf4@\xa9\xb3\xfd\xe9-`t\xb6\ 1310 | S\x15\xb5\x17\xdfc\x1d\x97\xf7\xcc\x17\xfc\xac\xbb]V\ 1311 | A{\xf1-8\xab\xa7]\xdb\x01=\xcd\xda\x0e\xe8\xe9\ 1312 | ^q\x07\xf45k\xee\x80\xee\xbb\xf7\xb4\x83z?^\ 1313 | \xf3\x08~\xd6\xdfnW\xde\xd5i\xdb\x17\xeao7/\ 1314 | \xbf\xfb\xe2\x18\xa9\xa0]\xf7\xe0\xa9\x5c\xbb\xcc\x00\xda_\ 1315 | \xf4\xfa\xcb\xbb\xbf\xc6\x15<\x1f\xf3\xca<\xbf\x9f\xf5\xb7\ 1316 | {Uf\xfc\xe8\x91>\xc0\x02\xfd\xd2/\xa0\x82\xf1-\ 1317 | +_\xbc*\x94\x1f\xaf\xf2\xd4\x0b\xf5T~\xcb\xffz\ 1318 | \xbdw\xa8X\x7f\xe8\xb9\x03\xbe\xc5\x0a\xaa\xfc\x8f\xd7s\ 1319 | \x85^O\xdbu}\xc1\xd3O\xd7\xf9\x05^%\x9bu\ 1320 | \x5c\xc1\x82g\xda\xcb\xdc\xa2\xd2\xf3K\xe9\x1e\x96\x9e\xe2\ 1321 | J\x7f\x81o\xa9\xf6R\xcfH\x86\xcao\xf7*\xdd^\ 1322 | \xea\x0e\x94\x99aK\xfd}\x99\xe9\xb3T\xff\xcc\x7f.\ 1323 | \xff\xfa\x8c\x17\xfa\x96\xdb.+\xdd\xc3\x85\xa5\xae\xbft\ 1324 | \x0fK7\x97j/+#\xe6Uj/;\xc4\x9fm\ 1325 | /;\x80\xec\xaa\xd4^V\xc4*j\x7f\xf6\xfe\xfc\xfc\ 1326 | \x82\xedg+\xf8\xfe\xb2\xed\xe6\x15\xb4?;\xc0\x17\x96\ 1327 | i\xa7*j\x7f\xa6\x83e\x9b\x9f\x1d\xe2:\xda\x9f\xf9\ 1328 | \x00]\xed%>@\xb7\x0a\xb5\xab\xa0\xfd\xa9\x8c\xebi\ 1329 | /\xbeG\xfa4\xe4\x82\x0a\xda\xed*h\x97\xe9oo\ 1330 | (\xfc\xdfWl\xd7\xa1\xdf\xbcJ~\x81\xae\xf6\x9f\xe1\ 1331 | \xff\xc6z\xdb\xedP\x89\x0e\xe8\xb4o\x85?Z\xa0\xbf\ 1332 | ]\x184\xbe\xfa\xda\xcd\xc5\xab\x12\x1f\xe2\xcf:\xdb\xe1\ 1333 | \x03\xec\xcakg\xb4\x8f@G\xbb\xc6\xb41.\xaf\x1d\ 1334 | \x0fK\xb1\xfd\xac\x9e\xf6\x9f57@G\xbb\xec7\xf4\ 1335 | \xd4\xd7\xd1\xd5\xbep\x81p\x85H\xfc\x1e\x1d\xf0\x15\xc6\ 1336 | \xed\x02\xbd\xed^B\x83\xfev;\xe1\x8b\xcbo\xffY\ 1337 | |\x00\xba\x9a\x85[\xf7\xe8\x05\xdb\x19\xa1\x97\xba\xc5\xa3\ 1338 | \xa2v\xbbJ\xb4+\x85v\xdd\xe2\xe1\xf5\x82\xedO\xbf\ 1339 | _\xb7\xfdQ\x99v\xf1\xfe\xe86\xa0\xcc\x8b\xef\xbf\xee\ 1340 | v\x99\xd0\xbe@\xf7\xf0\x04\x14?\x7f=\xed^\xda\xf1\ 1341 | sVw\xbb\xb1v|\xeai\xd7~Iy\x162\xa5\ 1342 | \xf7\xf1\x8b\xa8\xc8B\xaf\xc8\xc27\xd6\xfbxD\x98\xeb\ 1343 | \xbd\xfd\x22\xec*h\xf7\xd2{\xfbE\xf8\xea\xbf\xbd\x02\ 1344 | \xca\xb9}2\xaa|\x07BvV\xa3\xde\x16\xea\xf9l\ 1345 | F#\xfdz\xbf\xfb\xac\xa8\xfd\xf4\xb5\x0b\x7f\x5c\xce\xed\ 1346 | \xad\xa8\xdd\xb7n\xb4Wt\xfdz\xef\xaf\xa6Y\xef\xf3\ 1347 | \xd1\xb6\xff\xac\xbb\xbd\xd8\xc2\xd13\xbe\x8a\xcd\x07=\x17\ 1348 | \xa0\xed\xbe\x9e\x0e\x940Ot~AI\x03MW\xfb\ 1349 | \x82\x12\xed\xba\xe7\xd7\x12XX\xa6\xfd\x99\xe6\xb2\x22\xe8\ 1350 | \xf5l{\x85\xfe\xc3\xb3o\xd0\x15!,q\x97|u\ 1351 | 4?\xfd\x08\xdd\xd1?\x02\x02\x02\x02\x02\x02\x82\x12\xf8\ 1352 | \x7f>\x97\xed\x93\ 1353 | " 1354 | 1355 | qt_resource_name = b"\ 1356 | \x00\x08\ 1357 | \x08\x01A\xff\ 1358 | \x00m\ 1359 | \x00a\x00i\x00n\x00.\x00i\x00c\x00o\ 1360 | " 1361 | 1362 | qt_resource_struct = b"\ 1363 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ 1364 | \x00\x00\x00\x00\x00\x00\x00\x00\ 1365 | \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ 1366 | \x00\x00\x01\x82\x1b\x16\x16\xe3\ 1367 | " 1368 | 1369 | def qInitResources(): 1370 | QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) 1371 | 1372 | def qCleanupResources(): 1373 | QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) 1374 | 1375 | qInitResources() 1376 | -------------------------------------------------------------------------------- /upx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/upx.exe --------------------------------------------------------------------------------