From 8ace6f551bd27ce9162db15559496706cdde60b1 Mon Sep 17 00:00:00 2001 From: Boyan Date: Sat, 7 Dec 2024 22:38:43 +0100 Subject: [PATCH] Ver 1 --- .gitignore | 2 + README.md | 22 +++++- src/app.py | 144 +++++++++++++++++++++++++++++++++++ src/manage_users.py | 98 ++++++++++++++++++++++++ src/static/css/listing.css | 46 +++++++++++ src/static/css/style.css | 83 ++++++++++++++++++++ src/static/css/textForm.css | 65 ++++++++++++++++ src/static/img/cry.png | Bin 0 -> 47050 bytes src/static/img/favicon.png | Bin 0 -> 70697 bytes src/static/js/validLink.js | 77 +++++++++++++++++++ src/templates/base.html | 51 +++++++++++++ src/templates/form.html | 28 +++++++ src/templates/login.html | 21 +++++ src/templates/nohack.html | 15 ++++ src/templates/redirects.html | 54 +++++++++++++ src/templates/success.html | 11 +++ src/test.py | 28 +++++++ 17 files changed, 744 insertions(+), 1 deletion(-) create mode 100644 src/app.py create mode 100644 src/manage_users.py create mode 100644 src/static/css/listing.css create mode 100644 src/static/css/style.css create mode 100644 src/static/css/textForm.css create mode 100644 src/static/img/cry.png create mode 100644 src/static/img/favicon.png create mode 100644 src/static/js/validLink.js create mode 100644 src/templates/base.html create mode 100644 src/templates/form.html create mode 100644 src/templates/login.html create mode 100644 src/templates/nohack.html create mode 100644 src/templates/redirects.html create mode 100644 src/templates/success.html create mode 100644 src/test.py diff --git a/.gitignore b/.gitignore index 5d381cc..63371f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.db + # ---> Python # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/README.md b/README.md index ce7a021..1fe9167 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ # shortn +HTML/CSS/JS Framework Free ✅ • Lightweight ✅ • Functional ✅ • No plaintext passwords ✅ -Simple link shortener with flask \ No newline at end of file + +Simple link shortener built with flask. + +## Installation +```bash +git clone https://git.confest.im/boyan_k/shortn +pip install -r requirements.txt +``` + +## Usage +```bash +python app.py +``` + +## TODOs +- [x] basic UI (to add links) +- [x] basic auth for UI +- [x] sqlite3 to store links +- [ ] responsive? +- [ ] dockerize diff --git a/src/app.py b/src/app.py new file mode 100644 index 0000000..28210bf --- /dev/null +++ b/src/app.py @@ -0,0 +1,144 @@ +from flask import Flask, request, redirect, url_for, render_template, flash, session, jsonify +import sqlite3 +import os +from werkzeug.security import generate_password_hash, check_password_hash +import re + +app = Flask(__name__) +app.secret_key = 'your_secret_key' # Replace with a strong secret key + +# Database initialization +DATABASE = 'database.db' +if not os.path.exists(DATABASE): + raise FileNotFoundError(f"Database file not found. Run `python manage_users.py init` to create it.") + +def init_db(): + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute(''' + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL + ) + ''') + cursor.execute(''' + CREATE TABLE IF NOT EXISTS redirects ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + dest_link TEXT NOT NULL, + custom_link TEXT UNIQUE + ) + ''') + conn.commit() + +# Helper function to interact with the database +def query_db(query, args=(), one=False): + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute(query, args) + rv = cursor.fetchall() + conn.commit() + return (rv[0] if rv else None) if one else rv + +@app.route('/redirects', methods=['GET', 'POST']) +def redirects_list(): + if 'username' not in session: # Ensure the user is logged in + return redirect(url_for('login')) + + if request.method == 'POST': # Handle deletion + redirect_id = request.form.get('redirect_id') + if redirect_id: + query_db('DELETE FROM redirects WHERE id = ?', (redirect_id,)) + flash('Redirect deleted successfully!') + return redirect(url_for('redirects_list')) + + # Fetch all active redirects + redirects = query_db('SELECT id, dest_link, custom_link FROM redirects') + return render_template('redirects.html', redirects=redirects) + +@app.route('/') +def home(): + if 'username' in session: + return redirect(url_for('form')) + return redirect(url_for('login')) + +@app.route('/login', methods=['GET', 'POST']) +def login(): + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + user = query_db('SELECT * FROM users WHERE username = ?', (username,), one=True) + if user and check_password_hash(user[2], password): + session['username'] = username + return redirect(url_for('form')) + else: + flash('Invalid credentials') + return render_template('login.html') + +@app.route('/logout') +def logout(): + session.pop('username', None) + return redirect(url_for('login')) + +def verify_link(link:str) -> bool: + if not link.startswith('http://') and not link.startswith('https://'): + link = 'http://' + link + reg = r'^(https?:\/\/)(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})(:\d+)?(\/[a-zA-Z0-9@:%_\+.~#?&//=]*)?$' + return False if not re.match(reg, link) else True + +@app.route('/form', methods=['GET', 'POST']) +def form(): + if 'username' not in session: + return redirect(url_for('login')) + + if request.method == 'POST': + dest_link = request.form['dest_link'] + if not verify_link(dest_link): + flash('Invalid URL. Make sure it starts with http:// or https://') + return render_template('nohack.html') + + custom_link = request.form.get('custom_link', None) + + try: + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute('INSERT INTO redirects (dest_link, custom_link) VALUES (?, ?)', + (dest_link, custom_link)) + conn.commit() + flash('Redirect created successfully!') + return render_template('success.html', link=custom_link if custom_link else f"/r/{cursor.lastrowid}") + except sqlite3.IntegrityError: + flash('Custom link already exists. Try another.') + + # return render_template('form.html', + # return template with user logged in flag + return render_template('form.html', user_logged_in=True) + +@app.route('/r/') +def redirect_to_custom(custom_link): + with sqlite3.connect(DATABASE) as conn: + if result := query_db('SELECT dest_link FROM redirects WHERE custom_link = ?', (custom_link,), one=True): + # Redirect to external link + return redirect(result[0]) + else: + return 'Redirect not found', 404 + +# For testing purpose, use a method to create users +@app.route('/create_user', methods=['POST']) +def create_user(): + if request.method == 'POST': + username = request.form['username'] + password = generate_password_hash(request.form['password']) + + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + try: + cursor.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password)) + conn.commit() + return 'User created successfully!' + except sqlite3.IntegrityError: + return 'User already exists.' + +if __name__ == '__main__': + init_db() + app.run(debug=True) diff --git a/src/manage_users.py b/src/manage_users.py new file mode 100644 index 0000000..085b844 --- /dev/null +++ b/src/manage_users.py @@ -0,0 +1,98 @@ +import sqlite3 +import argparse +from werkzeug.security import generate_password_hash, check_password_hash +import getpass +import sys + +DATABASE = 'database.db' + +# Function to initialize the database (if not already done) +def init_db(): + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute(''' + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL + ) + ''') + cursor.execute(''' + CREATE TABLE IF NOT EXISTS redirects ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + dest_link TEXT NOT NULL, + custom_link TEXT UNIQUE + ) + ''') + conn.commit() + +# Function to add a new user +def add_user(username, password): + hashed_password = generate_password_hash(password) + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + try: + cursor.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, hashed_password)) + conn.commit() + print(f"User '{username}' created successfully.") + except sqlite3.IntegrityError: + print(f"Error: User '{username}' already exists.") + +# Function to delete a user +def delete_user(username): + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute('DELETE FROM users WHERE username = ?', (username,)) + conn.commit() + if cursor.rowcount > 0: + print(f"User '{username}' deleted successfully.") + else: + print(f"Error: User '{username}' not found.") + +# Function to list all users +def list_users(): + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + cursor.execute('SELECT id, username FROM users') + users = cursor.fetchall() + if users: + print("Users:") + for user in users: + print(f" - ID: {user[0]}, Username: {user[1]}") + else: + print("No users found.") + +# CLI argument parser +def main(): + parser = argparse.ArgumentParser(description="User management CLI for the Flask app.") + parser.add_argument('command', choices=['add', 'delete', 'list', 'init'], help="Command to execute.") + parser.add_argument('--username', help="Username of the user.") + args = parser.parse_args() + + # Execute the appropriate function based on the command + if args.command == 'init': + init_db() + print("Database initialized.") + elif args.command == 'add': + user = input("Enter username: ") + password = getpass.getpass("Enter password: ") + verify = getpass.getpass("Re-enter password: ") + if password != verify: + print("Error: Passwords do not match.") + sys.exit(1) + add_user(user, password) + elif args.command == 'delete': + if not args.username: + print("Error: --username is required for 'delete' command.") + else: + delete_user(args.username) + elif args.command == 'list': + try: + list_users() + except sqlite3.OperationalError: + print("Error: Database not initialized. Run 'init' command first.") + else: + print("Invalid command. Use --help for usage information.") + +if __name__ == '__main__': + main() diff --git a/src/static/css/listing.css b/src/static/css/listing.css new file mode 100644 index 0000000..a288f18 --- /dev/null +++ b/src/static/css/listing.css @@ -0,0 +1,46 @@ +table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + font-size: 16px; + text-align: left; +} + +table th, table td { + border: 1px solid #ddd; + padding: 8px; +} + +table th { + background-color: #f4f4f4; + color: #333; + text-align: center; +} + +table tr:nth-child(even) { + background-color: #f9f9f9; +} + +table tr:hover { + background-color: #f1f1f1; +} + +.delete-button { + background-color: #ff4d4d; + color: white; + border: none; + padding: 5px 10px; + border-radius: 4px; + cursor: pointer; + font-size: 14px; + transition: background-color 0.3s ease-in-out; + display: inline-block; + margin: 0 auto; +} +.delete-button:active { + background-color: #d93636; +} + +.delete-button:hover { + background-color: #d93636; +} diff --git a/src/static/css/style.css b/src/static/css/style.css new file mode 100644 index 0000000..cbe812c --- /dev/null +++ b/src/static/css/style.css @@ -0,0 +1,83 @@ +@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&display=swap'); +body { + /* Soft gray background color */ + background-color: #f5f5f5; + font-family: "Fira Code", sans-serif; + margin: 0; + padding: 0; + display:flex; + flex-direction: column; + min-height: 100vh; + margin:0; +} + +nav { + background-color: #333; + color: white; + text-align: center; + display: flex; + justify-content: space-between; + top:0; + position: sticky; + padding: 10px 0; + z-index: 1000; + +} + +nav a { + color: white; + text-decoration: none; + padding: 10px 20px; + font-size: 16px; + transition: background-color 0.3s ease-in-out; +} + +nav a:hover { + background-color: #444; /* Slightly lighter background on hover */ + border-radius: 5px; +} + +.container { + max-width: 1200px; /* Center the content */ + width: 100%; + margin: 0 auto; + padding: 20px; + flex: 1; +} + +.content { + background-color: white; + border-radius: 8px; + padding: 20px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + text-align: center; + margin-top: 20px; +} + +footer { + background-color: #333; + color: white; + text-align: center; + padding: 10px 0; + margin-top: 40px; + /* Put on very bottom without making absolute */ +} + +footer a { + color: #ffc107; + text-decoration: none; + font-weight: bold; +} + +footer a:hover { + text-decoration: underline; +} + + +.bad-wrong { + color: #ff4d4d; +} + +.success { + color: #28a745; +} \ No newline at end of file diff --git a/src/static/css/textForm.css b/src/static/css/textForm.css new file mode 100644 index 0000000..9e234e8 --- /dev/null +++ b/src/static/css/textForm.css @@ -0,0 +1,65 @@ +form { + background-color: #ffffff; + padding: 20px; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + max-width: 400px; + margin: 20px auto; + display: flex; + flex-direction: column; + gap: 15px; +} + +form h1 { + font-size: 24px; + margin-bottom: 10px; + color: #333; + text-align: center; +} + +form input[type="text"], form input[type="url"], form input[type="password"], form button { + width: 100%; + padding: 10px; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 5px; + box-sizing: border-box; +} + +form input[type="text"]:focus, form input[type="url"]:focus { + border-color: #007bff; + outline: none; + box-shadow: 0 0 4px rgba(0, 123, 255, 0.5); +} + +form button { + background-color: #007bff; + color: white; + border: none; + cursor: pointer; + font-weight: bold; + transition: background-color 0.3s ease-in-out; +} + +form button:hover { + background-color: #0056b3; +} + +form .error-message { + color: #ff4d4d; + font-size: 14px; + margin-top: -10px; +} + +form .success-message { + color: #28a745; + font-size: 14px; + margin-top: -10px; + text-align: center; +} + +form .optional { + font-size: 12px; + color: #777; + text-align: right; +} diff --git a/src/static/img/cry.png b/src/static/img/cry.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0d3c928fb2a2e1e624feb44a92ace37d61be74 GIT binary patch literal 47050 zcmZU4WmME((C}}IZjf&2E)fJ_DFtbiMp-&Ux^w9cL1|=3Q6!|1TBM~zX;?rh=@u6D z{Xg%g=bUFg%*?qT?wz=EXYQGMvFhBtLkMxvt4FUiJ z(9?RM_CKRw2>5@&>dGnz4F2=y4+sRBot^y;IC_H%ZAY;3%@uWxjGVt!$9_{R?b4Egr$+tJy@%F1d(V^e8q*}v->UY*F3 zvkPl$>+*_E0pqLh-@ota?Ne2IA}AzcXJ;239i5YtvxwP%JWkr#JBW;o1S_XkFYNt2 zI(_)AlEk$`0GUqc)<*Yb86p!*k~M|z+6g>LB#`w76f$8iKH`6zr?Jew*R|!nb_zOI80 z6Qox(zp)2W%K#TIf@~VWVT0?t#~`2Ykh%?U{v0T<4{!7kT!rbISpz-GTi!Z=v~0q@ z?}9$AfXu4FQNy5Dbs)7oyn%gi)=#iY8%U$*;Oq(t$gmuwT>w%}0~u9<9(sY3CqTO8Kj!{`Tnj)lF~l<`tjPYZu|<%=TaaQB zAQA|YiUi5WgS-ksia9Mqvw(P5UGFsLQ4+0xPi5DH$;uhXzZfL<9^x?eb#R4c{dG|7?u*WgAnRRr( z@ZhSj?U!!g$AHa?KR36QadpPwUo1!V*t$1Ab}y)`p3yh0se6|I_njX5)B+FR)*oLh zyMCZB$fx|Y+;?_E^Y$mBS<$a6?33|5ka-Vt;rxr_?{bbgAoWV|=z;8-9z6eFk{M(7 zY`#9Q&X643m2TVM4nQM1*Fbtr3~p^&?HiQlpG3@4q(1x<`m$n@HIe$U0{}^=eVluW zY|UNX=5ncvEo^)@gHcPJvZ$N~tNR6Kexg z>Q~lcxh8(cNE5L%R0~S0Ec8i|vh%B=JDX;|(1ft8v4oi{TkM~^mAj;;pItitj*r&m zPxmE`j*lOiNdrKGh=!`t3;%^ZiyhB(8Hy)$lnI>X<$HCBDl>)B6BPTx(QsZSy4~#BnW4D(*23Y)-{txPk$w+AN8!%>faH_e@Od~+@a44E~`^2U*SJFOsPQ%mdytoeoJ?Ohw(=FcPP^7%-yh*{sP(F z6tWL(wNAf={OG@3H7zB1bol4)!DjU04NDZZ=)Fsa{H5Y0bAXEGg8aGp9ALV4)3s49 zBvMy;$@|?nU;J9GE}jmu(Q_%+`bJ|cYWhZXgv$ZR*|CpeIow;Ua7t_9B#gi=%+OFL z-Nw^m$nR}9E7jyjXe|~RT4$drZ~9!-v+FT8-g~QS(H31ufTL53WQr@9E_5;%EHq81 zAKc+~xYnV!X-bgO^|_NhL3%h9kO0m5bD5*6a|-}pRm0)aIVF zVi7?H({Ib#oKy1U1Zly{M~|-#NkyJ#Hr_y}HMG)VyL7n5G=g;W0)HK`84Rh5J>dME z`*HN$x(`Y==lTxSd(|H%^@r=sz;=4(M=Ms+vS+uhsFjprl zj>G&T%zL&nKvxQ+G_!~jL32=e*{Oa1pE3!F8tj+Cllv(NW+CYm1xQI({Ac|9WroTN z#ys$Pr7oq{t)GJpC_lJ4mD3Bdsh*AamM_&^Jg7cB_3X*L7!;_DS)@+XjbnLny-w{J zYC*)(6YZYyLB&)TI++8HN`K;xmlMd%+sry%M#{B+H+ejdRFS zhe^ir^c}iAT`^=KIVYXZF&?lp-PvkE_QGzneuUi{-rv~h=|Sj~T+cXSLKPh5eS_vi z3mN9RY#LBiZJ9V;WY9a8T-YZmkKn0i)#&DL0(gw?U88df@?2s)lNY*^!?c5`x7xa_Ep(si%G70HQ(mZpS3pc)j-+`Bj-*)!~t;-lLf61Y4P$<|#yz(_=! z)&?;lH}DqC!go#8L;OiraN08Mh=8X#T5N59oS%BB|=2tv06ON#do+UGz<_ z0O-2J!5ekc=Mh-zQ#}~6m4u#?^Qr0a4;8XP@|&+W5sd|4HlB>Hh;YX9M_@~_*H;yn zYthH9rv!h%XgqC{kmiphqX%~0K~tr_lehN@`^2GvVb*jlDZTegIhDq5M&sG3@h}#! z7-{^8u3rijY_FpHmt4pwHv z6KA9*p7d;_a(TnXFUIXte5UDm=mfMWM>sNJiz>@zAt>j3Js?fm2BufCQ>FFrp34&v z)x;OYnl>tgBIgNx&AxE9k_6iv`RfS zLBwf7xhV2>>xDkKFW+wF@K-AWDvn7~Yif^Hu|dNivw5YN_Y`x)(Q!s( z8op81=q0MQ6~5%9Y>ugU`UFbCFthpsq!#Zd=+XHqDNE+3^3C6US1>i%&Qi&3kAK(B zG}A-YSJKoA_e+?}lI_$Ob+n<;X8}t&5Q?YZ$cF}J)Pt%be>c9qeaav2goj^rmv%6K z&mR4jWyId9eYfQL7$MtiA1qgPdu>uT+EXV?v8xY@684G+DPvMQAy(8VyHU2DFcfT?=QrQ0v_;tDn$O$=rtpe)Q)vBA_kWXl?|o!xwb}SOch*EKp$C5 zZ6+*f{hGzYl-`eY-a4uaZJ(^1p5n;KG<^_J22Ti|x=8aa#ooN-#>@QGa?eUctU#6d zp*5(@lzjW`<%~A&$ok#V$IRva7!A?B#}gf6WR0=v^Wt468s467imi0c3#YEi?|&&h zeYY0ST}RGTBQ`S-C?6MJ5pCbe*ja_9aa*N&mM(Mgczj(eew#A(K|f|9MAvWr;a+TLx<6cOB%hnpNX2W^dOxM%I9yK zo)>RR!(L5UKV^n{3;uxPR>44t37>4yTQZ1brI5Kz8&& z_xetz9Pij6`bcEyHhWEL0{`;v)0*{bxV_Zx%*Gkp-DeQ!D{A=GAl3kqZSN_gFzlPI z-s1Gmc*#!aGG^k>-R;+&yc><4OyBA( zKH$%FBdWUQb@{lPY?Eq4_VTKwQy;zhwRR)vGjivYxu3O>HRS!EqP>#(Wd6)r%TFpi z_1cUad4HWQk$dn&FfdkQ_4~G>P^_WbL}oVn7n#O1X_{=inWZy#6)F3S+YnD*^EBQA zT?Sty#+)nw6<4Sg~nK0$bdzc(mIorG4`9ybRs&z8$N#CDQVc9U$LtZq8} z;{xC14rMuWb|BPAo%V0@;P*g`^T2EKEV)#|9KjUno&^zU>u-t{o%up= z8ILdJ(EKp7sIuR3QyfGL#P$k0ZMH(SbCcxSl3M4PZ=8l^)F2oUA0lyQ^XPH#G6Oj4 zw1d92BHuDEQ}~mrQvKYfg(bx4H6WhR(-q1h@Ne>K9rEP+<-fOxFLIJa*?`1Qzb-Um z^5gb-mG0APb5!+B(+xNA*;alHCkgb8?2tiRnQKq5Xk4pbpFvjhBD!C0BEO`Om34s$ zd7kjH=2@=ph36YewtjbHuGCmZ`>8Al(nv6?L$hUAFufA@Iv&7 zYsYqVX5!pI@Y&5;E@0rK*ycNpTCnR&v7WLymNV-%)t-^Sq?0eLIOKz|s+h?=D)^ z)AIqu81o?{%ezeS#f|kqf%J0z8W9iNSB&!ZuHX%?w>{0>Igk?aNwpNWUb5?^F%g9J|}T>BNjYo=fBhAn^N~$ zy3>sZG}VAJ!43R{7t8K8K^v4}3tb&dl z#bdy06yg!XC%jb(DgSmhyb~trC)}nD(SPSLXe%Mpr2l0u#YWJ>IhU{0iGn?<;s+i_ zXE;n*zL)4LAJrF=x^;Y$Q_+gNI}q;sV@c@%M)kj{vaop4#>ZZpV+A)d_qk`4ElFBG z*_ztxqa3l0k(V!7gdNsuh3w+^x@VA|EmVR=+MXoH8Z3IqeR+9l^=I?uVZM%kw6+;t zzvoVkd|eIeymFLBnAwH}|6{LS&z(wds}qao?CfJTdVL2m!VY&%xo$2}y*1vGd8u_`-74=WITP{C!Ld=W2M>U$`dZ zuRV$5Q|6<_*Xo1UJeQiXP5ApkkLSPH&%QAsu&1(n4{CXSfJqw3`!R_Cle0|Ks|YJJ zQkNz-;1Bb>;|s8;tROfjwf*SAWwl7~7XESu`RAB}bY+Pto-5+D{VBO&VZ2!$>%uGR zu|^Qzza~)|z1gIMhLuP36LL$2?ld!ar!LbCj|CMj8tGotJ@2<3692FXkJj&h!pimo z+W+rvTcx7p)f3}DL#<>Z9m#r{vyXQP=U5Y|;1D;aj?XX0 zUgvXnn>ky0WWZBFC|53!dwx?-*ucmcCR+ct!+B&7Po5V>y z`8gP5i5`lyYJ1%2pjQv}@+Jr zalk!c|MxeK#1V24&-olzdh6g2D^n@KcroK?3!}=?x?v8wi0wYSfJxqs?c@&e_%-vq z8_!k?O_W)(E;z1Z^Yracq=*Z`)sdd)^b@X7lV40kU%j9b2U z;{@>lalmb8n8@*>b^8DX-P>`bO{;8cKQ6WSfqdT!8dadN+z3RBlT^UQ1YBD z;jkl+o6fiIR8ea>qgJB&;i6i2FA!O?J$TFT`hLWU*O&P(#_*|ckXOU#d zNr9ISgpzHBsGB|w=z{t_eVzK?owV5W*kUC8ERbJnxS8mOM?AC4xeg|<+BsJD;fSu> zl*_Mydqy)}%EIC~gpQFw!xT}ZV8O2o15U0fBl?E#cB86DErNNqo^<_*jBrTH#0~u}yic zkB{L2NLXj1V6!@~L)+A7R{o$^+wvp${?k5Zh9dTNZf}BPlrokX$0V0Mgm{_fJab>X z_OIBp?+`?K=nRb&`(BkF}+E zjg6jI2lU23D(mA%k7bW>{HHxcD_y#u3T5hCO2Ot5h%g-Olb!b5uU{qbpEw4z%YEK> zH^%s~py+F}89Q^uzgQiUdwHn>^9GL5#?%7HZtN@p%IzdqlyP(y5!luuibGio>05aj|g&DOOEZ5G{pPGYkJu|Jz&Hgz z2i)+9oNKEkqOxtY$AhoTaeIzu*?G2rpZSrJKll2r?(hhT-zJMY+2cV5vuG}{wBq^r z3SYimb_rYuKs*UIW+Z1*1d|elU78gghP(W7Rr}6-+d*3$wdX{CCG>ZkDp_t@Mk>jM zOk`=vK7@~_TiLhGNS`0Hgw0Mic<#E){V=A*po^ts!1YzdAnC6!G;Ggt5l1{KI!MV; zq#|=RFItm=eFN=<{1R^2P81oC3h#IxCZiKI)GT6*8SE9Sdq!imGU1T?Oh_H&VX!Iy z5@>YY*fdd$TwY&lI@WD}Yi#hM{HJSc^k=NW58r$JgeP))bDN^wiNK~iW`xET5?8} zl%a#sKa%cjZ<_hoB{CFCco7FAkKe4!@g>^e<9X#b@^TDv3=A{wH6`7?HZfPI!up|a z{0@hp*xuCduv-uuMCy)7+(frZfQOCPZT_bxn0k0~n$w!XUDjnAG=WzwJ$Mfj`KUqr zohl$GDw#?HvS(?LtH^W+>-^5qxjL5Z_@c6m60p9nHt?o(ieNqx^@P3cKb=CeHh4qr z0hoxr%&a2R1bJFh7#e(iyoSGtTO7_>wd}mrQLI@JnL~~vx(NFxf2+*3o%$LY>{G8&JdNsm+PKKF{rBh zrg272Qj@k$FNKIDzb;fjY%&ZPA8)O6uDtq?+;wmoWM^v4nRFPm`uH;6YutyvocKqZ zSM*O_GKCl_8GRTd?RNi+`cBy$f3B23VWe1Hxpu1Hc9qGQZkeUWAQ&kK{D zY|E#ndME$o#j~?ejZGPzt^R!~+s>97uo~KRYaQOxdc^b3UmB+)(tM3p>Q$x`y!wKs z>zTcxpy@%U6~hC7`*()=Mxmkc~|;G@B{TM1XND*ULZMhjsiP(Wg*gMncJMlf)-t%NY8 zj{{$=IekXD^{kDr7cO;F#@4hqEVK~Rey!G&d7wj|@vY<2*ZJQ;-uq%z+UYDWm#fy> zJomI4|8Ukft&LGz-g!i*OIMc9j3E6&9=w0X^Za+J?KAwkF1;lpW&7H9)LduN7HJ$T zahRRi)v!_={?#KEBGHb(gA%>%+k#9_P=g00LX-IH89_{0W6+IsKC{baMJ-QX%2p&z z{tHl$-ekqPfnui4Hi75fD|$8tHU(mvM9{+ zRQhLNDJYVB7^+W5fAtaXNQeM&*EW=@vUV9f{7`mIv^*n-jX5iU4*2CDF4p(*M+Lrt)DTsBTyNTBQI^?;@_avzmGp^0|``)>2_Ib-&MYDr-`wBwFydYd{vj@ zV^B^wzH27(eoY3-@WP69FVC+5LNv$!aJdaiJAd}aVaH?!RdTH(Y2ej<6R z3POewxQ#@10I*RgfYEbb4Laq;eq6n^nTiDy;JG~|ba_8S@>FtCnFP2jIrm90B?P^G zxOrPe^@<}l2R@Biq8Ybc51>GgjA&5-@3u~ku~Q)(A66`m&u4cOO-4xm+HsUXvw;>Z zbV>Vvwv!(f!lZ?*R^o>~I@+=AdIAHe<}_Tz(#^FCto|y4=EN?(xK)d50`8|(?=Lu& z)~8iLXC1ZKLqcTm7RypLisVhA)}=>Bx;v>JXEvsB5fg40OEKZ<{qgvd(4^gl25 z=PQ@nR_T~o3J9oRLaPVqwn*#EOcJ;E%UYG7U(WSQbJiTwWp4txIw_(Cj(kKjT3#Ma7CSkVAo_iSIIIbNXeIy#lUEAj#E zn|wlq-o6n5MChL9wKN%X)TZLZ-kcxypPa^=%N}IMgKrP|Kud?*1h>zjliTy&kCOMM zXT$vcuh^C1Lq$kXRANs+aio9Pfi6k}Es_;;3E8J+N5-=UXO3UpD#og?p)*J9H!()9 z8#y(MjdLuCKD)*4(AXcl9cuD?q)t2Z84v2{h*nij)_G6yxPK`uIGA4F6%-ssP&dwn z*rO0m1(OWH$G{XNNJ2(v@b)a$GMYmXcoR_0vsINKlq1d8@X0%(rbs7!LHt-4Fm`px z|Hds&s=ir&&_V}IOMGJJ<4lG?6%rt20XqCzc$#hGl^CiRw&Yd|lmi05JNVHE0|nZX zFG&#*t&*rCE(kGFFPk#t9((dOqj=YjZ-ho8-PZ1g)LQyOp3BnlN#3E%dzts_pspao z(5??lGw*T@6Tv9#_%>D&Un~$Q&eAKO9CeotuvSsPYLnTw0OT~fYn6?tXZ&(_q2MR3 zc$dtyRTavZD|gRVhW@$}P+85RbpV7ebzlTOftO-ylh>Q!JRXy7GUi z*Q<$aSI38qjd$HIX;)-xdW-HF$v}sikd(16i%T{?VF+sfXEUGX0>25p3!~F1TbSWo z&*QIcu6pe)l{Tvwm;|E199y(kjH$r^fuLJL+=eRfF6<@Pg%^pLRfEr$QfoLM8SHAlM%fAbdr8vS*Wj)_F&D#s>p`#~;g4>w?j3N@C1M{j} z&iPe8?A|O^SG~`TXKwmd%WFvgWzLrDg8u{x3EXhTC2vLb0@RLfOAGqdz?BwkiDeq;+y?et9{bZXj`6 zx!>H>uEJGjMi%<#LoFL9Kgo6iK$DIsv+2=XDSG}Un9!~45hAfA!bnCy^I^b$`nv=6 zAfyB_{SOtl30?RjN@O8Ii)k7h-V;l{Y9s*~&b(k1H@-3d0#|X!dTpMp>BI$%AH_En zs@-<^y584n(55nh;LIoT*b(+(=DQ&X#%-bRo(Je5b4$S!O7{?FKqi^Bxl*-A5-pk- zb@HF$m>Wp_T3Pe;{qYIM-gES78t!?#t(7#fI;#?JDMV(=ir$B2!;V^!KWLA{XY6Uf?8`{iY0o0J(@F?a%- z`vit0YB?8J8wHsk*+ShphSDp9*;gZ>K3jMgOAGFa6~DST0)=etBdCv}3?r)LKhiveVemGPjL@5sGTydfzi&8 zq@Akjd69l#clpuA)fDwe(3U1v5~AL(4y28LP=!?xx8rYj(zHv#iE{(K=bY7nh=xT!fU+zgDjR&zRD~*7fsoGj?@dBJbzdDDl|HsbE>g!6)+i`C(AyOO!Eyj%soAg!6Rkeh;m$Cnl}e<+JOKMn9Zw3ti{==Rbl zZ)AtE7#P@#JbS513C9Ca-N~Hj9jRtQm`ezlD9s7=4vrFn=aBzgr6gd6$Pl!%82@y1 zd;O&h6rHf6u|$vtHu<-dyZTw~wHK{f&E(V+pdeu znC{^&30LPM30#v{yhyXRpAX*H^QQzl@2qf3zRV{-IQhM}(XN)G?E zUdF0@lBC1nyi%nA0-*Lm>qbz%aOAKobt!uqzxj7i3iKU2>KEvw+!1Y$At(MUcCG*C zUpcq9T_G=dA>t#Rabu@v&}XZ zTF~LD?@V-6xVWssfTBT;_7jN(>64_xa?+o8M$C`0=C`m$nAHUiAN{nbD4=pQ=A=*k`PZEPq`DJtT8 zpmHIQ3$;AUz@4&(m*+WFfB|6l-p-tGBrUG)1s)+jzoGeR6oFvq$>kDRbX@J zb^WJ9xv&n_v+w|cBorb0ZN|Z9-eXo7WCOtd?h|6pbSqE!I5;Da2C+_OLDC=3i1X|KQXr%B%R#pQERue=JRZCBh$E-6>5kTbqoH5gXK!zkR1-t+l>9p%D{^ZVbH(r+LB> zwlN-!hkc0-C5d76m-{-3cee%=@g5gWHu!eLN28HQ|F$AVfSjwD|G4y)>b} z|L+=3p8m>bHf9HB?RxZLSj8QqDFB^lnasHKFkE{5(Ei3PR;bnE`ut&eWQa1% ziu7AAaiAJ&g%^N%Pr--qY>3b7v-G4@bKH0hVudBNT*dX2$HU_BnwZ6J`Y7T5un-FL z-^E&;qqzE$;@d{x%O9sl`9O`f}Og2{3403Ht3sR(T7n-K3R9%Z}gnFTZ3at{6LA^UUr zC}|@s4lsBD!VD%~!*9q~wI&FWUhv>MNr?|A9R#kax4F<;5x9Hl#d<^@BVUw+#~=IM zSyHd#eyJ%M8$fW)cP0G`!-tU_PksTe1GiBBu18|!$?qRt=X(o-Nk~D+Ng~WcO?Oo} zvLZ}`o;S3o_%1MmpMwN50cI$=#)vLD``X%SVSHQy1TY=x>LgZu z!#<>#0`3^j61^mI?SmEH;$L*$7+ivunEd8`J7%NR$^OeLhQKode~;ONTZJ!y`^zC+ zL3qf`2;Hu0froxh2kJIOwCGg=0axv;|MIfFu9%Q*b5DP=eqCMc-s z@L%FmxSPD?7Z&zu8}YV_awR<5Sa6SMi)`wb`OQr^PsC{TCg~tzaGR{w?qTigVIG9$ ztOGtd>ymMsb03~yJm&pnml=^QaV-E80LZgc=dck=qdhwKq@Y@nK45*;5;k1&Eo>}| z@U(^wSi)7edKHeH9M?z!t5Rvhf`fERHI+icS4%Gg7fES+KCT{Nb@l$shJBz?SVdMZ zm>8IA4D!?N21@30v*b6L3i5pS@E1<=j*Syo&3C7fV<1+Bb)c^>nBYJb5KBlHlldK% zM6LNFmKf~-cpV11Zi3gtxFC-1S%J%o3P4~;!_9E!y@BQTT`y@3)y z3cv*<Y+s$?5+=t;+D4wCHjl_Ad!~?c^KF`j72Lwjjy$bZ_jc`{K#emRo~ap%A|VsKQTmb5H`l zO2YgKUw~-tw(>m767LJ_*JijCBmLlb0q*6ETi5Ncl?C~Ub`w5CJP%Ms1h4~U?B^Dw zgm3}OXR#g_#W!L7=f%lw7=O|$HXh*Z-D>XjR9iv8@?m*ISOMsr+|ogcXW@C(Pa(4WE!LUO*1Eyt;du2+{QsH?!G~F-a00}p zd0t!ir9temrJ~F>#o2uldC7t_E@+x};-v%r@;zHyaLUPuzBMuzN^yH#V6_eV!G#%H zHb1~)M`|CsEHu2Htrq!>3uMc_Tuxc_Z3rt^B_Z4vM*bTQD`SW*8JM;}(jXH76siJ! zU_(|&k`QeJNPE@!lu@e_!x|&69@HAE(bG=ls zFX!w1rfYSf-Jc6YL+6ohfMNgyQ7H6;^-&8S0lQS*v(!W}?E>EvjtftQrCb>N3(;L8 ztGm&!2=l_wYo|65(DvcS7><#`ZC*5RA;05`Rzcqpi^`1XF5f!xk0G_`Y7 zSdSUA;^&JC6orZj3V%dxPhWNwMpuG1Rl>bEoBZ)OU1*++O_Rtc->o#nAxC zV0Ti!L|_eo#n47NJoyl;?Cq`oV_3t41d%{nc~GpA?|HrBpzLC!^3JAU93(?XL5P$G z0p5jSlKZeya}I8n=6$QXOCi7aHFg)0tnFKE3CU?ak-vc?WHRu8P;VHC{2MU`-lTiJ zY0B!kIypvuOrG2 zo&g`bsJ^(UE)aZ3v)L?S1uCtF{Eob{F1CD*v;<(rFtw4LY`mVNSM-x%JPPGel1WB@ zqE3&@nku6r5#XCIH;(KgSXqjUiV z0bIB)1o}jgR8NF(OC+QefyoN*?9^QyFBoUs{`M*ZX~)Y|+iCwN2K&p%AGrcLt3phq zin7NUV16I- zbXUOk#r}GDBPY~NQR=z!-i8|erKF@Qe}{v4>il2VABZajTu#XrP*Ow8c!BJlFkkoP zvsl6gtsed|whU49Tfx>8g? z8-Xcm@YcRJD>CHzXu1tJSac0odEEA?$A0JN$GV=gL?3JYq zjt&X=0Q!4BwF5{01nirBzV#Jay{bc1K}l5$2a4}ykCUN{fhz~XB&K@cJ8zDNOscf+ z2if=?UV25E7-9}=32(RCHWA|mwe|Du)y`ykAJWf0W1uLoEv({*{3Pe@dMo~J@v0}a z1Yt(D8+yV}L%b)Qvv}Qcz$@_rpCBKm5Op}&1p7pW3epWV65(>krTz?hOG;BZ$$*ys z1vo$;JA$)*K2@<$3Ow3MGL$HUz&QCfja7&_de}^gjwGc&l}?J`F-=U?Wb}qE>Mh2m zH?mub{_K($T3rog4*gH*vwz0lyPEE$Eh}18#$ln~Nb7=I+cd;nT;n4_$ZI+pe0E~J zCq1|rNRq$Wi|1&pg*yA~M#84YE(my=X8?!jmckaujvB~CGcuO4*5-x>&OIS=>xP1s0$J2l7F9e{ajb` zOtXHS1eh+W-?ZW4qLZ%GS4Yg_sRKkv=#&rGUoDaZWTOkohL&%<2vic0Sbvv&f8Z(o zZ4AbPX9Qa4wIWM_?xSOVycvI=3uxk?t<9tcjNq9KVIWtK!9f^$e8i8FvX5ch}yW6$ZE{=3Fq~yh3{9(M{<>dG@`>h>t9VYF5htjl1I0sL| zND2feX6>ydr42qtTmN*+w0y&tuM{BsZR16Mx6tllK{ChBRqM8jmkv)pLI!gHb-)9t zShWO#mgEfK*TNsD{JRxz7W7dkF~0q`d&0F;p!~1<02BMRA4Q%8NTT#MGPr-?8am;Y z^7{3TpX1r$QuR-JCP8G{j%N{!eP>)x8NE%0S|KA`BA5_Oi3Pjncs#!lQqFA*X!Gh5 zLUN@wdEWMiuU=j>HdTN5L`j4ZfO`RrB(shjhyKD0Gy|Hd3Z9t^Cij=9_1y$Gyq!ok@bBIC8C}~jC z6?-Xce_|@ELGA#!hPd?UeSq`sZmfUT?D{?zWIe+1@NhYg+zbPzKyp9b0!BK$|8w_5 z_2^mt6E_V;tfwiBG922W%RoW_bo#(SU;gCogx3Eco0zs2na4$|M=Cd8qpvpFN5WrPidXE~o3AMC$dZ|H_ zM#la$!dnCRGl5-9{0C51VJ#W>FeJ%ISyiw4I|xx#KhRBt0rYtPZPkZ?CRlaPHY(`+ z!trl%aCpXcb^*oIVh<^9a-kC2e`^duUNg*q9y2^l7Rr9@BMY#vQk<>r_b2Qg957Nr z+K}A50jc=+tjH_?C6q}cumgNSe##)p*@SytDVOl}=swVHk!c|g&tP(S&lWr}>1Gf6 zau1LFwovg7s|+}IL6yP?@j8_h7sDWTpC0i}tb5P@{#e*qhRcA)6yhl!e+&WU2??;7 zU+P5l4uPaC0pys1ht<1PY7I@%_OH#CS(XX3=6nQ>(d_K^Q18Qyuor7y4u!tE?=X+q zdE_~bI0Uzay)(4BZ%1BBu<&27E*vf(rb*ZtfeXCs(GN5 z30oMpX(<3_1J86H0ftCUB%JB~`(~A^WACKP9F zk-kUT9p5sghkotM&(Klfct*tzMbqlFl(*e5KXN4{HUpL_6D6Dn30jAG>7VQURVrbW zkQ_yI!PIbwjH;*_2qZnMyh|aJ;MVLWb{qc}cRH|3wHg8Zpn?6@-$y{M+Q z(2PgS2zc5Q5w){7r&$i0to+8KXI{Sb#LN1O`(IN-&Ah!wvLFAEF#EkY)Ab0JaZLD%uKd4S zLcq=QmD`i)nvg4yGnRlb7z3>h+yIE-9srycR8jy#hMkkj-U_Do9K==Hp$=f(xx3Ev za82`l(m4u*lB6SlB|F_}>hIsBA4R84kqg8Po97RT`2)uSY8TkA3dM$`-U#&j=-l5W zS^Iw+U3olI@7sRPnHgrrHuf!y>`RsqMdnaS$8&?f~j9lM|{#v z$$BO3Lzgp8K}oU$tzoS=K!q}9vb!6|MD<@+D*%ua`~Zjdl+liEY_~SMfOFBaKM5p| zd0iq^G}FF6?Vyc}u}p1}(}f6wfJKC-`7614LD{hN~H z=k^^u@St`32MsHk*w0N*52I9kQ_aYZ>Mju+9ZDOgjj=AxBjjc2dA(4kZ{q#t7hA-| z!7yvLcwrm#W##+3uZxyfrI1j9we_nfMsxBW8-(6-@i0pJ=kUmT??S;g06Qor3LDX` zB+j5QzIwqwFZ486+pw;pHIevrihIO@e(cgjwYCY@y*asF7z{hW``_k5)-B}V|NP>e zvlBHNp$x{C(w3IuKg+wE#%I92wz2oGjQ5a3ZX4~gIuv>e3fLdq#{UM+amH7S))t`h-$G1nV z$0xh}_(&UmB~)-}*KM~79Z7Q$?GZY#1wH*?mN6CLYu1g{CYi^?Sy#V1Xn_jJwmga5 zn+aJE5`q^IgOiYhR3lq)qsO>Hv0ZJcO&v!{f_F9j;e%lVlD4b377$Xm@M9_~h6P_} z_}1IsA9OGQ%?aP@vN`&_j_fT(hY3NuJ0b3R08UFYRkD+FFr-gQD)6fIJWq6p(!kF+ zchVLaTUCAjE{cEMd}xcp@x$ks(-9)B2h{0uBLvbe7FXY0nIJHRyHu|q-n5S6^jjZf zsbYC}{asJ~S&y`~?FxX(aiCk#t9Qw7?}E#&NTgHwY~=)MBiLIbVZ5EYdt4 zanbaNyxcZXN_3N7YR132%n*B^4{Z_oRf=rzoMDuji00V5Vs0yMH!4$}{k$G~cX#$@ zapS*->(*}z;-fUg7~^136+&Tk;?8eUkG23C-X+tl(8gMq_PJcY_MQF)&y9*|f8@km z#+L)K)k=@VV1=j{bg?Zl#(JcD|Iv_<XS z_8D6Dn*!JghJ%)qi6qjLQjW0bs>l=ZB|)TOA7oD$QH=j%k#^3^Wm=^hnjMahe+OJa zTKh*=JRo@GN3LyrYI%`>Qjxr5q31=EN4_&?aRTkd-O~+MjBo>*w@;1x6=akOCYfz0 zK~wf@ME_e7wJ<~@IT-7;a|4oC-1^9zahBWWatwLHyUzGV3gpg-BlA$@CWO-)e@wnG zF#f+o53=}mybCsacnRM~)5ALW(CaBtN(q5^ma*P;{(xE@;ZnNUo2C>M+9n(YrWi9J zoT|pD_CwQ#^Nh%t;^F)q)*356B1@oThSCFE;SBwls9XzFBl%zpT7n}z2HlVx-PaI( zGrD;xneH0_Y{k1>Ya0=^OnA&J$#`cWZBx~ zyT12*d9A~~QuBx5LOFyZ75;JT(W6I~E?o*m*1j$;FPGw1ckOI$r!kg(Z@q85zBm$S zkgoo%4bZ zU&yK+S?;J5MiXHklKA?CJym+&C$+Svi*kHruE3BLwObtBC~;2~Sfa?heJ}sIfo$PE z;R8-dfl}oHp-{nXyCCRkTKA6cfzNZ_<|{zZ#YTP~8c_If&Ej-fY(&~mA4c;Q!u|Fv8Lxrdn2o%b=O*gnCXOL( zj7XW52-GJ$Q=)=*R@q>!#(Ijwb|wR6f~-BRfuLHe-h{P54}`;&K)EVHpb+86{Pxv! zd|Xexyo^!C#Za1+{66KOZ0L=+m85Ic+WS=z=Hqv|ocmoT-?vQ~g_5yZm6Z>w$9b=4 zY2$B_?|#iR&*M^gC-61OJJjke$JD+bVjT?+4z|~V!y&gakBTE5j|{E%66k5f=j3iz z;-n?E(VRqu()dii$6$|?)%$k@xFmNx0r6;9b5nTU%jJczW`CuSNjMPk-3R>N}3 z-xpNAiv2uK7x>6q`E%2FVtnH8_^5P}11q1=#S>XV|7%|r%PduqTPOTP@Kg{iSKJk| zOpu~V(8XgG6XehxKpHhoc+!7FsZfSlO3epGhF9-yL1vKIw1GRhgmuP2PBlRS`c}{D zvudYL5z!3*Ui6c+3-nKY#WQbiU<|1S%rYs|)t@(Z<84`I&{^&TVafT>{L=a%L4g|b zy5-sQ%cbYH`}+Fo=InVCzem$#%MIvr>(rDX&0VPwc4Ls`<@idSxiE>w+t_(>mMdz3 zssSy5K=ZQL`@c&B*N$SnBjS!hJLp6Awuy<&eJkJUaO8sy1}+qX5U3DqPDx!^nvYo? zHny4RgFvvm@!>)r7W(Bqpd zt+^e}Kaow@tJ8_HF&S8=ijxau%J~w%MV=pAfEz%`h?<|GH7feuf(>j!SwXR`kI##Wnqo0 znFcTBMn#PJB1CGAs^`4tXgVjx`rpZ-a*98p_5h}HRz8^qmVYUR^BN}o5d2^R5HaFi z!XY>(Esg|3g82a{lZd+b6G_B^CnX!A@&=u2Oj%{3){4)E8Q4W(-7M@N(dksZAPENx79fl_(`?R4NV{iOEh`p z2X!}R&d-bfZEERXPcVg?o;>j{#0e{M?}EPjL^6(#4s;lf{d|MVi~DfQde;ju?^zkrSh0{8|?%lQVlJKK}!`^CsosiJ_ znKRy|dOQV+S)MkXvicgra~OLT3vA-Os7W(f6C)oE^UhkPG#}>)R>#SVrGpl3c58Fv z=znc-1%h9Z^^KZF-2Ewkr3B!nY_#{K^eHw-od_ zzQ%X_5uC{Az-5XSOB$(dOx={)Vo4|wa0iL&fjfW(_13x~bPHS_n~l_snXJY9ox!so zUEU+ZaTj$q|E^-bk;Hr?`0J)twW|V0@jes+YvVd5V+$V&sys1*ULQ#(xkB8Jc|KYr ztzy;zSt3zlY0LVY|9pwz70B;Faa5(lL$Qh(+~xiH51z`rIu;rHE#bx4N1~kqf50&i zV1ycf&o?+1VM=dtlOHKdiWT+x9L#9kNkD@xLcbdjhDha5u84>DgMA2tD{-F zZ;{j`S|kXhe@g1CKI|ZMLQbq)Bv^uZloO~*CleMW<83>z7t!PUy*3tDJ@3E`8}#|* zy>^(6J+>4$lrLpuQ3$hF80d&rxM6;Jt|#yqpZFh#2mu z6Yq0Zr7OLPU|MdLvo}gtuKiJV6C+ZL#FUwpTxbgso)kHXdNJDq;rkxF>qkyB75L6; zrSl_zCc;aY?Ruua7;v7TruYTACC7w88kdyAtO&YTZT0K9ZBSTSb-uKxXj+B8jI!Ky zb1j;Uw7F@NDm{xp9m|Fgp#6;r5+-R6!L_(^FN06-=h^uxMAl+jNmC`i2Z_v1wy$KS zxnk2#HhMBXZ?j}eU}!coRkZZa$Smieus_^q@h;H3X9p$_f>TqefNy!aV6=&mJKKXTL?g*%?tbFQj+H+h3^J8jl?GbUgOLHl z2GUUtCK<`Oywp<#olsZA&U{z#lGVrc9rp7SEF@Sor{P~Ae*M@!B0X+z@CUk8Sk=Ud zI>UEiIa3NmWU*S5ihU4U7W|WekHUv%2rs>T{QaoV`BmT9>(Ra;XQ-p9H!D|J_3N%y zp}ZsIzO5+H9zG5?h5z?lkhxp+l5?}`ITw=s8ze)m*YaaYMFvwu?LqwI)3xi-Z;}3} zJL*R2`5iAQo3@K$QCYs8qPMu-k4ztkJN!F!NP3?Wp63ebqjTlpE!GWYe4Q!cU~UiV zEFtx5MKz;rJ6HXa;V*|zmxP%48Amqo^mYN+L(7Nsh^3`$a1#~5744BlPWxw&L(awPT=yrtnM>W)rV!^TQ)yaH z*U5a<+(Hyv#c>99BcUMA9)vx{&usWXyUuc4S=ksbe#J{n5Z@-SK0F;jyQb5rtC@ ze~r>Ds0wo4e)G6xREiP~B(Pt%(YnOz%rT{;yJU+x%rT(t!jV)Bu>I=U?ug(WKB1g9 zy5KdYp+o<45(m5J3{(wAExhi(?;yd9mU9*!ZW$6a+ zn)+q_vzyO`6_XXH!50Dk^+p;HU=f4a0_I6@#L%P1# zYgd8~kZ=>EDT!7bh}xpHYwX|_EmMeDEY&(Ae8Y@_et=VidBS?}nnVooM$C*}KxkZF z)GLNth~03LPQyn7yU5z!X%&s#invwh1K9K(sfx^-cdYlz7i+M~rlPALGf11d`Nq(V z{ibxO@PCzx;m4T_ZzF>?78$8P3o-~~}u5>MvWF#*d;Z>rU$QyEOIx2eYEu2EX1kXPj-k@15!D8i!!8885^~c<9oh+w!^v;arQe4u z-q}iEef=`}X=7B9AZqXu)uCfz1!uD*k}KU@Kyk6g<1tO`4`Yifu5I&V4j?B8D7 z1=?ZW4gjV^3kjy@gv%UF_umJF#~%#3nkr=B3r`ll3{VtU{(K&@x@!zQMKc=s3g0$2 z!dJp$K_aha#4hU9UL;=Y{MbRCxbU+NEYu;ksLjsd2>h<8&OJ1vB&t!19H+Y0W+V87 zAcRX|oWpU}JLHkIN2Y7EBV5Vz78-xwTYu{RZqv~JEO~-=fxNA5(r_25jmB~xZm4qX z?&+~*g&p_1CKgqM-ayuW`*+Aq^Pf!!dj?S>FApIX#NI9W&Pn3DU*r%SSoSPzm@l2Dy{wTV4y|N=JAUL0jHdpMN+--0jOE(Gf7u$qL2Av1gF%n-&#!I&J$Q}y|C`;s`)3O zZ|JMbz&b(Yx>R|bQRwmJ3|j`WVus08$MJrO|w>Ckm;lY&lv;u!H_`}T%JGm3OHalkjMlR$6)jj?j9=L z)&v{m$sz7P$Q(Z>oRl+XJy+`-=8+sK+pHCn6#seJ`^fKXmpf5rHcIHCxkTZ;y@Yu? z*hwnOg?`#akRzlB78n)xn`oz(bUe~;{>Yd%-(e~v-PB{=d`MAiIN!$=MpisE^O^bB zO{+Cz$Oga0JBj28hcoF5echQA`07A<}qv7~JV7GOwSxxT*lq{WKa^#~9 z*#QWNdOxT5PVa)OgtFwYO&A%oTm30fC@duf>~*D}<@_gQJOiA|8;y$koU8areZ$X@ zhsh`}J=`+wi#5q&n;OarUduT@6rvFsY zn}f5kn>?X!+==M#P9RP#u2)7K^qEZC@cgAWJCiCkOKOB2F3!KZPppq8AQI)G*qED} z$U#yGQ3{$io)qO4Pb#g)-1pzUz3QC#XiVSNWNsla*UhDsnZKP@c5)=rjJ|h9BHQ`( zUXl)?LEpnHXv;2EFm9>6Tn-Js5tpy87GeK%rbS!W}-W`sVPxN`Ik_k()f+1!GZ#ml?m zbb4*1;^X!`txDN^`&Qgg9)M`k>qYyqxl5OhDZ?Q0|4(*jcr{+-8~gj$wV=nu+4gSpOEw#I;R=i*f93eLwVx^P0m&PF-TiN5yU(sx-2NwXkE)uCIx`0 z;D@8%mdTL~^~Vf!BTtKJa>&?0bd#vwP2UUq)m;dM1o}RDz|CE_(O=X6s5n6eo7FqO zmmsf)>eHcM4fk6?VxYO+@Iq3J$E>J@iFH@$59fwXU5rQ<(FcjrsHH+)N<2w|_-gDI z-i&@TzqVG{V{zNdF8pEi%W$>4XL)PczQWjbVVm#GH|RvzC76odFKepVtWBm1p`aVy zqd*iYC%cP32irltS6`SE5J?k?TEhaS2R15ewWeyL|7Hrcome>>4~(r4E=Ia`-e%+J zS}#(#`sCen#xCA&JH?qNvc0F@gwSd&#XNUmu4y z2|O?rIRMo+lPOTJ45dkOL5KtHfe-M^>3H@PZ1rQlQ6L;uR-ZcrWkUYq3EWeBqxf zb@?(}&eb#O!1Pn^#?AW${*`VPVm{LpD%mD=#5LG)>&7fO|q0a)%Z>kjud50u#WgAJl|aS)3+IXbv@d0K_Z` zUYkLPG}VbdKhc!gOo1N91#o}2X8aDZ)CTPLYlCV&H|xNU7c*jnrXSNWm#qV9K5L;} zJv}wj$f^CpE<#}Cgod^Tny>-+C~qgT$Y>Jf-=YqPi9WqE>|w2SWSnySJl{9}kZGGh8)q&c6`PD9k!aCD^NK zlcRR}gQvn!eSr*Rt6`jB)8Vj(9z^)10}Xe)$*_ zjbMbw)k-L}fexe;x5I%ZG1f20MyEK+0^mPv}I^2WOBm z;Q#d9ZYTH)d=a(~pzpqR#cDUq1mfs{1WzG~wh#p(9sq(eO`i7fwVV~#DJ{c;ge+k6 zK(9oTb0pD5L|>B|=IP}fx*n}zO%L{X?uWPqJ7!fRk#yeDtHQUy8PYiqxgj8rNeSdf z8g*g~eHqeA5RB=^0>~EIE%YHy*oT%EWUt5Mn$u=MkPTtaAHL>GF^zYVF0i)tx0s>2 zd^XeYJL}%l7ZPyG`GR#PPackgnT%*75}h#eHG7|+m+eDknbem<)gUig5`S$iXz8{v zLI@AEDM?Q5<9*g~@D{@8g#_)@+p6$ln9=H>r+0=Fy?ojH+joAp%-c{&rwVd5vls%` zQekxx`{j`sa#ZtsK_(>z4d8>;wkWP0D8K0<8FL=ky06HFzukxJ2Oe0doO!p7e=}a; z0PHDkz+Z;iyR`~B$mzskZaw#A9&l~?PXf8WqEn*!_~NGM_NcXaMMu-n)AW2x^U?o!8+VoAyA?H8p+F-oxex6jZ8%2!LH^QC!%bQdVMjB}5@p%-r~kH0HS@SDCXrBe zRE=YJ5y!UC&f1H9^3y{-ABO@7_p9~K)Rc?aK3UR;3-rujM3e|lW4g`oEp6oaUU2X2SZH)Z!Y(Z9eC^T=d)cb@!b5}l5{q*l4=5EIf86#uGF@140j za!=^{p_-zvcIk!RYEJ!(_;}q!E6k~RkH)>TN2X&BHh!3i&X4%G;$)Kg?FjuD$?kk7 z%6F*2SKI(E22PS(j;V2`6%Fg=Kc8nfcKIZy3LD(s@;eNo!1_3QKWU;l!3wv*lQ;LZ zqJ2EJYGKS^)qEv_clPhl6JMHZ7fz(xH*W1UuOJrgUT!WO-w!zZ0CT4YO`NFGYX0u! zfj88}U6s4Rsq9~MN*Mr04MJ~%85LPTA1zLCzUr~&_T8^suS}_ON_J@8C;CrO*DZ^= ziTU_HB^S{!`FK(B@*xT(nKEgzO=+5SDgP5}wPLw}v5WDPcin9;sQ1GJJLcISC49>F zzqM@;FaX_gb1Eu}`Km@Hi7T0gQyR&J2N|t5&@S_?>|Y@ewiCo*T86v{j5`biA43t$ ztl;*Ue_x6U3d7X)DK8fcM0Hl?asSB@`V6@tYQ&X@7d~uNDr?uKodl-OPNDLJZ?f%i z!n~tPK@D}CZTJGc4{inICn7|-t{!f;omX@ZHMbh!Ptk{YzEJDI=YFw4mGRYUI;&aMPUx7TK;16U5}PA zoQtcP@$q=M!Hv#Z3>&YT6O%6CY4HU*(wHX_kLaO2nR<_1&zf6k@E(u=a4d4A_GZp}NerWYiXsMj>qG zS9CP(y;)mN*>u|=QEm&k;l&k#9yKQrM-Jm><eblQbY4wsTy_b=0nnfy^Bd54bURuJZh=gzy$>}x6v2e< zwmeNF1jT`brQKM>cJxEMFjDlA6A@M&Hd7mQ0MO@eK1*yYPJx-KAhvsxhdf7WvY&Ys zb(Q3r|A~m8js1%?SrC(D&|fYLb}>{y12>h#d^g6Bl3fWi!)~D8s;MX7Gr}n1?M22S z)R!(p-AV7@@KKMmz{}#5uP^}f{o8{0XM%|KoO#yHAm=N1l#f+6uX-!ZT7ZJ|2{>e2BTZT6PMcVNlHEPlLUyuYvXmFEtd} z0tc>z2&MHN1APSwMu$q{-Z_HX!=IfH2&_NEqf~+(LaqQdX57Amp**&>0OTM)OKk-U zWr_g63@X9gHGqiOZ$P{ETv-~JTUl&-F|q0ci~_Ev&;bwG8fza= z-y599%Y{6N9F{6woQ@x}jZnfP5BKHg56ht5xq7p8^zn#d+U#H^&l=p>@(h|BPc;E` zWdYQ5QsIA+lK~3ipyCVR54B}fWe4b0vHL?C0;SMT0=k}hEG3yK2N^(hGojOrq7UGG z^|t%ci3x89^H+p>Xn{Ou9Mb}_0$bqEI}5-RUzO>~7OhJ79QgNg>4sylsJA5cwJrZM zK><*f48ieBfAXu;x(VUYl~Msc?NL(S{%OoJ|~=9ZV(=e zyHZLmf<9r(L41MNfdCTn@UA?6cH?*|03XUO^V&`pzuAC=ue@Aon3?HdwPrFjyWnL< zq*|mT75a?xl~Mw zq{f)G!^s2YF$3JL-Oa2pu(~XU!&Gqg#BLAf`}iJ0+?5@8P>TgpQ0Wc$?O+H0id;@^ z9FKyTcy~QI*Ai9-Ojji(&VQx-J$6FuWs{2D`Gs5m4$JV;?M8X0P?ZIeh6sv_7x04sI31qj$iTzT)7+__WPO9R}14UBx=o4@)0 z7Iwxbpd)*ga05N4#4SN3PuZ3WrfVlnU_aOb>|QbR_deH}{96(sG4-_ZPbAs<{UK)M zTgYYflxU%#)%+itF0X&uP=WVaoJ}d8n>YlhOzy%fZ?wT6s~L5K>6^|c7`QCc_8nn7 zATjx*@}(gf#ChdlptKp7`)|h8kCV^I z-A6%*cot0ww;PP*6{HeSO#A$>|?ir zU8xC^M|%~ZPEM6eD%9!m|8e28s=L)!T29B;ltSe&u*2_^y@Iz80Q=3I2F@*~K{eC$tr5GS^5=mhY+9T> zR)$v>psN7WLRkL{5ncP(TfVn%E-y1?qM+rvYR3uKUg+>lk18Q{0XhQ&S!f|+S z1-y31)@0+#;dp-do`$Hr4T8+~YJT&J+#EFl&a;Si7O6~CpC6~_bqSlKhDzyam;!F{ zpJy`6tg5PFlvmf~Mz`-%xOm~e@#3ZA`4xy6E@TlUm1ejNNkx?!v~IOb^dS70}lMPSsBk{-b_I z98%K&kc$BN`>-1IA|w(Y2mcWO5=?JjP2ev;FNJ*_ZnV!w&%{m)A6&EvNzR(b?*?k0a~Y^NxaudLFGY}yH1uk$i+5N0<3?kQf)-( z&~k?M(|~a$Dl~T{6-1St8VI7*^i0fiZ><>cVtH=$+&5e%j!G_sXEl)R&H^fNSI&^o z4S!&1RDBTVau`^Z;oT*P@VM0-zo_OmZOG!`ufJO3-YH(v;i??S;=C%ep9$RGl;x=4F40$){6tXL~rVDq=pNDjnun%6hU)Q$$+VbEFBz`4v0y@ zc)T`{eh-8y&qOb9=+&W@1ZCUeX1BcK{wVdWpuK0fLF6u)L9R1;6h`lmEvWLl@!7-MLth*b2jD=X1v3^|2iPYJ_5ywLUQ@!Rmz8my{Oz0m zsav_)FMuHE`8FCid|U`}=WW7o1fveZSc)P}9eN*k6qo=DoG^d5bs!b0R3H*PZQ4;C z9Otzdgj9UofbFZ;1)2Un<2YfJR9<4g7)AMqmarUxDX(%~dS=QeGu13I`%j zLVSW^BozG>MoeJjM!lUGXTvy50DqyHK0Oc&e_-%GMN>83ZWF_SO!QqQ?vxoV5d1Md zh<5I%IImOw;?(hpmuqi|Y1@%J#*_fC*6jkG+!bX21IyIsk`DrqEA8=@b5Qm3EfF_> zK72~=+Nr^&sF6E2DAfN{U7nWu<-p+^aa0*F(B`H8x88Rp`2$Oj7rz#Vb2$VUeKRlldBU<`3=xpefMm2BH!}ARo>Y1`T7XAnxs17k>fUs2Y2y}1 zGsXkY3AzK%5asf^Qf?ao0WI4u;Uo~_UiO6oii1f~z{Detcs%m0P&|eR|xdr5H0>f?oT(%Rzpm%8}V@< zmmhz>`~{rA3d|=c=F@vd;A-Ba%7EA)^c+uVO$5tG`8Vf$4*^cL`tpVK^z652jA+x< z0uqv~k_2a2=aa!Czu3tRMbDq-+uro?;-xJ7sSljjLDLN!MRsR#jk@;syUz*k7PJG!l*^$%rys=*Ra^xl}?5lR@eRv zPdpRo^>E&y!jbn{uUZzw(nFeEbn|5fT!*fFQ`! z6jq1F!n71cjzK;}O>@~Rf^!eGUcL{gco|jg)^BLf$fd3741fog_KaSfr~oSO&AXQu z0S5fRk=L6kKQ@4CCjb!=00Vj!o3>$1O_@R|sIg1Er9QZY=fkc5y;hZ+*J$ z+sL@K*08*SFZacfoS}0HpaE#Zh9;tbcd@yWd^ z`1jg??`ojg9xni{=J2Fc#Lb~KaPbobH3(Pj@IQYRYy^db!Xu#mOw7WY$iK^`@T)hz zbk+o@Uu#^R$P?qI*$}2S+n^0I+d#eDB|Wgq6&^{Mpo|UcuqEj4&mpJci;LyKMI^Mv ziV5l=z=rE3B!SjX*>3jq*Powz-y0Gcspz5AxV3E?p(IP>KN~B2t*8;8=R)1jj4?pp zyIgP#A)l7A?Gd0zy4Zk37(fqFuJzu2P0kgWpg&KVmg&6{&WFH55uGKa9<39+~f zV!#aa>0}{UyPtB&ff{NMx=LFr>=_NJ0~V&WW9nuh;}{LAi78?Jb*`c96l=z zN;U!&GB_3z{FqA}7kpwl>^)3Nf?}6nXQKYrzZ#^=so*L)x*h8N2rYgDYyr@a&40uF zBLMDyvsNZW9qv?P=3r_73;>X``vZ=-?`B4Fcz^WYmn&}uR;E}Z;?%x)ULPrHMV#Nq z`rp~xdj(?u!%-_Gux&_=IC}=UiF^Co58YF497J!NAnT`g01dw6UWQrg$?u`vzCQTp z#WZF5(}dOdk4muxC7c5H34ASKu3dQDR#+4+4*(?{J5U(4%@2hmX5Bn=)WOK#?V4{L z#8~%;`im47{B}RMepdE$&`gKBeDcY@7dOg{Opd)x*4z?pmLm6ar|AhiO|quR*513) z+td`YeW(85wq~fN&kn6q$dzwr;#GKwng)G3mkFfnB8u)7ikptJhxrcBTNnOK*={KO z{-XNfC6zBLs{_Ng7Gez_mUr78vIm8sqB!60+dAyZ`(I30GRo>_yI>4o$YWgNJpobR zIliyJCLf>*%whx&q`|sezAAg{cJXuJ?dKjkE+3S0!F#Du_klRx>daYn1m??~KwX+4 zE}bWm5qs|XPu9BORF*Ma8eBJgmk;ep;wl2))(xuVr?(K8nukCijPa^Y@q@(Zg-Y-R zpXGTAKCu^b6vU&0GBQJl{z;+j-}IhNszjANivHX0&HBi_)j8N#hb@z_v*2n4c>m5& zA`j15QfYe4a&&h53+-|%CCJJ1^V?6$l{vDo3mNkvBdP!^h`Kam@#{-YLxm;HYWN}V z+uR^e`&xIVNf|)O_kk#CNMnTup!TfoT9qB$?gG_#7W1o~LNEErzqUeTr1CqIHFZn* z&$;DS`+R)`-&)R$7FYZH92DV|Fa7-s#}}K zV6?L8kDE|@{lo9cYcF38#_b0R!k9T3!*)w>_8k40S2sWGhF0KfZejvDfO1g^G~`y& zYsJ3+jwsb06hTSIXPno=4DhLAk$3cFiR2_v8~Ex1A)(E{UATr8{&Dy)BW`9`l6sNh z2A+w~+0YO!-0f>Z&{0(?4qbGfPrqR$66`4%{%{k#ec}i)SXID%GoA>d+uC#hYfS(c zY|C%a5&U>-ygj91X0T4|{7M`FD}&?!O%8NGAV$dEMhM*gc9bd}-l-Y?zzrZ-@Fh^F z0{%dR#0P-1jfxRks zQAahVR0`f1is(TC$bI$!AVa?-I-n|UG&8f4Rm}BgiGhegXTWQb0k=fa>E}4kFdntt zzks&HuG1$V$FQ86_$zTfdnjx()dLB)*6tq0VG?wkttPUm_Tak~qf4xSwQy7U@uUnA z#F~IU#7TOc0;cllPFly+%r=JQUKQZRuTaeXSBbf$j5)p{oJNjU%X>X<<95CLeANCXiP0NnIe;VKN z0~j3Ec9se^1&M=N1o?#d8oZQ!=w7v{K~Qr~8klho?L-mIK2(C934&z-;sM;xd~Dk$ zl|W~x8P2R}#R=cxe%ESj$^J$I;HUd|B=~X#&z`3}RWV$?i4}W5H3Hf&>lH%}$4zMz z2I-YOw*WgR&|Q2)hi(&Zv~l`1!8IM8QlK@WK>=Jz{O6_^?ag5UuhuVN#> z$Lo1QJ9Z2#xl$;^o;XKD3U(3TPw5Kyk=qWv#xAX%Zh$t$t}QNfFiQF5mtzn-nGPW; zq-!vpYrYt~&@XZ7pdRQ#6(p&jg^63BTnJSzuet&zudB~7H*TCh-u1ebrx{G+iIFBp zY2U}pWAR!za4Z*i&Agr}BVN6$=LMCklsnCL;h|DI*~UfSj6Axuv}wA0lcV?duoXZp z>P+mJc)8Fx0Zo3J_-799i4z;q2RC4B4Ua0U$&7B}yU49s$j8%_!wCz}fr%$&T4q#x zsCp|N%*&%NRK8CG%nw;7>K*F~-?$Lksl}L$KED*@y3oI9zA*ZpfOf6Lxq^lQy!IjZ z`9Ts+9x#h*#F*zomHstJT_bJ2#;+JmOzZ>9j+ayX@e$XOupMU-7&X5iBo~SbnzD>y@8olVhYYO!UBe;-6G6HPaZATy7{IpvB zG^~B7L1p2@sR7^p)rlggH;gnh+V(N&={6G?7TyKL4O?C`$=-Rg zykCu%d56{bbx;Ou59qqnZa^q;;QKk8I@&E+UgrP~3?G(pL1eYTwJ%L3TVgiPQP$ya zuo;63KflY5xUrW!z^|3C+WiK&|MfsvCd|GhJWvB}wyWlVnYV1XT={g@WuLQF{g@rE zeNO6Iem!Ab)XriHH#e>36B$Q(5Lb~5R4hJaJpiI4RF_*8QkgTfY6ZE3pLl3JM2I&O z4{}}WYZTiIzZ%MS8fGZ-k?pB9qYc$bjl79bO^!Y&6%fr0M03!{*I!s>JM!Eibiu;I zoI4{`<20!B*>Ddia@W7qPwqjE;!hep%0TVFR&9v?ta*RQ{7kR6KR5#e^)N?zoby?4 zYG6;~faOZ%%mO9p)5O27Srr(a?i%B{ITliZ%Vf30Q5Ak-Wg`?7A}pH++@*P{CQ#=B zt7ByDP?ECppRIT7g~9B9@Gr@UlJsLio8ZhdVtl;se>KmLf>-`b;ATpKs&9Ml3vT2J zck#!sM+_bj=&wqG!^_u80P%%&k+@5e?wh9%bYD(Sen00f;HAdzD4fa0yFbWmaRb(;iMKo` z)UL_jI~bz)T;4}+46OMP$J}8_bN{jzxIkok)Y}QThaJP4F(-FFTFm_Z%=QP(!2IQ} zEoioxnaTXGh;~b|LG@q8i+x4!-@oVExqs$f9^NbN>+y>=D(@i@V~=kMWEv8BbRkZb zBuZ13HF>@E@`X$t?x~0F@U!UCPgeZ7%ubc*ewG+&Lb;~h^$rharE!yHWPk(k`xPe1 z{uo*cTkns*3jS-5`xJ7N@cSt~V6we_wd@1=gmvq{$L)LfHq(^l78W}Stx4*3Ir>nT z^#ObmdV@mOK_c>ZW)e}?94$yMWCH=iw;5=gtOZ1i{_czXJs8USd1?in>(#KGSD!8JuF>K6eG z74TP`%-cA-H6(iigb+ck`Xw#bDxnyi&=-FCy9|vC&JfcoyT3cH)c*~6TLiZ>3T^pq0duOR%M z&!0PKL|2UXPUe}ylDRy#=V;8(|B?|lh#yy+#SBqk`os9~a;{L7!p0kCvDijBy7Wbv zE9Kxfw(m9VGrlTT0bJguJ$EUBMsCiqgQtk|uIy3RtKd;jLh&@Da=l9AK3NOGpweX2 z@ncbcxA%pCZxu4&ihyo zYS2IP638_p`B>m&meru+7vw#N(ln=lTU890+fD}v@BjrSm(A{9OqZsb3|OFc*+|_P z;1p0nD|*tWy<1DypvL;S*6Mqox=E%W?XpkT==tFFu!THc_JncT9$2NuT5T9(4oNFw zXfkvJS8V~QsUA!yAReiK(ri8;?qZj!ss*Y8*$W+j0Ktt!FJ>d=f5}b$@E~93GlvRgHf>dPg?8Mv4gWbu#Fj} z2DwrphI5C~qTIf#4>h&M_5Td`Ed&q|!YTaj$K$ppS(9z7E9pnxT=4nId~gO$Q70A= zn%Tjs@2LnhP8NYR@p)+<;ZAuZ%vFe`TuiTD*{Z4!O-tm40UA3Oh6CB&TZzV1^ z-?w*uHw5%4av>YOnNY81fge`sU=3T$nGlGwMFH>+de4TV8^>*LT;k#~5N`UC=Sa=` ziM6HWU>}bQA^-=G7m#VmS{{_=2)ISB5zCZl2}b#7i!pX5)E+i>gFcsB2p}Bo#59F{ ze(&zF3c%_}n3Z&+?TH3l@v)2-FrN6s!)xnwuomo@%YkA$TfY0}DGl8~hxrLzA&e@OcJ+EI9)I^U(YYr76(g8g~jU50pxo z4NDj>jXFJS{;0tm?%_&5W>_1!sxY4Rj|X>q17kaTD2}h&>*mDwU8w(0S!tOEj7-rt zc5vPy3od;7H0j&CXan-6j10JlfZqo%L4_GHzlYGKZX!KxnIBPgR(E|`>Tl1_-Uw-( zgvh!)AO*g?@7dMQy_&%dE(@SEk@S%mF%TM?n$jPvF9$D9aTWlBwj{f;NHW_ks_k~p z?1B<4kC@MBJxW;<1Lbi?4~QME{9oz^C09;4Fl8m`dvHDW`l+8 z>?z|fuUVC#2eg9fp+7j_%&Dt@3Jp*LDZnm0$8Y*ac>>~!G3<+bxc0w$3&N|G4ScM0 zq`1@57n^0X9p`h6N0)`8UNSiARC!sg!Xy z$pgBCu(;9oei;?lV!E(_zcj1v(R+rjXUPFlG2t|-N9+{xO&Bu-dymP`Vr5*>?}P!2 znmZ2VX5qP|K#UUz6)tBgH>(6eV*!uRn(uuX52pWYa2!aMsVb@>--J+S&p_s!JpOyt zw*J!eJxpsY%3SrNPY?=xTf8A*o_(_zB?FA~YIQ1; zI#5RX-{6u1o7&o0Am%Gm!&8h8D&=x{do_K902XJw&D$G#dQ9m1E!e0vxw9K!aGKM^ ziz42Y1#pY_`;_q@E)W`b0djuVnO%Ny)!q|~Z28c1v}4$S=^w+Eh9_@Mo=-i)2RWi{ zEhB;}8DJd@Al<-%vzt06qRzci+9EVhFr|grqWT;LZ^8&%tyd=?G`FP5mVdv+`%t4h zW~G4d-b5^R935rXPUr?pUne=&C7xAEWWPm`zYMeb1f%j;`;OBfPypIY2RD=@B|$^L zS?!sxQlT4&KyV!Sgd;RC@PJ&s0Rc5hNQ!|Rl?u(VfCaoIcX@pI3X%=#1M-6YE~|GS zFFknU(RxShPJ55-N*f10J7J^jb3nNzAO|yU<11)7vYSU?jzI*RZ1{P104#|P^8zVp zAW{$F2KDquZk?Y)URKeixRCtSS0$i^YjNQSFjw@GJ+Ybtfx8~w@cJz`ct8s~0@Vux zGg3wn`=nRD{p!q&CNeZ+^b{=GeU^H(8evSI!vV0kW6K zuQ9;f8+b{J7n>q*=>R}apEZV>nrPqih2|yVgHHA9m_2+?4b-Z4Lm9 zsvHRT!S*6@#wc@%xqTRec+UoS8{UDBxAXQ-CS^tqMn4Q&sl~=pifTO)C^;L6G~dTY zCoz8(>7kT__LBt@R@U{Re17Q5@1p`ho&E>tCrkt6wRtvx$$9*!3GYI;=%}ia%ZVhg z(09|QIN^Gwt+-SF=*Ke#=j+>PDyymMo@N_f#}U)<n|RM6h~MoPAZqdc5=5+G+Pyi_{<0+Q5hFHd&8DG2k*&qGdzjFM(?Wi)%Y6oFsPINo7b)5>|FH7fX`(ev>2S-+=8|6#R9IhkGKH2I)Tm3-`#3I$ ze#I9GHGteqLB=TwDD=qp7G*y`MnykFS#~{%I+#PDygaO}x)wsOlAY0Ta&K==tn-cP zV}No}QWN!7-;v3G{wZ$+&ES_clNyZ|VfLD-I>~JC8H{MKckVe|9iR3=IPK2>64y1x z(8F-(WHWI8Ez#&V{W_i6T6plfkLD71!Jc+)#D=IN%-NQN0>{AP8*4l=)DVfopV|6i zEel(dclFgPK(0*~=RGkWAS5zl#)Tw%`5midpXUIBYpO1a_L*?F$&S2uSvblWeVq== z0S}mk5N5yzZMw(|0$-hKi;@`D*c^{QTHiO^XGq+5Py8v7BJk%Rl0eLykB_|^U*TAk zdJu#aR%Nu7hLEd{Tp(@@^8wERf4lUC)u}F~ilA8`<;nzG^L@8tyurZ+=Jp;sLQWNo zb5}oHm37|c2bD{$0%u2#F7;n!`Z6EJ1KEz!qv1?Y#7wYOgS<*~kb|glw9?oECMK@# zP^#bd^Q~kjDj(>V+1Kmsj{mjfI?b$lpjwGHTE-_QhdIN?8N3|K;zAWm`Ryu)o5`v#z;?FI^v&}^Bj2L@f?#p!`5ar z9o-8Dn+qH9^bSs2;4pvy?NQQe68gH?G9c;`wrFDMM}m ziS19W8TFizGe6jD9rO4%=z50hAVYGtEcbDN$Hc zqf9r(BzYm9x(uPS$RkM=s;6B1%M*=-o|c#YFspJAtv$k*kxTd6RdtVDX>DBTpTByw zwmu?6JnzSYs2}=)D~$tsJBDdXHVnAeb-j{cVXN2Z@Mu&L+eaja?Dk}$VW7cP3&5VW z{0R*(Xg(`CJ3z|P^Ts0FRLq9B!Hu;3q;~x@9Hfak(N~02qnSgJK>YgpyH~H-?chho zUQqG)Y!-v(Oh$P$c!x-rhAn)rb6UxC`klTo`arDudefsnV@tX5qSiD4#k=1cEt*IO!>)8hq{m9Uq!d#V0D$$M2_c-F zgSi3Itw}o|$=i4Qq2u#Y<2U&S=gp5`stZ9E)E=HMjB9gt>qX1}TQF|^uOe6^HZ*{E z^~B7c+8+w@QUi?`c5pRB=#X5t>ZSxn+5ghxgi>DWn(e~8q->~FnK#A(B3#w`KCecb zix`@FxhvPFCftMNN?R1UnqksfS{B9hBBVKBr%M8@{)G#)${~& znd332NC3?X#X+>8V$g zJ)Um2xv`d+QD4#fhy6%fM~(Nmbcn`H71`o?RkD^#2*fauWDM~3mz|B_~fMRvg@!bA)*0|_OlFDunuwyew`*o6Z&1Ud?$m!gDY|0@# zE`DkGuWlD-0V#X=MjSW%TH?REzEj7df2RJ?`lDdgVDaXR{G1~#erbFHGsu{xdfAA$ z&WW`B?@r!-2$#Y;0$JSVkP>h&@&68d$Ny;UDtRHI(tp|vpbGK)$#R?tzrK~O>?C~2 zWw!S{y4(^N7W^uA)^#%5Yc4WN<>uQK`opfflmBZhc}*Lx*eQ=Zt@ z>i3qIRnRxN1{7EbKBqr)#;0wZzF@Fn78U`*WBCJb4y7S9eIHHphAUb-o&n74;y(N5 z_~3B0QxFfS@dy<9E^vJ(gZ3vZBs{Kw*eBB8IlkY;_QPu2g8wUZ&@V)C_a3d-4Q!IAF`f{H!29c|0!B7M%ctt(VuD_k`gAu^J zFy|c)Me;n1D?=Dm3wePOSdprOOG(Sj`hLlY?9Ean zC1CVL$7pf)kKPwbQ8uR~8<@CAz!y*OM1`h^;n)GAhb9A{Q61uPv!AzLouM^zYChUvP$36>rz9?lkMc_Rd}G%_rc`%i!PlO%dm6;GoSSQ-}xryZDul6goHn<}xO) zAe7)%NuUzJarvdm{7E(5L9T$BlPC3tt91nL-5(xa**iBJS)O>Xzc6Vm7I#TTIsQBR zEm{Ji4=wJe7R-F+;It_)#^&;MMiez0Zgy`aJi=d{YL@>%u?a|$8FVK|Zb;bYZ?zof zF5ilT6Is(^WyVRuvJ~vXt7~VN=bX}y^8a*j=(DBf2!gAw zAB>?_+Brf^-rsz%uIJ(>iI@wr{9AqgOZ8p%3q>M_EjQ#QKcLZummVdtGTunImZsEQ z;i>q!B6}RaVs6irkCJ>WeerL>q*0Ml`S-hgUf)=qB|_(BU9-QM7yv}MG!6wbHAFCR zXv)}}RvFo!H6r}YSyATgo)_Ynzdr=burk#274A2xrA+iC$T>Am)NGZ8Y6WEAfABDz zS$pM}Yo3N`$vA#o{!Hx;X)nTlvAetC6>@Q&iPKpJKf^dxfrP``C5+1Ffi24vg;%1_ z+J5X|@jntm6VZ2yHJ-tl3A4ko`c|BkZsA3E zLgP;u>=h>xug6xi)^oH@Ww1FWayI7{P@0S;j`K0gUnJg%KsY>9VJKkd!QJdWXTcGU zo2x1vuyJ2ibRl;a54AT z3@h##s*p{e8zV-lQ56KeE#tPY(`I;c*Jf?pdzV0=#U716cCk@gH)F3IdkXdM9%Z_t zk#{d&s#4K`$DY0VEcxh90_yEW7k?`@Oi}w_Yon62Bb-N9m&K+nNdDP*q#()03SjZ} zA49o7*^#%LA!1UBu8WNEp=o=kL1Cfkwp@NDB>Dx(MLlQ{u2EnU^liKd1r{O{xoCIX zP|mT<+q#N0hf3R98osw4o13ALv5`bjvdb7W%s7AitATot!UY6Q)>eR3zW%jO`&|El z`?eUT?K->72i8B=sPhjLJ$LK4#K!D_oo_6Z-?VpgqV|-gX2F@WoVx)vHIy71OFYZH zRt_&=c#U(j>Qz5A@A6;2z*;4`TlKsluIR)No9d%mP3=d^&F?c8w?yisXTK@RAIJB!r`Xf;;5)J~u7akapB6)b&d!S$ zm(+LCZgoozBbEzHV*R51U7?gO+C*EGs~a2ZGn>e$&!+$EozwQpxRK!B8Dzum_=-8s zv$$50AnGia6I@9-K*;yK))TVK!p;3U!8o##!`S%W@`Q+w9c zSH4H@Vs~kL`5L$VS^Q;S5rci5fd8&NzvO&rfE&{xTW!^EzB%w{OG``II;MefzO2@M zlx_F8{a$)F+f#$5h%Q9EV~%J@pEUUbL`hvLrA9`-R~^=xluS^G%2knMvx_F^+A8D_cR%P&8Qbo9&ZxG{fY5ptwOoc#9d%c+V0OkA2)0yVB{=phebr5p=lLF| z9_t(%5UTaQ<2jI1P0kwLn}4SnNoz5ix|$7+^;Rq%Q{n$A#@N6q%2vL|5;~$5d_Hi> z)-lOExIw`S#HJ;h8199O=v}C0GQDytW)WwBP%PO#6>k{Fh+!C&-sBy#TVLDVZ>;ir zH|zQ@+&VbFuXw8A!y`4uJANyMH@!c2e_rX^yK$R&j7^DP;hI9G3b4Va3%}3ri+=O0 zr}1s%Fsa@3lGvc_;{Wv?HQYQk@t*wXMwPJw-1O|$SQOgBB6;wZYLW>uHg0yr!~mPd zXtH6~o(gf9$-8v&Ui67J<7F_h219G2Uw-Gs#cf-ewh4ngT9=<{+~LpI$Bo|twc0N{ z8&iHA8)5p0JhuKr5Bxs$R0}o3M*V2l>a`TJIW?Z~WBm!%_$$b$rV8FUYOSj2mqwlG zy30&9N9dIPYapI+3Uz3ZkTEPhJ8;7!Nc``2c_l6%MRUe+g!fbP=FDH07}(xpFSeMk zkKsmg`L2=?5r1ua6<&q=vo|IR?o_PRuGARqhxq=;PAI0(tKjE8Ua##*sA{$m94y0t zg`%L(Pfs1$&a`i3nz85Wa$Wq@-Lq23qH9U>9Z7eFw@*ZwZRsdEctd;rGg9A(4b_x$ zsD>@9&Nl0Qi~;7ge4M&3a@fBjhvQ{eI4ir@->LP$!eWX}5_+c?pSIRj+|}o|Ds3m6 zH{W)tB%av>DETnZ?pN{Sm6qPF2r=GWnj)QviU|)7KC*}idVBOJ-HmD~o4x9~`=)Ir zr~E7AMU_)Pv*^c>b20JMJ@M!g^)Sf;F(KH2wwCa+WmI}!u&9U1!+z*w7PQy<+Bl)? zcaJ4gT91LFRTIUfymHgSG%h%r<%s+Ow^;dHhc~O^-i!@F(?2`%aAd*QBG{ z&RhBU#}@K&4(4ay(e3&_)CO}Z`iJ#>Ozve{06?4K6=KZNb`mtAO|IMgNyKibo<)Yt zIc=`xiOn2(*b%`tUJ5fTU7ljQ1kSU$+>Fj?I#~ z$5f?tN$lcqLNA}g^y|TjZBb)8C1~$=C)S2$Bbdve?c`)cTVKCBMCF3a@@au8T01*R zxH8I%^_EM@uFj0H1+nU<3L%!`F2don)B~z@aWvIyYMXa>?qShAb7- zZfvPO)YQPR)_peoyC z&d5-1;&@%Kr*CIB*y zF(%^Cn;c|*;R~P|L@n$&@2w4Z(?CPnyC+5;X0QI(JDba@#ya@cU}L;`_6|c`T^=Hr8ZarxqdQWTBz;Jk7OEhq3=qt}47dpA z{t%Sir;4#%v16L6oEehG&5IIWdQ)6yBS!??V)E`tVB@d9Qm^6x&(J)$T5auff6*^R z0)GAbq`?JVxE7U(`0d;fE$xlu!ZEu%`>azL$WQ?POMg4CVM*&Tjpz0>er&hI!uzcU z-dK^XwPW85w*I!9;g>pOq&%%TRrc;WZ#XP_92bUvO^XM+ zz4M)S;D`hrZUbzv{nuur|EPC6@VtT}!~JCPm=u4;=;dvqS0c{lG_{@Fq;EdDC^_4_ z@_p9V9KrjTL_i?qZ|B%(-|aTlu-Mmcm@#NP;c;5aNT9G&_Txk{K#)}7shH%n3Io+w zty@1Vc3VEKe;T?kIAfkR2s)64Pi!90-s)dTWIb(!Z(EUDrZQ$H+<~!2EE~bw%fFr( zc@(*X8I2P&Ihy!bwS?Dk+WV`|gbEM5US(<>K>FF&o z29}mtyqBm~%5@6mh(cFCfBfu<_G>o$cqh|VP~xgm==eQ{yl109V&_vHd?}p&{x{~a zx|}Dn&|zPFzsR3rx*16AC9I{ytDFApKsslROt{GMc_}YCt8B*}wi0krkDLKw7qC_KwHrNI_ZUtZc-`{rxjZK51R9XF}XRqLRi$M^1&f7j~=O zu^gHBH2E}jAUq^k$=cd7>ssAY%w-I#s9)ux(7dWhy~&x{pcf;XTYSMeERU$U>_l>d!ZWgN**xLg)Cuk~V&^&^_F#g7TO z5*!?+u5NA)Gkxqj`tG#R%JjvP)?^=Xt9#DfldL{#J~MoidVN{vVxW&1;asPDr%F5C zbhHr&I4Lf&hAb^pwIgk>`OA3r{pE99v{LlG{WHWEt66f@wK%J!jE;DkzV&t!M@dBG zhd1IXJK_g3w8})JL~GRZ=ZTLa81{Frw|BJ33rmR*B0MYAdMrQ#E2C#{SMzrTi!0pU z_Y_eiZt;WLi$^B(K9N}83RlmXa|lOE!=8C$hY3A_AYhUv!^ge+XI1 zSsZ<@d2M#Og9cPsYdP{&#ozQi949k?g7y^}vs=uiyYZrcHZjt=B6jjuP!g22J}V#~ ze?0P>sWSm5Z%R{9Z)Gn?cg(l7C0izlGe8gePOB5SXN7s$m^XHBA|mj%sz>A75)mnJ zh<&2qq3X$rl=$oNho}Mqrwv1bK>UnMYDW4^qlwG$H0CAj?2u913zOt3&+yLZcdt9v z?uz_x7y^pyj0N#A7bzK2%Dj+vmL&3VpWAHWqp&JADXSXp)_juIbtUFhzlOItCSYmR zN}hS<^IE(;iQZ}&Ej=4e7DqVGpqZ_R&mRX*_;3W7=A>9O%JX>u_V1e%Hy8 zYz#lQlJ9In|LN~^Ik*Dud!+8FLl z$C7!Q50deYq)&3k55tA_w^k?U@z?bd8uQ(vk{G^!7Ju?!p$ZF}3#V?>Cs+4_DqhMI zUjvJHl3=bd6HXjZ=cFAPrXK&i9GNJClU2oJTiOdtU>SSq9H3(9`u;>&C!snCnVK4} z|5my=iO2)gYy9wG{hj3y0k755NVC=xr?zR{2JOQ;*J-sMu(~%B{*FtBf*RJt{bwv{ z{5W*)*kwsktz{JFy( zila7M4GSqU`uFb5Df^Tg!#w6JlPtX6YIT2H`(?5g*%aw^9O4piL3RSIbf1XVwTgVb3UUu$PeI?GFF=Dv^G@JU~=~1Hx`oh&M>u} zhp<+w$)1Kv@Yvs*Ewf_Ek}K6UyTWx6$1Ohg_;F^W@UBfMm~=Hrj$7Eplot9CHqWj% ze-+y=Gu`|^H^&LR2+u*Xn~>wcXy(_4D*-=y0p?Hz#Sd^Jon~2qUAu9(tXTcf7kdg5Kr7A2;K< z*eW5lc91eBNH^77_vD6PYM!+|H-veM3=P&&_S!58)aT!%r7{PJ?4dJ1LE7cf!`hwtT!`rqRwPO1dT?Nt zHk3%Nm~H%f=s;{cR+MyU`~$?+z9d5P_co_fmL)n^4DXqg#u-3fZ-hA!!E1+zriT-8 zYXJ<~Ra1so)wWec-9}v8^uOkorS46d{H7}RVGVd(w%7Yq5>$mik2Y%Wf<{{D&2Cx% zGvR5*S)w2ms=vBV%!2rbO5bBc|7MpVL;AnDRzi93gaU<`GxT;vCGfo+|UZy6XFCz_U$&U?W6$~GjV zDW9$BY3>uoiCuQm{(mI@mX(Mk+$!U@=sk=zMDnlitSo(85@!qlb~+*dE=~av4hB(l z?8a*SL`-S{&NA06bg*`p3GzlXL+xBTOg2)!kt_!TIJ>hOLWZe^2{#%tFVHvw$o9R>H>gJL_hZDt)M6?-Fe!_)*Ir5AFKI)Se*8 zwhAZ){1Cil22Oii@LUbXsn~Cn(Z= z?I{d;7Jcm*A9W)*Ufv?6_vbXNwEg_)ta_vqdWm|XNQdfeCOwx!TqK|mml(fsUqs^1 z3HF7-Lkxq4I9(VG1V|4w)e^rsF+|Uaw|9Ex2M~ofL$VFY8k++-k(DAM(>9E1h(Qp9 z)}Wt6B+Tkkzt`t#K{rUA3WfY)t3=_Qaob51Y*F2OFvVTun=j=P?nH>2(Dw3lNqfcq zDW)y2;5ogm5QEj$8Fq5(k8VVrC}jKwffFXa92O#>-UwP@{yB5n^OQ%IS0;ToP}50v zx1=)?8Gcx6XipDm)p5<6Ji*7tE}k1tqB@oBhDfgGFkvo~M<1W6LdKo>z>&*>kzl$c zJd(o>R|VxRfKSNha>jGO9Z{-6=aH?YBHg|Pe4`M$mQNP`4vda}Elo)(o9?7`O*4;= zkAEIp{f)uT0GsW^5$4aaiP1WQyNLI`4YG-c4M{g%T$8Qd6-Gr#IiD<7Cx?lTC@9%7 zSx5f2^IMQaOi@vX@eGVL0yBt)obL9Kzaf^2;UmPC=L{YJC+4>BuTbBSKN<4x#NRv7&w2pYZ}Q^f<;y!b`v#8Q z%9Yrxm89gnIpO>ibL*knM{*ba*4J=6C7j8#oBZ~zrr6e_V=MT(vR8k#23*$Sex);d zeqwUK6elFlZpzSyX_*MxjT>b3+)u&lBqmGb(GIt$)@pr4=qM4D!%m0flPm;vQRaL! zpHV+f%#`aaFLsBt>?5)6EwLL6@+e;zrvuck!QULgcbtdm=j-Ut_fxKO=buc&DB7YM z1$xGmmmZd-kB@k+>ha#1p#E8@&wEC6zofhSQ>;?&$*q?1J+E}kww02z#cpOrU-ufa ztj}hte%6~-|1k3CDhZ=j?CYZv>Nkj%oPv4e*{cx|wieZdP^^^dQf}&@xdbheHn1=- ziCvj^UIdH#c*!a3!<;Rd zV@U(g2IlISEUEv+7T-JgblmIIB`0=E9*l&N#MEvmyA{9xe=;3&5%J`lNYu`1^WsiS zEaQluzB!Lq{mAueebR|Xj_7*@M|s`uWyPQP7rU!kYO{=`7pg`At>;+R;x-+{@&8(I z)f^YKl!tc(8$VyFwb>Uuhusy7->23$W)l0;0=s)ttpbyU{YkF|qrJ7=-PfgK$>Rr9 z0pe*m`q<|Vp(}5WzVmeEvgg0O!$hat8i_VZsQ*Z*BM$U;d`l3|NeDkU+WXW-pM{z} z+iEkU#igUpr6zV=p*)%SqGnjmmLmRr9dc<{Z9HUkEB-bui55d|?DpLLjBEDhLO+_M z;bZb_ufI8I&6KVZ*4^2ZZ&mV3!|6A!jq$5KI>o+siQPwXZpdf0Vdwc51Ixw!HbPZz zuS19myD_BJB@xF9pFC!2i>gFRB3~i2Qb)c(c@eo$>YSRayI&uSyGdEx_WE8k@U;VbHg?b1JRsn(^bE#njg+RTe-!6Xyf-~&SDEd)2&%qdZc9O9$mbJo9#LIWgp^4 z$L+{Nv#INe=*JSTWwsvTgxHNZl4Qz}7gjscC_UUD1vLO`#Q z#ygPPDN-k2gdlwXt)QRQ-`G2v6R&*%YxGW{w(9Og5Z-)it4UuA z)yOd}7+-#Ci=5;A&%fM=m*lh*tz~@4_nI}qp<^jqY#B9>i-R;%_)*nRnnpa>I})*i zNRKNfUrQa}D_>PM6h}U>m83Hr@L3XPnEdr)v^6#8?$__}lkJy7U)n+`cZ3GjNEKEd zlv^h4>IGH|)zNnsAEe#6d#wwFpr*(a8gGPjW2~o?_tfORH0qpX5;r!u>W#Rh&Te_l z=2sO1Z|HhUm*W4XK0ftpV;Z*?o^S^^f5+-)$eCd2%h@D@ZMAdp{~?*PN65f z<~y)!poM)TPx%Mf zWOAmBtVLf*9=TBP-|`Cd(<=yLi|BbFP7Ley2p}<$9$i4p30@gmFaRb2l%+1c-GK4i z^lD}=t~B?&s={Y9F-x-xp_2S)0}wdnNrJ Dfra|= literal 0 HcmV?d00001 diff --git a/src/static/img/favicon.png b/src/static/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b8caa19ccf71288e9ac9ecb68f591ebf043b3a45 GIT binary patch literal 70697 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%0De^3jcTM0?!&ob@JTR#Vj#?L6V)3wE-7 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 z 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 { + const form = document.querySelector('form'); + const destLinkInput = form.querySelector('input[name="dest_link"]'); + const customLinkInput = form.querySelector('input[name="custom_link"]'); + const destLinkError = document.createElement('p'); + const customLinkError = document.createElement('p'); + + destLinkError.classList.add('error-message'); + customLinkError.classList.add('error-message'); + + // Append error messages right after inputs + destLinkInput.parentNode.insertBefore(destLinkError, destLinkInput.nextSibling); + customLinkInput.parentNode.insertBefore(customLinkError, customLinkInput.nextSibling); + + // Function to validate URLs + const isValidURL = (url) => { + const pattern = new RegExp( + '^(https?:\\/\\/)?' + // Protocol (http or https) + '(([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,6})' + // Domain name + '(\\/[a-zA-Z0-9@:%_\\+.~#?&//=]*)?$', // Path, query, or fragment + 'i' + ); + return pattern.test(url); + }; + + // Function to add https:// if missing + const addHttpsIfMissing = (url) => { + if (!/^https?:\/\//i.test(url)) { + return 'https://' + url; + } + return url; + }; + + // Validate destination link on input + destLinkInput.addEventListener('blur', () => { + // Auto-correct the URL if missing protocol + destLinkInput.value = addHttpsIfMissing(destLinkInput.value); + + // Validate URL + if (!isValidURL(destLinkInput.value)) { + destLinkError.textContent = 'Please enter a valid URL (e.g., https://example.com)'; + } else { + destLinkError.textContent = ''; + } + }); + + // Validate custom link for valid characters + customLinkInput.addEventListener('input', () => { + if (customLinkInput.value && /[^a-zA-Z0-9_-]/.test(customLinkInput.value)) { + customLinkError.textContent = 'Custom link can only contain letters, numbers, dashes, and underscores.'; + } else { + customLinkError.textContent = ''; + } + }); + + // Validate form on submit + form.addEventListener('submit', (event) => { + let isValid = true; + + // Auto-correct the URL if missing protocol + destLinkInput.value = addHttpsIfMissing(destLinkInput.value); + + if (!isValidURL(destLinkInput.value)) { + destLinkError.textContent = 'Please enter a valid URL (e.g., https://example.com)'; + isValid = false; + } + + if (customLinkInput.value && /[^a-zA-Z0-9_-]/.test(customLinkInput.value)) { + customLinkError.textContent = 'Custom link can only contain letters, numbers, dashes, and underscores.'; + isValid = false; + } + + if (!isValid) { + event.preventDefault(); // Prevent form submission if validation fails + } + }); +}); diff --git a/src/templates/base.html b/src/templates/base.html new file mode 100644 index 0000000..92c7a2e --- /dev/null +++ b/src/templates/base.html @@ -0,0 +1,51 @@ + + + + + + + + + {% block title %}Shortn{% endblock %} + + + + + {% block head %}{% endblock %} + + +
+
{% block content %}{% endblock %}
+
+ + {% block footer %}{% endblock %} + + diff --git a/src/templates/form.html b/src/templates/form.html new file mode 100644 index 0000000..583de30 --- /dev/null +++ b/src/templates/form.html @@ -0,0 +1,28 @@ +{% extends 'base.html' %} + +{% block head %} + +{% endblock %} + +{% block title %}Create Redirect{% endblock %} + +{% block content %} +

Create a Redirect

+
+
+
+ +
+ {% with messages = get_flashed_messages() %} + {% if messages %} + {% for message in messages %} +

+ + {{ message }} +

+ {% endfor %} + {% endif %} + {% endwith %} + + +{% endblock %} diff --git a/src/templates/login.html b/src/templates/login.html new file mode 100644 index 0000000..1a20a2d --- /dev/null +++ b/src/templates/login.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} {% block head %} + +{% endblock %} {% block title %}Login{% endblock %} {% block content %} +

Login

+
+
+
+ +
+{% with messages = get_flashed_messages() %} {% if messages %} {% for message in +messages %} +

{{ message }}

+{% endfor %} {% endif %} {% endwith %} {% endblock %} diff --git a/src/templates/nohack.html b/src/templates/nohack.html new file mode 100644 index 0000000..2472e3b --- /dev/null +++ b/src/templates/nohack.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} + + +{% block title %}Please Don't Hack Me{% endblock %} + +{% block content %} +

Please Don't Hack Me

+ Crying emoji +

Your request did not go through Redirecting...

+ +{% endblock %} \ No newline at end of file diff --git a/src/templates/redirects.html b/src/templates/redirects.html new file mode 100644 index 0000000..bb3651c --- /dev/null +++ b/src/templates/redirects.html @@ -0,0 +1,54 @@ +{% extends 'base.html' %} + +{% block head %} + +{% endblock %} + +{% block title %}Manage Redirects{% endblock %} + +{% block content %} +

Manage Redirects

+ + {% with messages = get_flashed_messages() %} + {% if messages %} + {% for message in messages %} +

{{ message }}

+ {% endfor %} + {% endif %} + {% endwith %} + + {% if redirects %} + + + + + + + + + + + {% for redirect in redirects %} + + + + + + {% endfor %} + +
IDDestination LinkCustom LinkActions
{{ redirect[0] }}{{ redirect[1] }} + {% if redirect[2] %} + {{ redirect[2] }} + {% else %} + {{ redirect[0] }} + {% endif %} + +
+ + +
+
+ {% else %} +

No redirects found.

+ {% endif %} +{% endblock %} diff --git a/src/templates/success.html b/src/templates/success.html new file mode 100644 index 0000000..27a4ed5 --- /dev/null +++ b/src/templates/success.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} + +{% block title %}Success{% endblock %} + +{% block content %} + +

Link Created Successfully!

+

{{ link }}

+

Create Another Redirect?

+ +{% endblock %} \ No newline at end of file diff --git a/src/test.py b/src/test.py new file mode 100644 index 0000000..e9278eb --- /dev/null +++ b/src/test.py @@ -0,0 +1,28 @@ +import sqlite3 + +DATABASE = 'database.db' + +# Function to insert links into the redirects table +def add_links(): + links = [ + { + "dest_link": f"https://example{num}.com", + "custom_link": f"custom{num}" + } for num in range(1, 31) + ] + + with sqlite3.connect(DATABASE) as conn: + cursor = conn.cursor() + for link in links: + try: + cursor.execute( + 'INSERT INTO redirects (dest_link, custom_link) VALUES (?, ?)', + (link["dest_link"], link["custom_link"]) + ) + except sqlite3.IntegrityError: + print(f"Custom link {link['custom_link']} already exists.") + conn.commit() + print(f"Added {len(links)} links to the database.") + +if __name__ == "__main__": + add_links()