From dbfd332ca579a830cdb2186dae324964c3e23c8c Mon Sep 17 00:00:00 2001 From: shijuleon Date: Tue, 25 Dec 2018 21:31:01 +0530 Subject: [PATCH 01/95] HTTP requests error handling, adding cmdline params --- sherlock.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/sherlock.py b/sherlock.py index 79d8abec..6aedb379 100644 --- a/sherlock.py +++ b/sherlock.py @@ -1,12 +1,27 @@ import requests import json import os +import sys def write_to_file(url, fname): with open(fname, "a") as f: f.write(url+"\n") - +def make_request(url, headers, error_type): + try: + r = requests.get(url, headers=headers) + if r.status_code: + return r, error_type + except requests.exceptions.HTTPError as errh: + print ("HTTP Error: ", errh) + except requests.exceptions.ConnectionError as errc: + print ("Error Connecting: ", errc) + except requests.exceptions.Timeout as errt: + print ("Timeout Error: ", errt) + except requests.exceptions.RequestException as err: + print ("Unknown error: ", err) + return None, "" + def main(): # Not sure why, but the banner messes up if i put into one print function print(" .\"\"\"-.") @@ -19,7 +34,11 @@ def main(): print("\033[37;1m .'`-._ `.\ | J /") print("\033[37;1m / `--.| \__/\033[0m") - username = input("\033[92;1m[\033[37;1m?\033[92;1m]\033[92;1m Input Username: \033[0m") + if len(sys.argv) > 1: + username = sys.argv[1] + else: + username = input("\033[92;1m[\033[37;1m?\033[92;1m]\033[92;1m Input Username: \033[0m") + print() fname = username+".txt" @@ -28,7 +47,6 @@ def main(): os.remove(fname) print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Removing previous file:\033[1;37m {}\033[0m".format(fname)) - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: \033[0m".format(username)) raw = open("data.json", "r") data = json.load(raw) @@ -43,10 +61,9 @@ def main(): for social_network in data: url = data.get(social_network).get("url").format(username) error_type = data.get(social_network).get("errorType") - - r = requests.get(url, headers=headers) - + r, error_type = make_request(url=url, headers=headers, error_type=error_type) + if error_type == "message": error = data.get(social_network).get("errorMsg") @@ -75,6 +92,9 @@ def main(): else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + elif error_type == "": + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Error!".format(social_network)) + print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) main() \ No newline at end of file From 8abeaac01776c88e16d1f4bae44dee96e1fcc56c Mon Sep 17 00:00:00 2001 From: Tejasvi Nareddy Date: Tue, 25 Dec 2018 13:14:31 -0500 Subject: [PATCH 02/95] Add gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..077813ad --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# User files +*.txt + +# Virtual Environment +venv/ \ No newline at end of file From 8ed7a39b8624e2e30c71bf5069020de1b0062e40 Mon Sep 17 00:00:00 2001 From: Tejasvi Nareddy Date: Tue, 25 Dec 2018 13:14:39 -0500 Subject: [PATCH 03/95] Reformat file --- sherlock.py | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/sherlock.py b/sherlock.py index 79d8abec..482dce53 100644 --- a/sherlock.py +++ b/sherlock.py @@ -2,9 +2,10 @@ import requests import json import os + def write_to_file(url, fname): - with open(fname, "a") as f: - f.write(url+"\n") + with open(fname, "a") as f: + f.write(url + "\n") def main(): @@ -22,14 +23,17 @@ def main(): username = input("\033[92;1m[\033[37;1m?\033[92;1m]\033[92;1m Input Username: \033[0m") print() - fname = username+".txt" + fname = username + ".txt" if os.path.isfile(fname): - os.remove(fname) - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Removing previous file:\033[1;37m {}\033[0m".format(fname)) - + os.remove(fname) + print( + "\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Removing previous file:\033[1;37m {}\033[0m".format(fname)) - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: \033[0m".format(username)) + print( + "\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: " + "\033[0m".format( + username)) raw = open("data.json", "r") data = json.load(raw) @@ -43,38 +47,38 @@ def main(): for social_network in data: url = data.get(social_network).get("url").format(username) error_type = data.get(social_network).get("errorType") - r = requests.get(url, headers=headers) - + if error_type == "message": error = data.get(social_network).get("errorMsg") - + if not error in r.text: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) - write_to_file(url, fname) - + write_to_file(url, fname) + else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) - + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + elif error_type == "status_code": - + if not r.status_code == 404: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) - + else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) elif error_type == "response_url": error = data.get(social_network).get("errorMsgInUrl") - + if not error in r.url: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + + print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username + ".txt")) + - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) - -main() \ No newline at end of file +main() From 971a88dd1ecc0b18aa550dbbf7533a81188a57ab Mon Sep 17 00:00:00 2001 From: Tejasvi Nareddy Date: Tue, 25 Dec 2018 14:19:21 -0500 Subject: [PATCH 04/95] Asynchronous requests Improves performance greatly --- requirements.txt | 1 + sherlock.py | 40 ++++++++++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index f2293605..7ab0f407 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ requests +requests_futures \ No newline at end of file diff --git a/sherlock.py b/sherlock.py index 482dce53..44ac0b30 100644 --- a/sherlock.py +++ b/sherlock.py @@ -1,7 +1,14 @@ -import requests +from concurrent.futures import ThreadPoolExecutor +from requests_futures.sessions import FuturesSession import json import os +raw = open("data.json", "r") +data = json.load(raw) + +# Allow 1 thread for each external service, so `len(data)` threads total +session = FuturesSession(executor=ThreadPoolExecutor(max_workers=len(data))) + def write_to_file(url, fname): with open(fname, "a") as f: @@ -34,8 +41,6 @@ def main(): "\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: " "\033[0m".format( username)) - raw = open("data.json", "r") - data = json.load(raw) # User agent is needed because some sites does not # return the correct information because it thinks that @@ -44,16 +49,31 @@ def main(): 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0' } + # Create futures for all requests for social_network in data: - url = data.get(social_network).get("url").format(username) - error_type = data.get(social_network).get("errorType") + url = data[social_network]['url'].format(username) + + # This future starts running the request in a new thread, doesn't block the main thread + future = session.get(url=url, headers=headers) + + # Store future in data for access later + data[social_network]['request'] = future + + # Print results + for social_network in data: + + url = data[social_network]['url'].format(username) + error_type = data[social_network]['errorType'] - r = requests.get(url, headers=headers) + # Retrieve future and ensure it has finished + future = data[social_network]['request'] + response = future.result() + # Print result if error_type == "message": - error = data.get(social_network).get("errorMsg") + error = data[social_network]['errorMsg'] - if not error in r.text: + if not error in response.text: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) @@ -62,7 +82,7 @@ def main(): elif error_type == "status_code": - if not r.status_code == 404: + if not response.status_code == 404: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) @@ -72,7 +92,7 @@ def main(): elif error_type == "response_url": error = data.get(social_network).get("errorMsgInUrl") - if not error in r.url: + if not error in response.url: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) else: From c4c31530fff45073b31db6aa3eab34e44e92061a Mon Sep 17 00:00:00 2001 From: Tejasvi Nareddy Date: Tue, 25 Dec 2018 14:29:41 -0500 Subject: [PATCH 05/95] Remove requests from requirements --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7ab0f407..396d4a5d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -requests requests_futures \ No newline at end of file From 10582b629ec520611b633afa005a47e82340b27c Mon Sep 17 00:00:00 2001 From: Simeon Visser Date: Tue, 25 Dec 2018 20:17:39 +0000 Subject: [PATCH 06/95] Ensure raw file is automatically closed --- sherlock.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 79d8abec..4f6796a6 100644 --- a/sherlock.py +++ b/sherlock.py @@ -30,8 +30,8 @@ def main(): print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: \033[0m".format(username)) - raw = open("data.json", "r") - data = json.load(raw) + with open("data.json", "r") as raw: + data = json.load(raw) # User agent is needed because some sites does not # return the correct information because it thinks that From 7f65018746566c0067f96b18661d327cb786d2fd Mon Sep 17 00:00:00 2001 From: shijuleon Date: Wed, 26 Dec 2018 13:56:03 +0530 Subject: [PATCH 07/95] Add argparse. Styling in error messages --- sherlock.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/sherlock.py b/sherlock.py index 6aedb379..8a9eae07 100644 --- a/sherlock.py +++ b/sherlock.py @@ -2,6 +2,7 @@ import requests import json import os import sys +import argparse def write_to_file(url, fname): with open(fname, "a") as f: @@ -13,16 +14,16 @@ def make_request(url, headers, error_type): if r.status_code: return r, error_type except requests.exceptions.HTTPError as errh: - print ("HTTP Error: ", errh) + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", errh) except requests.exceptions.ConnectionError as errc: - print ("Error Connecting: ", errc) + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", errc) except requests.exceptions.Timeout as errt: - print ("Timeout Error: ", errt) + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", errt) except requests.exceptions.RequestException as err: - print ("Unknown error: ", err) + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", err) return None, "" -def main(): +def sherlock(username): # Not sure why, but the banner messes up if i put into one print function print(" .\"\"\"-.") print(" / \\") @@ -96,5 +97,26 @@ def main(): print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Error!".format(social_network)) print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) - -main() \ No newline at end of file + + +class ArgumentParserError(Exception): pass + +class ArgumentParser(argparse.ArgumentParser): + def error(self, message): + print(" .\"\"\"-.") + print(" / \\") + print("\033[37;1m ____ _ _ _ | _..--'-.") + print("\033[37;1m/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"`") + print("\033[37;1m\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\") + print("\033[37;1m ___) | | | | __/ | | | (_) | (__| < '-`) =|-.") + print("\033[37;1m|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-.") + print("\033[37;1m .'`-._ `.\ | J /") + print("\033[37;1m / `--.| \__/\033[0m") + self.print_usage(sys.stderr) + +parser = ArgumentParser() +parser.add_argument('username', help='check services with given username') + +args = parser.parse_args() +if args.username: + sherlock(args.username) \ No newline at end of file From ff2f42cc38989444e237f8400273ae4790717e8f Mon Sep 17 00:00:00 2001 From: shijuleon Date: Wed, 26 Dec 2018 15:40:09 +0530 Subject: [PATCH 08/95] Better error printing. Debug mode --- sherlock.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/sherlock.py b/sherlock.py index 8a9eae07..2dbe6415 100644 --- a/sherlock.py +++ b/sherlock.py @@ -4,23 +4,37 @@ import os import sys import argparse +DEBUG = False + def write_to_file(url, fname): with open(fname, "a") as f: f.write(url+"\n") -def make_request(url, headers, error_type): +def make_request(url, headers, error_type, social_network): try: r = requests.get(url, headers=headers) if r.status_code: return r, error_type except requests.exceptions.HTTPError as errh: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", errh) + if DEBUG: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", errh) + else: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", social_network) except requests.exceptions.ConnectionError as errc: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", errc) + if DEBUG: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", errc) + else: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", social_network) except requests.exceptions.Timeout as errt: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", errt) + if DEBUG: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", errt) + else: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", social_network) except requests.exceptions.RequestException as err: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", err) + if DEBUG: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", err) + else: + print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", social_network) return None, "" def sherlock(username): @@ -35,11 +49,6 @@ def sherlock(username): print("\033[37;1m .'`-._ `.\ | J /") print("\033[37;1m / `--.| \__/\033[0m") - if len(sys.argv) > 1: - username = sys.argv[1] - else: - username = input("\033[92;1m[\033[37;1m?\033[92;1m]\033[92;1m Input Username: \033[0m") - print() fname = username+".txt" @@ -63,7 +72,7 @@ def sherlock(username): url = data.get(social_network).get("url").format(username) error_type = data.get(social_network).get("errorType") - r, error_type = make_request(url=url, headers=headers, error_type=error_type) + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network) if error_type == "message": error = data.get(social_network).get("errorMsg") @@ -116,7 +125,10 @@ class ArgumentParser(argparse.ArgumentParser): parser = ArgumentParser() parser.add_argument('username', help='check services with given username') +parser.add_argument("-d", '--debug', help="enable debug mode", action="store_true") args = parser.parse_args() +if args.debug: + DEBUG = True if args.username: sherlock(args.username) \ No newline at end of file From 69480d82fbeda959935eb246df00b657ba400091 Mon Sep 17 00:00:00 2001 From: shijuleon Date: Wed, 26 Dec 2018 21:01:53 +0530 Subject: [PATCH 09/95] Removed banner from help --- sherlock.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/sherlock.py b/sherlock.py index 15770213..59271dc4 100644 --- a/sherlock.py +++ b/sherlock.py @@ -114,22 +114,7 @@ def sherlock(username): print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) -class ArgumentParserError(Exception): pass - -class ArgumentParser(argparse.ArgumentParser): - def error(self, message): - print(" .\"\"\"-.") - print(" / \\") - print("\033[37;1m ____ _ _ _ | _..--'-.") - print("\033[37;1m/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"`") - print("\033[37;1m\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\") - print("\033[37;1m ___) | | | | __/ | | | (_) | (__| < '-`) =|-.") - print("\033[37;1m|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-.") - print("\033[37;1m .'`-._ `.\ | J /") - print("\033[37;1m / `--.| \__/\033[0m") - self.print_usage(sys.stderr) - -parser = ArgumentParser() +parser = argparse.ArgumentParser() parser.add_argument('username', help='check services with given username') parser.add_argument("-d", '--debug', help="enable debug mode", action="store_true") From dd8d36741db50f2a504e9f4948e1c1b4ab2f8ec7 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Wed, 26 Dec 2018 11:13:18 -0600 Subject: [PATCH 10/95] Fix bug that incorrectly said that all user names were not supported for any site that would not allow a dot in the user name. The check for the dot should only happen if the user has a dot in the name. --- sherlock.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 59271dc4..08546ad9 100644 --- a/sherlock.py +++ b/sherlock.py @@ -75,8 +75,8 @@ def sherlock(username): error_type = data.get(social_network).get("errorType") cant_have_period = data.get(social_network).get("noPeriod") - if cant_have_period == "True": - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + if ("." in username) and (cant_have_period == "True"): + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m User Name Not Allowed!".format(social_network)) continue r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network) From 804c5d3fc88447071c271e1aaf658372337097e8 Mon Sep 17 00:00:00 2001 From: shijuleon Date: Wed, 26 Dec 2018 22:55:28 +0530 Subject: [PATCH 11/95] Refactor error printing code --- sherlock.py | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/sherlock.py b/sherlock.py index 59271dc4..877b56c1 100644 --- a/sherlock.py +++ b/sherlock.py @@ -12,31 +12,25 @@ def write_to_file(url, fname): with open(fname, "a") as f: f.write(url+"\n") +def print_error(err, errstr, var, debug = False): + if debug: + print (f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err}") + else: + print (f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") + def make_request(url, headers, error_type, social_network): try: r = requests.get(url, headers=headers) if r.status_code: return r, error_type except requests.exceptions.HTTPError as errh: - if DEBUG: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", errh) - else: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m HTTP Error:\033[93;1m", social_network) + print_error(errh, "HTTP Error:", social_network, DEBUG) except requests.exceptions.ConnectionError as errc: - if DEBUG: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", errc) - else: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Error Connecting:\033[93;1m", social_network) + print_error(errc, "Error Connecting:", social_network, DEBUG) except requests.exceptions.Timeout as errt: - if DEBUG: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", errt) - else: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Timeout Error:\033[93;1m", social_network) + print_error(errt, "Timeout Error:", social_network, DEBUG) except requests.exceptions.RequestException as err: - if DEBUG: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", err) - else: - print ("\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m Unknown error:\033[93;1m", social_network) + print_error(err, "Unknown error:", social_network, DEBUG) return None, "" def sherlock(username): @@ -114,12 +108,15 @@ def sherlock(username): print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) -parser = argparse.ArgumentParser() -parser.add_argument('username', help='check services with given username') -parser.add_argument("-d", '--debug', help="enable debug mode", action="store_true") +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('username', help='check services with given username') + parser.add_argument("-d", '--debug', help="enable debug mode", action="store_true") + + args = parser.parse_args() + + if args.debug: + DEBUG = True -args = parser.parse_args() -if args.debug: - DEBUG = True -if args.username: - sherlock(args.username) \ No newline at end of file + if args.username: + sherlock(args.username) \ No newline at end of file From cb62daa5575b7af33aa25e9c3a925f9a78e703e8 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Wed, 26 Dec 2018 19:13:32 +0100 Subject: [PATCH 12/95] added devRant --- data.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data.json b/data.json index 426f8c1f..e7c64c5e 100644 --- a/data.json +++ b/data.json @@ -351,5 +351,10 @@ "url": "https://www.pexels.com/@{}", "errorType": "message", "errorMsg": "Ouch, something went wrong!" + }, + "devRant": { + "url": "https://devrant.com/users/{}", + "errorType": "response_url", + "errorUrl": "https://devrant.com/" } } From 4067991b59a4cf74559689e4cdf7b135d8b1754c Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Wed, 26 Dec 2018 19:41:11 -0600 Subject: [PATCH 13/95] Replace noPeriod attribute in JSON file with a regexCheck attribute. If this does not exist in the JSON file, then there will be a default regular expression that will be used. By default, the allowed user name pattern requires that the first character is alphabetic, while the following characters are either alphanumeric or ".", "_", or "-". Also, specifically indicate that the user name is invalid in the feedback. --- data.json | 20 ++++++++++---------- sherlock.py | 14 ++++++++++---- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/data.json b/data.json index e7c64c5e..39a115f0 100644 --- a/data.json +++ b/data.json @@ -21,7 +21,7 @@ "Blogger": { "url": "https://{}.blogspot.com", "errorType": "status_code", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Google Plus": { "url": "https://plus.google.com/+{}", @@ -40,7 +40,7 @@ "GitHub": { "url": "https://www.github.com/{}", "errorType": "status_code", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$" }, "Steam": { "url": "https://steamcommunity.com/id/{}", @@ -67,7 +67,7 @@ "DeviantART": { "url": "https://{}.deviantart.com", "errorType": "status_code", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "VK": { "url": "https://vk.com/{}", @@ -165,13 +165,13 @@ "url": "https://www.kongregate.com/accounts/{}", "errorType": "message", "errorMsg": "Sorry, no account with that name was found.", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "LiveJournal": { "url": "https://{}.livejournal.com", "errorType": "message", "errorMsg": "Unknown Journal", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "VSCO": { "url": "https://vsco.co/{}", @@ -191,7 +191,7 @@ "url": "https://dribbble.com/{}", "errorType": "message", "errorMsg": "Whoops, that page is gone.", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Codecademy": { "url": "https://www.codecademy.com/{}", @@ -215,7 +215,7 @@ "Newgrounds": { "url": "https://{}.newgrounds.com", "errorType": "status_code", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Wattpad": { "url": "https://www.wattpad.com/user/{}", @@ -251,7 +251,7 @@ "url": "https://{}.contently.com/", "errorType": "message", "errorMsg": "We can't find that page!", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Houzz": { "url": "https://houzz.com/user/{}", @@ -306,7 +306,7 @@ "Slack": { "url": "https://{}.slack.com", "errorType": "status_code", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Trip": { "url": "https://www.trip.skyscanner.com/user/{}", @@ -341,7 +341,7 @@ "url": "https://{}.wordpress.com", "errorType": "response_url", "errorUrl": "wordpress.com/typo/?subdomain=", - "noPeriod": "True" + "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Unsplash": { "url": "https://unsplash.com/@{}", diff --git a/sherlock.py b/sherlock.py index 53b33add..e9e5894b 100644 --- a/sherlock.py +++ b/sherlock.py @@ -2,6 +2,7 @@ import requests import json import os import sys +import re import argparse DEBUG = False @@ -67,12 +68,17 @@ def sherlock(username): for social_network in data: url = data.get(social_network).get("url").format(username) error_type = data.get(social_network).get("errorType") - cant_have_period = data.get(social_network).get("noPeriod") + regex_check = data.get(social_network).get("regexCheck") - if ("." in username) and (cant_have_period == "True"): - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m User Name Not Allowed!".format(social_network)) + if regex_check is None: + #Use default regular expression check for user names. + regex_check = "^[a-zA-Z][a-zA-Z0-9._-]*$" + + if re.search(regex_check, username) is None: + #No need to do the check at the site: this user name is not allowed. + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal User Name Format For This Site!".format(social_network)) continue - + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network) if error_type == "message": From ed8513fd062f0eb04889be719d720fd4ef487d6e Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Wed, 26 Dec 2018 21:54:25 -0600 Subject: [PATCH 14/95] Update Command Line Interface: Accept List Of User Names, Add Version Revamp command line interface. Allow user to pass a list of user names on the command line. Update readme to illustrate actual usage. Pass debug option in argument list instead of depending on the global variable. This should probably all be reworked to use the logging module. --- README.md | 21 +++++++++-- sherlock.py | 102 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 85 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 467aabb6..fbe85fee 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,27 @@ $ pip3 install -r requirements.txt ``` ## Usage -Just run ```python3 sherlock.py``` -All of the accounts found will be stored in a text file with their username (e.g ```user123.txt```) +```bash +$ python3 sherlock.py --help +usage: sherlock.py [-h] [--version] [--verbose] [--quiet] + USERNAMES [USERNAMES ...] + +Sherlock: Find Usernames Across Social Networks (Version 0.1.0) + +positional arguments: + USERNAMES One or more usernames to check with social networks. + +optional arguments: + -h, --help show this help message and exit + --version Display version information and dependencies. + --verbose, -v, -d, --debug + Display extra debugging information. + --quiet, -q Disable debugging information (Default Option). +``` +For example, run ```python3 sherlock.py user123```, and all of the accounts +found will be stored in a text file with the username (e.g ```user123.txt```). ## License MIT License diff --git a/sherlock.py b/sherlock.py index e9e5894b..89387beb 100644 --- a/sherlock.py +++ b/sherlock.py @@ -1,11 +1,17 @@ +"""Sherlock: Find Usernames Across Social Networks Module + +This module contains the main logic to search for usernames at social +networks. +""" import requests import json import os import sys import re -import argparse -DEBUG = False +module_name = "Sherlock: Find Usernames Across Social Networks" +__version__ = "0.1.0" + # TODO: fix tumblr @@ -19,35 +25,22 @@ def print_error(err, errstr, var, debug = False): else: print (f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") -def make_request(url, headers, error_type, social_network): +def make_request(url, headers, error_type, social_network, verbose=False): try: r = requests.get(url, headers=headers) if r.status_code: return r, error_type except requests.exceptions.HTTPError as errh: - print_error(errh, "HTTP Error:", social_network, DEBUG) + print_error(errh, "HTTP Error:", social_network, verbose) except requests.exceptions.ConnectionError as errc: - print_error(errc, "Error Connecting:", social_network, DEBUG) + print_error(errc, "Error Connecting:", social_network, verbose) except requests.exceptions.Timeout as errt: - print_error(errt, "Timeout Error:", social_network, DEBUG) + print_error(errt, "Timeout Error:", social_network, verbose) except requests.exceptions.RequestException as err: - print_error(err, "Unknown error:", social_network, DEBUG) + print_error(err, "Unknown error:", social_network, verbose) return None, "" - -def sherlock(username): - # Not sure why, but the banner messes up if i put into one print function - print("\033[37;1m .\"\"\"-.") - print("\033[37;1m / \\") - print("\033[37;1m ____ _ _ _ | _..--'-.") - print("\033[37;1m/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"`") - print("\033[37;1m\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\") - print("\033[37;1m ___) | | | | __/ | | | (_) | (__| < '-`) =|-.") - print("\033[37;1m|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-.") - print("\033[37;1m .'`-._ `.\ | J /") - print("\033[37;1m / `--.| \__/\033[0m") - - print() +def sherlock(username, verbose=False): fname = username+".txt" if os.path.isfile(fname): @@ -58,7 +51,7 @@ def sherlock(username): raw = open("data.json", "r", encoding="utf-8") data = json.load(raw) - # User agent is needed because some sites does not + # User agent is needed because some sites does not # return the correct information because it thinks that # we are bot headers = { @@ -79,24 +72,24 @@ def sherlock(username): print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal User Name Format For This Site!".format(social_network)) continue - r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network) - + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose) + if error_type == "message": error = data.get(social_network).get("errorMsg") # Checks if the error message is in the HTML if not error in r.text: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) - write_to_file(url, fname) - + write_to_file(url, fname) + else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) - + elif error_type == "status_code": # Checks if the status code of the repsonse is 404 if not r.status_code == 404: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) - + else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) @@ -114,15 +107,52 @@ def sherlock(username): print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) + return + if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument('username', help='check services with given username') - parser.add_argument("-d", '--debug', help="enable debug mode", action="store_true") + from argparse import ArgumentParser, RawDescriptionHelpFormatter + import platform + + version_string = f"%(prog)s {__version__}\n" + \ + f"{requests.__description__}: {requests.__version__}\n" + \ + f"Python: {platform.python_version()}" + + parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter, + description=f"{module_name} (Version {__version__})" + ) + parser.add_argument("--version", + action="version", version=version_string, + help="Display version information and dependencies." + ) + parser.add_argument("--verbose", "-v", "-d", "--debug", + action="store_true", dest="verbose", default=False, + help="Display extra debugging information." + ) + parser.add_argument("--quiet", "-q", + action="store_false", dest="verbose", + help="Disable debugging information (Default Option)." + ) + parser.add_argument("username", + nargs='+', metavar='USERNAMES', + action="store", + help="One or more usernames to check with social networks." + ) args = parser.parse_args() - - if args.debug: - DEBUG = True - if args.username: - sherlock(args.username) \ No newline at end of file + #Banner + print( +"""\033[37;1m .\"\"\"-. +\033[37;1m / \\ +\033[37;1m ____ _ _ _ | _..--'-. +\033[37;1m/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"` +\033[37;1m\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\ +\033[37;1m ___) | | | | __/ | | | (_) | (__| < '-`) =|-. +\033[37;1m|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-. +\033[37;1m .'`-._ `.\ | J / +\033[37;1m / `--.| \__/\033[0m""") + + #Run report on all specified users. + for username in args.username: + print() + sherlock(username, verbose=args.verbose) From 6ce822ec1118c3af8d904e650deb56450355f2e7 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Thu, 27 Dec 2018 07:41:00 -0600 Subject: [PATCH 15/95] Forgot to update screenshot... --- sherlock_preview.png | Bin 139995 -> 41356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sherlock_preview.png b/sherlock_preview.png index 30e294d90c8f30cc10bf7bde2ff45990b927ef21..4808154fda337f74fac1eefb884a51a9c4abd52a 100644 GIT binary patch literal 41356 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 literal 139995 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%0A`EZ>1FY44(@_htlTV{2<=t8&+ho{xEy>( zR=BH>rL^=D3flvu>14Z}E5<^<=1vDh2Q*Wp+f8e~j{o!~bWhK^h@V#aX*}4(oAU>j zX;!hqPKMe@1EwNs=pe)a^q|QD2fy6k-@_uRnGc}jzy&84X8gbMsR!KWz^=u$T~1qaHFw6;bwxyWewdpPKC;9}o^W==zFjKPWBxx?dg~Y1m=&NQ~j=>rWvVnP`s)yKwQqQoZYx()8TL zm`M&s;mITYjfW>NZQ%zNRUU6XLv(Hu0P)34G4JsnEMiL<~XBTCWHs& zlCNanMg0)nCU8Vh^~~7K?O%tY{cejP7=*T;);PcZjWaO zkTGwL6Oe*tu3>;jCtaY3`QP2a)I!`auHzCHvV32HCrN>4X2uhppXOoV{&lsAUxBGO z(p5@!>2(iX#zD)|9;lywn6)X8zF2NfhaJdOnjwya97?li@6>k`W(^cyQ)ipw#;g?=%azm*ReOu=F`Jl57p6nFCm2yUJmIQZ&3%zR-JTRWLrQvN674m7FQ>mv z(ej!KQ)qC<#U4wC-gncnHK?&0Yv6c}a(Hc&@v67&-a48IArOJN0;?0D547nWM;Jb@ ztqVUEW%_|$eHM?f7e5sh18?d3wZgm-%MOd`t2$zKHHxsHv=L~e&3UxSoxzSCd7Iye z>Vg-VULix}qkI4-A4JW?Da?vM5@YLAvyJv4JbG}|y10<$Nyu0lrV1{4=-nZY^UcCI zk|b=7a92pU?U;~UWJpk_9|))W$MKA|B02PAdU|5r8QlfuVNVYxIcKh14Dx&RUEY}cFZs(-+$9P9JCd^wmS-A zAl5BnB#1=9tY@hAvKEoF?cXpNUC$b^LNQv8Qh-pJ3kKFj6p1wgDw}SuEv28--H*VKbL`fvk(?bnJ(_9yt`=45_;m8Sv?&ayBP8_A%_v!HRXP`py5EmTu7Qypo5J!1(AyChPJnL?B!@R zrtrAU9pZJ~kMQJo#TZ2CrR3>8+?y)$=_tSY{u3pFPMY?h-t~A3SP z4)4`b0J(yn3L7^Ijr;Xc8VXSs$}=*c?}lDDYrI&CWT z`^CiRKrLa{TR&acX)MQDHarcH!=YMnwceJtIY3K_bWe{K{JH*!Ne?3 zN@MU&Ok23ucg6sVy^!lYhnipmBcYkl58Adchpq24GA*BG_gN1<`9pJAhaG|B?hfS@ zX$-m8F2@t~py2pB!^`I`aoXTKCX8@q9>4U=NX8L8-cQD?_xyCtNRFv=>M4Xn8O~gX zp>U=?y})<4(!N>odRTuj9Yc+XT86>*A|LwnpvA^L?%QeC6~~NO<1;d1lb;`>n~;!) z^?(<6jM~2|h-1_hyn6cRPh_i!_7miA`@AfS$G)~K^0Hb*aFZB8Z7wu8TEB2>Gbbb@ zy0i?FQ45X;@}nFo{aUKQhkjd1Af3nmnvE+tZlw0y-qZ6mOsEm5JZ{-GI4*riEUA)! zcXoDmmtIq$LAPyT@BP;7Fk1lnv~A%x4e?uVJ2os5i1a6g`AOd*CuR;+Pi?_Pi5D`%AA*pR*@<~pT3;y%!!fV*I*g|$vqq}K>mI>NFYV!Aoz!Dt=Y=YtG z>B~ansO)fG$*+*>aC}$@`RdpVdWiJvA^);f#s(uo0y`ta3H?z${dNp^bK&xGA=-$u_F}K$B z+q0jscJ?WMw{YR(vLh4%?iNvHE!4W<=a;Jz?7IOo7_E+?gSrkq7aT~Pd#!IwzVe>i zy7d5timFM6%`xo)|2wKO0kte*?o_xBRc?WJ|*wHS*te1NxffH$vzw71p0uk z$|B{}hW(+dN0R`d@e@-o~5{v6bC=cvA- z9Qvo(1Rd5Gog#6p7rr1Jd#?1*VmsIBkoP7(-0~bGWMBdh{YhlTMxCvfkb+++Cts%T z2iRxjV`^AiAOA@B(uwn>q#)8F$A~IIuR}bCDut5=vM?Q3ii*L&W}WChGm&?|bMUUI zEK7E@7}-H=QHOu)mchfKoP+9V6QrPTL43xxQC@g(t2REeS`e$7--~(=QVx`v6Me^h z+*?5(r02nPIb6l8CA<7F-xgz!FUU+gOb<$N_l@5!1A2+iP5n-yGiLyq zoQ}MBhudNfM0sI(o#^L-2KOpc%6#P4uci}OW=57Cykul+KGJaTaEd4nCVRNkuJccA zjl>un=JsqrpX!L+PipoL#)kIn>r%G*Yi($-6+9cK=|;_uz%JR zhpsM|$>;t55q6eQS#)u`m+nToyOHkhmhJ}WR=PW+r8^|0k?t0emhSFui8G*2yw7{i zIv-sN;a+pk%-+9!#ozN$=OU_Xo(aX7VaZH5M%%n5J! zU7CSFCk-f~>JEtZbs%-zZEl>)LF3LPan4Fl?yiuWRjRkOBKiF}lBKOMC9Hjpbn*4% zZbLBd(VCc*wl*#9zIHK(k6sh}B`a~igi;P_qJ6#&D_-SIjxd+x3N#Pb8~DX)i$lgz zCWo`uf&2Qq^G%=c{>O?14{yNOSQlGc=jP@XWD zJ?=JpRYDM#VCFVYX?{MqGa??dYjkI{TaOUr~JDsFuW(t zj2Gzrx_2->VTcO6O0uU&hy?oAB2)F$?%;!J*|dwg>5J4Wj({w%q6{u6Kb_mB_xuQ% zAmwn(5%wAAX~9->!dX7^+H15Mi{D!{4VIS7i$X~6!CJJu7OHI@n(E^nS>n%A({|uf zrXmJDz^D56$$pMKE7bQotGr>-=$EyjEvi((E%pr+otBi*)gDlwaGENbx_5Ey8M13N z=(9JIve;``SdcRAf7sz5oNnmgvEOAz;Zo#zzX5IUHgtB;MQD1@MIl_NGE--F{L~Gq z?=muQ0ya2U!Pzh-D5DKki+HonU^A0#D1sDB7~{+d?wE3Cab=7S(5Rj!K%>t7rrq6z z{-wDN>lCXV*TaufxZYr#Q~e5#q!hc@J0ai@h9Hj%vlgq@PE};}b+tY8|7Kx66V=Lp z!SGv9M1?nDz64@ANOJA0MCstF{L%RQyz}3+#l&u%w!`nSKJ9f)lbyhubNYrMBy{ockyShT?X5Y z`i;%whVQ%9VR{1cb+Lsw_1J>!`jrdVL+ zeM7w|%lh!Qs$Hhlq%bWnxJ8TtZfeYlZgrVVySwHO^?OsWwxUaA{%Fk%z9g#i+0+_R zgaWRh3=;)Sa*`EbIh0U7>!X5SJKM62l|d!groOCzfq7VVeM7HhY;)2_sbTEx^H&9- z?_`|&saHMo+<}usRNlkJz)8-^WdU@#Dmmizpm|4NmLcfrYH5|^m8K=di{zraCZo-) z?;n9w2shQDW7yf}8o6QACMABKRH#9VE_;CTs&lmHh%|wroK5_&&vAH<;B(r^>To|m zi%~w%j_3;$1RqIsb$Ia+_Zzi=&i8MF!-GSUQ$IWD5B9Ud!@2ROS3gk?jI<{vOU{vE z`1^ur3UoOiIA$EweaH(W5G%-(Kq4Ic1ow{q2Fv9X)Pd;4>w`R^l%h=!sC-zG% z0f^dyL`pkaEbtXW54QkgPF7L_ouP+UbiqcjZHOj+N%+!q_`poRVoKOu(t|eD4Go*c zYD%1n{RV6*{IsG3U*kt?_017IZET5`XYsmfY4(HS#FV-1JHGqXMkpjzzj~;hynCcg zKIFdvInFlO#TLii%JFeMaLygar6xjm3&}F~5~s5%JQddByyd`6bN8J4a?k%KJSsWC z@?9+bHYcAWW2IgkI~B>SXls{M?7U192!;Vk4;a&$bi4B1WFBu@L)Jo52CyT{f>aRr6EV9SQQt=_f*zvknF!kU+rN!tSQ z_;TLR*lPD`2)J3)LNAi+iUw5?)S~I5yr?&lNzcaqv?-1_n!o+e?O$B6K0#;-8LScQ z=)f=><&h49`wc0BXpxhEsf?FPKlkzZ(i_hkpY-*VWVOJM0~8zehy#ofG{%Hyw=yd# zFLSP_G-^aOP=C~kgYoMo4btpgpnsEz>y-~x0qO_ENj^i4eRNq&mVFjirg8%@=~d;T zbc^ZJ>^B0h=O$NiNu-kvYGr>+SD$k4GmZ|nJmjlhG7ZcL1TVKQx3=Kf6SGCf*9WEqU7;v zW!nDQawBfO98r`Gz7(cKSMK?+Ig;f>SbFc3fR3quyX|;Qz}N9hOY81pE+IS=&Sr{@ zQ$J;y)JA8(g7f>NNVnY9ap0B5%15`G@pg2k=;olCLF;xmYzqsWD7eNTva}YRmh(Dl zo72=y+&ZVE3&<>zJ55|*rCC`dc`MeRTkuhwf`V#HnIV7Oj^v6F`P_V=7Nwdw%-az$ z@)xwBp*+kZL>d>nv?Q*H)l&N}b=LA1Dh)YdvIDNl`)EeAc*V*GeGFc`Ol4SYK1K&VvEcDO3VD;aax(SA|fb zbYI^SV_=ELPh7~%YsTpNV!;5jQVNIFm-401z9<0)nIUor162|XEQbNhYsM; zd~M%?TMFUcn}Hr-rBfql5lH@uE^oQ#N+r$+;=)iBO#Wa9-QompLI&0*mxfbBg>ctr zI9?qqvWO2n(S0zn01oQ(b+>{_E#y8FCI%E<;@x~e(lPtIVY=L4Y-zR9{H6vs24Sd> z)Y7ghJ3=zQv$WMz3d}J^8_LJE<0s=0PLBF3d>-FS^bls=cam`&RRlzAV+)eUgu5NS;632tfG zR(l+aMN~=1#ZBaj`|wi(&#p7+QtH|^J%g2xb;0CO-n< zf?<4F8+cZ0c!EU_&r9pQ35m~=nVhw|*4HS9m)g5}(TzcISolzNn{gZ#TYPR8=poOe zSc#FfaK$!UyXM>6;Ks4qPv27lvr!mR?{}6%fFskT@fj*6V#9q%sXh`tQ_~T96;wDd z0-q|$z~jY!!a2JsJU{Y*`~KMBe5+~nPZ2vw7Ta0P-6sQ~);=3b2EDCVxDkGp9bdHS zJl8n%k#0RT9F@kyv%JrcH2NS6z!PJllh)S*)WN$x*k^16*MyS6q1FS-sfxOKR=v5< zqWh&$US4cJO--}T>ffgV;a@RA^4MRv0no?@m`5GnAR=pG~irI zOUJlYd7W2~49?O&ZOtdfkHAZjlw^D&MA2qPylI$t8 zE6u5j@}j^ijO?P~-07Avxyq#1kq^;4JUEZ)nRgdiJ=L6jI9h{@v1KcA0gJCI$2I(YbBceTO395OtgW4!_ACj;Nu z)-boQkW1$cORHJ?mX`m$00B1^_K{eqZ>#I&XI@DC6$0?b;nD-@kH-Q$aIqw%6~kI2 z&nTudCoM267#+V?$~k>HI^w8mmQ1U6hO>^z;!#D`gn<-0@)}uc{Y;xd3s zVPk1&UB5ZzX`2rk=utLA1(j0ziSngzO?v58*I0SNLNAjt3Wi$V{0xT!t4Ey*6=KiQ z?_H|S+^Z9H7}v)9`AP4vwezy#M%SC6%H!P*)h=JHZ6~{`BjS8rkF>vu~ye8h^Jjuw-_FeowX>sxQ&5eTi(O~HqWb#>3ay%_<54j(d z_w!BYT&f8ta<*Mc{qbo)VeME79(2b8&KuX!DE)fa(d=)g{(X$n^ff|EY5lUJ5Z*Fas>ovmS0jbfsB7QFCuA56M^s`B;9+iUM zhmS36;3fMSDifo?aU%Mnm0_;j1*?yP5MBh+Ih3EsYr+bN<&QcpsjNE}DPK1!--$Jn z2is_+FQQGmRsM(%`RoIZ=YI||7ps@Y;Qy_jcEvy{}u(@RlJQtWbi;H(WC8A@X=f2$<91TB% zY`!`cb5U}Or;q>xN~ZBJqus}W{eU`JIXD#L5^d~Bnenno*EG=kxL=T4;vbiq(^(1= z#LWcL`WDnJY8u|+3Oq*6*mBG)kd6MvQKhA?>f1Ntew1peBCYnr>D!ui896DTSV$#e zlzl=8ScvmBdj}zS5nU0lYdfC4k1jz{L}vXvSXQ6DW5s0Vy)#|g1V{Iz19apBzeD#f z^st8_JA4lYcP~jQ&d)ukfkDr5wN2$`gA3yj#EFa0nQjE)4iIg1n5X*yt#or=rR5^a zJ-!c3(8INEhN<&i-V&_l>GM5m7+X{X+#@a+d#Pacz;U*n1{(9Fw!$N862lcG;qiZT z=-KpVBv&5WTVKPfZUz<$;B8Y!`~u}#I(H55yr1WSQ?r>X)Y~(o3@36IJjg_2y~%l4 ziv6!r?E<2NCMZ%ZSDaK3iTzVQIhYvhU8w7~^E* za2cO*5V-r%&&F_qsM91XDu025&jpG{Si{>|X>Qm^B3xkqMD;8 zY2AIaGKZ>)=+ORT)1VI+p_ynlj)_-dQ0lMl7Y%69od@UJxe%5@=mh^mO5Q%6N=!5d zs{oy6_+naT2bGezmrOz(MyD?v(i7gdW^Lkjj^?g@fqt zV8J=DCDxQzd)s+p-$1c)M$wYpVKc_t{_z4n)*_ex=ek6;r_W)~B61IxQkT!}#eiaH=bw?QkyIip&4l4U5Yn~#_v_QO2GaxW1jEpAI*AQ9LqM&)~dDpVVL zKMqYvbH`lR9yF@njEsaJ)UieP3nJDu?xrR{fDTn!k-FZfS_joq)OSG|sc2tSPD54I zI4}(JYc0u za~Z!iA*-MLL#`h1^eBg;0O&$A4BCeW?w6JoD&FP86S9_Cn%gPvgt5El`h2d|s3$?YgMd=0pg@oOO%kLM|F-lItuBM!+4M40y+UxY{H$ zqP~@l45+f~jBia)_`Xe7OrQ^b3h0>lji%jbn>aoC;Xt&%*v#OK_gOwlUOLKs%xn_O z%R=7a5ed*KoC(cJWQsbA8yZfv^4W=?8soHR4{AeGY131+iKnL~Mh!>JWRb6E>{pG@+Vf5k|MjN1~ zp~)s^pinrGS2T`C8*8p7E&Nwa22qS%?VmuLwKMr>MXp4~zYdmtiX+~ef{3SlBuv9M zxZHrGXJAk((SPcdK%BwUPuanQdUczhon9xs<5sM{<@qfbLJ{sba)J@fY_6q2kAz@+ zKT(Fi(YqhR{_L|yLk;lz0f@kx^zNk~j2#69Z( zt=BxP6{%Am!5?=KY%s$912%e$^5My~I1GuCLAywIn2b(B?fpqtt$14-`*@s)!OfT1yc{gGgoHziTM? z<^bpR8lT%`Z>BMxm42^mQiTkB#TU|Q;E6?ZE~*q$0$m-lm`l*e@giJD@-V& zbx!zDDF>RseOffLShsI@=)yfQvO}_$2xJTqLf;b`)Rf{Hc7bA8ub2<*Upg5<3{bZr z>-!p_SXekDAQ{?po>gBy(KeSuLcr#4 z`CO$4)F(_Kq|s1lU%^X|ILNDBF-;i(8UQlhXvF5m}C*rdljE3Dh^nb;Fq5$CIvb#=X#av^|r zkBG=9aXp$s@JHl2`O3u(AOChdLc$gjWQNdvG7d79IF^(hl3a-bRaQKJVmwW3zPipT z-Ng2-Zl=A)r(fkuROmH`2UF~Z(joMuym8oY z9KK3}Q(xDUfdF znmoka?>r(Ef8gko*6xOafR|}E+f2MmXIM>>h@U<{w~VfPn)9?mIvaY{L41h?MFht} zgB~L=YjtE=a0oFal%cp*VNonPYylH9x+Et$3UzCqP`tWN&s_0pJNxq7E&ZF)-{3>| z3_ii?KS$CDGycvmLoZH$=DQHGMh#Uj+V2FcNN45|jp2zTI203%a zW@jmU0e4Uu(-@91LUosspO(DUf$tKMo}7e1w$Gjt}z}9)$W8 zA<@%KQh)qR!sj${qD1Q3py&zdIiApv)rg_0Ps|8;gDsWBSJ$t$* z@*-F-EA6EE=$eob_+OcbMejk+T>OL2lNpfF6LJsczdnK9h}-&51YwPXY(%C<~D41-hpm~oAbv3 z9KY)5mw?it9a6p_CQ3HKO zg%v0gdi}mWzeg-_UnE;DLbk}@6Ply^<;5ya(2~lb`Zw|R_Uk_d#fqnQ;36sq$4(1ocpAfTuXW-FsXs@YZDmd{5q+Ig20h+arr~|h^!Jti+n}{>1*<;)rHXgicfqb>qh85#c7BH z$JoY|rppb!p%UV#mj2~AURfO;HcwAVb#a%`lo{h~sVgz}E68*fE zAG?@4w4ce$Kx{uEVdmjxS#IuqnP^D?Epm zcF_zgnXllepm_m1xIB!UJdQ7H!lzeIu^|9zSOusjB_{6e>}_ps#85#Ha6??(G~Qx=fXUay@!Q$!HR+&q`OJA7xlF z-yzxPyts)QV$(t2HUDELZe$&7QXPs zJzm&lX$UqGAv+=J+=nD!n-eTrjuw>heL^hurwtwE% z%L~0jxst1-R0^u7tiBq+zaB_*3QzO<5X1^us)=@4f>vdeL*iatQ(al>tH%0&(Kn$K zv6tUybu9uGx(@wtO5IMn{7vRd4(l0YZ5WICami}{>?|4eUc(@xn>#u=a^X$l$oMO0 zSTUi{HHk*SI7UGf%`@SLQ{*&M16Pz*<>9PG7P#kgl`W_ncJ_%(L2yapBC44;AuIf) z#yKbY62jVTYu<4lvaL7I+AB6j*$Z*@lic2YNEJ?TL~gqC6ren-uzwUvyOD8V;p4r8 zhwoF!WHtK4;!nu@i4$wvVd=_gla(JLEAUG>@3WB?6LZ_GH>SIHL4y$Os&)h zsopGq$4rNOM1GMRZ#hq-ly4DC25(_Mm(!Xle7@*5aQDDom!4JgL)u_=C|IRH^Lg__ z7>PZngZn#zijK~ZZiI&`=sa?J${`0MDLn!))gwLGkB!Z>jCwhXh-tdz%8cfGj$sqo z_^_8F1UwLIk8L|AafGy@HX_-iFI3Tlyu`aHm$;J>(%@v`iS#kinibxB)rZ1euc?H_ z1T|rPLC@XEZKj6b!`Bjj**70SQeS9eaJ#oz-X_fr%xbya$O#0F2&vK^2j@tc8OCM- zO1z3L*(HxL)9l=Xdtl{aXB^m>sg!sTA)y1)!?{svNlpfqL*`~@9cuc-1noylz7iw2 zjtnCE`{Om!XuP?h7uy)W6GDi_#{;y*To8rx6WvjG!m9Q>KvulW?}c09iB$*0!pvQi zKuQ})KUl{MZ`!hiAc(T#cuIu?)lZGhFRNQF8g@mf_=!Z4Mf5-e>v!U$uy$zM@f*wy zOd^b+R-}XX_I5C6AUa=JKJx*FfcO{<-FLcH_whsXlT`XSoU=rHEW1d5ccpBR zKjhJnV56uunDNVnu*>4+?AJ&(q10<>1e(Vtv8T)Eut@KIKO2O3*8X6)xtMs0x9_3) zr5?+SZS10~-`+3*z7&kj#nR_BOt`%yH9RuF;rS(*r*qw(B$%csA%ShtI|#&YJ8!^VI44o+u+;C(3U=UJZ`A0auEzFms5gptc|J+ z62v+%fn$s%5SO05=eJoSvn~4!ENn^aRyf0ethk0$di8>{^Am*%e#vb)IU*H$Cv+A8 z!cjA-a9(^~U}2?Zqt)cjK!DS>o3B?<>E1Ds@mAnQsUau}_C!TVN!XD}9v&DBO9J<^ z_XD0hz3LAK6sE96qvs7I(hAk7&&nxU8-AZ&1vb zBwJzMcQVBYfFimO8d6fnsOn_~@qSEVY(SxO(LWenmS%R(;I4{Q-$UpB^71vV#!DzT z+yJvLk1_etne>k6?;)1k+`jKr=(PP-B{Bc2N(P6^eygrF;~WojDsgr1Bf)QTA@tE{ z*K`7Zx3U2d#ZRGI$|={q`1zZ~UH5-gMFnXU{P575fjP_5>d*B`%GbdUeuYjBc=qz+ z9>ZUJS5!G|n_OJ5(kaIu|G16mp54ap;?n&#RC4Zv3y(jtrE!qx|2*HfBdYkqSL=`i zD?n+@WYFyQ1g=m6tlKtItmzgFV<%5eE?C0QoDVtWIUoubM%HvTq9hzOZ~Eo28#9~j zK^PYPZ9g8MH?fe-SP2dz{m43R$8aC*K~65&GShbZRTuTNYDO0zl9g6*LH_3AoE$^@ zfz*S8gS6t}B`k$z5T`6KWEL--N^34GsOOk zc0@!1Mx8NtZ(jVwAs`TG5Wuf_*56vVz>|$nw<=9j|JDglvP4$!2{|4{R)0_o{e`A} zNH`$3To_tfT4)M9wgAGpfd&TM+i3sAMccfUw`+ZN7579v!&Op4Arl=6Y!@`qxk(d>7KDUmx<)Q zV=e|+toDC!>(b`>QeqUt>maCxL`vsAJ#IR>c%t$UXUuZ(@mp5()|l_%@)K|I8()mX z3KsqT6cxi7%)k6^U|&}W`q4MY#D7;&A{GAa6E2W@4;IF*xbxd8yw7f@rlf=V;bJFK zw>_R&r-*lTbRI>FSaFDno%B zb!cft!_^SS(Sp2k7soI8YrTsLC75~WGb!<@(Hsj&@A`zVgV^(s#1W&SK?0z1P(K-n zv)-nq-C!~p3#QYL+F8Do3?9 z=Upv1Rmobvp&x|kt!{sADsr|w`_kLBC0p6nyAPzo3XZUg>d~ES)HR2#hIp3mgWaE& zc3G^xD-4A@%D~UpayC6M5m=pWmEAG?C~xfb$CMyBV}dFDRf{E;ak*694e8wvraBI7#5p~ zi%POLOwCU$g&pKScn{;`q zGahmU7P_+yaK2HG$A$|^S6*N?`gfnZ-A*qU7nnn_G{!Q%4MBoaEIu!<%36c!enk9W zZxyhdB~dK$RFJUn?`dbUUTRqNgtY0*|XEBFoXQ$o|>nci=Np0xflb8|Nw z>pGJS^nyaHv{_zy3V~=l%8Xrw`jnvWV3y~XSQk}LK!M?5K?;R{>;C56x3*g-9*%Xi zFGwAjKM6pd0cCPGuV>3Gz9Pw;fh(sDn!O2H+mHOxX$-&!>-uem!G@Bo=vNO)hCM(sIxh#gUQEJWV? z$vPtZiKeE%iL$I4eZ@j86(f2;e0mXC|EBbR8(}|H60SlJO!Cnp27rH zx1Y!s33|l&-c?XozCb5y9S6cn3NXte7p;}Mx;SD=`H+<%1+D|>Q(|y+&>0>f&gb;0 zv^kJI{gjih!XC=D3SB z{(@+k2ZbIUtBQ}pvO|5NUu&acBG##ENZB=Q3(XcJ<;O-x2mUhE64M+14y%s;6;`E( zyIK4ET6#pi2_crKVpBzBa#a!rpfT^quRWq95(iM$>pecOe@9kvF#mIv$EwV2zeIvz zE`SfPNscT>8K3?w`o-ZRM^&OjB3oV#-}HKD`&JxXq5-LfYNs?CS#4q z?1^I!~3f^??bE&DychX()w~rD#yWAfy5hWw)ySVk1-_T#Z2g5u~ zT6^d2x`&PRF^kuthsq3GK$KPGO3k9U2S!91ia04mq2N9a{n5G4CKo{;{6xZtx?#BY zl9pfpZ8us)PzCbjUiPlE2bVP9bp49SSc_7nyg=rh^m`rF1|~*p;LQ^RaL87?J1ZcG zub_320JF$q)LYQ%?&o7uxMYEOdq2Z-asM?=d zHRjyI;p`9>Lck&xW8gk*L` zY<&Gk@0%smRO+~j;v3J??v?nAHru{Z{c_RaS<=b`iXzXkd{VfQ*Z8m?oZdJRo9HSpE+PS(_ zZWcxV7KDXwq))9-IN@!m;6QN^nh-5$^u1S6Mg~4%r0+_$s+9;%i{}?>}J+Y~W-6ab%anOmnzH3F&1XC|?Z7R@ePz%I3R`Ki1E z5m3hO<+X@eHRjWh&JPe=gmjlM!d~zQ;>v|JRnpBn6>vtsh)CGc6 z*AUHvz4c*oKIlEKy5~e*<9G$7<{+OON|54A@JGcns_OpvTg3|tUYCf9y6Kv2`C!%X zTxNtohw|f3V?faZw2A|5VA@PMd7Mct$0;|yv!Zc0n5A~cJZ5wa!DWITU)^}{_h!{( zXL2|RB^g+Pl?DqpH?ctMpUm<{Z8JIT37S0LZewQ#Xg|Obj(-w-+!&kqvcbb?JJ`!B ziW9NWmA8HMLtETu^DMHEhs#zPXJSL*iJ#Tv#-5jfl7h^7k?7k>cj=b{>?q$g9r8?D zqLC+~qG^pkVf*5E4}J!6fbeAp)7TgS5}H3%Guap_1bQ0?Ho^fO#ysO_y;l3ycN36~aGE&ElntE@LJZs1 z?Tz+qM+u*ZPK|zTsW+3IWK}{09AXIticn6Fz zF;a{>M!iuz&GMK*oSr##C=m2OKy<@)Qqw?>c;0b;Vf=$6Z@}|WVhF2Zj=IV0K>cvS zG+JP~ljUFbs?Wqi6$L~c(fh-{n!LPSUY;~TM9{C-DxrAYvo?SK9Kgwhpl42WwY9Yr z@|iuF<*sKGyVVxm;&>oMUT9_*FCL(0JC-l;+w%QKqYPDg+G=uc%4 zH|eXtm+ zC=ofiscy4iFNF{bv_(N!h4r_zu0cgAub7#K0 zcN_SB2pM3_3n_iu2{7D+4p#T zC5wx;x{ru_ZI1Y?rm^zH`Rz?%vst~Ou{%16c76PkZdWq2|G!i*EU}!SXH{(dw<@;u zqKe5qt77@Jf2(5G(qx|dGaM=ZfJy$lXE4cm0TZKX!5t?X-d{iW zVmtBh;fqN(z-Y~C#D}M7Y~PR>vU;efs1~}rzdu;mm0!v*4ney9WldE4Hmof7xs*pv z!CYL`S_K6V&vcJkI9YBmEAd87-S6%U6#Y~Idg#-wELBJ*>4f^wW;`NRfdm5)f^BdQ z5J?rrKRrC7exjMtaj!xK=U}WQ8b5;Ux`CN)_I!uI6&8+&AnUQdX`nxF5e@5Wl(RN9 zj3P-p_cTlR^y$^ezs!&Mze#A~{QV?MvwTLVv7Z%5|H$s-Db=scijuPL;32>LOM>)5 z*=n2^;BXC?^%dK>dv%#9wwCvY7qqjc3WM@d((P$HP`OmMod3X&A6|g_6)#1z(7@mz!p)Vr#ePvqi9u|v#&kwWz=()(Jy|e!#nFaRmKR77#{a1LRgJrs%;$X}Y4FNf1bJIh zN;;Rgd*ioBLG4*N$SrGabkLR}mj8i)V?YX3gIPX-R)eOnTr_;qffsxf%DuA8;<5Je z%SApu9Ks^S=E(OacwT?{IG|c5wh!8%qjaEEv(iZ_Kgw@Q9gY^7QS@VMaY(Jt*@?w7 zHGiOH$M}MA11)@Bes$IGDg{D=R;cnBbm*UJc0T3jqjNx${#~=9BB9Q~ zNEsqZee#yJvVVFJOixTxGes~;3|*&K!?t&mh~aoD4+@nU5MWNC_?`MX-U=7`WAdVE zFk~1A)f7$_X61h3tU5QDJVnglh6%>-%-_wq6z1+ zdhdzha&gQrDwJ=C1#%zDN}8t z$~W3y9pVEPL?JDuvb)#pH=A9_n4|)op$2#HE(8Bj&_^+ONN!9M48wLH$AFHHS|!V; z^NUn_IP3yQh&G9l8FX9b>U|Jap$imMa8|=eWEeHrGBL~Icc^x0ZxeuEXm{jV?E)%I z-I`yU%gXHF0`%j`e0!fRS|b?s6$8w0jNHZW)wafH0pkS0+hn7ORcCRrS}^wwZVcwj zQOF>?Pix6-*&tMtRSEIVw2=c76Sk|su+2~vEgFZqm})^!(i^=&UPm|Jl0gpCq7kE| zC#Ie*S~tY#U^Wn?8^?M+G}Y3ez=Y~~wPm5*s&k&cmHPf~RSVp?R`+9;EVz(!1b{9+NJ3}**xnX3f*YvU< zqHH56uEDM6Kx3+OyOKh8iVy0$mu->jbCgnHLMV-15yThHd^k9%%D|5!5DxH1!CbvC z5R>Q;UJ>-YX%^WYUQ!Nf#$s*srBhjuOu6dd$+;xK1=(O|Pm$$gC658qXv$dFdt9US zetU#iKE$#8S&~u3Gl2EOWezh=^$14*`}KCx{8r1@pS)mXEcp-VAVaM4Dub zn8z(P(%LQWZi5dO$Xlz(-}dsq)Kd7l0Cf!97I;qGKiPc4`3~zxyAMgVHn8zB=UuoZ>Hzda}Q25#8>}!{?W{*#h)_%bl}YFt}F>EdFrIN zoSvWD+9D2rf}}^vcawjq!Lhz%W_$CjZUQ#~@Tf2uDb_f3xWyP|wmK}-`h|}R^v4q{ z`v_ldyRdID#H+;~SKoikOdXsG7U-A4m-+-PdXZK4&b9xr>%3~B6t zKNhgcEej@t&(}vL2cWD^%^fJoDP~pLI<6j=6loGH1N0~aK#ywE@Y|5X!J*;`PX$Me zijwT2qNiOyJ2O9v(&Z*4d~>)(Z$e}gpGl|Ub$8ueossGYHs%P_;w%{Y!G<1Tl(1V% z(hwrU2wy~b{gO0OANWKXLb`R(IHn)@Kz_2ld~rd# za%ZtSpw>?T2t_DiXS>wkKz-$37ghH;;pZctPwwgOB;ChzPV+EuCF@sXZHNw@z-`+% z_Z#^XviKp4?t+66TirX)(Xer<$n*RE>cpuEh);3AJtB>YTT9bz+jv@$S;c6R<`kEf zmX<{94a>~!5;nVHi2@l^`gr ziNhT7Uwt^J;gXTxeT@NuEm*Z)Ehalkt?y_0db`xsqC+HU@dKsv1iLv7t{VhGDtqa` z2hJD53wY;r>GW$2Xy5y(UgCNXUmODe@E5tcw^yQq*jOM}3R^F?m|mzeEW0+vuNUMa z$a!BJi--gx*;!bBdalF?*f0lsiNuMbZL6HVN2Db3Jm!BC^sd>0?&}4{*O$pQIm-!g z4NJL?q`XFMf!!9mIzkL^>ORK$uwkx^yKh?R-A660G!^!4#ID^|Ole^4v%u=c_tnsW zBR=xm7T15&DPX1EK_3GpDctSUr7NE?>Tm{og8568`lkbD9q7PW9URiG&9-fIuNoU0 z@YtMZ^pfi?tag5Ev>MQEeF~EWvASk0fLk|6|=Q|tm27%lQ6c) zoL!R76*y1-y8_2g%l|)yN^*<1aA5Xla`H-a-uCgx-fcOZ{HroccaF0+;}FgBeIp_a=ti+ADYv%< zx2D9LZ#m0jkYEa~O&Ore@)+W4zp^&I|Bj^HWq(uIuFuW`{EuvQA|fB!e0Gg**1s!j ze&2tsg4r1O9A1nkM&d7@=r`gK`TO3NA^)kpq4~S^=B6eT;?KFlpV}Mv=h~YhAA`SZ zZ+L&#-VCnkmUvJ6;;EH+S4k z{HnujFiP~~``MEelkt~8Ou)2bO^VygCj@L8TgU+55*bSb5^CV0=7!?yoNYCnmXoHZ z_cYI3J``>5$QP+s%^6c_$;06wFoLME8IzWWx_olO>@6d%xOU&QO`%_o8hx=;Zig9H z(AdX2Se)V1!+tG$>i~zo1T^2cT_U{7N@2Cry!_cli~x$q?Q+O{bDl$G^nsEQvj@+h z%12~fy7clS#c+ATPX(6Pr89Z%tB1?t)(`1$ncOIX#hQH=B}jw>UOac6+#O1q#9r}! z>*d;%K1@{|0QpxdAc z28lFxy06yh34BOD2-Ox#(Gl&pBpo0c2>48E_4L}di!HN*3wY><-Zk%>E*$M934n0i zM+U5}$sz0Qx3hJqD%}bp2bn@x}SlvN8mk54lA!g$vIW zuZcZ({ge}3YKmO~PuW`(TDkcgC7~~JSb2xmql8A(_J?N?s>t9Ikd9kt(CB?`a|JU> znsFN27ZL7U{2c1dk4Qv;&o^ZnRgcuLp2M>5OhH!E+Xj?~rd;JA9D3xeLSoeiJw)w{ zan^^G(G4l`zW?p3Tw(v0ukzq8U*)7j{r+SaCx(uk%l*(>@x?YX1(cqd=Xfsg#9X1o zWEr1gSPx1Mi%13;U4k`oF|BP`l#udhT2AWC@4lKUTNycJZIN-^ud%Su((fZ{p>dmaGKx?i z{tX#x3xYY!2w)I+Kog-%ds+_ z_qi;uxLE4S7bxz*VZSiA0kH@XA%c1>CixaQxt8DM|FCtIQE_Zrv`%n$hhV|o-6goY zyA#|sxCM82cZcBa5Zs;M?#^qHoOAEH@BM`u-8H(ZcCByCx#o6Kzkku>!UIIm_)`GF zYredP*W7+v9O)TI-FHrBLX1H9-evreWE?gHfR_cXubQCKWt|uYk#)BD8b~1ko(v|$ z3FX>nc61vo(RFl$C3OCalY$#q@1t`msDz27nUQ{e29@?EKyLmrs7=%lUHHifl9*Dh>>TD_?A3jmj+o z)Mk_oa_T{n69$I%mUR0}e+mAt9VV!)iO4H&~Aeo9^t3=Yk3G$W$opfw?LJ)rJ135K-@xqE=B-tE;M_;fk<$*cLrE(@h8JU&< z1<@V+m?p1}a1fB4YV^$3j-+RBi+WvauosACBty^IrcJiLcWOeDZFpC|SkFJcdQ^p6ST;4OIFgKfLDiLlC~g1vlA5;z+nEEY>eW#z6zxJxB{ z%rURz_b1yb241ITC~WimGUH!W?>P;1MF>gke^k953B;E&*x$(Ig8X~P&Q@Wn!jPYI z3M+WGI}J(mTRj)yHBq$bff;^%ZF2|_cWhOW#St^AKV?;bPs?E1Mrx3$P%cTy!o2Lf zSy|Jfr)Eoz#Lkk!b)RHA0}^njImLa8Of2ArBNNU6UcwiS_7M92kJp)|0>C*Igzcy!ENQ1UDQ7DZV5Z!qinq^a_aCoGJAOfK7@Zx5)bPE=VO ztqzmx08M%{Eo3DSX7IxI0i+0A0D&HvuYZDHG~O*QD_hnd+m^}Rx6+f7LoBx8+ga$g zIbH@A%koX0+VM5s`K(;?pD@%_;~yu-OYWmlMAn3RfBCfU0u6%qU`^`hi?TTd5|E7z zFeeI;iytvwEWSdTu^l8@|UOW52v}t1+ zje*NPjGq@iAmIs+z>&|#(xpG$omp!)dbPhrVmDa-x=k{@9eICRLz4WHVndRP+kJX} zF_;*H7aG^DZi?6?R^YSFHOJm0m4N9AP5dor*Yn7FjC^Xphl#gu6_bD39ckK z9Gq-mnHy1l`R+%Zw=(^2unJTra0qlT+RraLJLjT^R&o#DD)aX?1&?7)3}_TkB1b_Er;J;8ubK~igFfZo&Z;7 zvW%gYjbQuiO={LuP7zo%Vm2K;+~FaHBXxA6ZRxtecg{HG8j_J?Bp>wJ_(mC{bHUK?m9WYaw}NSYSKsR{0IfgDrB zE{WkFJlkeU9{WRlp9r%|dj;P5paXMA08OQ|;68s!p}dbRH@gU(2Z4f!(ex$(!quji ztR`Y7GgQ976oy%vvq`o(V`)#^-+4W^gw8`VE%vCAlzxBQdln3@zFcbgTa;xfAbm9m zWUwU#I)+Y`5Ga}QZ1@8U&7XC$5)iP`=l*g-zx}UsQnm%5D8Ep^9FV<)^@l}%zmib| z`Me?m5)$Tmhho{jhLT#x(4?|h3Wc`l_g5+ZMZ(`+%=LE}Qg>vrT?GF0tFA6Sk3mf9 zP(A5Qd|%7Vj8+fJm>f{+dhhA1Vo||lRii{A+)H^$ap9LAep&cxd z>f}6m2p9~eL0(<6{2vflwA#1c_+ph2VAtivXN?8diuN33obQFT48tjQhyA0-a(y}D#xpcFRz)+w#xeq=L4 zzhzBud3HYs8{8|S`O{U$R94FWh?;}t=UT>dK$%FfS658&|?eCdAqvnQ~{oSZ19C|SXp9w(>C)tx%3zmF$To(T&KJ3 zIqaUuyKP44Hrrq@xOLm}ZzgAwo%T)byjD_Fh!RK=NJNNOh>DiNWaj0bpJkU$~XJa}zZq7gQ;a402Hm@;yh{>mOlO38d`T1d3Av8r@PEL-oP%7w&$r%^B zM5Ezs#cZvNNNuz@r^7b-Qt?36i4ZXgLKI{Q3y7SVO5TWv)!?iwqkVRX#69RNCGN3l zVU77sKqG}&B;oMuFuN<8;bPL1URJzw}&1VA3 zax0<^xr$gHyYs}klN_&enCU^|yLPPTTGywq*p1eFP zBnbj()5a4>W6EV}eIZ51#l(dlm(?P1I3(Ln1f-=01S1}0(kY<$HsQ~njqXC@DSI@< zhsGCQ89{|x_S0I($hqsRy%kuX23x8L$PV+Tl!-~>kT1_VW>)eriQ9?^mnu!H$Lss^ zC+1F;1OlZ`#tlRS$gW*Kd+m|xB!aw#I_C+_(+G$DkoU0f?d(#_u%SJW>yYbts0DKK zIx#34>a}g(qSU-cH2u2UZ zeqCNDkT_ef^GAh$Tx})hjl^O&UP)%$C#SH?38XJpeTbxB`MNljowfbqes_De*kXAR z<9?A=x8bzE!5=A~-*nO4e8nr7)*I)TQK`&pY%54#+kt2BL2AOa=H9(%9xe>F7J;eC za_rER$dc3Hpv=*e^+3{VsH8|VQph)< zjjtm37dT<_EP`{#5~R5s_|zNv19-&+I`a-sg8?dUMOX9{Mo`SB3c$mWVIrSZ4?gjV zs?L8}y_DOz*MCOBbz|DPEGAR<8s?!&=h=UqC@s7>F}P>AT%_XohzQ<{Vswr;?}iUyz=29|Vq%KeoYHW}Sd88dW4`Qb zOmEm1RPz!k_{Sf#RZJGMp|-iXIX~*p&Q}NJ((JoU4tvEo?6S?b(Z)6rFpsAb`vQNd zLFlcMDHVJ_Ys>|Adn$uhx6q4TbkTOTw9L*&peLF2z-BUQB`_^Nkk2MoS*>8EQ3l0;(lJ~MoLV6v1kn}Wl-%oq>+%*{LKFGN)cH~ zrGXx+k&g4t!4id5TJc~~>U9f0%%-E-U#O_5QyLg{7EQUGX%4P?lu)fWUW#TE+7qa> zmP|H2304Uy~3Y(IpW+hr8wC3 zP2Zl({8-htvpk1!g|I4qt;I7_R)VGl2Lm~$Yblvi|FiY=?Hf++$Dvt?`3ssTg6KvY z&@J?P#yGEioECz^XQgAXIG+gr?+CW2E&dP?*$4|Gud8l{n=c~6TE;TEda#SGV4f(< zqbv&kZy?}3P+cl6Qk1T)w!ZA3rKG*7Y4$mFGcjRcvKgWB>j>uGaaf%q-Xul)EKiPe zK7S5K^i6b+CjoAI(pADxC=3OoLb9o@Nh?~i7*ZO$H+Rxp!EnU(;P{%ezBpZIR%?3N z3OeH51@w(v@cIMma)y?-{dg!bkt)l%f7gf+hkul;N=E$JgmdfEH`X&iFwJF&r|vqB zxr@bWFiyeTuu^FZ1|llvkjdG)Hzykh;rt{r5Bf1`k*S&TYi{Iy$^K9*gH+W*!vnj; z(j)I&H&yPw{r<*Bz2NheQbopR+JY+&$H&bt3M-?pUJhCK*1MG_%dF+BHo$sZ>11BuZfP#hI6vua*9-r*Yltvb}}X9+gv&o~lMw z4UO{5pYGUYXD(k%9AUAQOs{QnYDIN?-RJ`KwgzWzh*a|zeA_-LAy-;HV#?3K;9xCI zr@1l(_wJb?kw|}>g^stp=*G-`^^oxJ6lNb0lt^E3Z|dd)rm+Z%L{{3Cs7HA0ZlsbG zU&tH`v_imi<%zfm5dZ$SO~Ls$L?SB2$;)%zAh4SY@{Nt3#qN!}Vx1O`N8BmrT3RVCU9^-`U)?@p>#PlsmbkDBPX_r-uRw8msKZ1UV=Khsh)^aYRD z%UC@OSg$h66;>+M-)*x3gW>Au&eXb#X;~Wg_Ea{}@g9Dd~H}>SEXH);~l+NXDzE4Ch zl6~JA%CbI#9v-fybdmDRwnu zt@-Fq5S}(5^a=(DGoFH6AOi3n`&K!!ZItYg*vhQN zJmGe*0)qBt>FxS}e@kz>P|TNjFNmz2x)D7LnwgE*35|t7oUoOL^7!;>f8OBcI!x`i z+%Net`l>UBsv)uvW`!XXx%;|qglnK`$np1J5KDKwz=nX zbBDu1^S)uK)u;+Ae8qwFc}y#Ug02-OuC?1@UMxqF7rPv|S|ATPXrfm!IFCknV)JB( zo&i^2Qbf|lq_ZS*7dMg2C;`0$%p;nDakc{CtA#)F#I<2ps~EWKkt7L}fV^;`Q4oEZ zoQ$pZy*nX}NAkZrTP?&&S=2ivD^XWd(+dyB{ z!y}ik+uw!t#-aq4^;d-AWJeAch)@B>jvFYESM`bq)Rt?MAX7q@Bv1S)_cNAHUj+%# z2{@(KTO4_xB^`PfDQCj>*($^g&ah5IShso^G`e+mpb0h`Zkt7`nlO;0Yx3+iV)2Xk zv+{m*a^!iUkm;j)((fL`76z=Iq{0`yJOs-ys`X;aPjF-HX5Nfp_<<_yA~y!M@l?DS zDUAoTZ0+lqs7NgjgA;EDfPOzCEk;fk8*(833ej_flf*_`ic0Ji$7p@Ijdd*}reK+6 z&TNj*&r$~R_DTKH4wW(rJw%B=@Dsmtg5+tDQlm6+B?Xl=O@;6ZxA?i2b=kv>MfFcx zNC}BSNTrz~tuP|lS&;f2Dt4IA(hi}am}4lpQwC0&k@J*w6{r2BddcP*C)X2k_k@G# zw}2g~*({H~!mXVx%QIa%H5@3k9WDiu9tC4ca@(k8-f)8Zyok2NdS zOzf*Xdg9kVhCJM8x!junU{bCbhT3ziI|1>LVKU@d<^An%jVM|?px@^r$e;oRPX*=+ z!J1vrxk z-My+^J{+SK0%+LCVuZc)gSM11(HiLVMo<^SpK?*Dbbt({>aPbSEM*VCsuc-yK}YZS z$N+WtRuRN$kt&wo7ulLQpt+03d%;<<%`I?R_kGD9f3rZzqQ~5QT?OAPtgKo^N&G(4 zmxyp~-sG@JIQ8Oo?-F)Wuw_jBkig5zVm?=W(YPev_<#wG!okf+_>RCew zR<8cFtZT4KPzkD<(YM^MP`ZfH(`<;fLPKSx$8#kwq^#JIqpviZ_w>yRx;LPc2Fwml zl^-4qyc9*&(~-EKKkH*}y-SRk3Sal{Ha5HsAWV1-UvFo7PRkdHUn zp@tKI!*k4QL{T6(V5PNqPjP!X#bdK*XJK)KXdqHJ5k=r~rhVzFv@~4#{;qinGoSUojvM&$RueuL^%m8gY`(BbFb;7SC9 zZd{ zC!3tgEuqvYZJ>f4!yt|8N3xT?SKpkD330lYhlS$gygPgXnr~>*l6aL*C(Wntm0p)& zsfsCqqi+7On)>?scyr8{#mjUN7b{<|R&uhZ;B~Eob6@(_+D!MABA&9iiOy5HGiKcz zTD30AVgh$&(rwyw=z?^Rmk29Y;c%|k$>Fpy`W z>rm*1Hf_I0hJo%v?PfX0VI$K$vIuShUZo>6&jQl9gqDK^+gXBAxL$MyD?!y+xZIYd; zAm`WNEZ!H8vqer?U6vU&Nx%S!I50GxQoHP!Dde5rOeu! zr)5hfiMT?o^}F(%zx|Z)YXrK-*PdX{_6-o8N>5vxB%1yALCT{6vRe^ZotXNBF=%SKgeWc4!_iw5_)Zlm zpV7h7$$pFTX;ZvSW0i{!Hb-PQHIX(|PC=lsA4xbXNcn7H&oc-&>IfH%-gi)Na!b{I zWl#YoTWaO&Wxbx8^3a%ki6GFT(7D8M7AXIKM|knFf~|She`N>Ozksk>}dtfIul& zc|4zAoE$layMOD8`w4lRb)J26U8ea+%7&o~(cZnRHZ&53yh2pPAkaF*PAV=z-E8_H zzmUubmY{pk)?n{`!ar|#Zk&dLLEeSj#Z38t@n;LXasWMZk!dF(EHTJPb4gn<&MVxU zu%2q%+y3WvtaV>-Ah0XzAeev>joJ7^$_E7Ruj}n*Z9dDO2Ez1+=a`)oG;^z+MwA>* zXB05dz7PP^Q(e+y3xkP-=u-Uc=>Mnm|dM! z{GWwAkMO;CNmG~a>?j_F$)d645Jq_CQ)FfZcfCRO-Pt}kDNj+d%yjnkKq3#576h;}+( zUl3$5DS@RL)K;;WEr8&OaHdO23oc*WZ}odS>tUH^f{eIHzhjoJZ0(+E7g#RlibU}7 znLD8v5X8+D6`Ch7TPW{0(P%f3?PR0V8bxK9W zjpg%3wJaurP29He{(Nm>iAk;9+QG#ags-m8_lS$|h0Q`t#ChS(KIUT)sS9W3^ts4UHX=1EJ+;l+omS*WP#Hi~HGr7U?1>sRIP01lrNq ziEAs$UtufHM@4_u1?judUx8@)UxdqG;*3WJyd&Ss0em$GBF7f98V;E$DL|tc;Xs!c zLK?b;^1D6BR>ev;bdC4wBn&2_qWNRCt#dtxGU02C040BG7-Mel~NcB=~f_!6B1x$K6@ZiXr33xFADNNre4 z{DNG0Dsnd@m0>F*V)fm~y;21@1rPm-{*4iWTmC%3hmB8@c=N|fxa;5a1g+QGxeYEA zsYebDrb(In!dETf|6Xn)pyJ@pR931a$!8V>3wgHiRn%dkw^gT0=@srqsPQ~~2)%^k zgnPQ+j-Aoe=O!>Mx#qBYfqE=v(a*ZX%3o$;5=&KmJOs<27;waZ5TFUxe8shuTtb{} zskct$eD9362kc+escfOX$ocz!FrTSFtuqg|WgM^H(Il+Qu?)EUMG?oEkNS&Z8E+wf zDpv-tZ&V*K{SQbO^jMr6GS8YTlE%kCNYgjMW3gJ3pe!`FN?c8-H=|JoF7o$-eZ-2_ z7n_L%f#@W_Yxsw5!r;+5|3f!PLiyYy*9Yq|-kKh~(lq0@aA2{0*}DAWj7ALi%M0S- zIEJT@wJyH?j{dei#8AP}QPG^vR=DCV5uX-rV!3*Rbtqkx{#JU55JZe9IoCD%tpu2K z0pMn6eZ!oarYcHR2&+6^_lE0uBIXU1`?EQtC1!zSJufZr-7-3QEeGWboaC4(tOxnf z==BddTJU(*)vJov1;p!@d;MR=QmU)3R7D539s$>JE-@`s%=pS^W=MX&_43++^yQ3^YkW5$|9UQLV zlTZ;6eYVr}V*Zxz&VS1Hp*h-1D%y@|;cV zUbO8#uYHbc?Uk6HyS4Z&4w!Z8B6^#@A`pbxs}?jU0QNS_3yXqet)kw zLlXJ$mAKH5B>ye9TbCh3d$v}++U=bF9tl9na)`VTErLqNemlT^Ykx}@Q4np+|0>@@ zf&MMui=Qeby%($hJ&p*-4C0*^W>n5g)Ri9C*x2?5(~y~o6M!0P$ZNeWqfy6ctJCrNNHf=rM=bk(5x*u2v)b7POz4}Jh^KJv<#(C zLDxbb3Wg<(NPnN~#;PE`ZI8gHtJcpYz&05dYS<`wk==neN5UiVK0c4s@ulPWICP)y zo7~XEx2S1n%S;!$^DVrh$nCdIlM@eFX0g$ooK9!&K&5Ty{S&xmQNI-(KMlo7w#>$) zHb|llVP^uy4!bQ$J;APZs*U5r%fszZjpxaEA8Fy9XT8@nlZ?qf(9+1+`lpmjc)d~U zPWo1GyUXH@S_b`HVBSSMEenNlR3JjoFm!|_6bkK)V_rQo*xWlIyo9>H^}Knz`eoy% zgn8b|iKY60BISV8+OUyJVhKIP?3~hxtdDWvsP!W`IXTACsc-|9r(7(G=wH{Hr(4xN zT66Bodjl@fh9@6>exPuPu0QujgTcS@++mf6XCxG?_*%=A?zHb}qVyMA=31iyfNI#1 zK;7GILqLQ>!*nkcMyjQ zIqomzi^{2lrbS?|vC+_sx8;eve1YAYfZBh!ftD@~+4ktutPm1WNMEh>aMe?_q1k!n zdR=N*J=)$=ni>-z2>5-ku%&BzXxDzKKu=cgN-4%(|c?2t!IQ{35)!-V|~@9(b;=eJQq&C z)vR$GjQ{NHG-8RC>2Wccj(v9wwd+LlYcOZw`X~h~_4A|g%mcI zs!yT6>M7#}mPmX8B)lO?+}<$jtbWdW9yF+xDlGWqA z27C#}d}ie$HZW9(fJ5qfOTM)j#+2&qd|*Zone$M}HQg*; z=gl8x1?)&k(KSosq9gN(m)@y&uu7I20I&lnlu~lQB`nW4Rb$EN?Z11~NIrFed<@)Z z#I2gpiF7Diqv^b)Ba~s>d#wX_%Z|53CaQyNA1EDW9!gt}T2yG{e^S4NaPJ9|Mx|7w z)f^n=AC(8q*^{N9(*pJTOPCE{PqHRPK)T&ht)d%X5ty75hA-MiSEjaI^`uz2LaVTS z!udhFAG~NxvAML!iG5p?z%H>n%h=$>T+iGP;VIYhJlTd4pQkm~b3YjHssy0TL~GPal`pOCV?gGgOa1s9V3ug8~YeFi6TNtSs>EtSVNH zaO)enU+m{dPa5hTLRVE@*Xy0h9?}DbJn!obdhROWzHxeZQX(HDL%GK~@+buiG*K4X zrP%9g)i)u7g>gGo(#))QP^D{RMBH(C@ULcuLcJBAI4$Oix%CcrazzAGcM0eim0@b^ zYTW>hPY`W|;}5e+3V-w}AT))+9tPtH|(*zC`=X z;3o%yCc}Cpi4DiHLig<{)jbrncLsPsgW?-W(G|S00B25abdFJ}fmLJ{Y?XwsbR*ykg!}Hy`4{8n; zhp^6cVbEecE<}6hWr>61_LuHj#`MGp9^;Fdv&=Q^VY`~DDhviYp@qJ%Ca3SD(hTAb zD4F}j$!Is9xae#ipr-khLchhZO8o90s(b^;s$nxzy-RZxg<5b(Bo+Qx9y6}c%LvYc z>Fes}+1OLG5cZnw(jNY$5Y}3Zt$65mBboFHU~|-n5s0TytgyAq;Ha#eMl?py$8N)$0*xqKtTTbh>+k^AXJ_$>%lK#3~GcDCY9I&Qt49 zXEm@wC({pd|Mm^y%ZE+)^9S2@gGlv&KV~WO)6!rbGMsF=5wv|TXZi*KVgvR6RXu| zB$O%7{G2H1+3^k@kG-HJ7O(axnJwZ+>hBSWjN{^=c5Mzt9h7Nxc?H6Z2DyO*r!y`8 z;pn2peXt63mTaSh{^7Rjw*ZzIWBd)m{yu;<)o}_~4F1`m~Al+4v(t|2VLvzP^R4W_?=v#+1yEc zu>P7ptWf%Gm`aiKKJ;=Ky~>#`Nfr(i8i@diOp>f2<}!~Y@{QMTERN<=Bp4?^s*ofK zsuA3Cv!q%qKH+fEO^kABSAUWC(+C1wth|{jReCQ$abrRtJXM&S*ec{`u%2%2uBza6 z1osP5HVwXQeXH74lu}<~3t*=?Qw<*!X?dQZ{)O8x0*xpGm5r`69i@@<3Ac&Eo@3&n zq=RN}!s{l2(z;+1f*7I&s}c+}XR8%rF<+~*70De~42fTW?Lt+)D$O>1FoWJT378)|%Ru9mAcZUT=8@Tbbij6!_a zpEPK&sXbt1G||vBP{+r-AuTtL#UiuV=|X9#WV)_- zYorL|mHU-(b!mzZU<1jqg~m@$VQ|2S)Qt@dxb#jAk1&|Ncc;V?ii7{rn9#@54W`Mp zL4-e+Kh*3aE#bptTPp>7z0+dl{qZ7&ZeMxap@^blIeUCy+#Oe|(am1a%E`(j_FmTW zP}#d_;6*R)0KnNf4MCJ*WPs;$*Qg8*r`LTHfn~NML2xcDh<;& z8=8*09FpDDN>^dXifa4=oGShRehgD#syb!~fXE9SAPnFbT>kxbcn8ER0X{6WOHzWr zeOW-k%2z@VMKJ3Y^GWP|IsL0Vt$mJii4e}Ji3bi2&b1HXP^!55A?s12w?;*`*J7O!bnQ~j{Khtb32DuSq%_)D zhML6Qz+LYwu%+RM{+`AeHc*H=6$s&x@7y>fgeVjT_FUzj;0Pdzg2j4~VN&CVw58tH ztCf2MhrN)s_yR1HcNm;E8JOFP2Tb~_Un;7!>rIm=4*LQ+x3$G9&NHTR^9-|&qR^jG z#_w)SZypCu7_&O&2WH(I51@*FBpH-8WU7?NgL5yoT+jZrF9^CJZ0 zYCx~GSReQXsC&>?f>W}GzF(8^&rym!0?@&6_5o>cck;@mRKg>uf&4%~Q{Z;jt zuvwCOhwCa+Boq|pyLAUPox9@(g7Fi#>6~M!@p-KN^B>Z21OT^}3n@S{){C~2ZJ=h3 z8^5MmWfAPZhC&9PWm)C1YsN(dSK_#7pk$(QeH-ste_>f`dBIm%!wGM-*r^$@)jxXx zkU*8_F1(u9qV-ua7<`8}t)QL=n<(l;kjcpwUL(1Tk2ER#ldlyhSS(@F!Kg-K0{29tP9H)*fZ**_qFi#EyiY2A z!i(G8K4Y<4Uu>h&Me2_lbaZ1e{{{Y_B zW%2#x%f9^F!l`Tk?7Nw7!UQT#8n;XCEJQ~=e5|$BWJO3K=BS+KqM4}n$_>0S0lj`+ z8o(HRXTy2Q$;lbpyWieZaVcl73h%GWr#BY^95O=MF~1)fa*>TOY&3QID#yW_`!0iE zUY>`o+#+cD2QABV33hqWr)k{TCI{wYtU!TVO)$5BJRHUCcIP7=;+`wC;n*R<>?P*} z%LKT-OS_i(@Yx$88xL976yG`CiMN9zAK;XF^S)Fa2Sr7|7Q!0{CYam)6+&735;Tfm zS8`lC9lVbN0gjkzm?xQskFF<=H{$W++y5ms(INCwir`{v4ECr#OTvbMNnu$-sHYY^ z&s-pziiTKhTd@a)Zl(J8RhgwUn6n$-v*z}Ds*H}E^i~_pEbP`V+%3}sk}k06ERzmt z$}6usDCiI#r{Pz^u&)wR8fevi)J=4Lgx(wHblAYB+QCDirCF+bZVeYHp2A?A$l!i) z`^jf2i}q$%q+F3-I8}=VSCUF=3zIX;gMIfTq^j)cl8SRtK`?;0lYlopAQW6V}cVb+?>^~Wvs zRVjK(WRkz`&bS}|CP-!ZiV|zOyH8ehs@P3HI;O<5w9*?6-`bFKq{rFitft;gkRhQ+ zO9&=^O^{?w|1m*I&))wvLB@oFVSJQzOp*^y9uYjx|56dy`d zg)emjCf@{w%e?=%6O}N~)ZIc`B=<_0f2gI|8q9n>Kd1}wGLgyL?f-}1=tn>0;FY_! zz1q4)oaZ+;{VK9kJIq8De)$Y znKDR^Y+sR?rnZC?#l0YSJOUyjT1z-f^srGd6G+6+kwlu1+tBWU#!@1HSy8es-1I{L z$Fw5zcnULRod!CsCd%c{F!Ti_A{I2W19Ei|&vs+mexvTw!q=WaT?z^cJzuiGfVtMS znI?67!8i`x`=2-7Adt|iOq|aX+5Da!P;6`n%f7@`ecoI)>gl3?OEt)M#jb&7bs)$` zA*1yHX=&RWzbAJ40neKeZu1&*6e7Uv63HOh!W_p+b_I7At36H9#_^9LHDPD;ZV$xN z2iOCj3B^UCthV1JDc7rCl)wFfhx>sET*c;)Q5Oww&b~LfD;78#bO~W#bPc4oC>--7 z{$&dy(ylE5bFo_}>n7d4O=Gu75(y5d=FA}utBkxT+X zH$g+9H6H>v$skMi8ie_(hI;Ww8-M_{g%&(hkKWwNiG220R#Vb3uWsjyo}++tZzgz{ zb07M7r}BjJex=R1vaYbOT5ofY*AE98qCPyAAdeqGNv}(`xQMtAGXp*$v$rsgM$6F9 zFuPm&4FoT%T99Al7upsNz`TbrjyEBZ80R;tkoK|PU0#4zlj^UbZe1F9i#Z@Y?c(~N3U6NZU3lNg(igjeJebsE3L^*&da;hW4so>)XOl8!QH<=Tqm6< zAesXTWWeoHi&XjGX%tkUH4+C{7w0SLOpW;|L0TIbCUfkgEsy@U$eh?h1H0|B6*a*gkP?RLb93iPrOX zY{<1_$)ozPCRiq^dCz7KY{K6f0=an`YzJL$buo%_U7_~~)_reVfZ%tZOVm$2=G>L> zZp*ea=%?+^+LW#D&UherJp)b(8ueojJ6V@etve;qY0R<X1>S^jnHe|CO>(sWkWh zXj#$ZS_qJul$(hz^GyF8gFtJJRScH@(|L zBdpcepf~gMk24NRrCdAxN)37!x_$_*s{?dn#|{qj0k)ujtceYYHi70@&0G7j6F;l9jjcm6T#5 zE3;Kj=n&YSw{SS1aDImwpC6 z)@Pb%^YbjJext-1#5+i=1*>!TB~)DSH@gv&g$tvGjuhrNQ^B_*JIfS$s<*^Z;D*i9 zk=JmGg4H=Y;AaV%f}I7Mp@z?A1^%wKe_PvVK-PGAwobZL%qjn2C7(MeAJz`aoi<+$ zY3094D-qBc%YTV&P*DGhZRAI1EW!V!)kQ%-fFRwe%93`Lnk)U<-q^^BOcz~KTncj= zeQZq9Hd-f#$=_0_)+1K}9)Q2JEtXECC}1riI>yO10tj$OUy~_dIU=q5ZIY>xS?48# z{QAG+h$*lm-Qxe2--xN3%|_-)F37aZAJe}5Dt#Mp=*^0KDeQR~4hqdFF#n!VpcO~-9j9s`h-RyP zPBGLs35>-L!RvKvIWUJP0NG?gK`27Zx>Dy&`PJtRA0DjbLdNX4zeIW2K z^Munmg_Tkau-}RURL#5Tas!qyO1_7%UUB`0;rhuD*yV*#B%lq~SuS21>poGLnJTO4 z6D5-Q%_(jYh8s=0q8*%Npa8UmHvPN28>P;Au7F?6-6$t3rR=vWe`3Lca$wUb<}lJblg1Zyc#wHF+jUtkNHCo*GDcC!{h)BJEkV1X{DU2i&v64LY_L54VcB5iR zFrec~rAZd>y>{A<@3`uqt+oD@lZzO$0f3Ar!|FTLPlw4yR@_dT$O6tbk+qB&L)9|( z&cgTbq2ZA^qbE|ypXHgoyW?`ZQr<7+yM?EB7%5vE&Q`JSXpSbE%>LBT>f8NtQ}K@Y z{Ee}aqzV*NhSYyYl9yvIFe7R!3VyT2J;LbOR*-&sL+rW3BhV#O789?$rPD5-@nY2+ z6TDoba%wn32%_pe_ZzxD7VCOrrXliE5jfn6$!Zn3FEuBqhpChnquoYB`v@X1go)Q= zO|{iyd!!{q_bjuDsEP8?rtlfwN&Uz=iP&_gw3;g7LL(hes8P|->iwlpL9%8)@aZ!$ z`SjgVv;EdEGOqVVr>3=}mHjxM6q{6tf!iU>RzR9#TiSGa^ z(h-HE=M(KtlVE%guK!Fb4j#4J^YU`Ocu54n7)PVFo}wy0=C>%iM;O!I<_!<+%T>wk zPwC><+xxl@UOWseYWT#?yISH|j0j(zu@W@b1qFR4~P623R= z0als*)yYlQm<|riN0V4`>dIFS&A3JD0qflqviJJ?#e`HWvPQ`GCDj=Wsu23cK;-e3 zw{3UEqzx92GLPd#yC)h88v`eg8RN1&Fwyu|@ZXH1f47Xu+gJ16)dSGD|4kB>JCz>* zygY$B?fP74Rextzqn;33PZUiZ2Hbt7EXCi5;0DyK%wij2rTqX`=)fukFxpIJ13dXL zIQObVB{u9qMsjUQ?&Z*y21jWm**k_FmMq=^g6jE-bzdz}6WkE(@(dtVNLV_h?aVnQ z3D?_Sc|61CebMz%B}Z;lhx6=H3>RUQ=Yu=7-$YD>YQhQ3yj!q$!lH~5Thaq69$eZR zls}0ieERrcZlwtp(Tzy2 zI%BNjq113fI0nb1XsDvXPOVp=Y--Hb-ckJY3+vBxlT)MC^^|hOE(aZ`8KIBv6fXW( zO7AYwDlM}rx#Zc9PMW?awe9hR$o!zbcZ=CG`;r+vY1bV26B*>AaAf6%I3s>qXz`kK zf1@TlG+hKd#GnpWUl6O?Qn4Hy>@mNeMjrozf2!_j1euH@@(K8)Gd_kO^o*?)cx^2$ zCiKjxGggga{)2?NTwR#qF#LxJMM1tUv=!)c@N0!%W~!r=CGmW4P@JLNwei`YX%kY?{~fGS2i0t9o=bjz;H21(!2Tw-lEJUvss1sU?{Q4wogJcd+Ga03I5zu~YsNeyD8iy@7OkaWfiWyh$`V)Sqo=V~~2sANd0M9k7Hw39|9JX_5o}Aj)FcPIg-y=zSgohXFHA_3$olwA`04K`$j&uCr5mY6Jd8k^)Lh+tj*f+ahwIFhGcnAR+A3XD zEQwAGMa>=zgrmjbjBVpEcKq`}q7{WYPwx@L-Qhf;@qZk)v);&>DAA4#bVCDK?@6K5#S^=tH< zl6=Hvl%b)aQMIT)sGxi6ybAI@jV~(_*Mk*O4@}mZ*p4>gee8tqkZKchk9)9gy?TzR zLgKdOU4CjoOX|AYMvs#gw^ouZ1tw+(i3s-oR2jt)34PKMHL($e4-dmP`xL&Flp;nV z>4P^&35d+ov%Lo@-rlyoJv`zaYu({*T5U(%c3VMAv{1m&nMaW!RRa64ew)B^qm*%v)ir$S7uS+OWM_%dNDwoQv zvGK9>DL*Ou8?BoY?`%F8C$bfm;xf$crEvOfxm@m7(_ntNKP21R3*`GmEP#C9^Trh6 z8G7HdLgGMjXNCzwrMfI^N*L8-krca;j83CFyq4=oChxu62`H`>F1yP$D-C>upz-B6 zXfJIBh{{6M&|1JVZ92D2!m-N($TO#{yrU49$l;xn%i)}$Gj(iMLu{H?i)rKbbt3*x zXRni0Q0B_l2{2buZZzLb>Di(Zcjw1S4m8>ipPn;^7);J?o;!QiQTWj_3;{s) z1A^A(DR8o^G7z|wOSAw8i2$G8Q{5NGPHh}f> zqZxdLgBDBli4s>lRO^T6nL4s_62soTY1L0FOW0b*w>?V|IK%~CHV)v`7E zk{sWtd3tqOU_}f)_bg>TWm4Nr(`E@4sp2B?+MmcLk{?8Vl-evnrHG@P&3tS0-V^dF zv*v{2Ow6n0;5*B5iqJ*zY4tAD?lF)yl1znVEMz z(XxOKd9vKRSwvzY_?6GhKAAv|&3s|=qCiQBT>9iPE$|&Up>I;gLFWOxV|nJYV{KaL z9Uan!m{~uGB&A=u|7qIY=gyGFAJW|k-^sB&RJ)g@tQm`9X1?_euS+vlhfU^Hh??%q zST(vl1sR=R%vTj_!0&P6&X&*|t?^k;h*&bAFq}Atj?`ov|A{mnA==B7ivW?v-;|wX z0FG>c`+jF75_`CHd8uVnERy+^Mz*Gq$~M_41@TWa`5$BD(YwdN7Z$mVJLZ1{3Av&0 zBz9oz?CsZMqUCIk%g4slqO$W1{WRYDlu!TP3e|=-q^jp%S3ZkyxDm8^?cDA--ndL7AjFO&4Yx8{3 z)Z1hB)_@yjOLfWVp3?wN?ZV02@OckpXM&YT$dhDq*0IknU+4Ti(7~9$CY9}=SSHD6 z)xPJ(NQ2-j)tJ19OZrv4g_|IKm5HE7LrCqHTF7WU@hrG(MU5Hf4v%wlCo}c4kYTo6 z>A7dt=d#2#x{MHmGYfF%VtbH3>`ye(n;xe7`sPTBNh}|X6&Ri;K~EWQv2Rxop4z3^ z%X`S!}HQ;ODZrIM8^H+^{iUj03M*5mD-lniGWN2_w? zUDPSDU}UNJ#-9`=b&(?f@=IBhb+{(b-S=A7G|Bo>*5v%Rtf~16us^))rLVw@&@TZ8 zgDRc4=4SitJhvaL3-1UB>7n82n)W#IuKR!ime57Nx#`HWng2XhkhO~P zboH;{y4CA&efnj%4*fb@pO6$x0*33Hufuik=R8ywhCO0x{z^XVcpZhs@kYHBlw3(g z?05s}fv8;p6|=s9f+e?u4{sq@Y`Ttzrm$zx75QZ{)MJ30cbh}232z-b>zc`x9xabu4CECROGH}zitW1WwU7LzZ{D1a8f@O z+2%dR`aI`iP{31O$|Oz$!}{N=ADy)qEQT>_ezTi%_^1kumU%_)aM-1n-AKx)?00!2 zF)+Zv<{INzv`2EVSP8l{c(09bv#UkSg# z?)ck2K4q&3lMi~WjcTP$oF6go%ahVr1NTm$E|6qeOZTom!%nwnkMsgt@22YI;LTkr zxU9b{bgyybb{3WlgqMc@w?B!Y|4)CCAp&x$K5@|3(7*tycu}zuJ5e=_N)5$_#Zq~K z_MfHvdZmh&U-m}=T8^aZhBa%1Q1H>GOT0pk#iG~KQTdc8WG6mH5aZOD5>%THf6Q#5 zC7_KLQg8HbRx}#8@#c2_RyTV0tp)>Qw4uo?wzr3^4l+RPPwtbIl|$M7@kwUKd;bPH zuXCdG=TwCjCLCBoU?Q#n@Qj2WXh?n=ZK7Kq0-VbX<8EKp`|0Fu0LqGW^SAd{HV3BN z-c(6Z1z1AYG7?&s;_$A&p0b7ZBsNtXIi05EQnlHK74M`Z3>hu5&Eb?o@!z*NE~P=O zlAv@C!_h^*EV%SC2Ir99bqZxF<)@4!xa+}ujZ=IR7lH^B-BN#K z7MG{=_oRZW&|Eifq7S+572mg$)zX|~nwJc)9o#Zj>pxrbx_#`l8-o2R`=slZAL{|y ziwO6SJ0KViNt&O6FxXpG=hXMuoe~(X3sfO}q~vvY&tkfbfHQlj+1+f9JmkL%%Xqf| zIsD6;j->QDCUcQ<8zcK~^-($zh6dA0qu0v93=9HtB%)nnywOStYiw+{7CP6)1cCDm zfLia0H!Qi*=k3_Ww0HR8Wt~gv>ZZ4igA`GSBm*@@zp}_M;lEL%ll>%~!s4_(ztVpKb=BwFY zu7bjlMe^?U;PKuDO8ku%oORewc)qV}tm;pT0AfQf2&Vw5sxJ zmd5-2tPaZ@ah8Z$|Lf}DE)A7K=vK`{d!rGUZX*yNL86XUNV0Z5GjTnpc(q7|xCYr$Z=j09P^(f|uv4#%u z;2SbU2QiGZLngvx{L-;7?lyXYd-Yd7UVj=f@C}70KNMq?N3Pd0uKT2cxg-=AtkQnF z5fbd<)PsJ=4zSm|ISG)T*O1roW-9PzIODvt3%7Egb=lu_bZTf?T3Wq(N8)@qr%@$) z2(3gx$ctkC@%brUOaan*_RqYZC(B=N$`wti!TVVvJtFEW9ZZN`3+)0kvcCG<*6?6y z?#t-joJyx6!9aaC(gFjh^Z{H3QGFANzMrqKcC_D-Ea!{Q@StL%{S{kOl-zZ}HF~}T zPPS(AvNP(>Aq^4fRT)+*au7v0-TSB9=p!+(TKn(R-*JB#{)!`=H|**i?yJuV@}HUi z?GIqrx9lp-%Gvqy(lhrjZ%5%>G3ZZk-5u8)*g7@oF+N|Ib2(^36pDkjQ=zb>A(1H1 zx2Mws{dZgYRX>7p6W@#|7Q^7dVeyKnq+ULDt(J$GNT5Rn7WEun_Oe=kNpRS(4cNnr zp9q*|^Djcx6U{u*b4#Kbtd)zyH6A_L@zOLy3}YjJO$7bSuGdnDPJQuvUTV5T12|yD z=#wZo@e$!{@1yORtT!p=#1k8>f4%3i_-ZF}3O@ZkTP%au%Xop5-|kO{dM;L>LnVv@JLbvctpQCisA15pBNzzrB5Vv+WIUnSb(O6z$n zYGNh`^mlN;Q#gmgW;e8XhfKTA24N5F0ueXY$MFs7kELD98*S(G?z>XW~$ska%O; zljXgl_$IH)iUfVP7r3F#VSpRbSk%gd|Zf2GPmNdkHXJXnJdAvqQ| z)}tVMg@U?r0jXb2dS!Q)^98A8q`nXt=onTn>4hUicDSTY?n7@&XPTD$yc;9M%%pqk zMf$T&w3V=A#}vb4-C(|?I57Bj;}$Hj6AkLo&WYUGJuLGj8auDV1teoj2+v=NhOvkbpfUx|$+viSl?%NnU#=69z02<3)*QAlo!9*FndT?h5 z0<;V`Pe^d8J|9cY@{uL2YeXwPWbbX5Z7@-W7q$P0WskpJ690$L=18^&x`q0Ip%|&y z9QqKi%SWPM|B?E<7|uHbIN8vSqpM-4sSz`aM8G*4nUb05}J;W{>GL z-0@LnQt965Wci7|u!Gs^TDG|4a(Yseb~nr>r!J4rcc;Zs=&UN`NuL*xo0s9KIiP4Kd;nZXX!pC=p=RDZx+ZY{bNiQH@Z~tjVTW?!WM{#tSiR0>i3Agz ztCUTz`q^$D@fK$DIbU*XP(PSfNVSr+wd`Q5=63)TV(c6@muiu&7m$Ds8=+GX3*MraJ&>r_?r=8W%s&TLQWpgF&w8fE;$ zcN^}yTUvrb-82X|&Nc+2t?%OMW;tDw8*ywFMi_ z;ej*2h4V^X_r@&FSFUMK5SvJZG_oJ#uXr7`FNKI~I`y!AMTQ*yPl3?UW(#b>FUmg! zLcIlM9>5dM;JpiB`7Hoe)GH4CO8bQD)1FMPEt0DLCn5Z+@SlY6f3ONzkqsb%RK@!F zF{(+o$`uMgy?LHqQSb6xf1QFC)H_SN)o0-24cr00#hTn^)Sc(N@Sel{HXWIyyL9T) z8(eh}PV%eISGZhrqdr`VGHQ<)p`S@{o{!mwx*`t@h}iuTZ$8@EDsJa0W&}C^U(7fH z!LR$mqye=OJF~WRNz-84fEJbSW&CQxz?=B+Ur>DR(`y+~OhELL@s9(=DHY2%+xzT> zV&`Qpbqt_*?;>9ii-^WP>-N^}E;|Nz0I|60{Rgp_x2$^&kT!X|B^|Ne-`(9Md{09{ zvi{KEFvP#7O)M)b`(SsvcZiRHb9V%KJu@5{j@Bets&y_d$+Dy4+4GB23WFA{Q7WOd zdXoxUYS|*(w`(2^mFlG&2Z*FfT&mCY5}L|cWp#!i>`4pT2JN!MCNJxPf8d*|w|;C{ z+Rsu45~(hEW=alW4hx?2iZpvEmEX{$d#XDo1iq$E2}+$p1L z06efyD)P~jNc&Skq!$%E0DgUqsVEXWtxZB2ysI=HGB=;k6bG68ZQsVTSRHT zde?VFy2dbkv_YhSDLMvVa-`HlLRWr^*=Vro|AvtL5-PWPb_-4z5u6l+(q8k*c|IjO zVB5+KVm{_!C~8@;yHUR(*I8Nslnnh?0l@6S(VUvS4;MoH0xC9vCG1l+Q?^gVz8QM= zSaJ^Q9D1jTnz>VYe_3-nXK!PGHJ2@xA;kNO)isfTPlW61bMe~0%iqMuwR;1stAZ~2 zHUIYWudv3VK(=qC=_@PBt25&h{j0%2z#M4@0o6;aZ(AD07qf8XTY8?rkdFGXzi`V1iU zSf*QHoA3A<50hZ{kHfXIezHZptc7k~*N@IakN4LA!l;e9i>qb8iMw z`nZWe>#W5)P{m7{?P@zbS@! z`!gvTx9xtLG$@Kkt{#B%a@asBo+y4Dq9f6CVRUs>QsFL+0#x*+C8%-A)rI`@C5erxTfJ!fP!5ikxO)oEM&P+?)$71s zbHOw~XX}&kVo^2gQ{i;W9R+KFI6a3X8#qMGq3QcUM}+@O$&=yJbHl^FP4f!|N`2R- zJ>+!Qj{K(~sZE~-Xn&~=X1mw6{l6G=43Ht5EJBX87tMQKq=r%%QU0)s?qKIMjT7pA z%c1!%6g_$9f1~JSXfJxAxWyG2ZMci`d-x|@49RE+9(_mHVXEiguaPLoP|_H?BjAf-0C4^h!QxPD@43Vuuu~cr;?z3{wms z8H{3NXo35`2H&x7?yoa>t~wyGOS+nYjugwq>f56w%q&^QQZluIWS|nsH20rzH&BU$ zfzyVy&K2{J8c`dLko?Ac7~Kbzw2`q9$xc7fZyLxYHRmPQ29n zdx8VqptRXXPXm2@#!s7XQ`GG6u?Hob!=l$wn@K0LS^}UT>Gkw+PM8+I{|)skix5Sr zE=R(%KMd1tCh;5Q!C^BQBk5yy>kwbf8Vx;oI*r@-JdX&w4}PX-1WQ-F2Vza8Z*V<= z;r2?bDtG#AN;-Z5varib(UdII#b9z;K}z;SD8F3{WFa=3vSt0PKEo~$;sgqwDqaxv zLhmQ$yiw>r%Zrg=l?k-a!t#@R@?0`C)(x7e{XkKm@F+sc6{1{6Uf7d$TCbJYWvTVK ztz$w6`@;{fKlFN5E`Y8lT7N2B$7jU&J49At{`#as7uA~D9pb9$OhYqH>%+sJ3CxR= z0TFo<8|sC$C(q|9?g%;kvuo72t^E4|)mKKhLJYe5S0QMvTO#{U0FetkZm+`C2_`H< zB8v3Ek9XWzS-7dUOYp{>j!A!VV>pGIh2}g=D+6q%OY%htw>~CDRB#aUG-($UU+%VV z==ec7Eil7$dhulm&fq0czaf!w9*moYvzR_o3F+_r!1h)du9K}$H5*a_Ybr$k?6`V! zi&~ZF_;~#m_LC$^Bqprli;5e5QE|FrGae~!e1XcBw8s0?#ODqAlBb&Oq98BNe-*`sU3YX$B zupLaGLhb*4aM3`3D}`bHQoLl902D8YlfAN7K>H@d%aDPl2RCj*x4VMvqe)aP`iC{r zKs$rcTdP){nB))w_D^9Lr?euuv{#WI)xY`5dJKhrZN;b6nq3;x`svvIJ0>rpIeXgs ze{$~y$}=P@LeeMy6tiBa7PnVQT(wJ7hIG`c4o_@{cYgG9M!Q#V0 zYw-B^nLfN^ZaFGP&N>&=&c}=%A1;02b{WxfIcjv+A@Eof9Zc%!?jbmN##MmN z5y(YNQaPHd(-{O|F-@F=bn|T)@+4fmZLs2hYUqet9vn?X zU_3O)ZX8xpY5+a!8$O{db26xG&*dfZ<{0yMX+de6EyX3TJNgy`EDQl2EF4Tj7hO0R zIYXJ-+V;+R1 zpDjA`mJZ}`U{z@1NG3;*pod34fA#g!E3*$%Z(`UOwA02L7MRGYD1c_uF24-eg>97- z=R^=!Q2?g|Ljw&L*hBgjExKo$-Te9`$m?-K5?Fo1Yfb%;3jObQz5Mk_JFqOMS4dpk z>py&X@swa&zP_HlU^_QD3)T9;)MjVfExaBy!xaKw z!ZDih9GEh+x$k7XEGC1437CJ1X-D$bYKZl=dDk4RbbZ$eNHwSK%U5T2v*9GV6N5;5 zjLXI_ffwL&yP8@Q`jX?9(u7xXSF9|t+F&~W+|g-$7NNVyZr>Fqzv?j&Y^ zRg;a(I2%#GNa_yl9axDG#l_NeA&0f2WEu?K&BAFvHDkFv2^zv@U`@(5=s}!cMH0B3 zl!WTpbQ>L%()7y;L=cnO8ZaEQHKcWqAeEzqpm{Jy(?(BfDx(C)VbPd*ojH&o8mW6f zh>E%CUFV+ler2&LlxnO+6^jAAmT8CINJmY{65UHD^r>+wxf4T zD+IEzaD3WHDlvHA2q%(Wd_Bscz)ISnxmcqen7xf@0yG0NJ8XtCJskDj1y3^#^IoB$ zzMT9ED+h!#9Vq#VY}f&-$NPKiik8d_JZsfDU0#JR;moXzw?9Hai~|b|{Lh(KSm0XS zm??e$;MT`9NsN}Vd&S!gV4o*i;4z*nT}koP!CV+jNxsSP;}S~(Dp}3Q#Kgo*sV2Ov zrWL-9@;iJ!^UWS77~Wguv%~C81#muL@PU2x1Y{;l-L@jvloQwMEP?#OQsw68M0$Gp zbo02C_X!Qsp&zUlmI(OTPwA2geo1wTvnnSnAX=-g%){|}+O74k3cV>R3~CNrOo;AE zQMHab4GB+gjfyY%D!g+Ej!8p*1hIm6w_$Y}K$RBmR`;8=G{SF{Ce@BB)>6S&AXcp3u@_C3c?H$zpRld!qJB3-E3;PqX*2~rU zxN;~i1r?l}P1c0OikR|#8(zszS-iD@fLmdFyleXVBO#{8b6xJBJXAb0%YDgQQTi+e6FM zz}CkwDi8@CxolZVb)EME1%|!j>SMCMW&}HfiJh|wa&Ko#mxRUL*HyC)xb92sj$l0^ z;Db7VUhjdMurY?+`L$TSa(wHoir)0qqGy>6@R(l7?GT0$OWM_d0yUK`YbrH zl%%B^7G<5N5T`>MKiM+jxIB=&qtcR+YhL8QtV{+)cz<6zlTY_K?F-b;D?Z&))6C3s zmNQ8nJTz?+Qlm94CYFp{iTbZ`XjJDPI2fuWn$lqOb(4y19LJwv{mIH;V1Bc*m1tJm z7)-0Hg5hPxwG`GUOXFbertO*TV^qo6CAQoXOn-}k1ovj2hq9P7a@Sm#TYJ~H z%}ak$XTQe;%{e}6BJk|{CdAnF{v%@>lR)6=psnS^r_-48A0BQ{5O}Jp-h-!6kX%3A z7Zw)Om2WVv4ith1OwFL4ha^%tBa< zz~Ne*F+5(fH^C9CcM7~(o?jHaR^8m=dL-}`cX|0ik|y9mzxB27cSL2=qv0#uw6oL0 z82OTxLR14E?rsEEfxztbvLY85ADhZvI6nor73EukgJTegN|!qn#6S@Ee4Na;`X*RP ztenHpI6P+dSZg#rBaCDfF9-vME?8wBOrh-CsWMNQu&Iuol1xo1oqHAI0nW zDh`=S_4pX-eV7aKf(z}u-Xx|DioyyH(Wu+KtG$f4|x5=H33D_N)pwP4$Hzq{KjCnx+f_*3Jxe_P~UM;%nmppM7Y z+(8{NP!O>(o^9o0DH00SdXqC4WuaCPi;7pg-+vqTVJL#1{sMM^%8!DFx@|g;0eprB8~(XM5=M+q=Z(ncTwm(2Y zhk;;ATl!LRQc0-k#VGW(G8|OQ&HC3%tYA7q{aD(9#ax>q0udn57ctq2iMR*TWv`eQ zMDPXycU?tgwn9?6JuhqiCL>sHbbbeq;*OV;gOd{Y0L#~Lwu>hCt z9u|yY8HpbcDKlL1b$H5R7Tk~uiGbfOv{-7dMoC7s|YQ<0S+k6$woGcTRix*nkmgKKcw6 zsn8fD8h1ZAbd(le^*%dy)BS5^LD50e9!02d+9nw(x@as=DAvom%}f8u)Dw@;$C^3W?nGHehhx5Wm&=@%Wx*cLl_CUplS)H+xIkrqw3{ zz{OFIoj4u62{p^M4+jzbCWK6xYv?xw`OscjNns-d4TebZ4A)~8y>{+FOyt*zBj;eW zcsqpC{heWlq(gJ4p78Uvh=R&d0aAO<>01A2W=rvG7n~g|OQ?HQF3Fs_X5X@PEHi|e z=&`pX2M=;l+j6Ut(oT=8><1k6)*ehdSn8g2{4GM~sr$?ALH_#ecXY#t2`CJ~qq;~o{{lIcltJ->! zoSf@!YY@}LM*PEdH@HTy-2%1o4sJTcF|0=?m@YZ9FOl`cHH25#kG_gCuP7QwS|LZ~ zoe_!17?Yi@Z;Wx?6O$*&Ey8ALqmg@09#?1VH(id3oWR4QyxrS`i3&=FfO6N_ngUcW zR?yb&(X)(qB7Sr+`>f$U^zESJi`yRtgm5F@R-RGB7|9J8vpE&gs0489TT^U^8g`&> z;^9nwWkk`!s-GE4Ixm)9c!z=FzzS-Hw_h{NtYjZs(Vk&RF`6_`$XY&1(&F0J8_bht zptAaa5Z>R<26JKXhQKNoT$-2K%cf84c|hve!RX$$IRuez4#q=*q3-uL0#-UYp9B5ep{4m!Q<}^o zw&%8ES_wnoBrU@YS%aQrbsAUgnAx}>6%4dIxXC3l;J#jRDAgFtteYW23$6FX3ow!Q zvN7K7p;Fu0~*mz z-CCm#M;=KqSd9I83;lEC6`4N6*r4ZD2O8Fd;R4 zUJD4ZMceh39=aSW`sw}?sIUmRdJfP;$-Sj-Mcp0m<%-WT{`pQqEp3gDvb8S zC02e5w4;U5ZR$8xz(h3B*vvLhoWl*9h!(Y1=6b-w3)&)8=kd7%3sJTGg;o(?IfT<1 z$z5lS`!HQ@)7;z#tooIa_CDLKShluy8XhL;=&Z9@5W>MkYwA!CPA}@3d_Twc1_AF= zT9*dcDROlFDy8A(QX}4A_a<;RG&MIL(cow`uQC7L-rk36#09f(KC1WR`l*ZRjSL-K z@$RgU@Rm@ZD3}(-+u5pFr!Y6@Xd3+=SQ+mRhQi{V5v~SRpMwL~4(z4<**3ltekLfo zyIhMd$9=otLqj`sJ)3CTEpGuU5wvMZ>Mk)y#gRYf#fgD+6V!Z|WhA9P1p3^HtV6Wa zZA-KFa@J^S%u@9FGJc(h-QLhEtI*qsn9B3=(0(TzFO90f9oo4D8=yV%#lfWWxo@~% zaJ_q^#0RG1L(t3f>ef4=%%v&d&#aA(q~yS3mYzy?gAgq(?Mdc}N0yp_kdOq0*uHvO z<{Zn$aoiQ1hlh$&VwqaK3Hi=}HkQ1zmC=+uef6Get?qd*q;feUB0u@blZC{C%^KVK=fcBk8Hs`ktnG_08>$%B0;&l%ccFUpwgmF9SV7`M1d$N=(1`po6(W&e7Y1vwS&4bp z2<-?YD*f>&Ufl;jB0$ZzH8>};Sz$Ryr8YI#j4ms3W8}fZ^BOxw)nj>Bo_9~I1u?Cy zG7@_!%rld&s_tFbx<_fQL(ZVAKsVaP*5ts>#uy`o@7g58ze6=` z{bMF1<+`53tW4(_8~YmcKLj1zjTwRd&>GFK(q0_S;LE0!G}Qxc;D8lk_VUXRox{O# zG_{Y)edc8DPkZ$hT#}F0r*0#h1Jd-}bh*tCHD%SAvB;|EAG~;3PS}=#4LCyP)FmOF zFx&5wL1p0R9Q81tu8Eiq$5JOb%EL9$7J^eDx4FViU0bb&=;$bJT+i`g8QmJRB2pFd zyCA5oqK$#CaEa8`*4@r;AN1`#DsYF=Zh7~uif_DR!rZ-5qG+C5q*K|Zb9J;`4|imFd6;@Y zrYtg4pvU;$k=IayOyDR0k@a0^XqVAZSI#zHh<{fs;Hh2!vIDY94ff6#&th`ukpqp( zc@G3_d71H9Px^9q$i1GhVFNJ?2jd|Wd(p9FFyU_f$tT-FzXEXl<{5k5^}z$)AirW%+IwUUnOyTmiPib`Hsp6g+tO_xm$Z?~x?ZG}M1Vw;ndy zlYMXQY3a`|>#Z@JmK0Ti$YqYZS>UM(5i9=&CP88wYc%QJYU!YE zA-OpK#NF|PpEz8eC0jc<4`O<5vj%hj5Vi4C$5#{Daov$m}~iL!zM_GJ_tdwFP( zF2eF|9RZ%&O=z=I5XwTnGndhWNT0&_xJ7u(*X+)KK=1=ZNmFA!lxlHXZD_o?g}G~~ zA=!%KH+NaoY<<5JJXqFMZ^&COzl8_cH!c0!P+0%&kT=@b-w*n<!=) zGQFnsGM}`ZxQ^Qox{ZgW!gPXm% z8v>UHU8mHRG~$QFLbAFiuc&H&WWMvO8)HP!^drX_46%sODk#;{7b#a-FAo4<7D7rm z8W|oErWPY)Pz$?KDN;G)8-cKvF}8Q!kY!udGh$aQ$ps@p@nXi8Su${@gjTtEs}lc@ zVUUs*0!6xKW~Of8lgf=aTi>=akUL1aDdLj}`Uu<`Q`Zgyx_+m*EO(`1ED91P(cAEB0qoO+?qo7Y)<&|P(0L4hpMA=tPT;xb?*l{JQd z?_g)GWi@2p6~X$WVF2W3mm{zwn&g1_sEVsHof`AG4|4L=0V#(0J8xTATe^yD|Lq0@ zPG%PrkTFv7*%LC&Emt6?W7$?O%+32JiT-TfnH#r70%bzsvlY(8-B4om=;}f5^uzve z;B7~Xe9zZb)K)tSl)axkf_DDOF;kkuS4e&QAONCGITU?T0QMZ@uuV=*DmjF9S%bBX zn}_WzjI|^xHAQVsylA<0jzaCKo+AH_rh^~h zSRk07mhXsA78{5_1W(H_F4!vAVi^ngTtfyE6oTZCCELjdGspzp$rnsV2_R@G06#$g z%>#j`7}PbE+b$HLnG`0bBj`1#I+vh!n1%Lx$*#>D(6_W7!mJZgGa60TAXjR><#eE= zWu!`Gp}B@`&M_}ppftg-ZBd!|cH{o~?itP$4ZK@0auvJl3k9g@bX_2{zo#R@BK^4) zNjQ6{ue88N2}wyil*T6}BxPhJWF;r2XNBLufquGy#<(UqYKydKB45vz+8KElE?iCg zy!!Bkxi{dGHXC*f!BSMLuuHUw3%F3<-A=1V*-ky4~lS@4J+u%Q09AtH5PCH(~W0tWa6FH?t`E+k5$ zF0eE-*MVNbl;QSb!P5Q_Q7RDki`CO2%(7L=oIzM-0nSwX6?g0k7*`aECpgtlzx`}b zOqGeHo05Z%0vXY5oFXmGwNRj;MTvH@2Ygfna-tuRWd~6g>7h#bDP-dM9oyX{O55Xd zzZVd*#{4v7cobB zPvMas_;zuzR;y>Hj!m8#Y!IKyJAJ(i1MrvjKNpIXprAuVl z4ZDSN{kug@kQJI|u%!%AcIUKwnN9>@HBp83N$P-GbJ`e`2ghNB1F?930bx}g?tm19 z7`ZjP0eXCo*T&RTLq$Al9Lh}Dsi<~f1?=WjsJboQ+c(0(JKMuQA~V|xXTIuU+IN^2|9oIn_8hK6yOiJm=-1aa)0?3i8Jo!QFNU z$~$I9^w2$>p|Scix0`FjacGg)(V4}x)q@o-ueP-^0E)?*u#GZ;e(nOak(OEB*_q8j zCw-mzW1#Qb)3h%RJET3m%nb}V$ZUmw{Qz7PyNBz8Et_iS{A?27#=iPa{96KYgng#d z!{KJVR`;k+q`f8Ms;2P$S19rFFLn5HXtx=h*lt!l>C-h9pRW*)`cart9q;^`j3{jQ zMt!Iz&&lb~W|}wAan2&lV5E4%bAK#f5%6lka1yr&fxcU2li7!#XI2)SnPXSzrIHp%qc!{`3%3IiST`PIyndjnTbm8%p1H-O)6L zf3IY|-(A4$6z+O+GT@oumjdJeyh%qD*-j9_&+zi$M6bfLfAaE^ACt`reD>;dO#mgW zxc2*su#LzZhoyY*&Qs@y7eB0tD&fgZ4x0u0ZNyq2a}} zd%G$6Q|{Q`NXwbDMlunhQ!9T;Q4D5h>y7?fh5yIaTgO$kw$a+s-QAti4N7-+2uMnI z2uOE#cQ?}AAt{J-OLuq2H&OSy_c`a|Pkt)S#aeSd;~v)-x8q~!?W5LdCnuaP2FH;# z=O?EqAJ*2jsPQ`{J~X7vYlf=_S7&d+d>tWH79n#ybHt2Ui@CN;9x+W9=~w|G3Zu0z z(@(7o?NklojORj_&~jh9KH!`SM}bVfBTMnKswzzl71pvigfhd4_tXW0Rg{DmH(Y3G zAq93lpt1V@9wH2O`lJ=C3+qYpVxWxAU zy&vB>3!zfC;#Bl)4i@i@H9NRyV8g1ef!as{+d{|T!hQggg3gL7)g_X!u!ue}K15f& z9pB6S$Mn$^i=ox77VTC z)wbS46uhMJXb*ZPUGO6j@$M6__uj%@Cq&G~GI52Y(C_qN;|e?C+J=Y-su|$kN*ki3 zSOkB;3iXKQ_tXutp|ghVMk6AL!GysPz}D?~9VmP+ag2mpL8Z-ked^kR zOEqKkjF_LGez4buXh(j})o~RY7Q_mJ(Yq`m(v;f~_rX{SaZbE?pYzB#2!AAyo{mg- zosjbVv)kR-%u~iEh#H+vN-gqUrY4k~=a%iIY0L-`7=)IO6s$yPj1|IZ!{n-EOYQD2 zmlbdG&mdkbG*{|GWy^=5zNNR!twX=vlsN2)nXSmv+Do14a3u%rKrD$9Yyn0Nq}=-? zk!gHGBaCq9E;UQdpBGmv13eCoL?hEstqjiN#G|g99Lg-L0fei=L)i{!Pw9S(AJXd^ zRHRSm2?B*!Bb)lp5OY8%-Lxxabg;Fr$ShgDZ<7lQbbw-Cha8jYkgrz+%b_b#CDO+> z4LMX?L+4O3328e8jp_*hFsb|*0ZLz?P*V1zVb`h;|BsZg1i}cf7prMs3ZOT()svrc zTTLVRr1I?=sY@h*A8XtuJb4~+Wbn;p$w7m)m}l9|?26EFr(0BE;dXk!MVVR|CN4fa zX8;@D|0WP?llTDFFb+yOa5q9zYfN|ZF=C?->iIk*jVB>s8j@;lz^!0%J zjo<5z%-?&GC{A9Q*GvI$WFH{qg{{h`Rae{!$E^3DKPKj_MF0AQt)>$ z9?d{dC*!1o3c-5U_)Jrt@KZx+0Ea#=sKf1<=w?N9cIz-dsoFNgd$% z_bQ?VP>_Yac`ywI6<)``uUNyYt4$%c>c@wnv_3zE_`g4w4c(>=zPY0Tkow_-oQcdz zXPdGUM#F_aBnZ4J9rFGDGbT`wgdU92SY2w9PU9HK3JD3RGZPaNJG@5y98+)=zpe~G z2diX9EG_Jl>Lp^ICHm;0Y#bK3mw9Y<}8F=l){Hy!Nsp}7*?BFr>hK6 z=KXyR34etMu*LpD1o3+R7eoL`uD`gA@198Y7F9rS780{XI_zp{MRm>I&TfV#^D|{!d^p=jE-s-4ydR1Y1W?b}2Mq$QEyJ#%# z+kh{BeH`#BchQB8pRT6P`&FC|Qwb`{>dXl1PaEI-)v#cA*U@sNt2wMZu!85iSx`os z^M?Odo_ysU#svgxz@5ju?*D8Re(sQ!vuZq=M+Ho;$uCQ9d{6SEC$i#0{;Iuyq>O#z&62r1_f{Q7#=>e>fz@yHMlN6h1O4s)3pAOchTNX~cO9Q*JNKdpNbR z-N9mv&d1mrk^VEE)F>Tg_d|RF1st?K_1+P~VTdD;gByT1xXtr*+1*-=@I2@)4_IU~ zony+*|JU%J@pjDgz~Z_!9Hx8RmYq884W>qj+%Hz{m+!5|=4)~W3qpV>;dv9%gb^u} zHUEL7hY7|VSbSS=ma%d>w0tN@|FJH)O*CR0&SaE_-9ii>P8*H8qhd!s%g#()yIdP3 z+Z6Bj=Y!bC`w<^5WYp-Tc$LC*_+_#p&+OL}z7{s|gMgJ~ZiAq*!>PCFehHN*U`l`0 zhl9Je%_i~_k9Fb1SQ3-^UQ@aVNcu6QG4iVgcExnO2RcpH{a^jfdc;ggPDDFOivnPl zpCaDPd-MALQmjve4Rtz5+e2<}6wI(BDWxMqfPS>DL7E}tM8e^9bk)S2S;*QR{l@-3 zbAQG}z{}QY(@ubpr*(Q!d-0aZTbdP-iK>$ zRNLee+p4W>L8t=gRxDvZ9a3&BupP}2&mgggwj%j=n2xg|RWe!~jP&7UpZMT1a@Er}s-(k4$)H-jEy|mKg@OZ-bHAU@Z;lwc5Z} zpqO%HQ?C(|f{6Lxc1C1nq8G$OJj#LAaC`VJYv^_S@t7EUl3aw}<5zD|=y(+2%e50eCAeb$MH$9qv zTvI>9q^OJ>uD3ya{0yXG-;yXC=WPW91SH|Wq_VPPJSb8|`gjpmc_9P@1U@$=w{4aI zcYNZ2h$soIH%CPVPxrjgNLP&x?^sAT0ZmLgE9^sg^3x#yZ)2SpXI7>^Pu!V|bgsRt z#Oba_RHDirjavpZ))xjdhlE7EaKlSSAB%gZ8J5X%?pWf z37Pjx1_34i^y_M+eb!+q`6$h(j&4rGB{~}VCw#aa03HlUO19j)hI=wU-a$eG8Rr>hyq&RNLRJ@hDF|(-2UnPiKrw2oT)$qCG=$4f1Ubzx<$pJNKA>rV0E8Hf7f^% z6#q~D2A9*r&cR|3R7l^TDR_i%ZRyw?rv+#O69rQsPZ6&46hH(pln+jd?)RA(^%3?2S+nlkLfNG zTi7Eph9Al0FEUy_`*^8sYG{!3oqS$9Kple6ClO+P5R{c`1L^JnbTiC%hyWy1B4qA2 z;MNi<{=$K90Bx&XVMt<%ME$F}02Pqtm*l+zYw>8@yO-w$BPqh)LC-#~F4EKv?)IJT zEHVZI;3UXWUdhT&|FG|lK5#u;m=rxwxc|}O?SHg*V@${pux$DP=~BQn$c8ZC_0)mx z6HBTfHLyN4iu|Zw_1l$C4~+AI)V-&&ynWQk#_Q`BIo^0IRh{QAUHa0!vl@Du`3Rl2 z)5^Hrm?HeMoJ*^*OM?!@tu?33@w>5dT`{p5v)K}-oNNZ(J8qI8y(e7VUeV-kLF0&E zhykBBCM^yZ+rUkBHTg%$WGzA)fONy}pIz!8@+uue8rj-xqrJ^x=_vp~5Roy?@+v2z2PG=^Yfct%u&L)0+JE2c8G=2a~ zAcb6UUD+<&Q@RswA-Mf|3)MaN96o-TvxeW?5x7Rk^b0(kL%-~SSkp^&N&MPei%{9Nah6a51GG7QkLnPfuVa(u2 z$CJs|rZJ`(@fE%~t}feM4JB?IxRiX2Ic^h9@FV%)uu2mvkM%*t$e0Nml$>ssAv3Ub z7t(GB_fAH0u|JI_~Z)ghqOWa}RHL+j|8<-Tf<9>P}47WcE@q-u88jRO({o;%H2j z80J9d*C7B$TH=Tg0V2j({R>wTB33H0C@y4mFry%LS9!}7FY}`A z+E!=0x5FQ!J&g)>NX@{$Bppw-5+8jl&g3(Tl0|Ez$$<1)A&3Pgo^!~Ok)FYElz>Yl z?77RV=W0?@)BK`A%G_p+2dz+upesWGB0(#O+jh1kjs63wW>-i zjGVTsfjge3Jj?JZoJp|f<6njI@h89NKf?J|QX~?&#bQTJ0@R4}TYWM<4h8{_Ga?ck z98zltTpI;}G_5!zom|=D%yY|35?aOJmu+_&!vU;?f7)TC;hfC)TY`R+x1`f;+ zP%a5y0$AhtLV8UB=wL_$BF`f!>KRYV0DtY4_qSzh&|Pfy=I2HSYL-^MPNDM-_q{{U ze((1=P2X@rn`l&Zlbd3bp?|}vfU&M<0{W)o95`s6bD z6I0HyoOc|=PDc7hW|pK5A7u7t`s!n25351MC99Fn2Tp*;5V&b?bGNuKuQ)LYSW4%u z62b+(kFxaUL;tMItIY~nNg~kk>;~1&A#`^YQ;g)C!~=jl#vw%u<|O8_d#l=& zOjhzyym5lP#N$c=+#RKsF+3T7`~lNl`PFofP?AR=I3sUyIB4kBMR=H548!N7Sm@oP ziXuEX+728z4n93SN^6Mjhk&TGWkZ1@&&;gWfW+q-+oemLO;=sr3Ai0#_dsg(k~4c`8sY6QksMy0 zEI=i?JvyI^PfexQ+Imi#PYe0^#i$QAN};4jK|p%y+q9a_E8U85IffQP?okB({I9$f z0pzVzl!ej9Ec^k{+J6lBJj1l>BfEC%Vaf@D54gcLYmg-AtPaPPO}Ne6+!Aeb%|OxM z(_gg(+^EjyWq~h`r&o9L^K4JHu)Y}-$NVf{bP z7gVxW>NS2&XW>;!|IxbWK1kRgcifmj$A8{H1mLi{oKx=A7)=`I7kYI;D@^`AqWzJ| z)SR#K(w1SRKo)QNXK$~Ft8HxCP#x7(R6%R}rLt|V6ZT9`bD5RoJ2hjsst?x=M8sUA zqlk3}V?Hl2fQmi8h*xmu`}rVe@@l@jYrp>IqwoGf)*vtACbbrroG~i?Y`a(Lm0C%T8R)o-v_+Ls&a^BcIGV2jOtAWM$OQu zth8GZRoeiJkPP9Exy*Z)X44%NYLM|wJc4fcli91szltUXye~vWg^`<{@dI~RN-?14 zW%00m6GvJ~zD!m)*|LWGJGeKJa9>DAh-MYnA^>eLw65@@@4DUB1&i!H2aahjiz-&nKW#XSgr_{}Qm0 z#$uGPrWKloP1Ac=4K&uI)n?qchwG4 zD_2obRWNsGKhd^4-Mi%?FM`eD@fw17G@^#g=)Sdd4)E z$>njB_o}O_)G_Xdrzi&0AwSCIlj!f8Thpf4J)RHe6NbB68&80h@+IJW)ZM>zE#s@M zoqiYU@<-P~IpA|yQcL_CCtg?Mg0(X?8G>%_Lgm}X!?7-gCUoU?$y;%?wG)giF9Y@t z=%+RyUfWgQcxko3m-dEJ*%JruxJ+R|mBG;l`QoX`@LR8B>wojkEKJbq@YpYZZ7lDwm)o~_ z^zHKUuc8gjT~8f6W9Rd_50`FjR2?c%%*}dDmt^6A8bxTR;OkuB&X#Mo@B0n1MW^9u z?p|e%bx2Lq-f_#LEP4m|*aJLnn3(|Vu8AC-z~mbJZEa~9F`hz?&re9KLQ@)|uk-4MBirY& z`TYE%DB1;aFwoAlLon8*_wUEJc3Eyp6Dk>FhzdYk*zEqa}xXgF0Yot_d-d17Mjae4@mlH zI5Y1KRvT`v`$1BB{1&&2O`R}N)PM%Pp#wB%lMnBwi8_M{gc}mSBLX}@?k3?^^nJJ| zdCIxVTX`Vr=Vc18aee8hFc*KI+2L4m%+00QfN$h&cowvYw6b!TJ9**CVDFsGk5q9a zqU#G=-P3QDOg(H>)%tlPPP$y!p}(A~?_!VL-APZDK605@8~9E&knMYPmu+Bs|3dEN z&L!JQn%i;Aw|O-;euDcbiP0geGd0FxtWQkI%1Te?`>Y-G z%$|~GZyqj}anRFsZ-FE#B4?TJm(0%0x?B>&k@){%TEqh=i7UEr5SP1-vk?7M!d)=> zXYN1KUFB9%fPYQkwfRgixd4m^nrMI|j&}z6J6`7<-#1m3UiI0HA@x4tAXkFS(pPKs zCalV}RQHJEoYTgEZ_*@hn@#7)l1vgDn+b8H2=BYa7bZl-av>ujtBibiQD>X<*usV+ z!4wi=QGXGaCjarJiRULKXXWK(DHLJfYqOLN_BmEcp3=_67l}mn!Q+=|sBs^0pC=bn zzkkY$uqcuPu!g?cCZl%OYzn_uZ`uTXRIB?-2H#oY7C4fY_I6Ot92Mn2d-6L9T6U817G&54f#Iu7C8^(Q#IM6b%PI zvg_1rOz0N+E34Jz{>W+xL*}QbiOE+doE41hqq)75y;5vN2VtJ>VaF)~a@z^& z1qCkGtw69Aj1Jpr^jQ!w>ePmKHUu7#3|OxUrQDg|;LiV{eNR)!0J#S0zwPqfq>5~I zPKvtT5ClPD*&RFU3&knNwP2Mzv!#waLWVQ+nCevY#+}H0ppQ$qLPCe@hv3BfLY`Z! zp-g3t_K2YaT(fp}oi|_B+u3UJK$4){7g`puJ*rD34S>NU! z;If)~{L3(^z(&t|QbxHm3ns}w#!#~Vg448dePca@iG&ZaDDm_=BQ6C!d&Hn!=hW27 z-SHU}DD3C1(U{qC%gX3Qd{ukHFq@dbbl`Iz9C}$F)Vs$cRPa!Od`j2W{@>yiSUIej@uQ@%;9yPle7Y zGs9yX6vPhIBJbkLLA3KuX_2wHn(on^n3vpnzJrpBe$Ag?bfG$g)PO$2)Dbea=OBY} z;K@YM!Tx78(vLbKG@2T5*?*+Rx6xM-=W60xt?i#=gx%x1G#)^1`i zOQatt0e{bogw3W=7b|QRG1wb7a0h7ZwS|#F#B;Vaxo9f_N^O#yhBy;xE($@s z(J)3@)b=ob(w|>7=(#$F4eTv-qBG}`#qsiCV;fzn`2PO{w67%~pkp7aAG`y63`unn zL!JJysOhoi^K7!}rc~gAA}JE$s-q=CAE4?FbMAm!z4`!c>uM19oVI}U;aTmZNbl*I z43rHkp%JmMUpvxRcP+o@*qe6>+n9-S5Z?HTP`5gtblfQ{VOE~~n{HiaW~d_Z0Ragv zos$*C?`Y5|BiqiEP$Y-)LUggd0^GZ$y=d8s}> zJ;BR4Y49YQawot4;o$_p#bHG?0e4j^+_O19VtQb_wvM+RxQb{?H-A6@85fC2*I+K^fFm;I@L1mXYw;<1jl$-h?qZ3J$>2!Kk?$nsgeC(C(lCG3>V1 zL7e2Uy)8!$6gfOFA2|Hs84gmUXQm#WT2s9bm3t-$!ouY z-|2H&OUNYH21u}F6RGlnN~rxu7T;ldW|ApA^8b;Rw{i4gJ2B87pe22+pax$@PRURBmX>+_-+c*^&U?waah4Yb&p`UP( zF3(3#hZx3Ue3+SPW2ipwWU4wbwYVqC=a-7I`VZ$G200XY7zhmWsNSY~O{oo6JaT^5 z=A+%9trmjk0{xF*TZ{w1rUykt2pJ0GY@)w;_^zNpAmZ+;fsbwL;+K_0Izt2l+e4%o ziM=C$$Z@GCK_@9J#(W2Y1R`r-Cw zyb~PpPs$y<6w`Yel{1m^S32mAJNpitCm+@ZtzDI&aKA7#dy#3D>WLKcy-&|v)$a?(>zGH4O}Cnx6YaGmiqCMA8xkeQ7xB9 z(Y(FoErJ>pc}yabkMK}Y7OsCHU5A3JYKGmd zIZ>2wy<$RCn>MXf!eJP!C~l(Qq1JBu_GTx8X8ub+IRV>@Y&G$Zwk7y8sD`S3LmTOX zfugX+qI{DfQ;w9RY)^OGno-1;25d${u+I8<64o1xT$(1nnvudlrD^_W53Z6<61tSN zBy1E$!#8%;*$uXJC6R>_h2L1#?eAaN*5BtNG#{j%YNncrlQUT@)z27l_mI{4NHv7p z>&E0uax^YFdJ9#E5B-}vg9dniAb%Xm4=FUR6SqE^BgxN|*&gA4*w-Af90a2KiL zl0OZVb-Jpf%XF)JvOT*K!;zZ_GJjp75_Qzo7IPbAkIxm{RDZ1BJZSmsXucHg!BZEf zWA&MVU;FuDmJv?MET@k7e+a~FHh^N|!+k!|)Vl^{2*&T#ktcT_$GTZzs%2m2!XzdZ zwal}F!UMb5R?LAR0co5wh22N-Yc)f1a|fr4dEkt*1tDZ{8b038CKjA9U80{a0<_gB z?Qdzt8`cN}`WviNe~t+;@-hhbWbWKC_WTqzG=X|NF)*&$BDp#L0k7)XI5X;{HnM_1 z1*Riva3AIaXMp_k)-C5Vngx5lln9?oq(XOeWQ#3bWZ<^tt@=1|_ZbGqr(P%|-RpD= znjGDQRWl2;wIABgzZ!f>=xn|XwP3b|o<7KnKjK?hrPl&t~Tnl!6Bte!H=Z##Q`I3)C0K^ z)PsAf(AE?gOrl-aeL-kN1WxUM~lCrgU0S zJS{~_M_<2$04|rDe+TD1*v9?6vF;R&6P?6ioB0qXIS8*Pn2J#rLy0DYW;JYRd-RP3wVq9-nkc8F=(*v^OO-|0AsQcc!4b6%NTqi#S8<)0 z*s>Sw4}L2?`Go1fixM%8Ww}Q_gg!e*-QAC%NUbjq5TMw&y~nVwU~@TLD3deSeTDt` zgUF_50k~>LO@j1CpU#Up*Ft+pvuzVa;GvrBVVbM!WKP~(ku5xToeB3mTUES4JoH2P zCi7E!IVZ+v_O;EdZjol!Bh6~grZN^#>@}0TRbjRRYotanvrK1(z8MwuYFj4Y()+J~ z6X<{=fMR}mz7(~e`X(L{g|e>~9`9yH$F_r0rnlvMfcnxNZ&m#9n?|Kr*Oq0Q5u0}8 z;KPnPCMifpdVNbm!<)e5=at9FXf|`};+maLlso>kUa(bb4+u!HgzaC0Mt-oS=%377 z33Z28B^NbrWUes*{P`ct8KA(6{Jq_slz}hZ&d)S7G&hEZ%npCDg)#>-SDCvB$UAkz`W|M}N_W$2FcHD(URf$8V*Su92 zI&$=h##E{5FknbP#{E5c;S<0W;7(KBAq@W*Sz+6-xwh)jR~bu287lDV;ld}ya24Kp zu48)K{sH!UGAAtdRj0j0y4A@k5IMqR-~ z`)yXww4R3iT~-HU$ZyEbro)hglF|8{+ttBhX~ZznWXHxI<6^7Wc6sEaOtrFO{f2$3 zxHebSBb+M<9qk*>XGkyhrO|Q0X0eFi#YWDrcf3^MYK4g%-+jCOaCjL^t}@1A%ph?C zV!-~glmj>>Pb+NA=8@NstNHdBDLkt#+Q&n?yvYa-|r%OK{OkV&7Y&t-x@!PVU zUtDBuZcClDy6d6cO4u>bgkIrk46Jl^o(6FPEKs?HF^B1GRjhgT5jQjtx~uy#%*ZVy z{kDwvos(P|m)XX`XWskETKfWLr>nOg*ff3CR(o+y?v$r(?ft0ntxqJJJYPL4_%oCtWT`&K$=)g5 z3k2GcU+3jeT70c3r8zB`^^auS~5s|8bt8si84aH|jo>t12yk z1q5IQJR6p54vageI}S4-+{DGRa3*!zT~&W4>$vimY%HkXo}8`(6%Pe7=N){Q{ptGX zGJ1*QQmpzrC}*jY%>dVq-!^XZ6vip92^5L&(?3CU=8wlHzV*DLIFZauwjYGJDlRT% z&}!cwdwv2YC8BAgzgnBWG|69_dtR%Aav~0{-u)b$<6>pKSY3ILCx|=y39~<7h0A7% ztuQe)@n|u7oI}QIXW{v52lBvRdun2n0!$GqUb1}vs00WVKZLn)+RiD=$`OF*^_HK? zdLGo)eu{a|{JxLa{MsnY^Z1zZvuqZ>o70y4>G9D!XlR2CSWhI1(>9lirffd=Cg+{V zKx5_&JJFw5_W%zaSXox?=b?T0w35j1O&yK{dQ^SgGh~e}&_whn+~nSJ>ulj?&kZWK zS}TnfQ|2!ZOuSD$DYbGxQrF(X!c>Id^S=X#!0zR;Li>N12MsW|Tk#Lpo9-3mL*1W!y`F=_)TS^6jrrL|ruZx;5 zY$Mb^CGP?e-?a|umS^_Rd z=*a@Zq*17+8~KY=|1TaJTNLHm3P|qp^<`=ZczZBJqU!R_f8u%*Isw9YV#||71aLg- zte&Llw6e1FEERx6`Si))u+jKOUJ%m5mnOzr{f6ogNiaOTh7yBYhe9$ZuQgRYJd62t zid#NlE1}~=9nE2+`};nHe=QqtTu$fBIp+L=xu)Cr7hV-``2os^v_{L2%JgK4iH$^q z4i6}JuFsFRGFddVwBMiJLn1!`lZjSc-wmhzg{_|+Zd_g(ClrO0fkoM#Vn{E1V$028 zbMgi~i{GCf1uZNrE;>i%5Cqf7cvxarGNq_N6T)8;PEHJ0KaM^HZ~>XWZXDu}I2aTb z*eE5LH)mjn-n-bdkQTE)lw%mPumnJt6>Z%QwUOUIeg$HDka5s1odRzlpMn_*NDMOH+6ZKC-i7&63+*nU$uo!?>GWelb5hs))zwTOS+ zv-sW~5-RGNkC~ZS0c8<66~*5E0kd%M+RsM8(`VB3v3ipzRq3P+$eiH@eh%yTTDZ3Z z8zbuk&U~5fKSb>BdttWovb~Uyo=aWIglx4Zluq5KBX+QyoRm#QHQL=pMQ#^g#C<7Y zBDGrXmYbX~n6blsU!2PqF>P`}f2f~&hD3xhjmR!zK}y2=vXb_kr(!)H{E7;xFJ*kt zrMU%_2L)xCyVc_pwX|GEC-R@E2=uqq=@hKO!cYRIMSGou6XT1c`!L6A1BG9XkpZPG zQhuZi)xGaZ=FYnUGD{i`kJ{N#+r5W<=}}z>d#k$yPT|LhX;=^<1N!moS@>)XT*nBW zd(X;~f?lZIV7aS#l54l@3>J+#IGAB(FwPY{but4B12tHi?deqVWu@#{JkK4kE|rv( z7}9xXbEJ24)he1i-r^6_d#=p8_M+AU?hLQTBe)mu_Fy#w=@Mwbzvhhj9AF4i#13a@ zPPMxoah>W}ks)nG^);Fd?btLk=Hw6utN$}r*AWCRRyG+KiM%NJ@N-}CarPb7& zml_RkX_^}A%eCQ%9*U#^9YUkp-NQ+?+Mlo>AO>|l-G{FIg!6?%M#W7nRI+NVxz!2gKi~2?hcY$E@$eD3Yea<44h&)oZ|6@a3hXMCuhuCcMd zrceLcuwh=_T8BWSNF0z}@c{Gq0ts-mKzA#&8KQg=hQ$+T^J1!c7#r7Iv6=3uA6ot1&eq>k>{9`nklu@^9R zIs*b&Od!%kK18i#Mt>h2HFgbI9cnDz|N6yYjjyM^#|-rS9wIhdG#e^@(qiW>FIX6O z=3s?DE?BD@#R%4llCjA73*rm#A<;8eEel->FGn_JjNJ>qME|;*z{Cim942BLV=|f% zhfNfvK-7xxpV(vmZwk{pbT8jNR6vv%ur+g+WV^2i=G)bwUdEn=mm_WIy0RikMlAPL z)Jp?D2Uxa7Q$uVH9``m3=H=6km2A)pOFh5W?KiB*QGPu1wSeI@*JNKrv`kI9s;fHv zjEA)I&=_m`W26i)kt_qit+*IF<^~76-wzvLtUdB$y`~(g`vQ3vhy$YA`oQLal;hbA zuq{(ePR??`p!oz>RW;!(ufNJ!IGQcel*7}Mi}HNSg-+Np-z`fASl{9s!+U=%DJ|Rg zFNGPr$#;|k;uH)3l_*!D;v#UXcrkWo4HeBe1lc zey^T){;WzCP{b3n@x{Q2lv)XBLn3#h&CN3V*15V7&M}AeT8A_b)FJH*wB6otZYV+; zD9$|ux2V_9J0L#q@9&@5V?HuLrM<&Obh|io#D8w;CGS4TVawF88){5VQP~d(NcR7(r!fLV9u4qxuESpb3vb4ur0qi2=0Oo=YPQt%pL^3u<5PXRfW@o(I*{_= z!-qo(G!nwVLS`J-<$Aaa=(n57YL`(*q)H!`N*y6gp zc}6kpXEWOmXHp_7qWm3kq~YQLEU_TlH${LYHmLX6diksD!*waUMQke>7lR@&5svSw z6^p>_v{~N0st8D6(&d9jz1ZRm6oEJ4`YHjr{utvv6q<=;5RIvp2ox~QP67o?uR%$| zmwx$7|367dT~tf5*b{y}Ap;gvmQ#LEe#CF@#ew~qcfXL+8DAeyQ2%&atqHRS`!T_M zI*|0P@0L4L{K1NWoa48lu9^N{!#DCLu|^j$>aN?qN>#{ez8V+Hzf!-LUWj_$t)4#N1HMg}AWX~db( z&ep#I9h?7_E{XqBy5u4w4!LwKt0l4F>#NR{8cYEDI2WMZf^WM@yomii*uhfR8axs> ziM5wyJAo)L_1 z(uK4u7i&V?{pk>TX_$5Yv_n^j{ihw;VEvLTRG^Q9IE&-8*6DAnlg5WB%|EW0`(8Vh zD+MLF$`Uvq&W~au?^HCOplABw@Y9i&?I>Wof+a-fFMe_&6b`Dh{Du2SM-75Fll)q9bZ$|6`n%@HCl^}vPt8%Ei#aVWMQPUS_^Ru7 zwNaYbe6!HkwA35i6~uVGp>ZU|uEmOos}cf|N{rPYWY&=H1t+E{e`rNPMplwzPkI~Jq+t5RQ62Z$YQI*%97NX?4AR9D4W zVPP1b^>BEyHQ+$V>q9nCS4I%(u3n~drN3^-2Gl8IZ#61@dv`e1KKafFf=3Y47XgvU zV+k$<&C*8SW}TyejJYF0%kZ(g_RcEZvK+$_sX3XKh2n4ckw>tn|Cz3c zqR(j8dlHy6+>C)}M@wY@gO#po0R^ADOZHOI<=-7eM%JTRo=)ze6P>m0h36l@1Zu+B z;rp7n)a*7*S%JYrbQ)0m8rg)=F=XT61b9ktTHF95R_p9o_qht{WXeW5DMzkgl`RAr zB44ltnwOe4k~YY2!0Vm6Hx!@m0>SeGGCRm38udcXCt$Er%>V0f81rfASGVHb<2-A$ zf!`fWLA)Z2+fe1(egq=H!A7R~h2z0T$#8BYlUc;TJk@ENR&T;$SN~abF=4qi<_~S%;HGc-@xc9Qu;TWWswNET@e^t z72OOLPtuC&PS$;k6i*CQ4C)Ujt(bCeHVtm1;Z2r0j@#X=GFG@ry6dVXfVLQ^DDA z`dI#uyx7G*(M}3|wZtVq^uv6pwEI;$UB(wIBONNmSvPjTo5MSEb-PG&3NM5Aooncn zrJmV8_7)l^r$F!FF})~8eSIw^TTo01vw}=`LsGZm19o4{I}uwTUnRW5YP>jO=L+BSJ=K)y8BMAt7K!qOlFrxz zAG9#-LZ|b%;j8O)r~Bg5Hv(FWUwVaXU+q~QkRmK?=}g&2YRMLx@kZa4VnZHQ-?2RnPc1lS+q zwA;lt?zPzHI$$tDCj4pUE69@wKhg~Z|A^T8?AO}kqB)PXa5xUM|7-GNP~jBv0D<71 zPWG2870R6hClPOF6pHS)_WOmr1cYv5tMeqoh5ob}G5^zQgf0HsYE*(d4!R1OSrrV& z!T{N)Yreo@&Y)o5MK93e7gA5My!`$%(juvdi|1DzEXR-7iX>QY{q=!3wr_3OHZSr^gX@ZDpeq(TtTmy&Y! zGc`QU4Zw4sMKy`^V;UI)t}+#&D$Oy?#f-}vq`>A*?qTPI=(`E}<1$Wk)? z$x=c(FireB`1sy;4Cm#@>+$q^VguZw*rGdhO}}Mfy_Y^U^XUxb2am}n^9O0df1OGMZnw;N=m8w5#-Q}RM%6fHMUnhv?=L9>{4k&` z^OSb%a9Vo46KJLvaQaRu7Nj653jwTEa6#>Xgw{mwp#7>@ZoX9hY46&XQ%8v3>}Pe5 zqP>CE84p!)B3W;X5c#Ur#26i~4=pBbE)@EXhNi%9N~+S=4|LTPjas^=!8Lb6A&`;U zD_w7jdXoS*Ay*%E*spk97 z%qZ2hh!>a7B=!?(9fnYZ^lMtsJ$Yr}ZKQl*JuxE5zwuZON@2apbUU`8JjranS-QZB z9L~f38BK{FcH8uc=fmO8BU7VUq_+?zKhsg9(ETtn#G~*PeZG-O3^cA7AAy~hAI{f& z?6ea`?@H+YQd3(?mRMy_;4QhqhiTt_PFw%I#O_Nuud8de>&o4Zp}~7aI$)+YCYZtZ zSu?#qov*Kgx|*4mW{*Kg2ot=Wi!bZr=;jdQrt6L9;{A+l+5x9Eo7ut?*h3!EDzIlV zp1DI8y{cU|S2UO{C>$RIr{&Z;!1m;r_XG)^c6+^N0h7*7hQ;hh-0RkAV11y}fWfy| z0(T$Ai0-sm#+1N__W}5J5NaMBSGSq0;P$C239Zh@DOoLv^nvQ#y2WlubTn z>zgF4G?^lLt#2>|k5@eOcp`X)J0Z8|m)**?RIfEu3{*`!;Pv6YHK_*Vdf%a48?~y3aC3N9Av~tF(%O}5Ue!lsv26FtXReDP3Qa?`I*SP(>G!We)Vz}(Ex>!Wf z2=O+K0>dVJ?|ocC;uXM|ofWldV54IEursVM&^vL~fG@>HeuJ=`o{}?yhqJ;MKex;X zyU~t7#0v|lQm8XR4|VPD(g73ZKnF|6;n-KRwE)3B%$uMDyke^>{sOcFVVAzU|6f~Y z8P-PEHR={GQXEQgD6~LucXxMpm*NhE;_hz2-JKMN;=xLBcX#)b_Ic&|&N=y+E0d8u zGi&y}?pdpUT03Q<3L|Xj0B&hdZQ5+a77>v&FhT1*=s3bNl`^64lsgy0SN{j889+f= z=W`13u#@Uh{s{2$+`?RErK>Gix4a%psHNn^z*vF%KHfdW6ie}0?{G--HyW#EO))ZQ zpcKBckU1B}oN$Fr$48+S={+75UiDt!BB0oA`Z^ZC+g3p@xId zMb4y$fzFq9l0|=GHAm*s$0hxyw6E5|gLl#1!Q0xaK02Y<{$Q3>K`va$J8R+kpcdKg z;}FretF5GRRf-ObYJUVloXIpZ^)g7;u{hliJx&-x$!rI#RuVPEWwYUTIuNhIl8=yfE(*=dH&fd^%SC7DAga} z5!%Hj^l4x1=8j{0La8LWsKss|Iu7va_s3OS9ZXv~X(2wyBoa|Ek;Ud$i>HC?68*T6 z-uCb#Lv>f7$`buf!xArVcx$Q-PD(rl=U80t)$C6-r5QoKR~t5Yk`b;R&^kspBa8_e zx=emntE=H`{QafblK9`&h|Gn#**51uY`5AkZuWR;_G?mi<)hP_JpHU+k;3jD@_snnrwSKYC|AEx zXEH_S9rg}z@Q9!!ZTogP2Fk~svz5Xs)5Fu=Y73*&YzejRa|?hAJub>i26{hNTWd8~ zD*qb2Hc8*OO=8sa=Q`kt;#$QP}1IUi3awAUHQQ+`wf={$0Q+PWv z)rv(!m3I=d+3(1ZqfTtgGDa{^j|;|32`w{RL0SskCg6Jz)`4^`sK#)wHCe|j|CCqr zr2e;)?Dy|3u2UEkQh~vve7-MFLzqSLx{Dy8rRC*&M#KYt5;jUPqpTBzg3y)pKeyp= z-8O^VInlfi`Jd(8tb>GB+UCo+oYyeJFo8I_!Ag+`fiE$Z0+vv4eehFI4_B&^4KDC=pZ4mvuzWLDnz@HN@O zwn1|nox-0ZqHv>!zgom)H;vLBscn*fvS}TWd%++4uC8t`_&l5JZ5Dq{`Wg`Vn8teB z!sr1?b)W|#YH7i6LoO% zvBQpWx1!w3ktTFXZtg0W-SB+wVfkb*6go5BHP6av)xYm@r6bPS@ifgv|LbQ$HN9OP zmz4@+RJ;X@aozdrLqR5!Et<^Y$DdnZQOV|${%pCW2Aj{ETtTV|4e(8u^c#9--Os)` z($5|{cAhf_`{x(*^Ns@T(Av?}x)w&Hb`#s!7?y$KE6z6No+mXfmuGvp1PzwGa7iAX zj_rB{TJP6!hSGC5)Ga55KS$!xT<8}4sN4nRHFZ)ovbo$9v@a(v++PjjQfXa{Hm_cs zUj|WculYecnfr)IH5AV-Ipuk*#diC-Slu2@V*c_lR0@$JET65|*C}8qJ!G%ae|^5N z6XD`!%Ku%ZA5+l$$q90)7!UaedA9M7OU@SHVZ5b zg2nbqQ|C#fuE{5i;`w&`3#CLLy*&fmuQ^vK@OX<4N~DW-zma+>6`|8?oXR6AZ`8Yj z;;^b_vl9c-sEPxIhZYhw*}rKV*-6>iQlCktxGG!iPSMCisqM+}5pg2^x{0rpfm+fgxCbT@YN()Z07d1j+siKcGGt&DhjsH(E?-VTH!TWV3$j_d0Duss>2Ptsbn< z_8zCeNx&$Df3IZ5p_;b#x|cIf?@p4sCtsBB5jN91f7s5j-40(L6o$%UNT0FUl*hZU zBYId)tclQsN8oVU9aSw6@wu?0BP8}?@QOYX<(1{?gSQLV0-k+uyOe}?m&{S?ba@`5 zp`})^*)0puRy)f3;1jH*cPdaWUTspxW1T!3(k>-7R)|Swp}|^RmglG< z15ya0RV(V_&HI~zwMgl;VyG z)LW{l=VH5KU_*{=mxr6fLP*Z9&{AU2G6<$L)eu;P))P)DJu@4dM^3)IOrg0h~W{p z?5ME%;`z+FhigL#sRbE=z5Tah1>LjNd1VIsq%k`2Rzs`#Y}JL24;F{Z##V8H@LsxJ zYhIfu_qF}zO8W{3lVj>U;4yzEXp|I|+Vjeu!EWJ6;}nz^c>@wHQTJKgp$%Uk4|yLq zteknU{@U<(-LSab#P)U4d*!I6UEU@x21b+Z5|%iuBkAj$qwf*qzs-sS-byyJcVW6YuY#XXbMTIdbLk)^XCuP zgWs-NCI};M3Hgq=eqD#b!@&Ztbu$10YqSJVxYqM)h2dc;5%n$2Z&T|tpkNVk{NaQu zBugW0X3Dk?&XTl3gegA5;_NUcmX+Z;Q4z5@?dapuHJnWNEDfR>vQg<4A)C5OZ?f9< zh;Qz@~;lA*?f-K3MB`?llYK;@nonGdNc% zA24Ec$}Q{ke0FpOW4>(0^seFuzHY5=&sVC;=Zc^bSH(v;_bxQ{2EflRE;gRzMAuLD z>YLUO*}7u`jDuuS2QS}{FLaU0+jkToz(QgB9Ls?9Ow|zo)H$y0J z?C<$plNeUbBc1#tddW1{aT9I%jdUj`%#*yZNLVQN_6<#G6WL3k8@AgXDI480=7Tcg z)|g%1j(5Zf3& zvWa|N?m)sU)ve0BJz44W>APaH+!QY#Xd!#A@O#I&p-&~mLDIp+&EyjRnV?r)lb0bD z+M9BYiS)--Dzs=APzURKk4nKwaEZ~?UCeIqn3R+h_0~})8t!K^DtAexd1mJ>fi}cr zYB;$!Duj`7WfxkUKzJN0Xuyk<1P3N25+)be%3*gbo7<}?r#>v9$u{5to&S}rMfwbT ztp!8&!{WQy1!C=HMGSe-#Lq7VBmI!4moyIRH4$EKhBPq|)0zXwFt)TcK?d>R>$34o zt!igQ;Jv8DOm9fJm+LXsd%W9rv*WEoE=B3ZDqt3l!=_88Wc_TBJP>N12OIa>OP{}~ zKC@Bx8?vi^#?Z52yi%b`9awJq%^MDtn9X=t#lrT=^V8P;FZv?Mo8$R%t56cSe-Gq( zLO`c%HLW{p>Ko&AVX7`wi4 zDjYa)6HhKX5XtCPqemjt!^lxX#V^X67^Mu_Eku&++}%W>qg?IB#%rb`NUxXx~oinx9D8hhtZbH z-DcYbolb{*$*CfuIpW64aemS(COa*9fr|Gzjwb(h0Yo#@&YUia$`68oI*X7O(OVG= zd$9Q6JCGE;Bs4%AUOSOrsy~2BYyZLo*0-#j%acvkfXM?!y6WRDHZMb-6%UOZW7MQrB*f?^vXAHWPFMHQ!B*=^K1H2gSLZMBkL zK~E19Q{&D+p=gA6gB%^Z$jVq!NzxALv%a9`TjHAz)+Ug75QZFVf^Yt&Jf#o2%h$zj zl(dgj*lWYK=#;c`pLz;lt!bL%wJfe{vI1wYdttkqjVjBy)#OK0@WE*Vm1-<>BrRfT z=g@)#t3M;v+)U8s*=geCGhwu9V9`enWCR(`0Gl5{QArebhSb$1i_+gwhg^^l~F?!e2z z`U5kKz}{z0rPOxkEOc~Z)1$g=^%u!@di`B;m1U{Q#qDkFq$aa^LP8?c^oLDtm31qL z5c+^sv?tubyKOw7ubLkn9qkUiDHd&{7%W|pRo~hrf;t_aI5lp<#D8J~)we&x|b%;I=VWZR$MjrRvLrdr`>|eHSz+WiwEJw`y@Ca$y zyNCTNx&k9>fWfZdurN^jl{~6 zedQ^nQxWT65b!5+iY2Ug@onObHxg*8)%CnTD0Ry(Gxq)J!U|w?i#GGY1qGSJg-YAl zYPMWF)qfxNby8ej52U5KaeYRucltX{)H#{7q+441x+@*o3s~4T*Wd3I?=efK|6}k3 zxi&#>Fiog>wuDqLhZ^Q;D{rn8^Rv6Gd0K#l@1|tRKV+jKQl9gM7~@NEgON?~@CUhh zcPkrFnf6)N#7NA42zMVUUZCS(z}-99S6u4bD*KTL z7;=avD4GRzoT8WzZe5O>UE+=sN7!3|L~79A;)y6-iZ6hyab5kwI`yG5w<*H9E`tTM z%mK;rEU=@6=fY$F3>jG05|f3}IM$IcUNQ9FVD=h5rAm-p*e}tOr5__r(aMiwE3LQR zKOiM@+J8)azpzh)pX>f)r>@#|d@E)UC5e zH~fAIhk~{!8^p$Y|DZqHU@=uxkUY*CjG@W5~PH&g4GTPXZ(LTNepD?l5HZgw1OUQPf(ss zJ}%0(-W&{x$<~_7V{JCo!E`x(U%}4>HL;?jn~tR56EmgNX3G|XaYD=gjH|Hl|BtV< zwb0mRA`(;R#y9DE9v{q?y7|rzkI>M!@`v7cVJ>6im420`nCu$^~aK2yg z_vN}7$t#t|mzO_PGQwx8^yRPxyuRO?4#D@E8ah9My$nNAqRD3Y<*+}vO8$^#j;qiV8fel9O(@yF-9KpPnw0nHJZ z(!TBs6_2&PfX8=*9OztAzM$<7O@)#&!`OfbxX!|&UMzp7(M@M7`Bp9@D;|IRko;?x zx^NpMJvrqQ6owxz(pznFKsf)?L~}1Z>hZF%R^-GZLKRwjxzdXeiGY1qdZ;S5kNW4n zUkSx|%3$#0-F@u{zgILtY=O;U9V@mJ&^5{V$Sz!Fw8T}}qyPYbpc4rg0GYvZEr-{Q z&Ed|_R1c17Ng$$nC~c5w+AikXA}e2=S|RHUppN#hvQO4CHnJJ)r}rn^GGX;Bmm|0Q z8kHAENCn2e$|l}ojTvO*riOoUiUIoDLupc+a>?AkY~{~dAlna_f{*uAp;c-sk^Noq zpRdBYB0|4k7sf)K@~`%mrS~(AyEF2J{XH(zX1}55#$D#N>DUrCRXYT?S&rQ38&Cfewtynd@l#nV8A-Kklhn5zmOAa>DJEq_THJMN*v@KN32T~<`-T!?T`zq-8RnO6C z582)HKEC!h4oc}4V|)FEn*yQEihs5qNbv_K1hS&9)9eNZ%^Rg*wEYXo;Hx`;Uokui zzc|tFza$~eN)&;tM@hfFyi3A}8%4uW7M0T~+vAttrQa|?dgN?``j}LCX@-4a4*u8@ zIpxE=`l)Yb=G0YOjDUe*t~DMXY+iueY!%}dZ*D&{+MBO$KT(7d!|WO%cD=Q4i}BOo zQ-=SBPNAke@C2?vYdw(BSQU?S0QvPh51KN6Mw(TY8qLQg+)7@xMpFYnb6;Qh_jm*v z#cX)WiIF6PTrL%Q^+ir`Jq0SOEk4h;Bc14$tAox;tvK&ZNTzX#iK*9-$-)YpzQd!R5>8oL?Xr{>->MkK4ja!{;2D;w6;7h;p@ zO*2EUJXcu;EY;#13#1y^<$tx$X}4+>v5q-*Vb+&i>QK*M*M8VmFRR)g%BF#780t)z zX8}vJ0Smjeynv>MR91)ctNJ_1Bsl7L`|JB4n{$j*YhLGnDnzHmak72n2$m*SHgTkJVQV% zMFK(AEPciv*Zpjz4x^sMONTSLyx$fDerDtkJ2fiRp(NsAWyRe!tpJao?T{Mff+!-| ztP3hzBMrmF?Xt$j5Y_Nnp<{Q;b>7Kj5xt|+4Byu~Ka?{AQ|@!|o6l~$hrN0f%AX5t zZ%-*MtMHu93YS13F?idDyKa{MNorRoJg2l4u+@%$nu}PZsJ20 zrIIoF*=B4wmee9l08UyDsSD=Ou>q_3q(3NowC9DL%WX%$ zxJ_==r@cYBxk>GTk;^8%lWYlbEcQLJYir}KP>P}_Z|5LIspz4C63$wR1MCBBQz%nE*c zbgH=3IS03`fRx*VQ3mHd?R|f@)o>P=6!H{DsC)Mw;R1~GRtooim*n;iX2`Kad`Lb! zSB=$M;9xnM#}kaudU*NW?9TQyorGZ#M2p$pyUsPIeNcbyYsnGV*z+>%M++h-FHRHR1Jf zW%*GLTRJDX2Z${TAO)m{h8LU%pEj7J8G%#2l#$R-=`Z3p)m!6MWBz!1kC0-k(=JK7 zKK}{W4t8)hsl(v)0vw=MqLnL_hM|5Uzen6Pj2E+9Sf}tpP&Qz8piTt`7wXix3(V~5 z_mZ#p(x=vz$-*m39R=RG_bTXN*N^q+M(b!ZguPVBp_CeD~=H-{<88 zlkX$9v%o~zS(2+OWtG#ma*hG%9Xrgdtb zpkplICQIKOE%jM4rfe88n{U|v3*9&fN~KT*w0#?3A9+;GQEU-2l<@0^&0Trki2rld zATST={V+UUSnm!vIzHBNt0C~sckXT$3d+e9o~h6xTx#YY%S=$#bC8tp)a%3w^1Rih zB6)uWq-jGuLr!Ce+eJ%W_7euKv5->SADr3iV4f7Mk;7)kh(|?7F-pD40~yy@(-*s} z5H1P+aF^ktgCL$HNaR9BlPEM^$J7Y-OR#&%^S~qQV-yNVwgG(_6w-He%waGo2=V0~ z`rVh6;YJED4f~W`A2y7HQAfD0*kqB9Y*H}c-}OzaO~vq0$8{otA(Ms~<_=So2eI~J z9$L@@?wnZFCmn4jI`5$Y8bc+Qb4Z?#=~dsHj=9m^{?NghC@OOOLywYSfT-8i)fcns z%*OqU*UDgnWsr!ED8h&&1jo43Qa`Y?kDWwEZWZ#MEP1#~!6tmtf%esJg)<~qeI5DevG8>v@wVKAbDhSHV!ra(MEnFM5y9{1cxk?p=M@Bxltm4EjQ|KcJ zr_icWOnSPT%tt;@DV?n`eD06pI6J%GB8oDOV*(K|Ir~Ke9<3a_b(U6iTbu2?z)Fvc zKU{ommit5HitZu61)#km{-qleica-=5YT5U_9u0;=yg{Y;i3<&1;e}#B_$5({#=}e z?I@_;9El6pb8ZT5m0o|$y}uA!Iz{*_cw((%Z{Aojrp9T!DvLvG!{h9#?qWcK=Vx*h z#7@ydK|fp%fKT$a@O-#_ph%x-J=J*$u5w)>}BB z+pBB5AqXz~hcJdosZgSA!V&~@VC zaX^}(edxUj{vae`7_YwLAO&$rpmQez?7HQ7SaKb9$L*FI(n$Xpk?=R-$4{5zP2$tpBAK~evG`8e(VwN zUaT2OV}?i{fYD5d^pP0G`7L}|$vYmJHGJ)eufbT>B-{|Y-3{x*IXe=j;)geRz(v=QvhKs z0^aeZGBYQ7pcev6CMp6Tx(LVozjYC*%BP>T#x3-Nxv}lOuXJssBKVmcu20?1k5uv2 zHoihR6s)j?=*D83Gcu@YJyma4EFi4rM=eHsxq7t@XN{fjs8(Y%F?VvJ^X{2nfG0&g zkB>r<;^lgNxyN@G))IP+8E8)_!SZov*oHfvGF#2gg>dm3>r;A)gx3$mGu=bV2U^}$ z204XqB1CE?sVS;;KzRhkgV4quR(E@f48vtcrU+J&p}QG190O!fo@xN?D%~1otweap z1GqpLI^_NqcW?tSaA>zAgb>8iTN1)5G!-rm^nL3;tj8{Pl!RC^Y2Fi>41J&CL2XC7 z96!dFq`c2(kZ}kDg=}&gBV^cvcU{k)RLMSp%LSars0>kr+|M)jo577TiW@Wz&@wBL zmPX{D@VVw>-rY@oNkwVvm|7wyXq5q!R<&lQ!6B}QmzWO0<1Oh8-86lt>C+;h4j^A4 z?faWywBgTK=Nlt|{HqzwwyFpS3~qp;z%gh0nvlJDZ&sKx2Q}5Zb+xpTr22Wk`M4t5 z4C1*?Vsd@!>3CM8?))qzkVS-q5)joCwXY9irZ5{YWv*vKQRwK3GKxd`@pe0qi!-i9 z2eP`WrXnyi8c|402Q4nKJ^**f9BO7P+jV=p=SD3ZG%NLym zA1>pjE6*EOh?@fMOA(3b`ZBqWw~s5e8lIuByoJoga#O8Ts6$Z8{*PS&4W|rD)z#%}XUdzeLiHJUn zMdjU`L@l(&K+B2tB@UPNkudVw;4HEv&R!K1dr|=_Rv2^d4fg+k zAkNb^Fjl6B5mMe`I0%$^YtzJrR$Ydi{N?HLmOr((TC)`g@($wc!qne<#BQ=za}j8i4E; zt|%OZ;ZP+x(q{FPW6_fYwHJV;Vabew^<| zNSy>w#5LfzHDwCjFfysSsYjX-UMXf2pc+Tk^=9=2!;k+fz2EW^oq+U zQ8epgYa+f@Ne!h6@4h2DN3^F<##xk2x|5B#`LH)>{ctnNy&J7((7L~hIx2S^!rnuH zgxh}ay8DkVBb4<2=rTB=J#MEf#t|gY%yzZNzt;I*Ol-&Z49Qh?(DA!xhWC0yz9!bg z!wdwmtH5F71ZyauVJlM?nFU!L`L#^XT3-GCHfT6B z|JUgMB;)%Rexj3`)#H6tBi2; zLUIEuZ>?@ppyw92G}W3oM+Dx7I5roj-}Szggw_u-qNnG5Q2YokcUVp9`1rpRo0R^C zZB@wRlw=w~!5t|s!# zzW`9~QW`{Sdj89l%%L>qrUauYckVk=lQQD~n9kINx`RJ&*$Wj0FaEeN{@<_hB5*$f zxZI^$;ATx$(X_km zKG3T3i@gLl#UHBlkJBT8^as(*6%%QcCttWYI567E!`M-8hdD6Q+1V$d}V4G1B7;xO{55rfg#{;?53xGS(U&6S`D8u>6KVubtXQJ znKXX6dgX@n5Z&^Rrmw3jR!MF}?Q|LgiSbB$cY-zcadde?&ndpIhSjPR<3-;yLc}}Q za%Ay|%$snI4~C|esYCN6xL|@Br0Rh@%P0(LcVK%4w%(g^yr9K;JGXyqmkjfry@^ue z>vYzv2rSA*P5|vH{i|33H+jA2@x!%*za&%b;4ybHK%-;;$(Vbrt^jf{&#Hy~KpND< zs|`fI9$~{@-{V!PLB92wTT_1=lp;!O1kVd!X0@g(-h6wno8yj25T?jFwG0mr@BA+z zF-4{-xOVILTRX0FgYsqcN)(BAS^$6xL(__b4^P$8NGO@Q6I7ZISU2m(6X{U{@(yZPo_-*YIxr% zehM4#dM{oU5t;1ih*%Tl^a^a>3UU3nKf)q-3-%Pe0ydHEVnh8zVA-7ksiEU*}{#z^;pkTG-jG z{-qpi|DhaEHxL?9G%M$k)$#0US!}E8_s~fk#VoEGR4mFJ#JI34Sgi|@r*-#J%5;;p z{-6zZ3RsD6vQ1Ne(S~`9=o8iWu}0elzFGZ`tE2U8-Efoi{NVTGzMMmB>HlUK{#f`N zsXRXZ926;Ebhh5AmLUxI8>q&L~*L zdDoVUvdQs)PGi|VrrQ1_ttZe{^>;=jC?lr3!efN)_y(#!`5thT+cL zW`bIaK#_$=Sx<(CFQ2^eU-}U89!oAX#=PQre2sDh{y19ap$Odm$~Mz&+;&_{ud{NsqVA$Q;bj3qD=9YlY*TH zBBI$!zR*kli-MPC)}FlsP^9uhl0zdB?>BMF)(`!qgcpNp<8S$VwXwMIv(ApU^hvRz zQtLrR&rCtfWe^T9kKUoL7(dI2`eec{qwRM1Kf| z8!q1(h#}hkn#6Sdk?rTeM%GI22$B~4QXJNhYUP*WHZgX{Wc+GK*#cobZ@g2Z=Ez!% zAC8-5rp@X!e+k3;g}ke9c8H?1eJ0sk=YH3yXnI# z#DQIDbQ`bU$=H)i1w-Cvj1Y&#)LsHz?v4Rz_iQ!>v59Gco~}xIk31y5ty83NPFwX_ z!zIh0A&)X^^ku!Iw*xa@2_i~K-nU$z`3YL&&7yhSrmdwh8RjW{=S+GD@J~Zr02vQF zaXMX7OM(6dq?*w0GO?!UI8=%MjXWf*2t38oq^0}e6@PAj|B6TgV&o)*5s@9xb>IFK zcVZDt$o>eXVYWp_;eY?_&ySftzTMX_xgv}`{!dba1d|l9sEjkSsrugl^Y^8PNd$=j zvi#HUHu`@h+&^ncL-@03UIta`e=;Y2kzxW|IC$USO&KwEQ+}-Gmrh>En$Ir Zg(qe-MAv0&7kmTxNQ%mdR0$dQ{~uhB3uOQR From 96fc03773d61278b92a18f1650cafefa4adcf164 Mon Sep 17 00:00:00 2001 From: Anto Christopher Date: Thu, 27 Dec 2018 22:24:06 +0530 Subject: [PATCH 16/95] Add list of supported social networks in README --- README.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/README.md b/README.md index 467aabb6..3fd7a609 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,83 @@ Just run ```python3 sherlock.py``` All of the accounts found will be stored in a text file with their username (e.g ```user123.txt```) +## List of Social Networks +1. [500px](https://500px.com) +2. [About.me](https://about.me) +3. [AngelList](https://angel.co) +4. [BLIP.fm](https://blip.fm) +5. [Bandcamp](https://www.bandcamp.com) +6. [Behance](https://www.behance.net) +7. [BitBucket](https://bitbucket.org) +8. [Blogger](https://www.blogspot.com) +9. [BuzzFeed](https://buzzfeed.com) +10. [Canva](https://www.canva.com) +11. [CashMe](https://cash.me) +12. [Codecademy](https://www.codecademy.com) +13. [Codementor](https://www.codementor.io) +14. [ColourLovers](https://www.colourlovers.com) +15. [Contently](https://www.contently.com) +16. [DailyMotion](https://www.dailymotion.com) +17. [Designspiration](https://www.designspiration.net) +18. [DeviantART](https://www.deviantart.com) +19. [Disqus](https://disqus.com) +20. [Dribbble](https://dribbble.com) +21. [Ebay](https://www.ebay.com) +22. [Ello](https://ello.co) +23. [Etsy](https://www.etsy.com) +24. [Facebook](https://www.facebook.com) +25. [Flickr](https://www.flickr.com) +26. [Flipboard](https://flipboard.com) +27. [Fotolog](https://fotolog.com) +28. [Foursquare](https://foursquare.com) +29. [GitHub](https://www.github.com) +30. [GoodReads](https://www.goodreads.com) +31. [Google Plus](https://plus.google.com) +32. [Gravatar](http://en.gravatar.com) +33. [Gumroad](https://www.gumroad.com) +34. [HackerNews](https://news.ycombinator.com) +35. [HackerOne](https://hackerone.com) +36. [Houzz](https://houzz.com) +37. [IFTTT](https://www.ifttt.com) +38. [Imgur](https://imgur.com) +39. [Instagram](https://www.instagram.com) +40. [Instructables](https://www.instructables.com) +41. [Keybase](https://keybase.io) +42. [Kongregate](https://www.kongregate.com) +43. [LiveJournal](https://www.livejournal.com) +44. [Medium](https://medium.com) +45. [MixCloud](https://www.mixcloud.com) +46. [Newgrounds](https://www.newgrounds.com) +47. [Pastebin](https://pastebin.com) +48. [Patreon](https://www.patreon.com) +49. [Pexels](https://www.pexels.com) +50. [Pinterest](https://www.pinterest.com) +51. [Reddit](https://www.reddit.com) +52. [ReverbNation](https://www.reverbnation.com) +53. [Roblox](https://www.roblox.com) +54. [Scribd](https://www.scribd.com) +55. [Slack](https://www.slack.com) +56. [SlideShare](https://slideshare.net) +57. [SoundCloud](https://soundcloud.com) +58. [Spotify](https://open.spotify.com) +59. [Steam](https://steamcommunity.com) +60. [Tinder](https://www.gotinder.com) +61. [Trakt](https://www.trakt.tv) +62. [Trip](https://www.trip.skyscanner.com) +63. [TripAdvisor](https://tripadvisor.com) +64. [Twitter](https://www.twitter.com) +65. [Unsplash](https://unsplash.com) +66. [VK](https://vk.com) +67. [VSCO](https://vsco.co) +68. [Vimeo](https://vimeo.com) +69. [Wattpad](https://www.wattpad.com) +70. [We Heart It](https://weheartit.com) +71. [WordPress](https://www.wordpress.com) +72. [YouTube](https://www.youtube.com) +73. [devRant](https://devrant.com) +74. [iMGSRC.RU](https://imgsrc.ru) +75. [last.fm](https://last.fm) + ## License MIT License From d7e916ac341c368af5e4f3ce0bfded4c640778f5 Mon Sep 17 00:00:00 2001 From: Elie Halimi Date: Fri, 28 Dec 2018 15:14:32 +0100 Subject: [PATCH 17/95] added myanimelist.net social website used to keep track of anime and manga and make friends. --- data.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data.json b/data.json index e7c64c5e..95046915 100644 --- a/data.json +++ b/data.json @@ -356,5 +356,9 @@ "url": "https://devrant.com/users/{}", "errorType": "response_url", "errorUrl": "https://devrant.com/" + }, + "MyAnimeList": { + "url": "https://myanimelist.net/profile/{}", + "errorType": "status_code" } } From 8659c0fbe1b5da8adf361395460e0e553e2ce214 Mon Sep 17 00:00:00 2001 From: Mike Pieters Date: Fri, 28 Dec 2018 17:39:10 +0100 Subject: [PATCH 18/95] Altered regex_check logic --- sherlock.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sherlock.py b/sherlock.py index 89387beb..125a8dcb 100644 --- a/sherlock.py +++ b/sherlock.py @@ -63,11 +63,7 @@ def sherlock(username, verbose=False): error_type = data.get(social_network).get("errorType") regex_check = data.get(social_network).get("regexCheck") - if regex_check is None: - #Use default regular expression check for user names. - regex_check = "^[a-zA-Z][a-zA-Z0-9._-]*$" - - if re.search(regex_check, username) is None: + if regex_check and re.search(regex_check, username) is None: #No need to do the check at the site: this user name is not allowed. print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal User Name Format For This Site!".format(social_network)) continue From 3ef95f01c05c8c67c3b8609efaa1c1d69e81e26c Mon Sep 17 00:00:00 2001 From: Fabian Rodriguez Date: Fri, 28 Dec 2018 13:21:15 -0500 Subject: [PATCH 19/95] Update README.MD with Python 3.6 requirement Update README.MD with Python 3.6 requirement --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fbe85fee..56148ec6 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ ## Installation +**NOTE**: Python 3.6 is required. + ```bash # clone the repo $ git clone https://github.com/sdushantha/sherlock.git From 6fcc62f50055d2863116fd489527c70134a568b8 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Fri, 28 Dec 2018 20:15:41 +0100 Subject: [PATCH 20/95] new image, did some PEP8, and organized the code --- README.md | 2 +- preview.png | Bin 0 -> 93922 bytes sherlock.py | 25 +++++++++++++++++-------- sherlock_preview.png | Bin 41356 -> 0 bytes 4 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 preview.png delete mode 100644 sherlock_preview.png diff --git a/README.md b/README.md index fbe85fee..b35108c9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > Find usernames across over 75 social networks diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..727c144aa66b1079baa4543e1d97962ad8ad70e6 GIT binary patch literal 93922 zcmd?RRa96@&?XuP?yi9l2=4AqaCdiicMISCKyY_=5AN=>Ip_Q{_hBCH<6Y~% z09(4cOLkY)SJi~dN{hh5;J|$P^a)-}R7n2QCs3hJpFV>@fdY4?Dl6xJU!NTW#1x^R zpjNhIHa~qL_#`I8ujs0Mk_oAZrh++;NP`E4E}Pa)NvNz?u_$5LB@|yGRxwpV--j=C zg^h~JJg=%hTT&C=u6G`$)debgPSF1Ny6|nMwT-c@&TH#zsVCLTVZ-bGb)C*dJJp49 z-eObbCy$UX6cPv_9~fM!Z|pZ*nMTx)i;z#qNXP^x!V4hC1fakhSX?0X#t<6;ivKPx=Eu(BGIW?5(Bg@ZPo1LYUm`b>-YijHU#xsd$ z$KSlWe7nv|+o=lC%SN(vl&Mzibia0td3q+WKw$d|M`o~_BvIgy(E>ah`TB+uI+Yk1 ztWA!eNxQoXDYNWqC_7i^>)G+plh^%{jXgO^#J(pRZPxFjjyx(?spK)ezPQ5SHM&}w zDQ4Ci-Q4Qoa73`J&}65iJbp?n*I>0C9vPVt;)glPV7$g9GT701Q?1JJd_+rUIvu&g zy{GE+W8UMbo0FmeIU_z`#WaADa-3{P2Ib*e`g?6JX& zI(A@W#p5}t5_uxKt+hoei@x$#j_&&zcg$4N9lEko90@1|YRvg4MB9QdsUUxmu&{x} zT!o1SN3%*__iAU@b#96(G_E9ta>llHdwhO-V62>w_4;;5$*&Ae;r{+bEFzDN#`y_{ z>kh9ct{T4C8viSLYZ|YNFJloA)vzj3<1@pL_Z z3oDdhWMr`W{N%J3CT74ZAubv4y&rwyrNQp>D`h?*p^r{o*id*Z>zCCQr{`d|>r^xe zO3H`=X6xx)BgNUcuil3E(_>>}ylx+??OVK?a-DFeSfTa5d}SNYsd=ouJr zI0(sdEHD)q>mXguD|OmQxT)c<9$JhR#%+qnu-KpC(;6(gQq*QThX)5YDKg8oV{GOc z;h(m7qRHlx99(LcBG1)5IuWh!Y~{^{RZYRoT+QILRzf&{Q@`xWDK0DO_RfGO z-PQAwLrm0X&t#gnRHa4cUjsFpJ&YYGe$Tgmz6qw>be$vG%oZFXI_%SCa2IR$KnVJ; zo9sPz-mf2`k{U~=np<15=!Wci;tJzj{{H&58(QDBO}^$1!D6=VIkoCGLn_UK;yE}v zny`WI$}oGp|ARNLgPol{zDNpv;qEZtQpDfiu5F{nX~kmQn^~nDht-P1?Wul8BuW~a zRqwVIy|K|5<<8%>lB3}g?9a|n3RPGWEH7cINlP>I-u3QQK6st6$PeKmsz9-N7u&(H zp;#o@UtVsr)8vG@Az-_lb(HV$^Ad`PReSyEBHp1gN{n>}zd>*Mx36HMNQ&2e7{~fO zX^KoV#|Ax9lYQ9O=T@dcLsMRH6#EVr1`mRlmY~7GNAmKvVlw*9(n;mzWr~aV=PncK zZwSY&u@!Ias(zERyzwjF^_*nD*VsJ_p>h0HPuw9deMX7T<-Jjw->`$;hUfurY-&os z+BGwdHNA;@kB_}R+8BWxlN$41M%+y{9AE$Kd^-JjZL7=KWNmSLZewg5baVa9M9pNr z$m_WrlNKEVqr?04Ny*q)y78bt;In6+jeJv;4r03#B@GG7?(88Be&IO2R}QeP{vqXt zhuyfHi1M}8Qj53V`2CXxoakJu4kJA(YwWL&OT}_C{#rh~#r%~@*U%FCHyVU?`kPPV znLMa>50%&PjgV`x`0XB6s_l1Xs;c(#(>lj*LJLSPN{u1m`{P<2w#ct?js%l}d*o^5 z+FlShykAl5w+H18d~Pfw3 z2vWu_@T8`&1{sa#bprnjA9V*(iCXD&KC86A(@bywkpXM+;)@?zph|6qkL#Y;3FFsu z5-BbmQOX2Sx5o_w<`-;hlf=vn0^7?~H#n}=<`%-fYNz9Clf7uwZfg3py1H6RODkK= zQh8!rjg=5gWJ!0!Uf6QhuYXNEHMuBljI`215+*g8OeE7@c3!}(na$yF)R%h)GuKsr5>?mio^5wEVwygR!5M3A^BfV9c z+*UkLcTqg879(HH|M_Mg1$BF79nNz2wWM6j5aWA%dh5e4V)YeOndiG>B1r$sgdP$Y zbDh+F1wv#xP0%<4>uF|kGV)ZP`z{8ZuedW!-A(c{EL@bC{IP?6JWDZch|9}MdWSDp ztqtB`Ap*P+vE(SYWEHCXOhQ8iIR@X)q~&`_`fI};-3?HF)LB5MOvxA{q4~7*lgcr} zNzhcCu1zc*^2ygauDQuuQnv3DyM13$IPl(LBjSF2%WOM+dCd+A#zfoYZGGpn*5)dx zW56;)i}z{jf6t`YiWw+S7vSoE){uNlyPCVvT5$=nNTU1f#V~sM_|W)g`mrS(qe`s< z^i@DucsXmEbu0j6qJFmN>^nDi=A2sVs-U%!1i0ZWEV{`j@nf>Vi2+;6BJ{Sq1MjOv zJ2Q|sw7umYp1;s0h%J#BT1t}6(-}1qws>vZ}D(GFBMf)6jg2^MSUMwW8 zEmqUAX!)h6jUg<|T&b)##7#rFJ5MC#XZAtiTvKgA>4lv$O%Sn9bXb;ZkJN8YGKCbe z8=J}2DvPlJdKp@-j((#44Ey{E z9jYm?^20b63$?M9#w(}v?-2zJ(U_DO&-9P{ts<{$=JjgTw-I@o^D5nEamr#eLfvLC zG<)L`ZBzB-W!otzZ)Lfu)wcV~xAc(`RB?+4+bn(PgSZrF71hQ`(bxA&4sW-Zv$wT1oh;c3kt3>6kK0(vNuDY4YNJppcV8$Ar8oN@q?3Lwh%}mBr|9vOmG@EN z4W$!n^aHCUgjcrWvq54f_&?4VU4{FK7)ibxJhw8Zx{@ctaB;o)&k ztT@=z3EMqB_MGtuJ@qfTnyRWdk<33Cn7w6B*+pF3j;d_%MhAF2ceiuQ-`lvkfItz| zv27EtcL(*Xqz|$#V(q?X6}lC!sraEX#JQUHW^p*3xNiLXT%-EZ)$ZX_y)jsnkLu41 zWlOEPL{tk(9nWNl%=Y0>pNOjvlKTC)oWHC11d(7H&K zmd@eMrTNv!*ibjm=(xy5xTN430|P^^#f=#g^CqcEyYdE#Pq#+B%|Jx5qt%8X z?1G)SF_s7_Lh3J)JSS_ zQNDuy{`)g*-9D(#p==4!wP38**4Q)#zX-yCL!O9)Sy51 zWtq3HpqMJjW5=wzO5ci+GAB6znw3PwprO7T(35oe9A%ll7>|0{C=&in zv_pIe!3I;w1wsvhEE~wK`KqB~7-x?Ee%tx)8X0tV6fIYX0m!>elm1-f_JN{R3sK?MSqOh>HjwK-x&IjF*`!?|7Pxf13JlIFcwqj>A3%wbznlZj((mm$yI;0t%}rKoG8WY0wnl!Vrb8H}CH4 z?WFXi!qVQDfj_Zb2*;Sp!%Cc)5Y%1j)7D;*CwoJ4v*D6Wr`e3GR$}=WN78<+DTt_> zwO1J@@+1fdDQR&O2uNm|vz?>ktnp*FipBmj%j6#5RV*!K$T2_DOrjY=*y zcDQ`faQq;d)@I}PoX?+6QWyfQ4gA2HEMyAULOGr&CEEGI4qvlhJ?;-3Ztu@m7MjIS zX>Dx0SmG?>{~r|Nz$SOxLaQb!HN^ieh&OWP<{~2_&$7?JSi)lnj7$34iZLUTO@LXR zo^U`oa{Q91ZZnen+$H*s@TQI+rjS()FEyK)kxEh$Ck=>{;^t_Ll9lxSBo*n^#Exdy z@^86H`_tW&kHU}u4WNnUL0Jw!4a2B(%*^m7bH{^Qf`Ng7!xmG@<9T^`M8OE)5D;nU z=@#XZ6e44QXiBlkN{Ijv42;A1$k5Ep?O{?+FxPH(QjgK$+LuNPu1~jC!S540W9xUo zXk~dpev^68eE-fUc&?rBw+z5lss*I8&lWnrw)2ezicZW#W@fD2tO_wi1M2P})HN{h zzvOTnsjaJp8@w81rS0hx64~F|!;V=pq!7%}Z-?;i_4}U>k{>lkPuSm@hav0VJ3_$f zrkntke3%u43?TO|)^AGx0cF4=<_~QZK~bsJ+fK>wnu~KD5`*f0jM@8VOpKK7(lGBu zqF0psZ3Msow*?YI@V}G;Pzg*(GO+jlv0o$*ZX&*M$qAf*QNW%)$Zvs32AJf2`S|;% zJ-_bN1N2^AmQh|DVCF)M^2ES;Hi?lYTO7iZIx0jDPFF~yv;W9cIno#j?6us;wk`v^ zf&!xdGrMmV`UJGSsWtN@M=IIs+0>vx|#KQ8-Pp4xg&IJWAz%25ht`nn+ ziw|wpol{`QmNvY5Bc*+P#3SC%QkuLftt6I{!S>8rw1QJIuzYZZg@Yf4u>NgxcXyT^ z*fthuqN1XscBV|xS2 zMr2QBDO0lQVJCo>72(V8i3kezr<(r`LhNB2na*@L#VFhT3w0nWIU%8h_*L4pBuCw0 ziAXUzM?frvnC~UA4J!nfmvy^mB6vIuRdza6$)S{_gDGUn_5G}UJ5Il$0M5P|CSfRq7TQ+>?zLP`|=2DHN2ceH8wnqHM?E`fy%-p?oSII!hz&+1r8@GjSH|t zB`)|_Z|QA09nWPxj+?a zr;nPJF|J#g@eX(L-BMIk*j+falvgPLFd}MHGBUEsNeGprGErawgQ<*O&-c8}HwVWH z)k=!x@3%@de(rHvd=nM_XH!C*8G-{e>nM@K-xEab=~aW7XFWD4bl5!A(%KScQ$LZU zucudY5{=GF`#QHMq-w&4>KrGX}ozCz&5)vaURx5Xh3z#EltW_Joe9pDC_+7 z7B^}hJEth)$NnSoXKl@E@Ivpx(ADgu>-8Bb&h4=K2i3X(McyGnD#LBHP8))bQ!E#z z{aue-zWeQI-Cp(BHpdhyGXul$@UXlJe}RY-=v8KFX{niRwYCVtR|+aB#dfY~KwW&P z-+Z-B)0xcN*&dLJhV>2fzaRC1l?!brjinW1m|c^~QpNM+OIbwQ9V3Adbpl59Km_ zU$U^Z6L>ID;!^o(#mlABnUH=m{P5k7(97+ODAh5q>Q0-VP>mWB|JM-!P^d@>W(j>1 zhuO=+m`0Ofd!C-~7<0Amn0-cSWaL=j_5MUqhLSA33LSSYKPNL@uw+T*QLTt+i{@(c z$<{QjqPA%Zj5fY~U-QX+Z7^kKd51lG3=*BA$7~-z8Efv90J}wtcH7%4W>2WIvvb8Y zKK_ljH-8u4gahUic9})^q8NJ=hQ?1h(P*XMEVQ)0-xaZlFsMS`R7Iku88N8b$7< z`MoJ=znKfa)}>Mby7 zT=<5Ehx4Qat8^pJSuS+6FJ{SoJ^6Lo3r&XHM(#;o_8jIhxUEB82Umka4RurKx6(8l9Rq*(|g#Ze6vWk zJyLDF36x+i>#=82n-|63H!dCW>&(9q45ZfZAJu=U6;;`@r&pT7Z-8V5epZr?ua*u+NE6kHJ(0S zP8|EWa|VnR?+~e1LLR8c;Pn zMwyN}zQ*UB%3Yv714FHTdNr2DdOp*1{^aC?&+Un2x4b#+esi)kJ%I?GnEKAyAUM+^ z@Hid;FJEk=;iN>P!kpMBBFHb5*ce>y*DAii%7arYa_SnmOs=S1()Eu#PKvc(-LZ6g zJDvr?mD{*L>)=mT&Nts)BaEAwUW5v8U#J-0UCe`v90IR0u_c9KIDY3xpin_8QE&4Xb&cwSw(1%=CY!4N3WfHIgeQ=wUSK0T+=8N zJL|dbPJiUKw73a`&v$rY15|jJs1r(J82#~DVdRSeQBK0vioo(qfiLwak!uwm<9?-H z%*U7&I7OqNofXY}G8*3B-OX7QPoxS+szP=1f9srqrl&?LD`6CjX&qImMkqe`~!hRT%EK%T5GWk0NBO@v2N{cvpZsD=edd~Z~ zqktrAAjQ#W3W3wlpFdqOg^Y3jN5$hKoaxFUF(%(B&ywy@& zAWF-(&eroyason0qww}&k_Hp2bTtVNH(e>Fw_qSjXgp@oXBD;XY`3$|*Xk4Gzb`ghXEnFK1)<_#j8{ zy>>|Iwe4}G1^7z5TdqW+zjUdTV7JDpJbQ_$pp)b7$=iCWTfBe(sf@ACvjk6S5&9CQ||I-kYi-Kx!A-=!vN10S=e*fkYYA;u40u*a!XIJwVhQcE)5aP$I1L!cg+3f0Veg=1| zpXSm~sYO$jR-229v-5hhcTanpi<42P{hoOh9{AEsn@o01whu|H5#X(#?@rJQf&&`F zfMsGIWh5l*o^9!!Z^p!BR7inAXkno4+IFqFL1@9+?W7V!%4GAPs}sR%@rthy&3Y^C zUP2wL)EeFY!RMh?*Ofo&Z#ed;QuDa(hgWih87_C<)o5gcZ^+L%>h0~-Wb@G`lyG#c zCm{Y_VFc>FJ8JLXAm>IYF@i?TNVmIP;Qs~3-b$#E60bl`a3Om7&b02^ucp=FY#)4d z>=ygJuy9No!lW=3iDWfpzWs4(^{3im0hjcr7|$Vx{cn0{Afb36oOz2m1bJyg|#L67T8CgykfvF0&>#DUjF+*r}2M8@~8gB80WQlKu zu*5kc<8XG5SJ&4wGt&X{xvRq?aQ3DLO#f$=C8Q?n)fd;@5|-0t=i_y+ZOr%@mGfJR zg}1dD#_c{>tF&+0^G^-O7fN}K04oF%tE;O8_gP*z_~SdHu1Dc!3*%*fz?0OQjg`8!rx zTFMpYD2@*LRLj&ESX~_(JJk|{q(q@mb#(>C&g6(74rVrcaGM{%&0*=++}u2t{)Tfs zHQ;I@5o}DRQZKwB#~!aZ0S<|QkN>uNxdQ+`a}BW&G@wu0qa2P$DY3D3Z>#Jyg5+9$ zpJZYL1x*TtVuT~LdBqp=uSxzuiKKx~Xb&$xpdlcBmUIUcm_P^Nv#} z{5UNSbmNk+3({gsWn#@ zJA5JXko4_7DWfIXsOPh_Qxxoyw0`s%@zW%5dWKw zlJS| zr0ZD3;?6WRef+qPzz4ksOVc^CDZC3g-s0E4Lqb*an{3tvLNHpaWO=~OYIl zbDLg5-=)p0u`E9Ltu>6V?d4)Dc`*cp*w}jF@G0R8zMzbvJtR`4(n^lMjJ{7;NC=eTR+Em; z91i_w3Q<^3FfCs7Un10%L?3aVIena59-B|qW|HQiK;-UpPa=(CC(4z%87AIxwNN5+ z+K+0Fj|F{xhO5=+XTpuRKi@n*I4GG?X42fl*~{;}{Ro{FCI4XtLjnBK#7~1T4C}g5 zs|~^6vr4NhY|D*pA?#dr#_yxkJdNkX@`fP$L#K%fIIwIX&r(E@$fLQYiKI>zixOyf z^-AGKGP_sPS$yWkgnxNd5#Z;i{UB8y=&MQWxBSD{%k3nYoOa=R5BlUr zmf8{&PiT`lkhP&)2AhcF;fTYi$_5#8jj~y{QF&oFLAt zZzWm*^C~632_D?ZDmuq2M!~YV><@mWwy+bvAL(5m`-|ah=il7sfAg4)Qva|GB_>s~ zx3FXl7C&u@bsB+VN=0qEt0(f(f5&>>9w`kT&b&U|=VO)_y&;;0L{Be72c5*KxhSFh z6NI6!#HjpV3G8NItNaqG+6)kw353Yrtql%!DdccRzde7t-`L$X}l zX(0Fo&4|d^il-0$fqH-(>;M+zHIs1$Q@{}NUkK`e8{`9YYG;ju`wlAf=MNMCl*xki z+RU`Pj#0;S(cwQ(c|olqN={a)Bvrx(v?mVch#sJzvPS_aVfssXPn?{zWiT}{KB&kX z1q2=?20_0xlOSVS2}Q9=4}2(t*<~C6lSW-`iVX^n#}f%z*{D^7d&E`jne+9O;wp#% zB>NfgfEiDkG`Qcd7pL;8bvoxeO8vw=ZQuE|wX^CR5?gPNV1~(9*(wRF+$klw8QZOJ z7$N|qDH4?~halC%Ev zC;`^bR(z=dtSs2q8zNqjTeRp-{nvJS9-3+uAsJiQ-N}Ng*ev4=mb$zo*f0i21DMCG z9-SEeGdTFrtatf*sm8+K;K60S2-)&jCC8hwk6b&Q#)%Nk8sP#&+vSE{(gRk_xSi|UY!;OV|8lTna<65G8BJOabnCfmV3Is z=JCSOfb=DCy=-$>uyO7!m&hw={6Gnx2(^nR7 zPyr}JZh*gXl=;NZ77PjAqEx)t-D(5NT?5E0iwP{1AF#zwpv%zRVqJ{jOrcdjhEfk( z!Am>|bE?5^*h}(r0HcCX73Al?ZE3Hc1glSzgN-SLBGiomyWuLyuk!OLTTjA)fhpTR zE#zSJhM#5J*%vek2vkCw0;o{=hDWe60{4mf{aq0Y*YQs>^~CE98EZ&l1XWqFT+NnIXUn?*xdZGg7O70m)DYv>-k3M}z1u@swJ@RyqASIYBGh z=DRZEl96;`=*VQSU@19KK-|aDJ51Nbt2TnnxVL+W`Y@DOwE{HG9R!4;vf3;ch>PO+ zThlUMk(v|M8VD=lu;B2F_OSq_D2orh*|*~G?OQ4~_FnN-Utb?%k#}kN6QQQW zzxynw^KJ+VKmUlHhg}02J0lH4f;8AL-p?!SS-JhOQ3&wL|B^^?UCyz~ids(W3 z-Ji&YXD`2|IPeDnf|6YHK?uSeOt4`SS&__q6Mw%(%e{s54V~_+XP0yIWV8{DKZheR!5Hj+!KEAkP5+d~#W^hYZ{@^Y;QtuPM5F}O26lu^gUPwKK?*)FI%YO*e%CLq~YQ0 z*vg~$A*=mgxJeBVjHo#uKO`+~(oSr2>J`Zk3lDF4Zx7^lV*L)M^J2-nSZp*QJgrus zplP9G_O5+hmX#CXQw^USAVPV7`T$D_%*hx&6le5LD&tFs$8>ucdIAXz)tqxe>DXH4no`F zB7YQbb!0`ZMo2}{Z@L|wQ?jSJNhXnG9@QVL|0$}yEuTG^REW08_WWKo+)-vVS)tue zBHWgg5#o`A##HR06g`aO>bdtA>x8K)1}7l^k)MAG!GcMP*;DLA3bDw!!qs}U+C5#- zSUvER>cJ3S*L=ijXM`lJ=Zfl6T=f;2XhCu<)Bsnc+?Rm2X<12fG(usUf#$`7@<{H> zbj#7+Or`h07WIT>+uxjh>r_4W1a8)M=j(b+r>ML-`P5cK0PTaPZwDk|Qbj#hu=arH%$k(t;~rV_EK z=*Bf+F?$JEsQ&SJYO?cnBNKqMENN09i~f>i1~pa8b>qEWVczT0t;gK|H46$a78UD* z5$uFvs-t@}ncCXULrFC!j|D=QH56HUW+GvG{MF9)w?V|0<$CM2sjUVy~iz9FscJ{`^11D?mp zle^V(ae01-<4Md@+u3_fIcwW}lzQw*28OPI4qn>{Aq%dU@O(f(UNeZhv9^3RPekz2 z-mYw6A1`C|WD9Xq(fp}-WVA$7{|{7W+L(pmcatC7VFTMZCN8npe@ij*QRiIB&OSAn zSXzS74t^i5uQRU0L64-=ug7>DFUykl8gS8n_~VKTNoo73@Z?5w9|u8Os%(T>B^HOC zAv@~%x6<+ah4B5^s*|JRP1WJpti|0bJ07P~SY#-)2MWYb8{;v7+=^v607>6E41G%q zt*L2gVW0L##7|+haMst)bDgp^jvy7(7YiNCH2i%T^6)4A@u?w$-r+B8=ex3|{M7`@ z)Xe9J;sp~t9H)}Z%-HnQxWJ(`Z`9AKdZ}D?^WD>{mD1?-306iH_+yS?fEMsjWNS^5 zG7}q)vrqM+zxuHH;8*B0?k=?D=87x!jCP~JN`}FN*G(H$yTWN>$Kj;YZ$;l{mUHrT zT3GFyYfEpj68WoS^-bXCuP~cxpf;TZU=DS(3tc-vzC*crlj1-gq=l@^I9PfV=;jWD zx8>D6Xs$Zo!qQGDAY&RtBUW;yqa^d_{V;1847b*F7x>#47+iTu>2)R|Y#10zJ}ziL++8>O>VIR*zp}W5fO~ zA~tby_NHSkJlQV3A{(7AHvs&h&Z#>5uOfi`lahu)oz4aSZ#`X~kqzm#PA9+rveS`f zhwGsa?^{TAe6jT5YN13W0Auv@q-p|n(wSoK&?VZN{S@+1+=Z%Zw6Io4uLlq?gp-wl zFr{kk_Dmm-m)~B;^Zp+9ZnZn5gKcI`^*i&AT?gY{Y@M{NgBQnQv@!ys{?> z;GEpe@1K%_N7Fd>+gcntQs`o_T@&Vm)~QjZqDD=>1(jZ=Y#*3Ua4OgKxgTKHO((22PXejR^9ZuMa3+ zcB0}@6gY+hvhyO)>E(lwNyo3~>6NP!U5W`hxjQplDSHRQBi(C?zYkNN!nM!Q>Vg>d zxu{6!^D*D4$y(>~KHypWv^X%}USVlt<)foYzDz z65?Z}KPvRBU3?Qd%h%T62Z#;CGbec{x@v(G)1id$e=l+f0wKQS&y7#7#!AI9(5_61exA`NELWuS z1S3uni(C1kY72rbd9H`YE4=?@!*TY3*OoVl1p_O+n=iZhJBQnW$hL>w`RRlYE{wm- zD>VZ?1H)0DPSC7cga#q}e4c^1o)LmfXtw4WT84byDu9*)AOcXI*8^#HeYBoio80I& zIo|NGS#K>Y%>J68b|W#BV=XT~9rsRc98kVc5}WZotq$$!aIMK^5|SwDD|hQrbfRTs zMMVV_g_5`%qguEKW&iiTX$hs-ZV>j>D)1Jbo83ZL_#GB}^>fpxRMmL6g(`6>A1C=c*OSuSG zEDqI{S{0@~$;QZr=KTpB?KI=k<*>@;*?Hd_nnyGkuRW_CjyhOvBH-V7H` zGhEgbo&}9A+%vz;=mmI)jUymeyte?i4ufV8DZy9-nDt zX2g72j?I=BA75wx2ov&pwK9G2>(}h8qK(aY*<6|4GF)+ULVh28J=9kWreeelE*vyo zV&Q_q>%3GP7bGil2QwYAzbggcWPyOk$wUSGem>5rFfW|Nm_auRefHML84_y$F{Vy< zk}KEm8@Q}Lbv5aMiP%xs4nnjOL2Dsg4UaI&(0T6x{39k!I^tNNQOoUhdKW$?<*T+o zNm;b?YjyQ-S-xzQF8o9{iOZj%Xj{@lM5A&G{>~^okhs@fmEL^GuGrA-@N`*TZ>bFT z+THzI04r3jsU+C$fFVrUZXsNvbJTHkA8*4Iy02y4F-W1)OW?*HwC$6SFviy2Tf3Qp zrDa8V`pVX(;P&SrU{4z#8?%}%pfBqE#bGxW#w#@E{`yq>6(f_~Yq@{EG0+C~f%l8S zZ48{mn?#v*zWbPZgQcZVxboym4?V{H&M7??-=Fw~`+JiPtL4T(K4W2sqJy%Q=7$FJ zz%1;)r%5!Afg&=IY(^C7+c#bhxTu!Wcz8sf0NKMBp~U8;U1RwFDK>a zyNBhw0sV{(pcfxWX^}Uw%?#+Yd^iYbGQ^VS#;|ohZU_Ej2wo znhR4rJcuQF5U}4B$%lZ)r(%Ugg-$~^5G))VBct}^#!Yvw@-VAr(7>0ln8`*%q^-VG zAj#(TQt$p=<=CLHZo>E8_;%WvN#d@d_R^DB<@{MSF#PXm&&m_U(E<)D`l+Ia^J&vU zftgO@`J&znX}&_71W^$Jw0oyioAbC*xnY4xKn6#H$$&HoT=)Ow!0NVJo%X4rs2(-} zP>t9rJNjh z61zf+S^M9~m2$5}sx5abuwJGCA#r?1d#CMQBl98q6PN3+yVx@@urPP$>z`8}9v%`q zX(hx(ZEY*K&cemMdcI6$m!rA6)AUFQE1?SUDVdOz(4}^pG-?Yz^%n6%kqn(RhoDvI zhBEkT5GwEgDb>PywSr{nxpx{m-slfI>tyg(BFv;*BvGN0Om%nl(+-P3#+pUu)Ev!V zgl+5Wj0jV|>WOwu>08I>tXAurwHN@An~VoemA%v1@ThQrVZ59Vv^5EOsXw)PxbysW z@#&i`OvTQ_OQCBFaxJS|Ze(tvi*|do9}7!t&ZSFB)l8(K?##L>bUg4^wp!WbaoyV{ zR!(6@lF?~5>p3!_6tG#-H^N~yW7sP{Joo`E{`Iw71=6MJIi! z4lAqO>zX9Y|4+EdgpbAxW8KKF(Wfh0i>1~%-!A_(bH#~~v3BRjVO}4bA+I`W3}^gD z(~}h6DlH@)$Mep%{)p!n|9hdIVp3zHjVH^Y>l6aQvlUvff#Yd!O2WcHlH8_IdPKs$ zL6w=Oohxt9Po`*To53yDg=XOkH~~{Sc6LsE(v&5)hdX)PwaB-pI}<{uP(4*T9asBD z%!}dj$ge1;P}V?VvD9S2>iFbx#AdoUS-L~AsY=3Hu!DoeK?wCl_7XUY`VGa#J&nv7 z0TYr*WTL}szFM98EPQA?QT?|q@-=GumKGHI@k}l8&ZzBZ!A>o&4@rU7K-6~2K?>9$ zF@evxWEIR9^dMXk8Dq1Nv+#Jl1@b6D-=ZVTfJ~JLU637k`7UB3IUZcRMD%D*vgDM2 zKZi5?i5=C$MFefpCJ(c1$U#)7YI1X@53dJ8l%4PSbRX|^0ps4ChmGt-$7da>EI(X$ z>jp{vrmUY*X{ z0-P+ip5CTYv$fnbH@8%2cW{x@+x>~@y6${Mc#Y$@JrY|8lrmebKioZ>iTcXUVYCXy zg|xVw)W47W@^&FCmDW8NShqiGv8Zc0`7DXi^3<{{*A0=nO7K}GDEDtR=4;3?Oq-5$ z8jBKFJ`-g9f}dJlK4HG=QOELxB~W$`W+IevVH zDe?vW+6;$)y4G90GY?mR4QQ>XooxC09gAmTYHB?75#gq9C7KEck?r+zgT(&Cj_dxs zRUIacYMVZBULZR=CuwgVeLKB#u&MGEps~#%7+BaPw7;KNSAizvW~ZxSUU*o+b1()F ztv144_$MT7W(yuK6bMW*GOawc%WPS2PzKUb;H+mC8@sK=0>2~qHc?#%*J|%)EIf8s z(}!RpEbh!!M;@v$Yog^n6mLq?Sx&Ek|ITw3Zx&*?(Qsq&_0Wu7oQ1F>VWQ%q;%P0Z zq0RUn`#(~H6|vdvl7S(aY)<(@Mtpw~K1gA>f6{tC!D4p4*}!E9gWH^&n2VY&9N7&z zQ;%M6_tyCh1|Lb~Q~B($b7ytIQA%FOs5kv(QhOqs=emlxmBP>)i5CQKm^fTWP9qiZ zDGIennt$QCf36(2An#>RQ6N;vml&vG`;-0||6PIcmyMQE=X6|>Lp5&{C~i^@qgS9z z<;4b)E*1&VNz!mjwoLQWs(FBcJN0r$4TV&?*4%Tc6z&%76b%jb_V;eGC@u|=)3Dri zFF9nkxjdU4(%zr1x7nR8??58<-P%eu-s3I4kA}uiKTk>&?BGXQ6QcniU6l16uF2oX zL$8xQDl#qWIYXG3rkDGghZ{@Vmjf+Je?$K z^)WxAI-?SGr<$(swnn)zK!+o+7_J2ZL*$7 zVOr`NgWqWdJ~e)mWF6>CV!*>EI2r>;X&+{oqRyx84gBdY6eEbHUHNYG3VG{aQlYvj zn(l_ll$6WGmP0NIeZf~~p$z#U(t~tA)h9{QneG_BZeRfaJc91A-uMyb#y}MwI97F# zD#k_)rfRme&+4@58tPXtlN}h`V?>Cz^*cNqHnW_~!1+k+VFsug@gKs>iweLM{vxMh zeR~o&<*TaR9}SXtd)+5iH44V>@#tBPBCF-NG$e?nf9A~|D7Ze3t-w2X0##bAnOTex zu*rM2J$$6qYHg1R#YQudM5#`ewC?N6LodKul$1api>J@NxoHBiCuaM_z<@Y9I%+(g zg^rH=jprU(O!AGmcPIT<-!83W^VxETpu4R`kpOTOjsP&FnQxq_UDVhfDa;-HMKC|dR%yRsXEwOTBN)@do!2f z&_}4LMhCpO)IAH3XMSMSBp@i0W=8!8IsgZXc>8Z_ZFIFN@7@5`Az6Z%dl<2&8VO2D z)$WYUExHP`r*8t*d_*}mw!Dnv^78n<*!t$^yqbRP#!edBjcuz@W7|e!HD;4Ew%OQd zY^$+t+t#<+=XuY0&syJK&ARWkJNMo*duD!@W_`>MG}w?nIDghn(#Bnicib5thkXM*C=yGO?L@4U5#z}T`D^;yr||QI zYb77NFsM>bA5{i+buv^dRBz-i_F!*($_Cut{NQ(YLw{~V__>PEE2AJvP_3d)xo^2FV)S7K+1V(0i;tZTWkh3t>2IA>>IN46O$L zOn-=rG{^_M>($XBIg#3j$;8Ji<;!go6COXm0XukUv7d*7fw+t3rD|`@4uMWBt*&?Q ztK{&n2DLIzWsSwWw+VYe9yAyvE{BtCzm#?{yy;$foIii~D)zppROoSc8j+7tcQn(# z1r39PBH(s&VH~fq{;x9=WwP!cVdRv(B1!E z;Y=0JM(7pBtR&m=_ONj=$@)FipS06S#Ugr3boQDP=A@}a1j#{EJWP4K(PZRHuP$vg z10q60p80iC#lmF>0-@qOhC43HD`jBb$R?$sD{ z5Z4;?Rvs4hyyz4#N1P2FIcqM2UVvq8j=o!CYY3l%A0ANv0m;k(Mn;_eK^fl6z+CES zh;L`7I4A=5we^I9b_UG{U9H;{m?|8Fg@(P~cH_ncPIotQxHpbu=pVKZf&du2JECvF9BSZEdQ|MH9y zdhcqVI=@_OK1JZrzPK@EB2@_zwsD9d%{%+gqfDrDmxzu~ZCPyW-5$T}y3beiwMv3i zpYM(LtONEdne}`Yai{@}DkP+pbf+{!A? z)g?My4yIBP4HfOfl6VtAx5Qx(>s|W#cSec@>Do@tD z8MqRVAOF}(GO+9TfO-=^e&Vq~oArPSS6)%{ZwV?Qs0O|>o}yqUt5b)N@Nc0CixR!g zGTpP0K6|X1(d=z}FSjJ2981GV0cdi=<56?<(;S)%$}>i?b9u2%Aou@BmBwz)5(H@8u^biDcrY@k+Lq*{Rd4VAT!5U2PBw-N%}Pn8i@nL;*a6~E zjs1so#9xKi*C3^tQ$^t<8@-wNo1g%o=g9ya#X_R#VNjpq_}D*GIr zX43Nkj6HPKN-dceTGaIEpCxoI`Je5^;uqjeDS+DAs)YmKd}dqIw=&7l(b48D&umQe zECAeX?YkP9*T;00dllW8+(zoNNOIGB9!!=lcKf;dUu;kDTabgi{j#4IK3QBpA?QhG z1?i_jgN=g+_XfEpD;VWav!ty#(BX zYTQ@9gvhJ;W}~z3k&UmOHF6dTN1&eWPnRHAj@XMB+ACXKe~vJr@;Xj83)rqVhCov} zAJ3ajEpDVN%p8YdPgnDiquRoEv2>*IgLSp1Y@|D4ct>FwS;aH&>{?=m3(IHz~N^3*hTQ|#TC5$)UAlJY^IN|VHLOW z3nxp(M!NQ4MP0_`P`9lZWF;EJ*K?+3{5y}bqr>Y7glZbh=M1_wAZ03+?&{T-8EHvfe2rGU%3mbb+Yb-W9QP4aHCP0V+ z7$y~y?KVX*^l(!%DXYE#w5sT@66%(P>M>~&P6`^~E_OB?t2mm$!qCxCQ#GS#3D`_P z(=zL<5lc|_5%3pUaC4eTmJQl=EgI+VqG2ZJyFq&!UR2eNjp!4pNq>guWW?RceWy4h zs+n?JC`0MuLYJo!{_b!6+qXNd7kwv=BhEL@5}q0OKdD>`d}*RY*yI4txxk_a%S^Q} z-)!aDm@|``4%aiC!}cWKwpC(|O8 z^{JD{C9K@>M3{O2CY-!uHi zj==t`!6i`pJ2}2%DOwpNIhh&~Fp1jv?T1oKgyA5W3r@wa(HPK^Axg>X-8mxZv4~?s zgTr5ZbT&5#iPe7{%r1;pRBOqap7ltLUpa~(r?~N>S)tm^U|A_~e<6?ZF3>TC+z0HC zSImG)Fy%WzO4nzg>2V)eKuNJgLF6<4@(U+j>A5U{MuCo4r_rC)A)m&KdKX2~_W_Pf z>`KHp%r}Rx<`-sqT-cWsY2ck2Owc7KJ}}7t(Lultn_~QT9)+(pH0ighyBYZnk5B^r zX95TI7Jv!9TAt*e*&GW6gimMG{0sDu>K`2Q1M&nL$fKhvTDsD_waD(j9tS+Ye}|2l z9;b4B(A6`s+~8K*+}KzPAg>TEHtT-#UamWA?!S9yT&IqZQ>Ye?JC@1~g>o@Ff=}yI z!`BNEM}@$#x2?>W>unQ~^ZYv^55x1M1CU;o8^q9S=C%oTc9I6svPJ$h@9P2$1OSEO zMp&^;a&Px;eInz)0$o9>~<_t!{xsN^;I|1~s<2ogdc zgt73n?NZ;NVNm#w26}n0_9lji^`oQaDgye1L@W*Wd)ujE*|0MND{3vHfYN_t6W_zN zyVwEt!Grzkc$Jfb=e@UIih*!|baG}TZ~7v!PP38pU_Q))X@MIX*ZeZCrhZYa4k2}R zc%j#PJ{EOkjP!GWOS`wuPdzOt7&B7~o158ZdL7LLY+RLAJC5t%^6Ep4zEhm#vecs? zG(LNM6;CNiT@GAFJ-qmlZBd^A@;vm=tk_~gP&GBS-gVV&f{pW4ga{?(u!*m|my=n? zDXGfZ-x%$uvP-IVN@o?2NE~9;aw2E_5t@nABdDfRWsjATy#{}vDMy5LnT|3>|hqMvrF>0z`icC!0JKkbzqqRJi$pr;?5 zY<>BzPSeZ42I@JOQ6N6`7DPsH&y0-?j!F-e9PfwV_z*K7P##rifjhHnrbOXmIPttk%;w^zRN{?j-$G(k`q%~Q-jpB z1gLY9bE|-w_BNbNS{GH%zs!B}CWBhlX#4?dIvX?l()BS6_z~WdbGFtgHS`G#)ZS{X zJ3!d~A-O63kla&D&cS{7%+oPROqKf!ca)b8L17GMp^|3&KI~Q9yOfzUqWfBlFU!` zOp%WNE88W9p*$Y}&A?k;So~G5Gwz9=9-mWNd;*XUFM%lGAd$(_xJ+Dq=&4#Mq*h@@ zY&?y4{c)SLH6ToCRWki41~1W6h-(V#j9BHMEHLMhB-LZG0>yA zVIDforF0=1W+N>VO3f(CPmIlzRU+w19xwNMKOau{O)uGM_sxng28!l{R7fHHYSkWT z(-9q$&LM*E`Q>Ozg`LwSmVYY{F-Ak_o{^wsXhD3`+rk~<9>>x1Ytz0b=bDjRWAQFS zijo{VjV+A3{pN3Mfq5K2WR_Lrn_vz!lzyxU4O6iu(PnC=+UT#b*SD%m6vB_9yzCim`t1ivCtdO^dH&<7oinMWWB~NHLi?e6zGNpGR?G-|NNeK z;P;%|7nysq8RJ1h{^TM(MCaE1K@!wy`asqE*k0k=n5x1@ZNwOTn7*in9Km-5wOnRw z9ZB4qcfhJJn9RY%l`>&|c3WbA4^s!jU~_AAli)^`FR;)upD zlAT-?L(In3UFU^xWM8PWG7~)$cEUdXAaOI^Lxtr=`!QicJKKZ%SGJAMzJiJ15OIk71X6I7tYsSm^jsQLQd?j|KT>2o4%^v@~8^5?-EK+Y~Qo!m^=7#xg-Jjx^bA)5d8~&Ob1hp0w zH0dtTkU$pDK-1?v&QP7Ei1zOrnO9p2ALBcICH72f2;=hRk3x0h^fXiy5e_{6X5YPF zB(!;4Ip3~a1+5w`E}%{Bxu2!ywycih=q#hb*U;^_r3A<17u>L0qQc%oW3ok$(O&-T zs|WOZI}h>YYF+$i1oA(E;~&1j6xp1L?BRm9?s}-AS^rhWjI(^1LL{uO`UAL6kBvy? zk|!A{7u+iCR}X-TU0+#T2VWNPm2v9k#ck10PYHoqmUfNtM}JY5^4Auh*U@iA3|7tZ zaC&Tt2p}t%01yy(&I%_C8gBplv7jzJ!zO{aLGV-QP)X4&Is2!9O0%6%>vSd~m6d#+&zg8Ui>u-jY;XfdrE3RJ~@j zg^SUpq)7<~w(2L+Ph>Z%-`XxeYaL9dKQlN~Lo0DJnNb&3{5Q?VB=b-1&3do0 z(4S`~xCrcg#=`v_6JJYxEdjg02V_P&&?~^TVkg_XY~22bu>@@Rj=!!{RXx+RFG{CY zG{8^Oo4r46SzA{8SX^hoVpOm9HZt0d%;1s298I97lc3rH2e(gq?#XEfgZd~4wDKG4 zFIU+O>@v7E!sr2MLSz}=`@<0&+V?63uYTw7R>BsuLkXemH0KIT#%?*1;lz9iIccdV-w~@HW(&98^{3ZfVp2TU~ro;ZFb0 zDRdxPEt~tV#8jfE9Y%z=$_E2~4`oBH!{GukJ;iohES%*U0j+QDGl>uVVa-CvUZ>r~LQw(Vy@&SdPC%p&QY_e@IIZzlQ8!R5{SQm*l9umH^SZei9hT@zw_ z>7Ynx*n_3MnURyORgYt}N(nidh-bjN^97vgMon8=M@do9Za~0GyY{|T`gzi`M=bmU zpBB%uPs1zf%_Jr3B9PG<)(|PuVz)Rxd!~Jt%dO>dD#GBob0B9qSCNpI%Ki084I3L9 z0f*ygv0?m4rF6iHNu$*tu%Q}ylaqha{%`Vmct!51O^K*-G#oP}-mi%o1jX}={u;h@gF?+>mk>m6BqPy?Ku z-wwC3+@?}2|C_5swUPM$ag`nvvIRya6i`r5D;s%2|1y;p6cm|nth6gFsxp_Yx@>Jd zJ>B06q>{$+0FLJm2rQg2G9Dy@gNu#3-foX70M#MTst{MuIQhS!wflh1&*iB;Q2wc|iUGeCwZZiUvF9%a z!54gowOS#xochBt3l0CNoQ z9Q`^^pCJ&nouSn*s@tf48kztB0db)F=`SJ4D^gRE9B^oRHWL^a>+xv|QnRNAtm5-$ zU6NM|b*#)SV$_McucEo32ac|@Wsf%!SP#&WNtB{5`;XBz_&iXIa<9IQw_9ZWnl};k zuXQO+YG+So14Y%j?`u^tQb++mGxm0UzwU@Z*Nam4^6~-%(7v|2!ca%v zbj-ar**~+d)F~-(3f~xbAA5co3?UUK&PtEJIp_i_;G}bPQ?F1L|U4pWF4_tW(zkNPez?++~8A4 zXZTm_N0h2@lxfhgU;?%-9b^DPA%>O$>X&jgTIrZ95(LfXu+gZ_^nQs zdv1@kR^xs62@jrsJ#)X+bWP}e#q>lIatY&Iu4UAS)SW=B@~gTI5VUm}hljiR%~m}a zo53w~r4-8V%?uY!Re^ng%Tzy!&PqZ`y4&So=`-5xvcBMC`6h?dPa29jU?N})3oC+z zk?h~CpL>v9H8FByZI)W9lXpx~vzk!~m`?>xE{!Zyc&X;t=ce0Vp9Z`1FMsa+6LWjA zwRbnU!1RZVq=*s+1CR_&a)5f{X}hIvuTtrQAdVf^tdS7FjIbhM@%~H z8c&EPpR%&RKnQnJ6xmYA*%G>!mx4%KhM$VuuNtnL+T>H!GT!#~KOND{Mr8Tmd^8oc z0V?}jE;o<%HiuL~aJ1cK%Hqra!>s00_Zb$C-KF9yJSR|4uNJd+CquA98Q2 za4;RAVWNnTU}+Y`w);a<)6-l|EMml0cxpTB*muM7w|Yf@mlPnL7S9|`F>hG)O-iDFXCsdB^iFePr~wrd?hnKA}}S8 z%D;-z5HhOOX<}@PBPIcPC{X9Kzr30BC%FRJpF*4_nuEM)+mW>P3>%UIokY1%sC3a? z4q$r}+@4rvJscDq4aHGWjVxNf44VQ29~+~@!=hO4j^;5*6C1H5)X6e3)6&9p^~b%v z&eq%DNIh=PF$pn)x1tryxs@b69)1U%~BJpzE8iYP;bJ^aVcgVNwaOtDU) zkTs+iCMEiQ)ABMYt=801%4F*2n4t*q_Ml*%I83M_9S1{_-=caL+o1+gCUOuG%Y=_4 zIi{ye6j21I4c`a6?U_P=@X(JN)q2gVadEMar~6boTWIvd7VDl7xA((78ozhTfjnE{ zAPZRs)6f7i2^rMrYC*wiQR*B*sZ%B}Grd`iE*9~TLplOpRFGWce8-FMvmfJ+cQBb+ zR8hRBwT=%Qe2du`TSENLGVl-jy6XyX&uLnTLHeftc81ckf7!_@Rx&Q^^D`%C=+2vv z1Nz7HV4Bs21j0G;&Nu@$aB=}g<^Q2436822bA@t)Tq7~eq7zeN6N5gQldO+;GQy)z zl+$3u{s`Mlrom@1&S-IN!NhTAxIsj`h#R70#c#6Pe)hVRq}7W*$kc6d!rnGI<$mZ% zsaDP4apztT=kA^1?{!i}{LT|L7!eS=4;{?nw(}c=@sLQyB2a_1XXH5N#XHhDR%uGAOyn-9b6GeaM$PyB5 zt3Pxkwe}u&d~rGuQwoqBODxNmx#pnSsD$7{@X%L1%pV)+!N+-PWLS-&#shUYPWg{F zo?Kp@n$ltXg})Per2T-ihg2aatDHT!x26(2=f& zz&CrRJb_6ve{*BV{kWhb$cJ<5dI&Wo|1lh1?Wx#k;29C`hfVKa@=>oDC#R|kdUzVB zS=TyerIG^fPca$H@6`09;=`KgX`y_szFg5cR5+FCe6JCagW&i*Pez6XZ;S@}5BIok zKqoN$1_Fp{_2YPG47)H1}AoLVpy_@#tZ*=N6Yu{o&dW+Q^UJ zoy7{{Pls$aFz#-Ll|3>&t{cp;J0p%9?xsMGM{$f;xuo~=i4>p z_J{Yoe={Y6`vq*nEaNygfSwRgYq?%vs4+iZs$=9HO@Fd^lXYk@A~ASW6G(|#Lni6$zaT_nVM~KILQ^iW z1N0n{HB8hT4yL$T$llq{_eXpG%bt4iEX@Bza$+r@7wIkdnc9GV@BC9&46% zn~yqwhm6ZxBvbQ+^aK8}{jgtkvKcLf;px9WH0RY)e8ZhzvCrIce#9Q0UKuxxngR$8c&w?~WI1Ht zZwN$<^!(^lRfPcWDyd{pX}>GA?7S}NSc2X_iWu!5J(zb+H^11bi!zf+2kAGdbA)(= zA`UrLD+?kt2J`KLkkff)-NmRbmqqlVrEwSJxGYnBG%-R zY#-!C%JPgVDL4r9;vX4?e{NC}dE{i(y6Us3mF3QX#q)ufljYXe2~0i7c#+7`cnS-K zP+fhC(V1WUwt7Q~mbaNJT}#!biZe>!#Br&Ws06S}FyB!Rn8V*;uVDGonv!SA+V6*Z zw10^k*Zy`(ggdD#m!k9P*$USH9}8(7DVL7ni(O}jfMZ6t)~-3*#}^n$<-oL))!&1W zMuCAuriKno`81Tj7$V%s<>w>Pd?PVk06KQq@%D9r>x+?#Dh5%aCnp68f>BkU9E4PW z;M56hM$YVT7cq!A0lPceMxq|AX17iltHLuFs9<98e0Do8p5h&t-y1bC9?HkDO0~*} z$k24|uNXw>$Erh=EVY82;`eZ#I_jf@iYQ@iD_vp_i=KK!xr4xz8kM7 zHw@nE5NVRx*#b821hh)V^<`=u{8Z!zgoPg#AFb9rdv!n|bbf8YRZVj~rRt-P45Cel zLa@S{qI7fp!~sPi&LI|f%{^8iISjCv80+>YA)1>)VZJNl1oysqsDzA5^Mmj6cY$KS zMTVxRkdgAdJH~{H3Big9mx|JI+ejxNG{N^5z9LTdjK-Z;!cneKN*Ws^6LZi6oeTGD z*+CJ)AEXlc)44mmXy5BX4;bjsl=DbjLaDN~V9l{c@&X-EezBNhKFglYczG@tUSeZ0 z!W?}GaKYFaa#i+q1N{;-N-DQKU5;njZK$!VJz=x`X<3Z~bkh?JFYrqcGgiY;Ltbnr z7epV0*gwBxqaNBN0&=z&G_5T_So-E`GR3#1Y{VT}!h+Dr66Fa6i=Wy4mW-rIf|%$N zjL8yk`=7c^^7n~KxLlVSXDVgXyQ8c^Mn?3S}svcZaeM2JilAli}v!pq_#id6sW_LP8cQ zj6DA~m!PP|v<^Kk8rb(v?pR~IL0_XuuIaQupgnF zkBlDQOq3{HI|3Fe0T`pY#~66ANaG@y47R zJs&{TKqXaV+F$jr^t#G8Q6H zC2oM^rwGn)`Etl|bqbO`-RSPjpME_&om1q zMW#;5XuN~MLO`9hXgksQOneV}bzOZJa7|PM#zo`WVg6i|=M92_pYiE;4L~in(;bdh;b@A6`DYu{n_boU;Uojdq+T?F9Ztb z6RH`6K?&fa21>k--_pYxt;{4eA0)e4{M$V z`nwRjuDq{|PZ|XH!M;?TX!7#DU0jRe{=lF5u#6B+x*)sL;qYU{*BmL%f47Wd;mCa>Df4t(_O+y|$ zj#|3ZXLGoN!f(F5aF74~HhZLo8ims$aP6A;-fiph#Z-3FgRfiw$40 zeA^f}#tr+SI_R{mL?Vd?k&8e`vc===r*Z@K^Cwgi#gij-Kaqg%q_NLxr5R$7DjpA- zMb073fpY7EoDO6eFZuj&M0)wn2>QFgJ%SYYQo|N;Gb{BanVKviS_Z*Iox!(aK0reu zX4Ze=qebYJsF@~8uT`DgNUy!>l_knqUAF~;j#Sd&+4-H5kk#(SD!bWb{qk)rvU(A_ zX?gD@$S5!M2KN*Wl4^tb3$okW{c&~yI*$VC8_dtAhU%B?5v51=8OD;kOUh^ZQM#KF z6+R!D?P0ylJQIw1YpZ$_S$svSCnBB~bo4gYuUq(<+g#7Tb>vVK*FWULK8ZgLYvF8l zlozb@`PjZraFXSI$Q8pQ)Y!Jp)^mRD2w{O-{z*n?8_|p#1LkqvOg=ooGs`@`ZqKM- z!J_`pxFM<#qB8iWTrQ&Sm;9`l*pU39xnw6%mkJtqw+cGu7 zhQy1;R3&ROPbucZdSeT{zZhO&l+8vQTi_=o2M1Pj^_<$nK4zqfT^Co6>m9FN#vLOO=5@V9 z{LY8%Rg+i7cp-ZIGBubb3p?4Ra#h&hp*pghm8KwGVk4zq|Y4=ill! zU1j&KE!}4=lRI>i6fxi29=#L8G88)M6E(Q{CfL9MzIrqVB@;>S?ql<7^-5_<5=>(I z=UhjoPdKxECGB5t-~FdLp4Dc%CaRs+@?IxH+`KS?LLUmL#7-PJ#QEH>UbY$#j<|=O zj<;2EUFZUqHy4dMJa=}@@v2s&HXTkBsf??owUt~Ffp-ejQVh;uQ)<^Wm#$D4DU9awH5DPY9KWH+Gi+hWOEDQk2B+0ZH8TG1|XVEwDC>1}t(YFg>6; zl{6zyhkWPQTm4P9V|e)so4!zplL@0s1M_?-+kT4%O`oL|qBb0I{}UauucsyKKH3S+ zxWbgkF8h(Y!avVRp>c9!mI6~0Q<%9 z{ZToqxsSAF@L@k$(`tIcX?;IaR8(c#xL;;Lk7RMc!;Jb5@VnUE};5O1-u|6Q@%NmJyj@wDw znd5j8fxoB~gVM9JSE(B7=XN|cJ?dL(am|D`V}5(tpLYxge@j8TMdLA4 zw(XzHzQJqi#lCJ3dBsgOHM7{zx3=3b#94EwpkEt(Io75Y-4zv+CZ_8~$hP`BwT~ zl|42i?(f{EXaH62pD8@spDO!^HTSHWi)I1AXw?8%`u}{>4*FZ%^yO>q^wdnHZdfKl zHC|w0o#AKH5Bt4mD5qA`U(x?=8uVemlnVC2m`)vaw=(^`u)r6QO8yO3(CG{9obtb0 ziwRkX_{tO}&O(-xxH{0FLK!r$#2sZZ3v3tj(L>PGU;3{6goB|mCZ?y47n)e! z(MHD@G=}K-o^LdoT-fx$+r9cy-y^U{d(Z|ulE*v`lLM*b70~73!D_t|QPNRYFu(~E zEp%nQJw>ik+SD!^vC6Si7fV&*`mDTD$pnRBRyi*!aZ{UA+!Fv#_RJ#7csg&fJOCRU z$*+QXK_Qw?x33mD?$c<0sVP0y^Y~q<{i`-x5V=9slzZBVk|ATbeGS`Dz;eF2XXX-B zF*Xdf77>^4=(OJ2`os!|i*@W;x|q`DK%H&Lm|M)U6_*K(-ci9TLX#cJ$8pV-tUE}0qPX5ZzJn-0_oS6js>~2@ zb9WI!dt0KX2qL-Fesi+CKcBT5YtnXtK3XxYGd48YoKd=)@3=T0##DX2T#n8!U~_in z@$DT2nc!^WfYb49<)yW?5Lcin!}n;%vMI%bMGJ+j)c4?BO`U*VaTz z`6+#J363e0EaFNiS4zSP!l09f!QXzJ!U1NW9sc3+M1|n^o&j_cHBq`#17owWr>#Cz zcunCF0mrNkc&vqRTsABRbT7om+w*a{UgxDSLuCelzkVpEUnW&VT(tbv0o^-&uD;>j zbQxpIXI8T@{{K-ELzXE-OQ}eX~D1q z>8}(g@{rq*9#FwRMwTm&+YMH@n3&kP59KtWMN9y_?vwX%{eDwZqYP<(xS!-6#$Lzy zqw|f&w%ynE7tfRz9r+2u=}91Db%pQ(%Cr7_#{S~RrelG057X(})XmSsq1)2%admg5a0VbnAmgmX8eZo~!3O7S#rXQ8RUNalxCT+$VIw#GF6j}i z*Wib_=|{7PNhCCUJU5cy4l;|)bKPa8zvG-9XU@T6L#}*{NmLS;5lWp-7mc=4odwPx z4CY#!0)h~F7)Am9+q0vkdA3Up>oJESPM?*hIOjdO3!3DTAT&Y={ z>8PrAJ1Y;(aEk$$a1RG(VqIBTL`1|z-vE;7pHns+HnJOEHv<>}rtVRHZ*P;}ZbQgG z=%=PjK8hEk_0gN}2W7QNAumvD!B0JC2dN3AAA1j9$=dOajC6tUgV$AW&&$o;2YFcX22sCTfO$H z9s=}ZbV3mUmG60`PmvH$l|#^?s5A@7^x0_KPq(JWNM~#0q3#M%f(6=V{CT6#%aGQ* zKqZ5VbwnKNhtT$I*5IqSlpv3Uv*0(_C3}pJa2=cl8gQ0RO9Hj0Ct4Y8);eB<;G(+x zc2ez&N1vH1p&(*h?Vfsv8kXw=cFiSqlw z`81Re94oBR&6OA4%lBhZqRvl@w`Dl9aa~>?kh?q)Y)rJC7y>VMpBi^M9Nz{3>v!+{ zHNIcY@n+*owYE_ZRS%7vFFMV3U6VsF5by{H5T~4h1)mK9Az18zBYFZLj-~fyv-n*e zpd$e`t+DERH7TU$4iCr1JdkQHL(~P2YBCw406h*kIPI(DfCEy>tjf5?SzjMj;MRcd zky8p)%R{@N9dQ5Y^Ux!HmibFAW@C705gTj~xOICoCYN+}GxnfXH3q#mgXM4jYD@r- zrt=3)Ol~A4l2Ih&>Yqw7?HXB_DY6;nwhQcSq3~%62gBiwQ>GB+?I`j`R&f!dCuTE( z4pj1NX?C#No%J`~Y6;g)PDrsZwJEUAe{lFT&mR)eH=mMF=e!a}u|J-Ey3)3+hC8$0CVv zrGr5aQkd{0_VpkR0{S@}U+*|sQgi?r>j$!bw0;mLvALRNs^8GNu((cF@n!FAOLICz>#1QUSs}EgY zj-#9hAbn=gg(>9-F?SLQyI5qt&IzuY%ZsPBC3k|ls2;ZN6kZis%Xe5ZUxzR)hD#7W z)tbL0Mj>GY*IQo=JVZH~T3Ln1qo8V7@nyGOpLwd zg(dyELxqK&obJzcCz3o#3Ad0?*;VrO*LHndWW{oN=h`w-QZ?ROjXx(vEL`&IN)~Bt!m>7C^EfJEInAI*608M%i;K;skw;#r1WxyG~E% zOM(8tkgbcSBh`ym{vs38mlu67tl#>$pl)Fx>rK;U7fBg$(=!9&{K@6F>)+XGsLti0 zvn)m&sf8%?9tc0W@b3b=-vZS0;fG`Cn=2oKVJ~y=O!;$gM|DJcHT4R>FLIES`QShbrx= zRO**rRA)U8eLm?}ueAX?Rr{=r6gp^v zN7r%^816)fVhxf&FhnovB59iM4&Gc^>K`T}@B!r*TkpB{7!smlRzY3?r~PZK^zYQ$R z4kw%YiaKqThNk9L53lKp`pFepmSapswURW53L53%pw&9{qJNWeWvTetU6##qiC)}A z8k4VCJ>lF+d3CO+(ZESK9_V;4q`Ot+Ia7N?f{_fGm}hscMNx(+1;Vh8uHDH%r%O+2 z9Pw)I1|_&`dT1-fa`o2cwtr!v2|;_Db$e%+ATvV5Eih+ZiFPua>3P3c?6eq>kEhGl z@5M2*K8L(V-r=$iF3#?roi4Yy4AzfqCS>XPTCY4f3{ZmT-9X)STz*{Jio&Fx39F;G zLPbJ=QJ9Qu3xiI?BHo0%5mlJ%sbc)6a{$Aouyo9%cgQfuVdXm5MI2ts)d(H!N9PI% zh?ts%TmiGqfv>L|hJ@R1>tG)@`c8LF4!0?A*llV}x91m{#`v10rZuWE0Nv_^UI)mg zyBO1j)hYHjEniPiMVSP=11Bh=Drb*-ea;Ul%JQDtubRG#r@`dwx5-%V`(BBwwp zdV)5Qvl?zPZ=s6%Z*{3m`%mR)*4MmU#_`W(pw!u(#;TEavN+0dE`*=_tf$h$7RZW| zg!o0#RNW;%j!Cq@dc1@GEUvv$TpTXdEnXUbVT7pF0NEvFnR-(6ckF(Qw-qDeAVs`j zRsS7Vn=Sk;8sxijsE7>bhA^9jeqoJ+^rKsN{v=9|+bbV& zQZg5Gn;mA$Jvqk=aGB!&K0@F0mv-)p-7)>{_(6lQy-RpvaH87dutQF-pr#~UUM6*B z*QBtEz~auqqHqdab9aimyrlN;^_H_x+1(rk0M|_I_rchYMxFyC$-d-kus%8TtVjxg zq8%Knfz{@pW}E7}ZgqbL`1%EMgsa0pF|RRna;Hs-g)sp&4PL5ZV}xI$@+tUo6QB(H zZEG3SS)PL2zu^A`jE%x(Xq1A4`11oir#ABa?PSfPES5LE&UfO7`VB;Ncj&f3y77r* zXB>4iTI@0<4F(s7&d^*jd?_^e8J!`-BWgp>L)HZPdw%3orJ`uCuVw%DemIPNtO~cN zpbaIk??Lful*0OHAu)3H@T~CtZa;;PImJ@j{c5;98eGKP#dh|fc52??1$wd00*A{p zXps}6&(Rbl^IHEK=>4)5g%?Y5i}DVB6%zYh{<>N9H!?HI>$i=G7mb=pctL)JP(ktz zb=q82P@#|xgwpvR3n4~={4r^l+bK0M%P`S$hC4*j8@dGicF{?C+*Ra^ftCS1Ql*Z2@ zFSlU0WMY>B;5Trv&kZz>j+3NkA`<(ZjKj8y2duGr4VqM?0E_Fh8lPtoRRk!o$K54-*M= zfv;FSf8Sz;t0fkn+<#`iwDv z?!!y8HlsA0@va_4CNe-(6!0c5mFPs2N0tb6C+GZ;u?66pPAA zTg>+J;|R!x+RQei2ibR*Q^MaDdzXu|CQ7#vHJ?MQW8qJi`#LYqP4ffI1$X&@lfeHy z$<8ZyK)m40&Ep`^Wn|h^sTwx>tv8`@e)%ypTIXAj~=(5 z77e8tD!|CwgsIv4iq#C3@esbW=%y-8gtS_qR8&$U2(~H4$5N-~j~XdTqbgeE$*EcN z(A)mykKCLEMWZ5mpF2k|K#dltmW?WExWp5vH&GKJ zigP!>C8AAZf7PjnEC_6C+$anVDa%R*7Y4i#>B+K_g)>QWv7RC4uZ~w1zw}Y^GO<2N zT{#y=`(%&CfcAGJ_!L=e6?6r$tpoeS2f{xJ|1wxv^BD;d;Y{HiKhOVa9LLqMqgc|1 zZ|yNgRQT-!xq8#Y)!Stt8HU~$Xeied)*5F}+kse4IAQggnLl@~D%^I1f#jUp#ZH@2 z^c~8IZ{DhZ+s|<39CkiBMGuW5E_|xV+8E`radqQzi=|%^##t$W!r2lessMphy<-4t zhNYAMt|HQpOPp?6KX4>zV1&6c2Ad$ZSp44m%J!hV7W!gp!!AhWxsto_IfTWR`{H_b!(oul5NV5I`J zdv1qWY5_)@^ZqGTCOXV$zN1_FD<{gYU7 zbv0tsvB=Drjonvk9Zw`@`>O|>Y%;$A-0Hj^If9`U4X9DfxWIA|XUoFwb2U^$2IrTU zo8&b7SK&^9-|&ueu_U-lt!w!LF=l`*-UdG;wzU0+vE6gqGrk|H(c;|Kaa?yu{`heM zbv5yFi?UaFXuzrnuzrWZR(oH4ZrA}Kh;t87WPA?|anSEc7>8W(>o5>3;T8CKv0J5O z&cGG8)?z#M1!wUKOc>WOBWR$QVcP{0mBpYgsa4@0A*W zOF&-iP&PD?3|{mt4f0?rG+|4vRMR=&SKgkrUDESvbwO&=?z9``FYDu%G|qaA2&Pi| zQ=#fzT~^<+b62AxvK%kYQV%k4LTt*@hXl>1AyyLL;qCv>-S?T%u=@4$sMrY!=0gr8 zI*@-gIrW8you#{}g@kwqiLawQsgdKJPE$~9wMu$xD8e^YE&WTZFFrkE4hgLc=rzJ0ts&N zK;Rj+zu-9ZNt4c3#N!hk0FqeXm7zFpsj!(DVJavbq+W z-sNee!{zP%5pqOyJde`U6cTQrg@r?Ya(;q6chBQpQ(-5Vi^G9Uvz)X9+B>#orjRRH zu}S50*|iVPha}GhQAq4fX6X!HXXv==7P)3$XKD;$&yd2ZlYpx|H>;e<88hJFGK#4} z=`ZI3qnv(l@C%JtV5h(BQq_AwTx7Sr3AeH@XAqlS9=uWb(#W0O_DWXDLYJOAqk1o( zai(t!BQ-J;n)PJ;-Yg)X8~0NxcQi1V&sf81v&|i>j1W%$n<_Y9zXbA9b)fy(CV-I@ z`VZh$D}HWM7-rM>e>NG-I6&QrNt(}cj3O8F3msJCASsWq0;a~?5#}d3Os)1=C0POa z+;UXd^mL)bF`;7=(-CWkgrec^~T1Py1wUT z!$8Peig8zhuSHFTP$9)4vlEXCo_ex&CWynfY=`9g;s*yYvHRP%^-ps1n-6b&WD$_q zw5ZNgDL?jsA0!x>UmC3M^I;2L@6LY-BNGlOGgV4-h@>;M@J_V_+V4tLZJj; zU~xJV37d^(lq&-8@tK>|ci&CnVAET(F?}e^l6gZdALsY`SB!*H_!V)>T8$Gq)K;~F z#j3SA67~$|Ol;@F&S0(lru`30^eVk8t0=C-`KwA=sn@St_7PVpJ0d-8Z@=BSZ5lwm zAm1FX@bNO8Cbmesaukf~8d{U*a@b#A{ht+<1b8&OV3Qvmj(1sKgKU6u$$FQ&FW~Bu z*@6^d(Q75-bE9u$-rL*JZ}U3%ZqVV{*p$p|GnmCbT4Cj2^8Ao*B;CV{s^NEk&yn)0 zZf9m32nVxz1`vbA&^iO#Z^a1og^6V0fn7d|hjV3CJ-R9?aMB~!@1HCcezP6CGnBUa zd|Z~d;om_(lIb5nUzc*LB`i(Zxn-!|jxJ+^WhbIUkvVe3-$cY?O-w>S;BrgaV~rSK z)s7ILv>AWn-8*9D+3Q#^l_%oS?*)VuMs@xx?pOk2fv4S)z`F&a>CrmFhLmO&c8V>4 z&=Y3Sdwv=zsNc+5?9+ekdFa-W;Al>}?HLKwR1p#BjX0S!#x5=qlincuDTPtivm+rP znvsomb6cS+74wksRW&gS)0huN()seZ9*7K}u_Lf1w&qqHYQ&?)CweCtYmKyTd{Y{9 zIM$wQ5R~fL5vq zTa6m$_)UoqWVL@G8T*kkHWL}9YJhX^j;7eDG9w+ws@CMghmcHwLj{YYRGbx?x!(Nu z`_Q$X_zT24c;+*38JCC2zVOyu@MWQyiuSy}>TQ$Zc*X-puCr!7i4mcN0mI~&<&A;l zp+D0|j!aTPYIZE~J-2;KvKCxx-mzd?XmCT{#(SlJ&nBM_da63ON3vp${2H zQZ|`wZ*J~(eX&dS$zQr7X(=0k{{hCBI?UB{1kNgVvV9&dyJ@n}qGiqgdEHC3zJ_g? zZ@xdUf!%y6!PJ<2U3W=O$UlY0LYAyax9%XPo+uk1LnQn@{N6iUqf$e1&s6&g2=^nb zrAAk}`u&*Q1da~18E6NRltX*`jI3y5QrCtTa67a`ew&No@WbPG@1aky_3<69c_x>v zul9@A>9$N%n>r{N<}=s9anz;q1v~mlKrd}7WB#NG=$d!vjJ6N11G;tmMH+T+K*d~o2Jm!-AQZK=|pCM|)B75n{rb#?8q*2SwV%=g1f zVvf!gj)^iE8F$FR=$uKR7M{-bKUH=$aQ%i>^fi)aE3|_y3cwT( z^K8!*-RlVp7u4xD*r$pNW9hS-nVB)`()(3VsHwXeZSbp=GB#_?ygD)JlQ8+fd|0R5 zNqt>mmlxMLJ3Bk`D_kDe?CyFpr{%!<;O^aP^FgO@TcaNTil(p``JouY-*~~UKtzN~ zrj=jM?A+|hYUlhX|A$Bu6L0TniIY_gyW#hzG)Hxt{@4|Heo1$*Fi$gXSdY0g!f5&i zI&}eaXSVx#Yzg}HUT@Xk4CWWC%gnzB@$yoT1|oD^2j)DT3xSY!uzx988HlaoIh_gU1`zrLjE5||!^81$~+z(_$3T}Lu_i&1xtA2V4JHW6q_pka&cv;z5U;!~two59U8Tj}aDePM~ z9sLI~#dMb-s#V4KI{p?E;3ZG;NjKSlc(QxK-Lon9jYEKVJo>{dSaPV2U-Mv1-N}4{ zgxL^VEMF**_GGfH+UsTkc5LSQUF~;;a6(O}0eST`y>N zcj$4&XPugrPg~2;2c|s^253hw(qbq%4#1oB=l)F4d~^16bxLdKA<4^guC8N!(Bgl$ zfIPwO@Zy0K0A~zG`yp%_J2X5dYD}r32rOdI03(ss>xBs+e|@%&sAK#sUbCsEfa9U6 z12IVW{aD7A0N?hf`aOqu5*9*13(K8VB)=;mL9|#CX;086lGTa6fxYM55ij!^$-0PD z5PA-JI%0ozfe{<9WA$4yQ4eG7hJJY2Gsg%sdA|0A@HjEaBwQFqKL#ZG4?^AFcxrWc z11{j6K&W2mgze8&b(*yXp(Kc0;U+!q+Yv9nQQ)<zB;5!6_*r zS`0$WqC$`&@ACeevrF=#`i@LGi*ecD=?s>kzN=`m&CoD1QNHy?S2+G~jYXhN*SjCn zCoVZ?UZxH>sKC;Ux}@~{xJ-yoUzYLQ&1sMtf>0TsCVF$#x{#)-3UC}&6eRyb=Ruq+ z2Gim-qhxs)W!YWn8GcR<*k(B}pbo&@8m;kQV^vG#dHXy*78Vv@)vtHnKIL^}Xv&ax zCo8#7vmmj=VTa|?6ulo+F#CQaE(S|Ykd5GDF+8hcJpbGM2K5FYheGHwn zOc4ZR`D_80I zDCtw>!`-K4@<7-KS8+q<#g9Bcr2Ll(V|baExxkFos(Wo80u$Xj9r2+^>iBg> z*Y~}{t&V*t^XM^I4+Qf$yn`T~+@d}fK&M$z2z@ns1a#g6`R+V07{wkwrB~)53p1pr zOrWV1hW!z1=F`xp2#9E*yBFJZQjH@XZ@prP$%+Mf^#gRTJlTEY7DD74%f#@kJ;eIB zf?gy3W|01<`;=Y`K1_7n1cI6uRn;vm zN=1j%0ohEa;)Y0wbEl`(r4c5hBnOB>FUzSoCoreS_1>3Nuww6*=tc>tSH!TgJVg`a zI^2ZS)|HZ@rRN;|IqF>{l1gK%KDG(Mr|13|A&*6gg zMryn1BI3ap_DQ>=D{H36XkI4pODRQe;)He61=sX9bKx=XnyT&J&Mm|d50nSvW?2tb zX2rX*5YfrM_J8e=aNb|gmx;ED>juAQp=$nR?#`{3=Pg9NBIUo%w#d18)OM~jWCSfR3$>v93cQW704c#3+ju>)UYso zP09yB%%qRVsAtlnZCrxR;co(EBw%CMXQ_gL4yB+YVr-0^i6%N_hT^IMUjN|Xfy{P%KaK zx8x)G9rbAHzH$MOaTAo>OK08EtF)PVk*I4%{rmFtAt?i$pOL^%^^E}76c!9csKhA; zzwdX!R#9Q}TH%}fE0h1Q0Bo3=1UiyfrwD)!9qO^S`z0#*?d>)ak~w+vXoqr8T*a;m z7PYOaXPABZ z=}3c^lV)eK=MPg;9REb6FsCUx6OM_Ly!RSk$Gt9hb~BQGWFqS_3;z`CKa1WCZc7M z`w}~+!O7B)PkFtLb;4Z0vDu6^RUAU>WZb=1x>F~Q*9 zVQ>H^?elvcz2E%KTA{FuFk|cUMK3@5C4t+$>i9xU(2q`+1CI4C8*jw4XC^lbVigrarEWFe?NjRtH7cTFf$rxHszF>@9*WhU=^4aA0_j(4DJo1;JRrIDiGr z0L4JTEl9Ok?&Aq*)&oIcB|O3YgGF;HssJz{y~%7)0u@;xZDeFZL*t}jhiP2Q;|6oZ z^zw|u{`Z;w&2*UW8tgP%-;qqvx^##{k&I57iGV&4Evzne@X*$h!b-nAg@Ij;zJP1Z zza~14wI@GAcVU10md})%3O-le=|&gaSw(lZ*l1n{q8wu{X@!7Rg?Q-yIvpi%^50wd zN3&6~K5eIl$0u}4w#fX1w7gx@c&+7|X31g#wg6Qo0NRLJ)d?|5yG)a<#x{+e!nt6({>xe{nrF!l@7(6Wj%jv9RD9wSP?)5*Wz-xat#Ll z2{8)6T7O4)r5o%2{1uB9*!JtBR7*tRdAbIVihGdW)#cxDbKC~ibG(+BlFO{x&8*zj zV}lL^=>n3r;!DUiB^EoW6;&D3OS|)ZFH4{4Az}Ig(+?HlhYoS}qg~tY4cpnNjWFpK ztT_h788Ob4mIcDcPXYlvr)J3~)t4JTcYcIGRb{-AE>%oUsRUpe!}+d;6hIvc0)c&1 zgVqdv{9CL2!`0iPxT7yfpJZI@mRnvScykhKk;L}Pk{jZI zOp@o~?9}Q)3+|JEJ-w7@t1eSd*s@dCTVKqr>PN8Ciau-yq;x z{)&G#e|D>B>8Ph=q??(YM=u&`GJB+3r00BMrg-UUBg;Ay*Z4iVPo`!6q$%SJ2atcZ zebvWJP2Z9vGqYbD)G?uMiHBt@p9~cOm2y|0R6rkHA^zXiqHUnOOb$s!3t9o3O2mng zpYjx=WP;ZkY7K60SH7|Fq6&CPciRI@lBBy9+Qw@yd z?{u%n4F8hGN*-A4;QQvVM1x|Hw9iL!vpm<;OG2o_?E@btfg*3tGuLQk@Q1CFpbg(J0)b)&deuCu}>sA2FcIzC3R$Yda|%F^nMx$}ZQj|h@;l|Qm+kuEm$suEIBamxS= zsN?M+XaSZ$e($5jkR{i+IAl0fBJq>)&(YhqSy>bBgz@@(cY6^4)t+ESxbxx@WN~2t^AHb|8L&NPUWP>yi0wK`9@5bUvOUAH3 zZW4I(U#2=DIC(-GK)TT_3R##V%9Mar6DK}dkWVka*aP`{+N6Qollw@U7G&=*Kvh0v ztM&$JQIMhC-WSjFRJZ7}J0Ehg(0x30M4;x=l)YHBzxGX9s{WWQy-$QX#DaB7*I~g@ zpgu8hUtIo*88E6LI)JaqOFzmwp^)m#o!fSrRgOJSj7t8FAS>>b_r zfSf#RaupR~Xhg(MOMi(_K5d$#JLej5*uug)1m)0>5T+WHd{K_wW3HDVr<3~w%L@{? zto_fjSRPOHYJKnf0Y*Vf>|H2^08qbPDT5Xw`dP}9$sC^;JFroLgh!m0JE}qah~u^~XDSzouzmge>e=F2Hz?SNg1k!b_C)NP zcMj$IiQd>=8D|Jmh6Z%}ijFe68cHZCgANxQEeNv_YgY@ipWfFO??6-~2g87A3S9I+ zpNb|SOLQFK`lU%Gh_Hfeqq(xScN$N}ej7y^13W!XBe>`*TC9+CC;n8kVf#91FEG;DSB2%Rn;cXyNg&w}U9=R2hD-dW^ieE}_L@+{mL zCd5Zm-25D+f0c#MFJj%Qy>=7zO}b0R2$`ie!JB?qA{9 zbd(|@7=zPDkScs-{q>QBtYBKJcJb2~*>%EjMkxe53b*Y15`VIajHduA_!rbo@ zmG239!g@x3NGVx3IF!Z>S6CKC(!3%@FSp?Cvbj)E6r!{+E>GkaV2aF<6U+w8i5y|% zp%)hejXxh63+^Y|7wD9Bc!PEcBr_Wr=Copr{gV(gaT~691o^tt@ z_3F9B55Tq?*tH=d#i&FaC4~*Vu?zKkTk=*=`G{WZNQlfSUQ}2EP{g{_;8z2w z6cegh*72TogyK=vwc$j1eu;^B-`}q;3xbJC$M-kKl>KCAWUmopDR;)JY!grJ2%hPW zC@f+Kxok%5#i`~?gcaFq4M|#@TDB>C00rW{>K&Khq)4#0l(gg)k<-snj4UoH4T#F6 z8m+`j%PBwsZ#n&jQRVZP;EJ0I>+A-AlYSjrwt^4KfQ%6x&A9%->FhKRmstn<`E2XD zuu5}5a~*~7@p9j2H5|XL*L(3v<)>6gIe3V{)7XrCcwh6L9Wh%Vfb#Z9$rcy@b?dAF zvk&kZhE@Y!eBu~>K7RL~-w=8%tkU}(?CkVc`qum24%>LTc?>f6FSZ!_2 z%PZ%;Bg#*bVHC2Tw@w!SKLBOv}PA=om z)uJ-tU~`G|7z5stmg8e~M6pf&`WHt^PLw?`b8>Q#P_wef{ODElB4szZ@!|^s#lztJ zYZ&F_nh2eCL@_t$Y1h05NDBO3;5nIl`!$0sus1(5n@l0XVC`n+Fq{cQC0Re{G%W*k&M-A1+4cY=ijrn-y#`IEjDCfL(4CB#jut}|_f=jT+oInpETffbt#jk{E;Sp^!k;4I0mGI}_9-Tzfx@8TgiiO+9V!(QmdI)JKaxBlp%nSew>~ATY z`NsR$k`JISQ%A3YuheCvBtyMtA4eH070wh0%`w@ec3>m$NAoBOL~&h<`|B0Wwi!4r zo6qdCvy$KswQtwEWGqnJKO|FB65rw*4uD$Y(G z9pJfCx;BSbyw3#FhON2D;~0;e=0%Op72(EG##vFyfVnB>_dI9ivp^*CF$n25ML2>G z)(CkUc?-@Yv?Uyt%m3z7dI%U_2)nzBK8%r*|aw;u`Js!DIwQ8y*DYnO2TLNvr$<@4+ytm>jmV8-N(7Bw+%hSs~jxc z?u$R)a_&vtn|{SS(f#>JgnV-=wB85haD0H}ok-eGR#0oP?Z6ZpY#Kdyy@NPaF(V*u zM$vZ6`bcmz+nY}|!E84HG--ccb|Rijlqpw6j2&Qu0KAWb)xUX-AJ_?9( zq=PucL>^ZLb?{eH`dB1|Nsq7rxYC%GB{#JLr8J|_|8eP{j)x?v{)SeU^UiBDRa(|i z_?3fVUVG0*>8JPC(FU1OaLz(mP(o^hiS1-ac@dUHOX7FcjUyb5n zT}ik?35M!%d@dOs2?d@x`oJlmRc&KE&(LsuQ4yZ=)>yHs!tGY?(Yvs1!;F?mEK<6H zm+jvtB`-w~ADW|j*{s==#YFU3z?Xr|kqyKPR>*`;Ly+CTQ!Y1IPV@1UHpL=&M(fVV zoG=3K?DyP0798Q=BNjElwhOH4yFaFA*C#py-}C zdtC0FaXP$105)-4i+lM6o;o^ub=prj9(JUHZlCQ(P~Rv39bNX|wAeq>gzC8%K^+DC z2WzLyy?oLLMV}aTwO~Yidon~V);t4@j=l`n?TQaKR2w7``J7B8j9jjI!vaV8FdI(h{+P3obMRjo) zVlg${wvIu!L{6Sjqp4mND$c`moJNB%38VCBqjSPl)QHyut_(`O{l2?ro69kX;6%&87aY7)s=M6;D zZM|5Gs6(7&mD1{zasI{cnaxzLj?bSM^XDnRhkE^Rb0Fe%mR}IyLri+Ib-?eszB)w4 z8WrnbWI7_R8Yd}V5?ws37RC?d6cgigb z@qoaIMubqnLP;FP`E!%#BQN2E8v4{yqbJqr!b!#Xf#?LxGr`eHtFwdVI>5f;s?{)| z05{=XEQZ-|&}B&O?LWgTU;^%W^dnHE+wLGGNPh&}x+jT%U6<-De6PWbkwI1&d9GTq zVY0INK_7qLM}qsQtZ>)8;gK=Xx`wap^=@aEE3FTBeK#MGQB>vTP&fc5@bO&RrC8Dkay3mmoU@R!BWKNa0s^Pv498m z+c@xyMGAH{qzB_RpkXFWeOX!|Wx$nnmq`|O(zMj+lpT#iQ@*j=n+=R0}<+J z9bS)n9?Bi{`E;KUJ4R%JYdU5Y0M-w| zK!*>XZOk6-W>Vuq?F;$bjUF+~1+j7Swvv0GPPLhyWA@5J?o)e|Jny>y-28s~+R{&l8XUa$a z19~Fuzd^pV(Sf_iQGW3m>PRQj-P?Qz{YieYWfc1TyB-N&1*=%MSP%DV6y$3*Hwmwm zj>GzvkGmb?h9Z-Sq24j82caudH+idly^EWtigY5YY^&cIK@9pphTBg^RdJ{@Gh<3U zZEa&s79QFN(J7y+gQv;E7Bn&;(d>dxfjzFL`MR2#qug=o8rt{+x5Ce_3_frERDVPY z0$mm#uxhi`upN~k?q5}Eoqjvt1`OV0ERXmmAg>&>GG+Ow%-#CZE|{$%{91&=8!npg zyEdnrqoGSYr#K_DL8!H)*rm0(RL$hnCQeYJtyb+1MB^|4`zgET8z5O*#O@)%g92D5 zGp2)QQR}T-*{{k-`FP~h{^C1oMcwggEW}>io%93AR@9c)7$$Wb^{WZgWvxA z+TPqQ?9>)U$n*{NPDplpt7yF;1|4vTgEMse3}cgXRO}SzJ73MLhM$8()*Zep6~6{j z)^Z&5*?gT|x`B{j1~tyPwt`nekEg*z-|Jj09re-jMa)XOK5qM_(xQ?I1B1kUJG(rM z`rkSHQu1wjsNS?GBF0Z#7qn3^7dygIthSDn>U7;vmrg;c@`BQ7%BS0%*--4OdRvSU$lAU^66^hs zdSaRfkAUlAeTQLkmCZ6^Q;mA={OefyH)v zqVRFZ%R#8bu25*6*C~)({m25lhni)8Q}S4_qWKziV>`&TcH@Xu1V-fU7HD!EY>!u1 zI)7dJJ@AZN^%_Xk10~|`>9oEQUz)TIfvxeRX1Ccwn zI0D|Ay=&tOevFC`@Z17|l@s7dg_&X?zxsdS6UwCh-q)iBqU8pME3TPH{Xzh587ya% z&4`nmS~_6V1E)SWH*g|&^h@HZ3m5y1TqP3t#j(EbH@tD0;-piqecmIolYQ-bp}x7~ z8dWOEYN%f45H~!ttQ;CU>-O>b``Y;BWjfR7(tmgc(X;*{+;%S`@bbp?S~_jH`Ke<~Fc4YDQ|Uu;mKHIa8$1u(`ezT4p|~m{%VJ9_duiDG&7=N0CCwdlDYc*9^L6u1`$gh$X+=d_su`*}GH zup33SCZB&FJIUO9_=>p=N?U)BN?$vgxs7Qr7>o^b0%S20XN8XBKayBQ7t!j#VR-iN z)#cw5q%0_$w_u|K@{|t7so<}_ZpCsHu)D;XGgoa(QwD56C|~zhsM>o?Xf;q%J8`CL zKV#I5;)h?+&Z6J27YNZ^?wc;|ZTIPDvCS1BZ_}mXF|Ctk0$Qzb=Z{H6Kn`IldbRui zxA~8Z9OL?xrS7D(6K1#EX1Hk-V<#mv_}WPmuNh^!_jTthdDn!;r$U3&g}vRK5ozjz zC0`s_s*S^=W8Pt{4|tY0AOjKHBAxFrbwy&r0Lwr}!w&X6`N|$*_GoHtW~B7Wm$dh& z-edG|A2F*H+F`43XMNSB0;UFK396RJ&`g&66sg&Y)DG6UO03pQp4_?ndFW*?)%P%* zv-ztN`@rtL1xO`bw{(dtzr~aTt>9hb8S~yUJ;bR8R=k5@%S20m8WSe3)I#P1y zDL$8=_Q}h;NH4Z11ULRo-Nm&mHh=0mr`|L->%pHXHd~W_S$!km2l%2?6)2SF<5O>y zpIl%yJn`3|QiDeeyugNF&8hj;Qg=^GikMuZzkad-5Ca>* za)PW}8K`XZWGLL9h5U^Tc!u_%u5b}#te*VlSZ(yGnQwr_ZU1-6u3$bu??tC1U%w1o z52(Ba3=A`G&LcVI-X}21gG4#`OF>6F07Wuxn^_n<;Q;LC z>qG8MZ_3z3-jz>D%3r$!Z?+*0s=M{uk>R*RLR3_^;`XGULu;IvS%@|MM#Tn$>2|L3 zVkhYTumDb#OEghfUvIaQSJv0pB0&3bpD$s)!g^V$hNrfYU_QR-L?+_mD;v?9(zvda ziX1ju1ySnuROBU9CU@5J01=!LVU!cNrYi7enm#;I>eS07pU_7DKW8zUcv^hwyVZ}> zj})fPXHC2UNYkv9*tnfjX?Md*T8@l3k7_EA`0lU{vZ2X9vT-sB0X>0v8Fkl<^;cqo zY>ct93=k_fH@9GY;7f>(E5x10rBk5e4;ZBeNQsF5jWrI=1NjdzV2JQlLBQgiOLQ2e z47|0*VF!|80Ywln_8{%=@bVA>-72oG!D|J~vxGe?%`gmW@#wqDN#h{8ZbWMKt(1 z-j+yvF)HMIOEyY_Je<;1MDuP`XHb0Nm1zzJL5yQQ^5nRGUa#R^rLeew70$FVT9fakmK z==>Oe2XA;2dCnhy_;ojp*~p9`Nb0v)#ua3)Zg&t6M%IlO1v|=h*SC%WZAPP-1l#mk zdJGn}QT-{(UZ0JVhr4p65jF1Z?GI6(kK9u0hTfY6T-Q%+a+MKkdj(!pM!obI`Z&y+2 z4z%7X_j{S>2fHrhy8EoxOTt}UTC#M%JP%ov?W4ofkxfN6MHwDP+!=>7uo>~Zk6Z+D zhJ^U&G~3X}*iZ*@h{PQrd?LGMEE#$#3<7KgeTgMuPU>PW!0H9K2trU3<^rQv zTX+itDK-0^}qBW1x^Pj_?^2J=n=I)`Kr<7Sen+UpDB}s=v{m$CE1npG{>ewGe_8R)(X6av`g|mdexvmKqa}F=zKEZkZqhs0tOv`cBCczqa)E1{qa+kl2m8R zY63M69c$i{d&@s1jU0yFkZg6ja6W}+^)xO8e=2_k$o#InXlhV8UhecZ0@3Qoa0eH^-4Zp>U{CNX|QFCaM?H zK@jIDd`QDza!JgHJkKa;h+1w3S8gQUQ>C+^{#L%F@*v)P5KEoH=?- zp=l=f{+0P_;VcjQ)2=PUg9lVU!W9B3`<{TX-BtPZ#_vceKs&sP`4~XxGe%6S1Urm>%x9ucA<)u2uC(cF2r~_sLwpT+p-hbM zD*+0{w^nj=xdBmwj4eULY+M4F|7hs>7ftV6jv1 zzSXKdO01mhLWU5GO-7k%ixQ5@ObInUJ^q@|NC!DEK>6;ZNzx=i}8u?GjJ)8p=j1Hn}u@UW6R`w$~t`{e8_1XVy-j+P;Ta{6PSMN9dkF<(n z5q{@IRtt~b1Ja4h*8@tqjh=3IcI%I~B3WEci!<*E0zR1!;kkEpNt|>~O~0}2@w=70 z+S<&puBgaj1bdr8*gaW{Q-H1kNlM*@p}(n5g*P+C@mO$`tD`Mj5lZhT^^9SAwSo9F z@qtA>uvSX>ABZDc%9c)^XkT{}zPhZAPGm$TY8KWTHoJm@km9yd-ANv>x|av1f7t8p zE@0J$KZ?5BSJnMY2}Ps|PYDyF71JaDxuw30qzSGUg8jySPztdGheIv2xoCI`^w{bm z=gJZ~ODL4kZ(VerJ&;}1LQe7+iyu8hL6bSWJ+8krZEPxMr-A&3p@2|Ou7HP-;6pqa zL5Tef0(_bAcsAIpK11>Ezy)D6qO5|vRYg!bY`zyR^6=h}Q}+*tFY8A9=qn_3WL zr50ZfxmHzSZnAD4`G=*DGMEpSKR%qlB*es0QRrj9ze0xFSIA~GGJ_3ria{C$c+M=S zlEXhG(DdeeoUD_T{M*bZ$@8x~EglF%fpYNvLg+0V-<835KT1vs- z`$;iWoS3giS=v-IB*Y|dX=x-uhl5BmsMXf?x;>B>B|t}|&eoRa_w{0{y_@mj&FfDO z08m3iVTe1lYZT&vdb8N*ZVS6;cK1swV@^16ZW&|_2K+3i*~@}8DjuU zNRwIiv5r)PEeWq_-%pfK7B}e+CWwx(D;3!N40UL5tqO7qJI@!FhODtMyrR#{q`0|2 zLKH+7Pt8iNw0LTYq+~d~rs65Ly@vZsHCSmc#6nC9WD8YbZDq|dBZ_*gk4rt>t9TF< z@_lGGv5v=Q!db;Mzzu%=(|Z{CRdXhzJ_g#?2lrn-#xEj>1&$;kPKSd% z3JWs8!z9WA%av=fbC?A5A9&Z)&hksWrt&U~prVAl?(CwcRiJ0CaxKZCP-sBAVl(4s z9sE(UO!L#qxU-I@rF0>A!^=vIJ6<1idU%lHfJ-?*Pv^UpJD zcM4w>4;%~}2LBC=|Ht+6_pML|CL|>MNJj^{$FC0#zUl1T)Y%~c0btA_MTq4*caFCD zsZgoLB`M0cu6nL7R4wPdANrsA4f}vTqnAto07EnW_2NF0=>dh1UKZM|s3+wr4X7xy z!4?B?6Kqu6>6p2xe4e&HqGrNHfbh2p0ov1%sy5rXsp~70G&BkMj~?^>vxS9R9f$cE z%(9{Ovqy~W8m-!Gw_0nUD#QFfNsaF@>E?*#C8DxD8}jh`)b{SRj>@R|hbtnTq$Qeg z+9nmi9LZztQE|w^D)MfF6@rF1En;x|+@UcXd+T{)GGH zuSGs_vi%Manj*wM@FZNCZE8d6jw9Vjko;n{;~3@-pp|!ZFW+9@v4Xt+rnYOAC2tq< z8$?a>gs%5*#1`QhDKAUfdW^5fcj|SN4VQ%qW8GQSJ8lfO>39cLzm6$Ro}Y{pjJJb~ z1lEkno&~v!?g$##4;5VXDp#%ly>%3mdNJ}m-a|Jn?DA{)&BW_@TR#H_HovJ@$Hm31 zzc_)DPm}DK{`vxZ^O@!p(f4##)}PqS*QJTD~zeX>G(^yOeD@0#t{O(*bo#<*J9 zUi_!)K5h_29#PA5$9)t_<&dtum2Xd*e$P4LXqPlL^O;2ABXDrHB%YG~W`m?N5+f+VoSR0EQ_o&OH zFT_A4xw6phAS&R+%*nvh^9E76z}IVHy@T^~;_=qybn@uvfyvs&TyFt$)cO&U&E7^Q z#&*2fZEX4Yb+RBCc2>g2_lJiWy$m~eH#R2;cJT;bqtk&&pXWom!bZxE)TcVQF2n?} z?DBeT;)e&&SlS2!QQ53T2CY;H@(Qwj7IvoTFFT!XA00o8+pJYxjD1QhN~n*F3oZvd z4e1F*f-!i(;mhsXkhqMexw(>3<=gAh77F=LtwG`aGC(Vt35^*BNTi_+*71z-#b~l# z@nkCJy<&#DZctGwKEL+QD}>YpA2QqlaTXSqb4k_{I+RZg_3v|XyiYeoY%kOY<1TPk zyYabGT<1&uJD`1U6yLL9Jon_V1uyd7?H9FO0;}XlwN)<54+rFGu;^c}tF)-}*n^`e z;kdMI>8JZdKA<(yK|eD%i4)Zo;wvh9zXZjS{(n?`WmHsOxHk>b-5t{1-Q6WE-3>B; zbV*8g3kcHP(%mH`-Q7sXd(i*A>%L!Ev*rwE_MY?XUtZm0^MRgDPx$YgrecknLttTW zlA0&qNbrx~NR}45!LBVHe57;|Q0?R1kK?t@(3UZ5F%?kpN)$RT?K#Tr$X`#mTk{iI zi7e#dj2t+J`z7Do8LmISw2eJ=mn^eFw0#t}2K= z%+0Zqh`=H;l|(d@A*$!1zCHYB$TJg`S-kEU4o{X8;6fMrq1nqw;%TsUNdj`sE$mIS z)wFr^Rm55*g{1<7z z%dpjRJL&%Y7c*2xLW}-qd}v>tUZXG~ABokv8Ml0lzd3}L&C1xf%O#Rx+A(-Yg$_7p zV{9e5CR4SldKiCeLap5!>*KK6xx@m_@J;5kt$rObrcc*m=c_(H<0HD)Dfag#jk4n- ziY*yb$=TH}=%ElYs#!^jj-8zs=cBtMXJ-gq=_Zj|5uM7Vgp(t1n%@{>W}&%xt<%0&UBb{(Z93k78snIkxYA^l+chsob=3i2<`pm8F&X|PjGA-J39{0oy@2aPd=p`hGicJ zI6X@QLa&X7e}2Y?c8Ur0dmLNjd>n!&G=fvD{OEkHJUOnCjq;ip;5profZ`u*QUl$n zzek0_b7$FU>gNo8(WD|(C=As;Jg>gm(Ikn7P*_#cBMD7{h}Q^gwA?1z*om$vg^^Q3 z@58G#dzrN#USGeg*ciFotWT@|^vQ@@bhTLu{vi?E&{P`hI2O;I!v{od|enYp}2&!?}!=PgM1MitoD=)e62V>9M`oO=+3 zfL*>)>bEu-i<)@Ap8L9(u-Leay87Gg(COgG^O(kZu11m%gdjDBg8qbdyzS$-O2%V0YT3rJbXNSw7$N) zy!@tru*AshVzLC#v<{1?Ue$XK7_fmx@Ah^fu2lWDV+;bKuS85ip+3F-6N2qIVygWs+*o29$SH@jNMcg83M*)Id0+UGquVbNGNt?Pw24ZE&g475ym z+->Vzw4y`IJ`w}s9a*+>jY{`6O4zfR@fd2v4+8S?O4N!tB-%9Xy;_W~*1f6BfYX`g^1n!vGX3B@LV!sqZz=M=E+cWcrF^JBR9gbG&Ts;2>nV@r2&e(ymqcQfqK= z4E2#Cm0D?I$@?+6qpIF)wBX%S`F;GP>Zan;ncwT_)a*=8h1l|v_@|!-NAklgO+U2h zEsWtY!T-y23G_^>4=nfwj6^qqv>}IWbR}DA2H+p!X;n0^RNO3pR4>U(43W1%E5sl; zkFTQJ*FgI<4T4uo1^!{T-u;1Akq+bxp>CfUCyq#6ix z>#udo5UvCNYY)-~=1D<7P&v9I-?_~GuQxzM2?%CkAHm_VR0>T(_!9}E;W~Bs3N8_k zaLJPLmxv)1etQK)8)T;I*2ABY>+6N7{5$cXi4NSkQe~3wn*Iq~jW06!@At94*TZXo zLnHvyk7*v#v|zfyQ5LKKhO+Wo|9ofdLc7PRcf6takq-?Va^Kci#>X9>R)23U`zi0` zu(&DJh+n)Oe~37$R1@A0hK6&P0@2Z{jgKUkRszHtj;k$L@eEr5?rWv<4UVhv=^^XJ z%x|koWY$QE05ral8Q?A^pN`);?+g!=$yiwP*H&QYCN*$+ed3&K zN+io$FVuOAy_7>Ae>YLTq-o8XON<_pc;)ix#z~|mrj1^yzr#0w-_tqJ=JSWE2j2^F z#D~sRAETOB1Zv1eiTDy`sThb(DlRVUMGmR2MC=8P5N+?@%?1-G)Z2T#bRDCb)x)1+ znVOpHD&&MOYZZ_U`2`I0{_N_SV&&t*Z{u^_q>Pa57BGJp@*Fo^u<)&qJX$EWO;J3W z19o9}1Xht`jRGVll~6Ns)&k(Lvj_ETb)x?`G^jwEwuTC8^F)_BH@{E^E0U!L_biXn^Wuy4@Z|n5L5{ijrksciU)(|RVe@f?| zpkbnkg^>-PZGB&`K*$hjnTb$g-*HRAp}JC`!qms6NfRJiUwfqY$)@?=eF^{Nx2BlG z`ZO{H<-qGWg<|9*`1u@c(c_5Qrs?hxy11Bjru|;3n5O{j>1?eQ*7^^<*N2V0J{+ye z5BdEC2Qv*%F9Rn8+@f~H`rqMcd%6VHI{dgj`#%+AQ9iNj3Inm?L{N$|pLUHhz|>5K zkXa^3c1O1khok6YmipZEc`Pe7Lvf$`NOL~fFQk!|zOew2PD*&zeX$B=*f4TPL*DKT zd=SWg!oIhem0T(JwSBI=3hf!xkCN#JH;=&5z)(ePlD|M=mu;dduw5+t6BiWv1Ox-K z<_-mYp%ts2#p%I0^!+-JoUNA?X?R?7xdD}NGx4SW6jYQr)I z9kA%9w;7L)qr#6P`sAA+Qfs4g_@LES3Fa%Fn~f>T$pHlleEpjOg|VC0d>ccYO*B;0 zvy&GbS3XQBB0Q`S#K5=}!2jnM1V@gy+79iOa7!ly1ft5tJIQ1A9~x@!OE0`HZ|NjH zzpIX*3J4<8w(-4>r;?ZJ7Et{%r>rK}VU%${%cN*Vxt?=#a-1Lf^Vwl#bNFthMbLDU z5|)~}jDP~;`V^%(+gj<(*@F94UucasUi`%-Rn6R)$TJuxyboKJhuXOQ$5gV$R5!wG zB0kcJl*9)Sj@lhb-;Wh_0vhUW!5pyBafhK$qw0AJp{F}IcI+L$lVZt7%&e?Etf# zcFfa}j5w;^@9EpcbyaF0ON+a$u7+*FAOr|bt@s-2tvH)rEDbqfVRW^WabWF*9BF3A zbEid|O{$&OGsmAT+_wvne?ah1J48T^FS>clg9E9xu_B!G^URjUmQwWj5m`a9y4u>P zz2wD`wHQAN^Ai#PtHcj$jHdc`32R$JfyU{onqj}zL}epuma z05x#h%%|V|(a?>&Ut%K7*;yWTja4QL+74$z8{9kVDDR<0#hLHb=+YaYT|Vwb;*yt_ z_x=IgrPI17~J)Xd#-``Q-IMxt2MHVAHN$N;P9y7DM(bVl{)Q z@t#e{qa_V9V5tk#mSf7M+43QAJDE_0U#n?0Q1|yjeG52(X+N-Tj=(~qc#dvy zw)~dn@5Uz^E$acGp-rS(Q)D(xrz^mf>%?HGI**YUq1L&E!P*A%>D-(w!tD1$<`gL) z;eKLY&09|Ns6fH5j*UIxqOx4Q$&33WV=>x1D;^!A@?L+j!BZYc zlWNFh7ykP!7iopZY&R-gxnOtvACUzV=HTl}l%$9R7u0{F!=NE_;@VqK#8aDCncIJV zRQX#YxSpArFO5R{u+q-BHQ&|s&AQe?Kfn)k(%){Jb{St(B~3Ds8K*AvdT(&mKEnK= zp~hz|jfhy^7qqD?i7%3d0}@cu7sd^*iv8sByG6$rh3S4 z6El@Oai7SxJyRD)%)KXcwV7IWlKytj3@;?siGQ;eGZqa^*YRkBZFu!iNtE~G&+);< znE04V7~*Ha#|`S5OkCn~x;s&i6{U}1uGHL*!9vmNgmXvRnjNn7i3KqrNQ&oV$V1Jt ztw7J!E3XZitju&QBGJdPrEhfF?EWF`@ZsRISDIDiEt8}H`H?c^tu{bJBrWjM)w~py>KUT)|_Gxg4q)wcJddWRV1fy!6-+Qx+0 z>)LGhAr@9NLYm@GgH4AguPmwgrLaeCojFg574q-!I#>)5;>c}!{)}V%LXwYZ=+EXb z$GM~t4j)-t#d^ZiLfeS^?o#LECR=qQXTe!{ytJ7=TNQZn^)j|NVCbT0VcGDdOwywr zk_6o6`0!>_Z0TO|hWUH{POOL8R##Tm3Xqy%oU;C;zDym798=sgHJ7R33>1 z)E(;oIEq2HZBB8iexyV@f9-F&wsFA1O1U7XYcma+rl)S{##$wAC4QyRMw84A{=SLp zSHeNYL~&rKALZE9)?!R#FZS^}km>)+7nujTIK}%Qs!_Q|9k#ySxrz(bLq^UgC3E;R zXXt47FC&mnucBgMk*{@476c~gdd2-Zgt&j%zQmM`Y)+qomNGRnzjS+rMoA%sY(nkM zpXhm^!748TzvUyGv%Q4YxondNz3uu4;W!%lg=s(HvdJx!ZO?t}+)8EjcX8dfYEe0p zlIE}0)_UyM5l6%%m*Kh=AKs${sJ12(N=l*MZQRNk-0js5$THnX8Dwa`|86EekGi1y ziv=NE;iz$)_MzGRn-`-y#`41@ieg`)l@Y-aT?JLlW51(7!J*mywlZ-+=(oyg{)wBE z3+Ch$$Fv5n?ZwDC`VP+zbfrxwT1#yjc=SPD0Yf>jccUvq9us2jqHf1(L&Ld4AO9_Q zEzC)QRJXcn8?%eJ&drST{ztdEexL2rG%9MV>~YAW;4rCu$U=t*7E}AYD~&0N>XoVj zlS8mU%U!)bExYp|9Br*S7lyC7oE{%7d#PVUq72|+g0XLtY%*(bSkC*I74Mw5`J1Hj|E`*!NwCIk}O0m`wNp32@6WrA|!o& zUHu*bNscG>J3!Mi_N96+k*h+J$Zgdb`4i>s@<^>laQR@nuoExn6HaRjagKz#C{lq~ z${#X!HSY-pecg3Km-!#t9P(13Rr7dFGw&TD|CP-7e|WpK<%sWkaz5~hy2hsm=Unjx zdZIIEx2rEOhOFHU@|S7TAx1*CVL-1+Sf1J9EUop@C^dT|0&7mvN=1SJbxO>%oJf8P z3{FL5MueYUeHF&hJPDQwYwsaR!xs0&aQnc`b%;p;Qb{T) zdT!3w61rn>l0x&ew1^*H1Y_^CYEz>804K0{p`%IJQ6lG2yx)c|G5oJvmaa-T1w!Z< zwoI35?p|yxPijB|_xBL14YW3<^(&TqywFtPNIv_S{(+;KCY%;6%-rJzahBCmPI<_w z#BAR3v)A!fhtJ{E5o%uxVLOwTl6?kh(!NR;Ha~yWgR}*fBRd7_3WPt}b^K@2d<> z@}e;GX-QFAL9V_0yHiBe0wCHl&_s{AJGjv*s&pU;kZVs3Xg|W)Q8(W8N>iE0LGd?+ zqGmjvWqL-n5rlaT_;vv80yHG|0>97dx})jfz2-1C&L0o}6gpieSq!xse6>3)f|~2` zXSkwEnNeicbE7gHSH3AEoVC^y^Qp_m1=#5J`qODMSj}26z0`URT-`FE>anOD?*>6m zw|pk6slgyw4v&{Sq%;BK8NIW|h-UL8=|x9mr*em*-awwI4?;D)CIiQ7$7y(HKZcf9 zzClqwbnAVe!&Imv*OxDCN|pXABzt+!LOyc@D0TOOitVog&>1X!ZfXC_p4<9w3Je7N zOm&x0&&&q78Wcbw^u~*&Lfn7%FByq~h8<5cl&c2)PsS_&(+Z@9goOOrzZ}|9zYO99 zUDLd5k5mByo&TnoNuYfr1+RVq7l@So_f84{%PP4dj$lJy!P#^Ed!5QPrb_$hAOOOg zmDHmBEm#a72a;LR@PII%M%kCl%*<^nQXo|2XL$Jel*RqwHUrnP^2#;uz3t@pmR$Jt zOrBX^35;}l5jIsY&kJj4vtx>sKT-xmbvSJGE@!`%Nw9DBXY{5!va>%%&XxBSS%I8~ zyz8FoEM`xG9xt?NLH5qv*o?1+uU$dCAd`cI=BrJt5i84`6SmL8TBDD(A)9==Z43a` z<6i(#;=8g(oH^4ySJvm>BJ&*%69Ii`P2gqypgdN<-&L-GzF0MY6M)Bs9fk`4TQ=Nh zAauru)Zp_c$K|qv#u*DZftlkclPe3K{L-S^8OKs8uX>Nwr$)y}eh0+^Hw{TkSx-(b zrOX?*8SJrvuef+bNm*g_XSo4D5LI=3V`NOEu=~Sx`^xLjo~>s-KA;K?z-p3!x-1iu zyt7%`C2mJq#aWhbKlC!Z74pq4C}%5%S0l{t zE+P>1v`6q?cJ^Vu5)j}KgoJ)^(5}TcR9L1GDUbgyH-si#ke2O9EuR?}8xxjs0%>(x8;B8~Eoj2t|7Q$eAbL_Yi69x9~` z_K1i`B+G4$*3Vy>w4r%L3k|BXX$&ikgNS_|cz9D36=j=!cMiup8oyK0TU9%?+D{0l z`T$N^3FzC1YF1X)!ilJun4)@mVzg=_&#M~%(wi+c^`FRrerd7e)!#@gAW1tKyvNx` ze7!wgUhJ@BhUc(d%+q@H1-jBwrbKHD(k}9rvRXikbq>!9LkV}L`VCgBo{w~Fm($Hx z^+&T5U5Ep{(J@DTwR`CeR$Y~SKvkkHfPo6Kmvaxfrv~VUovrF6v%;?7H5Rk2Sp;G; zuH{i?Ccq3y5Z@9f=y`E`61QMb8TdyuV!1HV**AV@r5nsbIec%GSs;8U%1?WOu5~EJ zzXUpVT7Ddi8d7J;%=UTgmNk>;{Xv%V%HmEO?d;!Sn9P_`od9b6bGp;^x;`qaeh&S$ z(!#`UzS#7SZauc2u-`+ltaKX+0lshdY+X%5bzNOAPR?E4r_XQF_=gxWHXB!&vBwqmU&E03c?3AKd^oNR2zQ{0b2KMF{G z|JmU$I$+)hQ}i1GHMeYDY_>3DvU5}3nR0Pn$jIyI#v6h?scT#JdY^`ObTkP7Ngj1S z{J*f*mMGH4D_kX;GsJ$u`DJna?kXELr3TD|t|ONDZaQ0U>~ZdZtpQpMlA?C=t0@ZF zv>BlcP-zjXAnmSa*6#O4L6&d2n}o(G3J_?43G-cgCVIE7+D`QS3?q465?QKQOeLt# z&0;&rBLHr@azM7iQe;Aff?}zq<$Z=Q9C>p20zG?y zJ%vVrzRbeT!C|*thUZWq`O`bRqcnw?KZ!B2JJr|iAAgw*1GRo)*zsEJIgjk^)h{7E zQb#|B;r2$Hy6x_N>w)}&ynA~BFgJiM^vlj4`o0*(G|+uL)BsS_Kq`tqUoGp}_sYiR zOIgXhr&7jVZXio!_M6HVYAXb7p6dL7y)gpI8Y#&Q)c?~D=(y7dA0--4&N2bgfwz9w z3v=5QXqtfv-=;N|)Wud^(;l*UNEbwy!j>*X;;OB!`xTba;PnFM30?DLyDoHfcRLQ5 zLVF$hCYQ>s2&9NiWm{MTDE50$e$N(~I+`s~6c)O%X@TyfQW{8>`&S^S9nnwJhKlNa zdYXDIF+CRJb$jy^=kGZfB4iW<3P)B{^ihB@ty;P{a*0eIsP?10ckstxqgBUNHbn1=&;ExhCUH13) zr>4CNOwMZa$$Iz$P;t~w^wuf2%!{n)s))%WqZ-E^`W)^b?V>h?@I3qaXe;U!T1^DM z9UgnS=D-N(G+uQ$-PTM?w{KaSOkHAgo9AOxchR|v)hs}T;TGPogtX;ZMZd(xX7kmZ zypn9OYAcs;YPohT5UOBxd>;3d)DOhj_C)|eJ5X(Ti{?*7g@t(dvYo=L6unxMd%_QH zm<>b5Wb{JxDoJk6WJP%&rN2?mVL=khFUQAOYfZYoQN&^YQN%?~XVRBkWLom=2ADk+ zcna7_r$dRi;;qr~e5PZIy&M?_y8Wu)89N_Mh_;uo!YE#`Njj|8M*CkLXN8~1U+P5< z+r3i4O+3(ppxHfH7Z)>W0Dc&8#64?(12ztXSp@By~&h79Y+lxLyhhCa=*lBQ2;rRKuLUsqM`lDYP z)Av^kLlCmxaIMAE{O&=}o3V|l`6-{6t29D-esetsjsHQ@bJ`y;Fd(Ko#Sqg=O1n zIsO zPGpZ)Frl2TJbKMosPRy2F*Z1xGV>Io!QrkxqMQ??^Sd_W8rVViBKy8d!`somO1^!G zrZx$Mer*mTISXEF2P3SRJ^u&I_K+o>>dSsCuC=Vtu7%gTx_xbh4M@X$IWv6Xm;!u$ z%SYXfuZo6-CMk|ulb+tqmAWr8VXTIrlPST@wb#Ax@;H^+(cuiq<4{!1jddVZFvETA zn_jhSZ_0!-;c>Z-(&^*W(S*gDJIz-2Y){CYFg~NJ+itN39ow-h%k=Tm@11U1p|38^ zf>jO0oS=LOE0=zT|LR_m8{J}cQpmRiaBx=U|8Vd{x`SlAG>G4C1yoOB;CsISglGXJ z8@GpfhXNL5$1EzWheh5x|^K*mZp;Q>d4qi z)87W?0W8x0FQO@}4Gi$m|4R7d|8a_nCRF&qS($z1B=s+P}g z?5! zxvWh^crsPSj}MFFHRJGd_@peE^O3W}be^A>MoR2+{JeHyp6)YjW`e-uPqP;>Ut~(W zS3rC622SMC0;kQm^nVyMJ+ayD?OD$Efpb)j@_{Ofd6TbmNobj7!?Eg@vC7|PU5ml~ z#(lOCaQw($5VHFvV+O(REThXGQtz4B{$@Zx z&dE7Q@%ZiHJa7r}>-b(0l%rYikmb~gV%hVfa~31d)-^W5QXwp|)>VWHWU3#H?JSci zHfDMidK$4Pq_Y85PgHu~c=P_|N7@d6E6dpQRYodkF~a^T)gFL0B%e47p{QhK;|{C_ z)G`EWWzG}ncj7IvhSKy#1MxfNeB$&dUv%c*mB+4ZP0fmIseJ(}w@z|INsbtH)B!2D_*266ln*r)4()sxaA`;?9zQ4XE?2V=Nl3EuyJNVu-q z2GhR(KNPj+)8oV#+j9y7GX+t(z$JUY#s8ta`yqKX%cZ``&J@|-KgTR_I|O>DHOpa{ z6x~b1cbyeZfPHF}UK2uSe|A{SBk4r+x?TsLM+K7nl&$7Nf{Y=8SKKE>L?rxD*<(s0 z2@)P}k41mK3}Jca3-?&JvHL^F`Lhut0b;o`Pk4?If5||5D>s7I+Y+L zzFxgGw~+%qPr2)F=}B)|L#wV8c5x;n?N}j_*DnImBA>dzapy!DwRw}JSQ36I>Ful) z(%1aXH`pE=*o{jK^RSifQzQ6GkjrMtCo_cqsurCH8e9bAg70;h@n7U3cdB)9vGL`8 z@6hDOXHiO}xKtQ@g@>Pf2r@Z1h#+DbJXYGx6m(lSo{M;<^Yr=)vI<%1?2n*{(kd?UZ=} zYOZO&X;7Uc?sXP;z=$+>6{u_YM?w_FKF6QDhB~w27OK_j07N6O0YupSQCaFDrSSxP z45|k7OX+Cjmg}O{>v_IVD-EUKhznWo1gr&f$C`fv_;C+=&3=8S5U|)L+D}g= zC(2nm+ut+XMR*hos1OsGnZI}sCrZ;>IRLaf)mRjiXsNa+r*+ERaq&#s!z~ihyDlg+ zFX)MEfxe`~U|Ha$lB}5tA6|e0Ap@@)kEi{Or6@$Znss-SwKEgk-3>@s%drfMyXynS zHG(;=IpXYW*xTn&U5?kf3pU*MigU}PJ-K3!Gk+^R^7?ZqyyWggMP(e%wxg$v9^v*HgNI?iU# zw%WaAad!=bJ2-`31DzuG+5y2(6=%+M!fp=N$NviN0wBKoUzXkXA&pyW45QN6=u`SY zwyDxT;AY@f;57z$KpoP8DV&W9^NSN_|#aYaMXw|(owYAi%|Li8< z^S!8Y4QTKg!C|(Z;vLf@n-1lIdb@!b(1{bH5#gxIEVgwe`i-WV0!&|vhP$6ACeAJu zBeVnI zG$uUeWcmH^=6@3ba5i-NM_wz<&YDsE2Mm)MVyY02!UNr`g_uacb^Z@4Juwp4qWF2X zWG+ul7K37$Opn`>d#o1bCJ&f@jMkxxA`lrq0dlyNtJd0#TYd0@23?lvKz6k`3;<7l zb57vz{4ex6ND+m3rn=$G9V6`VnO>q6K|Bc5%}z*O9NNj~;{EGPA1MPXXBAmiR$-=0 z70G6bG#L;8C=P0Uduu%QbcDVsi^`7N8{6XndwMB_rWmUY*qe8I6RSmWObBU6R+0fp z*7n=Hp{}5eNp$N#ifrlcRNt49YHzHxKW-UG9hqs1Y#X{FhxK4pvHb{?u0nYRMSp1A zU$l;uO>f($^+zMCOxkX8L6M?c%%tmoYGLwRV+x8Zx%4zLw}Rj1NS%5ru^Q+mC0{IE zPtA&q&W*@!|A@zJOSm4e6Mh663i}h@7xiOf0?y{-(3sG-7z!sj^b%Ug6GDzkc9*C8 z&8^Y^X}{Myr|Dmci->XXoLSC@m(}1!o2L;@%>c`Oz?)5v{1fvR~RodzJr^+YvN09^VuO^HW#?oxW~S>)2+b zVz!SBmZ{X*g_m*4Hl{}eH}J?GqVxQvrZdId)z0GH9W>p>;UyH24p6LT(uk2JLoFim zP`~)n*H$nfx;*v zl!B7xW@uW5MdeHg%ummUvvA2!@Dbm`8l@R}U}G zwG-Rb+g>8^v{Km9&KI_G&ggeP7z8;f&Xu%f*-Zx`KvGmlBOhvD82~^aU4z<5sh114 z54kT{ue}`rr~~Z7OTauNZkuToEQU{H%vV0@{|saPKq&?Qk7?h&ksWh2 zG{i9*n#^4S=yrEnEqKiHJrMw1ZWb^Pgpts{kCol#!o2=qH$Z5+cDmy46sYwM&axC_ z-%PjpVl+Jc?aI=xV(pHD6pV5duv$Q>v(nr41>;r%{0gZDD$z0>&3)`(l>9PNru>b% zl(Lg2Y3tn=JfnhOQ8}Z6?Uv5hKG(fwqq!f}Gqx!{y(O1@+qt>HaPYnyyukOGxtW`* zO#C>Lo4a|`=NLyQfB4?dK;_~e;3-AZ_UTk0%^1URb0Vlo@}wd12>tFFuN-S(gpc1; za2>$6D-d_1^`x3@zTs5<%sz>Z`LuIXDxobPon_(?a-Z$@#4_!Sfsx0#3kKS&d{Wp@h} zrTKCbR2^T8&7je4Jye^*tWU^i!n3PfNlt#mZFe`L))%F?tI3g@izr3s8opQ@Sp22{ zZFN#os8VulJG{zSi@i69eNU2sn1G@7ZC*M!PvAwBwl0Au-u-gp0cr(7Sy8D{Wd!<) zeE~vygqTiWvRW0>IlUgXWj}ugyrd}G&qn?~qu&je%uPIf31q`9exkClL@0a{ ze%d3!fJ0J_Qga7hy!y$R&=s0!D{cSC7`(DQvb*PFz&4-U%-ApBW`&Q(3jmP^(}sZJ zeN8-3VJ(v7cA*Mbz^s)Wp|%<_t*z(xaW0x52S^y!Gl6t0?VbWZW7_#ILE4x3L?u(l zmrhD$K~zNrVB_I^3KjO9ynq*=ADLvx5F;U2AunQKT$EvGI0men_7nxz6o`A$*1{|U z(al1rC@Snic_FX{^yKz#p*JG5Qw4;`-6RxJe-2rVpVj>?C=n33Hvx1~jLfYP*K%~Z z;oRnkh(aR-U4EW^AZ=%&DaM2!p8pyYSmI`I3FtA2SpH}cNzvVr$W4>6V{1ZR@}?Tw zn(VQTRYODGey@rM%ldku8s0?ly{M=uEwqhHu&6;XOzzVUqevo>1!I)DQ~(ioS&W4s z;oi%nTl|x@3JA9jPt;>R3VAWQN|G4(L>nd7_upk2mT7nKnv*8G5&RmkFUalOTfhp; zU&wN%bdPfz>&S+lQ= za6H_smF+n(I0W5sVJ;v;Zvcfvw)bd^;6CU5yiY|GK7W6^LRvGs<&`w$;%hfDv^k5~ zJqjbgo)OldHOmN)Iz1BJWci`G0pSA4Z@-qVXLV6BrR&e<} zR6LLgo%fTn4&x@Ou5rO;t8aWs2ll?Z0@!BOe8IP<&N(Ls-;Qa|D2@&P-T#f!FE zlJzH<2KpIgS#6pN(CM#(lG&fhl@C}168}iywgKsyiPV1Mvv9q>2)KYJi1=sbV-*z` ziliq*7Sk@EhGg!^JHR!5Zxpo$Q2%AzlH+IK``oMN?4RGAAhcbzyNO2Xigp?yS3lf- z?JP9XqFfUmV`8@{zn1P7KGE>4mw&ig>AqKfg1pnV*A=cenO|?gJOtHGd+rvb0>0eQ zveZuAYN8GRzlc5sdC;w&-ushZZ2;lYCo%O$E~ko;DEEI? z7M8hjUn&IKo1oCx*jTXTQ<5_okK6IS>QnK@c9A3wmbuEse#qNHz(3OJw;>yFsHemi zAHbN77K>%AWL!6 zzrqEDfV^-1U+_dC`qvj}{)>UgwW7)OPK)c}jqFdd$p0rxkkkg>>0%(+$YfJd#A1G@ zW=7^nNgIVoG5_=`MiD==P*-*_p82~lYe>i*-<H(&s*7Ih<%*1Y9;iU-NBz9oqvMy+EyWj4;2%WwiO7aq#gQ zKZ6nHx7Xb!pT#|T$OCcXn4+Nd!ZzE*lv>}Ed!b*#o9l;QOm)RfezL{)Mc7&S9Y*hJ5jBJ_^&R>Uv?KQXeH*&JP~r z6Vj(hDv2iqpyM;qF7*K=I*V?xkz}d6K0mc*`t1tvIP7L<$9yi2xn5%)VN$`Jx=CApqoXQ6sTsyhGF8%Y@3&(4f z{Ec*t0Ui<0D`GY+1t-5IA{Gs5D_)$?aNkVVVh{K-+bO<`7-w9=lx0Uw`#0Y#WX+?x zTM3a%K^K%b#CjPvlWhY^Vz?jbyAg6?07}qxc+Am4D`x%4Lw~G+c<^X~S;sp!%P6B+ zv#gWE>mJ@g83N*0{miE?SumxE!8V283xV`QmvfvR|BUK}YGRJ#t3Rdlu`*IYX4C0~ zUF_C7pjPIAR<0Q)y_PK+olvk?!|VoC)td{W6}d={y7U59$h0MgA^NLLciMMofequz=e8|(V^$oZ%&wr0-#w1 zfcbmg5m$HXJd{{-pJDsp z%QsSlp@Mp5@QKlvbF*0yu&sHGi$;WE@+FdR5LHX++N4rAlX)78au%n%l8g#!VZ#%f zHdJ&JP{Ydg+~H*E2GGP&+)^{Ki>?)K%8pEKhI7F8B&h}-a z#ZILEDK`Z?|A{C*gaJXoAw9P735m2=_JGAjPu?j?&+slqM5sC>7?94oLcn}^&}OgO zRs4mXhoPE{YGyRRg<6rY4K}G%R=>;g+nGf+z%|_fv6K?)-7-2)wfcZE*zciRpnJOH z>k*Pr){#s%uByDi_+RH2h3uc z>SgA}-!HbSw=mkX#fbO(VIhVJn&lJ~**Vy@$6d}9Og4ICsEkvmD)U*~d%N*zm5KGY z8mWj=%>2xLfB!=Wx^N3nt;y*Pzq{%b<*$wyd`4r+QfQ4YLS5GkwUqm8B=sh}07Ul+ zE-cEt03?@DMrbg7`{f_-Q=k+h+>eb8B#^>eQ==gEF#ZnRpnrS_51`Z23VX z%di#o4MK z<^iLSLUxrpq?7#9$6a?$uJ?R^nUFx5mm+}m^O^7<^B2=}BKJYvMqBrZiL>lABEogX z;vW@6^+0*SUcIfxD;iiHF6aRWH#K1=E1oUaVrFNr&C+}A|Jnn%zKppk4p2zb#`NlY zU!)Z9=sh(~=Sr#l{6zx-fE8|SZEaGbEz%z;B1He8M5Ak^ZNmQrm~_cOEM=nPefaOu z_wwOcH&-dOZ2_T7S8tuvi7rwG$1Z;gAx^n)9q1nUexUA%d{J2=@kzi)N!F;O{&24A z8ecs1uhppct*d3c{AYdw#j437>cGQ8gj-g10=3E4i`%ui4UEW0vFl!1yZ$aDE}AHm zjdkOkwPrWHS|i#udQdWLCvENq8-V6bo+L)WD0etj!XB*oDHqVw5WfD|bma<%LAs}2O2oRJ5b16Fl!G86N&g9N(< z{}zx8^}EKzR~fk6^!J4pZLrsm#^d@DI2unU^GQHLP`l67hxM5v4w?5CG3(sc5A#P2 zPvL@W3GIZC6iAnzn}cz5AG0HqnZ*fL0J)rnWN%O5AA-X1>}HcOy0@~IGvcSJ_0LSa zOuBwnC)1yd&fh4$kE2*Xa*eRzdS>5K$qzQ~@=iKyRGD;xr08n4<|43Grsg8XEB%Ex zXYmJx^~{iGmy#vFw_#0dUYNep0D8e~sv>(-PxY_Oh~{ep%~wf!_S!s3I06KK=~T(Y zGU_VhG4$aA{Z-MbNMO=Tw&F#G_1oe8$Ir%&{Kw8Vd%sKd`cG>Mm^g+lf!wmiIvw`Q zz3pwvwZfnvNG)90_wRGIx05O}dTRYW$tQds(G+=vA7DOLMd{D!t+E?s(7Xqm9Ml4I zaiyPQgr;ArZ_6Z)=1hcv$a~6KI83li3{v#=i$@Y1_mf5Ok2Ia^07w4b@Jp6CFkl0o zNZ^`g9?ejD!LA5;wb+n{^^Q z2^l^z*wQdd!92}KOB(v>f^8dy(GHVM)p6BmG8qJOWs-EXE(VmwNkC-S(#_M=NgZBJ z3?X=#f}O%><^lWG))v)9W-rQg+iR7bwI_EY^$WN#qe1$eRGiHJ&Km@!Wf-aK+3sX(aZYfa4R@Zmw%BkoURR^y_jL0CvH|;!*ZdyqI7mOuLf*Xsp() zC=B9+qHc&@EMTbkXFG4&$lhquS#~b>T<6jqYLbYOZ*|_g{Of2W&|jPGxH$j1J_Y_8 zs{f3N(C2|uLRM@kkU12G(4%kFSPnw|U$U7;J(Y2wNIyx^Cat99bmIdM@0HYjXM0Ts zyGu%gz!fIxrwx>K#`VCD5G=lLnL zxWnd3h8SJQY(j)}(nmpCU`{lUiULwDB7NQ}g)Ad6vA2;9%6>qzHV5IC2s!5>8MHH^9NKA- zD|i@O8WU+KJ$Rrn^pm_n3NYToh#-4cgWVVLG*`z^f`K@&{aLQAklq7at*EGKk{-qR zc}cIE8yWeby$JZrlyma6Qxp}bxuXl=!R8>1#B&K$B@DuStia&+I`KY(D0nu((uEA|PjO#u?&FMqad)i{+7(9%!f+D!Dl5Z=Zy%^^rX& zwpp)otrz9Gq@t5>%)cPYFt=LR$YGKwPaI+mq53`pgNU?g&-k4r2DV9(Z}Lcp)pB=J z7FjAI@v;eUkP|Q&r-E|T-@kzt>3*(IdV6R5n2oYBrieFVvU)`sUildR%3h%<%){WZ z2biCN6n_Ko6v#TeYce93vo=G#_}fn>5E-oZ+&n!Ai1_F3$Mbiz+Pf*{<{2R1e`6a+AP z6%)8qDG(LWgvU1crK%!8&CHCpVgx8mz*Y(HDgwakiQEL29RB&YqY6QuJ2SfY=u-N> zqe=lF+4|S#v^<~v_^)L2krpVXF;n}nnLX0D?&T27h0D`O6Q;JtXi=iJtHRN*Cn&l2 zeIDBgC>)Xr6e{_XQ^8U?>*XA-I(6#O)P5gN8{~3!TTKXmR0OieGF^oM&cLyk`H`tC z`?ebo6${l?f9k2eIuizYr(7u~MN#)7NUR75ydYYpuIqG#i5%*P_p7Nv?%a_4i}5Mf z&hF82Jp`7Dh{(WlN;#Q7s~O;f&ec;5hkYj^4>ooE>+1iNkui^r&cRc+2?A6Vuz%7i zwjuQ{!uzyYVHaKoY18IKsuwyCFa#B5&PiXAtGtrX2HY42@Ml9`xSs4aEN0}2{B1b% z>8OZyje%HT$$M8+12ILsjMo3d>g3AAB;3d6q-oFVyJr2{J?o|-B`G~Dj&RKEz9~em zI|COk_ST(_FX{0vM@d#HBYh&1y+rHw=qn*1wVzIq3z|eoEs)_*a=h<-{cjH~9p>xX*g6 zPs2}emYO>sX<*j7Jm<>2TonZJ_+egLmz*2~!I2};j+yhjgA0vaTv#H~4B%&8wy$pS zc`&hvCut|%*J_<-F#3BaUoW4*U&@JF=nkekx!v#1mtgWHwVDLb(Pq{hWZKUfE@y9g z8Ms|f>nzuvfHV2!@F37Xgprd&TLZo0VwUO+TCOnH8lo4e@D3TEbuzx>g1ewp5+bMM z!?foRVP(NiMT0&JOgmrrAoFt``i>Y|8^wj$i)>>cW6CtfzpV_Y0l!pnfZpUN_JrMnVByiT?Rr^WB~XrWr~ z_F%=lw|SkDi&ORLVuM|-zef&ZDgzrChlp9`)AbjiX@?46L~=0C zp=T#2gMJ+x=v(}r#4Di%J&_(a^|;2)^Z84&8&&Mdtwbrpjth|PH5g@3E&IQYtUY-U zLGT$larYIbUEADM*gL)QfB|>Rr2&9L7c$gP#9|U06D_mY)q_2d0O+AX&c!1Yd7-@h z#}~`jKj^oIsa5Qo_oBVpLzbTu=j1`(5vRU-N_b{mq%# z^73vHI~`^VbD>=FdQXR)1i=F6ym?6j;AIq>Z z4Duq7p<_NQTWZfkffOaq(-(O>$DQAlq3CXLoE3(#P zd{C1N);1bM{_Yx_3z6s+9GshF(h12&yJZSi8?0$;^fYQ7|9s&90lPP9kh>)hUcXcL z=LC7$$I1AnFJ`w}zM(YuF%cGpK%t~oXwg{;d!a0jOLOULS0BWJe9x02egqY_YC|g# zgMuMlSMp(#5pTU)*-u)gufK%sO)0lYAm1X8VBTUzdKTQ+*mz>1reo+FiGb4eXd#cw zEjxeT=((O;9#P8x!jRw}Da*Ywm)G-&j#-(uT`BSboPn;C#rwC8jJ_J3J`z4gytXXR z$E!RT`C%_3NuDwOanFu z($U{eCm|+}gKlL+I66c(zFb}Y2&>VmY~@xHp*@+{ksiwfH-)}z@hn$s@hx~reYq%D zI%X@4?}S}s3Rr_~dHfj0WHpnYHlS%E<6>h&6Ztd{6uz$AXdN9(64dqMgaxvs&5b2I zG8A(es@+2;GBWb=^3s;8p}DEHO1T?PLuZIo+9{bNlP?Hqlh*J4gVWvPNa7y_r=boI zdQiHjegiN4Jk)!AR;y6?9@Nf#N0iI^c!{2~h)^qWm-h)nb%9^jKSW!{g{E1pQVp&h ztF=o~&pqRE_ETsp_lMj#xu`rxxv44GJxP?PC75Us&YX;0#3{*SN{H96JVk0B?OI7>dxj<=q?}b+iGxE-+vIJo&NI; zl0%(_=> zhg4Oa|0-WpCf3Zc|8l|)M^{$mzwFBCxFdl^KP@_*_OU7!?#W{(+9lF$&2sx&?9^oE z)_pWaV*NU8dORq=k+K{-3H_H`&+JcMqz0IJwg1bvZzsayjR&hqy*(D}w`Ya&Sn6LD z7tLu74dCO-rY116na`_Z(Y1>Ni7nk|*(P;HDSB?w{?@($M1w0pl|R!ktfW>@F=r5U z)zNzYzz`0cY6GYM|9)|l6oC8uV~aO{MzsKkKCl}Csl+c zFJPbp&dCO18`(OY{~~2v`n}ILHf9=@hRwU*mKw3K3r)wyv#GR~y3Qxy5$O22FZWIT z7)e0vX1;m({LIQ4#vfBzI65e_xY z-rxDT`7I^q6c#(qHzB(?RD_E25UTu7tI!{BA_Oy$2wg8{VxZs1y{-g`L`cMNYBf#^ ziVJ_XhQu9&?ivDuw0{ek5l2Z!-fCCs)?4X{(Jl11CSP?z0RLG|8IP>Y)O}!a?aCi+ zC=FuIpXi-mX{#Ikv9faErDSBh;^y`oOQGINN|~t zzktEr{RFZxnn7B`zM_QoFIyvNI!B_}{dd;=53~E_9C(@dXyyCfjKsmnxJTMMR_s%c zq&V$(@^41#6v&u$7=OQI3Xng~CF8%ocES3{I+5RHtszmMS1c2jzvg@9Bxd2C@^yXo z0EEmUP$maC)Px&mV7QsxS4a3JdghbB$u9F6?os}`PATUu*KEFcWd6YY>GD)L&tzDE zq&@Q*D~bI~)A4GzejzDA{_%~VIYNs;-X!v5e$natQ9eE4Ta1f2yo-f01m%vjPFvQ+ z_8o>}WQJ^6MrD>(T#S*By!Q(svBRX|eWd8#`k;SzM2spTXiHj=e|Be671f(9!`;WX z&S&$+gOKKQ)~$y{Cj`(}GsP#pC~mi>dZFTO$1Xxkq5Yp+y*+ z9qPfSCl-H>d@opI?w(mxhn`UfEOuDmvHqC9#sxOA0eGZam0EzaSa-yJ9YSGx5q@S= z%28Vr)-oa%fiS)}fwuAPr`?BM*wix=Z7fV|935Zu#25iSM#q86l^YoWK3S=>)!S{w z$2Y`ua;^{QmPbbBBlM5mjC8bC>AW!V;2-hB4Zlz86%nRW-qLFd%yyedPDOaT_H!+VbVyZeRqX)4n8H+WBTA3av?VP-AcL`q)Fq5G_`&2F{cif7{1VDT1Dr%1SRZZTMB6a_7_DjKK%|8ov1Pz=8!3@{7;#SW>LdvkFj3z6G={w0Fwz|arl;sU(STSSS>+>wTxUeA&xkxvu|o}M<@7s z2c=i0D-V!i6ImV;RGx>L!&L=k(zd>%2@m0k)*maI615QNy%E8J5JNE z>TXhT>D4Zl*1ne*em}HdCok@xHmztmJ+dfFm;DVZAv6F7DLt53)c8n_UwJ`6;*M^& z^VKzJ>F+~&KpV6L-UL+|)vuwkBx`y`W@W&Bn@uuULhzYWt-u1?W%ZB8*!%HCxx|Wy1ZPsR`Y^l+wrf=*RF% zWoj0Ko3zJPjPL!d2eB$=!|)L#OlC@ICF7&bBpOHKZCOXI(=1hC5%kef#|m%sVVKxR&FqP6 zs7+3@p6+o0W^h2dq$?cCkH}z)B0Y8UOLXVgA@|#zEHgk?`7eT79NeNim`f@b zI{nH9*mayELE?eB_xJRd$RA&U*WIRRGl9LA0oZR07wO@EuRLx{+t?in*JmY4+a068r+Q^ zl5&fnc<^zNP+k2N;EMXy-4`M42?`Qzo{r`xJFlvC$K$h@BylDz+$!&jq~p(Gvsho< zmSF?U0YWbBOhLbAeHQ=>{^OI9?jIc= zuf709O|M|E)li+)WWi@QFmh0O64LAo0cZ2GD6+Cs*GK22b*|+8^evnO?}$0y|9ZZ% zqM{N71;w{oZ>7sq+NvxpQXA%3b>xt@{%zd_=V8s9Q-zR~k+z4Of{<+VTa@rV;}Qx@ zqYn`?WZeRP%Z*Bw1lxer_$eR>QX(QD z)w=DLjq1m0)_O#isQ&`oArwtsWxzp3H88{0WIses}hRkCf}9nOMG%NGGt>nlf8PNRRub(h;~ ze^tLIM?&7(^OSP`iuHuMO^k1`m8S^fsax;A|1-WLOWeb8ljQ%uuCn#-#>0xmx+QTy zJ$MG2p^}tST?{ov@OmqJT-=WzKOpYTxSfR(jkRX^>68J^(AT8@GO5u`#;?9P zg%o&xkH0t7&j^2UKVG-Xz;?i8eRKW03K* z?P1*OyP<`9pkU&+`L~f1W`_Xv+s}|6qW7k*OOKZ9X9TLGvhGgdPnOti`$S@n%b`$q za-^RGb#&UDb~ot52(bj zFBf;LUhVgKq#EDli|+HBQ<$tw8gHY9bI2g;-|JwpfRP9*JpgE*z59fmoSs_^-(RAP zcrB^^ODmO#jeZ8C(jt;d-E1^}c-0^EUX_^uim6XLZXV^)jTO`W{&y$PN5*MArb0~I zkLT-+0z~U(tI|x`ZMhrPpQh=0@r`08W-Pp5>(f=T7+SFV_!~jSQV!+5=^acbyi}pc34^(-yTHLq9jQc69_nV)v z8VS>QoM_GT7heTx<6iZ6m)Mm12R<&-8sQKOCV^;oz${jZ-~ z^P;2HTil9RX}z~z?&kKJAQz`NVsaHX5bEnd-Z>9yL^?S3QaFf4vSK1D*ZD${>B`y)#^!=Zvy$*&+)dL*4OvUwxT@7#Ve>A8J5`Zol_}m>V-P-wQl7y=eYU zqQ2OhARccr4sfE3c&UhZf*^^B`>fIZYZyOCx~NFbntuSnsX4@bEGyCxp7p93uJJjI z7ZVe+POVn3_!^x>eVISD7|HbbxC$yF=*O2$>aL&=014Se2j~A4t6Q{nEjvKc%*d+GcxZ_1&57 zCo_gim4Q9l&E4s2YXI>lI1=R(9Cp+oLJCbaQ|K=jGY8IrV}cK0%)z|UajBmYL&zl| z)N*lH%G;%dA^Pyis!q{RB%#)@9@y4*PDzf{qo88-4{O~kWk1)s)x^Lh=G{cB5Rj$l zjwKV6qLx#U5|d=4C(C9%)apm?O}@NzXk{h4;-34f>%;fTk zb97($;o(BZLvXOefvExj%3l2Cjq_PeMWZxHrwn^=KOzko)tfhImC}!8y(n8zLZH7= zHq9sM`5Xi{{23p@{tzPgJK z3=AhkB>3XbFAIsCfa}hO7CKib+GU?sCqNv%#aX0xGt%$k!mud8qW$VNy8F6DVk2^m z$wp^XjXwNsi)vS!q?`MtQ zKvK8~7CjIJ#;psjf)U%s7Eq2uwPTfC`iqw(AOvx>XZLw8-;x!6X;i%StQL4QHN+nYF#9 zrnG-%PyTFZBmF$BtSGY}Ai>;iwRNY8HWLRXSOkI1K;e@i@=SF81@Q zo3a^vawQ`hO6JF*Z=a1YAg@5(+)AyNq8Q#LHw!$!J9d6Q)5Uz$d-sF7ytIHvQ%y;3 zLW~W{%Iho9LhU&!FVEsuQ&B*wCwefRrRxH^FA;4y0#qfd)yN1ZCMTJh{AAIozC!Tf zS<|OmgN%N!H=_a22q8>!Cj&dvbK}uqF&8b82m9lY2q7GWu=Cm0nJG5C^Nu^I2aoX% zKFPVHhEuVwg9+kgwt*v?_GV_ErrQq6A2m2cofoYW*Ywbuq-Bsh;lEuD=;rGD@+lcB z>8@kg(rD{;3cXATs~=!84!waX-eO~V9{1EZ(rI>LJ^fx@T8cP$@k#pD#f&Hrw2zP; zAFA(oyDyjM1f<P@*4g!wdbk7f(GK_pG0H`B?6;WZcVc+bE;{f6lX2K6BYewRXYpkbEHR-@6d zlWA_QzC;e;GhYK>t9BraARH*5uy+91myF>8Y2n@PZ#pS{$Pu9<(lLHB&fMH! zvy7~+`b?j5*L<|J(gOVv)8VJceF-l-OqWv|8&7HJd*1v6N9FmNSga4P_eKq8-eL<& zm-_7UnOzLy;i_Oey8RbF#2XH`Ux$74UOFB7?R5^@aqI`gAM>HFeVqt_g==12!4&Cx zm0E5Gt4jkvzr@5@w2M?8xKad`eEqs9ukDxfR2;fHqfZEl{ECJi781scXH?TleJ^fA zH`b=FVeNSB;O?@8=boLN<7i{hBg;wV&jx25)BVzb`9Bl#G=1aUP4j_rlW!5Nd+ zj;5e^)K|EnTUA?QIb*5o+iF;AF&}#z#BG+Q$#${=A3E#w%7$d`C`6sXvk=u>iuwLS@SMxUzk(vAndHyO*pm^>yt2sBs(Vi%3 z*^`~Y;kE3SL-{sYjCcZjq<8UQ8mr`4df0npp*S{+)x+8qejh%+SQqBRZwb-mhqv2d zKOQ6EWjJqLkEd2FM1mg_oTMihpNvkgQt*A5zMluY5%%_$r_yTI8F7;7d5{z|!l?Eg zD-hl;ey6;Mr?uF)e@do9Wm?D=*cXyeG_FhF5^z!P!ka6Go( zL3LZJ!3%yP!ZSGws^0v~G&@(D2+&8dsS}WKtG!B4m3tVRrmnDDJJy5U`{Lf5OIap2 zmweXf`OjC|Vnsx+$}FyC8wQV{k$~a|>m4psqJ9$Cz&bI3r3@_MeVXIMnFv3dsB8|e ziT5Y~@5Rz8_Ssa*0}ONO#K-_r1r;R9+zicB)73hS7fHPtX<_QE?pT3)I8^f+;>W!S zRG|TA1~5zz*pFcWO~m=4KVp{Q(dy#~dk_sE8NeFQJ`Q@D#bhgM563MH{(T7(gcOn@ zHv`FO>JFDHfuEe5-0}hk2j`)WLm-am@CwZX{an@^ckT1nmt9NHIy(eRr6g3gbH3@ zQpXcg_JZw!T?$S{$7pm|;c;=syxdzOFJ3GMECr;<{w=IP^N-ue*a&CMmdO+F4C+Vg z^+eE{lG}AQSBi@2@i`;tr}BtCn#bOcC0(5YL=xQr&u<_@|M3EBZPw<|^Iaie(4Nna zSZ++%4Lme~W^E$;z8Q{OebsH?*_s){bzcFJv^YgFn5{r!Y|_Dv6p1=I5*`HF+0*D#@a#Sf0N7TbILGn#30x;NS+P z+Rzcg+lP0VBqh5yDnURhmYP!*14;3lnR-qy<5!uX>M+QQAwqRZ(W;o2*pi8a#7EfA z7&9q^{>6bvY1XUt8TD0Nb}kM=G7<%yS+eVtIh)c%XT!bNfr~L3+6yaqQba*5B8LUL z^|STC)#5!c1p-PkRB^$eL=w6`u6Q7Yyd9*WZ3-(JXHC>yA?1U8TM2&#NsI*EfN>Bv}6Y$c)<-+QVj?axKTJDmbe7!BN zOZH?!mRKHP@+1`%n9Rs19^tgsay)cT1VO5TTv33T)>fGlSPte57 zjUkZ`b@Dx*Kbx0pjFEwLW^$&rnXp>QEY#3hWOm3R{K{9ivBJ6VsS?&=I$xxL2l)bj z&F8D8x;^)T8sW#pxA60;ZE`KVC(Ap5Dpix*fhnaVHzF6IARMJHsEH5?XZg;}RUyk~n0n*frhIud%s&kHPJ z!m!;K+bVg+IdndXkh41%?X|PJq7X7d{FLWK95nOE@Ovx%MFg0bP;eZ4Xdmo1=`U%j{dML45HV68?P5)ymY6J%Xo^m?cPu?zqku{4Q--YTi@N-9Y&srYc` zLrTg-a=?%Tfhav5*-xjx@AF7i%?n;*3~@3rMfjqFLZ!T9+V+YN7Ob&{OKo`Vll~|# zxVHYZa^1)TtQ8V=kTUYFW9m%6A$C_+zf@WpgFLWK4b3Sfxh;!Aks%Y5g`B1y9y~DA zo3%f(D}1OYvV=q4iNf6d@NNyc{sC&|*80t4hIFiukPxcO#S>~JWCFa)O)3^4 zcqrqkJicqY_20kw;EsRYgWQtB2@|D}sSogBVUlS#SdGqsNTgvTx~k=c-Tq zMt-W2(tvmhJxWM8AdA0ZrtkYKt7UccefvGgHTe_qjza+plVr9p>dl9K69a>X3qM3f zB3(U+AS&HlvviAYD((z&;=m#}_GEP>FjVtN^PTKv&IT$)*BJ?7%PXcMr|_v9#QFEf zhC|b$?%D6O<}cK^d=my?0auU|+|0&1*<;3Kp`?GemQU>l*5=1^MNq%3X4x48l*azh ziWEFe)m7mi)ZHS|UtvFzA}R1ND=Q&Ut4%?cvM^Jdub5=j*Efp`1RCp-(>xi@S?|x= zf`fyjSs++v0y}DH5+sAU8fkcnYt-NURfQgmiZ8R)Yje_T{NKIRG$3G$msxB|^HU9T z3a}@C5Dp;BmjpxQW)_+nZGL1p5Ztgmn`BrHPjJ36e{Xij*Sr6UMt0R^zl4x8$9!R6Br^Nh$(}$RA|b#&=T}qRndPduDP6SrZoa1Z zd6k7Xw`=OP*sax{@nolox^%_X2D{_H&13s<20M{Owcv^@m(|VhG(-KOZagMDgEJKW zrY?hZ!f`DL<;ptU92+6wCd$&!j0VM zRRt#St@R)(Kz*!SWCqO`zkBp2*6qwbbTEL=ZGy*RzAY<}Pa)>x5Qf1@rv@%fhr{rR7>RfsdbrfQXnB=KE)F|JlTmQypuB$AWNW-{+$A zhL8)AY$eF-QoPW{FZ2dBr7QI*->!ClQFziZY(Lz(T%|p|#CD`vSs1JSbG}L?$Um8= zIGMn0tYLS$5PmPTmQS$OX!<(w(`F$Iexy5~DB7pkN0DhdGqpIMR~RpWcO5tMlP~Bi z7hbm9RbaSq64H+Di^ng8oj@>I896gO;Hg{jWT-Yj`q{n!(72op5k2{+u^1%LLvU zOyFN$l+=%2cADZid4HihJv{#{|8Me?`I%@Xgoje<}_+EKBS4rXUQ zvdr-i!^Te36TE|;?WHFe{tnxfs_7XBi&#@)4E6r5{1CJ<;&`{0&XdR+%_56z6q!j# z^yLS!(_M;$>g?1p0<&+YRm&pQ=+Vm?N}3?9HTgHR0n*)jD_!eJ7WM2w^@%DxF(*9| z7P7R71`?V?4$?CH0vP*8H7I=c+lmMX;;u57^+k4B!=DXrd^AE4O2ofO-n!9yW%Y4 zz%of>Ab3q<599ZIL$Y1G>^m~D9o8Cw^x2nj@U#0E!5b?B*ZUd&rL*uTA#c<;L7 zJF{i(=KMnIrsNl1@H z{+ua9wj^J@`%3-YcfG3dUPjWtGfFq~y}u#|14nc|C11uJ!Wcn(DudFz&WG|OV|UNF zENQNFP^|Gbd~j#4+an`GS*1TDYn6N1p?)-rQ1haNkg-)GxuMBpdp1gT%zx63z#jE^ z>hGOWDmvh4>ZI~BYum4;t(9pS8kO}7B)a}B4)~?%aU$Fk*T80!26_=X**&PF`nhiX z_AB*`=k>cw3$2B|HnQ(27bJ&0W68m0uEVG`xp^=JIE+Jfx6D>yBe6td?e#E!La;=}ijV!Q(2)MX<$y&Tm ziJyk>Cd~=s5DL-3#oWNb-Z}mV{SDpH>lsm?8|6$)LP7S2%n&APe3 znkw*9CS&^2~bH7Ax2uo)nR|gnDF2%!mN4bwPSb95= z?=64jwu{9T3=dOpLP7>HZ}J|Md*=(^gs-RzK6lYdy#Xb6HFjie4EXaGA- zFc9(ntXa1zCBeUx&7rL1C;A$a!5@(v+2{|K8!Gi1ObiWJW)Ip$tnayqslRMIeH$-5#Vz zh?*xg$<trXnU?7(8XZmzAPXC=S~Y%VYZdlY*F$PRRS`%yb#>ra}LFG_X)6qJ5V7vffU+ zio$E6ZiZ9Kq5g7tyIc;bewu*MS6Iqx%cSCQ6v9tf~yCMHYQbJ;} z#_Y6yK%{(mKAAu3?kyburOh$_;G zcm`zFKjt7Z3T|#(^TfVouleRE#7QQ2LdRMz&e!ihxZMK-@qWlDA{68OMA}4Zu*m8Q z)h{n7ah2B*skfQ!8^c(B^yr#*iHAQb6X$v|)*{~i>M?V}_~cIa)|tEoUJ8CM2*I~- zH!le5;Nui8mp>*k5`xMHoX|#jtbbN;x^KP=$!3a(i&j3IEAeE{J3468dlLT$OJT%W zZFPO_UZ*P=#8hDY zUv`G^Q%i~?9AroCV2Fbrqkv?ZlM|Dd@7{o9Hqf>=9z0L4_jR?UKiAv+3}@B<12~t< z8H>e3O-3?5sYaxpdW%_DEZ(ng-t5A}h57CGek%=}w5({mm#+J7?}n-TZZG1wdbcy* zAM>Uq<>kfM*H2gWn`5&8NnW=}nct^5#K$)?-Q#f8vpbbGlDVHTaogPK@}%`Hhii1+ zXjt{bpBvNeykrXt$-8Kr4+H|8ZnZhHxvuZp!3Nlb_sN>gliXp9kK%&_u&QK5&!`hp zJ=w}(8aa-CRM5Q{3nqO*P4X9t>*$H)@**sB6mueL+Io^b1u<0fVzWZB&qPg*+TI92 zCS~y!xlM4Zy`S$WK}g~XB7jR)BpUEn9p!1iKYBdhEY$a51HB&(6b=^>HWC6kJAc=# zLHv_zJHk(u9+8{_yf<7v7kQj><{LwS+Mkf_Jet)}^w&w(eV!kG9uC9fGctJv+t)WW z#-^m8X`b(%l0yKw8*aach?&vRv3?;T-XqU3HJAGvNH{1(Rl0?SlLbc%V)RK zPYN%T%*@yQ5C~JRHe^1qpI;67Je;T=dWCzy@5#O<^P^#4W4}ExrYc2((V<8uHrqRV z*#!(FfJrAf85`)SD5&lVTPZ)EbR2=h;w(^1F1EO72Z!nO{S1%IiY&D3v57i~r^q`H z10b>fB<0RxGKPl4K*OTWORjV+RvQj)rp@y>+z~naA~BLy`8%$_ zlp8uuKuG$AuZ(H6oktQa7T+&;NwI~Jymu@`4 zm<#Af&LWC>+R<@;H$Ffz32=EXEpch{M#~MNQXME^F2g}Z04=C_^vKvEr(X{@C;93& zU*5a;;p;G0+Nv#GAT!8$NMlrrgPTD>7+NFaW4Ya*V(QDO%LvqWu47_OXza=YL0=N_ znPug)T0LK%Qlc>&gWuMx)@-?57?`$3Mr~|tQMR`kvHMZZLYd8l@j5TJ-+hi64wLyP zffkg;2yAv5PS+QG&gb17Lqb9a5{kKR-uG4KH$8#vCFU9o*%?+&t!fX|2OwN^0Bb+w z;h`t1xk|TdB9F`a=qF$o*%U1xB96!90;0kQoZ#m$Ejw%z7EgrT9%nq~6TboB>HP{V z=o5Nf0pR^e5yl5Mw)n^T5#_yn3Lril5C*@$df&Mo{=gNAbo{zRTo%6Q`Md|mVeG`~ z;X(DlXykvq)#^+hk1OwWcVeh8)BE}yiJa-D)h$80+ye6vwX=$$@pS3AlQzq52>gS0 z)B6>5ary<9&+Rw{ox#tGhyW;bP0kN|@_l$Px7SH+Q&Z^*Tdh%P24@e?_|I&1uW)ni zv|0YCrQ>p{VqiaY%o^MqhbltP890ZWa9Y>O;lMVTdYv)m55(wCZ1tXFB_y^pH;5FE z=;*C`fT#JRW`|p=Gb6QeRGz$-23SC$&XeGR_54`~w)10H&_n@eo>Nc}&b(Nu1ocQV zN>*6Q!~q;Lvx50Nkl#jmot&t_Q(ApMdQ%hY}k(XTbGoxvik!6 z01^j^G60_I*Dl%agF&Fb8+>=M_wOe zVwwQfvymslnDDXW;em4XrDTz~T2^d&d<(K%$Pv}?@*)M{{y;XYw~!xgCNT+a zmSomK%8OH{MtXRs8Q5z6}1w3kE&6%N5qb(J!8Zw zQKM#!Sfyf1?7gW?tJJ8yswk>jEwxG&RlC2NZ=dh)^}JqB{ysV9)fBu`#u-E z5}RB)aEJXru*doVP-Vb%%e5|GUrM5??71Fi+as$8ff5DeV)s>#Vt}MkXk^M+Af{yH zs*doHloQ+nj&I$Pc|<}+F*-gT;Fk+RQ2lA|&>KXD8N5kw3nMdbe-UkHPC4;)n6I5h zPa%4|a^uVK3dLjlPLDwSBmtr%KELOmH)AaypwZ@pyf>_2FiZJ6K$V}LO@_P28R_E| zBJzA3O71^sGgD$n51|Xl=eL;}PkwLH3Ple8P7JEOM^d&vGE@-$nWcx!to7v^c}TZE z8%`tSfSD}F`fBCZF~O;wPB})bqx%hYYTmoKJ25W^XJNH zs2hjYvz1_Zp+#@1!Yl849_zW|KQKV|9uA>`lT4KYihd0+viXvW>4IpLt86A8O3*Yx zbrPkoY_p*{;kYaT{Q@ybKRu!)JQZq|ow|(3|BZGWT6T6A*Y%Dnjj7}_EBa?#?f6hT ze)iJWW;x*O#72&4G#~JnCvOz!dj##&g$#}-iQMg0qBXyMZ3?I)^#-V^>#=IFKOIhPv?ZsCj>PUT zD;$%d8$G*tr7wOAmiq*Loi!_#JYi>lH_433NEcX;d{&o_cSbd52{)xsouG42dreXf zXMU;igA}vTv^DB2I-!#}t1;!%vlpqA$Z!Kg!)V*tZ-}utB0Kw($~MQ6xf+gVb$|A2 z3Om-rr{4suDx-2%xzxZmZwCKM@L%t+HB95&>-D+4tNb9^UY$Eei!N=W+*yf|3%6c*XB{0tl~#$R4m z!QA9wXWD=y=q5W_*9Z>o_>)=*>T6FRwSviilH8i7S!wNOr>Zd<_pNfP%4~6-%lC4m zg~8?^MeaUSGa=*@u6X@H6~FovHs{zQN1 zQ$??s=k~>4x&1J6&HHNY-gu~d|1;Jf9}1*P)*0%N4T~gr)IJn01nw-`&vddfAEA8u z>O!yhrYp?K%`k)9H6e=IR6f)m%Pf|-NF^1?oLT?kk8D=zx*ycfmmZrO$k(lyv}bP&9aiDpmvC{la+w$EYpaS~8n8;Di}I zUiI%BS)4h&o}iur{u`Sbs_>PvtGTf&yaMpS`!S&AfN$;6{4=$xPUl_n2R$~0;A>SD z9lM3PT)%El$b+T)rt9sYMgsl4DZbOII@t%v1*fBVR_a;a6Fwo!%*^wns`wAhY|KQ7 z!o7xCTq3k@1ZjlSYuMDdKlEvLj!!tsDASka=5n;W(A2X++^WvbupyI+1HC&}}U z8jx$>NPNJ%^J`P})0aO}q{({Jlsr;uDa5>y7I&*ytrtYKb6Ezyf8<)UHGlB3 zG1#Yhl07d2zvLRm3zucc*XU8_P-3sWBS(=bhBsK?}9R8$657qaj?&okgLW+0AiWd;u2mBO`pWB+j#)kES(=)rk>0NkPdF z3c0Fl7hV)KVMVL>I}$Z5(o2uUn#4&O-;{c^Y=uE|@6zSKQ&t$J)@yg{8<1`aB*8xZ zkBQ~yU=+HXB_TEnz(lDi!rLpUt0|C&Z0u?Yb&@#CDGPLfiW_6m(s}0Kb?#1u0H)>4^A7h zqOU>#UcZT>+Gb7(N}R)c6mca)Al#c0?7R)bl;`}qLjVg%-sRgvV2Q`H6X!!GL7Vs#F@oM(* zD7r&lqK0r<22(n=aTr2+6k`mhPE1nv?wKt(t&!aU6{&!v((`g4V$n&`XIakD`17=? zLj+&?@$@(Glke%GMNFbyF(Icr!t6b+Gt(c&n&<~a&L}^v$Rd$0&zO5ds_&;JW1|+j z5S{TDkFXYUa2DikISQN=u}?F%2IqLC@^pZfa#5A}vzv>_By^Dhmqo``lrE+AqVVb` z!E->10KZ-tBxP4Gkhi3l##`qsxi2vZ-Ju&!ixqVEUQj*PalwyXRN?qe@r!zK}dO^?hqFoce2Wr zZf=NXm==u|YlIX-QTio|j)n>kCPO$r)C)kk$~mJlBeJDbHS|1RTTx1tG(CkCeARJD zA3*<6^-O-9>%<05lOjssOr)ZLf-!WGir|P|)SIN@K%myDJb-$`#+lB~<9d@KnUYNWzZ*;9BG1t<7vnG0gwNmmg$EfH_ zAqo(2JZhj8I%l?|dM@C=>zEldxNH)PEkKkO-30oU?9dvc;^F+;`_L8^vcGXq9_5*k z`}nA>^=|daSd^Qhw~v4Sos@L8rIZOS|JX#!*lzrMB^p&5RedovI#}pJy)n`x88Z1@ zVEaz|z5y={^nMH@sE*E(1yE=w=q~!!z9U?%o9R%CZjOr}G`Lt~zAX(scQUYTm*z_Cdd0@ChV?6Kg-Lm`W! zO&=dMp^n%j8x9ZZ(8IhHLOF-2a6gk>Eyjy!6K3EzUZt?<({W;p5=FbgjBWO43`BF5 z_t-9(t&WcKV%h~FV(iKaFcO|IoK*}Eh+-pPpea6yU1gj(EM2v2o!1dHjC!s8Xkj@2 zBZ^6EhDsTzx}xXfP_nX|1y7AgRtwfhc3D;Ba)zTZW=3@G^wTvwyIKPm4nB{MgQ%z| z!SO!4W3NBqc2Dl^${mBriQYVuyAPMC9($~a+Wx*%0AotAzPSOsj;925LfJs7Q%C-c z+hWYl&p)K~5+0>*4UK&RLQuiHpez{c0FZa=d45>^4+0Jce_1>rieA6s7UO^*==n;|%^W>M) z1X5)pbMgwOqT}^LQak}NW zoJKFdF@hiY1bitTCjqd?eA^7mt|}#9Vgn?;M(~fx*P%0M^C&41VqLSMj{eYjO+E`% zMpCf0rHPF3`GGiUcnIYtB3mhrPaop-@LdbmoDhS$V`?!{|$@#>>=f=M!ceg(e_fj#eG{uszE%7Gmahc#F*$*|S-?xhGAax1~S zlE*-%Pp%q%(qmn|Ghn1O`OL$yk^;*es+6){Z=X3s5J~Qds>#euCKwx$llA$Aa4ftx zqk%?bsw4mrTwbD{I9Sk(oK=pojag7Y@O<`_;}r2%+rmOcM0iR^!E$cB_pP>Ko}!EY z$+t^n&gBUvb7&J24Pk=c<(rae={hJEA|7YXucBna5m*e-h-r^P6H+>(GC3hPm zOZ+xeoFCrMqU`EKI!J5qobs@$(w8aW!fPYhJbJO8IfGtPuijAp7Be=fAv`)VLdkkh z>URTnM|3-fg;k3|cgHZbH;MIX8v!wQzxL)#sE^C*3HGNQ$BYZ_J~Jra(%;pcdl9#g zM8umcPFNw1?>sglp*lv|tp$Sh+`NhgOhj1c_tn!5rp4-y)!EMZ0BKNzjyC~RE-60X zLU(*wqF6QfGAVzCEON8pwpvGJ%eC*Y3^e-L1Ze65ze&<# z5T}QxK?C>RnlP@f%)v_i@BoQO%yz_S7oH-Kltsf?x12g~J37hHc3vIy2Rw}~!bzMJ z`0!1Q4+tXt#H25`6z{OetSs1dE?4(>%h^mT8n9!$3*+Y6z0yRlB(cG|b+qucJ+EsR z+KBf@0x~PAi)0f9+&6>`zu1|jn~m%{Z^zp3~9x5_YG6_X;1kc~&RAMGTxq+0G(aX7U3kK2P8ieZP<1Y8Bu4i4#;R1HH#P$S{(f% zUjW8P@$=o}d==pVC<-?0`GBOLp$qN5@&5BtPjoP8facTini`3t(y}vQZ@)+_cliWj z#VH-+Sy|?f0g#5T~f^eG8 z$O8O0z_D|dX_%DYeQ@_!KdiL2;o)zhKs=J>QIV%gq8_Qmy`|ytnq+Hhn@9!I4riyOW@c! zc(TC}1JV^T=dx0GOatwR#kj(nrO%CVr^$(Cv0;5cR*1x-D)V#n*_ycB()Ubo@mKjt zn%ryw^=NDG&~|S$SS!bzN#;84W6xyY2!O+leZix`c+FJ73B>te;&z8^v&P<&Q+<(K zeP}uFhhHSNU!Iqf-kQZUcsC!f?49|6D72}>beYYi88Xr`@(IF4?TP$zdi21-!NK3(za{5KmQ3)%XiuT?>X;LHWT|K? z(IqADO#~?-Gb3B;$O->32elv(yY4wQJ^dyv{fcpmd;eJW`)bp8n8ZnLgxvN|_i^az zILNkGc~$4=P2Lj7xilge2gx{@xhTJkQn><@Uk2=)j4~&Ic%5@sMm5CBcVjL zCkb~&L=^Cbn}#14BqviZiTN+g%C@*Cdls!bURbpXAd-|BY-&yx?cQ?&ew}8f<^ER^ z7KRZ6%8vv<(wn_A{98mvGXC=bi#$F&6xE`PM{*5{@v3+-0L@mG&sOd&46x%K?$epO zC9Tntn{I((tujL7_!1DjuQioJ^zH!9V5KERr+|0&Iy&=weuZED7-8_~%9(Ol_ya++ zX2cs5@V=u!dAX)7sapXev$3lnF+>anWwZr$O4cNR>0+|SPc7|O%%ZPvpbigE0T91I z__US&3jfP9dNh+uI=fyF)!+0z?fAMVK=YzSaT9WUZpgj!fNfB~hQts~NH;!G;XK|{ zZN-SiBF#!Oai1F5XXsscS6s{iI*gUdi%x#DDNI z9al(PIM(Y+_St_OYXShJujrR*u)OrSL;2$Iyd2>EekQAz&qNBp6rM;oY>19krT;Ue zCg^pRNh*uwjP#{Zt|xaf1^+nlP0q^!%O)>C!Q!ZN?`M}5`TrRH5AiO3lqVdAr-282 NAgVelHA>cD{|DF$Ya##u literal 0 HcmV?d00001 diff --git a/sherlock.py b/sherlock.py index 125a8dcb..c9f7077c 100644 --- a/sherlock.py +++ b/sherlock.py @@ -8,6 +8,9 @@ import json import os import sys import re +from argparse import ArgumentParser, RawDescriptionHelpFormatter +import platform + module_name = "Sherlock: Find Usernames Across Social Networks" __version__ = "0.1.0" @@ -19,11 +22,13 @@ def write_to_file(url, fname): with open(fname, "a") as f: f.write(url+"\n") + def print_error(err, errstr, var, debug = False): if debug: - print (f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err}") + print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err}") else: - print (f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") + print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") + def make_request(url, headers, error_type, social_network, verbose=False): try: @@ -40,6 +45,7 @@ def make_request(url, headers, error_type, social_network, verbose=False): print_error(err, "Unknown error:", social_network, verbose) return None, "" + def sherlock(username, verbose=False): fname = username+".txt" @@ -65,7 +71,7 @@ def sherlock(username, verbose=False): if regex_check and re.search(regex_check, username) is None: #No need to do the check at the site: this user name is not allowed. - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal User Name Format For This Site!".format(social_network)) + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) continue r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose) @@ -105,10 +111,8 @@ def sherlock(username, verbose=False): return -if __name__ == "__main__": - from argparse import ArgumentParser, RawDescriptionHelpFormatter - import platform +def main(): version_string = f"%(prog)s {__version__}\n" + \ f"{requests.__description__}: {requests.__version__}\n" + \ f"Python: {platform.python_version()}" @@ -136,7 +140,7 @@ if __name__ == "__main__": args = parser.parse_args() - #Banner + # Banner print( """\033[37;1m .\"\"\"-. \033[37;1m / \\ @@ -148,7 +152,12 @@ if __name__ == "__main__": \033[37;1m .'`-._ `.\ | J / \033[37;1m / `--.| \__/\033[0m""") - #Run report on all specified users. + # Run report on all specified users. for username in args.username: print() sherlock(username, verbose=args.verbose) + + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sherlock_preview.png b/sherlock_preview.png deleted file mode 100644 index 4808154fda337f74fac1eefb884a51a9c4abd52a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41356 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 From 632065e3868808f8ba8422da98b17e8de1c71854 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Fri, 28 Dec 2018 21:15:42 +0100 Subject: [PATCH 21/95] added ImageShack --- data.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data.json b/data.json index 5ba1a571..ace39eb2 100644 --- a/data.json +++ b/data.json @@ -360,5 +360,10 @@ "MyAnimeList": { "url": "https://myanimelist.net/profile/{}", "errorType": "status_code" + }, + "ImageShack": { + "url": "https://imageshack.us/user/{}", + "errorType": "response_url", + "errorUrl": "https://imageshack.us/" } } From e848e95db300b86f70490c456e4476fa3d40d6da Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Fri, 28 Dec 2018 21:42:32 +0100 Subject: [PATCH 22/95] added Badoo --- data.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data.json b/data.json index ace39eb2..1de1355b 100644 --- a/data.json +++ b/data.json @@ -365,5 +365,9 @@ "url": "https://imageshack.us/user/{}", "errorType": "response_url", "errorUrl": "https://imageshack.us/" + }, + "Badoo": { + "url": "https://badoo.com/profile/{}", + "errorType": "status_code" } } From 3d4682e2794202ab3d4791c52bcd5e149afb3f77 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Fri, 28 Dec 2018 21:49:56 +0100 Subject: [PATCH 23/95] added MeetMe --- data.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data.json b/data.json index 1de1355b..35499672 100644 --- a/data.json +++ b/data.json @@ -369,5 +369,10 @@ "Badoo": { "url": "https://badoo.com/profile/{}", "errorType": "status_code" + }, + "MeetMe": { + "url": "https://www.meetme.com/{}", + "errorType": "response_url", + "errorUrl": "https://www.meetme.com/" } } From c3d8a669f187644f0323cad1afa0ba67bf9db1b9 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Fri, 28 Dec 2018 21:56:54 +0100 Subject: [PATCH 24/95] modified the description of Sherlock --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b35108c9..7e668f6e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Sherlock -> Find usernames across over 75 social networks +> Find usernames across social networks

From 01a64ba1726587d311292bf9ce22ae9fe68f4be4 Mon Sep 17 00:00:00 2001 From: Aggie Bill Date: Fri, 28 Dec 2018 17:44:01 -0500 Subject: [PATCH 25/95] Ignore txt files, except requirements.txt --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 753dfef7..5e38a44d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ # Jupyter Notebook .ipynb_checkpoints *.ipynb + +# Output files, except requirements.txt +*.txt +!requirements.txt From b2cb0506a3c74b4b52667d75486380434a2b317e Mon Sep 17 00:00:00 2001 From: Mike Pieters Date: Sat, 29 Dec 2018 01:50:25 +0100 Subject: [PATCH 26/95] Adds option to connect over TOR --- requirements.txt | 1 + sherlock.py | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index f2293605..1d8fa423 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ requests +torrequest \ No newline at end of file diff --git a/sherlock.py b/sherlock.py index c9f7077c..a8c2c84b 100644 --- a/sherlock.py +++ b/sherlock.py @@ -10,7 +10,7 @@ import sys import re from argparse import ArgumentParser, RawDescriptionHelpFormatter import platform - +from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" __version__ = "0.1.0" @@ -30,9 +30,10 @@ def print_error(err, errstr, var, debug = False): print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") -def make_request(url, headers, error_type, social_network, verbose=False): +def make_request(url, headers, error_type, social_network, verbose=False, tor=False): + r = TorRequest() if tor else requests try: - r = requests.get(url, headers=headers) + r = r.get(url, headers=headers) if r.status_code: return r, error_type except requests.exceptions.HTTPError as errh: @@ -46,7 +47,7 @@ def make_request(url, headers, error_type, social_network, verbose=False): return None, "" -def sherlock(username, verbose=False): +def sherlock(username, verbose=False, tor=False): fname = username+".txt" if os.path.isfile(fname): @@ -74,7 +75,7 @@ def sherlock(username, verbose=False): print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) continue - r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose) + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose, tor=tor) if error_type == "message": error = data.get(social_network).get("errorMsg") @@ -132,6 +133,9 @@ def main(): action="store_false", dest="verbose", help="Disable debugging information (Default Option)." ) + parser.add_argument("--tor", "-t", + action="store_true", dest="tor", default=False, + help="Make requests over TOR; requires TOR to be installed and in system path.") parser.add_argument("username", nargs='+', metavar='USERNAMES', action="store", @@ -152,10 +156,13 @@ def main(): \033[37;1m .'`-._ `.\ | J / \033[37;1m / `--.| \__/\033[0m""") - # Run report on all specified users. + if args.tor: + print("Warning: some websites might refuse connecting over TOR, so note that using this option might increase connection errors.") + + # Run report on all specified users. for username in args.username: print() - sherlock(username, verbose=args.verbose) + sherlock(username, verbose=args.verbose, tor=args.tor) From 7f26889de469b28137910db14227d21f8f21a750 Mon Sep 17 00:00:00 2001 From: Fabian Rodriguez Date: Fri, 28 Dec 2018 19:59:04 -0500 Subject: [PATCH 27/95] Update README.md for Python 3.6+ req. Update README.md for Python 3.6+ req. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56148ec6..96132e77 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Installation -**NOTE**: Python 3.6 is required. +**NOTE**: Python 3.6 or higher is required. ```bash # clone the repo From 49f65021bb421b76053a2b26a7de779ef5594c6a Mon Sep 17 00:00:00 2001 From: Mike Pieters Date: Sat, 29 Dec 2018 02:31:31 +0100 Subject: [PATCH 28/95] Adds option to use new TOR circuit for each request --- sherlock.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/sherlock.py b/sherlock.py index a8c2c84b..b8842a6c 100644 --- a/sherlock.py +++ b/sherlock.py @@ -30,12 +30,14 @@ def print_error(err, errstr, var, debug = False): print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") -def make_request(url, headers, error_type, social_network, verbose=False, tor=False): - r = TorRequest() if tor else requests +def make_request(url, headers, error_type, social_network, verbose=False, tor=False, unique_tor=False): + r = TorRequest() if (tor or unique_tor) else requests try: - r = r.get(url, headers=headers) - if r.status_code: - return r, error_type + rsp = r.get(url, headers=headers) + if unique_tor: + r.reset_identity() + if rsp.status_code: + return rsp, error_type except requests.exceptions.HTTPError as errh: print_error(errh, "HTTP Error:", social_network, verbose) except requests.exceptions.ConnectionError as errc: @@ -47,7 +49,7 @@ def make_request(url, headers, error_type, social_network, verbose=False, tor=Fa return None, "" -def sherlock(username, verbose=False, tor=False): +def sherlock(username, verbose=False, tor=False, unique_tor=False): fname = username+".txt" if os.path.isfile(fname): @@ -75,7 +77,7 @@ def sherlock(username, verbose=False, tor=False): print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) continue - r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose, tor=tor) + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose, tor=tor, unique_tor=unique_tor) if error_type == "message": error = data.get(social_network).get("errorMsg") @@ -135,7 +137,10 @@ def main(): ) parser.add_argument("--tor", "-t", action="store_true", dest="tor", default=False, - help="Make requests over TOR; requires TOR to be installed and in system path.") + help="Make requests over TOR; increases runtime; requires TOR to be installed and in system path.") + parser.add_argument("--unique-tor", "-u", + action="store_true", dest="unique_tor", default=False, + help="Make requests over TOR with new TOR circuit after each request; increases runtime; requires TOR to be installed and in system path.") parser.add_argument("username", nargs='+', metavar='USERNAMES', action="store", @@ -156,13 +161,13 @@ def main(): \033[37;1m .'`-._ `.\ | J / \033[37;1m / `--.| \__/\033[0m""") - if args.tor: + if args.tor or args.unique_tor: print("Warning: some websites might refuse connecting over TOR, so note that using this option might increase connection errors.") # Run report on all specified users. for username in args.username: print() - sherlock(username, verbose=args.verbose, tor=args.tor) + sherlock(username, verbose=args.verbose, tor=args.tor, unique_tor=args.unique_tor) From 7d4f1c68ff7aaf13f5646ff6902333afa1f3914a Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Fri, 28 Dec 2018 19:38:26 -0600 Subject: [PATCH 29/95] Add main URL for each social networking site. This is needed for future development (e.g. csv report generation, and autogeneraton of supported site report). Wanted to get this in early so that anyone adding more social network sites in the future would know to put this other piece of information in. --- data.json | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/data.json b/data.json index 35499672..09270ebd 100644 --- a/data.json +++ b/data.json @@ -1,377 +1,456 @@ { "Instagram": { "url": "https://www.instagram.com/{}", + "urlMain": "https://www.instagram.com/", "errorType": "message", "errorMsg": "The link you followed may be broken" }, "Twitter": { "url": "https://www.twitter.com/{}", + "urlMain": "https://www.twitter.com/", "errorType": "message", "errorMsg": "page doesn’t exist" }, "Facebook": { "url": "https://www.facebook.com/{}", + "urlMain": "https://www.facebook.com/", "errorType": "status_code" }, "YouTube": { "url": "https://www.youtube.com/{}", + "urlMain": "https://www.youtube.com/", "errorType": "message", "errorMsg": "Not Found" }, "Blogger": { "url": "https://{}.blogspot.com", + "urlMain": "https://www.blogger.com/", "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Google Plus": { "url": "https://plus.google.com/+{}", + "urlMain": "https://plus.google.com/", "errorType": "status_code" }, "Reddit": { "url": "https://www.reddit.com/user/{}", + "urlMain": "https://www.reddit.com/", "errorType": "message", "errorMsg":"page not found" }, "Pinterest": { "url": "https://www.pinterest.com/{}", + "urlMain": "https://www.pinterest.com/", "errorType": "response_url", "errorUrl": "https://www.pinterest.com/?show_error=true" }, "GitHub": { "url": "https://www.github.com/{}", + "urlMain": "https://www.github.com/", "errorType": "status_code", "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$" }, "Steam": { "url": "https://steamcommunity.com/id/{}", + "urlMain": "https://steamcommunity.com/", "errorType": "message", "errorMsg": "The specified profile could not be found" }, "Vimeo": { "url": "https://vimeo.com/{}", + "urlMain": "https://vimeo.com/", "errorType": "message", "errorMsg": "404 Not Found" }, "SoundCloud": { "url": "https://soundcloud.com/{}", + "urlMain": "https://soundcloud.com/", "errorType": "status_code" }, "Disqus": { "url": "https://disqus.com/{}", + "urlMain": "https://disqus.com/", "errorType": "status_code" }, "Medium": { "url": "https://medium.com/@{}", + "urlMain": "https://medium.com/", "errorType": "status_code" }, "DeviantART": { "url": "https://{}.deviantart.com", + "urlMain": "https://deviantart.com", "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "VK": { "url": "https://vk.com/{}", + "urlMain": "https://vk.com/", "errorType": "status_code" }, "About.me": { "url": "https://about.me/{}", + "urlMain": "https://about.me/", "errorType": "status_code" }, "Imgur": { "url": "https://imgur.com/user/{}", + "urlMain": "https://imgur.com/", "errorType": "status_code" }, "Flipboard": { "url": "https://flipboard.com/@{}", + "urlMain": "https://flipboard.com/", "errorType": "message", "errorMsg": "loading" }, "SlideShare": { "url": "https://slideshare.net/{}", + "urlMain": "https://slideshare.net/", "errorType": "status_code" }, "Fotolog": { "url": "https://fotolog.com/{}", + "urlMain": "https://fotolog.com/", "errorType": "status_code" }, "Spotify": { "url": "https://open.spotify.com/user/{}", + "urlMain": "https://open.spotify.com/", "errorType": "status_code" }, "MixCloud": { "url": "https://www.mixcloud.com/{}", + "urlMain": "https://www.mixcloud.com/", "errorType": "message", "errorMsg": "Page Not Found" }, "Scribd": { "url": "https://www.scribd.com/{}", + "urlMain": "https://www.scribd.com/", "errorType": "message", "errorMsg": "Page not found" }, "Patreon": { "url": "https://www.patreon.com/{}", + "urlMain": "https://www.patreon.com/", "errorType": "status_code" }, "BitBucket": { "url": "https://bitbucket.org/{}", + "urlMain": "https://bitbucket.org/", "errorType": "status_code" }, "Roblox": { "url": "https://www.roblox.com/user.aspx?username={}", + "urlMain": "https://www.roblox.com/", "errorType": "message", "errorMsg": "Page cannot be found or no longer exists" }, "Gravatar": { "url": "http://en.gravatar.com/{}", + "urlMain": "http://en.gravatar.com/", "errorType": "status_code" }, "iMGSRC.RU": { "url": "https://imgsrc.ru/main/user.php?user={}", + "urlMain": "https://imgsrc.ru/", "errorType": "response_url", "errorUrl": "https://imgsrc.ru/" }, "DailyMotion": { "url": "https://www.dailymotion.com/{}", + "urlMain": "https://www.dailymotion.com/", "errorType": "message", "errorMsg": "Page not found" }, "Etsy": { "url": "https://www.etsy.com/shop/{}", + "urlMain": "https://www.etsy.com/", "errorType": "status_code" }, "CashMe": { "url": "https://cash.me/{}", + "urlMain": "https://cash.me/", "errorType": "status_code" }, "Behance": { "url": "https://www.behance.net/{}", + "urlMain": "https://www.behance.net/", "errorType": "message", "errorMsg": "Oops! We can’t find that page." }, "GoodReads": { "url": "https://www.goodreads.com/{}", + "urlMain": "https://www.goodreads.com/", "errorType": "status_code" }, "Instructables": { "url": "https://www.instructables.com/member/{}", + "urlMain": "https://www.instructables.com/", "errorType": "message", "errorMsg": "404: We're sorry, things break sometimes" }, "Keybase": { "url": "https://keybase.io/{}", + "urlMain": "https://keybase.io/", "errorType": "status_code" }, "Kongregate": { "url": "https://www.kongregate.com/accounts/{}", + "urlMain": "https://www.kongregate.com/", "errorType": "message", "errorMsg": "Sorry, no account with that name was found.", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "LiveJournal": { "url": "https://{}.livejournal.com", + "urlMain": "https://www.livejournal.com/", "errorType": "message", "errorMsg": "Unknown Journal", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "VSCO": { "url": "https://vsco.co/{}", + "urlMain": "https://vsco.co/", "errorType": "status_code" }, "AngelList": { "url": "https://angel.co/{}", + "urlMain": "https://angel.co/", "errorType": "message", "errorMsg": "We couldn't find what you were looking for." }, "last.fm": { "url": "https://last.fm/user/{}", + "urlMain": "https://last.fm/", "errorType": "message", "errorMsg": "Whoops! Sorry, but this page doesn't exist." }, "Dribbble": { "url": "https://dribbble.com/{}", + "urlMain": "https://dribbble.com/", "errorType": "message", "errorMsg": "Whoops, that page is gone.", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Codecademy": { "url": "https://www.codecademy.com/{}", + "urlMain": "https://www.codecademy.com/", "errorType": "message", "errorMsg": "404 error" }, "Pastebin": { "url": "https://pastebin.com/u/{}", + "urlMain": "https://pastebin.com/", "errorType": "response_url", "errorUrl": "https://pastebin.com/index" }, "Foursquare": { "url": "https://foursquare.com/{}", + "urlMain": "https://foursquare.com/", "errorType": "status_code" }, "Gumroad": { "url": "https://www.gumroad.com/{}", + "urlMain": "https://www.gumroad.com/", "errorType": "message", "errorMsg": "Page not found." }, "Newgrounds": { "url": "https://{}.newgrounds.com", + "urlMain": "https://newgrounds.com", "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Wattpad": { "url": "https://www.wattpad.com/user/{}", + "urlMain": "https://www.wattpad.com/", "errorType": "message", "errorMsg": "This page seems to be missing..." }, "Canva": { "url": "https://www.canva.com/{}", + "urlMain": "https://www.canva.com/", "errorType": "message", "errorMsg": "Not found (404)" }, "Trakt": { "url": "https://www.trakt.tv/users/{}", + "urlMain": "https://www.trakt.tv/", "errorType": "message", "errorMsg": "404" }, "500px": { "url": "https://500px.com/{}", + "urlMain": "https://500px.com/", "errorType": "message", "errorMsg": "Sorry, no such page." }, "BuzzFeed": { "url": "https://buzzfeed.com/{}", + "urlMain": "https://buzzfeed.com/", "errorType": "message", "errorMsg": "We can't find the page you're looking for." }, "TripAdvisor": { "url": "https://tripadvisor.com/members/{}", + "urlMain": "https://tripadvisor.com/", "errorType": "message", "errorMsg": "This page is on vacation…" }, "Contently": { "url": "https://{}.contently.com/", + "urlMain": "https://contently.com/", "errorType": "message", "errorMsg": "We can't find that page!", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Houzz": { "url": "https://houzz.com/user/{}", + "urlMain": "https://houzz.com/", "errorType": "message", "errorMsg": "The page you requested was not found." }, "BLIP.fm": { "url": "https://blip.fm/{}", + "urlMain": "https://blip.fm/", "errorType": "message", "errorMsg": "Page Not Found" }, "HackerNews": { "url": "https://news.ycombinator.com/user?id={}", + "urlMain": "https://news.ycombinator.com/", "errorType": "message", "errorMsg": "No such user." }, "Codementor": { "url": "https://www.codementor.io/{}", + "urlMain": "https://www.codementor.io/", "errorType": "message", "errorMsg": "404" }, "ReverbNation": { "url": "https://www.reverbnation.com/{}", + "urlMain": "https://www.reverbnation.com/", "errorType": "message", "errorMsg": "Sorry, we couldn't find that page" }, "Designspiration": { "url": "https://www.designspiration.net/{}", + "urlMain": "https://www.designspiration.net/", "errorType": "message", "errorMsg": "Content Not Found" }, "Bandcamp": { "url": "https://www.bandcamp.com/{}", + "urlMain": "https://www.bandcamp.com/", "errorType": "message", "errorMsg": "Sorry, that something isn’t here" }, "ColourLovers": { "url": "https://www.colourlovers.com/love/{}", + "urlMain": "https://www.colourlovers.com/", "errorType": "message", "errorMsg": "Page Not Loved" }, "IFTTT": { "url": "https://www.ifttt.com/p/{}", + "urlMain": "https://www.ifttt.com/", "errorType": "message", "errorMsg": "The requested page or file does not exist" }, "Ebay": { "url": "https://www.ebay.com/usr/{}", + "urlMain": "https://www.ebay.com/", "errorType": "message", "errorMsg": "The User ID you entered was not found" }, "Slack": { "url": "https://{}.slack.com", + "urlMain": "https://slack.com", "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Trip": { "url": "https://www.trip.skyscanner.com/user/{}", + "urlMain": "https://www.trip.skyscanner.com/", "errorType": "message", "errorMsg": "Page not found" }, "Ello": { "url": "https://ello.co/{}", + "urlMain": "https://ello.co/", "errorType": "message", "errorMsg": "We couldn't find the page you're looking for" }, "HackerOne": { "url": "https://hackerone.com/{}", + "urlMain": "https://hackerone.com/", "errorType": "message", "errorMsg": "Page not found" }, "Tinder": { "url": "https://www.gotinder.com/@{}", + "urlMain": "https://tinder.com/", "errorType": "message", "errorMsg": "Looking for Someone?" }, "We Heart It": { "url": "https://weheartit.com/{}", + "urlMain": "https://weheartit.com/", "errorType": "message", "errorMsg": "Oops! You've landed on a moving target!" }, "Flickr": { "url": "https://www.flickr.com/people/{}", + "urlMain": "https://www.flickr.com/", "errorType": "status_code" }, "WordPress": { "url": "https://{}.wordpress.com", + "urlMain": "https://wordpress.com", "errorType": "response_url", "errorUrl": "wordpress.com/typo/?subdomain=", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "Unsplash": { "url": "https://unsplash.com/@{}", + "urlMain": "https://unsplash.com/", "errorType": "status_code" }, "Pexels": { "url": "https://www.pexels.com/@{}", + "urlMain": "https://www.pexels.com/", "errorType": "message", "errorMsg": "Ouch, something went wrong!" }, "devRant": { "url": "https://devrant.com/users/{}", + "urlMain": "https://devrant.com/", "errorType": "response_url", "errorUrl": "https://devrant.com/" }, "MyAnimeList": { "url": "https://myanimelist.net/profile/{}", + "urlMain": "https://myanimelist.net/", "errorType": "status_code" }, "ImageShack": { "url": "https://imageshack.us/user/{}", + "urlMain": "https://imageshack.us/", "errorType": "response_url", "errorUrl": "https://imageshack.us/" }, "Badoo": { "url": "https://badoo.com/profile/{}", + "urlMain": "https://badoo.com/", "errorType": "status_code" }, "MeetMe": { "url": "https://www.meetme.com/{}", + "urlMain": "https://www.meetme.com/", "errorType": "response_url", "errorUrl": "https://www.meetme.com/" } From feef27b2e49b8a1674d72e1bef9a91a4cfbd8051 Mon Sep 17 00:00:00 2001 From: Mike Pieters Date: Sat, 29 Dec 2018 02:45:19 +0100 Subject: [PATCH 30/95] Removed accidental whitespace --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index b8842a6c..25bf1d5a 100644 --- a/sherlock.py +++ b/sherlock.py @@ -164,7 +164,7 @@ def main(): if args.tor or args.unique_tor: print("Warning: some websites might refuse connecting over TOR, so note that using this option might increase connection errors.") - # Run report on all specified users. + # Run report on all specified users. for username in args.username: print() sherlock(username, verbose=args.verbose, tor=args.tor, unique_tor=args.unique_tor) From 6cd18fb5bb17de47b7466f2312b24c284e9384a4 Mon Sep 17 00:00:00 2001 From: Mike Pieters Date: Sat, 29 Dec 2018 03:27:31 +0100 Subject: [PATCH 31/95] Update README to reflect added TOR arguments --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e668f6e..b0b5ed42 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ $ pip3 install -r requirements.txt ```bash $ python3 sherlock.py --help -usage: sherlock.py [-h] [--version] [--verbose] [--quiet] +usage: sherlock.py [-h] [--version] [--verbose] [--quiet] [--tor] [--unique-tor] USERNAMES [USERNAMES ...] Sherlock: Find Usernames Across Social Networks (Version 0.1.0) @@ -37,6 +37,8 @@ optional arguments: --verbose, -v, -d, --debug Display extra debugging information. --quiet, -q Disable debugging information (Default Option). + --tor, -t Make requests over TOR; increases runtime; requires TOR to be installed and in system path. + --unique-tor, -u Make requests over TOR with new TOR circuit after each request; increases runtime; requires TOR to be installed and in system path. ``` For example, run ```python3 sherlock.py user123```, and all of the accounts From b17072b3cde802ef6572a062a807d15a88d43378 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Fri, 28 Dec 2018 22:28:47 -0600 Subject: [PATCH 32/95] Change sherlock method to return dictionary summarizing all results. This will allow the caller to have raw information for other reports. --- sherlock.py | 134 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 38 deletions(-) diff --git a/sherlock.py b/sherlock.py index c9f7077c..d8d5acc9 100644 --- a/sherlock.py +++ b/sherlock.py @@ -47,6 +47,26 @@ def make_request(url, headers, error_type, social_network, verbose=False): def sherlock(username, verbose=False): + """Run Sherlock Analysis. + + Checks for existence of username on various social media sites. + + Keyword Arguments: + username -- String indicating username that report + should be created against. + + Return Value: + Dictionary containing results from report. Key of dictionary is the name + of the social network site, and the value is another dictionary with + the following keys: + url_main: URL of main site. + url_user: URL of user on site (if account exists). + exists: String indicating results of test for account existence. + http_status: HTTP status code of query which checked for existence on + site. + response_text: Text that came back from request. May be None if + there was an HTTP error when checking for existence. + """ fname = username+".txt" if os.path.isfile(fname): @@ -64,52 +84,92 @@ def sherlock(username, verbose=False): 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0' } + # Results from analysis of all sites + results_total = {} for social_network in data: + # Results from analysis of this specific site + results_site = {} + + # Record URL of main site + results_site['url_main'] = data.get(social_network).get("urlMain") + + # URL of user on site (if it exists) url = data.get(social_network).get("url").format(username) + results_site['url_user'] = url + error_type = data.get(social_network).get("errorType") regex_check = data.get(social_network).get("regexCheck") + # Default data in case there are any failures in doing a request. + http_status = "?" + response_text = "" + if regex_check and re.search(regex_check, username) is None: #No need to do the check at the site: this user name is not allowed. print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) - continue - - r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose) - - if error_type == "message": - error = data.get(social_network).get("errorMsg") - # Checks if the error message is in the HTML - if not error in r.text: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) - write_to_file(url, fname) - - else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) - - elif error_type == "status_code": - # Checks if the status code of the repsonse is 404 - if not r.status_code == 404: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) - write_to_file(url, fname) - - else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) - - elif error_type == "response_url": - error = data.get(social_network).get("errorUrl") - # Checks if the redirect url is the same as the one defined in data.json - if not error in r.url: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) - write_to_file(url, fname) - else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) - - elif error_type == "": - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Error!".format(social_network)) + exists = "illegal" + else: + r, error_type = make_request(url=url, headers=headers, error_type=error_type, social_network=social_network, verbose=verbose) + + # Attempt to get request information + try: + http_status = r.status_code + except: + pass + try: + response_text = r.text.encode(r.encoding) + except: + pass + + if error_type == "message": + error = data.get(social_network).get("errorMsg") + # Checks if the error message is in the HTML + if not error in r.text: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + write_to_file(url, fname) + exists = "yes" + else: + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + exists = "no" + + elif error_type == "status_code": + # Checks if the status code of the response is 404 + if not r.status_code == 404: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + write_to_file(url, fname) + exists = "yes" + else: + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + exists = "no" + + elif error_type == "response_url": + error = data.get(social_network).get("errorUrl") + # Checks if the redirect url is the same as the one defined in data.json + if not error in r.url: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + write_to_file(url, fname) + exists = "yes" + else: + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + exists = "no" + + elif error_type == "": + print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Error!".format(social_network)) + exists = "error" + + # Save exists flag + results_site['exists'] = exists + + # Save results from request + results_site['http_status'] = http_status + results_site['response_text'] = response_text + + # Add this site's results into final dictionary with all of the other results. + results_total[social_network] = results_site print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) - return + return results_total def main(): @@ -155,9 +215,7 @@ def main(): # Run report on all specified users. for username in args.username: print() - sherlock(username, verbose=args.verbose) - - + results = sherlock(username, verbose=args.verbose) if __name__ == "__main__": main() \ No newline at end of file From d9e600d05dccc3303311faf140bea4a692d99e3f Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Fri, 28 Dec 2018 22:32:30 -0600 Subject: [PATCH 33/95] Add support for writing to Comma-Separated Values (CSV) File with all of the results. Unfortunately, the request text is so long that it is not visible in spreadsheet programs. So, I am leaving this off for now. --- .gitignore | 3 +++ sherlock.py | 28 +++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5e38a44d..2e5e5bec 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ # Output files, except requirements.txt *.txt !requirements.txt + +# Comma-Separated Values (CSV) Reports +*.csv diff --git a/sherlock.py b/sherlock.py index d8d5acc9..d9549cfb 100644 --- a/sherlock.py +++ b/sherlock.py @@ -8,6 +8,7 @@ import json import os import sys import re +import csv from argparse import ArgumentParser, RawDescriptionHelpFormatter import platform @@ -192,6 +193,10 @@ def main(): action="store_false", dest="verbose", help="Disable debugging information (Default Option)." ) + parser.add_argument("--csv", + action="store_true", dest="csv", default=False, + help="Create Comma-Separated Values (CSV) File." + ) parser.add_argument("username", nargs='+', metavar='USERNAMES', action="store", @@ -217,5 +222,26 @@ def main(): print() results = sherlock(username, verbose=args.verbose) + if args.csv == True: + with open(username + ".csv", "w", newline='') as csv_report: + writer = csv.writer(csv_report) + writer.writerow(['username', + 'name', + 'url_main', + 'url_user', + 'exists', + 'http_status' + ] + ) + for site in results: + writer.writerow([username, + site, + results[site]['url_main'], + results[site]['url_user'], + results[site]['exists'], + results[site]['http_status'] + ] + ) + if __name__ == "__main__": - main() \ No newline at end of file + main() From 601d3d9495f2c137d1aed4785106e2edca731c78 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Fri, 28 Dec 2018 22:55:13 -0600 Subject: [PATCH 34/95] Update readme with new csv option. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 809cf267..ebb57829 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ $ pip3 install -r requirements.txt ```bash $ python3 sherlock.py --help -usage: sherlock.py [-h] [--version] [--verbose] [--quiet] +usage: sherlock.py [-h] [--version] [--verbose] [--quiet] [--csv] USERNAMES [USERNAMES ...] Sherlock: Find Usernames Across Social Networks (Version 0.1.0) @@ -39,6 +39,7 @@ optional arguments: --verbose, -v, -d, --debug Display extra debugging information. --quiet, -q Disable debugging information (Default Option). + --csv Create Comma-Separated Values (CSV) File. ``` For example, run ```python3 sherlock.py user123```, and all of the accounts From 373083446e752e25bcea3026414b584a3e6dae34 Mon Sep 17 00:00:00 2001 From: Rajdeep Bharati Date: Sat, 29 Dec 2018 11:20:18 +0530 Subject: [PATCH 35/95] Added support for Quora. --- data.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data.json b/data.json index 09270ebd..e1bf7d80 100644 --- a/data.json +++ b/data.json @@ -453,5 +453,10 @@ "urlMain": "https://www.meetme.com/", "errorType": "response_url", "errorUrl": "https://www.meetme.com/" + }, + "Quora": { + "url": "https://www.quora.com/profile/{}", + "urlMain": "https://www.quora.com/", + "errorType": "status_code" } } From fd11e601f347c4341ba3b592d639d8fdc6bbe56e Mon Sep 17 00:00:00 2001 From: Boardens <31590269+boardens@users.noreply.github.com> Date: Sat, 29 Dec 2018 23:31:36 +0100 Subject: [PATCH 36/95] Added support for 14 social networks Changes : - Added Pixabay - Added Giphy - Added Taringa - Added SourceForge - Added Codepen - Added Launchpad - Added Photobucket - Added Wix - Added Crevado - Added Carbonmade - Added Coroflot - Added Jimdo - Added Repl.it - Added Issuu Notes: - Unable to add Twitch, Tumblr, Big Cartel, Trello. --- data.json | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/data.json b/data.json index e1bf7d80..3a7529ac 100644 --- a/data.json +++ b/data.json @@ -458,5 +458,79 @@ "url": "https://www.quora.com/profile/{}", "urlMain": "https://www.quora.com/", "errorType": "status_code" + }, + "Pixabay": { + "url": "https://pixabay.com/en/users/{}", + "urlMain": "https://pixabay.com/", + "errorType": "status_code" + }, + "Giphy": { + "url": "https://giphy.com/{}", + "urlMain": "https://giphy.com/", + "errorType": "status_code" + }, + "Taringa": { + "url": "https://www.taringa.net/{}", + "urlMain": "https://taringa.net/", + "errorType": "message", + "errorMsg": "Lo que estás buscando no está por aquí." + }, + "SourceForge": { + "url": "https://sourceforge.net/u/{}", + "urlMain": "https://sourceforge.net/", + "errorType": "status_code" + }, + "Codepen": { + "url": "https://codepen.io/{}", + "urlMain": "https://codepen.io/", + "errorType": "status_code" + }, + "Launchpad": { + "url": "https://launchpad.net/~{}", + "urlMain": "https://launchpad.net/", + "errorType": "status_code" + }, + "Photobucket": { + "url": "https://photobucket.com/user/{}/library", + "urlMain": "https://photobucket.com/", + "errorType": "status_code" + }, + "Wix": { + "url": "https://{}.wix.com", + "urlMain": "https://wix.com/", + "errorType": "status_code" + }, + "Crevado": { + "url": "https://{}.crevado.com", + "urlMain": "https://crevado.com/", + "errorType": "status_code" + }, + "Carbonmade": { + "url": "https://{}.carbonmade.com", + "urlMain": "https://carbonmade.com/", + "errorType": "message", + "errorMsg": "You've accidentally stumbled upon Mike's super secret nap grotto." + }, + "Coroflot": { + "url": "https://www.coroflot.com/{}", + "urlMain": "https://coroflot.com/", + "errorType": "status_code" + }, + "Jimdo": { + "url": "https://{}.jimdosite.com", + "urlMain": "https://jimdosite.com/", + "errorType": "status_code", + "noPeriod": "True" + }, + "Repl.it": { + "url": "https://repl.it/@{}", + "urlMain": "https://repl.it/", + "errorType": "message", + "errorMsg": "404" + }, + "Issuu": { + "url": "https://issuu.com/{}", + "urlMain": "https://issuu.com/", + "errorType": "status_code" } } From 26adc32497e91c37b14208c48a3b22c60ba96e31 Mon Sep 17 00:00:00 2001 From: anto-christo Date: Sun, 30 Dec 2018 04:46:43 +0530 Subject: [PATCH 37/95] Add script for listing sites in sites.md --- site_list.py | 15 ++++++++++ sites.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 site_list.py create mode 100644 sites.md diff --git a/site_list.py b/site_list.py new file mode 100644 index 00000000..77575fbc --- /dev/null +++ b/site_list.py @@ -0,0 +1,15 @@ +import json + +raw = open("data.json", "r", encoding="utf-8") +data = json.load(raw) + +site_file = open('sites.md', 'w') +site_file.write('## List of supported sites\n') + +index = 1 +for social_network in data: + url_main = data.get(social_network).get("urlMain") + site_file.write(f'{index}. [{social_network}]({url_main})\n') + index = index + 1 + +site_file.close() \ No newline at end of file diff --git a/sites.md b/sites.md new file mode 100644 index 00000000..a15be428 --- /dev/null +++ b/sites.md @@ -0,0 +1,81 @@ +## List of supported sites +1. [Instagram](https://www.instagram.com/) +2. [Twitter](https://www.twitter.com/) +3. [Facebook](https://www.facebook.com/) +4. [YouTube](https://www.youtube.com/) +5. [Blogger](https://www.blogger.com/) +6. [Google Plus](https://plus.google.com/) +7. [Reddit](https://www.reddit.com/) +8. [Pinterest](https://www.pinterest.com/) +9. [GitHub](https://www.github.com/) +10. [Steam](https://steamcommunity.com/) +11. [Vimeo](https://vimeo.com/) +12. [SoundCloud](https://soundcloud.com/) +13. [Disqus](https://disqus.com/) +14. [Medium](https://medium.com/) +15. [DeviantART](https://deviantart.com) +16. [VK](https://vk.com/) +17. [About.me](https://about.me/) +18. [Imgur](https://imgur.com/) +19. [Flipboard](https://flipboard.com/) +20. [SlideShare](https://slideshare.net/) +21. [Fotolog](https://fotolog.com/) +22. [Spotify](https://open.spotify.com/) +23. [MixCloud](https://www.mixcloud.com/) +24. [Scribd](https://www.scribd.com/) +25. [Patreon](https://www.patreon.com/) +26. [BitBucket](https://bitbucket.org/) +27. [Roblox](https://www.roblox.com/) +28. [Gravatar](http://en.gravatar.com/) +29. [iMGSRC.RU](https://imgsrc.ru/) +30. [DailyMotion](https://www.dailymotion.com/) +31. [Etsy](https://www.etsy.com/) +32. [CashMe](https://cash.me/) +33. [Behance](https://www.behance.net/) +34. [GoodReads](https://www.goodreads.com/) +35. [Instructables](https://www.instructables.com/) +36. [Keybase](https://keybase.io/) +37. [Kongregate](https://www.kongregate.com/) +38. [LiveJournal](https://www.livejournal.com/) +39. [VSCO](https://vsco.co/) +40. [AngelList](https://angel.co/) +41. [last.fm](https://last.fm/) +42. [Dribbble](https://dribbble.com/) +43. [Codecademy](https://www.codecademy.com/) +44. [Pastebin](https://pastebin.com/) +45. [Foursquare](https://foursquare.com/) +46. [Gumroad](https://www.gumroad.com/) +47. [Newgrounds](https://newgrounds.com) +48. [Wattpad](https://www.wattpad.com/) +49. [Canva](https://www.canva.com/) +50. [Trakt](https://www.trakt.tv/) +51. [500px](https://500px.com/) +52. [BuzzFeed](https://buzzfeed.com/) +53. [TripAdvisor](https://tripadvisor.com/) +54. [Contently](https://contently.com/) +55. [Houzz](https://houzz.com/) +56. [BLIP.fm](https://blip.fm/) +57. [HackerNews](https://news.ycombinator.com/) +58. [Codementor](https://www.codementor.io/) +59. [ReverbNation](https://www.reverbnation.com/) +60. [Designspiration](https://www.designspiration.net/) +61. [Bandcamp](https://www.bandcamp.com/) +62. [ColourLovers](https://www.colourlovers.com/) +63. [IFTTT](https://www.ifttt.com/) +64. [Ebay](https://www.ebay.com/) +65. [Slack](https://slack.com) +66. [Trip](https://www.trip.skyscanner.com/) +67. [Ello](https://ello.co/) +68. [HackerOne](https://hackerone.com/) +69. [Tinder](https://tinder.com/) +70. [We Heart It](https://weheartit.com/) +71. [Flickr](https://www.flickr.com/) +72. [WordPress](https://wordpress.com) +73. [Unsplash](https://unsplash.com/) +74. [Pexels](https://www.pexels.com/) +75. [devRant](https://devrant.com/) +76. [MyAnimeList](https://myanimelist.net/) +77. [ImageShack](https://imageshack.us/) +78. [Badoo](https://badoo.com/) +79. [MeetMe](https://www.meetme.com/) +80. [Quora](https://www.quora.com/) From fe2feff7a7e862f7797b879716c035d712bd2855 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Sun, 30 Dec 2018 09:46:59 +0100 Subject: [PATCH 38/95] Added the image back. --- preview.png | Bin 0 -> 93922 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 preview.png diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..727c144aa66b1079baa4543e1d97962ad8ad70e6 GIT binary patch literal 93922 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%0AotAzPSOsj;925LfJs7Q%C-c z+hWYl&p)K~5+0>*4UK&RLQuiHpez{c0FZa=d45>^4+0Jce_1>rieA6s7UO^*==n;|%^W>M) z1X5)pbMgwOqT}^LQak}NW zoJKFdF@hiY1bitTCjqd?eA^7mt|}#9Vgn?;M(~fx*P%0M^C&41VqLSMj{eYjO+E`% zMpCf0rHPF3`GGiUcnIYtB3mhrPaop-@LdbmoDhS$V`?!{|$@#>>=f=M!ceg(e_fj#eG{uszE%7Gmahc#F*$*|S-?xhGAax1~S zlE*-%Pp%q%(qmn|Ghn1O`OL$yk^;*es+6){Z=X3s5J~Qds>#euCKwx$llA$Aa4ftx zqk%?bsw4mrTwbD{I9Sk(oK=pojag7Y@O<`_;}r2%+rmOcM0iR^!E$cB_pP>Ko}!EY z$+t^n&gBUvb7&J24Pk=c<(rae={hJEA|7YXucBna5m*e-h-r^P6H+>(GC3hPm zOZ+xeoFCrMqU`EKI!J5qobs@$(w8aW!fPYhJbJO8IfGtPuijAp7Be=fAv`)VLdkkh z>URTnM|3-fg;k3|cgHZbH;MIX8v!wQzxL)#sE^C*3HGNQ$BYZ_J~Jra(%;pcdl9#g zM8umcPFNw1?>sglp*lv|tp$Sh+`NhgOhj1c_tn!5rp4-y)!EMZ0BKNzjyC~RE-60X zLU(*wqF6QfGAVzCEON8pwpvGJ%eC*Y3^e-L1Ze65ze&<# z5T}QxK?C>RnlP@f%)v_i@BoQO%yz_S7oH-Kltsf?x12g~J37hHc3vIy2Rw}~!bzMJ z`0!1Q4+tXt#H25`6z{OetSs1dE?4(>%h^mT8n9!$3*+Y6z0yRlB(cG|b+qucJ+EsR z+KBf@0x~PAi)0f9+&6>`zu1|jn~m%{Z^zp3~9x5_YG6_X;1kc~&RAMGTxq+0G(aX7U3kK2P8ieZP<1Y8Bu4i4#;R1HH#P$S{(f% zUjW8P@$=o}d==pVC<-?0`GBOLp$qN5@&5BtPjoP8facTini`3t(y}vQZ@)+_cliWj z#VH-+Sy|?f0g#5T~f^eG8 z$O8O0z_D|dX_%DYeQ@_!KdiL2;o)zhKs=J>QIV%gq8_Qmy`|ytnq+Hhn@9!I4riyOW@c! zc(TC}1JV^T=dx0GOatwR#kj(nrO%CVr^$(Cv0;5cR*1x-D)V#n*_ycB()Ubo@mKjt zn%ryw^=NDG&~|S$SS!bzN#;84W6xyY2!O+leZix`c+FJ73B>te;&z8^v&P<&Q+<(K zeP}uFhhHSNU!Iqf-kQZUcsC!f?49|6D72}>beYYi88Xr`@(IF4?TP$zdi21-!NK3(za{5KmQ3)%XiuT?>X;LHWT|K? z(IqADO#~?-Gb3B;$O->32elv(yY4wQJ^dyv{fcpmd;eJW`)bp8n8ZnLgxvN|_i^az zILNkGc~$4=P2Lj7xilge2gx{@xhTJkQn><@Uk2=)j4~&Ic%5@sMm5CBcVjL zCkb~&L=^Cbn}#14BqviZiTN+g%C@*Cdls!bURbpXAd-|BY-&yx?cQ?&ew}8f<^ER^ z7KRZ6%8vv<(wn_A{98mvGXC=bi#$F&6xE`PM{*5{@v3+-0L@mG&sOd&46x%K?$epO zC9Tntn{I((tujL7_!1DjuQioJ^zH!9V5KERr+|0&Iy&=weuZED7-8_~%9(Ol_ya++ zX2cs5@V=u!dAX)7sapXev$3lnF+>anWwZr$O4cNR>0+|SPc7|O%%ZPvpbigE0T91I z__US&3jfP9dNh+uI=fyF)!+0z?fAMVK=YzSaT9WUZpgj!fNfB~hQts~NH;!G;XK|{ zZN-SiBF#!Oai1F5XXsscS6s{iI*gUdi%x#DDNI z9al(PIM(Y+_St_OYXShJujrR*u)OrSL;2$Iyd2>EekQAz&qNBp6rM;oY>19krT;Ue zCg^pRNh*uwjP#{Zt|xaf1^+nlP0q^!%O)>C!Q!ZN?`M}5`TrRH5AiO3lqVdAr-282 NAgVelHA>cD{|DF$Ya##u literal 0 HcmV?d00001 From 55b6ffa5ba2a6ed087edc26d2876dbc5fb41a7f0 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Sun, 30 Dec 2018 11:16:15 -0600 Subject: [PATCH 39/95] Simeon Visser noticed that "enforce utf-8 encoding when we open data.json" (#8) got undone in the previous merge. Include it again. --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 728911ad..2c0dad61 100644 --- a/sherlock.py +++ b/sherlock.py @@ -89,7 +89,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): } # Load the data - raw = open("data.json", "r") + raw = open("data.json", "r", encoding="utf-8") data = json.load(raw) # Allow 1 thread for each external service, so `len(data)` threads total From 4ecaad6289384fc4ee13a50c166de825958c8991 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Sun, 30 Dec 2018 11:50:10 -0600 Subject: [PATCH 40/95] Update script to use with-as structure for files. Add number of supported sites to title. Add status message. --- site_list.py | 24 ++++--- sites.md | 176 +++++++++++++++++++++++++++------------------------ 2 files changed, 109 insertions(+), 91 deletions(-) diff --git a/site_list.py b/site_list.py index 77575fbc..9cd76461 100644 --- a/site_list.py +++ b/site_list.py @@ -1,15 +1,19 @@ +"""Sherlock: Supported Site Listing + +This module generates the listing of supported sites. +""" import json -raw = open("data.json", "r", encoding="utf-8") -data = json.load(raw) +with open("data.json", "r", encoding="utf-8") as data_file: + data = json.load(data_file) -site_file = open('sites.md', 'w') -site_file.write('## List of supported sites\n') +with open("sites.md", "w") as site_file: + site_file.write(f'## List Of Supported Sites ({len(data)} Sites In Total!)\n') -index = 1 -for social_network in data: - url_main = data.get(social_network).get("urlMain") - site_file.write(f'{index}. [{social_network}]({url_main})\n') - index = index + 1 + index = 1 + for social_network in data: + url_main = data.get(social_network).get("urlMain") + site_file.write(f'{index}. [{social_network}]({url_main})\n') + index = index + 1 -site_file.close() \ No newline at end of file +print("Finished updating supported site listing!") diff --git a/sites.md b/sites.md index a15be428..ea47a81e 100644 --- a/sites.md +++ b/sites.md @@ -1,81 +1,95 @@ -## List of supported sites -1. [Instagram](https://www.instagram.com/) -2. [Twitter](https://www.twitter.com/) -3. [Facebook](https://www.facebook.com/) -4. [YouTube](https://www.youtube.com/) -5. [Blogger](https://www.blogger.com/) -6. [Google Plus](https://plus.google.com/) -7. [Reddit](https://www.reddit.com/) -8. [Pinterest](https://www.pinterest.com/) -9. [GitHub](https://www.github.com/) -10. [Steam](https://steamcommunity.com/) -11. [Vimeo](https://vimeo.com/) -12. [SoundCloud](https://soundcloud.com/) -13. [Disqus](https://disqus.com/) -14. [Medium](https://medium.com/) -15. [DeviantART](https://deviantart.com) -16. [VK](https://vk.com/) -17. [About.me](https://about.me/) -18. [Imgur](https://imgur.com/) -19. [Flipboard](https://flipboard.com/) -20. [SlideShare](https://slideshare.net/) -21. [Fotolog](https://fotolog.com/) -22. [Spotify](https://open.spotify.com/) -23. [MixCloud](https://www.mixcloud.com/) -24. [Scribd](https://www.scribd.com/) -25. [Patreon](https://www.patreon.com/) -26. [BitBucket](https://bitbucket.org/) -27. [Roblox](https://www.roblox.com/) -28. [Gravatar](http://en.gravatar.com/) -29. [iMGSRC.RU](https://imgsrc.ru/) -30. [DailyMotion](https://www.dailymotion.com/) -31. [Etsy](https://www.etsy.com/) -32. [CashMe](https://cash.me/) -33. [Behance](https://www.behance.net/) -34. [GoodReads](https://www.goodreads.com/) -35. [Instructables](https://www.instructables.com/) -36. [Keybase](https://keybase.io/) -37. [Kongregate](https://www.kongregate.com/) -38. [LiveJournal](https://www.livejournal.com/) -39. [VSCO](https://vsco.co/) -40. [AngelList](https://angel.co/) -41. [last.fm](https://last.fm/) -42. [Dribbble](https://dribbble.com/) -43. [Codecademy](https://www.codecademy.com/) -44. [Pastebin](https://pastebin.com/) -45. [Foursquare](https://foursquare.com/) -46. [Gumroad](https://www.gumroad.com/) -47. [Newgrounds](https://newgrounds.com) -48. [Wattpad](https://www.wattpad.com/) -49. [Canva](https://www.canva.com/) -50. [Trakt](https://www.trakt.tv/) -51. [500px](https://500px.com/) -52. [BuzzFeed](https://buzzfeed.com/) -53. [TripAdvisor](https://tripadvisor.com/) -54. [Contently](https://contently.com/) -55. [Houzz](https://houzz.com/) -56. [BLIP.fm](https://blip.fm/) -57. [HackerNews](https://news.ycombinator.com/) -58. [Codementor](https://www.codementor.io/) -59. [ReverbNation](https://www.reverbnation.com/) -60. [Designspiration](https://www.designspiration.net/) -61. [Bandcamp](https://www.bandcamp.com/) -62. [ColourLovers](https://www.colourlovers.com/) -63. [IFTTT](https://www.ifttt.com/) -64. [Ebay](https://www.ebay.com/) -65. [Slack](https://slack.com) -66. [Trip](https://www.trip.skyscanner.com/) -67. [Ello](https://ello.co/) -68. [HackerOne](https://hackerone.com/) -69. [Tinder](https://tinder.com/) -70. [We Heart It](https://weheartit.com/) -71. [Flickr](https://www.flickr.com/) -72. [WordPress](https://wordpress.com) -73. [Unsplash](https://unsplash.com/) -74. [Pexels](https://www.pexels.com/) -75. [devRant](https://devrant.com/) -76. [MyAnimeList](https://myanimelist.net/) -77. [ImageShack](https://imageshack.us/) -78. [Badoo](https://badoo.com/) -79. [MeetMe](https://www.meetme.com/) -80. [Quora](https://www.quora.com/) +## List Of Supported Sites (94 Sites In Total!) +1. [Instagram](https://www.instagram.com/) +2. [Twitter](https://www.twitter.com/) +3. [Facebook](https://www.facebook.com/) +4. [YouTube](https://www.youtube.com/) +5. [Blogger](https://www.blogger.com/) +6. [Google Plus](https://plus.google.com/) +7. [Reddit](https://www.reddit.com/) +8. [Pinterest](https://www.pinterest.com/) +9. [GitHub](https://www.github.com/) +10. [Steam](https://steamcommunity.com/) +11. [Vimeo](https://vimeo.com/) +12. [SoundCloud](https://soundcloud.com/) +13. [Disqus](https://disqus.com/) +14. [Medium](https://medium.com/) +15. [DeviantART](https://deviantart.com) +16. [VK](https://vk.com/) +17. [About.me](https://about.me/) +18. [Imgur](https://imgur.com/) +19. [Flipboard](https://flipboard.com/) +20. [SlideShare](https://slideshare.net/) +21. [Fotolog](https://fotolog.com/) +22. [Spotify](https://open.spotify.com/) +23. [MixCloud](https://www.mixcloud.com/) +24. [Scribd](https://www.scribd.com/) +25. [Patreon](https://www.patreon.com/) +26. [BitBucket](https://bitbucket.org/) +27. [Roblox](https://www.roblox.com/) +28. [Gravatar](http://en.gravatar.com/) +29. [iMGSRC.RU](https://imgsrc.ru/) +30. [DailyMotion](https://www.dailymotion.com/) +31. [Etsy](https://www.etsy.com/) +32. [CashMe](https://cash.me/) +33. [Behance](https://www.behance.net/) +34. [GoodReads](https://www.goodreads.com/) +35. [Instructables](https://www.instructables.com/) +36. [Keybase](https://keybase.io/) +37. [Kongregate](https://www.kongregate.com/) +38. [LiveJournal](https://www.livejournal.com/) +39. [VSCO](https://vsco.co/) +40. [AngelList](https://angel.co/) +41. [last.fm](https://last.fm/) +42. [Dribbble](https://dribbble.com/) +43. [Codecademy](https://www.codecademy.com/) +44. [Pastebin](https://pastebin.com/) +45. [Foursquare](https://foursquare.com/) +46. [Gumroad](https://www.gumroad.com/) +47. [Newgrounds](https://newgrounds.com) +48. [Wattpad](https://www.wattpad.com/) +49. [Canva](https://www.canva.com/) +50. [Trakt](https://www.trakt.tv/) +51. [500px](https://500px.com/) +52. [BuzzFeed](https://buzzfeed.com/) +53. [TripAdvisor](https://tripadvisor.com/) +54. [Contently](https://contently.com/) +55. [Houzz](https://houzz.com/) +56. [BLIP.fm](https://blip.fm/) +57. [HackerNews](https://news.ycombinator.com/) +58. [Codementor](https://www.codementor.io/) +59. [ReverbNation](https://www.reverbnation.com/) +60. [Designspiration](https://www.designspiration.net/) +61. [Bandcamp](https://www.bandcamp.com/) +62. [ColourLovers](https://www.colourlovers.com/) +63. [IFTTT](https://www.ifttt.com/) +64. [Ebay](https://www.ebay.com/) +65. [Slack](https://slack.com) +66. [Trip](https://www.trip.skyscanner.com/) +67. [Ello](https://ello.co/) +68. [HackerOne](https://hackerone.com/) +69. [Tinder](https://tinder.com/) +70. [We Heart It](https://weheartit.com/) +71. [Flickr](https://www.flickr.com/) +72. [WordPress](https://wordpress.com) +73. [Unsplash](https://unsplash.com/) +74. [Pexels](https://www.pexels.com/) +75. [devRant](https://devrant.com/) +76. [MyAnimeList](https://myanimelist.net/) +77. [ImageShack](https://imageshack.us/) +78. [Badoo](https://badoo.com/) +79. [MeetMe](https://www.meetme.com/) +80. [Quora](https://www.quora.com/) +81. [Pixabay](https://pixabay.com/) +82. [Giphy](https://giphy.com/) +83. [Taringa](https://taringa.net/) +84. [SourceForge](https://sourceforge.net/) +85. [Codepen](https://codepen.io/) +86. [Launchpad](https://launchpad.net/) +87. [Photobucket](https://photobucket.com/) +88. [Wix](https://wix.com/) +89. [Crevado](https://crevado.com/) +90. [Carbonmade](https://carbonmade.com/) +91. [Coroflot](https://coroflot.com/) +92. [Jimdo](https://jimdosite.com/) +93. [Repl.it](https://repl.it/) +94. [Issuu](https://issuu.com/) From 57a44482644000371ce1c5bc08731c197cd2166e Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Sun, 30 Dec 2018 21:25:04 +0100 Subject: [PATCH 41/95] modified the comment about the user agent #41 --- sherlock.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sherlock.py b/sherlock.py index 2c0dad61..eb6377fc 100644 --- a/sherlock.py +++ b/sherlock.py @@ -1,4 +1,5 @@ -"""Sherlock: Find Usernames Across Social Networks Module +""" +Sherlock: Find Usernames Across Social Networks Module This module contains the main logic to search for usernames at social networks. @@ -81,9 +82,9 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: \033[0m".format(username)) - # User agent is needed because some sites do not - # return the correct information because it thinks that - # we are bot + # A user agent is needed because some sites don't + # return the correct information since they think that + # we are bots headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0' } From 3105a79b8622c1eacd16860f345aed7e6d316376 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Sun, 30 Dec 2018 21:37:38 +0100 Subject: [PATCH 42/95] new version and version format From now on, the version will be the date and the format is from big to small. Year, Month, Day --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52a0e7f6..4b53cd84 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ $ python3 sherlock.py --help usage: sherlock.py [-h] [--version] [--verbose] [--quiet] [--csv] [--tor] [--unique-tor] USERNAMES [USERNAMES ...] -Sherlock: Find Usernames Across Social Networks (Version 0.1.0) +Sherlock: Find Usernames Across Social Networks (Version 2018.12.30) positional arguments: USERNAMES One or more usernames to check with social networks. From 03c41ee55523be6d22962ce0b1ab8b1a14ffdec3 Mon Sep 17 00:00:00 2001 From: Siddharth Dushantha Date: Sun, 30 Dec 2018 21:39:45 +0100 Subject: [PATCH 43/95] Version bump From now on, the version will be the date and the format is from big to small. Year, Month, Day. Just like youtube-dl does it. --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index eb6377fc..ec286975 100644 --- a/sherlock.py +++ b/sherlock.py @@ -17,7 +17,7 @@ import platform from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.0" +__version__ = "2018.12.30" # TODO: fix tumblr From 60555eeda7279cc2bf1149db8046f933e1d1abde Mon Sep 17 00:00:00 2001 From: cclauss Date: Sun, 30 Dec 2018 23:22:29 +0100 Subject: [PATCH 44/95] Use dict.items() to simplify interaction with dict (again) #20 again... --- sherlock.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sherlock.py b/sherlock.py index ec286975..76b26610 100644 --- a/sherlock.py +++ b/sherlock.py @@ -110,7 +110,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_total = {} # First create futures for all requests. This allows for the requests to run in parallel - for social_network in data: + for social_network, net_info in data.items(): # Results from analysis of this specific site results_site = {} @@ -119,21 +119,21 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_site['url_main'] = data.get(social_network).get("urlMain") # Don't make request if username is invalid for the site - regex_check = data.get(social_network).get("regexCheck") + regex_check = net_info["regexCheck"] if regex_check and re.search(regex_check, username) is None: # No need to do the check at the site: this user name is not allowed. print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) results_site["exists"] = "illegal" else: # URL of user on site (if it exists) - url = data.get(social_network).get("url").format(username) + url = net_info["url"].format(username) results_site["url_user"] = url # This future starts running the request in a new thread, doesn't block the main thread future = session.get(url=url, headers=headers) # Store future in data for access later - data.get(social_network)["request_future"] = future + net_info["request_future"] = future # Reset identify for tor (if needed) if unique_tor: @@ -156,14 +156,14 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): continue # Get the expected error type - error_type = data.get(social_network).get("errorType") + error_type = net_info["errorType"] # Default data in case there are any failures in doing a request. http_status = "?" response_text = "" # Retrieve future and ensure it has finished - future = data.get(social_network).get("request_future") + future = net_info["request_future"] r, error_type = get_response(request_future=future, error_type=error_type, social_network=social_network, @@ -180,7 +180,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): pass if error_type == "message": - error = data.get(social_network).get("errorMsg") + error = net_info["errorMsg"] # Checks if the error message is in the HTML if not error in r.text: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) @@ -201,7 +201,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): exists = "no" elif error_type == "response_url": - error = data.get(social_network).get("errorUrl") + error = net_info["errorUrl"] # Checks if the redirect url is the same as the one defined in data.json if not error in r.url: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) From 28f023a339bed165714a8e049460717f9bf77a50 Mon Sep 17 00:00:00 2001 From: cclauss Date: Sun, 30 Dec 2018 23:39:08 +0100 Subject: [PATCH 45/95] Use dict.get() on optional parameters --- sherlock.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sherlock.py b/sherlock.py index 76b26610..3b6dcdbd 100644 --- a/sherlock.py +++ b/sherlock.py @@ -119,7 +119,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_site['url_main'] = data.get(social_network).get("urlMain") # Don't make request if username is invalid for the site - regex_check = net_info["regexCheck"] + regex_check = net_info.get("regexCheck") if regex_check and re.search(regex_check, username) is None: # No need to do the check at the site: this user name is not allowed. print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) @@ -180,7 +180,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): pass if error_type == "message": - error = net_info["errorMsg"] + error = net_info.get("errorMsg") # Checks if the error message is in the HTML if not error in r.text: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) @@ -201,7 +201,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): exists = "no" elif error_type == "response_url": - error = net_info["errorUrl"] + error = net_info.get("errorUrl") # Checks if the redirect url is the same as the one defined in data.json if not error in r.url: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) From cf7ec54f232d4d274e0c865a16f9032d43fda769 Mon Sep 17 00:00:00 2001 From: Chris Blumentritt Date: Sun, 30 Dec 2018 23:52:23 -0600 Subject: [PATCH 46/95] Script can now load the data.json file when invoked from different directory If the script is run from a different directory than the where it resides then it would fail to load because it could not find data.json. fixes #47 --- sherlock.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index f59d28b1..3e6073f4 100644 --- a/sherlock.py +++ b/sherlock.py @@ -90,7 +90,8 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): } # Load the data - with open("data.json", "r", encoding="utf-8") as raw: + script_directory = os.path.dirname(os.path.realpath(__file__)) + with open(script_directory + "/data.json", "r", encoding="utf-8") as raw: data = json.load(raw) # Allow 1 thread for each external service, so `len(data)` threads total From 3200eb3ad52b98d2e52b94b00348285bbfeb7f07 Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 31 Dec 2018 07:27:54 +0100 Subject: [PATCH 47/95] Run isort on the imports [isort](https://github.com/timothycrosley/isort/blob/develop/README.rst) cleans up the imports for readability. --- sherlock.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sherlock.py b/sherlock.py index f59d28b1..ff639c02 100644 --- a/sherlock.py +++ b/sherlock.py @@ -5,15 +5,17 @@ This module contains the main logic to search for usernames at social networks. """ -import requests -from concurrent.futures import ThreadPoolExecutor -from requests_futures.sessions import FuturesSession +import csv import json import os +import platform import re -import csv from argparse import ArgumentParser, RawDescriptionHelpFormatter -import platform +from concurrent.futures import ThreadPoolExecutor + +import requests + +from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" From 96c3ce762572bcbdf16b3e1bdc593ae2cdc14dfe Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 31 Dec 2018 07:40:05 +0100 Subject: [PATCH 48/95] Simplify print_error() --- sherlock.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sherlock.py b/sherlock.py index f59d28b1..18fb6305 100644 --- a/sherlock.py +++ b/sherlock.py @@ -28,10 +28,8 @@ def write_to_file(url, fname): def print_error(err, errstr, var, debug=False): - if debug: - print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err}") - else: - print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {var}") + err_or_var = err if debug else var + print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err_or_var}") def get_response(request_future, error_type, social_network, verbose=False): From c0ac0d9f9ddd215f87db735f44daf88f2c543871 Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 31 Dec 2018 07:44:27 +0100 Subject: [PATCH 49/95] Update sherlock.py --- sherlock.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 18fb6305..d72bb0f7 100644 --- a/sherlock.py +++ b/sherlock.py @@ -28,8 +28,7 @@ def write_to_file(url, fname): def print_error(err, errstr, var, debug=False): - err_or_var = err if debug else var - print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err_or_var}") + print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err if debug else var}") def get_response(request_future, error_type, social_network, verbose=False): From 05cbeb5c2c26a94d22d63bc08c1bcd075a864ba8 Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 31 Dec 2018 08:32:35 +0100 Subject: [PATCH 50/95] Add a shebang line: #! /usr/bin/env python3 --- sherlock.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sherlock.py b/sherlock.py index ff639c02..07ff719a 100644 --- a/sherlock.py +++ b/sherlock.py @@ -1,3 +1,5 @@ +#! /usr/bin/env python3 + """ Sherlock: Find Usernames Across Social Networks Module From 8090a96c5788108258276a7894ea162c6ca5e4b8 Mon Sep 17 00:00:00 2001 From: "Christopher K. Hoadley" Date: Mon, 31 Dec 2018 06:08:20 -0600 Subject: [PATCH 51/95] Fix merge problem in pull request #43. Previously, there was just one for loop that iterated thru all of the sites. But, with the addition of the parallel functionality, there are now two for loops. The dictionary changes were not done in the second loop, which caused bogus results. --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index f59d28b1..ec6a5196 100644 --- a/sherlock.py +++ b/sherlock.py @@ -143,7 +143,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_total[social_network] = results_site # Core logic: If tor requests, make them here. If multi-threaded requests, wait for responses - for social_network in data: + for social_network, net_info in data.items(): # Retrieve results again results_site = results_total.get(social_network) From ce536633315bdc1860c9815a033a389cb546af82 Mon Sep 17 00:00:00 2001 From: Chris Blumentritt Date: Mon, 31 Dec 2018 09:46:42 -0600 Subject: [PATCH 52/95] Use os.path.join to build file path for data file fixes #47 --- sherlock.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 3e6073f4..eea0ffa8 100644 --- a/sherlock.py +++ b/sherlock.py @@ -90,8 +90,8 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): } # Load the data - script_directory = os.path.dirname(os.path.realpath(__file__)) - with open(script_directory + "/data.json", "r", encoding="utf-8") as raw: + data_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data.json") + with open(data_file_path, "r", encoding="utf-8") as raw: data = json.load(raw) # Allow 1 thread for each external service, so `len(data)` threads total From b96da0b547616378bb698e27b09ee4d2e52e0687 Mon Sep 17 00:00:00 2001 From: Chris Blumentritt Date: Mon, 31 Dec 2018 14:53:27 -0600 Subject: [PATCH 53/95] Adding docker support --- .dockerignore | 4 ++++ Dockerfile | 6 ++++++ README.md | 17 +++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3214bcef --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.git/ +.vscode/ +*.txt +!/requirements.txt \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..ee118b97 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.7-alpine +RUN /sbin/apk add tor +COPY . /opt/sherlock/ +RUN /usr/local/bin/pip install -r /opt/sherlock/requirements.txt + +ENTRYPOINT ["python", "/opt/sherlock/sherlock.py"] \ No newline at end of file diff --git a/README.md b/README.md index 4b53cd84..015ac2dc 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,23 @@ optional arguments: For example, run ```python3 sherlock.py user123```, and all of the accounts found will be stored in a text file with the username (e.g ```user123.txt```). +## Docker Notes +If you have docker installed you can build an image and run this as a container. + +``` +docker build -t mysherlock-image . +``` + +Once the image is built sherlock can be invoked by running the following: + +``` +docker run --rm mysherlock-image user123 +``` + +The ```--rm``` flag is optional. It removes the container filesystem after running so you do not have a bunch of leftover container filesystem cruft. See https://docs.docker.com/engine/reference/run/#clean-up---rm + +One caveat is the text file that is created will only exist in the container so you will not be able to get at that. + ## License MIT License From 005e9591c126b62a0eef813df793ab3faa369537 Mon Sep 17 00:00:00 2001 From: Jon Ander Oribe Date: Wed, 2 Jan 2019 16:43:38 +0100 Subject: [PATCH 54/95] Adding a counter of resources At the end of the process we can see how many results we have --- sherlock.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 7bc98371..00c5659b 100644 --- a/sherlock.py +++ b/sherlock.py @@ -22,6 +22,7 @@ from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" __version__ = "2018.12.30" +amount=0 # TODO: fix tumblr @@ -30,6 +31,9 @@ def write_to_file(url, fname): with open(fname, "a") as f: f.write(url + "\n") +def final_score(amount, fname): + with open(fname, "a") as f: + f.write("Total: "+str(amount) + "\n") def print_error(err, errstr, var, debug=False): print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err if debug else var}") @@ -75,6 +79,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): response_text: Text that came back from request. May be None if there was an HTTP error when checking for existence. """ + global amount fname = username + ".txt" if os.path.isfile(fname): @@ -185,9 +190,11 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): error = net_info.get("errorMsg") # Checks if the error message is in the HTML if not error in r.text: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" + amount=amount+1 else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) exists = "no" @@ -195,9 +202,11 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): elif error_type == "status_code": # Checks if the status code of the response is 404 if not r.status_code == 404: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" + amount=amount+1 else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) exists = "no" @@ -206,9 +215,11 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): error = net_info.get("errorUrl") # Checks if the redirect url is the same as the one defined in data.json if not error in r.url: + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" + amount=amount+1 else: print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) exists = "no" @@ -228,7 +239,8 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_total[social_network] = results_site print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) - + + final_score(amount, fname) return results_total From de31a311eff42e6f7ba0298fad2ec0f5c8155f0c Mon Sep 17 00:00:00 2001 From: Jonas Tranberg Date: Wed, 2 Jan 2019 20:45:49 +0100 Subject: [PATCH 55/95] Added 9GAG support --- data.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data.json b/data.json index 3a7529ac..8228645d 100644 --- a/data.json +++ b/data.json @@ -99,6 +99,11 @@ "urlMain": "https://imgur.com/", "errorType": "status_code" }, + "9GAG": { + "url": "https://9gag.com/u/{}", + "urlMain": "https://9gag.com/", + "errorType": "status_code" + }, "Flipboard": { "url": "https://flipboard.com/@{}", "urlMain": "https://flipboard.com/", From 508eb88724dbe20dedf07dc00527ad4f32c93a77 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Thu, 3 Jan 2019 03:57:28 +0330 Subject: [PATCH 56/95] Add 9gag --- sites.md | 191 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 96 insertions(+), 95 deletions(-) diff --git a/sites.md b/sites.md index ea47a81e..0b29301f 100644 --- a/sites.md +++ b/sites.md @@ -1,95 +1,96 @@ -## List Of Supported Sites (94 Sites In Total!) -1. [Instagram](https://www.instagram.com/) -2. [Twitter](https://www.twitter.com/) -3. [Facebook](https://www.facebook.com/) -4. [YouTube](https://www.youtube.com/) -5. [Blogger](https://www.blogger.com/) -6. [Google Plus](https://plus.google.com/) -7. [Reddit](https://www.reddit.com/) -8. [Pinterest](https://www.pinterest.com/) -9. [GitHub](https://www.github.com/) -10. [Steam](https://steamcommunity.com/) -11. [Vimeo](https://vimeo.com/) -12. [SoundCloud](https://soundcloud.com/) -13. [Disqus](https://disqus.com/) -14. [Medium](https://medium.com/) -15. [DeviantART](https://deviantart.com) -16. [VK](https://vk.com/) -17. [About.me](https://about.me/) -18. [Imgur](https://imgur.com/) -19. [Flipboard](https://flipboard.com/) -20. [SlideShare](https://slideshare.net/) -21. [Fotolog](https://fotolog.com/) -22. [Spotify](https://open.spotify.com/) -23. [MixCloud](https://www.mixcloud.com/) -24. [Scribd](https://www.scribd.com/) -25. [Patreon](https://www.patreon.com/) -26. [BitBucket](https://bitbucket.org/) -27. [Roblox](https://www.roblox.com/) -28. [Gravatar](http://en.gravatar.com/) -29. [iMGSRC.RU](https://imgsrc.ru/) -30. [DailyMotion](https://www.dailymotion.com/) -31. [Etsy](https://www.etsy.com/) -32. [CashMe](https://cash.me/) -33. [Behance](https://www.behance.net/) -34. [GoodReads](https://www.goodreads.com/) -35. [Instructables](https://www.instructables.com/) -36. [Keybase](https://keybase.io/) -37. [Kongregate](https://www.kongregate.com/) -38. [LiveJournal](https://www.livejournal.com/) -39. [VSCO](https://vsco.co/) -40. [AngelList](https://angel.co/) -41. [last.fm](https://last.fm/) -42. [Dribbble](https://dribbble.com/) -43. [Codecademy](https://www.codecademy.com/) -44. [Pastebin](https://pastebin.com/) -45. [Foursquare](https://foursquare.com/) -46. [Gumroad](https://www.gumroad.com/) -47. [Newgrounds](https://newgrounds.com) -48. [Wattpad](https://www.wattpad.com/) -49. [Canva](https://www.canva.com/) -50. [Trakt](https://www.trakt.tv/) -51. [500px](https://500px.com/) -52. [BuzzFeed](https://buzzfeed.com/) -53. [TripAdvisor](https://tripadvisor.com/) -54. [Contently](https://contently.com/) -55. [Houzz](https://houzz.com/) -56. [BLIP.fm](https://blip.fm/) -57. [HackerNews](https://news.ycombinator.com/) -58. [Codementor](https://www.codementor.io/) -59. [ReverbNation](https://www.reverbnation.com/) -60. [Designspiration](https://www.designspiration.net/) -61. [Bandcamp](https://www.bandcamp.com/) -62. [ColourLovers](https://www.colourlovers.com/) -63. [IFTTT](https://www.ifttt.com/) -64. [Ebay](https://www.ebay.com/) -65. [Slack](https://slack.com) -66. [Trip](https://www.trip.skyscanner.com/) -67. [Ello](https://ello.co/) -68. [HackerOne](https://hackerone.com/) -69. [Tinder](https://tinder.com/) -70. [We Heart It](https://weheartit.com/) -71. [Flickr](https://www.flickr.com/) -72. [WordPress](https://wordpress.com) -73. [Unsplash](https://unsplash.com/) -74. [Pexels](https://www.pexels.com/) -75. [devRant](https://devrant.com/) -76. [MyAnimeList](https://myanimelist.net/) -77. [ImageShack](https://imageshack.us/) -78. [Badoo](https://badoo.com/) -79. [MeetMe](https://www.meetme.com/) -80. [Quora](https://www.quora.com/) -81. [Pixabay](https://pixabay.com/) -82. [Giphy](https://giphy.com/) -83. [Taringa](https://taringa.net/) -84. [SourceForge](https://sourceforge.net/) -85. [Codepen](https://codepen.io/) -86. [Launchpad](https://launchpad.net/) -87. [Photobucket](https://photobucket.com/) -88. [Wix](https://wix.com/) -89. [Crevado](https://crevado.com/) -90. [Carbonmade](https://carbonmade.com/) -91. [Coroflot](https://coroflot.com/) -92. [Jimdo](https://jimdosite.com/) -93. [Repl.it](https://repl.it/) -94. [Issuu](https://issuu.com/) +## List Of Supported Sites (95 Sites In Total!) +1. [Instagram](https://www.instagram.com/) +2. [Twitter](https://www.twitter.com/) +3. [Facebook](https://www.facebook.com/) +4. [YouTube](https://www.youtube.com/) +5. [Blogger](https://www.blogger.com/) +6. [Google Plus](https://plus.google.com/) +7. [Reddit](https://www.reddit.com/) +8. [Pinterest](https://www.pinterest.com/) +9. [GitHub](https://www.github.com/) +10. [Steam](https://steamcommunity.com/) +11. [Vimeo](https://vimeo.com/) +12. [SoundCloud](https://soundcloud.com/) +13. [Disqus](https://disqus.com/) +14. [Medium](https://medium.com/) +15. [DeviantART](https://deviantart.com) +16. [VK](https://vk.com/) +17. [About.me](https://about.me/) +18. [Imgur](https://imgur.com/) +19. [9GAG](https://9gag.com/) +20. [Flipboard](https://flipboard.com/) +21. [SlideShare](https://slideshare.net/) +22. [Fotolog](https://fotolog.com/) +23. [Spotify](https://open.spotify.com/) +24. [MixCloud](https://www.mixcloud.com/) +25. [Scribd](https://www.scribd.com/) +26. [Patreon](https://www.patreon.com/) +27. [BitBucket](https://bitbucket.org/) +28. [Roblox](https://www.roblox.com/) +29. [Gravatar](http://en.gravatar.com/) +30. [iMGSRC.RU](https://imgsrc.ru/) +31. [DailyMotion](https://www.dailymotion.com/) +32. [Etsy](https://www.etsy.com/) +33. [CashMe](https://cash.me/) +34. [Behance](https://www.behance.net/) +35. [GoodReads](https://www.goodreads.com/) +36. [Instructables](https://www.instructables.com/) +37. [Keybase](https://keybase.io/) +38. [Kongregate](https://www.kongregate.com/) +39. [LiveJournal](https://www.livejournal.com/) +40. [VSCO](https://vsco.co/) +41. [AngelList](https://angel.co/) +42. [last.fm](https://last.fm/) +43. [Dribbble](https://dribbble.com/) +44. [Codecademy](https://www.codecademy.com/) +45. [Pastebin](https://pastebin.com/) +46. [Foursquare](https://foursquare.com/) +47. [Gumroad](https://www.gumroad.com/) +48. [Newgrounds](https://newgrounds.com) +49. [Wattpad](https://www.wattpad.com/) +50. [Canva](https://www.canva.com/) +51. [Trakt](https://www.trakt.tv/) +52. [500px](https://500px.com/) +53. [BuzzFeed](https://buzzfeed.com/) +54. [TripAdvisor](https://tripadvisor.com/) +55. [Contently](https://contently.com/) +56. [Houzz](https://houzz.com/) +57. [BLIP.fm](https://blip.fm/) +58. [HackerNews](https://news.ycombinator.com/) +59. [Codementor](https://www.codementor.io/) +60. [ReverbNation](https://www.reverbnation.com/) +61. [Designspiration](https://www.designspiration.net/) +62. [Bandcamp](https://www.bandcamp.com/) +63. [ColourLovers](https://www.colourlovers.com/) +64. [IFTTT](https://www.ifttt.com/) +65. [Ebay](https://www.ebay.com/) +66. [Slack](https://slack.com) +67. [Trip](https://www.trip.skyscanner.com/) +68. [Ello](https://ello.co/) +69. [HackerOne](https://hackerone.com/) +70. [Tinder](https://tinder.com/) +71. [We Heart It](https://weheartit.com/) +72. [Flickr](https://www.flickr.com/) +73. [WordPress](https://wordpress.com) +74. [Unsplash](https://unsplash.com/) +75. [Pexels](https://www.pexels.com/) +76. [devRant](https://devrant.com/) +77. [MyAnimeList](https://myanimelist.net/) +78. [ImageShack](https://imageshack.us/) +79. [Badoo](https://badoo.com/) +80. [MeetMe](https://www.meetme.com/) +81. [Quora](https://www.quora.com/) +82. [Pixabay](https://pixabay.com/) +83. [Giphy](https://giphy.com/) +84. [Taringa](https://taringa.net/) +85. [SourceForge](https://sourceforge.net/) +86. [Codepen](https://codepen.io/) +87. [Launchpad](https://launchpad.net/) +88. [Photobucket](https://photobucket.com/) +89. [Wix](https://wix.com/) +90. [Crevado](https://crevado.com/) +91. [Carbonmade](https://carbonmade.com/) +92. [Coroflot](https://coroflot.com/) +93. [Jimdo](https://jimdosite.com/) +94. [Repl.it](https://repl.it/) +95. [Issuu](https://issuu.com/) From b8737bd75f7d36cb02caa473ad6a90732306edfd Mon Sep 17 00:00:00 2001 From: theodosisathanasakis <32517114+theodosisathanasakis@users.noreply.github.com> Date: Thu, 3 Jan 2019 03:25:27 +0200 Subject: [PATCH 57/95] Add "regexCheck" for Facebook and Flipboard Facebook from: https://www.facebook.com/help/409473442437047 but I don't know how to handle this requirement: "They can't contain generic terms or extensions (.com, .net)". Flipboard from: https://flipboard.helpshift.com/a/flipboard/?s=managing-your-account&f=help-with-username-issues&p=web --- data.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data.json b/data.json index 8228645d..0ff11370 100644 --- a/data.json +++ b/data.json @@ -14,7 +14,8 @@ "Facebook": { "url": "https://www.facebook.com/{}", "urlMain": "https://www.facebook.com/", - "errorType": "status_code" + "errorType": "status_code", + "regexCheck": "^([a-zA-Z0-9.]){5,}$" }, "YouTube": { "url": "https://www.youtube.com/{}", @@ -108,7 +109,8 @@ "url": "https://flipboard.com/@{}", "urlMain": "https://flipboard.com/", "errorType": "message", - "errorMsg": "loading" + "errorMsg": "loading", + "regexCheck": "^([a-zA-Z0-9_]){1,15}$" }, "SlideShare": { "url": "https://slideshare.net/{}", From aae6de80174116326a23bb66bf2cf9c564b694f3 Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:09:29 +0100 Subject: [PATCH 58/95] Added YouPic.com --- data.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data.json b/data.json index 8228645d..db228e47 100644 --- a/data.json +++ b/data.json @@ -537,5 +537,11 @@ "url": "https://issuu.com/{}", "urlMain": "https://issuu.com/", "errorType": "status_code" + }, + "YouPic": { + "url": "https://youpic.com/photographer/{}", + "urlMain": "https://youpic.com/", + "errorType": "message", + "errorMsg": "404" } } From 2a633f52e29bb1bdf83467506e8bd87a178580fa Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:10:24 +0100 Subject: [PATCH 59/95] Updated sites --- sites.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sites.md b/sites.md index 0b29301f..45f55987 100644 --- a/sites.md +++ b/sites.md @@ -1,4 +1,4 @@ -## List Of Supported Sites (95 Sites In Total!) +## List Of Supported Sites (96 Sites In Total!) 1. [Instagram](https://www.instagram.com/) 2. [Twitter](https://www.twitter.com/) 3. [Facebook](https://www.facebook.com/) @@ -94,3 +94,4 @@ 93. [Jimdo](https://jimdosite.com/) 94. [Repl.it](https://repl.it/) 95. [Issuu](https://issuu.com/) +96. [YouPic](https://youpic.com/) From a0c64ca5829d8ad2a86acd2cb0b59bdfd495ea25 Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:22:11 +0100 Subject: [PATCH 60/95] Added House-Mixes.com --- sites.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sites.md b/sites.md index 45f55987..cda9e0dd 100644 --- a/sites.md +++ b/sites.md @@ -1,4 +1,4 @@ -## List Of Supported Sites (96 Sites In Total!) +## List Of Supported Sites (97 Sites In Total!) 1. [Instagram](https://www.instagram.com/) 2. [Twitter](https://www.twitter.com/) 3. [Facebook](https://www.facebook.com/) @@ -95,3 +95,4 @@ 94. [Repl.it](https://repl.it/) 95. [Issuu](https://issuu.com/) 96. [YouPic](https://youpic.com/) +97. [House-Mixes.com](https://www.house-mixes.com/) From f46a21b57a902de0f9a799d71e65be331e4f8d24 Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:22:27 +0100 Subject: [PATCH 61/95] Added House-Mixes.com --- data.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/data.json b/data.json index db228e47..e490c3d8 100644 --- a/data.json +++ b/data.json @@ -541,7 +541,12 @@ "YouPic": { "url": "https://youpic.com/photographer/{}", "urlMain": "https://youpic.com/", + "errorType": "status_code" + }, + "House-Mixes.com": { + "url": "https://www.house-mixes.com/profile/{}", + "urlMain": "https://www.house-mixes.com/", "errorType": "message", - "errorMsg": "404" + "errorMsg": "Profile Not Found" } } From 74768ce5925436326123c4c14eee5cda0b8ee7df Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:46:50 +0100 Subject: [PATCH 62/95] Added YouPic, Letterboxd, House-Mixes.com and Coderwall --- sites.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sites.md b/sites.md index cda9e0dd..7f75d9cf 100644 --- a/sites.md +++ b/sites.md @@ -1,4 +1,4 @@ -## List Of Supported Sites (97 Sites In Total!) +## List Of Supported Sites (99 Sites In Total!) 1. [Instagram](https://www.instagram.com/) 2. [Twitter](https://www.twitter.com/) 3. [Facebook](https://www.facebook.com/) @@ -96,3 +96,5 @@ 95. [Issuu](https://issuu.com/) 96. [YouPic](https://youpic.com/) 97. [House-Mixes.com](https://www.house-mixes.com/) +98. [Letterboxd](https://letterboxd.com/) +99. [Coderwall](https://coderwall.com/) From 678061495793e0f9eb3a7232d76b7b169cded64b Mon Sep 17 00:00:00 2001 From: Czechball Date: Thu, 3 Jan 2019 03:47:27 +0100 Subject: [PATCH 63/95] Added YouPic, Letterboxd, House-Mixes and Coderwall --- data.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/data.json b/data.json index e490c3d8..616a8678 100644 --- a/data.json +++ b/data.json @@ -548,5 +548,17 @@ "urlMain": "https://www.house-mixes.com/", "errorType": "message", "errorMsg": "Profile Not Found" + }, + "Letterboxd": { + "url": "https://letterboxd.com/{}", + "urlMain": "https://letterboxd.com/", + "errorType": "message", + "errorMsg": "Sorry, we can’t find the page you’ve requested." + }, + "Coderwall": { + "url": "https://coderwall.com/{}", + "urlMain": "https://coderwall.com/", + "errorType": "message", + "errorMsg": "404! Our feels when that url is used" } } From adb31c5ee7fc9abbf7cadc0476e1654831a67708 Mon Sep 17 00:00:00 2001 From: jenchieh Date: Thu, 3 Jan 2019 17:50:48 +0800 Subject: [PATCH 64/95] Organize image directory => screenshot. --- README.md | 2 +- preview.png => screenshot/preview.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename preview.png => screenshot/preview.png (100%) diff --git a/README.md b/README.md index 015ac2dc..2368af15 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > Find usernames across [social networks](https://github.com/sdushantha/sherlock/blob/master/sites.md)

- +

diff --git a/preview.png b/screenshot/preview.png similarity index 100% rename from preview.png rename to screenshot/preview.png From 5711ebb47227ae6ddefc6218f8e9d11403ab297b Mon Sep 17 00:00:00 2001 From: jenchieh Date: Thu, 3 Jan 2019 18:17:50 +0800 Subject: [PATCH 65/95] Add Colorama to one of the requirements. --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 38b19679..5a98de85 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ requests requests_futures -torrequest \ No newline at end of file +torrequest +colorama \ No newline at end of file From 43f4e893f320b6aebcc9cbad8fc9123cffaa81e9 Mon Sep 17 00:00:00 2001 From: jenchieh Date: Thu, 3 Jan 2019 18:18:04 +0800 Subject: [PATCH 66/95] Initialize Colorama and import it. --- sherlock.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sherlock.py b/sherlock.py index 00c5659b..c8cb9293 100644 --- a/sherlock.py +++ b/sherlock.py @@ -14,6 +14,7 @@ import platform import re from argparse import ArgumentParser, RawDescriptionHelpFormatter from concurrent.futures import ThreadPoolExecutor +from colorama import Fore,Back,Style,init import requests @@ -190,7 +191,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): error = net_info.get("errorMsg") # Checks if the error message is in the HTML if not error in r.text: - + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" @@ -202,7 +203,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): elif error_type == "status_code": # Checks if the status code of the response is 404 if not r.status_code == 404: - + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" @@ -215,7 +216,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): error = net_info.get("errorUrl") # Checks if the redirect url is the same as the one defined in data.json if not error in r.url: - + print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) exists = "yes" @@ -239,12 +240,15 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): results_total[social_network] = results_site print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) - + final_score(amount, fname) return results_total def main(): + # Colorama module's initialization. + init() + version_string = f"%(prog)s {__version__}\n" + \ f"{requests.__description__}: {requests.__version__}\n" + \ f"Python: {platform.python_version()}" From e6256e70a6e30f2b859279db87fe9de71529bc4a Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Thu, 3 Jan 2019 17:44:35 +0330 Subject: [PATCH 67/95] Bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 00c5659b..ada28cee 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "2018.12.30" +__version__ = "2018.01.03" amount=0 # TODO: fix tumblr From ec58514b24de84d04b7c09e1e86be37e90ca4c0c Mon Sep 17 00:00:00 2001 From: Beam OP Date: Thu, 3 Jan 2019 17:32:08 +0100 Subject: [PATCH 68/95] Updated DailyMotion errorType --- data.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data.json b/data.json index 616a8678..cd52edf1 100644 --- a/data.json +++ b/data.json @@ -167,8 +167,7 @@ "DailyMotion": { "url": "https://www.dailymotion.com/{}", "urlMain": "https://www.dailymotion.com/", - "errorType": "message", - "errorMsg": "Page not found" + "errorType": "status_code" }, "Etsy": { "url": "https://www.etsy.com/shop/{}", From e51da5b712b167fba8cf46368bf277c3fe2372e1 Mon Sep 17 00:00:00 2001 From: Jonas Tranberg Date: Thu, 3 Jan 2019 18:39:43 +0100 Subject: [PATCH 69/95] If only status_code is needed use HEAD instead of GET request to avoid body download --- .gitignore | 6 ++++++ sherlock.py | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1fc7d196..d1db3b66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,12 @@ # Virtual Environment venv/ +# vscode +.vscode/ + +# Python +__pycache__/ + # Jupyter Notebook .ipynb_checkpoints *.ipynb diff --git a/sherlock.py b/sherlock.py index dd38b26e..617a2c1b 100644 --- a/sherlock.py +++ b/sherlock.py @@ -130,8 +130,14 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): url = net_info["url"].format(username) results_site["url_user"] = url + # If only the status_code is needed don't download the body + if net_info["errorType"] == 'status_code': + request_method = session.head + else: + request_method = session.get + # This future starts running the request in a new thread, doesn't block the main thread - future = session.get(url=url, headers=headers) + future = request_method(url=url, headers=headers) # Store future in data for access later net_info["request_future"] = future From f984b447c012736b74b2714db21a449ab3a12004 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 01:05:12 +0330 Subject: [PATCH 70/95] Run "isort" --- sherlock.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index c8cb9293..46d2a950 100644 --- a/sherlock.py +++ b/sherlock.py @@ -14,10 +14,9 @@ import platform import re from argparse import ArgumentParser, RawDescriptionHelpFormatter from concurrent.futures import ThreadPoolExecutor -from colorama import Fore,Back,Style,init import requests - +from colorama import Back, Fore, Style, init from requests_futures.sessions import FuturesSession from torrequest import TorRequest From f4c490d25e1d25adce8aace5458f0b3e7892d272 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 01:16:55 +0330 Subject: [PATCH 71/95] run "isort" --- sherlock.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sherlock.py b/sherlock.py index 617a2c1b..fd1a8704 100644 --- a/sherlock.py +++ b/sherlock.py @@ -5,15 +5,16 @@ This module contains the main logic to search for usernames at social networks. """ -import requests -from concurrent.futures import ThreadPoolExecutor -from requests_futures.sessions import FuturesSession +import csv import json import os +import platform import re -import csv from argparse import ArgumentParser, RawDescriptionHelpFormatter -import platform +from concurrent.futures import ThreadPoolExecutor + +import requests +from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" From ffbd5b3d4b07d46a027210b5e43af01907b6b4c4 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 01:20:59 +0330 Subject: [PATCH 72/95] Fix versioning --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index d9302cb2..93ea0296 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "2018.01.04" +__version__ = "0.1.0" amount=0 # TODO: fix tumblr From 3fc75aea3f5656d99ded1e535a3ff1b2a9ac3852 Mon Sep 17 00:00:00 2001 From: Andrew Yatzkan Date: Thu, 3 Jan 2019 17:35:28 -0600 Subject: [PATCH 73/95] Added wikipedia.org --- data.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data.json b/data.json index 616a8678..f392440b 100644 --- a/data.json +++ b/data.json @@ -560,5 +560,11 @@ "urlMain": "https://coderwall.com/", "errorType": "message", "errorMsg": "404! Our feels when that url is used" + }, + "Wikipedia": { + "url": "https://www.wikipedia.org/wiki/User:{}", + "urlMain": "https://www.wikipedia.org/", + "errorType": "message", + "errorMsg": "If a page was recently created here, it may not be visible yet because of a delay in updating the database" } } From ab99ee016e28ba0535e2056767332410b819daf6 Mon Sep 17 00:00:00 2001 From: Andrew Yatzkan Date: Thu, 3 Jan 2019 17:44:24 -0600 Subject: [PATCH 74/95] Made .txt file case insensitive --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 93ea0296..2f5ea07d 100644 --- a/sherlock.py +++ b/sherlock.py @@ -80,7 +80,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): there was an HTTP error when checking for existence. """ global amount - fname = username + ".txt" + fname = username.lower() + ".txt" if os.path.isfile(fname): os.remove(fname) From 2d50409428259d0b291ef33a279021645b0c690a Mon Sep 17 00:00:00 2001 From: Andrew Yatzkan Date: Thu, 3 Jan 2019 18:04:52 -0600 Subject: [PATCH 75/95] Changed error code from 404 to not 2XX --- sherlock.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 2f5ea07d..513c737e 100644 --- a/sherlock.py +++ b/sherlock.py @@ -206,8 +206,8 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): exists = "no" elif error_type == "status_code": - # Checks if the status code of the response is 404 - if not r.status_code == 404: + # Checks if the status code of the response is 2XX + if not r.status_code >= 300 or r.status_code < 200: print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) write_to_file(url, fname) From df1f35bc88a2d68ce57c22bfd840d7c056f43eba Mon Sep 17 00:00:00 2001 From: Jen-Chieh Date: Fri, 4 Jan 2019 13:17:23 +0800 Subject: [PATCH 76/95] Use Colorama for better readability. --- sherlock.py | 89 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 66 insertions(+), 23 deletions(-) diff --git a/sherlock.py b/sherlock.py index 93ea0296..0d976395 100644 --- a/sherlock.py +++ b/sherlock.py @@ -36,7 +36,11 @@ def final_score(amount, fname): f.write("Total: "+str(amount) + "\n") def print_error(err, errstr, var, debug=False): - print(f"\033[37;1m[\033[91;1m-\033[37;1m]\033[91;1m {errstr}\033[93;1m {err if debug else var}") + print(Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.RED + f" {errstr}" + + Fore.YELLOW + f" {err if debug else var}") def get_response(request_future, error_type, social_network, verbose=False): @@ -84,9 +88,16 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): if os.path.isfile(fname): os.remove(fname) - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Removing previous file:\033[1;37m {}\033[0m".format(fname)) + print((Style.BRIGHT + Fore.GREEN + "[" + + Fore.YELLOW + "*" + + Fore.GREEN + "] Removing previous file:" + + Fore.WHITE + " {}").format(fname)) - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Checking username\033[0m\033[1;37m {}\033[0m\033[1;92m on: \033[0m".format(username)) + print((Style.BRIGHT + Fore.GREEN + "[" + + Fore.YELLOW + "*" + + Fore.GREEN + "] Checking username" + + Fore.WHITE + " {}" + + Fore.GREEN + " on:").format(username)) # A user agent is needed because some sites don't # return the correct information since they think that @@ -129,7 +140,11 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): regex_check = net_info.get("regexCheck") if regex_check and re.search(regex_check, username) is None: # No need to do the check at the site: this user name is not allowed. - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Illegal Username Format For This Site!".format(social_network)) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:" + + Fore.YELLOW + " Illegal Username Format For This Site!").format(social_network)) results_site["exists"] = "illegal" else: # URL of user on site (if it exists) @@ -197,24 +212,38 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): # Checks if the error message is in the HTML if not error in r.text: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.GREEN + "+" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:").format(social_network), url) write_to_file(url, fname) exists = "yes" amount=amount+1 else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:" + + Fore.YELLOW + " Not Found!").format(social_network)) exists = "no" elif error_type == "status_code": # Checks if the status code of the response is 404 if not r.status_code == 404: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.GREEN + "+" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:").format(social_network), url) write_to_file(url, fname) exists = "yes" amount=amount+1 else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:" + + Fore.YELLOW + " Not Found!").format(social_network)) exists = "no" elif error_type == "response_url": @@ -222,16 +251,27 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): # Checks if the redirect url is the same as the one defined in data.json if not error in r.url: - print("\033[37;1m[\033[92;1m+\033[37;1m]\033[92;1m {}:\033[0m".format(social_network), url) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.GREEN + "+" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:").format(social_network), url) write_to_file(url, fname) exists = "yes" amount=amount+1 else: - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Not Found!".format(social_network)) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:" + + Fore.YELLOW + " Not Found!").format(social_network)) exists = "no" elif error_type == "": - print("\033[37;1m[\033[91;1m-\033[37;1m]\033[92;1m {}:\033[93;1m Error!".format(social_network)) + print((Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + " {}:" + + Fore.YELLOW + " Error!").format(social_network)) exists = "error" # Save exists flag @@ -244,7 +284,10 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): # Add this site's results into final dictionary with all of the other results. results_total[social_network] = results_site - print("\033[1;92m[\033[0m\033[1;77m*\033[0m\033[1;92m] Saved: \033[37;1m{}\033[0m".format(username+".txt")) + print((Style.BRIGHT + Fore.GREEN + "[" + + Fore.YELLOW + "*" + + Fore.GREEN + "] Saved: " + + Fore.WHITE + "{}").format(username+".txt")) final_score(amount, fname) return results_total @@ -252,7 +295,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): def main(): # Colorama module's initialization. - init() + init(autoreset=True) version_string = f"%(prog)s {__version__}\n" + \ f"{requests.__description__}: {requests.__version__}\n" + \ @@ -292,16 +335,16 @@ def main(): args = parser.parse_args() # Banner - print( -"""\033[37;1m .\"\"\"-. -\033[37;1m / \\ -\033[37;1m ____ _ _ _ | _..--'-. -\033[37;1m/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"` -\033[37;1m\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\ -\033[37;1m ___) | | | | __/ | | | (_) | (__| < '-`) =|-. -\033[37;1m|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-. -\033[37;1m .'`-._ `.\ | J / -\033[37;1m / `--.| \__/\033[0m""") + print(Fore.WHITE + Style.BRIGHT + +""" .\"\"\"-. + / \\ + ____ _ _ _ | _..--'-. +/ ___|| |__ ___ _ __| | ___ ___| |__ >.`__.-\"\"\;\"` +\___ \| '_ \ / _ \ '__| |/ _ \ / __| |/ / / /( ^\\ + ___) | | | | __/ | | | (_) | (__| < '-`) =|-. +|____/|_| |_|\___|_| |_|\___/ \___|_|\_\ /`--.'--' \ .-. + .'`-._ `.\ | J / + / `--.| \__/""") if args.tor or args.unique_tor: print("Warning: some websites might refuse connecting over TOR, so note that using this option might increase connection errors.") From 3b5263c5bdf0f1a70e3d5371d99fff51d5633a99 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 11:02:19 +0330 Subject: [PATCH 77/95] Add Wikipedia --- sherlock.py | 2 +- sites.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sherlock.py b/sherlock.py index 513c737e..d73ab5d5 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.0" +__version__ = "0.1.1" amount=0 # TODO: fix tumblr diff --git a/sites.md b/sites.md index 7f75d9cf..2a6ea425 100644 --- a/sites.md +++ b/sites.md @@ -1,4 +1,4 @@ -## List Of Supported Sites (99 Sites In Total!) +## List Of Supported Sites (100 Sites In Total!) 1. [Instagram](https://www.instagram.com/) 2. [Twitter](https://www.twitter.com/) 3. [Facebook](https://www.facebook.com/) @@ -98,3 +98,4 @@ 97. [House-Mixes.com](https://www.house-mixes.com/) 98. [Letterboxd](https://letterboxd.com/) 99. [Coderwall](https://coderwall.com/) +100. [Wikipedia](https://www.wikipedia.org/) From af2de2380e4f922390c9c4a9ef70e783d071fd0d Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 11:40:28 +0330 Subject: [PATCH 78/95] Add to docker hub --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 2368af15..d66a6921 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,12 @@ The ```--rm``` flag is optional. It removes the container filesystem after runn One caveat is the text file that is created will only exist in the container so you will not be able to get at that. + +Or you can simply use docker to run `sherlock`: +``` +docker run theyahya/sherlock user123 +``` + ## License MIT License From 287305a12ca74c133c397dd3065c50727831547d Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 11:42:00 +0330 Subject: [PATCH 79/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index d73ab5d5..007980ed 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.1" +__version__ = "0.1.2" amount=0 # TODO: fix tumblr From 30eb9c76ec7e5941ae38311602bf4799d198f4f6 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 11:51:07 +0330 Subject: [PATCH 80/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 007980ed..f33c1d41 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.2" +__version__ = "0.1.3" amount=0 # TODO: fix tumblr From 459fb29be6ad78edd77de20e293d6f82e79bde6a Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 13:15:17 +0330 Subject: [PATCH 81/95] Fix "Docker notes" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d66a6921..afc43bd3 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ The ```--rm``` flag is optional. It removes the container filesystem after runn One caveat is the text file that is created will only exist in the container so you will not be able to get at that. -Or you can simply use docker to run `sherlock`: +Or you can simply use "Docker Hub" to run `sherlock`: ``` docker run theyahya/sherlock user123 ``` From f7f36b51376d84f2f7bbb9568caeac06412d12ac Mon Sep 17 00:00:00 2001 From: theodosisathanasakis <32517114+theodosisathanasakis@users.noreply.github.com> Date: Thu, 3 Jan 2019 13:39:33 +0200 Subject: [PATCH 82/95] Install packages for linux The script downloads the packages that are necessary for the sherlock.py. It is an automated procedure instead of the instructions in the README.md. It contains some packages that are not in README but I couldn't run "pip3 install -r requirements.txt" without them. It is for linux, I don't know if it works on something else. I believe it is useful! --- install_packages.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 install_packages.sh diff --git a/install_packages.sh b/install_packages.sh new file mode 100644 index 00000000..cd6eb25d --- /dev/null +++ b/install_packages.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# install python3 if not exist +sudo apt-get install python3 + +# install the all the necessery packages and requirements +sudo apt-get install python3-pip +sudo pip3 install --upgrade setuptools +sudo pip3 install -r requirements.txt + + From de1d0d643cb01a0956dc1678e1476dcd84fc105a Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Fri, 4 Jan 2019 19:34:00 +0330 Subject: [PATCH 83/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 5a0145d0..8d412afe 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.3" +__version__ = "0.1.5" amount=0 # TODO: fix tumblr From f1f356d9d220fe0606128ee2d1d887f77c4c2bc0 Mon Sep 17 00:00:00 2001 From: theodosisathanasakis Date: Fri, 4 Jan 2019 19:56:17 +0200 Subject: [PATCH 84/95] Right regex for Facebook-new --- data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data.json b/data.json index 0ff11370..cbebd700 100644 --- a/data.json +++ b/data.json @@ -15,7 +15,7 @@ "url": "https://www.facebook.com/{}", "urlMain": "https://www.facebook.com/", "errorType": "status_code", - "regexCheck": "^([a-zA-Z0-9.]){5,}$" + "regexCheck": "^a-zA-Z0-9{4,49}(? Date: Sat, 5 Jan 2019 00:45:54 +0330 Subject: [PATCH 85/95] Add CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..f54c40d5 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at yahya.arbabi@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq From 5f4df01e97be115e8b55e41f5a6e6060414da5a3 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Sat, 5 Jan 2019 01:19:15 +0330 Subject: [PATCH 86/95] Fix the lenght --- data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data.json b/data.json index cbebd700..018b65b9 100644 --- a/data.json +++ b/data.json @@ -15,7 +15,7 @@ "url": "https://www.facebook.com/{}", "urlMain": "https://www.facebook.com/", "errorType": "status_code", - "regexCheck": "^a-zA-Z0-9{4,49}(? Date: Sat, 5 Jan 2019 01:20:41 +0330 Subject: [PATCH 87/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 8d412afe..d3345ad6 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.5" +__version__ = "0.1.6" amount=0 # TODO: fix tumblr From 2791e1553aed311f0de1cba3949e11ae61afdd80 Mon Sep 17 00:00:00 2001 From: nil0x42 Date: Fri, 4 Jan 2019 23:59:58 +0000 Subject: [PATCH 88/95] Fix incorrect file save notification When username argument was provided with uppercase chars, sherlock said that file was saved into "UserName.txt" instead of "username.txt" (fname var) --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index d3345ad6..972e8e46 100644 --- a/sherlock.py +++ b/sherlock.py @@ -287,7 +287,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): print((Style.BRIGHT + Fore.GREEN + "[" + Fore.YELLOW + "*" + Fore.GREEN + "] Saved: " + - Fore.WHITE + "{}").format(username+".txt")) + Fore.WHITE + "{}").format(fname)) final_score(amount, fname) return results_total From e0c5bebb5c3ebc3e839193ca4535c722992db95f Mon Sep 17 00:00:00 2001 From: QuantumSheep Date: Sat, 5 Jan 2019 02:52:32 +0100 Subject: [PATCH 89/95] Add Mastodon to the site list --- data.json | 5 +++++ sites.md | 1 + 2 files changed, 6 insertions(+) diff --git a/data.json b/data.json index ba367ac7..250f3940 100644 --- a/data.json +++ b/data.json @@ -567,5 +567,10 @@ "urlMain": "https://www.wikipedia.org/", "errorType": "message", "errorMsg": "If a page was recently created here, it may not be visible yet because of a delay in updating the database" + }, + "Mastodon": { + "url": "https://mstdn.io/@{}", + "urlMain": "https://mstdn.io", + "errorType": "status_code" } } diff --git a/sites.md b/sites.md index 2a6ea425..b5bb2889 100644 --- a/sites.md +++ b/sites.md @@ -99,3 +99,4 @@ 98. [Letterboxd](https://letterboxd.com/) 99. [Coderwall](https://coderwall.com/) 100. [Wikipedia](https://www.wikipedia.org/) +101. [Mastodon](https://mstdn.io/) From 5e87e416d3a18a4392f1919e4a80633025d1822c Mon Sep 17 00:00:00 2001 From: Nathanael Demacon Date: Sat, 5 Jan 2019 02:56:54 +0100 Subject: [PATCH 90/95] Add a / at the end of urlMain link --- data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data.json b/data.json index 250f3940..1fedcea4 100644 --- a/data.json +++ b/data.json @@ -570,7 +570,7 @@ }, "Mastodon": { "url": "https://mstdn.io/@{}", - "urlMain": "https://mstdn.io", + "urlMain": "https://mstdn.io/", "errorType": "status_code" } } From cc22d88679ec171e71593020502d5af51040281e Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Sat, 5 Jan 2019 09:38:28 +0330 Subject: [PATCH 91/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 972e8e46..161213e0 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.6" +__version__ = "0.1.7" amount=0 # TODO: fix tumblr From f27d2b2aed83bc350e6daa33b89c5baf96883967 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Sat, 5 Jan 2019 11:14:13 +0330 Subject: [PATCH 92/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index 161213e0..8f0035dd 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.7" +__version__ = "0.1.8" amount=0 # TODO: fix tumblr From 0f937d361a7752d805d0b2ed008f170471bf9827 Mon Sep 17 00:00:00 2001 From: QuantumSheep Date: Sat, 5 Jan 2019 13:26:05 +0100 Subject: [PATCH 93/95] Remove useless end of anchor in README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index afc43bd3..7985691a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@

-

## Installation From 2e4b3a32ad3a1b63b10c5db3529218c41458c4d6 Mon Sep 17 00:00:00 2001 From: QuantumSheep Date: Sat, 5 Jan 2019 13:43:03 +0100 Subject: [PATCH 94/95] Stops opening the file at each writing --- sherlock.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/sherlock.py b/sherlock.py index 8f0035dd..ec2e4652 100644 --- a/sherlock.py +++ b/sherlock.py @@ -27,13 +27,14 @@ amount=0 # TODO: fix tumblr -def write_to_file(url, fname): - with open(fname, "a") as f: - f.write(url + "\n") +def open_file(fname): + return open(fname, "a") -def final_score(amount, fname): - with open(fname, "a") as f: - f.write("Total: "+str(amount) + "\n") +def write_to_file(url, f): + f.write(url + "\n") + +def final_score(amount, f): + f.write("Total: "+str(amount) + "\n") def print_error(err, errstr, var, debug=False): print(Style.BRIGHT + Fore.WHITE + "[" + @@ -170,6 +171,9 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): # Add this site's results into final dictionary with all of the other results. results_total[social_network] = results_site + # Open the file containing account links + f = open_file(fname) + # Core logic: If tor requests, make them here. If multi-threaded requests, wait for responses for social_network, net_info in data.items(): @@ -216,7 +220,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): Fore.GREEN + "+" + Fore.WHITE + "]" + Fore.GREEN + " {}:").format(social_network), url) - write_to_file(url, fname) + write_to_file(url, f) exists = "yes" amount=amount+1 else: @@ -235,7 +239,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): Fore.GREEN + "+" + Fore.WHITE + "]" + Fore.GREEN + " {}:").format(social_network), url) - write_to_file(url, fname) + write_to_file(url, f) exists = "yes" amount=amount+1 else: @@ -255,7 +259,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): Fore.GREEN + "+" + Fore.WHITE + "]" + Fore.GREEN + " {}:").format(social_network), url) - write_to_file(url, fname) + write_to_file(url, f) exists = "yes" amount=amount+1 else: @@ -289,7 +293,7 @@ def sherlock(username, verbose=False, tor=False, unique_tor=False): Fore.GREEN + "] Saved: " + Fore.WHITE + "{}").format(fname)) - final_score(amount, fname) + final_score(amount, f) return results_total From 0d857030939da206f9e6098241ff80d869ae80e8 Mon Sep 17 00:00:00 2001 From: Yahya SayadArbabi Date: Sat, 5 Jan 2019 16:57:31 +0330 Subject: [PATCH 95/95] bump version --- sherlock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sherlock.py b/sherlock.py index ec2e4652..d7c07884 100644 --- a/sherlock.py +++ b/sherlock.py @@ -21,7 +21,7 @@ from requests_futures.sessions import FuturesSession from torrequest import TorRequest module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.1.8" +__version__ = "0.1.9" amount=0 # TODO: fix tumblr

- +