From d2094f50166171eac5aa27027212feda20870107 Mon Sep 17 00:00:00 2001 From: Harold <8866033@gmail.com> Date: Tue, 28 Apr 2026 12:36:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=B9=E5=B9=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- py/PPnix.py | 3 ++ py/base/local.py | 106 -------------------------------------- py/base/localProxy.py | 6 --- py/base/spider.py | 45 +++++----------- py/libvio.py | 3 ++ py/tests/test_麦田影院.py | 47 +++++++++++++++++ py/youknow.py | 3 ++ py/乌云影视.py | 3 ++ py/乐兔.py | 3 ++ py/二小.py | 3 ++ py/人人电影.py | 3 ++ py/人人视频.py | 3 ++ py/低端影视.py | 3 ++ py/修罗.py | 3 ++ py/凡客TV.py | 3 ++ py/剧圈圈.py | 3 ++ py/四万影视.py | 3 ++ py/在线之家.py | 3 ++ py/如意资源.py | 3 ++ py/布布影视.py | 3 ++ py/木偶.py | 3 ++ py/橘子TV.py | 3 ++ py/欧歌.py | 3 ++ py/滴答影视.py | 3 ++ py/独播库.py | 3 ++ py/玩偶哥哥.py | 3 ++ py/玩偶聚合.py | 3 ++ py/瓜子.py | 3 ++ py/糯米.txt | 10 ++-- py/耐视点播.py | 3 ++ py/腾讯视频.py | 3 ++ py/至臻.py | 3 ++ py/茶杯狐.py | 3 ++ py/蜡笔.py | 3 ++ py/袋鼠影视.py | 3 ++ py/金牌.py | 3 ++ py/闪电.py | 3 ++ py/飞快TV.py | 3 ++ py/魔方APP.py | 3 ++ py/麦田影院.py | 37 +++++++++++-- py/黑猫APP.py | 3 ++ 41 files changed, 202 insertions(+), 154 deletions(-) delete mode 100755 py/base/local.py delete mode 100755 py/base/localProxy.py diff --git a/py/PPnix.py b/py/PPnix.py index 46f4b92..994294a 100644 --- a/py/PPnix.py +++ b/py/PPnix.py @@ -69,6 +69,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes, "filters": self.filters} diff --git a/py/base/local.py b/py/base/local.py deleted file mode 100755 index a839577..0000000 --- a/py/base/local.py +++ /dev/null @@ -1,106 +0,0 @@ -#coding=utf-8 -#!/usr/bin/python -from re import sub -from requests import get -from urllib.parse import unquote -from threading import Thread, Event -from socketserver import ThreadingMixIn -from urllib.parse import urlparse, parse_qs -from importlib.machinery import SourceFileLoader -from http.server import BaseHTTPRequestHandler, HTTPServer - -cache = {} -class ProxyServer(BaseHTTPRequestHandler): - def do_GET(self): - urlParts = urlparse(self.path) - queryQarams = parse_qs(urlParts.query) - do = queryQarams['do'][0] - try: - key = queryQarams['key'][0] - except: - key = '' - try: - value = queryQarams['value'][0] - except: - value = '' - if do == 'set': - cache[key] = value - self.send_response(200) - self.end_headers() - if do == 'get': - self.send_response(200) - self.end_headers() - if key in cache: - self.wfile.write(cache[key].encode()) - elif do == 'delete': - cache.pop(key, None) - self.send_response(200) - self.end_headers() - else: - self.send_response(200) - self.end_headers() - - def do_POST(self): - urlParts = urlparse(self.path) - queryQarams = parse_qs(urlParts.query) - key = queryQarams['key'][0] - try: - contentLength = int(self.headers.get('Content-Length', 0)) - value = self.rfile.read(contentLength).decode().replace('+', ' ') - value = sub(r'value=(.*?)', '', unquote(value)) - except: - value = '' - cache[key] = value - self.send_response(200) - self.end_headers() - -class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): - """Handle requests in a separate thread.""" - -def serveForever(event): - try: - while not event.is_set(): - ThreadedHTTPServer(('0.0.0.0', 9978), ProxyServer).handle_request() - ThreadedHTTPServer(('0.0.0.0', 9978), ProxyServer).server_close() - except Exception as erro: - print(erro) - finally: - ThreadedHTTPServer(('0.0.0.0', 9978), ProxyServer).server_close() - -def loadFromDisk(fileName): - name = fileName.split('/')[-1].split('.')[0] - sp = SourceFileLoader(name, fileName).load_module().Spider() - return sp - -def run(fileName, proxy=False): - event = Event() - if proxy: - thread = Thread(target=serveForever, args=(event,), name='localProxy') - thread.start() - sp = loadFromDisk(f'../plugin/{fileName}.py') #载入本地脚本 - sp.init('') # 初始化 - try: - # formatJo = sp.decode('') - # formatJo = sp.homeContent(True) # 主页 - # formatJo = sp.homeVideoContent() # 主页视频 - formatJo = sp.searchContentPage("繁花", False, '1') # 搜索 - # formatJo = sp.categoryContent('bilibili', 1, False, {}) # 分类 - # formatJo = sp.detailContent(['']) # 详情 - # formatJo = sp.playerContent("", '', {}) # 播放 - # formatJo = sp.localProxy({}) # 本地代理 - print(formatJo) - except Exception as erro: - print(erro) - finally: - event.set() - try: - get('http://127.0.0.1:9978/cache?do=none') - except: - pass - -if __name__ == '__main__': - """ - run(PY爬虫文件名, 是否启用本地代理) - 再去run函数中修改函数参数 - """ - run('py_bilibilivd', True) \ No newline at end of file diff --git a/py/base/localProxy.py b/py/base/localProxy.py deleted file mode 100755 index fc7eb02..0000000 --- a/py/base/localProxy.py +++ /dev/null @@ -1,6 +0,0 @@ -class Proxy: - def getUrl(self, local): - return 'http://127.0.0.1:9978' - - def getPort(self): - return 9978 \ No newline at end of file diff --git a/py/base/spider.py b/py/base/spider.py index 80ab9d5..a2e2800 100755 --- a/py/base/spider.py +++ b/py/base/spider.py @@ -1,12 +1,12 @@ -import re -import os import json -import time -import requests -from lxml import etree +import os +import re from abc import abstractmethod, ABCMeta from importlib.machinery import SourceFileLoader -from base.localProxy import Proxy + +import requests +from lxml import etree + class Spider(metaclass=ABCMeta): _instance = None @@ -64,6 +64,9 @@ class Spider(metaclass=ABCMeta): def getName(self): pass + def danmaku(self): + return False + def getDependence(self): return [] @@ -71,7 +74,7 @@ class Spider(metaclass=ABCMeta): return self.loadModule(name).Spider() def loadModule(self, name): - path = os.path.join(os.path.join("../plugin"), f'{name}.py') + path = os.path.join(os.path.join("../plugin"), f'{name}.py') return SourceFileLoader(name, path).load_module() def regStr(self, reg, src, group=1): @@ -113,9 +116,6 @@ class Spider(metaclass=ABCMeta): def json2str(str): return json.dumps(str, ensure_ascii=False) - def getProxyUrl(self, local=True): - return f'{Proxy.getUrl(local)}?do=py' - def log(self, msg): if isinstance(msg, dict) or isinstance(msg, list): print(json.dumps(msg, ensure_ascii=False)) @@ -123,29 +123,10 @@ class Spider(metaclass=ABCMeta): print(f'{msg}') def getCache(self, key): - value = self.fetch(f'http://127.0.0.1:{Proxy.getPort()}/cache?do=get&key={key}', timeout=5).text - if len(value) > 0: - if value.startswith('{') and value.endswith('}') or value.startswith('[') and value.endswith(']'): - value = json.loads(value) - if type(value) == dict: - if not 'expiresAt' in value or value['expiresAt'] >= int(time.time()): - return value - else: - self.delCache(key) - return None - return value - else: - return None + pass def setCache(self, key, value): - if type(value) in [int, float]: - value = str(value) - if len(value) > 0: - if type(value) == dict or type(value) == list: - value = json.dumps(value, ensure_ascii=False) - r = self.post(f'http://127.0.0.1:{Proxy.getPort()}/cache?do=set&key={key}', data={"value": value}, timeout=5) - return 'succeed' if r.status_code == 200 else 'failed' + pass def delCache(self, key): - r = self.fetch(f'http://127.0.0.1:{Proxy.getPort()}/cache?do=del&key={key}', timeout=5) - return 'succeed' if r.status_code == 200 else 'failed' \ No newline at end of file + pass diff --git a/py/libvio.py b/py/libvio.py index 8a0e40b..6eda869 100644 --- a/py/libvio.py +++ b/py/libvio.py @@ -43,6 +43,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/tests/test_麦田影院.py b/py/tests/test_麦田影院.py index 861697d..b3cb370 100644 --- a/py/tests/test_麦田影院.py +++ b/py/tests/test_麦田影院.py @@ -100,6 +100,53 @@ class TestMaiTianSpider(unittest.TestCase): "第1集$/vodplay/1-1-1.html#第2集$/vodplay/1-1-2.html$$$正片$/vodplay/1-2-1.html", ) + @patch.object(Spider, "_request_html") + def test_detail_content_extracts_meta_and_keeps_intro_clean(self, mock_request_html): + mock_request_html.return_value = """ + +

示例影片

+
+ +
+
这里是正确简介
+
+ MT源6 +
+
+
+ +
+
+ +
+ + """ + result = self.spider.detailContent(["/voddetail/2.html"]) + vod = result["list"][0] + self.assertEqual(vod["type_name"], "剧情") + self.assertEqual(vod["vod_year"], "2026") + self.assertEqual(vod["vod_area"], "大陆") + self.assertEqual(vod["vod_lang"], "国语") + self.assertEqual(vod["vod_douban_score"], "8.8") + self.assertEqual(vod["vod_director"], "导演甲") + self.assertEqual(vod["vod_actor"], "演员甲 / 演员乙") + self.assertEqual(vod["vod_douban_id"], "1234567") + self.assertEqual(vod["vod_content"], "这里是正确简介") + @patch.object(Spider, "_request_json") @patch.object(Spider, "_request_html") def test_player_content_returns_direct_url(self, mock_request_html, mock_request_json): diff --git a/py/youknow.py b/py/youknow.py index 26168c9..639d50b 100644 --- a/py/youknow.py +++ b/py/youknow.py @@ -48,6 +48,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/乌云影视.py b/py/乌云影视.py index 27c1f63..c3ab217 100644 --- a/py/乌云影视.py +++ b/py/乌云影视.py @@ -37,6 +37,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _stringify(self, value): return "" if value is None else str(value) diff --git a/py/乐兔.py b/py/乐兔.py index 9cf1fec..2665efa 100644 --- a/py/乐兔.py +++ b/py/乐兔.py @@ -36,6 +36,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/二小.py b/py/二小.py index 67cf4e9..0cc41ad 100644 --- a/py/二小.py +++ b/py/二小.py @@ -55,6 +55,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/人人电影.py b/py/人人电影.py index 92afbf2..2c8398a 100644 --- a/py/人人电影.py +++ b/py/人人电影.py @@ -65,6 +65,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/人人视频.py b/py/人人视频.py index 88c3bef..3eb527d 100644 --- a/py/人人视频.py +++ b/py/人人视频.py @@ -43,6 +43,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeVideoContent(self): return {"list": []} diff --git a/py/低端影视.py b/py/低端影视.py index 46548b5..df08eaa 100644 --- a/py/低端影视.py +++ b/py/低端影视.py @@ -126,6 +126,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes, "filters": self.filters} diff --git a/py/修罗.py b/py/修罗.py index 073502f..bccc590 100644 --- a/py/修罗.py +++ b/py/修罗.py @@ -120,6 +120,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": list(self.classes), "filters": self.filters, "list": []} diff --git a/py/凡客TV.py b/py/凡客TV.py index 42ef623..68b9fd4 100644 --- a/py/凡客TV.py +++ b/py/凡客TV.py @@ -36,6 +36,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes} diff --git a/py/剧圈圈.py b/py/剧圈圈.py index 05cff74..22b247e 100644 --- a/py/剧圈圈.py +++ b/py/剧圈圈.py @@ -36,6 +36,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/四万影视.py b/py/四万影视.py index 6baadb4..06f7483 100644 --- a/py/四万影视.py +++ b/py/四万影视.py @@ -125,6 +125,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _build_filters(self): years = [{"n": "全部", "v": ""}] for year in range(2026, 1999, -1): diff --git a/py/在线之家.py b/py/在线之家.py index f0c3042..a9d9389 100644 --- a/py/在线之家.py +++ b/py/在线之家.py @@ -176,6 +176,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes, "filters": self.filters} diff --git a/py/如意资源.py b/py/如意资源.py index ca9b5cc..863c682 100644 --- a/py/如意资源.py +++ b/py/如意资源.py @@ -95,6 +95,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _build_query(self, params=None): parts = [] for key, value in (params or {}).items(): diff --git a/py/布布影视.py b/py/布布影视.py index 529bc47..516db28 100644 --- a/py/布布影视.py +++ b/py/布布影视.py @@ -212,6 +212,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes, "filters": self.filters} diff --git a/py/木偶.py b/py/木偶.py index 5e292b8..0511972 100644 --- a/py/木偶.py +++ b/py/木偶.py @@ -58,6 +58,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/橘子TV.py b/py/橘子TV.py index c803ede..53d6666 100644 --- a/py/橘子TV.py +++ b/py/橘子TV.py @@ -55,6 +55,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _dict_to_query(self, data): parts = [] for key, value in data.items(): diff --git a/py/欧歌.py b/py/欧歌.py index 7b34734..df075ed 100644 --- a/py/欧歌.py +++ b/py/欧歌.py @@ -58,6 +58,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes} diff --git a/py/滴答影视.py b/py/滴答影视.py index 1b86e4c..1b476d5 100644 --- a/py/滴答影视.py +++ b/py/滴答影视.py @@ -78,6 +78,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes, "filters": self.filters} diff --git a/py/独播库.py b/py/独播库.py index 18b7ed6..7e58a8b 100644 --- a/py/独播库.py +++ b/py/独播库.py @@ -46,6 +46,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/玩偶哥哥.py b/py/玩偶哥哥.py index 25cf3c5..300692b 100644 --- a/py/玩偶哥哥.py +++ b/py/玩偶哥哥.py @@ -59,6 +59,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/玩偶聚合.py b/py/玩偶聚合.py index 34a80db..e5db904 100644 --- a/py/玩偶聚合.py +++ b/py/玩偶聚合.py @@ -221,6 +221,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeVideoContent(self): return {"list": []} diff --git a/py/瓜子.py b/py/瓜子.py index 76465aa..7b6fef4 100755 --- a/py/瓜子.py +++ b/py/瓜子.py @@ -36,6 +36,9 @@ class Spider(Spider): def getName(self): return self.name + def danmaku(self): + return True + def init(self, extend=''): pass diff --git a/py/糯米.txt b/py/糯米.txt index d605e0c..eec6221 100644 --- a/py/糯米.txt +++ b/py/糯米.txt @@ -7,9 +7,9 @@ //@wrap:hkdf-aes-keywrap //@sign:ed25519 //@kid:k2026_04 -//@nonce:base64:hzBm7QdbnK+EqGUD -//@ek:base64:O9iDm3xV3yddHCBtv8rd89/8Y97TQeI0pkLKmvy9wIU6wINH7dLsn9aGqd2/gLeW -//@hash:sha256:7e2713aa38367b4f34efec0f9aa70282c472ac27691552b20f890ef52f0a1612 -//@sig:base64:fXPI0kmnDp3Qp6G0h7xj2bNHqe05Md9RUBAgJ16CLZcUT3Pz7iVfbzpZXEb0Uwyp4hIOnKG86keNOPwlntl/Dw== +//@nonce:base64:DLzuLyG3kAa9MbMZ +//@ek:base64:JZCh3uylLat7TmXI7b4B5wZtQZolBotAUHoniBrrVX/Jp2GJe4i7nzP3wJW9zmNt +//@hash:sha256:700cdbffeba6ed07f816a2890612f0c12d3768aed2a65c8d05ddc8e9918bbc70 +//@sig:base64:0UJ7D3JZCaztY3ILnUdT/LDFXL9qDKibWkEffVbK/A8QLOlWNOHJelQKCsIAH6Q1FXukN01eSsOC6fgK8GG/DQ== // ignore -payload.base64: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 \ No newline at end of file +payload.base64:fb7/GXHJ2EjiM5T4hpmwpRXEHh82VTzycbu2lQCIA3gOYoXXzuY6aeyK2+EZ9pu5O+ppKxMCr0E3c72bUUKnfLb2nbMc4nn1mUjTXFa7i598CoBlKlPAPt1Mc6MHKjFvrYmAyLRmvKVd/gDJdKi0anmmGp35sHHo7P1i2/Ejn5bvIVu7JleOc4rTm0OFwIV6SHLVK23n4LXbGvemhDVQ8wBw5nEkglX/AvDJADc1o1QCc2lmp4QVhDMya7BpsQGznLn3B/mMe1SLWwYo9/1tFHO7Nr3EnlJJSjYrepL/G8/ZSTLOnxre7Fiiq6iVPhBQQsHDQy7YhKUxu8zzJ+z0JQnyKOAySagSTcE3wM1UaGnKZPAlW128tPm6S0uGYJ78xXuIAhfJEZF1fvgFeRJruoLfDu22BEMgNCdDvwgre+zRo+WiicUgYsa+YH6R5YRFnB/VD0qVpeDZXoG8K4mFt6YT9SAHcAlPyBy3GeAll+SjHqIR/PERGhrj/ZrDj53IY6yQHFyiBgSCAIz9fMJsxVPJnPBCZmt6EyCtBEzgI+jyYqY7aa6aofBUYf8EvOznI1gjYyS3st4PL/3mR5jp6+uywv0m4g0zg6alHTByiYd6GpmjwN4AOlZC/Zvr5UBCDaObLWeo8XTxgheob8Y7CsYOq6XBempcEqaMcnzAH76dtpbYV95EJawfMFnucyVL/FqLn2G/OAIclsy/8hx5IkWMExsq73EHSitHm2hkrXnxmYQXPjthp7ceu/Y2/GF0oEuW0oLX+RAm5GHF9RyUjb++mnNhdvz3dHULZiLLRvzvGkiockSNOj98FnTlFYvNLYkc6iqHzRuIg0ljVHJHVZ8eP+OkDRj/gL0CbAzEhuezsnuDaqNQGqO/P8nc0kAd+2TmCJpei4JQUDR86BsdvNofTdY12FdAPVQBSICUALRMiVBSb5dddYCjR4x6JwJWkHtlrcTT/cwbxL1M7Rznb4wWeQ52Eb6Qy86gcFnmrrN4zk111AeKbQ2W8PjjrUOKJbmaecq/ZvXIXPNAASx3dey9RXWAXaGnZ5TnF2ChJuntmyI8YMrq8zr6YWbV4pXr8pl7eqJu+aiREyJjXUwIkV+Tlp+S1+ptAPh7wT+Wjq8BuXlZ03MnVzod81Nv7wJJL2B76l3vfKJ8x0o1nxkmQd2a3HbxfHpmiMVWLlfV1e+GN0aLEVzO1345Em8d6ZeY41mYk/zmgyYn788RycLv7R/N9BhJTn75phGNyEn9V1JYbIgwkJSrgAxVUAg4hweBFk8cim7TC7SaeE3H8NpSTIZCIaPLfIvta9FJttRZcOZ+0R9F+Wc1DghkHRbu/ydjp/kZ4mK+wpZ3yFCOJKn0KA78y8Z8WF263XoIKHC1OiR/9tNIo8MJCNhgctVQCnjMRT6jlRNiftZTkboRWlPVb6zdNLEiptyI8pVNKIjE2trFahrjqy7dPd1wUqP965/DPUxkKJ0GornvQQ+ztr1lGD3OgcJhELFYxO4FcMpRyCWaXsGVXwba5VnjiEZvTqoKM+eutqwqWMQpWt51zlgDAnf6KEN+y/cn6Mrdj8leS6TKS8zwEkAQR6upVeuKEFXy42W4Rb6bJFcL/HbkmoYEWYaNclqx4aHLf+u6Bx/MFcwQprBf2+P8j+yGkUo11l95aymwmOfpkeGCZNt6EdG0VXCtWN4qixGV5PBy+vfk5dg7CslEO7ZlbknpYv0znniCY8oQuREt8SfapwEJePucEDVbYSgix9cI59mxX3y8OlpXgJ/mNyGTYLOyONW7lhhLU26wFspxoS7q3MzLOClQ+ariVEi6dlNwyOALehRp4x4pMCMYzUEIcDk5IjAfNJ3GEyapTGppr421olkvWDrbf1BztxKdDydpcfw96gsZl9xC8wfLAFjDHAEuLmbcHztAWj00oaSH8kmVVAHCg7BKr1uPONKavvn8D1t5+FrBtnV5AjNwuSVi4N/wCyWca8Ms7mWoYnsG3et0mpZdW6YS8tMa2WU+KxVPF9/QcUSIEAhQ3BTnMzjiCfj/LBcqR+R12AMRIQ/rNdZV1xJPRmrMBQiHZ99g3Ahgm4z0eAReT6UlI4uAP6ow1fitVTDwK2uCmo9m0yeboX5fPMdJq5KxguseuqsLUtfPvu0K475/fxy5xi4Bc2NtFYkdfhjQkckc2rPSY9BlkxYKa103yDrnEAhrfPHRyFYABas6okFepf9h1QLyc2wNOT4TIFGK/5vcq2JE4zIyTF3KYh7gN5lp9fpoX6Tv5RR2wTk8rKIbYEqegdexIej950ybe6TcKb+Gh06oh6+qEX7PADbaiQEvMemTBzMbdkkO+DUqDmEtdf5XolJPA2viKrrJh7h9Osed5jPyde7Kmgltx0PbTCOu6ZEz52gUiOLWmOvnkJOh3pPdX6uNyxhrVS3e8kGsVHht7y6FteBJ66jg15kv/NX6BCr+LzJeTzFI9B5+gnv7r12SXAbwC58PyLCXD7QZZg6rtB8iP7XzCB5lFCfFrrwEMmsO9Drty3L2FEdFbxP80ewsD7bFxL455OkqhCfNx9Beh1ymmqwk5FJQ38nMMwwTcAkVaiF949hYi8hi6Ehy6qETY24KV9YyqBc1CUNIpWZjrGwg3d/weg1EFqMM56ie7SLgN/nj/aBXzXqbPR5mxYew7GM4FhynW2erDhJCF25afJEpGqoj8IbQ7/0uI/DSqgzcF3At0vsRcQcm400SaHcJnXm4YE4duFjz3O29DXHarGS25kT0fFVRPJsfYWWSJ+pl0jHq8wCgyHC6KdAHr0HQqawbOdcycBsIsuTcTzqA/Zx/4p78oy7VwJFVs/xU6ysne+qoVotfiOV7UoR1+HQNIT4yarGHKsv+ostq7B/j3OImJ4QHp2Lx/io15UwBNpU/ynds2rPI/hGZ8bb565Ng1fvn73MqmW8YzVG+VSQqFLvyUGLj7U+Nz9eHJhI1priYWU0OGNjqeTCTjkLkDklL3aOWCaoqH4jD1oNJeiTWQIJxjwleraaaG34MY/+oSqWZw4PUjVI7d7951Uf79/eVXJJTGPBLZjrbMwaOxYeIyZgmb+L7q0lwHk1kVcy4YnOhOai6Rb3aHTPEPUjlJLWWyS+TTKwDDlwolsiF6F5ZpTtmpE82Xds0UMz/NcxWPBS54RFT36RMpf17+0sxJ4SKAMxsw8XvzRdee0KXlVfcMcVD0vYBtqTGVjL2GaMQ+rhhBuVBgS5yo39pxy8vYnGrBlpOsTvHaxFEtSFH/ecRi5gbjYEKHXvnH1a44hdoPdAsHA0a5Bsg9c+IPKNKwwAm5+7VOy7WmuaxeS5f6XUlQmhLb/3SqXsJPEfn8ga8Rp+Ayqcao+OwWjQuXIyN2m0IYY3oZOj04vS4jyCsd/V7hYJnnb1WSp/6zPVZFHpAjNiIXSU/X8NxBIlHKdWJTU1QwcXShbhE+8XUHlyACwl+WH7FyVwdZsyvea1TUd1/Mf/wV7rspO6cGXqlY3PpLET5rr3gGNwwMCMFOG6wrQAykjcqAkVIsJzUNRQOe9tpyitxLUm8mTKnhlRko6bDehTX/7CEjPq9Vww5J6Z21jbcoezyxckiaAo1lITZYAu1jO/4ESGnohWoPY47V0mFIQ9NMhUBsZDlO0qup3gBS2/hPrGB+uRIJ3FGtFnG/zQp3FcH7XjOG0ANAXZKVCqa55gJOvtnk1qZB/fBzPEzrhLr7GN97jsnZ/Rp3w/qhYhenUdHCJ5TFLhY7NGBrryLudI25Zu3YKLRlEuP96LW1iZjRuBSI88UtNj1MK4XepzQFXcIKdwJPgBnJDJv8ccp8Ha93yz5kJbbEUq35eM+ptHqa7NPxAZs03ixoIT9yODH311EHDN6pbdd3HZX4oE2lX3K2BtOP0uhrgejeHi260Sv337ah9bCsBqs8DX2pBbR/i7JKWqGT1UKI2Srx63S9d3UyKfXXOZPNGY1jefkVZzrP2XTy295ABimBKmWYiZvybnVjtlDpdM8HmaHdrGN8zWg8I1nDYLdcBKd0GaseNhr4wyW041VY9lktG0U6LFug+V6YTdzsVegok4K8UiF/7SOqaKnpvB1l5WIndd0OqZYBGEAMxcbyporp9mVaXaMvQ45kPUB0bRGyDY4Ks3a3lEeps4cFSgOBDhgKf7AlA2fp/enGeqNiG7W3I1tE4DezJbvHlUvKf4lTB0xC5oY2DpGkEUV9usLz02L3AML61mep0pIfq8gp0r8ZUnwb1610K5dPNKkJvZCAgerWJbtALtD8aBmG+LJ5KICAtlWGQLdRy9i2divKNoMN/19jlQS6atqORCTSQFieeleZ0ofXWCGgbgyR6EjtfGjnLm7ABNDcIJTOkyPcjLwWC/PChb+h/i7LTIy8HSwiwRMZUit4v2652fNhqJ7UmicudEFTxPiwEwlM8h7wsEUq4scPY+OyR+A3rvWAVD9SR6caMreCfw8Xe6S/R2HGaS15fywEwBZX3Eweo+7vE3vNrNkyceOgFPqq510mYpXS+GtuxKyXYBIh+O+iBqtlMCk+8m5hqEBKAzA7XKeFEjijocFb4AjICnei/gjkhFsPE0my31iRSTE1nudUUkk/yDOQeSM2E9thzmISkysphydb9RAKORZVk/79r9Y2gSpdFw57qJ14pK9WoHR9aeG8rVF8AZr5HsVdVyIRnBN3JuKIr0IqtzDLRh8g+tLu2B2V8A4r3EJOGMW0GSDO+C2x6V5vz5q8LRke3gvpl6LF0Op9y4CFeNpgiClmCdqa7PgMU5rTzV/rfq9wshbh5GqkjeF6twCX6f/fYtwbXuSs1hmLV/AsE9iZon8GymcFCvpVUDqPqlx4D3KaQ9Dhzd2Fa+Epl6/qthEoGlE1gdVR37XFKrjk9MJbHk2d5RELuevyj6xl+ye4pN0Uzhwik9/cJFO+tJxOY/A7ozDjKZ6ZLBtZUOnT87lHGwGJqtZEhbCxWafIRnnzuWbwYk4ErVv7wiWLmhGejzj+rGiAiF7S1YS8MXYOOPHlJnMWVWuTToBfkCU7eMOlB2kPdHCnQs3ciCgPC6XVdU1PbhD2QnqzbNv6C+3/x+eIbywKyybtjv8RAitDhxhBl2HGqbaWPy4l+q95MIJpg9fn9ksY5vp3rmxS9YDlSl12zjoP9XG2JHJ+JSZs7RPR9sfz++IetXN8L20jdrnyeC4V4Z0zVWhFbfnnQGloQFkAYLFPDUfqI/mwEWpNtQPwPlUNFmTZT0U4szFlAajVf4Ap3wt6TtC8oLS1rSVPZe1wyWxjSJgIofwPSLJiAqHzpKs32qqs3YusXlPg+6mSRuQg+kWo1T4JMzNlHaIpg7tvH9kcveYpyEsXX9RADtjE9Gmqkua3bQa7Tb+gMjH7MaoSWhrvFdaBpbx1jGc/VhmHvHb/P7hVUxxVF7Dg24bsKcvdye9HPMTtZzXI7OzeMIMcGH5ejJE0FrOryxfykmo/gER0A+9tvOtaScWSxuj1drJiWIlNRhbB5e1hA0t6nklxFzmCHpb8/BpaKiE2geKe6lXgzAxGl86mufiaowtDmNpfKZNwVro3CBxj3OYTRK50ZpU1VPAcjmiSkj+x/zuOP+eHI26jf7/h4rRxMJeQIyx+3aujCV5xhFd4sxISWFyyhmCrSK9wlw6NBmDqI8Ftm5+IXjV1+9Vkb2NqPaMjEofU2nePmESKgmzTVvM7/luVS5E0Fv0SFzYeR/EHwEAJllrlR2vJx6wxOmJRGA2VNovNvvcpdfC8arPSDDw8LZejnDzD9VqcI7jgreMo9g3xUJZM4LGLQXEHXmhZMyOGlST1EoXmDBSExyVXSnyOCPGWZA4wZoelWD2VAbZk0RCOPGNw/4Hdv0Vvx85IsdrUFbID4u4KB7JjftHE9hZk1o4HLUFVjMYfj8i4aoq/7LOdnEXOz8p9YGu1BOZqCVPy1yOUhHFaCUMuk7CfR8eZsxwQUmVW6KKoXjJLaBSl15KjVpgq1FLAzDBt9GcpQmFYTLIuZa9oNrgg9PeoRB7Ocb7FJnMcvR9IcjYhrICbNiRUPqP/2lKQVbsZnrczjBtzDxSm2hzk+q1Os78CgYTEbIOCr0a/13u1Z+qI0ns+2hjLOkGh4TGPWQN94vFLcYcvyVi5JEJbCK0f92KaHOHiM1IylK5mpMGb1c/cFbzClKqNsMvxwo+YMYyPoDgFhcyLzleT0keFhLKW9lpVeN/EUsPTiAhBO56kDRnXzaGViCBHjlFwAXJAJ6DQkWBCl2ZmlFQUt4mZ/F8jBslX8ue53Hq5cFRTfy+Zs9tqafEJFXhk/EQsP+i6Th72b9aLDhajb7Czx/I1R2TaEKFdeRAM731TdJ2Dkk9Hz0xvFFoSya0tznO6B/MiB7oy0RTX7Wk5dwoacKzIVIlsGtFGRphqNoyLLfLSghPyXLBYzvvkoJEwJP+APYMwcDCAfVPaEL6qtT9LpZqAWAoUNluroFqNqiF6hScIeGy66ZC67n8RswUxM51S8Ptm0bC0bAnUOH57QJYTD9wpDgfnheJ+0T6ofiScs/9S24LRHuPIdBOlJZSFn450SZ5SKx2yacQpEzffHtxhluajE/uTYXTs9TiI4ro4TLxkE7yTlDFX03slNDEy9a+98W2gZdlhX68Lf898hkIr6zbFwzII31c8AFzEYmeD4h2ejk0Dg6tq1tqw3U9uNlrw4+bAseQpA+lDe6PR6NuNplrlYcRq+ZIJGBJf75d67WM3oC2/OH43/lv6dXlhyLVSY1o3pYobgZ+BQLe7gqa1UU029xWH86ZwcbmZWxs5Kbpjw1b0Z7RfTZ6S0wqtwtZzaQsB3QX3NJrz5cNz3KMm6RX3ul52n6/rvH8hT9aZ9ewYONq52o+2nm+y0+k2mWL9diKDvAbr1PHVbxHW7abwSWYNDukms1ubbHvEDQ4QiKRbYXoyh+BWuy9EuUoMx+8K6abol2HdZSMUSnHA7b5PioRYBgn8booPf6VCcnAdW+puaDsSGgKn/3YUNEbbPX0ual3HxvmJgHqVEqw1WeN3KbxmUZrELF1bP8y60P/g943gkmGvx7GMG6H++hpTdMVZeRIlkHIDG4AnFa0YYaJC1ym7XAn6gjhK3kDguoGH2/57TPpQygkjCaU32xTrhdiDle1qdXmeevQChJO0a5G7my4XbJhq3vYa3EU6IvAaRq0S/gUTR5pJZ6kmnMmus6LaWSYvLCE6cSGlBwTUZkJQVwMMx9mqUrVCU5FZ6MBoboKPtg3n5jS++QGJZto6xzOxGiwfmLUPzahEF4KPg04LlimfCWjK1FuiP6QO4uvQYPNYJKBZVUUZUs8jB3ZK01sQCKay9yFqSEnmjmMqr6phjGKftvwke6qhMv0D4ZjC8wLTC6vP77j67OqNxilma5THmBUCpPrVliR9FbljGNYxVcTa1scjaWo1jc4E1Ape/qPGkl7NCxdptiwKI4rbt7APrSIyIZ33+Zjw8mMEBbTRS1Phm1rLYTlnuk8UVHpR8iQDUuTn4fKLe+vZmuc/ub6QC2RxkxcLYWrywU30yND5/R/JRF5Ax35dlLbPhgNbhFi23LYTwAZDOpkrbsjKdwtuD+cN/QdhgTcQt3eE7G4a+DXWmS4nERXTU7RByGt9j0Ti0e0Zvhbkd0FPmZdWoLNof/9JrDqnB0oDvDWq9WWqRjfWpNTAcYlCfTMUoYS69pGAodIzO8BxrLZh3iAOg0r17CYn3THKkeXuCs8RcXJeIHrAn174C3B/r6f7/2ih0Ic85kPKSgr4TR+a0lfFQtDc6EUTc+KioAejdY6tzwMZVJwKCazoVW1ociXBv99vCDO1r/SqtAefoPS2JzJBs4hSJImB65vTrEXN41m8PmYUSkyJEKmiOgLdkY2RWj1qVmPirh6wh5oQWWSiHquke9P/6GeX2dScK1u1rMb1WQAqM/e9HG7z2eOI0507EYRl5hGkLuO765rvYRzy6AnB+cHhJ6SHkSRJ9AMymtH+Mv+YDoDx82tC7N1XPul7bCeL0mgHzfwKw+resxtUK50vyXedh/mntzaJOGGJVXMcVLDs+HTM67mzbudODJY2cjMzhLp4UYYwk1f7k/juUq+Pd/or+fHFUnD/+gOM3kqdG8nUMGp4IEi+FBGwajJtXPLjh0knu291PIFF6OMM/gxjCAqfSOAB0iCdsqhztkWv6l8kN3GekPqwnRX+PEHWvl38v3nP5/ZMldftmeuiecbIyjIXSyTrBYeHwnl496RnUqEhC8vlJWeXvrsu7HzdF3Xo9VNFZb7sUsuEUnEcNX+jFtdaSHQlIOHoRyR3xRnA1dp4qD2RoFAOXAy0/SFjhvxYD8jAwx/e//254pKX9Y1na9UB+WI16rUKXAA9LegamdWlRsMJY6bzOvvW3E3RA7N7kNmeJ16n3FsfFZ5nJO0YwHQbdKkSbb90I8MsWhResqD9CxrNv5sq/LKuE4dJYUXFLUeC1+GjvADS5L8zPhnmObs0XhsJoHcibUKnGwVnAYvlSyY2sx6EWmQsWHB2xwj6uGEf+e/VOYR8oZKjQq5aNsFcba9WvZ5iWYllT0Gh56NWohHnMFW4lPIDKRHC81J40uwN8u6AQoz4YZgE/2M6fyal6SX1BrrClUHkLcpGd6di6j2F+lfnRY/4nC7ie7JP0tayWxQsuC//nBewFmYv3W7+bZC8+6UQQeJE4OdfkGeDBaO1JLV8MAfwP7fLeJGm1L1ZjFUY3nVRWSYqOEv2PsirjjoBZdKwPr13/p0Yg+jzwTCzlflwSOnzeRN12DvvgJzlgqZDJil2QcaCwzgpQXBafiyux5wtLszx9VgFsR7jcJKod3E+lvGA1lFa6Kh6ASpCXAXSKRR9/uHCvwbPCIeqOFOpHkNsG2CtOVCSv5lvYSW8Z5fHBrh6ieylq8/5rbd8qkv3/U/C6v8Rb824cawnzgVLCPs59N/6EmNaFbAFCw9qXYYyICX1iajWcEOgenjyCDTqd2nO82V1xxIj81x7irwviJG/M7gG8llnwYnQgjja5x3JQCtANH8hFI18cSOW1oM3UrHJi+xhojo/Yw3wJbg5EcYu3GsA7WQSq/DkKVk1Xc0hE3h6W3sUYUARL707XhqfL6c4u+5uci6KbXh9aD0aUHepa4IZsNqA1KxpID1LL48tOsJH4jmtyhnpjD8SEM1fvEIRlWNEiWSyX3q7n0/mLOEaLeDQVZwNJUUGZF4iM6uzwuv/h/+HgdDzj5RHnoHCd7Mjl6Gcr1wrC1lcRIOUtSqXKkqHSn34sLgW0mhuW4RH/ADUP4bRyVkzNE3eXg/KskQrL2QXIYko11M/nf9/v+C8nIWAPUBvTdsDTLRawune2JWsn+ixAYshrehxOncGVr/Psf9Lx2ZKAs8DjvWZK8AGpGiraVf9miy1E4IXYF0LYjLWElm0PQg7cTW9jUW0fU4AmGKRJW1MWgQ/cVnUtZ2oYvz64OafnFrF71rm+MmiGatDRggGupDplmO5R5MlmsgOdBIIy5eJgozS2pX0vuXVQ3ukbueMRX4JnAap9t4+TNQBBQWQQm75csUCLbOiyFZh0bD2nWKNP/ZfqNWL5k3p4o+Y+tmQRM+IQ1mC7+08RaeLhxNcbawa/QrgT+/P0sEFa+y8RXUnzSSOMhxvq/zYaAjhwu4PFSowyA/gjzi3KgAx30Wj2+RCNE7rH2UChLLX5JpC++VuWD6jMhTiYUH/y1I74Qxa3fduDhMKjjJJpIZpf3nt1f3cPAUSsDIu6MDW9aCmHeu5X6o5i4R4McQkEXB/f1itazbNjepHllNCbldFaFFo6b5OB3zSPYLAWvD4tTsSF+oa/XFB4oGZHBBPbQNTZRJGlm33TfwKDR2ON1f5jXYP4rTWVylc+CmvptplJt/OZ4dCHm3tkaUE0oxj7a7ReSaIAqkAxFLRt73/4QWHa+8J/P2O65eJoUqr5fEZT/7kBIboM8ML1UP8O/pUQ45dNpPWeXYBcHw0mZQw1RVK2iQAQVB8jDGoEq5HvM0K+rnxHo25djqb2vHUbaSkSQhbI2Q+VGlobStsJhViV19Us8HQcLK95HnwjjN+40++tk1q6rsS9KQjIxG7AAalYvLyAedCjMmdpuaxywYylRJbqW4V525RP5NVADig26JEoyXU4KkWfReAfAYvU5enG+lbDJ0bpR770OBH9k5Fk5oODC5n7D1fBp6pBV1Y+ozfZOr+IauLyL5f2UiHGVOBa+Aoek36WvVemwcGoxQJHCvrc//GJchuFj8ZdtRYb1BZ5ZdZ8kOVs+gzzAgwCO1y+TWYsU5OCQni/wWsF09G8TgcOA33yooAt+IeVjIBbBxCNcNxpj1fmaSwVEPHQdhbBfl/K661R7Kc9hDOOkUhBeBc4mru4rt9BoMYYfUC9juhy0hoMKYMBJKmQVKaJiZnyMyDV9/GHkrsri3CxFOwpfyOMeVweKKdyjgiVi2U4WUgphafqWTcLdYcq8kDBhTD3yMxbXaM6JIFlzjfimmja3KQDDRqj9hkIafnpnyP0VGOMIU3Ql5DXeUM8cROmfPK/IED3JwgmHVCIwzx6n/OhiLDfBwkTN3A6punaiR0aA9OaPAx5GsjdeTqMYxsoabEo7gD7ftNMjDWLoqvturd7wwjjXknjzoIYEhcNYejRlMhvj15dcxVkJYrQCGuFINrsQmqdVq5ahPVx8gl5wBdAHJ+uRdGF/17bzPQwuhg8frJ9lE5CYbJBuCTh5qv1SyUA2IrlakTpDTO2Yv0QuYoAAnGZYl/kLOSxSwPL13YnBbEVrPbTeJALTnpDeyuPBmCaOR7xfnbWkcozSMxHMQPls3B48ddZy5VX7/9vvazDPe6QbY092pLPHwi0PlqoXlCc5k6/sMAn9s1uoR0nF66SnZNlZTi11jB6pDxhmwCErdyO2BQ3RRHi/DG6//6JahsFCv/o/LofbSx9cwy+1og/K2A9hJnj4tTcgmTwCrL9bjKab8TEg45m/IU7KCuOg9AZg1I4JUtRnoXZnFmwi4066KnbxUREPQYF7fEoQVGDCZ9fYdl+449W0gGntgbgmkXC7IXqCP5kMULSRBiCzu/NYtDb+d01rvQfom210shx7xHnNESJ37MbnEj0ClvrDWYZ48R8+DeIjNRBcIFZ6zVg3zojjmEAI9sbryTLR7lUsVE2ylljMWFyilLHogCjTW411jh7ItYeCx7dr/L9WcUVH5TmvRIOnjKD4MjcP+NgPVyzgR61R3TE+zI+rI26kvO5D7EYz/ECw1bcp7M/M3wzf82Qtb4+f9y3SnUsWvF+hsa7RN32nvB5hEiLZU7ViIpvxZ8ZW00ccmd6X5DmVeq4MUG7yQoHfWPZO7Ws20T7MyZOotIQe2d67z91RNYBZDVJwmd67fCkCDcnAjhUljdlxU5rDNGeKdRxxF64aQjqbsqvtNbaXdjGl91co3UcRSHk8/YpjGHLazIy3H8f3lU2ajBwDt9T8JVtfmPVDeU3of1jm6EHmYj06FNJw/HVl7V0K43oOCYUay3OC0icpDIkArl+O+JAlnvnjO03IvVCp4s4X0MgomGjloX13KPDvxOffG170tQ5d8zK9R+uN8jrStpU2X36MN6dMeoKBvtK64N/Nc4wKypnB6slLXSm4ehf+s6LGmIW88Ksbz7pNUGkyU6cQKmIuNaeaoNHrLDGHeCNALANgsuUaX9D+rhHaPYbwQxTeqLSNzkeL5+HoKLRgdIc4cCJGlKbWw+2mFAfGr0Pi0BXZkoxkF61/wkS1fKXV+ABRmyT7yd1oJxgdpYE2XifNSlObqUxBFm3dStxZk5vtA1EGM3MPEX+BMm4UQaPVISKXrRWFGOgVJMXXlahV6ObHT+iRMzgtF/uIFcsd3vfzV4+gVXmYNKttRJgXMyz8hjKSWyV1X4dt4TjXWfHhOI14y3uGRnm1z3f/SI/n57VQpVECE0lGLrVLjRjA137lZIjEYloB6CMawFICPzCohba3TmrDlszdQJjywtrKkDyjxX5R9Un/iDjyn0yUzauCCLOgBGh73uiy+gArA3notwvjkZR1LUnJtdY2tHlCxj4J5LOCeArhqS/E11aC08X+Un5wuKrow+S5eU+ANmFMrB+evIJZp3O/j1+VuGq/UTKMmNWJfmFMi8hSsM0DHD1cuOfXWABB7zmr9Fe/Qr4ROreUoIDEttejttrGRSGYqTP6afm1PsdVAIc1bqiaAKMVdXDI0mBp0+TvhSLTuF/sfWtZQihZenUWglgo5Rf+4cMBc7FJTmfF5g7N5lrARXRuBwdJOHIYq8hfCJEPMvkRknLww2/Gmaeegnl/iry918rDtDtoNDe9e22xP6xJWac1+4vnKJ47gFNAppSQQyE6DT2KfOdZ9rtZwA5MHsj9yhAT1ODud+0pB/TdcNstYMojaxMY3IBnQONMpbm9EKFuN6/Y0Z1NaKbYPS9eAnxTQ372uk6FsC+Wi474JyldeHKVAYhNH5vhYDqenLeBvmXqPuT7F6mskal5zrYmA07HKqcRL4+nv5VLKKmdj5W1kGPbJdIPqmTW9dKtDEyFU4zM9pakDDDUN/1emSO3XG0WfUPI9lchgqF5uZcg/5h4tcdP8MNn3ltpssWyRDA+eDkF1Z/m6+qIUwVTAO4KpS7MAajzWyA1owG+t08HvKdrGQYWydlXsmDTM1NUPCtNk/2JJf8RySSuPyemQ7hVHofp1eF6grr1yXaAWvwn+L9YydME85Oa7EBsnC+/r2Fcthu5f1qCrqswzzVv6EQJm998iO39QI1P+3TNfJaBpSIN3g1JUgOesTAZHVda2egNRUhBYDfyBqatZwhZzTI0/ljSFI6MtE7jTRcMlb6vChvvUaI0TgOvbRokmGc0BOz6leEH/sWr/LEi+/5HXGuxhI+/aL+KhS93s/vxtjZ/kYHquNLv9HJiRViF1T/MEoRqGdzkM1/fJLDUnRD0RREr6GFKqQ5rwWVg1gQ+vk39Jqz8ZNgnxsPGReTWb5SaKdYaTeBlbXHYqJljYbZA2e/9u1FrdxguadJp+vlhHTeihXN4B7nRPivomv5VoXqwzaqmtugufrI39IBT/vi/IqbJMasSFE4NqxF/JBI5voEYEntm1ouo8j243uu+F6k3r9MsgiT6uVgSizBsVYDa0I7QbKcDzt+LT3NMQ60wW9nFiftIOWI/n5ByGFvhEDlXyYVRu5efl/c2kXrnVRwLZ9M1e2u4L0TeGIBRgPZeWYZoQO7Vegbxc8SOP2GIfy0NRYMqcf59JuYPte1N6owsh+8XYILDqLNuqV9HZuROUxucJtWizrVJ4DKQm4GpgxgFxXoP+Ry1pRd2Z/yoktuX+fTsdZLpSOU+UzzrDYBzXIOzr0nV9Tjb/j2N7j6BQZ6rmT2YOPCYWQBGBrSkm+e8Ms+ohYHnDE7sgoKpBj4j1+mo7wDlu8YT1PSbVJEzLrc7w4+wgMGj64NNTFGfWhmQGVbweU2ZoYngbkoYu/okazcknaPw9fnsJUYpOKRp57cE0Eb0UzY0oqxZ+sJ5KJ1XHJXAw7ZZWXtWgnNC2fqpJ9ebob9dZ011XnLqT2t96eEnp29BNySmCw/ZdbTKNCmYj0wqFQ7e40arM3ctKoPfoyLSBk7SSOcjpOu8pu1BOOG4C5hNKBAmVQjdo44PG5c8vJVTliN3W4HJ7HVpMQyxt61xUb1tWKyySZaCpa1srrAm7M8sL18IPzwMG43+5VXs5iYnNcu4qpxF9QWw0lpxpVmJwF5JXmAjT/bpPFVCQYk0d7YvQZk2ZUwh6pB5FDtIYNI1G8ZUsqZjET7NJvpOdP6UVibJELOHdgt62DYUn+IR3UkzifYlsvHyAgIgMhpmGsHB1hpZLHhzc0iiF+yPaSXp9liGJvSZaAyaYkuy3/4hqCmBkOg0uu4LCtcx4CaMMRHc3hOYyMFUorHfhe7f41bc6mjBme8tPiYT7u0CD5GuvOOa0rqlj2G2N5yfD6DK7/FPXYju0VOQ7j+bk2OPqWZth1OKGlobbNPR9nca6I18t320kHD2k+T5PRknMqPK6C4fTUiznAu1u7dpQeLxE4wbxEYV+EvpQ1K1ISYfRFsifI/CQOa1Yzcj8neB84g42cgpuhWpg1MNxZZsm28KCb6wpcr6NU97AKpxKQyEbahoYNDLTBweWbi8WyPgGXFb/bLkIIJIOPQyvwGVSqNRtOp07BEN/dGHbJrWVfwzmdaOCmYlSbb+SdL6XOqOswA4n5xbUyCkwQQq5yetnZe6tRmaTASIbiHLpUlNu/M/JKHhWyBR2C7OE6DVQFsg2uKRF5GGjn0Y18Nt3XLPa8uBTeAPhYy/lfmMOjtYmYY2oTNCir+hPfkNGZXvMeeFJC0vM1WgTy0CuiOVNddq5QV9knepptytxRjZaK0sSMmIm2B2dHR2ONvzB2V92iz46XtlJN4jFZpDpLnUrj0vWRmtJgyYuZiXZ7mwgMjqRQAEG7yB8st3eRkDxnzCvn3CFNcK0BrdhewqmTPSfbInaqW0ohCK57OXCpyCByxX+KCuSIswKOwreGXqvLYEki969ITDsWyxFu3TV1tuntXroknyF+MSaIZV99cUhhBulkxKV5kr6Ty18cQWxiTfGdCwPag6YOKyuRoKHBwkp/gw3fnF1fYDkGnvhjKkN/o1lx8ag59bKXeNejJV3A5A9pvTXTbZXFgCRq3tBdNQLbKY+Ozr/Br+fwrmwSbhHkaFGlFhDo+fHAPC6wHlsSO/5IA8Gj5uRGq/4QMltxsVu7FyVsublqWwQ4k1z8VX5xtXI+wiNVFCoGjHx5tPvwL58U+ODs393g4aU0Cj2LPczxSFansljFOWkWYJE8he4MHdZI8L38cs3oJfcwfQr/gbl1Lea1hJ5OHYnXwWGg5VdGW4LyVPwqmB2LtFWoqXvXqXzLuGcNwCnpgVDco5ya40Y0GLwi0YAnL1OzxPVwINtohB7JcCNeLY0D5I4IvpcjHJ881JUwUh8MLE51hmYYFkIvyWUd6mi4jFTZH48eCnlerC//Yiz2TLXJtAIFTPIjx+JUgnHTx9l2RVtNM1Oy2fkChId3qKPWIwd+i0on8qBiXk9CH6jvE4DsKOsqrw3mKYQaUqNkZ/5r0bzQn6wcohTMkxDlQj1iIx7niCGl1CPOYahO56EhexQiHNLeQRvRJhzYYBIzjY+hFXAfpNYSzHfbU1TwDWGdByrzHtiMKjeagWDrBxActFWYNnLq6BAVK0eCKfd4a2o3pKUoUB7ZsxnlbxMsWT+FFnqvi43MGSTRPtXqJ7qiXVM+8e4Fj9dcT//CiZ4NECFr31t5RmXh0rB7+ZBjjhnHbHhRXIOo1ZBJ7LHPFa10RN4yrwCqXSCW0M7y73WVUxk/jy/E4fC8jAeHW3ibEOKbMY+ULupQRm2GMbCSR64BwUpYhqrEDU1ykG/5VKEhctRK7QeuRJZNOx0P1d47Nlq50iE3pcvlWvzt6U89q/dGQ0YIcAgIYekFAIWbZOLQVDrTK9rfwxih4vQkRcIVOBsACRZAQf3GnbsUqaNN6H7pdKXmDllUHNjmojxHZEMrVyeA+37q1HzkcoutsIy7NwLn47LnADZPH2+dhwv3moTkhLRWLzd3O8gQlo25n6siC6y1wLd2faXXTz9yLeAze1MTthVXLVqi+wzZxx+RTE6lrlAVeJ1JS9gB+0L5vOGM0k03ZW7CypdQTY/RzacNje5LDXoz6c3VyR3W0ktOWM+noaVer3iW8aqBGAi7QGZHoN/4ho0xDDzWugcAhGDGJ3jKlf/Vv/bWuwBPPvgNIIompdmrKzGvc8tF502GZcz/YuDlDo7+Is7WpnHgd1r7IS0npZ90OtaLJl15YuwJ8wjwm8wGYM+TL4vk5bv8+29HA6FuOsR3/EFUy3ERorbchteNiSvvBVBDRgqy1tsTi+lsppafxkNO8XIoWZXfMjkwUsGYv3JBZuLu1zzs+fDLtblO3ktOLlXB5oSjFiF4GxtzGuVHStlc8QkEsUUQg7KFkaFrb4EFurInJv0+uK13gOxdEQHk1OHD63AcDM3cGgFU9PrX3URLJ7mCC123J2fJE6hGJmi/BOJDxWimFh2FPVWC4O6Z7T5U/YfF/5Irs7lhr+bQywe081i2KhLIv+eFhm7u1ZRIaV95qbb8T51KTZvHXYyD5Yi0s1jPhY1illilqRaO/dQRj8gQK0iQ70Yx0aXBm42ZjqYkhyKlWLGGYov8XLAWwjI02p9KGDykhdCG9SBqhKKLgNXGVm50uYhsLueYrY7n+LE9z1l8OHGcze3xOK2svuedD/JubcOeWiVYW+xSfD3Ozstwiy8j9YTvDT7UJkRAtCBXr0s12KJr4HWN0oyXcc845P6BS0q9+zAIbT2jBG6sulRnEHqGoKpNR0hwSm6ayIj4+Oi1NmTk9qwKT45FP2k5pYrx4mFnQVDr+2ZpaHSpSJVCVBIAwDzyqBNdc86jJgiOlLB3szOtGuepUqaM96BiQ3yanfJ6K/P6ypiJHKqdHWBFLpcZnKG9jD2G1RSnjtcGgvtO2TPwPDGs83vUhQ13sQY0B9HtZnEvpuLrZoNkdHOU7eoVMufoAvzcJmRtWkYMhjC1Z7dtlIsc5N4PsydqXnO9YZhCmiycpmioHkpmi1voyoT7jZGojNRqjXP84gX2KCBR5C6sQnozNBxeRyXR8KJgAXOKR1icODE/FS3TXiRVWl5oqPFQXKAa4Odb4SGrsS2rYyaHGkWYWRy+kp8S488mKOLLQTfDCoTCoeLdU5OwwUb3G4jhpA8jO5oMS1eykNB7Tu2ehYiaSco+Xplm3+6cjcsi0o+gGgAw+H/rr7EcVXNK352NJSIlBOPnebGBmOvYbejxoaeDx7fSahX4ByCp4LcKZ3ov9XI82d9qjXnclcKiXigb47xdHgLLVfemnJWRBEEGPtL+2JTZ5ERZSZj3aPq5SiZk+2osNxFYCW+77s74itSzcii8R4CFEbl8UgEdAadxkAnIaz7zJ42o7ctjGT2uUR6A6lvWinjtOAMGvavvPi92mAEHx/3VA0OgVxJg0Be16EHecVNs98cl5K6kcS/4mE/l5TM8KSC1eUegOlg5WHTeTwylJd8INL/Wi7rKyffFTnnyt94APQ+SNL6ntc2JCE5tGz1BMVPAA0drSLR8QnUsA/ZTvykHbZ3/5+EdHZUboi3Tp6youn+QYBuus7DyOWt47S5XtjfbmB4+hqDVgNpLdviZ/yE+i0QxjWJyT6kEDNcT1/nsJfssnHooBRp+qm91Ws4hf8tToIh1Cu6SQ9o3VVWwz4S2cVfK78BwLtDdTwHH/mPy8D68HwZJm9ydZgDWuKxO3npv1m8kWj/l4OTxCz/5q8r/kgcn5+y3SKy42qcIlGKYm/Ws2xoB7BetSu8Ta2AiU53e/biQ1t5ARjtz4+GU8wktJmBUBRWw+20Rct4KZUj9l+9dwUMEU+Me5m7r6ZBOkPutBpPpWm+EhsxAkW0lnQgXCm4TIlir9K4ajJTWH+kfaYI7Fn/23St9bPDPdpcdMgnm9QmzEjtT9VYAz6j/l+lie6bv0Kck2y9GBG4cabfKhHU8MAyS/cWDjCBj8E57H7QtUe0oTpTK69SoMdlGzkbhRXfw4WXnD4i4DZ9/Qtxwjk3JhDwAJw3TmFhlWgZ5V3UXzlGAhSHxrqid9LIrB7x/ypt6nUiUhOslfq6pGpcGxyc9jy5V8Ez0L6WPjN+1g0fjKGXhgeWgu5Y0b+9q0GFP3Xubyv2gX2tBOFSEat9gLAsdT/rIrBXQgPuKitMSv8Fnei6DYmpry9sLqyrkk9rDspsXiiHmkkOJzz6fzwsB8BASvdj9t6corO/+5GWCmNpxHDJ+AEDMSkIaMimyz5r/b8j734oqzD8AuRriRuovHTExmuB7JmI05U5nLzzUlN2r+TP2A90wzP7Yhwk/p47S6S/K4cOOZIx7J1uYqKz0J2EEa9BAaVOj1KeAzXsx249BXiZZB8ateuUZI6Pab/q2dH8r3KhMc+mac9rOE9rbDX/pYWhjB/YLMo44qgBA5KEWZbnqb5tFhR3OKga504DVwBlt3f+ZR6Smll2DzySV5rR/v4IJNEFpJppwd2yK+IRX2N6eEuGlzN0NEuHd+9rpcFRfMpfL0BqbvqvvMAemCA8DvFMPiG0vtxakfOiTYzSXCdejndv8vQ99T7tupGWDn7Sta+u4MKWLwjL4FVK73IuKiSk0vIwp3baO77EYSWFOhEltkxrmi0I3YMtxmGV1GnED5pTCUdHjbAeWXHiCRE6Uv0XuidaGuLi8pRg/b5ADKLe9PoRFQstOXgtOSzcafST8ngA4w0zQu3HmUz0o3kgcgumiLaw+SJ/uQiYjZMzUkgFQTpBj2mWUunmCymwjQpT+B+KoOWBx9yWEO6IVzXsEWxQ/tX5hi2mDbCze2Qy6M09fni1EFAt+4V5Wj5nDHOkoMT9XDWpJRyaGK5QcjqthdvCHq4z6ot2oeXvEAQT7GbjuGCy6qCWthKOMp15iWKcCEm8POdxtnJGKIgipzei9dkDQ5hVy9OMoXcRyL0cyph5U1SeTwiMWcFjWe5Vxw2hO6v7XKDGJ071SFiw1ajJBy0Cva7+ni/GG41tWs7qXeQ/IAPYwxuJEZBCKI+3tRABHFsiZ68Fs1IJM+sA6kmREah4NS4GYMxTc4WDcIDj2Ii5jxVPa9HBqABgq2/m6DF9tmm4fDOpTCZUK5pjibjfOcP/QTq4VxPqSBlQrd/hzPDkFQ45lxZFh9WurCG5HR72zLxQ2pPMMAEFQfAHVB7yHvWKU1ZyC1qBqzP5adegnYCGXOQOWb6xlLlUVDxpbpUhbYZ8+UmD/IS/PiNWVp6kSSz8X5BjqqlhaFKhm4kQtY/2IJtS6hPH+/CMB9NE1z7KTc+7/CgQgKifoxmBZt7DBUAXxgJDgFCvozscol6E9JbHuGumvlcfQXnZDe5b8wH7P2Uq/g44fGF1kajwqmhWkBGLgBQAG/fTliIN/7OB5GulYbOfPnbRpDIVm74jD/lEmHAhYZRA0zELVnvervWjY0VhQOjnrknNiQaz3+y/dV0PR+5kxFA2W+WT/pDGT+RrV5RtEkj9HLNp00CuMW7hJ+nraRMAokX6FS/cDrJc8fgvnzSB4GLTyAHkqmkcpV7ZyVV7Ef1pceCJc5iElsF10Fqgxlbg2fSHDr58mZiWq8hUt2I8Mzn77xaQziA/DkLnvcNwNcG+dXegElYfOAPQDxjl9Wf3jxSG1zPxyqSY1PYrD7jf9GTyB9maR2Dr9FXb8/BLCKkWGqMVFc1PnlgPRd2cbOeVoTlKC9DHJxQptmmB/tRHDc9odJF/G5b66DBnRzwma6DOsekeBHApuiPWjT0AxvmsjhectcdRUsRt5/9u8EQy/dqQHO8pF6oehQtUQHy0jOcidDsab641/+VoQUpV0XmaHh8SsuhUugufF8499NFsqZEBhIg+wCA8g/xQ2u+MsnYN3jAI35S4G6FKAcRfuZCi192C6m6OEy+ST2XdMDJrttnqLFHzmU6uIuxu4jGV/mSDj8p9tboBGjSBUZgT4x605dPbeM2b9n6SUhGEzyqY3i7VMzec8V1WGAp6gRBWqApCf3Af6Ujv5I0m4vVLsc7MyU8NHOVcyNykAskcXBw6LiERmAf5qw/bhEfI3N+znDLwJibJQpSrMz2IzGP2Ts2A3PLSifEnx7TZZsTYpu/SIDqpJoNJjtLOmn3OmR94x/um6LSspp3aSr67+R3kC6WVAJyk/WLld+GPpYyy8rTX8rXHLwd0qreBP7UnEWalHtkDlgVI14T18gYyEsfqHj+kH0Awu/PTN1abeRx5UzkHuOSiEZtfWZJcL+EpPB+s7Ebt/6y5J2yEnpYBdOoRJ4Sy9oYj0BXWeUisdfKBHZhSK0bJP671WKUz7dmQqxb1Uj2GkntkNP/nIqhjngmabyyUWi4tiv8y6UTz7TLHkLDWkP8Pl6jln8hHitHMpX0vaxTejlBNCHHV9CPKmv5IY//mEpCui8loEQXLnEY1KYU0K6wDX3S9hJY7vfuy4KZeDkAJdWlGYFNBLg4lM6A4rVlpqK5glf88J+0Mf0CpxTUoRW9Whh+tF2i7dgiecUESkR8jxOd2nv02PZsWxW+pypxhRR9gVJS54VrBBsOvS537+u3xUiQtH1PPcrfRnJXlFfjtLKOCzTK0XvKfauK+08Sx0e0IgQc8w5QrkNDbbgXlKHNQrHGZdIQyeFtjG3mtIA0v8E4htHQZj5m1HPQ6FDUtiCKti+xcMl0xfLMjG1yb1AhdDTdyG8FBO3kq1bnwIk+bwOdZSl14fJSmqNySBGlWqZtXuVswj1vnZuxCmDwGuFN+ZptOGJiQo0qfFkKp4TG19zPq1dp9asgKUE6oXcIZFxcDWKWP+s5sTPw09Wsu1eeuPXsuoJmtSVFP7WV/aj38lF4zBSYF0er+VFjrGCKe170WW0AqLwYaKmS0KBUaJxLPZuPP7gJOfDe7kQpK4qEuRIxwfO3yDLszWHv5SEwgF/F0mCKRsl/YGG6GkV2WAqbrqNathM1qZqWUVndjFCn2JFckNaPNK6wINX4fGU1bbW7YX0aeO/mGwKOIJoVjA7ozvtU6/cRi7/zJz6ZCcIMtQVbyuPPgdJbMP9pXjBD12iqYUvOmQ3wRKyzMQpFjP6k97NsVuyeZUgtA/4rChEvi5w4ZFrwMLVW2CIv3WRx/5mG+POJi7SaW0/LBznJhr7xRR0ZFoLNQqex2KWimkuErVlOl+LYT5mk2lFHWgiWUUuMF4TF7JrdaMYJhola5eBBr6Bsa/wp1BEEqtfAullddJLyW32fdE09T/ZUdZrxiFfxPk1cxUAKlAI7ERWgjm28ouytCtGGxXdrYxaoWoVL5qwESNzhk8PQU2euhZwDQ7xRvi9A42QA1qKsEue9GBOuZz4sqWOOYPijFJz3Fw7+RK2g6sM1kddBzU5Z2d9V/lVZMA1leIoZ7MayiQvw8D3ACIfrwKOxEhtJFoWQTP7nburiXoKbhIRyfJDPfOdarLVhOWfUPcvIHpsEn67UpWGyLtjAoRhKkJ1KQ6q93uqiony7LaRHzW26AJlQmJS3UDtsgrpXVQ+AZM6AW7bM8ix+MNi7hI1cRCFHqyzW+jJ4A9WlzUeAn7TPot/SO3CDztMLR3G1zAzgABRfNLS8INGyVWbOD0/L0F0vdPYI6jGn/G4/kQhjAYQwjd9yKKMT4jtGefoEIll+oUf//cbYZpVYRU8tWrKjOvJQtbb1O0XhgRROoqr0fGUbCYQhejOSoHQRhXXt02nky0fF9jExmEmzq2zEe9YOc+qGzEKSWhHrjN1PK/0GHi/RtXEgBcWZiqeOPKDb1RuaMq8Q2m48ibkwUKP3BUDYUkE1G+Zps4ix9A71Xb+TLJ570JSsVPcnUf6F3GexBS9M2R4HBkImY9xO8I1TINTz2QaHrV6iQDderODNcGfJEU+SFfw/6XTM6meBCPlWPhdeb/AINT0jRnZx3dRDSY1IxdwJr4Fe5g7RiA0Z6wbdTqECC9fBo19AvIJrMsxqkP1J6nN9txk3cSVoAmPaHygit/VwV44OL2CaKCkUz473+/TRwsRHswb121mioV36oLmqVvk0BtXAo/tbWJoAQXmklrq76tnDkEny1nDrknVGaVzEljAs6hLRI2BlQLRvLEqR8egEbbKquWAImCR/IEdDrGT9jCmBFQ/8TuOKOhPcZubazeDxs8RRwc1E0mMPxIK7r71qs754AFRFhbXP66X5hHpGXsyhiOwvTbt8JJUd5cLw+UlgsJfvZTfbave3ieiYFL55GvuceJPNUYJGdjy4HtVSgxDFK0Dqq0HnR8GbTxhMsqFIOog6+kIVcYGxqR0La7UeTyCFDj9ABdj8iCdZDCHRNsYSkqwUqMyTjr7dz0zf4N5ieHlD1dbCBT2/8aXoeg6lykd+1Kju5urqIwh3cXjWmsQ1i126RW7oqXWxONpPVQPpyAKQoTEZIeYNVoHgKU4Tin1HFQaodyKlZsF2Cg8m4jmm+eeHvq2RskDVUXYIJCZhscFp6pL3L17jt2RJHP69uQoMh/EFJddVgxucsGSVyxaO8qs3vbBL6MMHfwKDcKSvtsJJxlDHcxzvv6fx7g1LFN1Akbi4FP96TRXZNEGmPQqyJQYkHSqHnzM7O0xr2bwc/4U5ccqdOYhESVpEv3+l+S0UbHNz+Xuq+DvRXvQMU6IvHME9R/1KeX+JxhNIvM4JwSNBS+NMKlHj72LEbZLveSyOsj+voMJhatq+Xld4xvmf4xb2uMhyGwFzEtrnO9a3O6eWtdr5hZkt4zAhDQo2ogoP1ZsRnvMFsXY9M++QkrfWMn8Pw609xPliY41/e8l5NQ4w/ShVdemoBxIvR7sCBTIuA4xSk0KW6EcFZYRj0d7L2BPsJutYRPxp18mN4ujoVYBE9Ge5peZMkKYL7EbE7PbZFQ061CCfw7yPUmulynjkx/t0aEYu4wTZUe0G3L1eeJjFDCb7VgVJTF9W96NH5HcgSMbWWKZYm8lFEGfkL/6v1uPVV8EXyLLeoN56rzVJNu2UmbHEKOPtEsDe2hKlYqNN4w1HiuV4kRHZOXpUC6YjYjxOCx5zwdQ4ZuYSrSnIWvPnOUV8ryFwFgD3kVYsXoUdrXMGn7lXw1vGm+ip0/jhge2qXN421Ya5sHVwJPNvCDuZwkQA4DTJK18xbVcxz478Sz9nwz5/YdrTt9R0unDClcKsBUycFVXRnn0dbRTUOaM3M1XiOB/mSERB0Kgp1c2ns2Y3rF+HYyAlZdC4lpIaWticgzk7mvqFOIvY7/yFI3HKLf7Dt0b3A/iV35pmzgVFEoXG1YlEGZ1Z6GDDeHQfdF2ifvhfjn3SfVkYkYdZwdR8PcQvp1A+coQGJNucoy3dxbQtp4t7VtaDYdbNi1w7W6G4Xosszt1bWuQakTJroFEWJRsi3RknOPTQFCotQKtCyEqa2KREQBAdIuR4OTGghEvJfl8+b3bfAezjEYuhjwFAi1AmWLCjGGtmLo0ZsLFM2nWwnKfQjvqCDPG4GCaMJsr8S7GsKyn6yQ2qRawDd/XCBE4VUqZrxp9ouc2DDD/C27KS57aKuiin5XSDQ/5sHePJTCgau8sEGaHowezwucJe5Bjzia48nKvhJwLGCLSCVYGKAu5V+2nlv5bYzlbK13WYEtvptDhZV23xnj4x8jN/hZmdgnJjYiBPtW8qL0F9T74szZ6sN2lfWnI+cxGE8uW3iTKntP9azR1hiiDdIa1eIq0BAzf+9wgSz4dPJztnFERJ3TLKHIDivJpA1lu7gn4X4CBKHu1d2t8g2W/a4l9qCx92XwEBJfWK9+7StYTLMUpJs1uiljlpHewBJkoRek/wWnLlsSgMUjeW3C/zhlFKG0tudiD9aJq1mGLUOrcVvi34qCn5MRmzKHOqJAcwBkVQab9KCHRCTbdiHkBAyR3pEPh9yg8JKeJtpyEvUymv2i2JUUbHSG8e8+DpXpKe6/9Ik7Ls+GpXtv0jN88u0z6lGUdjqRGC9y+7BuD60evz4B1VhWxMBA+RqRDxDDh9DD41MAvBJJnT964346pswwoEY/UUeUXuAreAOHBt69Zv9rHyWYxo5p7K7TQdC/0LpGeNl01AViPsikh/lNcP0ELx2mbiPlZI8/x6dSZPAUa7nIxQCUX5w7MpOkAcHFWPwJ4vZQ0lQ+zNMY2AphoKB6s2R0FsrLmJ9aPZvC3SiwHsDbnoUsNfNz6bWUhIArdV1trg90sQGDtfFPLmB/yYWy5OLjB/Kobi9T0SvNKS1G3y2baEcqYmQz7i+ZVSQPb0y10u7KPUpOYWLJp+Cd9qnodpsJfgupak5/EC9ifipw26Rzb8cybCD+E4gQ/7DpJmksK80VXEObHXlI+7BTZ40q2TgijPs62h0ndLh7xXBPDGjTfNuFmA4FwYm1dwDX4AQ+YV615o8gbrPx2o+z2qoN1nzdM8T+uvfl3iiPePUSiW9YABUQuItkXGwuuFAgCoTbAlN3P7gentjYGlTvyrdgNSJwqzeFQ1CIFrqklW2LjhpTfOVTWwqdPeZmzhm/lvXo3BlarU6K06XxNz0dmQm6diLtDZkdbyF8zSnATo5Fifijo4+swaMVn6djY68ZwZYSEh+LyOM0b8UIQkYi0SE1ZAEm7Juj8MpnBjRLAfuylmtwD6X1bxm8HbbzLTvX7g341XWw/t4P1pTGg8mZAojbzQD3W0UKzzRuPJBj1HxatEGowjYwnSi3JAKvaq4F3hrbt8x7kdPIw4QCW+HgkPLHLYtUTqRDGlrxxW+rxEAVEAhx/uZ1RWkXnkGjiT4oTA6Vb4m/H8oWoHKEeOPs1Ym12Gziu/j5a2+892l9cFOmxhAF4IoHu2R5XNUUhmX/ipfzv/dJB8GylWtXxodHf8VZi9EmN6Vi2ULppe4rlfuDaIepCXbwXszv9PXAQXtUpokHj3QtwRPV1Lf2us1sHBOANCj8uvluJdUZL+NSW0fO+CukibJeRrglpmFJpRN3iW4NNBXWNLXdp0Ss7gBOXJca8HYghqLFGE3izbwa1B4Tvt6OWTY77aR+Bipo+n+N1jFtOiYHoO/iPAGWSawNYL0oyeRKlkqmFo0T5UJwLhldRViLFtUOAc5mOiGLuUgXr1hsLW5i4Fme+AM+6AgVC78grNbYqBCKiCzh5G/3ywwZka2+YMklCv8XgrDCvG56BO7WcC7G4JYh0k88Ato6smx7bCi9AFRLxjFKg/lO38sae3Gh6hzU1ZATwqISbMV/vscTYPXnmGBedxteuHmFK5gHAq/K/Ij2+GsQEZOn+rzhLjDq1gry74J4XXw1dv9VOqDKkUy1YVEPP9353RCr8VZ+vWJXY/o/sTsIR87m1XSi4rr6hGa5+9BPqyUc9NLxlUDMlq0lrY+OSbO3TK1VlS6luG9nIcjEhFvn+jEMjBkWxyti/EhTSTVb4RpsSVjaD+9NVTa3gAydT+WHt96jzNuUhvzarZdcCacrGV+1XHlssHzaZmRGw3d1VEsC/E3tca0Iqfhu+xcVm1uJJqZIEMxs34v6Bv6e96fYF5e8y718njfTxIrvGaw+Frcr3UY+VEihgd/cyKEP/V1O4bnPuL3pD/WGAcTgX47NjCXolIEFi9d++8VxaZvKIjAy1W/qL/mcOeP9KE8IXOx93jDFfbWOZ7nifvV0ywTw1xPqR4BZd9JW3QqmTkeNRwgFPon5+9pKT5ewmdfWzTbGMMr8o+saiB23iC1Y8dPkDQwCawOGYgOWePhXH7TnFP+E5dZVTksiVpiwxAaVFK6J+j5kvA5RpKSlKTepOflI7ggK4E48GGmM8h+QQIwyDbL8ldg2Y+X+kAcMeqU4C15EQ817wQoGeWp+vOsMscmc9g5fwvJ3f1i8vjnJcQIBUXIhEv3pelPaNkzMd/AFXctdexO7UcExAj85jhwvecEdIz9EjSw6O/cUginbF5+nvhqJabzV3GgKkQnryHF0Ecy66sfpTzPyTw5nDuQxW4TQ8/vEnKXJjY6k6VQyvj65Xv3cxltJFaq++Ph4Sx+FCgku2QlnVorGXwxTTtlqwyL1rt+Tz7uzfumhnRO/WCHVQdpvyiMNE2T0yigpxPgs/hS5K4/lw37U9z+mX4MTyVJRJasvAg8rY9DfWHUST1fHACfD4eby9xYz4gJWZrTLODaa+wptMTAE5u/brALCf0I8g9recUJEDn6C2B5FpYji3UzB6pDoacHpOWxGeqDvuBZvsdVB5qpUKAflCybAiIaBGOWBSfxdGLu4iM9yyDBnGLn59xsgY0IizkMyj+fZcGQPjPWPd8rAtaxboTWfPAuui/1nJFPcn0cC4OoisatkfHMibeyAjjILEZ+BChRqN0JhJKYq+++7Qgcvi8HmNjr7QbLiE7jIVv8TSxf5KmVqKvQn1s= \ No newline at end of file diff --git a/py/耐视点播.py b/py/耐视点播.py index f0ba47b..07bb20e 100644 --- a/py/耐视点播.py +++ b/py/耐视点播.py @@ -36,6 +36,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes} diff --git a/py/腾讯视频.py b/py/腾讯视频.py index ec82668..13f98f9 100644 --- a/py/腾讯视频.py +++ b/py/腾讯视频.py @@ -29,6 +29,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _headers(self): return dict(self.header) diff --git a/py/至臻.py b/py/至臻.py index 51678d7..82e6f78 100644 --- a/py/至臻.py +++ b/py/至臻.py @@ -58,6 +58,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/茶杯狐.py b/py/茶杯狐.py index 8514b50..6ad73bb 100644 --- a/py/茶杯狐.py +++ b/py/茶杯狐.py @@ -35,6 +35,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _build_url(self, path): return urljoin(self.host + "/", str(path or "").strip()) diff --git a/py/蜡笔.py b/py/蜡笔.py index 4c1b4a9..6b818b8 100644 --- a/py/蜡笔.py +++ b/py/蜡笔.py @@ -58,6 +58,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/袋鼠影视.py b/py/袋鼠影视.py index 9ff6a85..c9137ee 100644 --- a/py/袋鼠影视.py +++ b/py/袋鼠影视.py @@ -177,6 +177,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): result = {"class": self.classes} if filter: diff --git a/py/金牌.py b/py/金牌.py index e7834df..dbfd0b2 100644 --- a/py/金牌.py +++ b/py/金牌.py @@ -44,6 +44,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeVideoContent(self): return {"list": []} diff --git a/py/闪电.py b/py/闪电.py index 09c3e78..a04c0eb 100644 --- a/py/闪电.py +++ b/py/闪电.py @@ -56,6 +56,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.categories} diff --git a/py/飞快TV.py b/py/飞快TV.py index 7f68790..c426386 100644 --- a/py/飞快TV.py +++ b/py/飞快TV.py @@ -37,6 +37,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeContent(self, filter): return {"class": self.classes} diff --git a/py/魔方APP.py b/py/魔方APP.py index 0eae66d..2401300 100644 --- a/py/魔方APP.py +++ b/py/魔方APP.py @@ -67,6 +67,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def homeVideoContent(self): return {"list": []} diff --git a/py/麦田影院.py b/py/麦田影院.py index b460e01..4740c62 100644 --- a/py/麦田影院.py +++ b/py/麦田影院.py @@ -114,16 +114,35 @@ class Spider(BaseSpider): def _extract_detail_content(self, root): candidates = [ - "//*[contains(@class,'vod_content')][1]//text()", - "//*[contains(@class,'detail-content')][1]//text()", - "//*[contains(@class,'switch-box')][1]//text()", + "//*[@id='height_limit'][1]", + "//*[contains(@class,'vod_content')][1]", + "//*[contains(@class,'detail-content')][1]", + "//*[contains(@class,'switch-box')]//*[contains(@class,'text') or contains(@class,'desc') or contains(@class,'content')][1]", ] for xpath in candidates: - text = self._clean_text("".join(root.xpath(xpath))) + nodes = root.xpath(xpath) + if not nodes: + continue + text = self._clean_text("".join(nodes[0].xpath(".//text()"))) if text: return text return "" + def _parse_meta_by_labels(self, root, labels): + if root is None: + return "" + values = labels if isinstance(labels, (list, tuple)) else [labels] + patterns = [str(item or "").rstrip("::").strip() for item in values if str(item or "").strip()] + for node in root.xpath("//li|//p|//span|//div"): + text = self._clean_text("".join(node.xpath(".//text()"))) + if not text: + continue + for label in patterns: + matched = re.match(rf"^{re.escape(label)}\s*[::]?\s*(.*)$", text) + if matched: + return self._clean_text(matched.group(1)) + return "" + def _parse_play_groups(self, root): names = [] for node in root.xpath("//a[contains(@class,'swiper-slide')]"): @@ -155,8 +174,16 @@ class Spider(BaseSpider): "vod_id": vod_id, "vod_name": self._clean_text("".join(root.xpath("//h1[1]//text()"))), "vod_pic": self._build_url(self._extract_detail_pic(root)), + "type_name": self._parse_meta_by_labels(root, ["类型"]), + "vod_year": self._parse_meta_by_labels(root, ["年份", "年代"]), + "vod_area": self._parse_meta_by_labels(root, ["地区"]), + "vod_lang": self._parse_meta_by_labels(root, ["语言"]), + "vod_douban_score": self._parse_meta_by_labels(root, ["豆瓣", "评分"]), + "vod_douban_id": self._parse_meta_by_labels(root, ["豆瓣ID"]), + "vod_director": self._parse_meta_by_labels(root, ["导演"]), + "vod_actor": self._parse_meta_by_labels(root, ["主演", "演员"]), "vod_content": self._extract_detail_content(root), - "vod_remarks": "", + "vod_remarks": self._parse_meta_by_labels(root, ["状态", "备注", "更新"]), "vod_play_from": "$$$".join(item[0] for item in groups), "vod_play_url": "$$$".join(item[1] for item in groups), } diff --git a/py/黑猫APP.py b/py/黑猫APP.py index f38d35d..a294a27 100644 --- a/py/黑猫APP.py +++ b/py/黑猫APP.py @@ -46,6 +46,9 @@ class Spider(BaseSpider): def getName(self): return self.name + def danmaku(self): + return True + def _headers(self): return { "User-Agent": self.user_agent,