From 64e5dfe90d8a90b45ffb80361bf90056c175ed02 Mon Sep 17 00:00:00 2001 From: caaespin Date: Mon, 18 Sep 2017 19:38:49 -0700 Subject: [PATCH 1/9] Adding endpoint for getting user from cookie --- app.py | 28 +++++++++++++++++++++++++++- decode_cookie.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 decode_cookie.py diff --git a/app.py b/app.py index 74b9591..0f9bd30 100644 --- a/app.py +++ b/app.py @@ -4,10 +4,11 @@ from flask import Flask, url_for, redirect, \ render_template, session, request, Response, \ - flash, get_flashed_messages + flash, get_flashed_messages, jsonify from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager, login_required, login_user, \ logout_user, current_user, UserMixin +from decode_cookie import decodeFlaskCookie from elasticsearch import Elasticsearch from elasticsearch_dsl import Search from models import get_all @@ -186,6 +187,31 @@ def index(): return html_rend('index') +@app.route('/check_session//') +def check_session(cookie, secret): + if secret != os.getenv('SECRET_KEY', 'somethingsecret'): + return json.dumps({"error": "secret key does not match"}) + else: + decoded_cookie = decodeFlaskCookie(os.getenv('SECRET_KEY', 'somethingsecret'), cookie) + try: + assert (decoded_cookie.viewkeys() + >= {'user_id', '_fresh'}), "Cookie not valid; does not have necessary fields" + assert (User.query.get(int(decoded_cookie['user_id'])) is not None), "No user with {}".format( + decoded_cookie['user_id']) + logged_user = User.query.get(int(decoded_cookie['user_id'])) + response = { + 'email': logged_user.email, + 'name': logged_user.name, + 'avatar': logged_user.avatar, + 'redwood_token': logged_user.redwood_token + } + except AssertionError as e: + response = { + 'error': e.message + } + return jsonify(response) + + @app.route('/.html') def html_rend(name): """ diff --git a/decode_cookie.py b/decode_cookie.py new file mode 100644 index 0000000..b188637 --- /dev/null +++ b/decode_cookie.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +from flask.sessions import SecureCookieSessionInterface +from itsdangerous import URLSafeTimedSerializer + +# Adapted from here: https://gist.github.com/aescalana/7e0bc39b95baa334074707f73bc64bfe + + +class SimpleSecureCookieSessionInterface(SecureCookieSessionInterface): + # Override method + # Take secret_key instead of an instance of a Flask app + def get_signing_serializer(self, secret_key): + if not secret_key: + return None + signer_kwargs = dict( + key_derivation=self.key_derivation, + digest_method=self.digest_method + ) + return URLSafeTimedSerializer(secret_key, salt=self.salt, + serializer=self.serializer, + signer_kwargs=signer_kwargs) + + +def decodeFlaskCookie(secret_key, cookieValue): + sscsi = SimpleSecureCookieSessionInterface() + signingSerializer = sscsi.get_signing_serializer(secret_key) + return signingSerializer.loads(cookieValue) + + +# Keep in mind that flask uses unicode strings for the +# dictionary keys +def encodeFlaskCookie(secret_key, cookieDict): + sscsi = SimpleSecureCookieSessionInterface() + signingSerializer = sscsi.get_signing_serializer(secret_key) + return signingSerializer.dumps(cookieDict) + + From 387b5c2c7b376c1f0531a08574c6abddb9ed5118 Mon Sep 17 00:00:00 2001 From: caaespin Date: Wed, 20 Sep 2017 11:20:51 -0700 Subject: [PATCH 2/9] Modified endpoint so we have a LOG_IN_TOKEN at the header instead of the encryption key on the URI.C --- app.py | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/app.py b/app.py index 0f9bd30..40ab971 100644 --- a/app.py +++ b/app.py @@ -176,7 +176,7 @@ def burndown(): total_jobs = [int(x.total_jobs) for x in get_all()] finished_jobs = [int(x.finished_jobs) for x in get_all()] captured_dates = [x.captured_date for x in get_all()] - return (total_jobs, finished_jobs, captured_dates) + return total_jobs, finished_jobs, captured_dates @app.route('/') @@ -187,11 +187,34 @@ def index(): return html_rend('index') -@app.route('/check_session//') -def check_session(cookie, secret): - if secret != os.getenv('SECRET_KEY', 'somethingsecret'): - return json.dumps({"error": "secret key does not match"}) +def parse_token(): + """ + Parses the Authorization token from the request header + :return: the bearer and token string + """ + authorization_header = request.headers.get("Authorization", None) + assert authorization_header is not None, "No Authorization header in the request" + parts = authorization_header.split() + # Return the bearer and token string + return parts[0], parts[1] + + +@app.route('/check_session/') +def check_session(cookie): + if not request.headers.get("Authorization", None): + return jsonify({"error": "No Authorization header in the request"}) else: + # Make sure the auth token is the right one + try: + bearer, auth_token = parse_token() + assert bearer == "Bearer", "Authorization must start with Bearer" + assert auth_token == os.getenv("LOG_IN_TOKEN", 'ITS_A_SECRET') + except AssertionError as e: + response = { + 'error': e.message + } + return jsonify(response) + # Now look at the cookie decoded_cookie = decodeFlaskCookie(os.getenv('SECRET_KEY', 'somethingsecret'), cookie) try: assert (decoded_cookie.viewkeys() From 356a4359d45a8dc6fd9d4e81513fabf9c8388df3 Mon Sep 17 00:00:00 2001 From: caaespin Date: Wed, 20 Sep 2017 11:23:40 -0700 Subject: [PATCH 3/9] Changing default LOG_IN_TOKEN env var --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 40ab971..442dd1c 100644 --- a/app.py +++ b/app.py @@ -208,7 +208,7 @@ def check_session(cookie): try: bearer, auth_token = parse_token() assert bearer == "Bearer", "Authorization must start with Bearer" - assert auth_token == os.getenv("LOG_IN_TOKEN", 'ITS_A_SECRET') + assert auth_token == os.getenv("LOG_IN_TOKEN", 'ITS_A_SECRET!') except AssertionError as e: response = { 'error': e.message From 74e881af5bf820fe4ae79a4799aa0b9fbae6ae5a Mon Sep 17 00:00:00 2001 From: caaespin Date: Wed, 18 Oct 2017 15:28:28 -0700 Subject: [PATCH 4/9] Adding disposing of engines and closing of sessions --- app.py | 2 +- bdPlots.py | 4 ++++ models.py | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 74b9591..f9abd26 100644 --- a/app.py +++ b/app.py @@ -175,7 +175,7 @@ def burndown(): total_jobs = [int(x.total_jobs) for x in get_all()] finished_jobs = [int(x.finished_jobs) for x in get_all()] captured_dates = [x.captured_date for x in get_all()] - return (total_jobs, finished_jobs, captured_dates) + return total_jobs, finished_jobs, captured_dates @app.route('/') diff --git a/bdPlots.py b/bdPlots.py index 4e53855..c1a6bfc 100644 --- a/bdPlots.py +++ b/bdPlots.py @@ -43,3 +43,7 @@ "{}:{}".format(x.captured_date.hour, x.captured_date.minute)) for x in get_all()] print "Total Jobs: {} Finished Jobs: {}".format(total_jobs, finished_jobs) + +session.close_all() +engine.dispose() + diff --git a/models.py b/models.py index af2cf08..e01659d 100644 --- a/models.py +++ b/models.py @@ -28,6 +28,8 @@ def initialize_table(): session = sessionmaker() session.configure(bind=engine) Base.metadata.create_all(engine) + session.close_all() + engine.dispose() def get_all(): @@ -41,4 +43,6 @@ def get_all(): session.configure(bind=engine) s = session() q = s.query(Burndown).order_by(Burndown.captured_date.asc()).all() + session.close_all() + engine.dispose() return q From 5e3831aae60da5f6bb228ecc6347f83acc3319b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Alberto=20Espinosa=20M=C3=A9ndez?= Date: Fri, 27 Oct 2017 17:35:49 -0700 Subject: [PATCH 5/9] Update models.py Commenting out this momentarily. --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index e01659d..727aeb7 100644 --- a/models.py +++ b/models.py @@ -43,6 +43,6 @@ def get_all(): session.configure(bind=engine) s = session() q = s.query(Burndown).order_by(Burndown.captured_date.asc()).all() - session.close_all() - engine.dispose() + # session.close_all() + # engine.dispose() return q From 78f626622ae850d380e6fa1389589ea95f2136ed Mon Sep 17 00:00:00 2001 From: alex-hancock Date: Fri, 27 Oct 2017 19:20:23 -0700 Subject: [PATCH 6/9] Squashing commits: * Changed time.sleep to sleep * Clarified query objects --- models.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 727aeb7..51a682d 100644 --- a/models.py +++ b/models.py @@ -6,6 +6,7 @@ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine +from time import sleep Base = declarative_base() @@ -28,6 +29,7 @@ def initialize_table(): session = sessionmaker() session.configure(bind=engine) Base.metadata.create_all(engine) + sleep(5) session.close_all() engine.dispose() @@ -42,7 +44,8 @@ def get_all(): session = sessionmaker() session.configure(bind=engine) s = session() - q = s.query(Burndown).order_by(Burndown.captured_date.asc()).all() - # session.close_all() - # engine.dispose() - return q + query_object = s.query(Burndown).order_by(Burndown.captured_date.asc()).all() + query_list = [x for x in query_object] + session.close_all() + engine.dispose() + return query_list From b911143517a5407bcf56c0498167cdc03228ba37 Mon Sep 17 00:00:00 2001 From: emikoifish Date: Mon, 30 Oct 2017 19:46:57 +0000 Subject: [PATCH 7/9] boardwalk header redirects directly to boardwalk --- app.py | 5 +++++ templates/base.html | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 74b9591..df8fbc6 100644 --- a/app.py +++ b/app.py @@ -247,6 +247,11 @@ def html_rend_file_browser(): return redirect(url_for('html_rend', name='file_browser')) +@app.route('/boardwalk') +def boardwalk(): + return redirect(url_for('boardwalk')) + + @app.route('/token') def token(): """ diff --git a/templates/base.html b/templates/base.html index e96b431..f9a80a9 100644 --- a/templates/base.html +++ b/templates/base.html @@ -78,7 +78,7 @@ Browser - Boardwalk + Boardwalk Redwood From 22fafe5edc6b19d3f257aff613d1d0f3384facc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Alberto=20Espinosa=20M=C3=A9ndez?= Date: Mon, 30 Oct 2017 12:47:23 -0700 Subject: [PATCH 8/9] Update models.py --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index 51a682d..2402159 100644 --- a/models.py +++ b/models.py @@ -29,6 +29,8 @@ def initialize_table(): session = sessionmaker() session.configure(bind=engine) Base.metadata.create_all(engine) + # We have sleep here because it appears that the call to create call is non-blocking + # so we need to wait a little bit for the subprocess to create the table. sleep(5) session.close_all() engine.dispose() From 73490493edf329c5e0e23b49838502fa4fab6ffc Mon Sep 17 00:00:00 2001 From: emikoifish Date: Thu, 2 Nov 2017 22:09:33 +0000 Subject: [PATCH 9/9] Changed Carlos' pic and redirect to Boardwalk --- app.py | 2 ++ static/img/CGL_Team_Pics_Carlos_Espinosa.jpg | Bin 19881 -> 48798 bytes templates/about.html | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index df8fbc6..34c9b47 100644 --- a/app.py +++ b/app.py @@ -215,6 +215,8 @@ def html_rend(name): total_jobs=total_jobs, finished_jobs=finished_jobs, captured_dates=captured_dates) + if name == 'boardwalk': + return boardwalk() return render_template(name + '.html') diff --git a/static/img/CGL_Team_Pics_Carlos_Espinosa.jpg b/static/img/CGL_Team_Pics_Carlos_Espinosa.jpg index d542c6c34ed69d084b910795d3c26d15888f2890..47c3ecdf5e8086c0b99fa20ff86022259e1cc520 100644 GIT binary patch literal 48798 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⩔5@qsJ`kl9P29-Jqk>N#g=p_V8Q3OLxk2*(tD!k(HV&)?$iNA@?QRb!|)A z2_Z~MdH#ITP!0ALLnl=`0w7IU!zu%7{hJk0WITm)88YZEQ2qj(>9BwX?G93GTnF~; zogK>LyzL$aQft!l`ShO~C+(bla%pWTe=lrA&6im{SOnIfZd7U2bxEsv8?6XwmzNk! zV@bT!!6e${)zs%G3tBMD(9XjsrxClj9>&&QkuZQ%txkowGcUM@beE^qKF3!2rNM3{ zoD*Ed_z#9W!Q){o+_;IsD8rIx3Iihsi50GP9;n4z>7!xU(pgSfZF~h?bgsxeU}g$% z_wgV?92#x8eR%$;pYRu8CE2V@4;vo@l$2XYm7%Xt5heS|%f}p$+gec^h;U199U|-h zO!-hB3NOL)Ym%n-rDb^(&-BxeRbAbby*-xMYklF30ah@?a^B$>yGt{?`qtb3hdzs>e0{c6AcYSpEo_c*a$@ZHS>El8o;-aV z1X85PNf&0?lh)|}^nn|CkXAOrj&o+39+iAp>%R(BID_QcRoabKkB*jrA<$+B8-Gz& zs5S&@v&5U!Y}JHNJ~PYu5M}k7BVBJ@ruWQD2quSq*o^LzR+Zrv?QDV;Y!~0tzWacgl;Svh)OM`>tzoy%KPc#0xF2RIOSMjw|9 zMj48letk2q3`sFIzztq@F%T8>5t3KV*T;IZ)k@j689*Dnbo`OK9km7CQaXwS_gb#8 zo`jx4;>&C73HQ zmB3+rS}U=D)A;gtMcDlxRG+DUd<$Vz5JMjP)7`|D!#t0B)KzLnw$*fNfV z-s$xDD18)kN!!~lH6epJV@P*GXu=Vshklu@+j~#zZP}^A zV_u{`*lTXK2%Jd8=D5^Px-Yaq_t-GoJ|&tZ%)9#wI6Le*nNNh&`@On8P0)7YZ|2OI zA16z!mx;*w9huVgb7_N4pUj#c;5|NUQnmOOa95YNgs3F$7vyMZ&dPlJ)Z4f17r^>s zTj{Hw#8fikyR%uEf5-Z%Ib+x7qPM!V+7}0y>>%I=2aG?JpN7W`%N-1hdl}A5 zY0M-ic#PKgLUpRDTHhiYo9zNuKZ!EpXZ(a2oKkf3_;MAfT^pNPYWOkI$c1clHx9db>e`B*6GJI7oYxuDJM69>TP{tRob9p+;sQGxmTt<5b?z z$hDy$+r;Tjc`hd&F_~5v{^`~{tZE+V!X;?3hB|7KDufqO;vcF=tLI0$Z9F!p&!?oJ zjIA1Ry8&CI=UlW-!WfXFwa7Tgy{0+k^EBoXepxk_El9)5)v(5rKF(Jh`0<}VrVgBc?Vu9aDX}1KrzWQf({>jc9S0MiRlZG_)>cV^ZYRCKob&1?m%+wNels_w) z)15K|(1h~6^Z)vgN<>INma*Yfd2T=N1r{sLmZ86(#f zBI>eX<2T>a_c4`K5*eIY?WhwRce#{+&5K#NzPQ+|ccRY(=8G+IApqExL?fkzB~1*L zTWQ%}zy}lUG@yx2Q)+|yx2(};(rJ>$5iw(RR$!e0v8#w>6bw;z)O*wbOi;+7YwmG5nUBUMGKCJ?j{vTq9oF1r zUQRAJg;^h-Z`68nUnuryEmR%jRCIVvdXAP)k@8;>eutJFco8@#2@}4V;vetD0#dLK z=+GudRlFUGbb4aZuTv`KEkV&13HpRJk*4iBu-LnU8>7=`9*R<5hh#5LZf)?B(uIz8 zFtC;2$`c7`%E?P(LKi2Wj1XnK&-GZqsM@a|6qrZk=HXv^C&=Z!#5OwXe1Q`hWf~*# zST!m~+C(B$dxEW&o}B{!{`i~uenKk$R%Zy)PE)d`%4PCMjry_Ms0U8Hq{>0Kh#(xC zm-3^YP6p3SprTeVKEu=JcRpqw*-WZ3OYSj_z$^_2IAdKRN#Lw3j8u0X+(bJ!67ym1 z5NxJ3(X*>vr$oA*%%RpQO)DXi$H`uapuq;_DPPov)Rng+?9&7ysK>wG)TO|H*FVv& z>rD>ybWEx$d`Qc%gY<<;+*E9H{1kX$<7Ar^*7@EA9ly75qs2P_yUnedq#ts==aBO$ zg4KX#MCjI^CC@Ys7s`b21p9~K$vrBb=FZ*%F$xZD+?8H$><9s1FOIJzv0BEkek{fM zpZ%Vwq@uE6(FTdhqDPXQ2F%j&woBQD7~wDT9aCRpZEQ%jwXu{sL82zq1^-RT! zad}F)nR5FXCLjAQx?-{TyLCzymB9qVIVRm1gg|}oqTr(N+r*l_BEBo*%*?BlFv-lI zP(iDm^#K&aGDFgzaeZksHS9bXuj5{?Xm*PEme_Nuq_d2PT#h(R1P5l>@}bUmhRe8# z9P^Ge10H?kOjk>sl8cXG!tacvRs;QEZSeGJ*C`Rk4~i;k zEoXLBPFLH!!c2s_@a|`ar{ljg-Fv4=GC3!aPMUOsecf1e`eoPYfZHv`5j=qtVAmzz zglEh6Xm}}|LOF8>&z`H?IQm@sLAGKn<7i}&UULC`g@v0r0X5L9?cQNHjCMt}#B>$J z##j5fA7Jr@z86;;Ia%37R+@d=?d~d&H1o9m+TmHxhat(2+CTn|PU3A_s<3Gkb>mD8 zm5cQTFvHXOFcUV~EsVFoM^GFt5o%YiN$TXsY~AUc%ev>Su0@J5AuV zZ98H=9kDhXm}M6%Kaihgpd}}?KRiL__=VEOonWtH5Zrh}9xj(6(=xc4C1ZWHbB;Mr z!EI}0k=HzYlawe=*V4G>mt3xPqFs$JmXYzfaU-G~FKKRPLUmN5Z((fK?QuLPXz70e zaUjqSfps+lJLc`=s)c1T2RBfb=2W&sSh4Z(yP;0MI!AZr$udU~{Ht$$y?Y)^jjW9e zEo0_*t9Pm%CK&mivR{T;5_fCX0t{r+O;?>LoJ`YWgp5ipH$ain)cI0T>b{EdAzVG< z?#RM(p}znUx&gX2)PQGx?e%~d@t)3*xp)NR6M|5<;r-3ZkBYV*i>@@a=J|nhUK3y& zRB3G^*q4Zl)xhNy&&N14^!Sm6sB!LGoieXRz^1Q`U?=gi$~d7jo$EzC^5aJ{f|ifslwr`J*we3Wu1_V zzg7A_l?I*lC<$>?YOz-x zuvlnJWm_2b!ntr1BP=|{W0vWyW?jdbfooLZ!K%D|#S37JYrZnl6u6SQ$OYu?RmJzdutpZCg4WPGd--CRXW8Y9bI1!oZ+dfP1 zz#W=?*W%T=ZW2$CD4ZA`R3iJ1Um0Ri!NuEA8v%ZT5Z#Ad!8HHZt8d9XjRBEgqIFtz zI_Q@?1GFKY{3gm7=tQ1oe#H-ZK`X?SV@T6r=()hiW`e0NaP4T9yt0hFl;o(&c<))J zdN8~(k9WZ>kp9^Z{ul7#G`{M@TS;NB86~XSc?y2pafw)0P01?6kCi}wr}DjD+n^&6 z6k?RWd(v>!M&w?taG4nRCW7&HCzS{|aH1U*3_9g&F^zmX2~0tV>#q!PKw3Nx_;Lbz z*Wu|hcY;F$xZ82`2j)r#kJ?7Dk)yu;NlRo~Y3=V=+mdAhL5SegQx%SF_(l)G^R;9I# zEn%&C+-+Gl>9FwY%350db1g$@7Q09~hVVN)(rV5h|Da0i896=6myzOUp8GIlSZoG~ zqyp!$cHp9HcF2Y(1Wseu`<%L^<`~qG2u=7g7Q-9^`51J9m&sNR3Xva=HWC+CI-e_I`U{AswQF)V!|m`A#@|4IZQt;>(0`GUS=`nC z3y|0E`%WbC>=<7axSRkk?pkA+t@lh-Jo^h+sc@(t{`yN3@FI#*TKA2qZomzQxexYM z+8+x;^Rw7u>Y6(JER*3d|DhW#(Qpc~51WPwukC02SUGi`s5CFS=d@!?taio5@NtZD zJoT$TevjePk~36@m_H9P%Pw5!phXG|h~-d|c;n?XCjZZs{P^eJwO7qWy&2EZZmS`+ zJPGc2I8Wy>T+hKpUw_s`*^Gfqv}Og4H&q=Tba=&=cOkggPxeocuN(s=U+K+Mz(lDa zTh|Ur{)p5NcAB?^h3Ubn0Y(9iZVaLP+h`F#7w>NhrR2a1D&M@b6(2P}2U)f1pV~bq zjlL%Xbs4!|fO+4F@Tq|GZ_y+*!r)>d^d^tl*znz+mXz|~D89WKbnnM2z5Sm#RgT}& zdf*GAby?zM=OSmrVQPAsd*^&wEJH(Ou6?$xZ)N@hP(jjgW6xvF?lyaMiWp#`x;NcW zJ4g7xx&Y7ZMz~b&iN4Jz=%4^+Ey(6j^v&y{@^nnB(8>;nZf}BKmJqqgD9Xn+GMNjd zb!p=s@}`{Gv3u3*FNVE?X(iK=sMQQ5K!djePRK7+veDK`C2viY4&S9|%B-d=JUg{q zRt=IE`C>u!88~&CNuQe(gGM`-OI+}(GDXbtSrQSwVOvzd6!+S{06WdsYlrcrp;T_N z-S)>@TX)>bZX#8)w=@LOIxt{ftB4zyl8Cr9V+f?9+Lr;>xU+Q+;-yJFE7zF3|<@c63p z9XTcYcA2M<9{Sr9UyuSJ!!dbYn_S` zkK0V6*}Di8oKoMRtUojY6_39^IzYMkiDqz~8~DT6Tq5pUN|twcU8>ZXz6l4v(uCHs zi+axh_(L5^asJO(xK3O&8bgKK&*Zu8cH1lzLt5kh!qF4cB!63U(Pbqy(N)y}T6*S3t`b$x8ZEG-4aLT;$-uD54>#o~h(J|1| z!R>D^SW{(^UPe_%y6T#Sd|KMTljT^fYCK(7?QnFHOl2zgk?Q;O$W_Jd<&c=ES~ycQ(RS>9Y|XWqo+=cP@g7@_uMQr z>k!a>wBFIf&1lzm2VCm^V%x??f{8`{SPyOhC(|k%f%eWVZN4N=gk`5D&1XsbZ{H&P zwuk8L^EpSqN4#%eB&_uiw(7W~I&FS;cC*&UI&R`KALc{2)L5}PU}+1^QQH5`h{U8w z20WiFR9w{I$h<1BAEeXa`>_@C8e@6-fG<%_jO_N2081>T?f8p>zZhEn%iE=~fYP(kwL?_-F((}bql{Eyo|l$5?}gfk`?7PrWvFoVueGW6CG-ILL6>o%Wv08M2XRWAem_P5iZh7uZY)Fmtu zQ=YJ)fG?HznRPi$FXKEn66(FiXdOTcx`Pz zJUPG!0i6v{Bmcafb9vGF;ftfKMX|stz}2Oqf608EC6v1dN!)+nk6EnULtRR=%TScUJ7~ z;2;z8GD*BxjXDJV>Ls3*{{p)B9dEk%qD&B3IH(5`izNS;I-XK%M@y3~`TvJOH zI>Hc|t*msqZMmt-XOJ(&b0oqBTgtWS@MzWd`HY(`^e;d)kg{9KYHvEh`&HO`9<?(+} z_j_?(fr66RkgvD_Zp|`R+AK+-<|*JxZ5mRd=$8KSyUeAYFP+%#32i(*M|&=hWntCt z)4usuevI7`O#V~@XV#3 z9tJ-Ifdk&!vHf@DgZYeU{-lud1WEQW&za>iuJ+w@8umv_X!A%b*#+pBrYp_zDU>--8tDQg{qqx3Dow1++HnsWc#cy%JG z9=~ct3Y(oh@xpN8Wl$KFV+l)4)g*Wx?bK<3-w$_#5SdP^}`!M?+QFfi&^$vB@ zRPU1xGTd1U4D8QS%umN#Rp zKK&s>w6-DOI$wl-SDCweM;LiMGZyNdxY&t6T>eu}Ba>jd=YpDvjkyX0RCX8w(~A&B>sodsO1rBtU(<&c#^iA8^y!N!qRERIX90FvGk1g8d` zrlXe1dNTcb`WKQFiSQ55{yJ;{HLLeL*4ye2&sKP|(7bzf&|$tut6TYL)tfr?!~2eX z>J?{sbXUxrQI9Ugue3Xh!TRqS8)NTzu+iT@5SH zwtJkHlXIw_D>TQqQ&gJW14(!&UIeBUU4_?IEhZ;Qvo8ZFbePo(>C?V7OE77RDUWVK z9$tuhrlr7rgo-G5`!x$mCkgSrQ6s+4+R%qMCpBki6pr_SJyYcZZJH8)d5;{Jx#gnu zetc&>*!_X8X&f5HjkR)v$kljljU!X0u%L!)$)n4SR~(&4_V?RQv~CD>8eC~ZV}eY| zrB4*#`<#rrtJHC>Adl+=mV-V7{90(pDR|<=l8&hV)uVFDK7y`^Wi~tsjThWpRGu<9)|7dK(oSCBV?|{kINLHP0sPpYy&9v-}^ekH2zeM+vY#elbC;sa5 z#d7LL18Lpa-vPD6r?X1YK99>%e+;oQZf~F2X%T`n)H%kH?>N2Q{(+35*P&gv)Aa;A zkH96iTSh^76O)6Kt1s|^B96lX0d!Ad{z{q_#eM;dyxvac!dU90@R{y}1% zr)VCf!KTKCvjyF_Rns5e@rw-LyWbCaKOs__JtoBD4=_cJerkR*keY2Hw92>4eC69W z0{gOM-kqZHTasNVrkC*g3W<%zZ1Usj4^zqbH)}E@rBq5ATd(p!mrA6MnZlt_DT(z= zY-PYETbti7FYV3?oTFskqOwJOL~-St8M5!c#4grFHABVjrQ^%**c@C-%j&)`rnTE6 zoC?suSBXVg-2%hN1=eI|d%kcgW*wY=;RgMeBrD^cFSIv?OZtM97iO(-`%7iS7>?P6 z>ZTS#H3&!kT0GhMV+E;JW2NTox)oDg!~mPDi>-i&i%yqaQRCfiDc()N5?IbQ@K=Zv zD%K{abuA+<5S4CM9ni)7yIPF|s=^}_plfM9U z^Vd>Rth?w;(0d*pmk8asu~QBxpKGzS`l&&(L#Q>>%&O z8&A!2{A&zVmokSPNK$yRvoj5gmAUag8ua5_G;4&($|?H$5NBL1!vazxRoM)nspoA~ zccEx)#XY_@=a*N95t|E5zLv8#kT7bMl_1-mT=y@08Qt&O=|3+KWUXXxA~AHYI3rI= z+xW5f&~wp@> zt8zcf@$@>PW40vH_ou#*#QFyDICwRL`Urg|GEIaGp6|&^ilaiOwV!X`#45rbJ(X9x zBJX3D8DU+9rAbtpC?NPwV(;h(m`sF%?Vt2>k?8xLI$V{GHL)*?keqw_qn6WRdSO$fmbg_DxB8LXIz=`s6OjPu>U)GxT|Ax z(g@f`({O&>>GuTbuT#sB=U3T)C^O-K6Ik|^7A=0O+~_Jgv_a2-lUJX{_c(X{I2SKB zS+zOzQuexB2QQw{Hu5;EE!`|>a8!yE9r6wMajSpp)mA&>IXbj4&3=lZ`~xw7{HV+$ zALHU8=x(1F{XW|9956GB3og3WqPwuch?!RwMGs!YygmW>-PrQKW;RxM`K7-FvO8&p zLurgi%sG0`hn1!HHR<#5lYykKvt&YbTFkQzU*VAFhGbpsqM&q(ER)}L1nYZ66r7RT z>oDs6Zp(;95B`|P=9H=mHf70pEoaX;(-D8%_z0s|@y6njAAee%=1+s)eQnprXc|{g z{53FJY&;&Xxb-H$Lg8PAk2w+FII0m;^m$2`uHF^=#XV(|7dfji-`&LEbb3pNHQ5xw zY8TPrE85Gta5Lq-?xQ2Ouhy7Ii`W%=*tolWqP`UP)fj>q~J%-M7+opQAEh)WYj4Y+9M6*k^5UWj5 znz~8Jq)23#BX`j*-Au)3U;9AuI$Aq@lB3gAu*olmrF(mjf@l4dbUnwvpl#x~=vFst z^>Gm?YUcF&^XxcKhLwu`^Ifz*%3BnTL#`W1Cui(xeKMbPmvq^il$zQFI|EYuH{UB2L#0=OX zXEDBPp6BL0c5dz8lzOTu& z<$Zp$uRCr*n8_mkf|J&#f+v`vAI@|&Uwm*xc~`5(siUNF`!9xJEeeOsyhfjEX01SN zH2D4~+FMl*@Jtzp*ZW$Dpd7;R$lgl$?44;S@h^aY75AnQ5jyZ9LqE#fDi5Uz6E7Mx zXl8#efWzRIgpI{vC3V0ENNUj(Atyw`&+ghgdhA#^`YoPn-wJ8j{N7St14$Ujd)2#} zkdk^}-|8#xQO~z(t+K4jIHp7O1LeECZv0pjjKPIcWp9YXi_-5hq{N=_=i)Ot>t)!Xzz{z zbIq~4g|h7?_Re0USSa1U?0UAg+7GkW)5HNl`Djpd!7(*b*%r>vAp@hWqDgt+qq4eUn5B9B!2y)RJRSE9IsAaGOdfBNbabpINvBg)SdZ{`sk!2>o~44tES{HdC;i$Opg? zoSa+CE1^CJ@~hF7t&-8&P|m7Toeg1QwvnoI9er&7&Hmx+M!$7DnTV=>t;0G^r~E<) zdYzJ9Eu|=0cU_#`eBef)Ym+g+%7l2#Q<+G*g3ig}5@N`);k3`GLfKU$LpEF?>6&VK z^P`kSSsFW@MPazRs=9~S`=mnOGobYaW2)`V7WP1a7jz@giz*Hf5=f@)_cZ`mLISIE zB?jn!(7uwZo@Ccw9DN zO6I_TmW38^IplACrQN)9)7}QT$FN%>=F0W2|uY-!8!xv1K7uJvxHD?x|ZueM={4tQQ4ox z6u!SGL-!MO8wR4gjVF33!SlmdB=}#D1uu{1cvCGQM}+>+XB@H@-LBqdODI#(C3Cb; z2t`U~){L0)2vSQ{41Dt-l0G_9pEJYH@?ShUzx74K#kQPbYWeO{o-A38FDxmhzti*< z@NovA$W(5KLLaX0RtUY%5hZYzSNM>r-FN!W|4Z@AzStNY5<27yxVvkx?`+-1(M}F= zPP>xIY%)~s@RB7S3Ce^85v&#SnFR)yC#%&Z?j#Qv+WXD%DC%Wl;|9|^3U1i7Empj2 zCwv3cnMRRFAypb5$l}<9UL?%kfLn!pN}D#{r$xWx!9>3ua(4<4cER)j(B2_}RpQG( z+h=`tiNsRb%JNszI3H*%RjW=Lo}^iB7(8;9YSj@qL=4dHa*(^yP5h9;`etDDzWT7* zW&Pt)zTdQBD^veoItRBsldRZsS>ebrhm^zh8fv;e<^?2`gjeq%!9f&QZ#jMh)Hsv~ z)mt?zdC_+WA7Jr@G`0|{lAd2~l_XIckwG+Df?@xbTH3b>81#^ng+ooD=L*8DE84f) zsI539b!hyiqSFdKg8N$HFjEm(u9>^sXpC1ZYdD_hSH~fOMpv8g$u!-G^nKX@KAYi~ zaz2L#Z@9P0TByu!lVumx{?c}9Qak!?21h}`i*7wWX+h%5zW{=_LnAtDW=SghyE;7t zo?&FxH$MD~W>Yi-<*!+<5ET_qb{#V`o9qFhwl)}@iT4k+mD@rwi}{C&GwbPMe6gIu z3<&nFuj=?*WG-651jvR{Vcr;w7unY7U(fhXx_jq|S5SLM=TE%t2Rvi53<-Isd~3+J zh*S>WQ==#DC+=8vy?$kVV(Qx_?$F?OfD^o1BiWDeUT>Hbx&V7eMVL;*{XgaIrtyT{ zpcxJ4=T)c_e8>?iMf=2Co}f3(GjQsh2XiEmr6}2FF#cewM(DNn0N;z%7yatzuXW1) zoYA%|=qU)`;eT8yVyWOOQU-bv*yhxTR(xlW%?971cQbGs5;{F;;80F;M7FIAc+jMo zi1{^DjEg5#mCP7V>lt-(RQg`24lBMp(%%i!2&8i^YFg~>A0)oMeSjwz#cZY%I&%ni zblZBXg+r9+9xMDtS!bcHU2X|}n&v1~xkjZTGpqu6?y}A%5u|&FpydJs4r;00Hz3*- z4&UJWw|rkH85!LBONs~aiN69UO=+K&6u8n)!G4WSp8u-Qk4pR0E`OMliF;^we0#Bq zX9V}DW1;S#aXIl}Z06PbCw<@ww1JY0WOV1w+N3|@)LWxdvGa9GSqghs9OF@C*vu|l z(iO4Ypy%5rB@NV=KGw4$shDmiB9hH2OkNf&11o0(wWX>&Y!gaKVed5PiB^hk-jcgb zFkpq+DBH*?eJ%GOw*&GQup2fbXOi9d!~}R~!t$e`2ufMBvAzQCBPsk7QGQ8KO$X{k z-At?d!qkULJgO`1T}2;tv!8em;UY|~qV$bb0Y!&`Y~tnBA8mYGg6$h-LqqB+K7EeW zieQOYEZHgWk=ko)c-hJ!k(|RvrT2TAH`GUJqz19wH@kVV07xUYW*d0vaxR(gaALT4 z5KKMaxq055u8Zz{Ze+X!ZLNnI)CxOoC39X&OIQo!2yI#M^or^ZS?xMb!BY~R?QNFV zmsUmBX%kUQ&lrvV+3Xh&*sUhi*gtJIp*<5{%A`upRK?N%RmC%MUCA;c4SKAqo~+oD zbV*SCr6XB3U-k85@B5NyC)F1Q9O0BCgkscp(ox0=S+)YN?+tBKtKW8bPW`H(?IgP?GJ8q^x0 z;GD;Q^xCVtfJ>0UvFZyNtoGUk1b52gW-?RK@Ni}~QbBs_d^O!q%h2NnuXjjg3NaH# z=emcwl_E^GC|ulrJLfoeOJf1q-{lUUe+@X3i`DtcGCgvx9XZ=kSbIsV;8n&>5eOEspt|HA4w@5JC` z>3%Mn>EM_YYYY58z8j~=ZM*Tbnfay~U~v9i5UoaoE2n<_XrA5Ju_pa$gLF^iuHQ?) z_RA5_dJhL=Q`f55)s07F$SR4ItE+v7bad#|qOuXLmRC@LS`eG(sEvq3np%!bPHEEr z0GvQ$zrc3}yV0j?<-iBjQT9Yqaugq5T1vY`ItcT|(554WIrpmaX?HO4VPZcz^pkB7 zAHqJQQ+~@C7#KaXnx%;HGkA1)vIa%~um1pAtwTN;KxW|a+ZEYeX)s8oUKJqsz|Cb# z;mFXIi;rVkDygkWR9bf(rr${w$RLsm=L6QdO($3vD8L+Zf(>%9T1#rKq=v`c?~1pj zW(l^HAxZ6A@=5A+QJ7zTQdY4$!Qvzge- zdvwGDyUQE{_z$g8jYqg%oKHj2bbD-qkp!+v7AAMG7iPTJ+x`rMzt76SqF?^w<=j;67cC89f#r&^2&0XXQS^Iay1J4J+u zj1D%H&2c(DwH}}b2E&ew2>m-(cj4Fqk?+*e3az^Y>7=f9R&HJpUuj}HRj({Eax!sM z?2v$<)`AVAHPs!CChUB<@s~?$e-@Siko_0elbWI7-7*{P7CVRegi^F}b~}4lZSnHS z(@?gZRG*mq!}xvc55d}O+MbuF+dzz7LLUp;Dllt)Zdj2Bb4^^kpi6P3%8|fY7~yQG z10WM!50CZ9rSLp(%Isv8VYK?Dpb0EQj+>21091|xIr`LcDcg}qVY}SXQDpj>ChGYC$$d za-@9S$tRnx39Q?x@H3NBO(+?xYwMHH8qq746xkKc=mhoa+N;TMWRIynnXK!X7)zYz zClzwZM7u}lPm$c(Ft()|fhSyJ-m95iNCc8ArMR_-MbojYOQ@5OrxmJ>hS8GPp2ARD zr!~;q465)+u3u02WyN+nX4X{(u$Zc)V&%8VZE_@1z{GjaO7muNZX|vb^M=PFy-sU? zGf%r!&f^i=it<~sW4MtRkUDZ}j}bPSvGlw>2+EYMQ@pY_3?*P(pI*b-xm{OJXkJMH z*u4f%E$v;rYFgi(r#benPsFhZ?hp<_up`>K@YP#-nd7NNHqq%n1vK@COSq7N+t_D4 zYiq>Yi+qYk-2C+i!S-|E$sB>X+mTj0LWCFjPDmpiE3UT36(n&Nju?!RSRS;`w20J< z{c};@pDI(|o@*lR^z3CER||UB>1xE6+QfmjLaWF*b67W;oM^|+x_MhXBAkCJt$w#t zp}}&Q#sx#B#|5mb=Ue>BawL9DbV3n(n9g$O6YD7+0JoHLleqFlBpxBRN5M&#+#Z6j z_=drCNMpLUA?0?@6WUHuk!6%XrZw(;Vz48%N<>_4|lsWrrgNgP-M5Dodeot0%fQj-ZmB zbDouA#H-2AIIdpa;pQhf4x_(%*wUnLICGUF@~(Nt$lemWJqtmJt|d*p^y+KWG(84M z;`!G+WD4TG9_hwsNgXf<74DuN)6>aNMt>U0j5(#L(^5_`Jafgmdf2mX80%ae{ouAt z0s$R;tK5Dp_S&tVn-MtR;HZ=<+ePD-AL_<-ZqY=6X%(MtoUm3 z&gMiRq$>FIz^hPc)7r+C_HxX(7Z~1=oFCKc`Bz(WrrzrT1=Nhk9I_zXeznv1SHU*+ zcZqT>l z=|Eoq2Hk<~GB~c{#>O{DwpDm zd|kAb{>s`oK`tL72b$x&E@gs1&5?%W8p9P@QA)>t2Mns+v(UVIq76eziu&1d_Rbui zRqtGn#qzOuCrE4(R$LGJ=e>GQhpwX3tX|#7VCq!o(AS*&d5x_+AE%CXrNIr4p`}ie za`ua^g0EIepRt!lc?G*>GtNlreNAZFN4=L7g<(GB11BDp(P`f?Q&l8$Q!b=^usU_9 zrGTz$MI-Nug5YpzqMI^gUI@idx>BPawWjNw)eF@)sv(q+m0|}K9Ie+h=TrBp30sPm z#}%O-a%pz%T8uU-Xru!<0C)1DknValtjD7ox94$Ht!*88jMUP_v{y7) z^Qt_yR(yB5Y+3VO8S)EK0yHJVm6=bg6T5<#q4-HiJ}=bp8yq2*izVed?PED@DC zq~{c@j!U%4`hB~3nIkpTY3Z~KjB!~O_U#@SMQK4hr~rz>*Cump=%SDW2evS4%sgqQ z{fAg!qY=n=E(LbR`cN=B0mWo^w$b%FYbV+_d7%jdoEqn^3!~S`F)p1~7u4iskU*Py z@z%M$Vl}w93~*N?CbzszjXLscew#Sru&v}-){7_qrta5)h$zZ{ZllW?%SS?E#WUIKeotQoPe`G4O){LkxH`j}1l2)M25 zsX+%F>lSz(c`yg(T66a^ap;N>MuCY?H*^)Rq}ejCXFcjTECR4BD^>*xQ~||fR;Bhd zrBACpli}=W@I*^zXdNrrbQp+5!tq`&@W~oDhW-?gb6)YFBAC>H@{!)O!!G8S#*!-d zlTJ-S(cp9pthge+d+|qu<*a81G!SM@&6;W&t-8vp$sSmS9czHsJU=dntWOXbg`0e2e{}Z#b?Pw2zIl|4_t3-eL?r-VP7fbiK+bAjnU2+emE7Nps zDKv|965ucx=DdscpSeHSx?*0lmNq97TiR6STOJvw+~j}`ee18%+vQ$s zgs_+Qi}bG3MU)g2q>Q4@oe#)9l~UmKsp4L$c=n>8+C3Ba1u;_dL^EwRp3}I6W(jyGNFNrzf0O zrfbmd3<`|%T$s}LT<2&RHLW?=>V)iyx=xGcNTrllTWg>$I%clux=;Z|(bLkpi)}b6 z1A$d0*_@`?%EzIqXXVG?Rp-*aeg$>+Fl^~q_inL_=LWO6jGNfUTTvMKfa0MzX4(L# z?r+JI$DHK$r`kr$b4|7iHYQtAdi12Yfu7P)^I-^ZeulJSw`L1gR?uXEI3R=g)H|Bc zsmW0@#(p8j&8WQb1F}pueXA$IF(vk_kAN-^qvbFHj^?|4 zc%-gUAnTmv6o9qLYLF~ys;;|7V~n4sD>}NZ4QZr~U7`wkH5){j=dD?q2g%{Ho&gskuk%S;A2)iyGjw z5C^q(x(%Y+!x(1evT{2bl!}h5^bZ5+@>|6ocBuMvHSGQ$4Yfxc47dLPTD-Tz3>GEa z268#CPVoC6=yH44RvoLE;}hjJE>k%ov#zbxlaMo7&Q+8Q3{^?uEXKNKu5eSAbDWz^ zjk3f7M{1${lM!YGaktmFtzB8Avxvx`kPjlcr12zABdN&kT<%IbGqw(Z>OyzqZBTB{s#Oq9e2N@tgYns|^N^cGS&({>?TP1qT#cVipT( z(i7!Gy+<8S`Shxlkdty&>~S^(?_Byk6_r34()U9yIg1*xAjXF00w4l3l`O;=%Az0DCuZFBitBZd_f#NpKZ!>w_a`q%&wAo^ynL8`Rb z0Oq-zu6*Kbx2Z(0yF8lBhfh%9h|Oq%TmnvWQY=^$k~LG%w__Tp1Pav?1zdYpTraZ} zOL%$;zIzgw`^%0GJ&kiZy~7YNYewp3Vg^q&oi(v`C#`3Dicak2_R7*{Z#nB)Hj>B~ z1Deo^z%yj6O1gMcoK@;lnq`|wF^rRnv@TS()#p7=rBYaSjBcrI;{mBRVsEX{&UpJz zk<2%NOGXdRkKx5q@xzT(tWE%iI1r!%9W!0z_Ho`@yb`YEaf4W1KGSV%ENx-8<)e=W zJ!)F_TTJ>K4ky}0Q)uVB9db^%aQjV)(UstBRyLW*Y8MEsPB-|dK5*TSx{lOZOHVhy^+r?S=xAW!rE8*xf^u27z}HJ7w()-g!*{{Ro|K&vAuIOl2L*L9-b zLmaBe$8Yg^SBTha&b(w}90G7_snL8*u&S{n9vEjBtA$=xI+WDndx}bqpoUT@NkiOM zp4)iFG(e_N`Shia#;GmB#3mhZd9J65Ry_XzsZXKY-C9F;1H`}(z~>#S!u&~Zb)sui z#B+ehAa)(GUd3aop^OsQ3_WX-@wS)!qo_6HByRG8wmIF5(yM8$4RErRDcV~cPL<+k ziGsY6Z6tA?pM`b$e~EFlKIH^(Th}$^`mMCOeaU154Ej{|8pEmk-%t&4LQV|yrx?^* z9@A^9th-A$UZqWGrSh;H^Il!2>sys}%ktyDTIp=HV<{igS-sSE0TRI^#dBXsTT0l_OZskx-ZO7z(P>;IBE&PX|KS>E5X`Hj*0G zi4Dp`#|M*I@XU<79xKXxSK={e;)x*pLMVzbFk2kcEaqlRB@9J|JBW!5V~#Cdp)9E<7G`Yvc(>e&>_*uG7aK5O2I|b_~0tw2YG+ zJG%RkTy%@U_3vAAa~zz!x)9oo%n7c$M_;qe(kW14!#2Y(y!S4aeYVvB|bI z`co#56*XH9#Tof*_Qh6tFe+K5!6K;KxKupzP~FN}5Zv7S+#b}=H*(b(|E z5-TGq0D?ILR&85Dvki#$GP*pSNrLhTM^%we9OnkTV)cZY8%VkNaNn4&aA{UcKJ~Xn zVtV5^u9h;h=+ei6H!coGrENjkG}U1S;j0MTF|_}xRG0~>a15C zD=8zsEQBaiQUEiMKROOqoMxKRWMtGMTaycqFQze3HPMqhPqr!sa!n>ejoU?Nm^X5U zrII#}$KI)FH;bmtAh=K6IpF#lxpB`q%|g+kUzp=G?{Y0;MYY>5e5Q@t9XH@rXnaBY z(jR6-uz1>QX*V=mo2d#;MMH0I z1ntN;Je>Ef{S(6pdpfv?6$A`-r|i?%wO6Ydt7S$tA zORAB-Jd;_T4)F5n)**0XW*xZVx1_S#g;ep>WM;Z)(&a}jYRXd3@t+&m6uEZWfODSJ z#iGf$?K#DI&%_N9X>HzA4loJnkzPF>pd*;9gKLBH16r9+0n82NG9vTL!YH*-?cU2p&=uLRbWmagO} zW18h7jF4X(j-b_;C6!qeZpq^vDW=h!l4qe=&Sz90=Oh~6h+-TN2YTl;82itI?U=j6~<9E2kAOTmW%H5PJ$NBD67WlQqAlHVtG%0b^R0 zI9339RLK;MksBz#N=djC94+#%(w%aDcf|!6Q%XF>s@Dz~ao(18#HONdYFlMkttGxj zaZ=mcoaU^E_aNe?hCB|GlM4`(IK@_&0o%1+lx^my&72d*<4)mXy%d|ilu>b5^t+31 zn;_MX>48+0XA6>yyz*$} zZIq&{Z$UFT7;IJLa;u!=)&w_3Fbff%YOrs~A9&;ITPT@w>S$ct6~`j8C73f3NT@C@ z%K%Bh6_I(UVZ!8qPf<-q=Bk@!&)P?r2qPUT?Yzu+Bv&H3klpu)9ct_v!neqcll8?u zO$Y3m*IM0TTx3>)T?5w{t~S?FEhaZ}TCm@9*QZ*A8v>@y^Dh-b<-=r?P@B@pg*|Gl z*DQE6q>JTg4_CwIas2CFOeRZPi2brN-nr=CC!F;ay`{Je7bI^|wN!Vpcv*7I9&f9s zm8iF|te;_4#T!4&jhEsS?~^WasKB#@uv2ojU@P zWdb)o21u)R_MT=k7~{2Aj@f?k7^^WKFC~6#cBZri7WXXK>1rVPh!qv_RYe={2k~aE z#XGWu>yb~l&;|U!O)ADS)2?db`Z8j8?xLGz?3HQNeyDmtQ- z>_D=Ral1LiNe#B}0LM=C6u=o(Hxd`UYgwuo)kif=SeqDkkiXqk$n_PEJ%o}mEDi^? zcV@+8d}A5sii&L7#T&D^Iy&bh}<)tx-%-E)KMfm<>}pd90#^_g>PoyWNqyjn(5Osiw9!7CW1ib($e z+F|n6h`qN9{((R=` zGzf9%1#fAd8nJba-6K+41aZY^k~L9fL#c+BV#y?c^#}>Ay*o?QuhmVan>2@MBR?pv zqrk`c8Nzkji#3EEK;NJ1SEBfL z;=7(@xsC<;93wIrA`Zt)W3XFQyS{)8)){@-u4QJt-*uZAFo=dq8Q0Ia4 zuREVZZ9e(TV`OZ44%PK0t6;ZLIu*$GuR7Me9InKa<2mVE)il`7KK7>rqgzO17*frV z*Qu{&@UoP&2;P_ixC>1c?CwUz1w(pQqUea>6yT`EWqnK0BcP5fE;fopjdDgXb52)L z80(*UkAKaO2_w?9(8p9?fQ4KG-xc%c#LZ=O&lg@wq%?3Jv!V80zo|9s-XhlqhoIiy zvtgo)l;f*of%(_Y4WWF^V+6>;j>U2vvX6%G0h}VYFP)DSyvKr zYV6PQR#fft^{crS6U-D;S)z-Dk6OC3Do6t(tyGE$QTgOoPjO~J#yXm*HK2?Tcs0t_ zr-jOj>8LyrY+;exHJ5#=n7(BSzT=wGxQFD2Jms&n>x{QrtS=4CCIpt37Yc zL59a3wP5PwBP0`!q|nvT&m_@i`4oac=Cc0AvNmx^ajV8#?*rSdKF;hnIO=NztSH?U zAhb-3FG|o$byX}yEwp>GK*xHqAo&;Dty(F~nQ|x+WM-cnioJ1~E_#v$KnEW%sFUhT zmCYDtT=k`v@gf<|HJFoaZibmW!TH5x>Lh2%KJmt*Z7dD_(pT$T1>L(u>9{`B}58RxBW(D{r;euvh&4IanLoNmTI;ChOgHdJa&?swWQqVli` zrMF;~uExiEqL%B|70YN=ixPsP0|0Ku4RyARLiXGRX-@r2DzaHhrw!2bIILUP0~Z@` zdmmcacPzLF3F-d;>Z)=eAcj`xam7#zpu++<=}U2LqF*cn zz|UF~h-Jcq%Jc%VXuI6f^Zs3+VxnX71Ci=#p_hei-Fs85klb7dkZ#_29)hYmlRG4E zUl{e)TYF6%ABH}3z;^?n{OihIVzKkVuEXN($dks`QLo*FRxmv{&-JbrXUN8T*Gfk% z%J(R(BR$)G%8RD#=U=EHVt7`qhh6CG(C& zM;d(itM)Pe`=?r&BBP@;ty5|bTDIBS(=`H(ppQzmAI%zr&my53wpErEBcbM_Hp~V# zn%RZ`$}%%j%K`-KC~D;M9N@J9xgVW1(+3K1T6YSIo|T^=9O9oXh0Sug&Is@CS<-+> z`qlZGsksL{RNSi~9ioa{`%zBfvOb5ph-7dpD)3+v)YhH(YjKm$dcwNBVT-8<6S z$*}=Hg>^?%cSg->b}(wjHQ}+vSJZq)(J8~@@vdmxxbNS+W@>Z0f;Ur9xiX}g)LQGU zaVIior+Vx33!^aru{`?Mlj-uZ%A&n1!wrBHAcoj z;16oPWdSjYiyVy4x=o_0Fg+_mRu9-z0u?RK6@;Qq%Bd0SO}K~U;9|7=g$wfHpq4C* zRuYGiqB0o@<238YQhhnWz}kBHRf+9ghH~IZrK_+w5lUo!mbQO&T(%2jj7lT)YnTQT?{cA)xP&vRI@k6@fEs_Ok z%B*1K+cTM)ZVvz+2Wqc$N&r>H4;;zMpaI&tEdt4l z2?!Y{KS5mWf_d@)Ng#9;+3At&fba(y!TMH|qukD{v~3?W{7a7Dc+XRsc;r-hzD8vr z5sY=NQIl}5ShMlfzlgPK{U=n@;JShdle879V^wTgK9kSJepY4<;f$>rL`_<&AqS~%}UYWlTt&1dRGO`_PUlMgA2fikBJ3Qf0g*+rnP)Hi=>@_5r=Gv8j z^SWoBN~ZRV7w+R7E4{kVx4B|F^u9e;j^?L&2hFmL)*Umeqy^F5BFt$l~a;r%FP}1 zgrN`;YQx-)$BM>^>?~Wjz#Sk2Ng;HON@ifY{3c~ ze_GAztc;};wGtun;EtgF6_c%ahfdLAX1ThEIR^?4Ak|+O_>L_i%1B_jSm$Lp$?xf3 zK6sy4pHOzWd0)>{h6Rr`=+MF_u6dCg$=K*TbMXrAS}w6%Ne`4x(1!}bv;G-t6Ss_@ zGD*D7j*L$^;8z)OIcWetHdm>wuZJ=f@s^eg5&P0V@zYmQT+2-k`VdiPrEB6yF3ax5 z2_TBDmxASYE(C+B{{ULQ;*|pGZRB!(P-~dp(YKhSh8;h`yk_j|dwmUOeZv?VM|!T( zl|L~6f!7@>B)k%?Faho;n27;l*Ayg)Wys0e2q5RLZ^TetfZM?X^s13uWfc$7tSrnF zhTXVz;~A-ODNK6sa(Fm3DwSD5_UnqR<`e%B>&9(wBvKU}m3p5_=xjCShvi}l_2RBAplwN6p385kCpeV~kP7pY zQa$EN9qI`jdK%#Ly=Y4hE}#LPPc>!yM;^q)tfYE&tv#jAX+pJ4XK zY6_rbh8vJcu6j*uO1oLYhHMP;kHWL>^2;wREdvG>WVElg%c_6m)tuxY@gdU0u5Eh0X>76O2|~n`UD2 z#@w8Iqx#nPiDH4r@nGco)|A!tBBRpB#xdW?YpUx~M%a6eN>owb9%0RUXM=C8rm$^0 zYe<4JjKt%9M?HG|E5T>EMDeZqkfCDKZXAKr0ouJY;pU|O0BD3|M&e#V=a32D4E-zV zFtScOtof{58kaIT&lYJg==#OYqzvXXZs~GohR#cJl#+`2e0K64k zwp{%xTW(xYA;8urDk@b!B}cO=DqL+|YX`P;N`J1Rp1FbmqWVYds82Nh-; zK&TGfQ}zYuC~1k*CAL6uz^iw2$7f|Eu5p1>qn%;onx*1Pwz<)6A-4$9$%PyK==VQL z*AE-iMl*it;{G9FB@C=(gWu>wI0G{9bDXxD#YgfWE{h!3P682d~ zK9$8ij`(hmYVmRz9hfdpJl7!Hj2i0oxy8bU1m%Wvo-3A+0PF?`9l@^}ri}I?NB4Og zXSk=wIUuWyALmJmW1%M^l3>-z%Z1L?;Nqr==|YUR9rILFn8q=mYB#Hmxxqf&D`>RL znrP7Tm7Emej|A0}0bg>mU$3iN(P?KijToMQi)1mdP z2$(!vE^s*Ktzp^UM49Ip91K*@>Pi?DCvfO7)`t{VF{rX4u_q&sT9GbUKw-mo8SPn( za>O6pmIV5AsG90m2Po;sW$!{re9Y+J*4h;dy~)pCN||-RBbj7%4pi}upmzG#BOI3* z8(_&ilbW>>Pa||B@yAS4X(Ddkhfe+=%d7cn7-J`O7PpUbJ-(jxk!fx6d0|K+sUtPg zX*LClgpX>Y zSCq=6WSaHQiHjTQam==*9$8eggYwD2?dx7wc^MCndgaW2i}E_M@8J|t{(5t^RElFR z)-*3#;XMl#%8=Ogt5%Dd1w`wYs}{h981<=;;;d|>e<(Caxmr-)yB~!F{FN3oxm^$( zgHTBs2ZCzcaTdv@%O1cu?MaTsW?&Q!J?av`v8T*=6MF|6BGrlubH6Kgl&z-inec7G1jz6 z3QfI>MgRr@#ZbGEVqEvBzS^Zn&4OzqRk{PeRb!0Kf zNd#y6)#+NqPh)g!WR(#hkIde{{HjUd4^nenX1}FNacuW%bp-oxN&|++u0N%FRej}j zVL{pIa*fI2uju~(xxR`{;EWofoPSEYY}nXqf_;xh8=jmsLnXLYJC5E6Ju0U2p1IFj z#j?Hm6+r-F7^~4wo`$@tv9moobGk3??Mg=#0?CppWo(Masj3=OpQSXzk$^K(uS!z6 zJX1_6aN5v>MHb8#={OdIKZe(K=tB~AOrw2{VPQ?K1&*Q>l+>!K<|;#udET2 zP>0+a#ffBA$l!GP)`U*Wi~=#}X}J`Uq%GqMgN$`Fs}hzx0x{mJBRTGK^{Y`UWB7qS zwLHaGdPJDyRLK&K5CNZRA&Up*W1mXDWpC!n07C7af{tc8B5Mm1F%5vAV!MwHXiX>& zgB)P;%sSOgCr5<}H0OCI<&ArNYrE4dzEychRbRUj@DJ9SjozT$k)ftqq;Q0{P>cLd zd)BN-5N%((@7|$+?gN0JbONm+*HT9uw;rHWSI@E*&n>meX^+6VNnMeya#hMjVf-rhwOuL`Q?3nBO8Ir>*Mdu-Rf zHPm%(8zdxZN8fKx%N*98l?8|Pn0T~{y;|xg8E`_u3wHn>KdpOteK%{f!OW^F*&d;J zqiFi&ibplkYer>gh<(0W9QyS78s)WrgY&du^sDro_1Pu?{Kp2mi+h$DOL_WB+m%pS z0kwe{KX(L%`c^f){)sfo(OonWIpROGGB7_%?Vb`9b!VLnZ0PLIFV;LQtZ1?@zObG( z2Lbx2{6%Ca!Tw!&ucBg^3K;&@WKuX15WxO*f#N@h8fLcf!TMEhc!8`{JzH@AS7=R^rp@9S9U1oqMdnh7FfoGgk| z*Oxjoj_CDi)`Y$mX{b9#6y%JxBzeH+inRoLm}J&gHx>v!Q^2UNVf3vi;|dNct>+;7 zR7kk&VBCNh40ozsT-Dp5l1))>m+M4WF?QvuQiB~SifPRF6fp_5ie~=+dMZHb?j(_k z&vDwS1m?7Flgn=S%~IS3com9gg4r#)<%iT(^{gAzan`YHu;)JFx?2@ci%qh2C0iUW za4Nj;va;Y-%3!ZrrF0Z9#ZAQI*;Xrl2`V`Dt1%6SceNxB#t7?5%oKog#aSpzo5Y9~ zBn%3o+SFk(PT}>e?RtNeh%5jGxrDtZjm^(&)kf^;rAaU0B%T24T`XEWcCoF-t2#j*GqA89opjQ}&Z9{k683bJudRDHd<{5z(>%;ZE^}P5*st*lIJIbJme_$X19v@C9zQJC4SQ{+ z==S?Qc_v;Ql743Q_pQsVO{3JHRv}oyB$BJQ2X`Q2@T{*GTu5y#E$tRojhDipF*lhXDCa*)jtBXw>5R+_QpU*N!g0{m0*w@#SO7uoUToFR zP7NCNvy~&7*tWRit#h%s;rO$F*YKyTJ&#(NJ7NbE!oeIo=cQYU1KOJmJ5L~*y$oo?0tlyak`@@* zPb;2Bdc6z`IZ(ferpIW#HxeqsK&YbtlS<{;6INtfh~z*kM9SkBBgMzBV4^PcsO zVi{kE_LGi#*G;CDkO<##2b^@FZYGYCNs1dxZBXysn13qhty_N5K{)6uov>hlC_jPX zx*IlDBRqO{t>9%n5vvDnqllgSlI1GMrt9a@#wy79I@6U&b25Fpji#R> z+g!=02p>u8}vYBJK5^iN|5aZB_ z#*0{D9W@O)Sr>r74={21*Ig@E;i-OW64+R1(g5&3l*l&bIXKC!`x{Hd0pPo75l%Kq z+B(v$VQ+y0V?54^dQnL-X1BQYuOtEE!WE8mr;&5WV%gM|2f$ zEkRin0s&sf6%wMS3$#=#%AE9NyPt>t9lb@jv`KBGz}n#FKU%?);hw1u;|z%?R>!%n zhfr(JEnXR4oIGWD`h)59t(`MeX(Nt7C^5=DVYr+%aaO=nlGyZU<`pB<^9@f!)U$57b=50EnM z&-hm?vg(o8>yBkgTb@h_7^Np7yG>W&KD}b9_Q;o!l_a!%MPtd}UlBzZbEeE!2RH+Y z=9U(!dmS;wQj)rngOTk;X@9~ytbfopdEOCk(CgsihP;=U=OvRgl znzoP@;M9$0j(Sw236$+h$axqdi>3>ldR2h{k1PQC)eEijNFs$Mwp zSy&CsYt_SL@{+vtLi*fkt4DHxx3uuRmzi?nJAwz#fJ*y;Tz;wIogwCFBU_DD;2)QG zW+eXrAyRmo#P&Aw$nv7xO5ARc?!gtx-T1!d=pfVW+0{RWDE6qYRdUi?urRdhJILC< zyu8&dl1*}Nu<6l)%V!r^Ki)lsbJFX_#5cC~@I)c7wmZZ_fW&nC1!G>esi`v?>7Fz_ zP?OTA$$D*7;kO?%3=%q;!lh?(q7;>jvR|9MM*8iTlp}6Q?Z~cz2@bEK*~JagM#zRT zNhBw1n&OEuK;VO!G2X4|dXrg&iP)@e*njaAj4ErXtm)~Y(?{T!yk=cDQ5UxmkKU|G zHV^m_AXaV9gLOhoO{Y10WALB$r|c*Kd^==m#Im*0;4LwJ=huo`*AG@c#hBHz~R8BDEX#t6az<^9bq`a(a7K z^z#1z!V{#nodm*riSYLl$M-YYN#Nrc_Reb;U-5PRp{P9KRtRG;1KCvidSHhP( zA25JioSMSWkHU1`q~q@zGG9%4jpq}`JYauc*R^fUKAi-S+uB`8as&wb(yc30G`5d?VBQ?8aZG9;Wa|)m0ZoidMOjkOKOQej9m0X{wKjB+; zS7qC5NJ|dja6cO6Y%MKO!Ij$Kx)2E!)@kD5;sV;;B2m;6w~F2f&ZUhApqapFWHFBT zIn7#(?H?%oPg+Rf;4_lUJ7c9R*9j6FkP&*E;~x30gtW3a+YKS6zqwDf-Wr_A-%WF)Bdj*#&6ZNR zjwK!bo}#@=!M;BpHnCXmA&F#$U6c84$TQi2$35%7G=CIccyXRB4)*HUG;JKxMIl|_ z^%&`n2fcb1!<(7yEX~q2#8H{nNZvo)fw*nMbOaNQwdhd1rK#m&Wy>9pSJbDtzOzX* zo0XNJn;*R&eMe)D=UJmwy^Xicrpkc*^BE4mQQn&r6WSufZ+yGZZet+%9giiy5=}BE z)@_l$bsVfZ>~gsuL&bVfk19O5w%yTk-&?o2yl7^(mLLEsS|S#-#jT*VHx}1EQxk*b z^lbZolUbI!!nBL_n5Kc-m)D0!8y;k>}v_f*tMUv0hN$>5-0bEKjT`~Q$)*XsQE@f?ESgt`qn11cpP0x67vkD zzFs#0T2sC3%xX1jqo%d;q_B9R`OGJyjzI1zEhHolHL}UM18p4ASUA{T|^%B=98 zlnidHn6Hh#qi9bbHpWBLXWpZebZF`{lRAA)IPR?kg&Dl#(>)rECsI=s4#@lWc~W%a z{{XE~T<(_6;w5$hHw?Kw1!w8TOM98^p&_0{^8%}KF;U6xnsYTIUDR$G#^6k>QKFD5 zjAL@1^|@_yj*O9#eqFK!)vSs;&UreSj%bB+f?QsSIS zjM|a2WvUBlji{BphXs+C^gY(CJeIR3+94nka6#iW$?C|~^Or{qQT){eatC~R)|ZxN zR!=;UItD8Q#?;qzyFJvCn^V@;*8j=XXBBa!; zW`O6BRbicwb6*9i?Y&KC(G!!3wQlGeAm*|S!I3!5eLZUZt(DTM$uljwb~3OTtzkx0 z7rKn(t<>Cw*N!F8tadLyR~V#v}PrDYvLe~oj#BJr)Chg5xxhHU)H)VH>4%d9+2b#Zdm zmf`qT<3BD%XW!~K*GnVZE0#mKRIexTuSS&$beFodCB{;Ev$?wQ+`61h@e=}*h9&aL zTpp=;s4eh~u9{m?+m)E(k6Ndu*qf!D9Jr8;>4HhkN2x;g>ax#}pp3>nKDD%`Cmlx^ zMlVA2IyzrU*Eh0>Eu%joBVaW?O?gDZ%Sf`0QaIpYMN@gBeLHGRvK;*3Mq6)T{OawU z^_G!g8$)bFvH{;bAj9J?)VKR1(z9!!(3wKxLe?)8p6cZyT;Q*#)7q(DX?7Y)ukW|H z_3CSB^sD_)dG~iMXpC~PsOO&4*)+WmOu)GP^q^#!Ta5iGT{JZ|a%_@a$Yn8sJ1A@cF5v3 zk%EJef4XW(0SwXQN*;t9)p(=cjVV?D_dThROMu529*6nXckXD>GUu4&<%dstjnt-8 zoUUoYM34r_4cPipk-2f-r?oqwS&xOn^YZ0K8ShqYrFd`|mt%M9gH$6vSs?IzO-!-^ zpbihOtryfyXkH=hr#CS219OhY*1C-&QCrBCMZjUfU+Y}mjNyTdg(Uv~c=h}$)H%^_ zW06BN5)KdZ2Aygi);B|=UDJ|Ho`t7KNgVdiO4yB*<15dtbGl^8%C4t!I0O^iS4n3Y z$iM=Ag1j1#aCT?VQ<{>xB=V52dTPLTe7yZdYC~YmK*2uMb{!?R4h2T$sLO)Ir66q| zooT_Kmjets^Sh|6OKmG>RSTa{TK1ZIC?78I#y~YnAmw8w$3>Gl^Hp)!3>w?B(xVKb zNu-dRdhz%Qzi+1wyA^ZlnXO1IHmEqjJ%Zw`K!rPMGRDXt7($%Z?YswQEuZ)isO|0c z0iC>6)xbhdFgYZgVz!KQwT^kut79%MVYZ2+mQ_g6NhFd074z@KUyc&oOmwdgNTqY- zx!cS7()Xg)h?TO1gr?7aQdE=k#nisYIsBf3uDkP0H5nr?d{&>)?0$x zSo7^&R)gV|)b8R{b%qCEg~<6y`uf*gT4z;GAWZGPSA&8MQb8^mc_m#hk@TxjqkbEuWn`lgsnEwELjK4ld@n_r8x2`|3 z^|)R}nH`8yuNPSV0IhozFzT8-ELJL2rEY^$Mq zMKJ0NUn67CbB?uEJt9FQVhvK`asm}yi3&fRYFpgNVQnN=i;0kK-iPIr+#bYt2Dg*3 zjWyhN+9mr3%?9g&apk`Rp8LJJ^HJZJH7z~SVHU_ROOKcgjz7t){a06>O+HD;^5qfc zITJi`GtWXXinpg~UUJ*W3M@Af{M$KF+4cA4mAZ}8P4bldJ$EF~vb1X>)B}2FFK$%l$ z1QXXD$NE(}+?(Dl6*N6k=4(`r;ap8^BPrd20MB2_ovz1;?hHs+Y!aaybLi<=jLhRVN(% zY1&+#dckoO)T||gYlj_rbrp#<%vQJdvbr+<^hV1Vk)A*#bkF(ps@KaD)^{;QA@djasqE{u|&GHYt&+GuL8MV8&w^^^4MAGsgM$X@NCxl9zH%8{ z8|Ino%MjL)HYaO+E(V?>_GviS^KwAXpy~M5KBeMvkpX5}>R{x_E;;`I3e43mXS{~u zHg_>?Y!mzRLolTVEMmyQ<|}o}WQk7V|-Ct~7S)SgBLHJTEy(kQdF>M$mFUqIXu>PiY}+Tw2o)_&@db>HuKP$nI!4h7LzUbOGHWZ+1h0uT)0wS zjlgno`PCg--rmOfZS>NU%H1LdCLx~Q_0id9`wq=xf+o&)lg2+9;_aoEOYvcl$;!UY zIpFYrDw>vxO2t!r&AXR1KNDSqTYLzn3{|%$F%R*l*l6~T172J@%OrrdUGN9FCZ)ab z{Q9-cxJV`&z`$gG_KWaI($tlP_fAP9&XtFE3MCq{%Qb!oAktINskeJdPk zPkPUNDl|w>?xQ_TWjaQ%tz=-bn8pr4q~1bxJ!-||2kkymki-H>9gSC&K-#0Vb2!^W zsWi!az(VdB&w4-%Zb>|LsHAKzJt{_ER4M!oB*f8XCm@CdsT~i!b-H1;)wJm>rYf#R ze9gxoj+MtpAxs>A$A81J49{S4AqSIy0KR9%anB9lwVplHO+1F3#By z<~)pUuSd`={N1Dur@w08gm15DF=}?3P1T^wVYy-H^{+$l9o$;Aq;mjwDFM_DhXSz7 z@R};HM`l%vyL6`YI~xr=H{M*<#2RE+83#2!nQFU6Ksm@JcwE-S{24{gfEY#L}E z-X4{s1&25|$5W1g)%dNkjtyIi437T*Lt3brIozg}zjTnG;-y<)t)43S!|DY{A~k9x zIhEl>?s(^#^N)?65Fzl6l)7|E9{TWf$@wGxBgabh85%oSB$`qcBSOqiUA@UTm4@Q_?`k)f5)-+UV{rBL zuU0g9-Q;-HE2wCQ^vx-613E$@R7|?(h9lCw6T^1a`nHa?@w8BhND37|+aUMse!Xj# z(f3EGOK3;S5e79Us5~F7byj+P)|~Q5WEM+z<>F@nm$pIa&mC*n!%|U+;p1w#%Es-M ztZa#kQ7>;YgBhD3rG|;DV{|d3tf9=&k}=O1Kb1kEYCmdqgj+Ch0eIve zHy!!@eAU@4pwsW0x?4FZ!SyX^mQ(4s8&Y+-L^<-M8E>lk zk7`|3`u59Bmi|jT=nUzRL9OMFZxJLD%!e zMd90Piw#O`9gCopi6IA!I6RN@?^<3fwM)G@ui=f=m-mb6j=baZs!O9XyLy*3>lig_ z6$>Lo9XzQC?BH?7`R!5oZt`orGTL7>nP4ppp}5XCKc+EK*xn|srpCmW&CEcCWyo0o z{{R}r(I;z7R^rUOiqo%}n?^9>hQR(`N;OD(%hZ=xU+gQ$uOKlGvrU)D$z&M+0NHDy zo>6!9m@U>al13ztCmBEFezix$P{(;=9L6%+KRO+nxFq7*D(F{G!>``kO538E4=`@yVFwtkO;yosZ88ffE{t=Xy}&2fn!~-3 zEcL5HB;f9mp=MS72kHGQW$kupw~(1xyr+9Q=i9;ZKe5mhvE9n3nM0zK%AB^$U73XX&7D#wVSS9Fj= zuuE)470w7#-`^Og6r78w-zl?fk(Ndq*pbTv$0~Bajz?O<(rzVPKr6n`@SG~1xM9XV zoK?*R^7F- zPb4%=mE3SndsZH^JIi#FN=XVZz>;z8&3RLkwa-=%=ydvx<-gh|1>Are=0?uodw#W- zq1-HRykNW_f-{Vh`44KEE2A*;U|^9+7FTKvf(JqQRz0lkrR!mdk^I6A4;dz<$=s`7 zLVaP;?3~ALe8phl_a2pdOPyayMt4S#HUhZMUrbed)=wtr%P4i)ah&pce@d<4dz{5{ zWMuhD2{v((2ce~VOHj4qKT@~ywK!&$HQlgn3c!$k>stBYlVF={iijM3*DB7=z>jd{#7ExTB$gzT~`|toAKb>-0;lA+~ zk#=PAoyJQpNc<~XPP~ZdSTQ`FOt}GDryc!k0`ldg)P>Tk#^Ve!Kb0ztI}Vh2Td{k@ zIyJ&wOkh?J!-ff*kPTBnNLIgYHdeXX(UT~LXUt|rvs*aD;`@5 zyG8R=We7%kbf_$@8qQH8u6QL+TpwDWX(gnKP*T<`+!`I7g|v-vJ1m=bJ7ewx{PSGs zfZWL>(JAtifsu^WyZif#{fP2N+2y>$_l;e+o;aae08iOtZtbpAfAJswIolsw{Sr5yzHNp3K;>D~_1pIo$)M!87U(K8FkcWhzMjGFZ@%~XS@Bgw^Hl|@n~(pr7L$Q=&^ zXEn8MfT-i^UO(YqiSMCW+u7^(vbD4)$$6KTgpcnG<%ewhSFh-Lo}a8*r1m!u+(g{& zje#TZ?Or8pEU3=SA4P}7#=Se=QuJ};)ufBQC`f|v4t>o|ybhI$My-jo9>SazK<16X zc{N_%zYq-1%G!v6pX><_0=&3P||H0cp!X$-@AZY5A0 zXQ9db`ggB)13`N}W_THnBGoLq3HEVqXXM(tjFJnXBLno$L0Pj}9X?A&C_=Lk*x+Q3 z<=2YtHHct)Y3}EaWspSJFUTYgPClcG!iL@}?+!Dz9J49jeMlKUhxD&mQc37|p4Gdy zK$>#j&aWAGu2FX`Il%Vy_Z79GGsAddodV3NSZzNej--L=JA?gdmWCb@P2;l&KwO2~ z7%|}g05SPjOQhM{T}?2W*`o^N#CY=%jzA}%$RqQvn51$^v~0(5ZE-q_NX65}f@F{| z`4sghaU2fdb54fgCclv*P?9WIl1!1elY*<)X*}|3y~u{jDAFyK!FVVM0SP?h0yFA< zwNFL5WRSZu%0q3+oH0T%yB&scSIMQ!-A8*J1mbqMiFTH7L$D(Sh!{BRM>LBoB)(cX zP#X#y?f{NPJ!$d8lSLbuOPua68)S}g-?z0g;a)axFLV6Czj!~1Pbc#JRh`a@Ssd?( zC%tQdc$RYgsyl?5Iba~EQ}=@}QO0X};#n@OE@McB3W>na1#`_wcB&RhNZ87ojB)TA z@cJ63V|THHLO6_WHb{h!<0n6t6xp7uLnp)fl$O@_c5< zPVK2FRZ;Sh!Twdzi6ohr%&i-DPZBaacm8%B+TA{0~4PTqpGbvOhXd$dtTLQEJqaGcVwXqLeE2sqF;;k#o^p7`1y+AD+r;jye|x@NtfUi+WDE@UBA=m&V({!9QyCX| zY&pXw3-S*c>S`Oig8n3mSmZ?t?xZS=fwz_;CxJ>gS1Nkg+53I({P2tZ{g3gYkGCKB z{Ivf7z9^`>Eb#3=Q*F04cRQFr2&8pv=Oq0qeM)7xu<}YrxUT;IlxH5_mMa=*B!cQ2 zz;MjiJG)k-_X_c&Bzt3SvN7eozLnx9bz|sl)SpggeIv?ZSIS^V&IWVa9ZhEIOvcMDf=u#SPD?k}J+n>fiCdSx-n%^i z03+=Y>>Eb%MtjyylX7e|qF0YNmB2kS?ce#)rB8Enr?gNctnnS8QGQ;1e_Ew~47Rhw zBO!`KIc=-oIT)yN>S~hM($wQgZSE0a*ywZVoO^bq(H$BdLADBLIjm!KI05(3gM9hBM=0FNI z?5<8tIXl^k5lZOjF4&Pb`a&RFvGWF4@Hnn+zb)D z9^*gCl}$pHjHFnr zq-`c&FqdEAPULpS(ze6Y&`QS$Gv)(m@2U6Jj^WJ8S#%Op{arxCZx zro4&Ji`e#~UQ2WB85m=c^fkr!*Tiw?)^f^Db}2dRKhG87dI!Z15$O^vX{#HA9buKX zuh0X}PfC-=Ul5`3G;!HNjSa&(iAMtfbCHrTKBlr*X*QBNBZ`7ezK1*FE5okc!q=Pp z>&Xo6>+=u~-0PeUJw7vtLbzg`$$^e1UFd1@CR zZ9d1}rDt1d#?MHfPKlU;;ZS;>xXwCcAI_`)0B79Y86@3x5G6*yeqU|@=e=&}S`*tx z=1mI&9!hQ;4xNp4#a!T&-pH3g(q^z#n))v~M#uyp1V`UIf1WFTUnqeDLoLbO(2Nc_ z%~H9!o%hG)3}I8L+y@;f)32r}7Gp*SY2i-=jydC;bH*yt>Q6UDThy&5doY_MV3L9Y z;{b7-`&A1&Z?Y}BD=>G7m4-g)4V>n$YEvrq+`F~SfioctAl->@kf~RZ&15IISuX8kEK*-!?a8#XONU* z@|=PB@l#Bse)>5JCO{mYY!k=zrIL0E0WnHkl^HnXbo$nb8GBBaC~A6Kt$!Wr%4PDL z$Q6)qIRp$~j=!xM)a`Mg8JJAyWDAAB!61R2dUN{K)mxW^;y7F*jDmC6_0JWZeRFLs zmEEyfu$y0V$-()6&g}4hv?eJf%W<97ytKQco)uUMaM+?ae zX%M*FtPT!bX9VNkwQp7{Ydh%tg>!(wxhxora5(G9tlt%dv(#-H$r#-cWq0|HU`Wqw zcdhxwquAbgA|sUC$PRJ=8PB-IHuWYkyjg|epr6^z6Eg%4BAuh4Ez=*3J63gr#P-j< zSc2FCB#)EyJXC%ihJWF8=Jc@{`xm4ofiI2Z#xsE;<9hQgcTlcM_iel_!{^**hxg`G-b#7Zz+e1x9= z07}0tz?R-ONu0#wVNcT>)hCQB6T}l~a32lJ9{8wqvdt4lpcxZ8LFhAAeMoWlZW?e9 zY7;_T$Sex%d}QbO)Acr4W0EFWjL78gmAO9Og+ZvPj#wuPvO;#Y1_Au5LVw>cl2JG9 zIFlJI#Y*aj*^oneX0nYY5;{f#ki6#|dF*Q{>Abtm-d@mH9jCDAS9IA-W_ve7vB+`Q z)jdKsWh@CHTO5kcNjREDPncPODdn<~#2$W?Qq}TaFHz8OR}izJ$nAo96IB&_tHHcr zA4<+h(l4Nw3htqsFOD)#N}dHXK&`hSbH+NFbE24B5ONO&iy%JCz!u0nbBs~SH!TK2 z1X_agj(QIM)oScC*84D5W_GCURqoNFx`cw;i5&NQBQ3?Qp!cL2-^hXoOa^6RVL17 zR@)roL4o{4woDMO@JCCg;M#Xz% z(FMFIk^>gw0D9Ed8Y?=P6&Mu*jB)g-HhFRocnrX8Js5sfw`&r~v9dya!pOv64{qG% zwS^?~XFTe->W&_G1-{_mhF)>&QAuwbkt8h28y$a@cbbNRx`bv(&?93x?tN>L)HHc4 zq*t!M@9poKgz1SJGj8< zn&WYMow1tO(b07S1gKR;cLCG<=DkP2UMaX&eKz_(Gftl<$PO`{4+rq$it)QC-rnU% z2RZs;y$?dvOyHObyey>RPJ%)Bb^3E%xH;e5Y~jY!x4e-*jJ!84i+wC{`MykuS~)sy zQhg7lb4UfNG;3~WAc2tGdFSc$uVK?sJZqtwYv`kf>e+xs1nz|60FXyR-;AGLwZm%O z6x3~GaM8ykk;oz@A_F6K$j*7=^TimN4lkJ(g|4Qo%$+{%ZKj=Bm2iZw%yOf+Kc5w? z;poJTb*nUI5yj=9Wgtj#!sm`jz`$UBxHUsu@P4tRURYUbR$35}eHM|%p^BPgL*@0Y=K*n?J$j7Bu(_=Q8d}<`ONx%%zMIQ8%2LbXx zIUVZLLSlp@vJ)pNK5kTzk&)lm^si!!Qb&b|sN1n}G|J-THs%4emd|g>s<_#`S=h6x z1tTO5dSGK8{d$IBG=@jaq4FUjIWl_nBLh4Nrya{I%;BRG9Jz!hNgsEx>&ANbt&z{7 zv3=oduR2H(*Nnc>r{(N=pL_}|Vu^z+NgRP&0mcbAA9RkxBRT9rs<&6)V~|9SB2?P0 zyRr!WF8=)~kV=Am(FR%3GR&C7i;sSI>+hPRjO8s&r1E7W?BF*skW}a91Ex5r;8`J- z8KWLce9Y)T+TWQtHBBR1x#N87V%Y>72Efla9CfLd0MSPrtjb6rg(Na$`tHVm3R1Cf z=8>%&+amLpFp{5@kbKI+`=kyt$>+5^#R9mR80H>gjO1+q_Rmbz4-%w%SV+Kz!;p9! zW0D9ok0M)L$x*grN0OpJ`<9lBH`XrDq`X=AqYmUxmz;c!oXr#w?`8YOa7i-?f$ zgQ3r*EM!}}O41~YAsLZI@<*}9QPaOlCdJfivQ=_-r>;kCa((HfPTLK4AvP*G-JCZo zjE|tI@Ie_0w{XWKEEQO>91?nU>C&ZJc{hcUIq=L5!H@Thmd<(O zjP$3mI=x28X=85^%LF1O5s(@<@;50w^y)vYW%#51CNM`Ko;Gx~5)3(2%9ETgY>Zaz znTc{(IKw)XW%)Yij=uc=04k4C)AZ?KMp*6SU;$yX1cFZ-4rpD1Nwsj%wFvIs+A`9s zGz11#Vi*G zt_KI{SeEZ`rTB#;X=V{m8zU;NdK`jy=lRlUjU?G)#xgL|?c|X8=u`J{7x{+P$Oq;e z^zGWZ3q=hCu8kWxf=3ABc6S1J=CQn3hVw)6k~cEM&AHT^Hy`Ic>du2G@@-Z>J*4u3 z0LQZ^2MdwK9-y6*u~Wl~=HKc|8o18ZR9Ql@IaALaxbN#r;v)9C&XVz9`t+*Mzu9$XiH6@XP8qrn zdVYs9eV%Ao=gZ&@{{VpPPSw6sZFYzP1GM_$tCvfWb1OmeY2cCbOQ{PlY*DaSp zmzcKH71eoT&PQC+ZV_=TVX`xk{?$#Z#hYm4Do4wJ4_yBMlTs>|DhLB|5`8|joNXex zu9Gt@NiZA+8%Y@LQQawPgvkVPjMUa(Vsyw34&X6MsYJlrHq2)P4_>0NwuaG{yhw=V z2?jwMbJLND>M$k4w+RwD$KD6@<{u@<8bOTpX*ZG+DmZ^L`I;HOBU!s=xOlUOA>)73}YZ= zdC&Rcw~aS*A8VmiUCVdCz~XO9g<5F(hS41xYyR`P1z! z7iviAO65wB**MM*9+jkM*_g_$$$XO_O~`jgw{|exXB>J|%M&=-sDlR?W6wpnW2(a+q{BTj^3mWF^c*V z;bx%?<-V_>{i-SAOG#y(96A`abJqM+D2Z65cVv@r87?=mil%g*oxXA=@ zTzDFe_Gex`2`+QCc#fQb9_)Ew1@jqxOk?u{r(b?*y_L+9TTHJR+RSG2a&{F^IUc<9 z=Cn0SKQ`INn1!Wbm1kvE2Y_;ZzvnfPY+?wz6o*Kc<%zIk7zfk_&PN``zJ@Bu`Ps(u zyC+cqDJWgX%kx>)e(=r-BOP&$hNIqMGNLO_5mZpc$f_~HBE^>xnKzf*xI2O5WMF~RR-LlO*bI#njOxw?PqjfaNRg;yXh8sX0|T%4R&4oL z)&>$p`wkcd1-a|jgY12({1D4?5=w421BMwRD&5ZG*CRfkT9>J!z4s^bU^7W^<*l;> zIplMXpdN#*J|;_;6{B&p0l7j!AoMuM&-uWpW|}8dbh(*At0_4+1Ncq>!5`yJx3`Y* z6_qDbvkn}L0y=}9qu!Rtx1_WhZT`d>ITH}d45TRgr*}{XW9^!;dnn9c5gKHkK5QP| zy}0Y?PxC&{GREteRTLzJv7UKc4!t|mCb^#HaCG~LwOn`ZKUx-~HqjrQwr0UABCrZr z{HzM+2al+wDDpC}B@&c~FFm?x@;_L51_=L%0w3#IglRJdnhL~ix zJ@_0}Wcnta_UzD@ppX?MhbNFTgWJ7p#TZ8tmvxbx1lkF~U~oEP9MyTPg~Ux9vh8ds z1%?SAoF8y;_+o^_)wVPBv_Yeyqr1A?02x#q{D&C8#(imgCpF6H7LH<=7^EurUEAZq?s;LPm(z766B=l*xj`4!S%@R*k+*c^IX|SaRl!KTW%Ui+jiyzoRHmrkfHem zZ>uY$s|SoOH^9;Z8-+(DNyCCLPjEBq+O&LK5rap!o&e$)r&m`elw6L!`N;e$J63TI zj4h^E;~V5Dw`l=`E_nHWD%9}>shh%@gE~k_JJ5~+1fC8?c+Wva#}wseUi)pg{P3Ie zqPTDPNu&P&o|67e{uEYbw`ZEgi@Q?8=Myf{2ODuqr0kB~G<7CLVonBsI;&_N*5cv~ zxW~-9y6veg0gqFhL^dlZJqAeh0Pt(Ti%FyDq_k+5#MWBN@IZfI7p8?R|Fy!(70M<3CTg2y+R#G6+o$f6nWp#ak zf(nd(p0!PoTk9;3kgNy{!||qQg=1MmWJzvIF5cs~{E4eNvb1-0w?(q8fzKHoKb2OF z7ZsFhI|iWxeTHnhvna?Q^Zt0KtW?be40jF)EsiniS4=)-yv0`}$GheoMkkS8 zgXOpcbSJGguQW=RxKy@MZ)b=r6NAQa?N8Mdt)06CV5;1M+MRbFk*wn<2fs$`)~#xB z88l@(2*jBu0{fM8YqWJ8*a>10DO*?bRoAkeL_G0f+z{tPVdT)|y(ADSNsM3L4k}2$3)jbB5$& z9eVm!ZNyCko03;3M$+K($FIF^!(?Mw0dN!+1xe3Co^pLEt<-kQAC$#gcimtMDLCoD zdUC*?Gtc8#@|*K?L(FlDmv<5u+qZgxOALMDJq9Y& zb4-y&$IJ{4TWp(#2m_3q^ZHhOtnsWk6R~y$7&ZpOz*5{Co=sa9SCc^^%_dql+K#}0 zM+0d+^MU!%EwmgY)3Y^IVYmftWOmGAJ*^^;Na#;I5sIej;zngacMO~;!;#6s8NuLv zd8Jv)N*x)3Mge65kjf55dXbhsy(-kPd8LKCj?4idmi#fEdEj@gqRg7RGhH5Kkv2xm z6~2GUM*#s^-9$vho+k=e-!RxcX^6DyOrXPyTm ziuGRvc%Cgc#P|A6xpuHx>Ka|mvP*3leXZ3@<_|@@P z*!(n(>p*PXYI|+xa*zIwl158mv5nawc_Xi=uLt;FDf>bgkVu;vGFXg9^jw0~>OT)W zA*JcIciL6Qi2ne$JUgpf8+)5s-IiEBUy!O0M)f@k;=JGCwY9CS!r5#|XN}!t4CPpq zY-L9v{RpmXB5FwA7SpEA_V!kaD4}vny5Rhv?*N1H<0Ba#rB|2Alroi-a)@1`AQT6w z&j8?o!K;2Jf;nJ`+2-8MlqUmm#~2%jr$LI#TPe&rxK@do0tnbW=;<+oZuW0Mbjz1nq`;A1h!0N%~||UQ|l^_Q?!88TP3o1aL>*9eMpJt8Tw(o6ed^L1C3B++++NyNvPP zg?5RK_#QQIQSwgF$KAmrufL@$>OE~?BY!Bz9{Z2ou*ogFa5(9c`qM-2P4DJhgam+N z`=dOl$jIX#l}&9dLVQS36-uc_U_m&?_m66J@*-Q6ni)YtprVf6xLyuP^{0C=TSBZs z;*r9~{6yq7SdQ5l2c=hLFqBu8S1>6XCjf)6}ru{C7IT6AK_b{w6j0kSZEi?0<; zZYP2}d7Q_EjCqQW{3QBr&;J0bsgjd=6ud!qH`_DM)?fZ6iq6H{@;yb0UEAE2&hM3g;Dgqrm5f@2 ztkO5i=Lc_99csR-G;`X-!B{ZEWSr->^rgC$L>AK(Cu@#9c(0wlr`08*Hg#ys`c#<` z7LCJXj=hQfD%Oo8QZ2J9InETWG2W38Zgks%bLA{8@}8sR$mXc{c_x+!nPk9Il^%zm z{v=moe)97;pYY$1St?uWv)k@qjCTwSp1AMrnzgOMKeBll^5tHfIP4|dSgr}k>GO8{t5)76mOaXH3KF5mPHLl1-)V%Z z+MHT4G_5}J-JM?G1#mx$8*q3W^yyuOooYZ*-b$-K@Qmk=Qhh3&kcLK=WNfbyAoGA* z83wf>)22m|8ew`}eA|oV_1sh*`Zd~pd7MP)v$~JjS?@Nc+bmA5&dX(B_tL95c6k(8%(H>4g`@rPmum1q9m0hD&E}{N!lorV6p5u<9t=w3EBbE?5 zkR83fai3bzJv1raZ$@GO>U7(7UvDjgzhY$9CiBoo|T@xO%<)6=+fcQBaIl# z5_y|gedXlx4{CM1CFXl}g+MOeSV5dA9OHwZrAcl6k@G^&8%E6=I6F&c8*|qnbJmsR zlGbdzlFD~0D>I$P9N?c$)X-eMmb2MS8$8jS&R6D44*16%F@eQj7Rlw2ArWnCB!{6p zPI$#bcK&6e+)BhlBy8p|17n<=XQA!II?_f~y08*6NBg;8W02AC0Ub|cL_xg@vPa~S z3^GWgb19B7_pnEAukx;U#Tt6g1n!F7V2Co3*#Ka1_jBvtt#&uIO)>M~WfD6T+`|gs z5yLM&-4AN#bz;k<-TA>C;SGbdem%XiD5{f#3KDK zdVj<35YL|xPiwJENVrjmyvI0PWGEwoc=}h9XiOv*#6}s_cjb?4@;Vyr{t>Obx+jQk zC-Xp8h>e&eeB-g}Uq0s4Y<)ao%|2tfy3($vw7R-oB4Oq42kh>TyenYjaC`cC*9V~K z^XQ&Dxw5tM6U!M99GNh~Bw+n|e>(Sn69{4O6~)E8Dw0hKjDe1$rblio#wL{@_@R3= zv8YRBUCfy>U?Tm~k?Y*nl$GX;@ekZ*V|Z5IPh@ACY=tuNHsV-+d!`OJ?fy9zPXR=f z5VFT2sN`umtdMcpW_}A}HrZmH@*(U?j7%ak+s5 zr>CcS_S1Ggal+Enfg|2}>}bi`zivkyV;SQ)>%~JUHj44h6GF1Uco zEW#|R1Atc`a!4mX)9F&neq`2;(fN`@j*>>cUI|^TxjW}Q`*B*)+=SZq3lt$3i2^ST z)3F^#pvTbGQu&feaHWzhqjn=-zkq)BPh--qZ<68(BwMLAmfXryAH)Y3JRJU%_aW%V zU$~W7UTC6K1NZT;$Q!Z=ImqLurAUVADP)d$mCNDPz(2hCP6#`XKjBS~5d(Qn%nGz@ zvKAqjFeLTh5>Ic=twCxm^p;gsWQhc+y9`wrV{aqd=~PSjtY^F2k>*PTcLihr09wGV zdGy=<_I`lSe1w)i-OU&qgKa-C7~>~zH2J26VK6W&EF~LhRU8q{4m$DaOK=P_rV52- zkf;%;<6s~k&Z!e+V$`azFPI>ds<7pNX6L_3&-*-g4!a_jJ*y)wK2oG(rWd_hf_Y_U zAR|HL1JBCDWM@1cdUy5dN7?0xr6png+q{852Rz^ccGT=!jorzk2`Wl{$L2dmr{~TO zKDapK)X5Vh@(Dcc%pF)W1_zJg=zV$Osm147NF0FaAo9p(&H+4-Hue7iJXNcIh@_2#VPo>R-q^-T!ROl*EKM9%a@+5Hl5QeaU8D?y zw;OmF&VSA!x1Hp--6W3RXNVjgaCiXZ@_KXHrPQF5+6lmlM8jnmZTU&*!1|hYzJyz; z2)YYAo86<0rcy+t^2KltLvVflF;7dwZ)T7@Qb8Mq<970-l6l7C`4059cUJc|Fx#Wt z#WQlPl13M?JF;pmLek#pA)TW!w2`TeqdcfqC!F>C>Dy40-Lw%EZQ>?)mQ0obyr%g( z;C#IgN|qa>i8hoG%^Ir7mLqb4an~6*&U(}lLR3ob6tLXc;O<{SFgf{Z0do_hBl5=IE)K8LyQO`|x;^(XrkudHA9_x}L1qO-r@DAB*?o~{1?e~0+dL43#m*})>2 ACIA2c literal 19881 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 diff --git a/templates/about.html b/templates/about.html index e5bc1bb..19fed4e 100644 --- a/templates/about.html +++ b/templates/about.html @@ -41,7 +41,7 @@

Staff

-

Carlos is a Software Engineer at the Computational Genomics Platform (CGP). He has been heavily involved in DevOps work, focused on integration and deployment using technologies such as Docker and docker-compose. He also worked on the web service that powers the Platform's file browser. Carlos has a B.A. in Computer Science and a B.S. in Molecular, Cell, & Developmental Biology from UCSC.

+

Carlos is a Software Engineer at the Computational Genomics Platform (CGP). He has been heavily involved in DevOps work, focused on integration and deployment using technologies such as Docker and docker-compose. He worked on the web service that powers the Platform's file browser and has been involved in prototyping a file viewer for HCA (Human Cell Atlas). His work uses Python, Flask/Chalice, and Elasticsearch. Carlos has a B.A. in Computer Science and a B.S. in Molecular, Cell, & Developmental Biology from UCSC.