From ad50f7bea880fca0a8b6a27d00e76c02c35d9b9f Mon Sep 17 00:00:00 2001 From: mdazharaw Date: Wed, 22 Apr 2020 22:47:37 +0800 Subject: [PATCH 01/12] Create table query, updated filenaming convention --- controllers/{pokemon.js => tweedr.js} | 4 ++-- db.js | 10 +++++----- models/{pokemon.js => tweedr.js} | 2 +- package.json | 12 +++++++++++- routes.js | 5 ++--- tables.sql | 19 +++++++++++++++++++ views/pokemon/index.jsx | 17 ----------------- views/tweedr/index.jsx | 24 ++++++++++++++++++++++++ 8 files changed, 64 insertions(+), 29 deletions(-) rename controllers/{pokemon.js => tweedr.js} (80%) rename models/{pokemon.js => tweedr.js} (94%) delete mode 100644 views/pokemon/index.jsx create mode 100644 views/tweedr/index.jsx diff --git a/controllers/pokemon.js b/controllers/tweedr.js similarity index 80% rename from controllers/pokemon.js rename to controllers/tweedr.js index fcd9fac..bb4fd9a 100644 --- a/controllers/pokemon.js +++ b/controllers/tweedr.js @@ -7,8 +7,8 @@ module.exports = (db) => { */ let indexControllerCallback = (request, response) => { - db.pokemon.getAll((error, allPokemon) => { - response.render('pokemon/index', { allPokemon }); + db.tweedr.getAll((error, allTweets) => { + response.render('tweedr/index', { allTweets }); }); }; diff --git a/db.js b/db.js index 7b48a9e..7ccc616 100644 --- a/db.js +++ b/db.js @@ -33,9 +33,9 @@ if( process.env.DATABASE_URL ){ }else{ configs = { - user: 'akira', + user: 'Azhar', host: '127.0.0.1', - database: 'testdb', + database: 'tweedr_db', port: 5432 }; } @@ -62,9 +62,9 @@ pool.on('error', function (err) { */ -const allPokemonModelsFunction = require('./models/pokemon'); +const allTweedrModelsFunction = require('./models/tweedr'); -const pokemonModelsObject = allPokemonModelsFunction( pool ); +const tweedrModelsObject = allTweedrModelsFunction( pool ); @@ -95,5 +95,5 @@ module.exports = { */ // users: userModelsObject, - pokemon: pokemonModelsObject + tweedr: tweedrModelsObject }; diff --git a/models/pokemon.js b/models/tweedr.js similarity index 94% rename from models/pokemon.js rename to models/tweedr.js index 766cf1b..d31f74c 100644 --- a/models/pokemon.js +++ b/models/tweedr.js @@ -9,7 +9,7 @@ module.exports = (dbPoolInstance) => { let getAll = (callback) => { - let query = 'SELECT * FROM pokemons'; + let query = 'SELECT * FROM tweetdb'; dbPoolInstance.query(query, (error, queryResult) => { if( error ){ diff --git a/package.json b/package.json index 3d96687..4335fab 100644 --- a/package.json +++ b/package.json @@ -17,5 +17,15 @@ "pg": "^7.4.3", "react": "^16.3.2", "react-dom": "^16.3.2" - } + }, + "description": "Let's make a cool new app called TWEEDR!! Not Twitter, geez...", + "repository": { + "type": "git", + "url": "git+https://github.com/mdazharaw/mvc-tweedr.git" + }, + "author": "", + "bugs": { + "url": "https://github.com/mdazharaw/mvc-tweedr/issues" + }, + "homepage": "https://github.com/mdazharaw/mvc-tweedr#readme" } diff --git a/routes.js b/routes.js index efdee08..86514ce 100644 --- a/routes.js +++ b/routes.js @@ -13,8 +13,7 @@ module.exports = (app, allModels) => { */ // require the controller - const pokemonControllerCallbacks = require('./controllers/pokemon')(allModels); + const tweedrControllerCallbacks = require('./controllers/tweedr')(allModels); - app.get('/pokemons', pokemonControllerCallbacks.index); - //app.get('/pokemons/:id', pokemons.getPokemon); + app.get('/', tweedrControllerCallbacks.index); }; diff --git a/tables.sql b/tables.sql index e69de29..6336713 100644 --- a/tables.sql +++ b/tables.sql @@ -0,0 +1,19 @@ +CREATE TABLE IF NOT EXISTS userDb( +userid SERIAL PRIMARY KEY, +username TEXT UNIQUE, +password TEXT, +profilePic TEXT +); + +CREATE TABLE IF NOT EXISTS tweetDb( +tweetid SERIAL PRIMARY KEY, +tweetbody TEXT, +userid INTEGER, +postdate TIMESTAMP +); + +CREATE TABLE IF NOT EXISTS followDb( +followid SERIAL PRIMARY KEY, +user_a INTEGER, +user_b INTEGER +); \ No newline at end of file diff --git a/views/pokemon/index.jsx b/views/pokemon/index.jsx deleted file mode 100644 index b0c8382..0000000 --- a/views/pokemon/index.jsx +++ /dev/null @@ -1,17 +0,0 @@ -var React = require("react"); - -class Home extends React.Component { - render() { - console.log(this.props.types); - return ( - - - -

Hello

- - - ); - } -} - -module.exports = Home; diff --git a/views/tweedr/index.jsx b/views/tweedr/index.jsx new file mode 100644 index 0000000..f896454 --- /dev/null +++ b/views/tweedr/index.jsx @@ -0,0 +1,24 @@ +var React = require("react"); + +class Home extends React.Component { + render() { + // console.log(this.props.types); + return ( + + + + + + + +

Test

+ + + + + + ); + } +} + +module.exports = Home; From 61f2367e3091f6817d654f82500d187a45907b7f Mon Sep 17 00:00:00 2001 From: mdazharaw Date: Thu, 23 Apr 2020 08:11:20 +0800 Subject: [PATCH 02/12] Login function added --- controllers/tweedr.js | 46 ++++++++++++++++++++++--- index.js | 1 - models/tweedr.js | 74 +++++++++++++++++++++++++++++++++++++--- package-lock.json | 19 +++++++++++ package.json | 3 +- public/Tweedr Blue.png | Bin 0 -> 30592 bytes public/Tweedr White.png | Bin 0 -> 25071 bytes public/Tweedr.png | Bin 0 -> 37419 bytes routes.js | 5 +++ views/tweedr/index.jsx | 39 +++++++++++++++++++-- views/tweedr/login.jsx | 55 +++++++++++++++++++++++++++++ views/tweedr/signup.jsx | 56 ++++++++++++++++++++++++++++++ 12 files changed, 285 insertions(+), 13 deletions(-) create mode 100644 public/Tweedr Blue.png create mode 100644 public/Tweedr White.png create mode 100644 public/Tweedr.png create mode 100644 views/tweedr/login.jsx create mode 100644 views/tweedr/signup.jsx diff --git a/controllers/tweedr.js b/controllers/tweedr.js index bb4fd9a..896d33f 100644 --- a/controllers/tweedr.js +++ b/controllers/tweedr.js @@ -1,5 +1,5 @@ module.exports = (db) => { - + const sha256 = require('js-sha256'); /** * =========================================== * Controller logic @@ -7,9 +7,43 @@ module.exports = (db) => { */ let indexControllerCallback = (request, response) => { - db.tweedr.getAll((error, allTweets) => { - response.render('tweedr/index', { allTweets }); - }); + + db.tweedr.getAll((error, allTweets) => { + response.render('tweedr/index', { allTweets }); + }); + }; + let login = (request, response) => { + + response.render('tweedr/login'); + }; + let signup = (request, response) => { + + response.render('tweedr/signup'); + + }; + + let signupPost = (request, response) => { + var dataIn = request.body; + db.tweedr.signup(dataIn, (error, result) => { + var username = request.body.username; + var userId = result[0].userid; + response.cookie('username', username); + response.cookie('userId', userId); + response.cookie('loggedin', sha256('true')); + var output = {'loggedin':sha256('true')} + response.render('tweedr/index',output); + }); + }; + + let loginPost = (request, response) => { + var dataIn = request.body; + db.tweedr.login(dataIn, (error, result) => { + response.cookie('username', result.username); + response.cookie('userId', result.userid); + response.cookie('loggedin', sha256('true')); + var output = {'loggedin':sha256('true')} + response.render('tweedr/index',output); + }); }; @@ -20,6 +54,10 @@ module.exports = (db) => { */ return { index: indexControllerCallback, + login: login, + signup: signup, + signupPost: signupPost, + loginPost: loginPost }; } diff --git a/index.js b/index.js index ba48734..bff10a9 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,6 @@ const express = require('express'); const methodOverride = require('method-override'); const cookieParser = require('cookie-parser'); - /** * =================================== * Configurations and set up diff --git a/models/tweedr.js b/models/tweedr.js index d31f74c..d004c7c 100644 --- a/models/tweedr.js +++ b/models/tweedr.js @@ -4,7 +4,7 @@ * =========================================== */ module.exports = (dbPoolInstance) => { - + const sha256 = require('js-sha256'); // `dbPoolInstance` is accessible within this function scope let getAll = (callback) => { @@ -12,19 +12,19 @@ module.exports = (dbPoolInstance) => { let query = 'SELECT * FROM tweetdb'; dbPoolInstance.query(query, (error, queryResult) => { - if( error ){ + if (error) { // invoke callback function with results after query has executed callback(error, null); - }else{ + } else { // invoke callback function with results after query has executed - if( queryResult.rows.length > 0 ){ + if (queryResult.rows.length > 0) { callback(null, queryResult.rows); - }else{ + } else { callback(null, null); } @@ -32,7 +32,71 @@ module.exports = (dbPoolInstance) => { }); }; + let signup = (dataIn, callback) => { + var username = dataIn.username; + var password = dataIn.password; + var confirm = dataIn.confirm; + + password = sha256(password); + confirm = sha256(confirm); + if (password == confirm) { + let query = 'INSERT INTO userdb (username,password) VALUES($1,$2) RETURNING userid'; + const values = [username, password]; + dbPoolInstance.query(query, values, (error, queryResult) => { + if (error) { + + // invoke callback function with results after query has executed + callback(error, null); + + } else { + + // invoke callback function with results after query has executed + if (queryResult.rows.length > 0) { + // console.log(queryResult.rows); + callback(null, queryResult.rows); + } else { + callback(null, null); + + } + } + }); + } + }; + + let login = (dataIn, callback) => { + var username = dataIn.username; + var password = dataIn.password; + password = sha256(password); + + let query = 'SELECT * FROM userdb WHERE username = $1'; + const values = [username]; + dbPoolInstance.query(query, values, (error, queryResult) => { + if (error) { + + // invoke callback function with results after query has executed + callback(error, null); + + } else { + + // invoke callback function with results after query has executed + if (queryResult.rows.length > 0) { + var result = queryResult.rows[0]; + var checkPass = result.password; + if (checkPass == password){ + callback(null, result); + } + // console.log(queryResult.rows); + + } else { + callback(null, null); + + } + } + }); + } return { getAll, + signup, + login }; }; diff --git a/package-lock.json b/package-lock.json index abf70d8..20c5025 100644 --- a/package-lock.json +++ b/package-lock.json @@ -799,6 +799,11 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-hex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-hex/-/convert-hex-0.1.0.tgz", + "integrity": "sha1-CMBFaJIsJ3drii6BqV05M2LqC2U=" + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -807,6 +812,11 @@ "safe-buffer": "~5.1.1" } }, + "convert-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-string/-/convert-string-0.1.0.tgz", + "integrity": "sha1-ec5BqbsNA7z3LNxqjzxW+7xkQQo=" + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -1511,6 +1521,15 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, + "sha256": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sha256/-/sha256-0.2.0.tgz", + "integrity": "sha1-c6C0GNqrcDW/+G6EkeNjQS/CqwU=", + "requires": { + "convert-hex": "~0.1.0", + "convert-string": "~0.1.0" + } + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", diff --git a/package.json b/package.json index 4335fab..31ae1fe 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "method-override": "^2.3.10", "pg": "^7.4.3", "react": "^16.3.2", - "react-dom": "^16.3.2" + "react-dom": "^16.3.2", + "sha256": "^0.2.0" }, "description": "Let's make a cool new app called TWEEDR!! Not Twitter, geez...", "repository": { diff --git a/public/Tweedr Blue.png b/public/Tweedr Blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ca0419d7de951ca64b896398e00592a783c681 GIT binary patch literal 30592 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 literal 0 HcmV?d00001 diff --git a/public/Tweedr White.png b/public/Tweedr White.png new file mode 100644 index 0000000000000000000000000000000000000000..6b826bacfb0b67a17779a7e7e143fe8f2cf99353 GIT binary patch literal 25071 zcmeFZc|6qL_Xqx(F_w`fWXqCeDEp8-%SaemvS*92XNxTLMi>zliLqu0Z~IQRR2Ync<+z_|u~LAa>tsXE zQw%&>7zOxchMiB-O-|=6Qkuv7RR=BosXYeD*x#Do+8w|D1hDx3|NH++18k4R-0HBM zZy^XTc6<@SXiljx5wO0ii4Z%C7VUj7-0TO4jD{g_&M4Fxo^ z!x8Ja{2WkbWkx}q{TNgJ^kg7rkbxSU*h*1x{!`uu3JBj+!~>h-;V(Mh=y%u0XG;c5 zon9CVP4+%6(G)*n2g5Id;on8c`RPa2)MNPB8f$5Q1`?J_7WC{xh^wWf*dO0~QNK&7o77lrz6_bTNyE&X)H*b&E4Wfl0 zN<$!1-E|$kit_<%3wv5XdoYtY=$C{LX8`BATA4AGmK2Zz;(Q-x1~nU7y1nd-$UuR~ zP!8FX5oZOf@|Oimz$p1tJOa-dyJ(iC-7%9UcqG75U z+#vp3tmyEXZy!HrH-aS4BRnFTk)z#wdt$RlqchXW9}Z>Udp?DOIvuo8aB@Q9gw z%7!SX1d5@s>uvEKU^%=|!dSMp8Xp@9ZxaQ4%z)5k+0NNLr`>*A zCvqWg{EqLAk7?EoAf#5_!-$!(@oo)_Z0F@`Sqo^_D1XIBs%*dFaVA0&BDXAOVOt z^-DBi>HPxgynK5vR97(7^Kc$aYrL^JJ_lxdO&Ggs9hlu)F4NBy+SgR?Uj^#Dm5Txa8ko-q1kbcB>0=UcA1tk@|w zow+j%Wc9;fuHIy+Zm}&t&es$$KR&x&u5W!K8W?^i7?Tt{@hQo&cSLG5OdfX5%b%c^}pZ;QNZX4DalAujq=zUs#n`>em+#9?0$S`aq?T!kN}7D^BVop6(corZs@pRIzo&rC zVyUq5_3Du|zc;febAjo)togBgzxr1?$-Jaop>V-JPZ!>Xl7a(Hu!m;jt=g7ipBn!gX!6CEK+fmN;5eP$m+L$&;|1rAlGLu4LUee%QI;}L^%_(;vU?M&u z_mbBK){oDQ4Fb-ig99$PGktHT-~e+H;F&jP`6$+I`9hk*oo<|@H!P;DS}FRDa_v@1 zv2fOxnz^%<9wZ`SvYchL6AzyJ6uY6X&rPn|)nPC$C?7#93&vb0M|KX4{Z1=oDZ!@l z%y-RuRKcKZUpQlI&id~(z2HZZ-c{#To9O1dByR&pBz>VHa6=a~Tj=pEmIuA(@&;Y$ z=xCjkWB&k6`{`oZa`ba;6*xDCx{Hz;`CVG8LB#xT*sjjb#tUJ_j*615!bw*u@P&rOA$oG^FBAD>5OGY)5x-*P2`pg;-qkhkwBonJ1{K7Uoh~bwYyZQ?yfh{OrlO?;kcJPleVJAMem@r zMK&6qkibN5v{O*FW2!t{z2o~Mh#JD%6!F+ybV^!FZHpJZ8J|J1lXuKH`R}Om53rT& zXkywbSS0la;fD_Hda5RmV9*c;4Egr_`gm$bkL{s>rMrH(iuvXl2;+r7d6d^Oi`u`d zRT>g1muYe*NzBJ%#~RJn0BlyVpsv8yndBBE0{a3TgQARzId#rw|7%-k`eYf1ITjh` zaOn8ioYcZ;eE5B3FxbZH3!g$@h1np2z-HntSczWW=;n3_Nf(9v|WP z%s;5#|7DWgsdtrB>aOUj6|l!4ei(Av^1a`p_cdl@=avxL)&Di#zwR}3p<`$242}B| z&I#?#L^Dr{*4#+!WCvfticP@lM@@<2X(_D+W&7k%_Dwirz2u|a=7|@>pU-t%jN;cr zpGz+SjFXt3elDT8aw1Z&{;|8eTM9>+AGoN4MygI)CG8H) zNbKuglWBKxF|*P!KAa9kP3%L`roW?)X}iTD8SETil{9Qr@a^_Le?vhgK7u1jfksbv z)-~YQqqmE@Lwe|1RX9+pAkVyPbn5dJSi_~TISVue*zTcK(0y7r__V9Qr3Cvrd^~Lv z9S(TT0G|DP%luLNpw+CHTYv)xogPLZlj<3x! zEkGtca->`U+qQ3InfIg6yutSiXJccYl4ik6g?-(fvHaZQ)mBQW4W)zqDHQ~TpN;cQ z(C8cax0YTl@#(*UY)oTdVl-DVZ7n8ec_z);1hO7&l1!L_hi6_fI#tdTRm9C+srr8{ zs-4HmXWR+{9WzJ)4F*^Y@GWm_y4Ag5HPPPfDk8Zb+1a>XnLU;_UQ*T>DNETzf`bT} z3WmHX_AmFKN&KkRZrAGnx_O(@Zfl7zfpymoHhCU1F#*h;bowC4V@jVZUV;_=H_&m1 z#43ymyRQ}aPv1P&(@yPlHt785)!nYw#oRCmhlVrCiv6o^c4~&%?LyU(Bw&cEDlRzS zPfzQq-y6NY+qF+RU!l*!km+ves;|1+w_}RAU(kTV5kvzVXLgv(k;z{bBW@DkH&xks z?tdh_iy%)fix9TaIBIZ`fzWI)WC}}|Fd+cUjLR0RF$Evb{P1%%=iL67#PRA8 z9HYLzK8-6mkm@3Ab1!^R`1KBta#3CDV*c~pw`b#YHPSEpiZJ~CH7KHIO>f~K84TL943~K#uqws1uO?B%1k14B=Kf7DlJqeqwzOFyy zb;im*H9>3epfvHomDa>mWhuQo;t<|FX=q`qE2oowQw(yI4fzrj{orsT`9?~Zw$-VR z%Adx~3Gw#CXxyktoQe1eCKOxP*{V0?#~XB3SMyMJzJWQTL# zgJaINIF%)0o?hohb%nGAMbPEEx;uJR@hFq%SOg1AT+zcS&R1#=xe>F-s0iK zEi2cPDZ)6@L>;)&YMs+PZeWb$SYQ1R^ZD@X+PzU07)1Q&Y4Z4(5gsq}nnq85WRq_^ z3~6;XZuCbdjjv+)Tm6=fiW`L36wdq>1)Tff0+ zQQjnOR0s2_#bvE`>6tKLKIwOw2HHO)8OkPGvJq<0?UC4z;N5;jW6G~p_%P2#6>-#K z3mm^={w|sl&Irj9K3`3UU0Lfg0UqVUzODgO)$J4I6N+Nbl?eetC7-kmedr|GjccP~A7us~|6|4#t3eUy7 zLn^vp-7^uW&bt;GJ}flzDL6U=ikMwtGA?^_;BNbdL>))V>G|0T*U&#x={B+DCPT|P zrG+_0jz72j7n5*#ws3-?Ol$R`L{UvPII214)8gqo5Etls8=vgP9roJVzI=PU5qBe{ zRr~GT)0&JwDt*!m;!e$7y#_)?(N3u{QdBVQ%n+K`d~I9v!nLpd+&gR15YMTFLm+#` zN>D}+N6Urq-t2XAb2Cr;y#?QNdb zXFp_WwyX{h0yv@jmza6=$}XG>y|i+Cq|m@#TTQ1ELZ72;ir_bO8`(si#MmOj8RATC zn|@PPC{Z#DWcRB8r$f5suSzH1m1yxI*PXif#!Yz-zAp_}hWulxiPTG+8;r)~S$d7! z6@<86vZVJUM(M;#gvN`7s}#wmvWkR+wIortKginhExSNRoBeL4-A8G#Mf=ZZak7Nj zcV#ccTd{Rh=7Z-gC~|ptil3)HyCb^AnjUQ>;ZX@o4ci)aW>{Z8T;egkw|4_)-MOsOHoyh zsOtu)wk68+Zi!Z3U+%MWO2D*(L#W>5Jo_~S#ID{H&B{NU%_8 zXDNVh=J8;AK#{P5u&?H0f2RXu*rFd5R`@IJgUWZzs;_nq`sLUPTR%&$xqK+GO?~Vm zu_@Yj?nMo!WsBa#@;1(E%JuOs&v*^a2!Uc23LjRX3^vg4aa`Lz5=bl<_!!*u8huCL z9Ef$e2*uj!5aJd3`hv_z^FQB}c3=6WoidGHd-x?wU)%DjCh#G#*u+5%XhqZq) zLtc=5`~3AamD_OM!mSXs_}Gy-GX<=uszg?svQB?;4&lKt0_886QD-Y#!8ynWty%|k z1!cq@$EDDV!KHaGHJSzpC70Hg|17tvcpd0C(^ZSae)~#MXj|wc&l+_kkeVxtH@wt} zefc8WG9n!eIEXD_cq%(?3hon&pzAOqIEbCoF?Wv(&oAOBeK0Rhe^>R4gz;-DriYBC z{MMF{$!Qi0aidF7*OqXPwKaysdN&t*OYeTeY!S%>Fn)d3q)N|{KNPWzuWXL6=2%RX*g^N_P0Zm1Th(O z9I_}Dw0QsCgT{W>*Q7yq+{(@5tm##Z5k2ePJRq4#O$ZpVC)46#vs+9v9~69XO{QB@ z=NYS&bp&(s7|>mN|L`x9`0vEyc;QRNkI0f*;~z2<%z1pT(H;(Mcra_%&h%;8Jc{4b zfcYna$b4*a6;hgfb*25 zsA=GjvqG)dkao{6myDB3wN;+wr{(o=NIE>^e4Hw0M4A!;wUG1F@ro*??*v6vl9bEh ztxJDgR9LEC>TStW7=={yaq#wTYlcX9AwcI4s*bD7-CWo4AXCS4+AL^8hf}6aO%dd} z5P7>%XiUUxpU_0Vt$7K7LerR{8kl0CvFX&yJ}km&FB)vD?(|IAZEJSf2H<>|ExO<3JCoPa8diQg&yaOwMJO0V~k*?)VT#u7oYA7 zf(yp!3up{G(d1%hjG`m?OFhGx>I5IJB(koN z?0XV44o+5JxBF+G8{8vik0c@I5|d|(xJ6OCr%W}Sc72**Jwt4&t677!7{SVI2H~NN zfiGk~UF49vyt~h65dW-%VM1Z@7Snp%;-+UPR{rWo(iR*mN_G!K!EnlrO=As4aOT~v ztt~vK*Js*g1#&}in(~lk}QMr6}8s4-;xph zoEX3@=jnSg1e%Fs`m#q+*qsc|NYv8GkGlpn;3yPeZ%iAt-;zzChh}bkx~TVo^&XjJ zShvWJhZoxRB>cppP$?}y8NYi9&XaPOF*-j?Q9bry+9F~y0Tfr6Fc${e9%M~fEL_Rn zY1&hCz6Q7%FNqSiS}fQV(c1a>g0m>MV%Vxy#p@9JXB%i)iZ}^-P2lg|xw2vhvlG2V z&%ZI?2wQsgWu=-Wvzin`39{qu=BgA;IoQsi4fI3v!d zN6&u7XyH7?&~w@G`7Vv2x9*nOe;%_l#1a1)Gt=1eg+K~N?_X91=;U_$`B}9@vtcFt zv73%D$7MdAuuaACGN2C%G&{$(CIlp7JJ6ONZh4g{c2mcu;d+o+k`kPets$)hn^;Je zdvhlHg&cgS(y2^D%UNc_p1OW=K#&I(=xcd6?NXjMER4k)ikJo;&`yCc-g|T|hDs~2 ze(7F)bmK`7u%7vr*2FOb4L(korl*6k9uu^)sEDe2Fm#LOTjam zx&&K00p-?x4ElnAf&-G;7=FYk>&ynUbo`zTsF_Bgc*0y$gP66MAbyiO=R8Ybt2gPi z1|H6M)Q)C!f-XQYXMHRA4kRJXf(ZTKKWV48ig{oZmsh|k8`9*v2_J}bygB%JDOlxCk^}FGtqo-K^$;dZd)jkpg4>4dzcl)AeLU89I z_@VHw`L2MW=q=Ie8#?`_y{Wt~ZLVet-z~*u4RRz}ex8cR6Tz=6EGBc|tGvXe>A&Ak zS^KobpQMlI?+Zc{C{7q#gm>OWEw|!>0Zz(VXE2e1lz^K7eeLuxbevSvA5n-j(~DXj z#h+?pUNFWHrI)-N#Z6Iq2Bk+ZGGV~~?_}w>dPn&|`aNw4Kdy^`kL-E~lKO~{1+wdY z%64*qV_JYDU1Bn8J3?=Qa^CzU<)_#DG!LP~O$f8`{4D?G6xz{}9}YL-3izI!Ryvg` z1VidhkCtN7K<39Afjiq4AL|L$L#tu-uI-9qwhU9;Xb$bNu*)%WTO<*2TO4N>IZXJr}%%DI9f~MPTH7maxDR=7XuV`U1aU zUgXLo6GQ)_1x^kUz3C%{>20A}iYu2f7kl~_U7?|6r%6$r(LbG z@Tvku6MwL;2&nq$&+C*R-S%d|c_-my5RO-=UHeCRuQfARgsj6CRAD+Cev`CZ9Dc?u z_+`?3ghN3fBwyn5<>)N5lS4b-WtgN^)~F#Jn)2+2&B0y~xR1ldElqn^N2@DOnB%-v z=U#95S0bS|m(-Q}D&a6A_Q8)zJOZSWpEdGBP2GdcHzN2u z6Pnv!e%P0*bgi~C1G1j?1@1elkL@r78NC`PoBoD7+xVv_pwIAlImw?#|2m1?LV^PT zhTkNyo?j-^FColmGTQrEwd3FCV4+LRF2)8^87Y2k@4u>2tt;DZ9mT*4Var#?wV} z83ETKp5o~m2DA9vmC$dq3fB!dzT#G%x1$^VPOdR1xOp$y>Go>qSs9X}c7f78sog`1 z4c=Jn^Ws!3-Jv%V1q<3$4N{MH)nh`>uIq(7e+p*tk)ke0aBnOp-WE@qTt36?FL683h)l5D8yVq5%)o;RS8Y{&qnIfdVynyp4n zI>*Hwa8@x{xkG{R69+bkE9t*@#@9_`LP2C2RVPQL*gSW{l~OuLWs%h1OwK~n39OPU z**HkvR)@3A_t-@))DX>v{THNb$05IBz0MKb#r$C9o6kh;Ly`^IVcNH9KY0tOCekS^ z4yj9~JYackjP#>@L9wdOvHncvC2PIO_};QwS-_(W&JCAjnGkM3{(yfj{X^IIsZrq{ ziqHKxGyI*VAwo;jv)v}&J64rjpA5lq`w9AH)5y;@VjA8m@f#>TWs3w{TJOY(T(+DI zN)c9Nf)n1Ar<#K9Hx8YQG@|bZQWsbEc?)`|-EP%Ovj7UA6(N zX8$$%%WA?Zk=beJim&(U*t%vYQ;PK67JPRyxsEZ4C!E!J(%9`zUqbU`wVO3s~Hc6V6Xn9 zvECxmb=34{jkEh;FDuzjG4c{fY+69x9-fLX5r2$IG~FynV&&R{`|j=PdGSiJ!~D8v zJ>gH#o6XVB@uAa2=Zo!wH&~JlB>^vwSK#I|!ur7i6PkwKFAQ9ihUDv&?mMy{tB-Zn zCD%pW24res_k+y1O|t1DYkjnLsfe2|uJ~xY84PAC(X24`57Gls;|7O!!{@DE;@KDU z43t4GIrDb==lG4hjdaeA74JM`g{9^a0+l2rV7wex^-SXs9$zvNC5YLj!m!%BxbiBw zRC72!Jica5v0PRZrd>XT|M70rO`Se1+YO}F6*py-f4!tkH|3`fPZtFm$}c-~vasw?yqlTG=mA~~%3E)T z-P9-2vds!%#A;D@o3*!wGOwuaZCd@3gK0nVcx87ZU~6w(K2~-vNY5bCPfvmN&reuv zK5&I1gHHyzZjPb7b6y~N)WO~cy=;EK0_&VW$Vg={&;3*4QT}PtpoZ#qJmujxG`Lpm zzUqz)ZmKyeiS~>29(;WFWKq_NeZO9FQ#)TwLfX97G`>StzOA=zoRl!qqYC1r>@ve1H}{!a;Fb5*2Um zYs%D@2`r+$|5csf7p>)u$D}=WwOwkT6{h`x#x0*r0d?Ttt9sOe->}%d5(<=YHb89M zq7PeqzMGlf%U*dl_NSP;1#OcE3`tSvX{ z?x9K(eT4vzS~~5mNkP;{`*#1n!qiI7(q8EGOhDkeYIGw*0F}F<588*NL^HCA2K2RK zA9}WZ#hCy~Cb4+ONS_10f38q@KbGaHwEtRB_H#E=mF9;`1ISv7pLj1)Gt!s%2@IkF zg4?Z;Syw7X5Wclk5Z&gzZ}fF*A!vHr6GpQ=I=!HNF$BtS%45~&l=0ZQ`JCLr=ewB~ z!WCXMQQ$%Y(Cg``MbCK40)i{=rOk_lbATcO(1W|4qRL{^Z-q-j%mTvL*ZK|#{qGWg zpLZICj?%y5%+$@bw1WD%0Nq}E2uLj-|DLP#A^NA`^!3T`!FoREQr@!M{HA3(P^u`W zBc_tFc+>9CZ@J>uvdF5~8L8Jv_z0yUnFd8sG92e;gZ^u8vi> z5_!uO@|&E`z!}9)7@!55!TN&?3h3zeh~$&jG6fn5b@S~|+aJ>Z*GI3Sfgx3l8MVFX z3spV8=@2^I@=@P`YF%11{7NR`{UMw+(iy(+F^{8NHN0DR+PxV8z3p)izVQBWzWcGO zA}B9?=#oB8Rxy4aex;aa-fKAy;@>t#``>vF{k}ZaTE_81dgH3Rl)xMEdK8b{$Oa5e z7mfQCf`slRm1+$*IM$BnT81!)^L!%UBlLP9wkW~WvSFJVD(Iffn{V;M`VLq6{enfm zz&+G3Z3WTh7h@px%b$IxSYX78WQP)N?bfcVSNcUKZEDD1$Um35ziL1<5-D4!XLXZ) zpT~cB1}a>+nSxQE2GrxzJ1#YuhL0!>IfK88F7kf^Xox2}{1d0w+Ep{8fB9lB?joGA zLW)Sq7OjC+XhdB}v?u%SHbjzwbWWN-uX52VJQI}4^siS;`?-nZ^$v>tqNg>2GhV~l?}#>9dBJ1E%ummQIV?56G$aKM*qD#yvVL4N3sJExFD@cZlQEnn-0Y?6>wWCpP>i>hsN|-pcU?S zg{{X7_#d1n8jjSO`Xg(;RGMxnA_;v2B|Iq4n(v*7X&r1mNA(J--`+Im(3GX9TDIWV zGkB}NGBrx1VZ38%7A6Bji~3?U`#uZfGnM3}dAeJ%ic9y>G>CHa`el2{k3n78UgI2^ zVmU5mnh%=n*ovc^6cGtxh0SK1(W1M^GcQh(_4l*8Ael8i>5ebJMTq@V9gMK_c%2~2 zfkP--MRm>h=pFGvulomPoh)4^2}gPShH7oHdGW-dG{1y>b+noA1L$Y{E~LlI|Gmq5 zoFCLZpE*G^8`@~aH42p|ezWWF&z=Dj7tY316*_sJgERj0^YMA5TPO=f?mD0~!5;hb z_p~ROG&w&f5e#RHs}l2+B@TJKVlT`h!@te2-D3rx!d7berSg)>^UmB)(6@!-%%5L3 z<=~HRzMv8%%!r>pcE>xvx%aYQq>}gCJUX(5`vo;)y-`nnG7Md&ftGD!z)y>9|Ir3p zl;1nuPTRGHjkf#eqb_IccAZM#f?6J(Q9z6S;N&+NzXA7tt2(^9<*%3(nKRCLBR%$c zt0A}_xGU`H7q$Std!Pc|Oc5?3@O1+Yty*yp97@Xzi^+PFE5(6eV_w*54uB?jyW5p( zU=?pQ(caBlc@)qTb{DL1jxG8tdwysptXcyXNL({ zbRK7{5*>x-w@gMIKb-ORJS8Jrnx|~LF+iuCTn@@phcn(wX6$uh8>gmO zua-@3MPi|BThD*!)&c4!_=E*&@1B25xnm~-gLb;T$72CtVItsf=LsAZpoB0jwG$+~ ziw%uCxh5vPzslqngb5umeeQPy)5Z%LBlG&5c}N{M-evp@!$&l+k5k7GdvR0`g`m~J zS4u%2C1J=YsWN7^VRcX0@Lz+R&|z+19taL}{@jsu@b+%{Z-r{Jpk$3vodP(x?QB-? z$tbd}nHE2P%(&AJa6qe3{W8jmNckbRI=A699f+n-JM2f6n#8dGA7e!^pkJd3?trs9 zn&e1Ik@W(wm>Gp?Ss>qt*)#dJr%R61ik}e_A6_$tXcpY5-8U#RMbz*9p@y<`JQcZ< zQaHKak%8^4M`M>c>Y0@xKC;w9xRcOVbpTRcDk$k)r|JVme#)MUGpXc{U@fjYQW zK4?m{EB|uD3*jpOVj&K|voa`&-Zbt%k`*MNA=)v1GT{7vOHqfx5RF65(>!C+Xai*_ zGz@u5fgWh(ydMZ55NFo6cm{doDmF0uNGOv9hK@OM5@*yRRIKYM1|y-lNdWkXECir1 zAqKKY$EA%;u*RI}-{Ru|zU;-0db4gJ@V|vmZgsYe~tFvJZBnWBh9lX%XQ&}7Kl+UC;p#{g)zpFb9Kce9wIZ= z@KFL1cYf8_>H@g9=nEmZOC{LYl@>s+9Uur6_<3?b%@`k6%%?#2hXyw14Qj;U9|4<- zfQ~_g#B6cn{wVuT3KPSr$wH?{y`4abl_BWwo-nNYslv}T*|J2|{lhrKhNT27d~8VBUmO!U5(K%-mS5?d*X4NgRBr!CGTW z3LtO+K4cMr+NpTg7|a2+|I=()&eE#y0fXbiALtIMt+W;ar#`!+d4>MSx1E;8?!_G= zZgMM~i64UF6P^(6KD|c;yDBq^=3kTeOOj-fuM9Nc(9WW@yc8`!WF{uX6Y*1i$Bwx5 zd&9ejc8bAt5RMht91>dqvasqw=b`r7ZBw(iZa+cbzcjJN>PAsBQl!jW54m2b0qscK ze15#xv2-V209YfK~kbpU|U z=~%vj0AimjJ0Yh?w({g=n+&Y+%T%EqlZC3p+=DM-$&tCZ9};MExhzDie#acEn}Cn_ zh-HnJTdSqP+bP+Un>{CkaG{=xGl&Fm&hP+Bq8^xX6=W5m-`n6S=ZD0yCHYBOM23|U zy=wu>BdJvXuLxAkM~gB_K{!pT83#B+Nj%hMibE?p;Yy>=pz~6MPyuXU8Xqk$lffA^ zixUgP$Z%|pW6SCmYIKlyx~y_b26@6o9=pDmk!Bn?c|AoN3W)f_q-8Jy2q!GyMo|w} z54^*TguJ7-cRp`Prjo;uxn|eL#NjykWneQCt|Obmsn0+*X>EDumLfN$jL|C!nrHa!(s0Q@NBolcL8F_ykLbO*D9*#8Qt#%ps#}C zo@}-~mse>676?-b*h8%4LaI>pS(XaH!}}xy)s` zVtn2MwrQ?YTYU$v#KrVU4fGjHPkj9C;mzWI;}+c^Ow&N!c;D=(F!t4~{r%?-!AwV= zmeT{Utc6ObO+F}c?3yw!0PNr`>+Ib1m0W}u!7M)HPf)CE;ert;2(8svx2#murmbu6QiyTA z{)K}gefJzHf3UsK&k{lW<>P(iSTQTG7WkGLD$)Ykqn8Zpk{?*oJ+c%~_Z4Wsz!xt4mE*F^#t^PR_(=Fm2OnM|^}v zznZ$P74jv}V23GXX0yd|t)l%Npojd=54-S1Ih*}~JA8bvq|OLKLNc$hgRCxU{soq5 z1pkjGhFd)2?J2v#vdK_J&uIC|?t zABR3pl+>-ILkYmHww>>4eGue`OQio{Fa|H&6uV@B$Td`9m4M@vw!Y17zcW)QxB<}; zGn!rvH{3C<;ORbet7+_ZEt{nYku7vo>e1*|V#Ik24B!8-o>~uJrG3WkKdFrAvB{Ej zjV;GM`rXC9(+%a%Y-9180XEGdX{mw$Z`NlBbf>l}$Q73t;l;l2#=?DgQ+(W1U^$Vd z3y^!CW*&M&_ioZVcVWoa@h4SidLX&>ZN8fV>opZhjmX*d))Ckzn;CApdj!?s+KwR@rZeY)5{L|#z;7tQX+!i z+J!|-_S5?*k2}MWylR=k^jsTo-0^@zgz@f(zaKM%zEufkA?RDo(_Jv??3*AsE-*gj zrD)W4QQay`NM28id+t!FBcB#Z6;!uq9LsPt0>Kj=-0uhj8A zmG1zTWXO25V8N9r=FAkA7d7M5w_Wfu^DG%Ip#vxQ&%g5#y`b+g}FojGt6`nfF|kk>qv`Vf@Bt4b46Ukv+f37Hox z1PAQ9oLQ?$7+G?Gp@SQjc07yAlu8(h50DUBW%Lf$zA-V@nKjO_aS1hU%3K!oVLSYf z7X{N7vEX|uc_Zd#u5iwhXa0{qZ>7${)+`Thmfbu{Mx3l&+b#3{)K3Uv*WyZA7ATFnRRH_&YQ5$2XWvy(Wd$QtNlkZZCSLLUD!T&OOHc7- zXG79vBkjs2i~GW(Z%~Xzv+YfVHp9Nghp5@lC(Pf$1lM*&SYL!r)%gfKv5UZXCa>)) zkN-&R?QgMj;Dq?MP{B8XY2+V%qCmZnO%E4qFPS@5=n4LP0iJ!Q*ZgMe;!qxKO*6zc zGcuKBDqqn^i7KpqIWuTCRrIdpy$b-wYHG;0ee74}>Gou>y&CjhQY?44gs>CP6MR?+ zz^ZHn?+E?A0IYlB$;3vugJs^rmkxAGl;IQ5!-~TO;LXvAtZfW$q}HhkeLRgei!XN? zs<{^@I{NYlM=cbaXdo#2hOpM^=y#ws<)LLy*(s01yWHz68BTqvaR9#=D8QNHTXU!S z(=XZ8UZA2RmW-6O+xC&e9}YxorvZxmLInTLzsb}DYh{4zNp$M-t17+DNP^URN6eTo z#5u01$qw>bAk=%*eN{X9EWJUz2QMWKKFxQ3w%TJ)NrMwQ*LHZ>qGg-=MO+=e{{1Yi zz!{MEl1UsMXkv^ZOnWp(*p)lf#_TFCYkRda5Wsti)+rLO0y9{G#J<{rjs!Dbk~<_@ zd55ICW!W9ZWEPCP1+Sa#jYWD#z{XhOzylj&GK~KIn6~Chp#I}ys#{$S}L+_8@gOB)WeyAE|%|0x49lo0udqe1-eM0Pg z0X$o|l)<+`^QbF8m|dIvpcUhJDhC4x@+WrX+aEg`WHSu)U+ZTz2#zPAz;PBzx5+!& zmxJ*e-og;r#}#!vV`^y&BTxY!c8W@Ez#3cxpug@>XIiPyIto-Yy3BuIip|2@NH}Hd zUV0}$`tG{57o68D>A|Bem(`tD$h7GQ{N3lXdgkuo=gj;O(nFO)QHNU!_A^wuCcYRD z6Xgy^o!9{yOKmwhZ*XSYyb=b$v6hQ=WiBv&Ghd9oxrpb3GrHo3W#U3s|7=;4PG`7g zpSrFQzseIy++qnWR_X_xb-c*+Ni_hAsN_s^U7Xf=5;}0db-jG5c zC@Yqrg|b>}s!Wj(J|G}H_VTu7Dxrjo&{t)4Z>U32`hb7DwY$|+F#jp)rer2~2cT=) ztU9o*IfKxR!N2dZrAugm#CsGdFM298+i<7wUPr3GQVK==IZQb_0E5sMEZtITzme?o zbx7>4x(HC`+o1G^@hdQ<-&s6C7r^h|OY}PV=c#`AySzBfCD{TzR*T}WOZ4InirpYt3l`!_{7Fjd!0;s|*x9>bdEczy#u+c<%|0%mv z5}##+enpciDJFZf%&hdr8pusT_%~uBo7d4-#Z2Ok)9uQE2lV@#>5o1aqr@0%08rf% z=H+Gq=A}shvySnkvCFp<##R(Q1)fyYEyYC-8k|9cq1kB&(iC_C@ts(E2E%?jHNidc zy$Lh0O!Q4q=SaH@pDp5P3=;;Pgo`{4Vb8c4UjsGgK3t^8f4Ue9q|>zxX%1jsSKxPn z9Y<3Wtblxi<0OiZv7ds<+_U*o?<=rwE+g#UjTVsQVy(WDuRxCzffKIe;T_}kvw(@? zj+5;~XuoS9P-BT!aG;C2GVyqBu|Nc;#s z=KcLRB*oPd<;DP>2{}@h0MtL8`&RvssA)824}rQuy3aswp3^HZM)w;4a#m>2!MiG^$ zuylXt;=JVk!2NmmimGgg1XUO)N^@dJd}0Qiy6*1orF8zOIBpi}ya}Tk)x-GkkO-lR zw1g(jDTraGOq}0Lfu!mI?2r}@kAi`A=`1Dq9--kHOez1EC7mD3x+s_la>c2DY|sVDG%; zT$h@jlh$KBKcWZl36+{ zh{roiPLOrZLq`;NIYYXn0HRSxV3z47aWPullix_XJ3*H*@5fRT7%a-o4){(Kfto6U zl@$~kFF=n#t2XN@>BCu4B31c+{Z{?-?9dg!#YcXabc}-v`7ouWD4JufJ-_{di;OCk$8e=^8flxhjsnG=#?!3goG2SNB$0d zopqH^2{X}&?(cFX&D#ddGRas?ilKDuo4TSh9gyt|>)O)d4bTT8#o(kGbf*s7A)(c_ z+;ap`vLXUY`jbm1aW{Y%t52VLg37Jq)$3^|;JFE2{Mb^sA&eR%D^^6gJi(%LCX*ge zmY{fEqz=0!+^@A#1MAYcrvsTX#_7h5fp9tW;*l&zQ3BraUl6qfGgZKMZ;wH;qF9+0 zCg)ucvi<(mlR#ZS7%(%V{;xq>f}a&;qJfdR>$JNO4cNr4-Gxj)+Fxc8nm_m@Zo?>(uGUm8H7IAxFK`mu?Etqs6w@fIWY#_^xDPKWWKAX z)AprO6P|+mg9MOiGD?;sRgxLS3}o^eUb6sNd3$?Ar;`%aN5JP938A{nWl4&;w^?N3 zOm;cc9cB=EL76WE_*Yd;Zn0nQdAaH0T|@h6a=igwxq z7g;-LB7SR9qD}e^82ISO1)#Q&pz_Ez{s+8lt`DKZ-K(Aa^?c0DKUrS_Ozw3w5DL8R zJm$YOH#odT+QRM!FcQm1H5_Vf{SjC2aEa&{g2b7DVG^Zd!d|uA>7Lvq8%Q`>BVU++ zoI%#>kCFIRqhl4&@th#gOe8+SJwGl_uTYB@yxqp91C_FaB4xQ*sVUR?y>vmK=2DXU zMLhFn`2FJy7DoXFrz8@x{yTY2?eJ}? zK?wy9BbpMg6G#C=dX4-mJxmuAy_)jl7WMvyyg6+s0X&`K5ke`P;RXB9F(WbWg<6{- z*vo7D0)avdD#6shPC$a%AjfPdtnJYN-ibQbeEfEouu z!n-m}((f)1QK0;{Dl4qLV+)525`xy8=K1j2jHJiJ1SM(`C;tF8A_|FJ)uq-Jx91{| zT*ANVC#zr&4WnX%WqF$4VInE4<4((t9wCj?uC5HHsB;KwgF{RwAHEwTTmQ<-Y=J;4 zSbD4iOMJt+evhNQl=P<&WSe*%oF(QJ@#NfWWWCI#ns3`o584X_o7j$d@!AY==*Q;> z83iMtGd>^?OqmMH2ILq3H(!XTbizi=OI2%|195f1FEAxG2#B^FXVtqwiDm~`QR~C6 z`)snG!6qxQHyn+LM&ho5%;8lqjlaX+iNaH9KxQxgDnT}LD>D5#7(D`FOad>Dok`F6 zIi=0%UuF*GNaa>dH-gq0GL=Rzy_ijK)SJ? zG)8cMlQ9)M@5^nFe76e%8nL#BC+x}DI5g7fpY?6@J7x&)3Mzeq01c3rIA3lF+#;0` z5P-oM1us5A^@7|F$qp78sBk+7l&;ZB9q_I`RLK&Oa?xpTZgwhpse9DX^j?Ysc@qRRNqzC#(=YCFfs_OuS$V-gEKnkm%#_bi%3$?4JU@2S`n{>56I2dXH201eUX=;%pO|@+`S8~$8tG#*P zckzsI2ANXCUFnl84aK}YutNfjGrs^&jwMLlGOfcZdI8ChV>aR?B(})1Sg>16t}!hS zOm%gf4{r$mbiq>)bn-?l6hlaDv1;Y$tHRjq$yB{9X_ExNI8y`4<>v_#@c?gGvmK&= z1Q__lWRYM1V+k-z`3gb&N6BzReU)YT!0;M4?-1vk3sUaxk+CtukRHV}cY`xyN%yEI zSFpFZK)E>|DC$k7?)daRIb+$eUX91JjEmEs;YlzP6I*T?n~kgCG(hLZ`WC7b_7lXbT8!n_NY-x0dENYDu$NH za)J`IryK-*{$U5@^74f7Pv3qknFVwL!gG@Mbx^bKsXCpjw3#%!e%=NT`~;9GHT@3-S{|TVuaP#bE?#Xqof&ZC^|ec&1+Ntmf`X4wo{IVl zRtBWMNMJmU_}h0>(_qV(ZIv2AJE{KHV$Hqk@1)<|3Bt*BZa~lqY#ty$C+NGZ?JFdD zfa=k$ka>Sq(%Vnma!=Zv?MOAaW_6Tk^LA&!Xf&f~`>b7CK79@u0bCq%A0j9KQuewv zoxfPk^(})5u+(T4Fij!?WsoCcDo}aV6bTWB00tQpyiCeWk}^C!h}~lHV1vaspUC0W z*oUc)b=bcj>VPCaI2FIfN|c9Clit?OX*%8d#plrq-b$yLwvdKbG20=*OZuOMao65n zrUAJ2@4Du2Xy{3n5ypps$b&!;)nwZkFY7=M-L|wB2Mz9Q{Uk&wl*3>#aGTL`qKgNtX%?8_SYqHR4){Gkq7qwv~%VEP=M& zkV;C1w2vDF?Y9fhNHD$ABvLmvZu{qU8ggOKLb!Rt340eBLhzbs(#PJrnWfO{6@EpfW5EMCU zPMuR_e1u#y7E*)0w%O+D>Yi)!Zo#q58@IAJ;utk6FaVJ3pt7D;(Dr$0pX%u*xQLQ# z{<&|$6up3Z%c7rDKcO$T&j~Y&I@|SmfxoyiHapfhS0VpLXvnSWyHZcQYGA_9#HdrD z3NMaY)aT2!CdT-9`q7A#2Sxn>TWxMn_{(p4QN163x#&T#SIyCM+qLDJcO1^HtxBI! zX-llF;W$)dpI)-bzU$CEjCd+jz%gbt1i*{IGfu>+t!wJN@0fI7NvCG(d*pAf5nuRW zu^D^I{KV*j%DkM4%F2An=gKxfiZ6cMb@&sYp50kkCjUaeaTKAogc=*Q+?Qx&*gI=( zcuum1%N~Gk%n!6b7#z*&xz9GiIyZbav!=kXU)?p#`ryQv$C5{E#Kozg@xcZg4@TN& zHyw)l^#mcH{fdLu9 zaOjJ@a?B9#E@3Atl8_(0{aL;cj?u4#jZs}%(?IlRrNA$al$z|D>F@8*lf|kjEt1Nc8NIgkfR7r;pa#dX#_O ziHKQ-*ui!o+9mqRi_vz)sYUmG&UY^0-&4ZoKmfB<6pzLK7p0}9mVNj5He+XWQtjRm z6FlE;pxwy#fdj(qk6i0ug%%S>Jo&cTkbaX$=#6)&)rj0zO9r7wnp|j%XL|aub))qpPlzo(k?afXlKhHV&`9D`ws&uqFns&9yr&e}29t0&F$* zha@)H6ghtHD;{~fgFfa7;25S=4)!{DHSQ>{(w`>tU;>te!L{?+`%&NJEvskhQ+X<5=>&`s!K-zhsQ){A z(_*8qHLdpU;?pJCZ%*6jt5W<JV4|9qV(c6|E7Um&4yX0 zF&DT7&zwtB&6rc%aZhhko7Uc!{0XdMr$1-`-Mk!Kp@&oTj5EZ7Y-CiD(6 z#dA&z*75k8K>(_i~`X@GA3 z+_I>eX5V-Pru6w)$gUx&xS~|nj*tp(6tx}v0GvM+DOW5BeJLHQ=m@J<(u;pnZ)F)e zR;6kP1_11qSS2Zf<$VJW?#!^nmK;9cG@*8L=b=W5Kv@7QfT(}lV5#6<{(+Wm`PiUw zW+yqh$V~F_t@C2{^$2Kx+`keR6+Fv7^f=RfG9_K^78AsmR>*)bv5|%kJP)(>c-jrD zYZZq7{G=hvSQCnYI$|2O`0l=(^22687W%4Vozj426xtb zUQ8y$;$HFLSmrQ^1#z4+qvBV8Xg0dKVzfqWfZ@`cRpdW^ zkMZ44NTtFV$dx?jAT2tp5&B8Ly0#6oTnxA?Wv}-|- z!^g;{zz`HkHXM&+G5~DQlC@)QKAr9-AbQw9V;%NLZ=^)`~wxnkk0m@^7J*h|4;KLj)=wkx~b@11_R~-QE8uX}m@S8HZ13qNRJv&3E zhM_V;VP*z_WbqmkpiR0}8E;^P^kkH&<_XvZUFXVJ@%d?OR=uo-lY;Bd zSe;g9x}Y{spf-e@qnJCuKo=QU2Fh~SuSGN{8ixI%j)N_X3~=Dg?|C9Y(GY3Lzuxh) z(D8`Tigf^GqqkGnvwR6$b-eZime>bXZ3g)G0^<{I!tD6{S0I4~9zy_y?!`!IH;^q$i?@>7eC8vD1=?i2S1wDA&v23fM@ zD^vqkV0AJtV9kWMzaTxGIhg0eo-pZjj{n%C{n)w){9f%qWWI3WI=4BXvY48$VCZ2z znYV~!-eT7oz6Cwu*WiI$AeS{_coM(xBu2~W=O#j%hX#!0-?>vmqRkHDcbMn`Nx@gk zu1y~R@W#Cpv@MK%8REou*!-7nGkL-`wZU4L>H1JCDB^*9-NZV1nAd%_j$7amoI+v& zJJWB#z4E5l=#>`@pscrXrw17ib$Je}$h( za(xsO$^-T*>4g)Dh2(>*IWe$So{Ct_Z0h=7F=20r1bGi^ zaX~yW)xfQffAT=F_g}NpP62LRzdxim%~=nz_57~GXbo;%hx;y>SUuC~8@1{Furm=K zV&71#KkgX(zf$1?FG9{b%*XyC^|L$PFY9H#0s5`W*MA!<5W5t6A2lL92Htq{K>h<{ zhT!>fdJ_If?5-g@%IMI=q2u+~4(H9d{BNz*^g74Rym@OL(+p;O0vMz{#xGG^k0%q2+`E?F3v)FzhfA zuvQh*KEiqr@Pl)036OS6b`*)rV|7apVnM#rmXWF(>B;~&HDO_$crlU#bK)8O9A`^7 zysi1UnNs_AB>>upZ?^mKKLEcvyO&!J>gTFVEh+(V!QU-G)&xy7bZ%R)bOS~<{ef z61R~j@70-d|8%1g(19j&E*WNDypF>d_`Ky}6gE>GLPO~_7Ex3u_evb<)d$xeh>8Uh z%Ov>@rwVKhbenu_`Zx%@1||P{)$iGr<27~|Jpm=lB-Bg-4-1EeSIRD2OFDxf+$K&lHl;VbsRUuYq3SuzT}yqjrV}JPP~^XfG!HSRNeZ zmB5_wL%yQ20pJq-!7qIp=2zvhXFIKOy0S2OEU#U5g!m4KBd=T_SycvAH^ET@(SGsJ zvjOQrlB#j;Hn{B#jKt@~FbKWa(ZHvBH3iN>%!e!}?DQkt1z5~?ef`&|9Jm&C%kY6l zq>WX`O!>uJU4mm|T+@xy0xYeslGjNtQ$NjJt8ggC*sb+X#YOoB@2xiIhVdYwSfNs% zkRUNj!P{_)X)!{PG`^4+B~Der-{3gHI?8c`pkLv_eZ9frAs2$KdcnDdcd@C|{;e&3Im z%31y1@Cj!q%yUIn^R2;w)-dAYP4Ek&;(cXSQI+Auxn+N$?i@eF$V}}&h*xa{VU_v# zl%dY!Y~XwywpCl5z*I1Zf?(9q!g;RPA894q zv11eS2C?8SOySdJyeA*VbF?Y4qmJn6xOq8b|B?W)+U-C(?x@_N&9H-4XiiT)6lVEP zIrG8JUS;GxwjW)f2NMM1f1b?I5nXzaQUKJ4ouGXo?w42;$}*StQVX4KGz4P1#60K6 z&ee!YPR5R^6D;A@&~3RiQ5H0O$;rYyn}eZ7Br!?7hImvhW*lD4tIg1?Ji%h1@gn7w zz6xS$9*9WVj@#@UOh`&y?rRlw1QPPre)v8GZ9auP^bh^QHTC5ZLi!hEB9O;lhw%p1 zYKC){DcU$BryC)Wi0k0tB{8$RyGWN*LU#q>=m%bLXPk%e{4h%*Be~%HcwY^mL3Uk_ zF`gQIU;2sQu<8N}ioKZ9c5|z?Cq6?H&t6KD zj!Vssbf_yA1`61lFnNcHm($xQ>0)}F2TYQtyiYoUNNtM_K!Jbg*XhvaDG81c$6kxudl?sW!1THHn{qYQot3R z330@DYMcARXgjXqh!}1$Vr6tsTKkmS)$ijnuasB0 z5RlN0e23}-?3o0{l5EypA!$6!Gag7vDT!JJv?wmp5d*BuBkUxk#-oRllJ^{tpEponxQSp6jgkD@ z7?EYB8Yi46hq6m@O;^P>faA1o^pBMxNpC{ZL0)*Z;)8pSsbO3p3tBcmqNHTT%EUuM zc}?Yg)oxFJhQI?o!Qw8oi4=tl3?$;N7)%%<>cP45cdJ9@Z%Y<3dEoQBM{mZQx0>9@ z9NC-Iht;3~4;4&mulz8_=4y%M5k6WNvf3X+pwp(W7w>X3W=Ha}_37M<%g}wnGhd}I zi53qbFPGo$Gl^(e1mwnTYjI+7^bL!9p|BGQRwPHla6E`#|Gv!06emicgFHHjzr})` z`4tM6p+G*0CkNCKnLz{|^v_>Vkgg+A^`Ve{DxW}q7v@`RwzY}_S%XSv?e08`S=gC? zI3DUus9uj2N3QWyJk!Wb?m+1Daw`Q*YSvKB#kZA{@f|yY2#gn%!7LpIerq9r&;#U2 z)sN_GobcMfmcgl2Nn`0a2qMRne#NhAXI7~Hbo7-w?mtiETOPI*pmJ%Y>O6nQBGvLrL4A zO@9~M+x*ceu@Fz+j!8Oef~1+5-0|0|1^ZEe%>8HT=k|o5mfO(vQ{9*Kdq!k7ccfKo zf(J-J-u+u?;z&U<3Xz4SleTN|85ks@o4d2pd2}aeTX9ybQ2p_JcKEOKgOZ=7IhesP zEnb}^AIAwhC%(be?sI3gN?sU&B%y3a@<3H>-mQ`#9*f6GoBslr62t_T~5f zY7!XyP6v^}t5E#oo1VJ)8bQv#L;SFKgVC~aTxU`vYU&d zj?I{W?yAN2{I$lFr5x|I{zVb*L-~a#YML4rJYM-NE|hSs{UV1X%|aeQ7%L`yy0`OP zxa_0)S~vZrS3`GSjt_~sIcHA1#$a7-RXQ3r8VG{u)KE%j2qH(3{-`Lx z6Gop|BKU{e1!d$8LFf5Ne=s#P-*4~`=8jgq4HfrtEP)^7Hi}w`5L6m*=J3I32#Wlu zrlg2@3j1{w@MdJ!PjJ7f?;}IW>PICZIYtTzy^@Bz5-}M<-_DfM{Go?eM+VTIwo4bR}*euIQPZ8Z62vQ-u4S%9B95>?U1m zH)Qv4ra+ref9;kpIYmjYK+)Ts?0&0>i~jMA79^8Tylh(E!JgMq9)CK+{@{wApXbDY z=f;+XUuAG=W3cgZMBgY@K5km)&(*w>%=OK*#^E@DYXLX)k`@cv0({GY_e<_n{c-Bp#IXkR_V;&OPfY1<2ng)2+#Nj@3aC(kLAs{f{n^Jj`$ERD zVS)A)ozixmd%?Q=WHI}nf2Nt%iwbBy`$dIHf3d&*SMkIqE&Dic$2O4Lt~aXS(`&?8 z2y(LI$^IGl;;na3)GdWcTD?pjt6!r5GO@UD2K>jX%2bD?CEu%b2eyOrnLvS#A|MND35(^asc`=mhqgS6+ z{2ms##(6IJ;~y&2cY(E)qmnP^Wg}wr{57pGEI!!kIRgaIYo+oM zaOQEhy!nykOnKAIt#90oN$DTS`Oaz68Z`XzTHOe~zA$bb1VPB~>l97ehkI?IX-x%n zfti2=s?hmki^mV&6RIvk(B+U)Z;MUd5&m;8ae=0FV>gC|4pi-C27eNiASk_m`GH#B z2eA*ccUf=wjXvSnL?LfGX|lcFS2eZ)uZR8L3JjVbFV6@nFva3o$(Y3X&jFsgm}Bv0 zz>k6WE17=44&xm%7y2^k7Fx~({C-D%UjUwAUwqbBi+P$c1lV46f4q^nnCnI#-P3Fn zay}1CMSpji=dS0FlDBWBROwY11ZnEXUsW3~JexBF-nYhJBa8B-N^gJ{6`v!}iGSUN zWjvna0;}u{Lp3!u4};IM0oq=)WAk@xSg-l+ED+RfSz*-WImYA=)X}ZfmzH2~TaF49 zAE{D_T5tNRt?qu@;lKz%a7wmv^};jOIplnrp;BNH_yQZd%Qdt58m$AmA)pBSW3~{4 zYff0)E7w?(KH2-HBG1Pe@Gct9!T0IE1+eQmW7#JT2Xxgu@EjBoXH6e&rlR4gCGn(J+OeBk45kT zV3Of29G+j;wl(Ele>~d6ORWNgmPpReA^^|7U}6V;IBDpj70IGP7~X&%nnOyflcB5% z2R{Qeff-$vhpBb?2_L05RaaMYy)oU_2Gd*Y3wR&@nrRCiC+D9NfM3aP{Np`+=;ayU zX=yp5vmEfnj~ei4l%GAOu^@7|6~Ltva5MEXCrpi6Qferx;tq+#{wMR%Z{Omwl)5hh z8W$5wLs@T~$U92UU4mbErXr`cK4~I|We$h}BrS4nsj1&V0+$C^UQ<#RvC9RYbiAob zVq(Cb8=hOe?ruJ+eF}o`^vujle{EP5PO1rNA!u_V4+Z>Cze zfc4aMVoPKi-w&{h$cx*%y-8c;2Mcu0TC*WEQOSRe_Z0)2*C$5x9W5UN!KD8YK;Jn2 z_OkD!2pi?As~B}^cen9KwV}b?pN9kRofmGb{>6KtXK%c%!KX30Bbg?O_F^kIz>qCU zs|tQkU2QdZB*>!PTsOupt34362fBg#LhI6lKc7Tv>X^?M4oLp}@+tn9Sy=iT1K#7? zQA3NI05Im8#tdFzb9_b4$8Fw4qintI|FM=b?qbz7MuRVZd$33xT?^ zxLMCA~ zYgS3!YTaX*@dBnACq5(|iwS<^&b`q~6ALYr%;lC8omanMfC3@s9cmIJVV$&+QX}0B zE8D}-TsmMTd;|B%;^mXi71Stecyr{3g~{#eZIP)mKmjECfbMrUH7ci*%^du4 z>t*|XkpZvy;vaR-8KN|!aaqdEK!qS06_hv~S=4zdRq*5T+?3}|G5wpFMS7>;Oxj`Z)BT?tmq&CXz4Xy8qbrqfWBDO<-sh3>l!m$0%g(^(3iP&{ zr+SXA_3w_IPo9#cpA(?u{j$RSnwPRq0D_En{?5n<-5s95D2C3{Ij5jV zzTk2_l}c5;%u~s82@bQ5vd3*=|hTv`=JJ-qH%M8bSON4aR_VJYbbV^?K$y?}h zg~@5&AKgnjgVJ1wD}cs7BiOjA!$awlb@h}Kp%Ke++ckQ_GpbO?s&&zIX$iL(Q!>cH zT0p@2N$bTM1}H0I2g?-aBI4J3r;spVW4F8eQ^l{HFNSD7ne7(=ZbjnmO2SslzR|wt zvDnd%djy<12CpPD2&6NeV@&wd#e?HXoE}Z8YAn0j5U{*!a#pqZ#~q3aGN>DEo}67! zc3jQG!sosqiBR2VhF&s$>S(v&(qvEbPv6+^Nak*eSJAo9PXqN+9GR~*9K7BhFPPTg zzq?Npb#HNy?~D9g2=j6!IS zW%at4&1})W$%mFmQMW;yA%xQok?_3ux+)d{H=6jcAXj;P15E~x0~4mavme}y+0D|H zb?g5H_ze%uC~9y%(nCZJcEjzuIhRtlqW7Eh%*o()!RP>=$3|?vd0Qd_)4sDf$tDPz z6!YI`UTD&f_2SFUhuhIwv4lgj>a=EItJep#hr(R=tRqNPRF@;tI|DouI=M}Q5kC=7 zyPK~7!?Wv2ZuSmT+WnNE&vGL9Qjhy5aX#x)iR$UUVQSr+33*zFYGiO$fxBTImQ*W6 z9Jl_2l0(S2k-pi`g@)~?h??7!d}5w_Bj_tp2%LCFCiYQT%WGQO(@=-X>UR6ZhL1Fy z`0GzZ?2BL>rm+UR(P73LXCQn`NoLgLo(EXAsX;%i3RYz0{VoH z9BW-ZX!JlPZ%G8z}$TICWy&VfpGd1z%W9 zBlO7ndq$%vCQS25D@o|4i}~Bf?}G{g&amQ@?6t%_$>9?0XlixFYebrk=*xXB}>)rJ6azr;A26aRRYowh_CG;Kt zp2RS`%!dbWCVR`E7lUgc<;PwOD~S`YcuCeUtCRdAbQr52k9%}Hx0!rQj=U>LS=z2k ztY<5o0t-gaj9~SHaC}un&0ztW4+yICpv>%f=kTJ=5jZjbO`-x2fX;Tg@0%~E)4D;p zRw5g2&G>`=gLm21zcVZ`N^HQ0@aD>Pm7RV_OM5z`r?N&*@eft^Nwj+d@9SP58@Gah z<9a#wX_lxJVW|P*Az;CMOb}<>uCSzj@J^!hEjPdp-kDXz_jvnXVC04vW#QZMUN{zo z^}C*;-_8aOj`bP`HHn>bcffgW>YUT#h%Bq|?DG`BGJgS+Rc<6uvj6A+qRQbBPiKMB z;aKK^^^?JXFOCIT*G@&*7O7QY;ti0HGRu|TTRcYg6i^myYgwAPd5F(8T7@BuNZoJYkwTGzCPlaHXxwcR3qQo*W5@R2+ zcB-iqRr3PyTA!)OX)S^(G=?B3n@w)JjBPd}5%2Vbr65R|C>=1BQfqWzq9M!h!pH~2 zG)83Uj+Pfz?41L6>2AIKB8)9RzbXj~7fA+^iFOgQzlZ-h+OB)oz{yp(eL7u>ha*_B z(TYyB`E{;>76hF$GdB}|)_sb}-mk#M#m@W+G4!^XWJ_e310kU+@=g;91Z+ro=8l%J z>Dns~-F+4sQwNnYZyb;2a@$__QwybB_DQyu8#N79J$Pt5txy7X&plpDmj@ckRjv+V$1K}0#2I23LdC9~W$wx5Bj z#Sm(^svwuykx{NApZySo?fdHr_`5LZC1a7;Q|1CKubqAE=5kNP_i8M=UD^dgM*=p%oC+ z8>}2!MVy*6Y^dGF$sylsCjXecThpK=(&caZr9KcXj0EsYEY>;vHx;eT{SU|O*vLFY z=_YGVN!JgQ%+{6;GZ+@5XWhSzQ`$yJ(mCD}pIdLc%9Q@tfL`_aMLr11j#Xn(+Z7@$ zGuW?hp0>G5EHbyfCscuwAq5$EfwW~WiYfRAs)Q?K_|6t1=k_l18u=d`R@|vXk~YHb zm+&k(oeo}(RA(FO4;WW?I43fZ=rVgo_3RN3C=9^v_cGL-$LDe7=j6XCHxp@&G<<$8 zkLO26rAozDkmD$y%*Z;+r`Bcpuz*Dnc5T z&8p7~rR62dOjLFOB4S-;RTe&rNKJugItchpW%q#hHy$hAC5sBaCU9$3m7J@Zz1O>8 zi5#J8eMe{ejH**J1v`XW&L5e7lFgg_6V~b1;1fHt9ITV+mKy&_GxAGD*L`Y&!|MLa zC9uKT6SlLnB0zpDL)nO^a7sRTwQUrOatEW%M;ptZ5-0l432aaEMEuq(Rhgtc+e6GD zocgi~i<;`GsFG~%Ke=Ps>wE~CwyV~`w2pu4Vwx~$^3V@c{=>T`!e1?b;PgNhffOqEBZ)@!^8jL=J+8?4n zK(7uiE6uekI#-R`O5NJBcuok?)s=Dcks=9oT#4XU9c{n|#@A^(ltm08_}K*x1L|IcHU}DC45) zhrws}c3NK@4{MiS+@bM0@BUDAI+HXwTZ5o4+9;9-(-XS@Y%-lY1w48kproUP_Dc_^746 z2Isdsn#V;x4iA=JJ*6oL3Ct9G`*?@6Ef$D40qnH4<6taqw#(w}u@b-IAw7MLlTme} z+ymN*7UJDlYSpoiK&7T8K- z9g`3#Yfk*t)Gb3k$)jL(<7$7s<*KLRfYSPq^`3aS8J`M261m@{_QwXSB@Sq!Qe_?4 zgKn34d}zqIayIo2`#$sR0PuW0oOb0B3MbcL(8r=-@A>Y!kVl3vwSfHx=7jtE+L=*x zlV%d%#?ij-$+fP49Ms)p5ISonGzs4$FKBo^(8!f}*C}|L(RT2Bm zY_v%Qi1gEbp4(HB1#c{$2uoFRtxB@Q82I!&GBM-O#Iw$ad$cErt%5ALB1dqeIcl?#AGRg@ls~l6tyL9DrpRa*f$1f`cZlib9-u+K05)1G0vPWRNH)X&SwM z)5M-Q`HvaT;OaK)Ozw2F6HjV1?X_N~D0qs&AmkToAij6F*)3UCur2nB5&Qb74!-k> z27Dg(3;&GFjClQG}3cn4}a!5keM@zX4G4$-Ub)|9LDmZ0Z5FQ$b9A7hs zy+}!-btX~5M#WJ|;tcBFX4@%iSGPO(swB}(GT$+(BzjEkxss&P-SI}{xuzWazqsSg zrHrV}F*JkDAK*~fD~KKuEFdE9)}4;|Woevau82;0C}XcYCm-0qiOjVtTDm6W4};=M zjUC6nwN;#oG8RryK^+yc}`5fj(SKtzg5AdGnDq}<|6SL}+2W2jL=KM2**wlHi!G^_p1U6?V|YC1v>~5enRDP! z3M@qGnx^St_0Znd5DiKI?Wj`VcDd2k{EGVT_ZxQXjws5*Cr+K(y8h)V0$dZ4Ikedj$NWC z#};+AzkWytvd}RLwiW-}0ZV<8n7pjHCX@P+T0LcPOnMc3Gk3uFp{Ttz$>!4Ky^VXt zjcHJp4bDYU18zn%b7gDeyV*S6&FY5Mm*&IsxH`j0a;msf6lLF?%S zm-Cer>s-AX_SlXzbvfQ_c2z^Pb*soMI@s z!~;?Lo!*Foe`ByqXboj<;nRG~YCc*9MSg|xz|sh)_-ikW%B8U&C50R@1=|&vKd$4r z*274w(4hBpzHLmp!2mjE`LYiPAR*iGW5ap;gcMvXAgj*u?466LS*prN4&NV7EafYf zBY%bci+*rVuvTX~9Zy9Cr;aTv@w50HcRT_KHT+Z2b>e=bD83_=h9t3~7+F5yZg_rW zy+pj5QMLaAL}(tZu5xn`mFnihR$9`K;)SYj?ZT&`j{mgW+EOLh?{&@eaodHsD6vrM zmlCDTd(-q4$v`SSg0=g$3J4R2?>VfMyyRtJS(UUZs0l(a)g+KoqDby{f(Cd{@$?7g z^)vS3=OPmaZ*O3TcHc9`&;Auort-D45Yjwf^vF0~F1>YG0{-bN|YT|H7KAYL!H>C2;ONshQ* zIPLyn&${VJEf|z)tc64?>M85Zoth1a+0Em*Qks#w&%BpQ5~fq__3GS{{k}<1Z5*C2 zR>$;yA3UAEjEQ_3{kuR0LsB|nd1iTOT5N+DJRx2*AnQ2?oHOgoGPOwv%}-Dk13{`s zORG{{hR^&fTq{KqmaXvjKMuDnGH+%+*7VVGO_nWcqkwR0c_ZkP?X(X9@X}8?br@~a zDo`Y9&q#Fp3KF`^3#7`9$2Ynphhl1!!~6UkmgY!%TE}})mm8_-3=8X|^=KD9_izJm z@u7J7k-HYs@`aWp-OVgp+cMko1W+NnTt#(UxFdWP2Hf7{lOus7d$K5vrFKc_x6>h@ zNGTBN^62LfJzq$VVWy?*mOCkZ^tih^Sm}-`W*;;*Nz6-DKC*T))nQR9y`Ree&N~Zr zi-VcO|NT*VY=eJjm|18@Fat8QCkzvLZX7?-_|pA2`8)`4>WUT;c_M401M~`vHcTX6 zG)G=hX6X!HeHUyAf;0Qk>A1`1S@GG~k({Vsbcti;WUz%U+zP)^Kh*uPIpb`3c70M=J_+@op5Azb>4uwht1CwNuvoN$>u0; z7jf?yQ(h(6UzeOrOnYx%JK%xWI>}JaRa<87BpSAkg1q!tvcT^$@C1;q1EX*2=If__ z*;ad-@jIa<3!6df8WEP8}E!RF}-$qhB}tK6P-b4t}~vh0ID=8NmXBm1!DOTRxV3- znTqt4qs&*9S?x(H3e=v0_LxTISGY{#iGBx-?GH@8XqNt(@0DqG!6$F2V=FeO#N^4R}B#wD~(f-STHo)k1iI zZ(3?2sb5E`=c^#yN_Q;-bTZWwKh!0p3X7c0T9D$@m{koltQtL+B*+fo!>m^{Cp6kl z2`;>t2|38O9-$iYB(?PS<9AiiRz6dNy|ey;v>v%2 zIc{U=lB=7=F_W?w)VsWWImcMH^-O5L*zGrA`q`gR;hgDs0Z=^a+wh z?W~edj~ff$OV8uvG=69?&|1jt=6B|hx1of{9m4%@kKDaNdz6ZFZlQ%k57yPYHBC)1 zk+XL+4RimJ^FjT$TuW~JSwCPOx4DTza2xP)ii-{8!E4ZpgXMhL8o|r`mJ)IV)F#N$ zo{H-E`iDanI~DzJ(+H8h`8GUfW{&1A@@-dS=qg7Q2})g6JC~Nm4aGOMx76)7B% z*U#>+xzy>*iJv|LV-DMOoea9P9Tu^&d%LIau`!1mk7)3FzFWs6Ct(J{(!*$#kDEVY z`dW%weItRoVBh6a8So}7Mx01j|EG=0wdxdc{`>=6VIy|z`$NBz9tN)sn4LoEn}+g| z8+imA9hEhz{1(H%gEzKo<Fmc*?&m+3HWq{3mwtaTr_w^Gh@#~;wi=g$ci9zI9{m*Z>^2wOE$>4I6bb5G zvc^~3y;&O)IvRP$hB+m-A;;9;ih^47WldxIC0C23=PDP_Z3l6G*;-8sog712^vMNW zr^V3pI&Z(ng<51KK3TsxVmr=?vt9wMh2yRXrR>%pQ9Ge$zHt|NNe_70bDP9pj-dZM z@%2=kWHa8Iis=E0i@?Xf$p^{0P^yq#;OwQB# z^QR{zuV<-*pI~`RCe5Dmen#D>khQwkWOwy|32I}dcg(ymU^e>mqX<^oxI6{09K`?ty6s<_yogbetcFa`RIYiSL z9zF?2MD?2d5Fks}%~XH1x_?k?#=BJ9`NI4q{~p67B1q3c5t0jq(V;b-I&3}gr*KD< zF|zQnFb_>HaTxHWNdCbDWSZXccmZWIKR{tbTieC%RBk%XJJrY(+b{2$Rs(zl zM#tc-Vqu%8wAS$cIXvcbraw$gFrQ~Bd7efI+RVKeLMoQEn8Rot7oF?d^nY=RL=X^5 z@Bi*SeLTub))Eqed^FVW(@Uu=DmK6>ECrg|gogu1WKr7s%7YhyAuJur>gc8CvC*G4 zoLmWh`mBxP&0SCViNE&@)D99Pnj>G>43#HEP{Yq;8m<_nx8>ZPnQx=hTmTfjxv;3Z zcUj`4W$;1J*I3IO)ZX<1bxX(JYbQTns8}?2+vPs^{Dn6xmMz3;tyQTHdYAGl@4VNOAu)Q5 zGfRVay_sUf0-lk7Fu7@DU-I?&ca?X^7(CLytb1T-FQDHukjMJKcel=(x`@DEqlpeYA;)vVRfI|V|I*=KR9*4>Mou2 zB4y7$%dhKY7L`YW&OgI4znw4(3 zEuM7unNCkk=;4uqd}>v_==TRS)%=%hHAkovHMDAnvH3coS}(7zvEn_F5K-UCr>g6_ zxu5;I{vz_}rf{IOK%!!&oa!iM*-UkWO6!AX>L6PGHdz$S2Iew5d)i(alf*)MLp?cP z|NXn;w%UFgqPNFsuddo-qLuEUchZ$cs4lIUOVKsNRmlhN=-mPz8hJFSzq(4&Cl~Db z!rjyHDV4a_^gH_uBsc-+7(*p)A+bz#t$jn{I0XgrimM^!8F1i($AsaN(r&lR?_wU-&o?<2& zfCc?%llLK@a-3Zf$g0KVq>G=Ek12}YPL(vlgrKzs4;LhZVj`n|8vZrJMdIT+ zVi8eGAniVUo8SCP`R}z08B~cQd|plm;RoUJQa2;7mHY;Q9QYs-e4sheOKHGYBoRPv zffZxFMBHxwjv8eN;pr<^o8ekbd1yZ&F%&P&B;+gKkuLyKQ?BvqB8}hrL-AdO@l7kU z(~8QKvOIy>L;2(gY*f6or3M{iP`vbWFm=V(S#S^%3-3L4&Yb8?KE4hs3SMb1D3PC# z!O-BZy!i59no#lNsQGQo-&%3!K!z<9%aQgU1`RcuRFJ4oAcz)1L9oiBe1HS5cyR*7hu3Lzx| za$F;ZsRz24%YE~zY_o$O6t*~r^Vg&TF>thQsj_qqcXPuC0%u=|T@{}ftFhL%iWAC< zt@693cDSo7L_c!AWo=VncR-W#s zMOx2(6nx-1A8v6$NSG0i!Lc;$WrxhF?5{o}1Yv9Q*n)HCoVQ2msKNs=CsR+XaXdO=0rdBFAu zPk(&60U1*V%z)2aG`;c$Y2y`Rt{13qj9Gxhqw{zqOiQPlhvQOfawMryOKReM@*wg2 zN$vy_X=;rW(pBl9lO(8EJON%wN?xmy;-1WHTPK3po0tR!!0@G_w)7Ct08jUI$a}Vv zgr)lpbc%-~zXqJ6Rr#-s81YE$JRZ>6yc{vVL(7g$m&oL?cSA8LIIlPj`QNEs1(CTU zmv>(do3)iw=AWA}BH>R5YYq;$F*`3O!L+oNv4h3c+>ei5o=uvlvNqAGY-2M|!rD@@ z@Zot4O8(7UM^*Q5D#(Sr?wy{RWus2E(a)r!qLQl`Ry^=$$@$AyqyBmtzB+r(px(bt zD>D`}xPwAgwC=2fVUhFDCJVoPBrD*Az0xwcsRW=watLA=y32$bwKqK%+0#nHXw%sN z9wFL(O6y?PKY6i{N*R=N_nuj?(*blKWa1Da=v4Oe)d%&8QAqimbZ}|5O2?Ug&bXGy z7j}PUpJpCpjvW=L6=m@X1|)PTA<1Mb=i0E_L&f*3UeM`Y?MYIKNrWZ`XjKb0RvT-G z4N`};?_xa4BtT2{AN?VAzYGXG3DdcQ)R)8O>lvZChqJR!_kr&WZAzU~=b+^~dL zjbxr9%mQJD8{~&5h0^JgZ;(4ic=1B_AJ2aO_J`7bN_et9l&5C$NmW_p4Qdqpb7sgR zuTFtG)7?O=`InJv$_C~)6$_eI#F1vSO=7XBra~M`RfbjNVW}6Svtnk9zJE8eH8Hz- zqLQ?C#y5g&k7#NmGs1iw8gt(5)nBUZ`OGvq;tO~AfbFE$kP6@<>5#)~%TPLMs{rHt z28xdIFAbyipw@A};^$ms#p)h&@EV&pp=r*3YBAW&@jW#e(`8)Q-N>uUo{P}t6{mB% zUoofp4H(0JeZ7^qm};%jL-JLdk|hqOj9VtiXU)n(W;-&<^WTs{X4tG&Ag}8?D&#Je zYMqEN*39RC-OeS^VA96FxQ(I%l~8~pRPt?8uxdL905%qc4AF3mT(Jy)LOHIZmc6MC|Cx=m=LtQLDS+V zx0gx6F28o_$BVh-u*>j#+}2N4rn!wlp)cr!dmCqFpSh5y9|ZDFvIt9lc*X7b#kxxT zESNEhMn>9SOpi;CiM8d_m*x<2xP3DtZjCwILr2aSTWmu?jc0e|oerOsrawOpGM&pg zy8xe6ry(;azlzOI_=Qp%w||Z!r@7o58KzS$0_z~V-8&|A5A@)a9IS}MScyj6Wf)5tD~BNxO%X#YQ=CpfH#l7l7PUjUJRYb{*ok9z*qNi@81jg4$&$;wQ8phwdZ=h+{0D$D zSP8(NF+F{JSFBo8CJ&lqvikhx?o>3i7*3`7#DQDOL!~_18ia)(#-wg!J`cj50r&)FQ=i>(;uFo{;x#W4DLu?13FN zN1hF)%osqIg9_u@Y+iouep1k4L810o={tj!r}B^QWFB3h!_{q1i;N?gIVo@(@E=e) zG1MkIX?fix|DWa3Mqz`^4tOfA*_M3Vg;JQLqe&+|bi*0Ap0Sb z%w!zcc1nLGhpC-T)>lMdab2AF>v3Eyd6j6U?{#K>p5L}Q{+IJ*A*5%r?2+0&C|VKj zIhS7$J?NCcR zfInndX}8%lqBa9{ZbcA0+>TnlIM$!GQrWb{87}1f48b$j0Wf)MLGEoif>W&F6?&L} z1;4GaMKximw?T?UBj+ez)o;FKHBhS1s36A6k@a)-Io&c&XmQJxygTUZXJuEs9vaSZ z( z<+(3I43{Y%TI6I_=Ge}4LdwiPIzR?xydZa`N3oEUEGZjg|F<#54pd%d2O5(30QOu# z1XBCA9o@GFC`z@n)wfhhaV!SUz|&@y6ix1POm@e3!|&stZzQfudp*HfYq=kCBWT;2 z@Zb3}lYEiSbOSBl(|hOSA)}9|UDN4T+v0StLv{eiW@EG<=dR2N2qyG!Q-f{OOOm-|_r741!3m+K*u33Xz4Ackcjs{CLAm{Q=7mh} zN2D$}(xz3HNYcTIoU1E7&Nk-CO@hEVxLJ48G8M;+d?dD|lDogeg^z#R-jQa4Qp67D z<1-3{5kvb^h8(h(hJSl>X`yfF%B+eJy+igGIp2gjtu^Q6PJ$AyJ~%d!lvhodeIxEp z^+wV-mDn-iF&&F)5~vzI;wh7SsUIBGmZCy{ir-pyjGRjfNiER#e`oSD&ly1GE2-@G?zoHngh z*f-t@(+T<}5Iot9?oMfw+q@GbjC+B-ikDD`JLm2mcB=EtSw4?61gx0V#NO8&s+jKR zbOrNg)HZtFe<@T@U@Ff9q#@xp!NHVsUca{Bo(ih!eA1m}zPOgLXXHp9Wvh?#f>SyZ zml4W@vc}yfgq!J-Ajp{q&Y0TCYNg-{lSef1ngHprX)jL-PmptC?jb}H3fCJrS@r&h-;!MHtcspIdYb{Xti+_g^@n`jb~-{# zmZkUM4X-ixl2xSD@=CMiDKKCp-QN8(F>NrAWMbc+@aP2q#iFizFmTi?gNcAVo`bO= z!glK%ChxGb0)#0u(t*S*5@mQa7_#{JjXKj}h4PV;uC6>;Kee10m!#)xNFLi>lDFuL zx4Zj>UnZRf60HUX6KZg_l^H|65gFd(=|`YW7xQYGL&H~3lBs;BMs|cZ4je`u1asr; zkylQPQJAD$FKCrz1OhesNW!%>5lmP`&hm<15?K7Y_ig0um5Q-`I>RHwxMfD%j*nZ< zC(L8lll@*j1Ky&s-JcOmWKrsamMtF2%eUSSx4rBIr36_%1AY#eZOOeQlet=6#`<;H z_ct8sLykUvIhd0H(ggioF(ULJ9&My6kC$W!?EE>-_PY5aq?^aVSb3^oiIXVf<*fE z8Q>HKty?q!+yfSTle5&eb24~2xQGl)Zg6*BN_x0PH6`J1s@S_t(#W#TR|zD9yCX-& z>iGhmyyV9#tOPEYZS=hblggMzJxR+uJ-_m~Y5^E1Gb^wg6UbYhqUv@$@sd26dXn(@ z$yMA=5Dg9hoPq;uIKSa<1S*^t8BNAyea-NsH|P2kEk`k{w4C>=0$wt) z?0#rfFPoTHL+Q7$Xl%gi$TTgjiou(L3qN}Az$aI(X`Yp-h(<&$yF5J8&t+g&6#V*f z>DBK=rwS@t1*}(=PQopB_ss$R2Nggh~p|2#MYEs3&VS|z;SPIs(pl)pgWBWt{ z-cmr{*lry0z)S~;e(;+9nCFv2tKvdsb(7dTV$jwCIiKkl<_zq;-LHPf#jvsTUqv8i zys_Rfoe!@Cd3Q4{Hk)%MKftu!qU!vveQEylu#->BNZhv@ZoeJ!P3$pY9#f4C+y#q` z)S#wzaajEW$dc1``iTTu=68=z89S&uyV#{Q+2Ev}KG`b8s0`E{f%Ar-QfF~uwkjzt zA+2XbQ8}pHlMxE^*>0&Xjk|g|&i>+{vH!`+P%1fDx8a0+%!ZafU*_9o~+KXb+gf5cv;0^xUQ6_XwmGf~)7w^@<^=|21oLz!{?3OgPH@oI<-!nVX&>ZPtTT&|ts>9Og z05rSK=Jvq=b(o^b8Sf#`3X;aWNmj5y2}v7Q%&sZz6@p}>yK60l``oea2T=6+(=f{A zy4DfDlW3x^`22B`2j*8v#MEGAgmC@*7O!A0f6Y`nO%!_UFSkPpEIyw~g$I6xFwa1| z-x5Ki>W1{`DWXQ9RKXs%%rw`mtg5oJwm;s^rF3=0C^q-B?uI1gx&=24!K{WM3B%b> zg|FVvhwdbf4_V&fRi21S-^#2IpZab%gOtBfTvl}T73k?e-I{uo zOvczH5=_(kBzGFyoyHpgxhOlm>RLXLxaXSF-sOd#PahwyknYxS+~ri30#Jp~R0Tkl9$DV?w0*xHD786PUNj>Ws^(K;!X3DQlu~oa z9}kBL!3S)WyF zEOL2qwm%Alw!H-JN1I({Kd7SH`lp{52pA;b0!^ZBlX+QyQMGE6wmrouxr3TiDm5v< zTQZdk!hghubKDrWEr)ds)@>tDn+~MLKU95QXE#^wr;g}tp&6f*Aj)yaOYk3672hBu zlZx5mcJ@6|y?Ry4W+%uZa7i?|(hr2Ju~O`CdH}bN?@0S3bjJf$Q)#%Cf10;DaLf4M zt7VI$B|P8w_T!w|6Y-E3Z>{a$*>S_DhpL=QxKVHuA;WK}QI(1SVAB8CI>I9s%qi!# zSooj_nM1twByIWS8@m!1ZVd!@3-5cG@S?m2Cxg9?a5=_snRFX_y^|DbXfc&amDXnU zDvVk}95DN;k}Sb{6X0N;0L(LPZP0AU3q(Jy?+xMhV-986&nZDU?{AOT2=9G3{6Rad z{pqr-9sxN3TSt1*ff~r-O)!u3Jt2H0Xd4RD^#SnqVk*#5sa`XWR9v8uSRqRXnq$~N z+#{_-7V^-k813f-^S6QdHC%PMK`CMJT9Fpi&nf1qgdCIyulSoICrLsqEW96Jp80_y zjs^v#vpW=n3&7OnQit?&;*om0M)IGl~CaB+tpjxMcY%Xl0F9xEBC7psE z5ddbjSU)Lua%tc`8Pk|0C<#!*g-Ex`1~>uS4Y|;EXVK3`xOEW}8XO40a;jL_os7Nc@-uimln@O0U^7UN2P zkJM*1fC{mAgKd-)IbTIsOcRnQb?XS3Sq_dD2^f^}&YMpTP=VduRnS!?d({4(*h_+O zlAfD@=jtrfc>We+IcL`<965ADc^g#)rkVVml*^1Xq_tnY>TU+5OJE`%=^$^9x6yBd zUJ+;sixnEMs4ZNrGY6<$4}hBdMU7evLMgz?#7WI<2>`@H9^`X%Qo^V?U1$5hdDI+J z;9r7#`|KvC1xft?PrXN9|g*<3^3R=zf<}(K)-;zcWP-FJTWab)>tssCp^1w5GVj>|U z(D65G7JzKI!833b;omc~^589F2PoYSfEgojfyE?=D6^;?TxGZpLz=Yip|(-SRH#K7 z13qLdCbHu5VWSr{6rVz+@@o2KN(V59`|m=?J3EnP}a3U9nlAyTwn6SQ^c!1&-6q83d zLl*NO^tiW;f>EJ5TG!SC(gA(lv8)D>nxluOfwq0rY zK0rXwea0AG;{N#;xWI1GL4NddW{4dBk_37f@3?;TcO@Cl&c1M4(kDxlobS={H!W3W z+aEtk`>EseX{IyOzEPQn}O$(P;VMn!^!C)|_5 zfooC;3uOet(|l^YMHxXA;Zmae5FHH#eVivQ;3#4;aoFtCKLez8^N@Qj5?_9t5F5 zN|^eWC`y=P@Q=PfEvu&}Cox1>%|^z7q)0+``#9+yw>J6=z{5Gp_<29bJt`$Y{xb7J zL)}P5__$0${(GvZp8`oZ_0TX31pE){S8B^PJ$68{XsktKF;rCmdr69(!3A67b~g0X zks;lotW3nR3?NZW+=$IM4$b+DoIGd)Kg^mTKgxMnLxj9Sp(AIRikSpGcCK@0^X?z) z;Sasif!HT7*6LcG_69w!%b*S#q!|!%RqZW~4~D1UOQ~W`x91gTfzPgk7lSxwd@))n z9!L^DrH)$$^C=TNQ+}Wcxv37|=M$7jknie`cqvNa)ozmz+{RgY96m&5Y-sKVKxWyi ztY@$t_GK7xrWNI1Y-GsM*Jb>pg3lYtusd&8?>A}8qQTEt9re;-0C(+3T0emSk%ore z5L}sE{;2|J_(q_mV93_hU+eX1)%RbEdk4E8Pvb<6cr5NkHNh`0Qq7#3*`iyew z3CRBQE?m2Ereuf$5z5f+uiG+sT}#arHNSJuVJH2~Z(smiH*&&D+d7xui@@M#zZUsJ zT5lVZ5Lbvx^NbGN`G*8>eyoblz8+W~Zh}$y$v} zlwRM^RwhAyGvrGwDM~P&;i5v50?QtDN;R?g9>)z(aLzhB!dktH_j0Ac_1orW zr$A0Knh_HUt=7Kt=S$*b<&|%wzt2astdmo`#z-H8p0dU*k4N6fgn7%XW#UobcEYUI zR;FfX){KkulXRsnD=kiU-pf1fOOIw5qc~Rxd+GHG-P3R!p`030)58|v;O6gj@xoG34AOM8 ze+I>xwKX2oDzEQW?z$;E^EtaiOrY-t;Y8S{*Is9Dk{p>(;KdHrU!sNl(oZ-}NyN$~ z-KFe*0*2F`tU;4DeCvFaX3O7i_coyFk9ln@EUprY8i?H74%|NH5=STkRx9I5P4g}=iTOh?3+m#Lg0VTV- zvHa_!4;Q@|r2cA+^+{Z0976v31f}EOfFD4MXAxT|m z%5GHNjp#u0`&=g0crqIC?msbFU5?M4c$YzU2KhBs9>sOCf4_C zR7?ce3N*-*)ru=Q{v<4s;Sv)rH(EY^%SE-b?%|o->8{Y;X$+Mo zJfG#;`Kfy@6a)r-4CBCYph2u%jooeHucJuyB7ABQ1AewbemFvfWO8=GO~OmBFYWEM zZ1_3afdaZOt~VbYHQhRkSkVub+DLJ#i5dPRC5VBYctiXARII#~#dVbpM-CrN09A}T z9j=WQ9Om>nNlwIC2zB zSvJvt7&Bs32xns>y>kvDMn!wrF{8Ma-ds`Ipcs(Qvi?U@%T1&nLGpBC3 z1h}2rotWN_TebiUVz5B}9TgJFA6zVJ^M|rRD+xa#RbSUf$^5Ay>Br~L&^KN}>}GfH z(mOpT-Fjxr%p6R{WKZm1cO!4ss~Uy{#-l<=g69F$9Eb?MNT*2L>n482cb(Qkof7Yd zU4|XLz2acGgn3M#`Ult#oeJMNTbGu|5CyPXQu9h*pU0>O_DCkr6z^ud<534JwMLGC zsFn2LT}kZ`);?<77e}98{y!;2PU+%q^uYw_r9Q^EL^;(bRw*XF?3Bb|td7UNIDYIj zsn&_2qKu1Ajyh-RU{nmhIcB)}??j|}_u7=uYFQeR@%dC>1gY5_65jUE*f|M(fLGc( z*Kchk2MX^F?Eka+=91B7%}$)=r(6HCDnZm!i2LWBTtCgL>)h6O0JSnPt>pZ$n+(k1dfik@wfJK_T+B6wf7z2 z*lamCdES}54B`X#_qRkqFIV-NOtI_6iXBVO;|gIIufJH$f6wiu&uatb zv(tAWP?QsezY#jP>$STt3SKv_fb~FdmBS{xos*0g248C%%==lYL-7{luJHXnxhj z=-nTOkZg%3)y1c}N&edHAMasZyzS98f?tCLxm+ZgX93q`#D2dd=t>O+w9-gPA=I z@r{f{jT+6Q!;zJp>DA1*p>umNZ}vUM{oRNnXwnKqA5!*ymF)*UxGs1f$H0RP`5?W( zluVbze)k|BVDO@3{YT@(lU3qbT5wJxBTR9;@Q&<05lM}rPQ_#mPxiRmk;6=+RrO^Fbio*({4|u^W#t&TvI>qWj+`i2= zXJ$Yg@te@GDEZ`08MB=m+k^X)X8g;)!H&7ydAYnVG2_{`JlL(jtC`D=*+naMXO^1h>0597 zCLu&&bXdL*(|&>Uwgf8+$w@Sol9Cf#)E-@b=2)quMMJ90OV*yNMn z?{*{3Z)!mWFMLjz9;%Q{N64tWwcGHPTc3Q{G}lgLN(b|47p=}ZM5dv}Gt@p1O15t; zQKi7XFC4Ic>VAnZW7`C5|2dXlz#mIPVFYNC1Q5^1Wlrr7yOjp-?s$k%@_r0kUR1-*yjsndcf9I8=)nqd>)hPYAe6F*3 zan{10fi9aKeQc`Q$dthW@A+;w>t{Yx6&;is__KJY#Do&`0`x=Xuf?+prm($0~kwidr_g zFaoP$->K}^wW2p+e;tVM3{riT+e->IOfv%mxqM##Yaor_1E*~*J31f5+Na= zV2J`AJG#*V^n*T90v!XRM!K-_gSh$*MH57^fQ*m+1?na6Du-Ono0@%fIq*+o|4}|8 z`^Nurp*+(8SezoywzpCQ(%-Nu zUj|fyQKn~F)Fgyzz)#OfLpH2A+iUv?(E7F=QxCZ-TBC^<0^T@C3qoNG!~oe#UV8nMV5wAn4g{nK_Pvnu8Y*rwRqLj@ygHx0f0S5X z*sWZ8AXZ->1zqTW!S~t6fQ|)+Rh)$?9wT@=$}%7@vxKzf+SGMGLhn- zubP)2QfvX^HbM$qcSs0!H_%~pDC&g3s5N)i17g>AH^+T&%PJ(r0$hpw=raxOO;P>P zG4+n6pCNxn%9hDh87EG9FwX4r!t!K1TBk_}#{tkmkn;+x4BV|?dNp6ZTweNP?pZSoq zez7Ra7OstChLYJHg6e?sOd;8Wu=cdN*ak-`A$Go52VgyMy=6qr%+r2%pvoZaf#d39ww%E@-AH9*Dv24Zwi_B}m+X031<> z!Ca9Hd-Cr806a7S^${1#~77L=#1jv$e95tdC^(XkW zhd{_HTZdCf{O_Z<`iApV%9jNH8*;ZlI9D<8gJXyhAJT$dtrE>K|l|~D?gr?Wn>zsd!b`vfho}_sfJ6*Xlb;hN{ zuxNG^7Tvw&`JaRsaPGR;bw`kj*ALRdXdKBQwfEa*$3vboEFIO9m#xcSk-bcI)$g8swjt~S)Ulo+J1%k0*uyy!* zC?3lTAQXVphX4EZ#bRYX;|FAWd+M0Rn(? zRLZWu(CU8>Jw9j$&T<064;4LIA#QA220M1j*|g<)bt~L$mfdI$@NEN|FPl4<5kUIsx&+OCI;j z(oCk+d5TZ7gg#NE9clr;q*Q`5Qvo6y8J4efK{GNFGF1+)m(4Az;egDfDmWSK81QSi z*%waHNhnXL1bx6Ko`$LrCpPg?INhw(;2Nlvj}VVb_NbL6zz7n1tx5YKg}UnGHzisC z_V9*JC6mEjQ^i#Q!GtTgJmo+2U~O&tfj}0Uj87x6FhB|Q5(honZsqtM({e_slLx=A zC)38h0Hc#AHxHDiKnXm{8*4|D@U0wDc!90=EH(|Bkz`$)*2|RThW=7Q2gJenM||9nNOy!jK^fkc;w$QQ8jJ z4g&`g=Sm-SHv*(n?FrpW4LExG2Ht|q{)Q686fitB6s3h8+@Qz|s!xAI_>!V%-E-yG zVkVjZ01tGcd?uVX8uUdK1yq*QN4=Jt-PWYg%WYM3J_$)MAE>ij!N}bPlu3uu5jaB! zjUWieAb1!qOZd3fYOC;|K7a!lov=JtadK)rSZ|M&FQDA~Zs$`o2-0GxM84H;jIYjT zpwd!#+B)jAS#~JdCmh7~YIi3SP=|vbMaD@0mu@VjQh`Yxp3B>LeB&qt>F5cLzI$G% z3H@K_Rm;(hx#PIcsrNMh05lo#sz=!q2!OMoQ{Ikpk~XD1cw{&PM-`e41ci3u^82kx z9}95Z9(aTW8)*c9_yQnCDnLKHFyjNH1VJEi+|G;y>Kx0pfC=F8 z2>YM%AX3A0enE6p8(r3%kJV;q?AvJ+PLFr71VKBL1qk9q8HfqXd(oR z(F)MUMlwdAQ*?k?D1^==7OK_o5e*=+AtXlte?-E_1%&Z5WT+jXVvK->=&?d81(yG( ze|4khAyPxF0Pzl(3JU=SASA43v~gI0hl^V($pOEyuzLaC{w2Tc4-4At?Z?vuP$|bp zsS(^yTG_NFicooYxasczO5lXYb4UK+a06k4$}sU?2_@#AyVa;%{{SEs3y5cCbBnOvNHW}}L;+Rz z&2B@cFItF@vS2LhXwGjakii2rP(wi^f1bz|_)AX+KUl^n&vyMBd@#?^C@tl)&nM7z z99~)m*~d#8-|iP>gtFsuVe!dmS{NGS0<+}Jmj63DTr%wh1Z^AH1KdvguSAnh!h%GB z70tCzhK-dg{q8sZzP^~673y`0XE7~9fF&E`RvzGf36M_jVkjPjKHd`&&u;7tea3(q zv#-T$f%wEaR$&k>7nq_Skg4s9eorRTvHyTYT&IXXql^onQWks%K37D1@_$B|r4<;^ z$D+(g7=*ZuoKwE}bs+j+z?=g(yA!ZsoGe`sRtlq6_zWA86?(-PId1R2&6V_ z&CpZsd^B7R%BWOu*cnnoU7kW=@DjpxVdai_NI*+*z>A?S4+M9E zj)W1h!w1dG#YH5eME~==hz@W{W`Yl&fg+A*VZU87w(B_AEUut4CE()XGrn4rPQdDm z^9Vw@E7VJhqJtc}1R~V?tv-+iSxRLt0WvrR`b&T{O4SN6xruP}_9Y74D4a9g%|!41 zX1QiGwXw#}m;k@F@C zf^%;2tFld{D1OsKp?YT6h2N$AY%UqX6*!4b1(*O?Pesee{^{Pya>%2lK)5(5I=O?O z#5eH)zkVFJ(ek=b2DSNMoq!;qbz57v_|DFBKkbDt4~|`H1aW*z4ups(k!wal>>tes z?}KrIVvHd1KzvzR?NmB~<+@D5V6Iwp#tRnT@jV8a7RwFbhA9&H8W{ko3&qRVoU;TW zQco^~Mc)Nz9U^&-l*)KRyI?-+cyJIu128F3PD?VBkc?P!Oa7#(-%=U3kgYGM(AF;g zQ?%0qH5ms!#9W50$Pe*7g}#vJ^x6jHXtKMc(#PkSC4hY-MSFTd4T>9fe&B13$CFJb zfP6`gHcsfhpu8^4jX^30pkl26*JbM{B=Kn!mL$fu>FhKU!X-gb+Dz2rVkcqXa?{oj z|Eu-N;{-zNd2M=8Z5MW%6pk5sIVE4FhQfU6e6}1d|?H(E@Y?Hj#@1* z-pfZ#AW#kGNwVo$WbOW4y5+Jr(e%Fgk`0oTQ_0bsV@BKo{@+c`0kZ_iERRcpx(`Wb zD#PhL0R|ylRV9u$}rph+W zv#G6BVN$fW2H%<`++q*VfnASd*&xSB0$oh!5ziC4l>8^yTyPpV)4;-IBNYuwOguqd zT3szF7uUX6PpQsqwq1At|7vZl( z60B{qhByPDEIIO=#w7@Y0Ed#}vs zkPU{if&?!*G1LF*P`hgwIUf~9)Z6f$tw8iL4!w&WGzD8GB}v#L7jsnbdLNS}ve<^U zKi$yfMeeePjoi7$4@;oeaq^;HjD{qs+D^|-WIp=6UIrZffiC`fwm}lixwg?F@7qre#qk(6Q8yriO%2z zcb@ZKDCkcO=4Y58Hs(3tl-LrBfaUhUiNEtBx?kvHxtxTU%FWNvM^<-#^99X?@s4Zy>?u~w)xcc@1 zgCM_~B9ujAUSoGXf_B3DE#-2GwW=0L)3Nu;rJoYd!MOxP&V*<%0z~K>UxpINmR(%M z81h{Kki$)Nnu&>GM)ZxPUAp8S9Dn-o#)+ii`{tn{7yoa|xqRtO6fYFphKQRX)8#w$ z=U?Fe+_>5p-qbJvQg@>!OEAcMn$tyVap`DX z_KfRc_Jk~q9RZrP$gjdRNb@(nY^$KPyw3g~gkWoWj&*2r zl~l3^{_qBrJZPfQ&f&Ggy-+0lrc~lhl6-m?RuN>_qIYyNDauE$n@GP-lHZ{<5f0$E zQ`fpo6L1EDPeg;5Gf(a9riEZYOu0T#h?c)spzj`cNYL9H)vRIwY$Syg$)GG1SlrWf zDP&HJ{p=`iVi-z_=HOokw(oB94y6;3nkOOLJ{qlT+Y4M4YFH|BHl3($dT5~cR`O1k zP-;i%7X-Hj2l^lI7U=J3eS^}GpOWEt?5*Prv?M+9*k)P?0Y8-tRIXf$BV_oEBhU4} z94U2KRDztmK(ViJjanj5D-7~o(Jsy|>Fl6i@KMbQCCz7+(Fcqaf45`q-2n1SJqTtZ zzw|@ol{*(xe76RDD9!H9UMbKQs1(4EhFSpbC>JUna`jGGIy6iaVu$Yr@B5uTxm8nQ zH}TQyfydEMz>{Qci&BLFfWr-Me=62t*4ALq8UeQ#)jsq5wsQ8tzfK`Pz~NRMNp zHXr<%100*^A`ixu^=IhDkj6l8qjZ9?ZvuzSk%y=xoURLCsiBK}U)Qe8P8SG8YecME zjH1^sxdgQ(|C-nI!SaHx1=REi@eR6w1OIyN(^G<7dZS7&Is4=L%cB-}o10{OMXFw_ zo0Z*I(xr{FmF`#HT(SfTFToXB*t z=S8yYeIv?42>5viD>GR-Y$-78{@H{|O;&ohD`F#}!slsEEmxqy{<-J-jvHsXI~(p? z9rt&6Gb||Ir1bCBBhJntk)<7yqX^M4U?=y=4SE`MsBT71q3OqokCGqrKM&k*)YvcS zB;LvCvhxNrWqwbTR)AOoRI~>u)V2vp;?)HLSC0UhFG#l>P8GrcTPu)%zk50No@D`$ zOvok2!-`k}4=8q&KuQh@Bj`@1a$BO_;r!Uny*8GZUhJ5)f*WWO)?W`HCvc;(Lg`vMxPndtRq!23f&UMR$s&PT5nzWrE(Fla z7{EImA6VdEd{J{xMgdXc9rR|!;xvid02eMCw6`4`i(vT0Ci0OVJjbx2e1!87>cNKV zMB+T)zrH?$lZ0~Xh_Ro;tGXWNQ7Q|*5WMK;(TgsGmD^{$UTZk`r!XbQ|2eJV7u~jB z9Xsf*3=OKmXk$Y$`KW32*qQ?zH!E?dQiuU-O3N15Jct(mR3}$Z2XtJUp!7cgH}v}b z^I+D>okB^L!*G(q%M?7o3!rL+^SlQz1?`Z_2=Z70s=``=%V_r>NNBSRNWtR?S>|H! zVs*d}%!Km<;0(sj);2SK)U;IT&3ysUnKWC&bkpI|_R@fkzyaN?e@K6&ehN&{Gktiy`|(JDl)D5dP68G-2JT z9DH{-W-1)GW?6aDYo!1TZUzq5ykfmLcTV$1mvR3>p%_nuUdfZ=m(M@BY7|9La^tJY zk&ugGw~xfUuetZolb=fOuanKgpbvSm+J!#~d!AVweIr9l{ZZKau8ozLYN=#TPoc%% zU{WWnafzjVY;SYVFH$RpbJsof-x=52e=1!l9|@f8+R^iuCCqr#IC9_lt~<6T+eP|t z@&PR)FlVDDiviPm=rP|}f}sHjB6{lJx9dFZPfA7rFdMDl+o1UHKu_=phRToMwA_2I zY6CvS?cYwc3@BD}x@03{e5w4n7F?THEjU4ge+~cRXXUZz)s8;ubLJ%Vg&BBPFrMs8 zjI6fCh!n~SAZDI_o(f1)A<0xAI8tSITml$z_u!BEgnG8dT0Hi7K?mN67yh4HPafa5zUm%tM27KtyBTcT7pXIhu>FJ_9Z<%Dar zO1E~!@D|X6(1QOjuM-#jzza8jGtU|H3$C$A*X^*}`z7?jcvU^o;rF+&eG zIzP_bd_{pEc`e@>=>@SEsyuCKl?)Vn%j^B}VLcK@Po->r^7^YwqA(S6)APy)&t5-; z^`0h~D^u)D>!C)NEWUypA3onUD4a zWcBS->(6r-#v3C~Y2DvzZVaL?Gl^NL({hC4o4`nz_nnmoTvqj2?W_+iV&Ifh;_G5Vb35rs6xDp;!suZ9Au zihuUzNtqIHTFB7)BZUv&V{F%zjR1hSheti$QBW5!e7V4a>zapkQ{PWxMv(A~^S9i# z`?e73)9nt5jzl_+v0ao6VlIEYAjtJ@6UDYXpk!i6CIvyi+E*s4R4uFUWdB_=%Gel$ z%i^sjML~7wXu_ZI7T8AO4Abb7jSznnMP&`JJ3IG9zl%)E?-ctNt{@COG^3Hq^iMSr zG91k!7dr|_DE?>JVs;EB_Sz>!A#c61G$smV^p$?sISMM29P!Ip;rgInSquMfwZu-O z1paxBiEY{Znn5RY?7|OAr%l`X$ zV>BZH`K=vky7rj~M);TuMkpxNZkXym+(d5^kcvNO<~|=$0#esDv30{Pt$6ii9y2Z# zrG0#|@d*^cySDM{)Ltc6b>74fe2B^1~RF^z5r7R#CDu8T=uzM?`}c>yMW|Eh~z= zb2^0W45groeSC1aREhX~Id5z0Y3F96mk7Q``4xV#e#-WRm*&=C#Jn55{aLhQu;-fx z?nc0!`Dcx$`)s0(Cw5}TZq2nl0r+YEp9y%uW*I}Yd9dygtJSJ znkZ5lg~Mt4nlD)}E`IRRV!$YuO0F{g#?H*1(f9q|gC>=rHO?;3vmWuDU}@)3bTn^$ z;aBj7MhwA4%9I`+gK0UEQpIobb*jzA8WA+sG9tA7Jg;7y_8^m2CeYlD>Dm>zN zQP6FItlgEb)G9A96aWJGYrdp0zYrejv`t*uYr>~_+_n+Hr!K4bzdvpcvBw^cpr6a{ z9|!vWK0@f~BVoNX)7UvGU`>kPBfh|`=&5^cVQK9UQ_|NGOGBma%y$HF#M%G0k8Jqc z%2Q)$Hx7SDn?=p!Qd5RxccITD^;)xN5pu0y;;@j!(4XOWk~R?sm6%kaDEL|^l@a9iy$kHT|+)hNrkbz<%lZP+?~{>Gq*GV^!@Jr?2E3;mCu#M9?ho>en3N!0 z5rruB39LQ-y7Tc~yDe_>;Fer{H%QXI!oY4z_%OFm~JB|e^WuhVqtU41Q> z%)zGAigi9aU8Jn`YgJp>#%K1;tt*^&AT>eLjJzUqnp3XXQm{76)s9 zVadgko|b|hF8U}$SWS}yJ=Bj#DG`9WX4t$<|rmmVY+(IZkNP;d7PEZddKM z7aRw$UbV}XHawn=WzSFKvhr}4kpt!~t-x3=J9=wDer_uqX36a>=~l*>V=`_tlYkkt znxH@gbJtfATz0P^Z^rEp8^t)BSDxp_=ykQyB3hDg#@UrpD5^7W>6SdprNEB&H>)Fg zS8XP&w*|_;k0_pc<$DDrn}k)Q)Ap7GSKHgA6^r)G_mRet36yw=;gyG%ExOFc;NM>r zVvKmr-tA7orfz@#*C(RC^WI^e%TCl@!kRQsjjc*WQ#u?ZRsj`w6*E@dt+I2^94N5S z61z}-&v<*bV|U|(lfD542{m6lRn0qFdx$GouNX$ul^zGJV?@4n6PMmat zEhYB!%lImpKQa{=XD15x#6*`itQ|-p`Ti$M$akwqeC#Rb=b1)EdPv0d+ zw$n>u`$y?n?+=a@`HbMPk=fzXqe{n+)u(O^2(BW1iYdOBL}mEOjhey|k9RHk7Kc=J zSbX^qpDec{7fh?a@M93kUm!XQQ%s0Te7^Jj)>#q;UuC@P#r4S{4`uP)7$Z2Lb?q}` z!Pvmu)xL92H$7699J?Nc?3S*6oP6o^FWM6wqOMvOcTZDNpE~)pLFZmHHcWR|T6Wht z{KQ^(MSCs}%tTy(I$PZVwpRM8O&6I*m?FMU4J1tKn z*@lbyb#EU(h7rTr%}@St_-5qdLW7u>$`p_1U+~!kd9!p5u()uZ zTDi*fx?ps#`%fq5&`Wj(O`S7M$^h0Zx|_WTjtm3iN7OJTt+Z_v>k zNQ14)&(_sFBgACnSD1tM>M#kx-kFX{OE6o*b^p1U8v`q%hz>mhgmPecQ@87vyW^1i z--pV=DhPG6ia8hyjr8Vm_HHXTEAoE}i))F9hdG-?lx!Pmc92*^)zIm2)Q8 zYB2a^TeF;+DT$wyg&q-2_v0=NFhzxnjEb>)ZzfXiciQa_i{LBG&mtee9x7FG{!=>_U+HZj4S(}? zVd<6($L8?<(~|u~IV8_?B`%U}EP#99w*O^iqvcjJ8a#ustjC=zR0z#2doNk9F?HV! z%7*H^aUYGA>bGC9G52g=pRM~Ft6vF=Rc_JD~96uIJb&cJKG@Ub|D*l7V z4uRJ9O%yG0uzLtcATW)uz0=gkt61E+%wGVe!z#Wp+Q zZO;mna6}VQg?~Ner&t)qDrjqx2;i=?X zn^{XNqD>TzwjcT1k~>*Q%%7$gIHCr=-`e`Cii$Z>WbS!<(Vx+!cr^)}rv$TE2<>q9 zQ;imMuh~m5iV8*(+Y@8onF9ZHj?p3J_iu15D+{xtA1pFmJPcaVspu-Za}?J5kyU;} zt8xSZJxYDEUnsmq?)nRi=C_}xW zs*m?3+6xSusaMrU9o^GQzr@ieTdr)b))>Yc4^W4nW^qA&0EKU|Xr%t>n+2;WM5Z@x zDJktTEdlG`?8QxuOVn5_u#1Ji0s{N0T*)4^SJ&@|cVGBS9ir5mQ$w0F9!HYm%Vn-q z@_P79Nk%XrimGhcDnLlvPBpUot_S*x*|fXt|F@U;a`z?cmI@c9SVU~K=UH?Mhj$B) z9x*bhpriB3D$ZR+qI!DrQ~kv_tGFl7GYDYmD?twMnPjuOTH@QrLXriVNs(X``-p!# zF8c+W_4_-6m~N?v=D>g0eV2V!)1H0`mEwa_+w49MQu#oU3i%-KK*maZD`K-SZT}Ek z%+37`aOh0}g&XKq;ndIMJ2j@XwvUI%|%Wq1_0hCn}*@x0G4WGPXlk;Sh^x zQ5*5%=-u5eIw%d25hg zpN>wEP-YMa#P|rn3N4q7m1UCQY1Qt$1nXePITB&i6}`T5X0R8Jy|>Il+~|=TT-^Q5 z`SGM@qCJ`UT2D$er;LB&1zIf%nTrcGCX1wKSKE`3b?Y??g&$KGkhe`K^hC#`t;P|~ zGyk?6SGBrG3G!iN#QIBzP3xD}0&oALz=uIMpvs<3z1p!tVii+5J4EIyrF`&fH25ucvyo*#fu+ob4Q1o%AP%s~eq*+(7pD`kK{?ZP71f64% z=r@O-n=4g#R_ntLe(oXY&;UAg#EE;D8|!7)aUeA5SN0|so22$uH(t_EREG93Z`IWM z*N-rtRU{3s#gr=%f+*0bHT+f6ATY+J>8Vg_Ac~12Jcw{>Nn+LGlN-$ltt{6U9t`WL zMh0`nbgqf%T+ZhAulnYhF$P!5dMfi#Cy2uK$H6|RiI(o^*0CeujJK)8=6fhRqd#yq zuLkDZg~54#7|!Gxiw0`?DD~01kPDDi_iei(krGktSuVti_>}!%5)@9QY#3%tl_4;~ zpI1w|_{_AOF6N{_K29CJ_3{YCC$7glF7;d5>Wf#HGBsb)A$kH~ev1W@oPOfeL@`X; z{|ptP0!hQ~8*e7qPl;_!THmJ9VwI!E)8^{BNC$f6*X17F=sbKZ3Tym-vVrIqZ4D&< zVhACy;z3o2$<*{`Q#$g>+5hq} zu=NisAU;IFFvI7_$ENj22^Uu4Dzq5eVnGjjWPbpTl`IZJj&oJH5i&6 zZ7)4FF7VQnrsJ?82K@|}=^7(g`U=~H=rs6u;N^7Df4gtIZw;{^-K3|mRV7SGtSv!b zx{oJc^#1q4lm~gJQ`nT(&LqjDa@vucXm&%Hu>L&l-iaWpSTkz*XYaPOYe!_8dt2#e+X(*EZM$_;9iN)srPt2i#{P({<$?gm=br7>E78n*T+Yc z37yHee8j`%pI{KuzT<6nhxk1;47RCB`wVlENTU0W6kQ`DZWgz0?AhpVU)Lzb4;l%^5+u}3DiiX>Sk~M#@%d%sAfw_UAb?}Xab3umMdR_oD9>q zec*p;)9GKVr=Jix_BDzzI8CuNWN7;a>vHbOFgL=dzxpNV*$pym+vL*2E=xndD+m#b zTE<{l{+db+G3CFjZKFQ<(U-F#nOgv=0$oFbHB+Qs$-Mj9{YIN4ok}@;7!jj+#2=o- z=#>_oa9!B)Ez^TE+{Xl(2IZ{(6CDmdNUFr1wI^*5tM-!?h?x9pCpSbXhg6!3I)3-{ zxi_UAE1wOrl0}QWd0j#&NiN_ydOz&PqaZczR)MK_#XFPNcQa1nUtE?FrNsQ8wyHF8 ztAb=iMJI&y{_{fuFDXK`Pgeh2&DJ!&+Ui$BC9Z#YY;W&-c6x=}QA97BQQzT=el;GO zc;ZTBS#(nk1~KWQQZ4`PbF;>&$L?j?JAuYygx|DLnx8w(XmF)CWIChRB)`f8^86;$ z%r`y>KQ->Y(7WDpX(5vFY2{H; zTtVEu(u_By@MU}ZZLghfuOLSXxleHo{Yy_LruE_sefB-$1LjL2zxci^QM*GEgRR9j0w^g8JzH9~ZcKP0Fk;Ap6F8E^Mk^xgRiIrcZl z%uSZh-ljlIgk0v6jK6Nl#Tv|j#V}(A@gLT3X%|^vpP#8pZzh7_KM+uAG(zz@R={8X zMhLeSU|aU-_guh}hs(qbqk{L}3YwmL)B<7aiTK@|0#}i3Vv)^E+2&nVkPnr^x0j_; z0Chu%HX!)%{-@@C2U{F!`(1Y)oVFBj+Thl7jc75`vzEa*S9`Rx&t!aS2X`IJ z-)u=eJI6@w^RY0g|0n!#!&JL-{Le683N)#yj#1c57SGR?hP^#{Xm1ZnJuMABM5nP` zn>QKHY;k@&U&+`0D-y6{#Nav1?sCQ7ZnLJN?8EfQza=9z>r3w}l~-ly-V*HhCVb*EZ9t-K`x_(#MVm!A&JMof7&QL@iasE8kb!q1k>JnB?`7;e7FlvJJa zE3i&u$Et{wS1ewt7$b+beBn8<)zK=Ye2L%Xg4mF)o*A761GH9rc-QhcrcE4BC;0K` z?u0lAp}q7PL2+$lV6g*WcBJ7i{j)st3C}2#GrO2<#qaFiedvw`tIU--OGGX-Mhn|T znKVsozR!<%Iw%2{FTzTF>O@FoMY)&+yUA6YEA2tw!4K|EREK{xxwieVm!sky2`h}L znBiGoC`Fr4r8D%1Q!#9y)RFdkr9);wVBaZFGv#A4%Xov#A z6-;P%tu(KrruKukkouB%t^qEuCY-C2`4Ot|{30pMK_hQT-V-ylv;+>o$qC5 zRG1XaaI=7)iA)Etiw|r)Nulvke3(YZ-$Li?WO+|;o)5-m?qu&>Qq(R!FnTO%RmEs@ z*fIR%rxGyaVcYJ**>)$c*<(j>`x>stCRys;swMLf9lCdK8|$L?jz!Tl#4nN3Dd}vK z1#AeQv$?dKRk2rP<9vJeF%gKcqy$B0w$9nP+oFI!BWm{7H;+8STQOI_qozLL%Tn_e=F!@j>X3FasWE!Fm+LrBd?l>*suEjfh~K>ezPu0DaN>``N1&@! zWsbF{%_)78bitu`OJxmkZkse#BCCN}i*%Fcn`66{ZA>$d-y$J!SDg2_>0P|`Y8wtl zq`@a`B+?h|Kne%_(vaZ~P8-8IRP$7x@l{j|!&`p*stK>W>+~S{3zqA+Hh6gmUbxR_ zsWqi)>yX(IMcCJm;2a`|(R=05uXEy^wm|m)iW%sHDDy{QP+L?ENWVxp@}5%vXjCE3 zRgefV$DZZ>(+;u@EtJBLW1(T3BPtW6FEr-K0pGTuu)duEMErBbF9zIo;BDu0+Kt{q zr8yRF{-_MP;E$0yk>GeazYJpBp!rls{fb;UlUXl&}J4x|vg-lVMkNe6t;R%ZGGfhIvZEB0bwv z!oxhPN%%)~hUK{*$xlF<#cU6yM*5b;`Q_(j3e&)?CM`PuAg0;nvlX?q2Bn;L9BEoU!wdyWtj5pXsdu}rCnyJ@Rl&!lKO}O7NDXhPEF4TE^liLNr~YZ9 z^wYqmzdq%Dm*WoVyBov$J=_?YR_9|Y(8<|qFFSnM0mBF7vsN!H5N!48N2%4zL0G$4 zyi+~RGbk6!$_0bL+5d*8Ql*+93FB`C& z?G<*AfZs6e&c;JRuLu$SXu{j^(|eP_`P$izVYSO^r;UPCn2&+Dy!lgdk|$bX?5VX| zb1Tgos7lwGj2dwC5&7PH-$0v~GS@>?Vl}=oYPiWmS;G3Xu2mmIkjWRi(-JiUB$M2p zXMk*__uB>Qu(f=H|J1T^IDE4NVL}$pk?Nu#rA { const tweedrControllerCallbacks = require('./controllers/tweedr')(allModels); app.get('/', tweedrControllerCallbacks.index); + app.get('/login', tweedrControllerCallbacks.login); + app.get('/signup', tweedrControllerCallbacks.signup); + app.post('/signup', tweedrControllerCallbacks.signupPost); + app.post('/login', tweedrControllerCallbacks.loginPost); + }; diff --git a/views/tweedr/index.jsx b/views/tweedr/index.jsx index f896454..ad35251 100644 --- a/views/tweedr/index.jsx +++ b/views/tweedr/index.jsx @@ -1,8 +1,23 @@ var React = require("react"); +const cookieParser = require('cookie-parser'); +const sha256 = require('js-sha256'); class Home extends React.Component { render() { + var showLogin = 'd-inline'; + var showLogout = 'd-none'; // console.log(this.props.types); + var loginCheck = this.props.loggedin; + + if (loginCheck == sha256('true')){ + showLogin = 'd-none' + showLogout = 'd-inline'; + } + else{ + showLogin = 'd-inline' + showLogout = 'd-none'; + } + return ( @@ -10,8 +25,28 @@ class Home extends React.Component { - -

Test

+ +
+
+

Test

+
+ diff --git a/views/tweedr/login.jsx b/views/tweedr/login.jsx new file mode 100644 index 0000000..194f971 --- /dev/null +++ b/views/tweedr/login.jsx @@ -0,0 +1,55 @@ +var React = require("react"); + +class Login extends React.Component { + render() { + // console.log(this.props.types); + var loggedIn = 'invisible' + const logo = { + height: '70px', + width:'70px', + backgroundColor: 'transparent' + }; + return ( + + + + + + + + +
+ + +

Log in to Tweedr

+ +
+ + + + No account? Sign up here +
+
+ + + + + + + ); + } +} + +module.exports = Login; diff --git a/views/tweedr/signup.jsx b/views/tweedr/signup.jsx new file mode 100644 index 0000000..24d726d --- /dev/null +++ b/views/tweedr/signup.jsx @@ -0,0 +1,56 @@ +var React = require("react"); + +class Signup extends React.Component { + render() { + // console.log(this.props.types); + var loggedIn = 'invisible' + const logo = { + height: '70px', + width:'70px', + backgroundColor: 'transparent' + }; + return ( + + + + + + + + +
+ + +

Sign up for Tweedr

+ +
+ + + + + Have an account? Log in here +
+
+ + + + + + + ); + } +} + +module.exports = Signup; From fb7ee466578e0c690ebf3682b7bef037a9edf031 Mon Sep 17 00:00:00 2001 From: mdazharaw Date: Thu, 23 Apr 2020 09:34:52 +0800 Subject: [PATCH 03/12] Basic posting function added --- controllers/tweedr.js | 90 +++++++++++++++++++++++++++++++++++------- models/tweedr.js | 37 ++++++++++++++++- routes.js | 8 +++- views/tweedr/index.jsx | 2 +- views/tweedr/main.jsx | 65 ++++++++++++++++++++++++++++++ 5 files changed, 183 insertions(+), 19 deletions(-) create mode 100644 views/tweedr/main.jsx diff --git a/controllers/tweedr.js b/controllers/tweedr.js index 896d33f..015be32 100644 --- a/controllers/tweedr.js +++ b/controllers/tweedr.js @@ -6,11 +6,18 @@ module.exports = (db) => { * =========================================== */ - let indexControllerCallback = (request, response) => { + let loadIndex = (request, response) => { + + // db.tweedr.getAll((error, allTweets) => { + // response.render('tweedr/index', { allTweets }); + // }); + + var loggedIn = request.cookies['loggedIn']; + if (loggedIn == sha256('true')){ + response.redirect('/main'); + }else if(loggedIn == ""){ + response.render('tweedr/index') } - db.tweedr.getAll((error, allTweets) => { - response.render('tweedr/index', { allTweets }); - }); }; let login = (request, response) => { @@ -26,12 +33,12 @@ module.exports = (db) => { var dataIn = request.body; db.tweedr.signup(dataIn, (error, result) => { var username = request.body.username; - var userId = result[0].userid; + var userid = result[0].userid; response.cookie('username', username); - response.cookie('userId', userId); - response.cookie('loggedin', sha256('true')); - var output = {'loggedin':sha256('true')} - response.render('tweedr/index',output); + response.cookie('userid', userid); + response.cookie('loggedIn', sha256('true')); + // var output = {'loggedIn':sha256('true')} + response.redirect('/main'); }); }; @@ -39,13 +46,63 @@ module.exports = (db) => { var dataIn = request.body; db.tweedr.login(dataIn, (error, result) => { response.cookie('username', result.username); - response.cookie('userId', result.userid); - response.cookie('loggedin', sha256('true')); - var output = {'loggedin':sha256('true')} - response.render('tweedr/index',output); + response.cookie('userid', result.userid); + response.cookie('loggedIn', sha256('true')); + // var output = {'loggedIn':sha256('true'), 'username': result.username, 'userid': result.userid} + response.redirect('/main'); }); }; + let loadMain = (request, response) => { + var loggedIn = request.cookies['loggedIn']; + if (loggedIn == ""){ + response.redirect('/'); + } + else{ + // var dataIn = request.body; + // db.tweedr.login(dataIn, (error, result) => { + // response.cookie('username', result.username); + // response.cookie('userid', result.userid); + // response.cookie('loggedIn', sha256('true')); + //}); + var username = request.cookies['username']; + var userid = request.cookies['userid']; + var loggedIn = request.cookies['loggedIn']; + var output = {'loggedIn':loggedIn, 'username': username, 'userid': userid} + response.render('tweedr/main',output); + } + }; + + let logout = (request, response) => { + // var dataIn = request.body; + // db.tweedr.login(dataIn, (error, result) => { + // response.cookie('username', result.username); + // response.cookie('userid', result.userid); + // response.cookie('loggedIn', sha256('true')); + //}); + response.cookie('username', ""); + response.cookie('userid', ""); + response.cookie('loggedIn', ""); + response.redirect('/'); + + }; + + let makePost = (request, response) => { + var userid = request.cookies['userid']; + console.log(userid); + + var dataIn = request.body; + dataIn.userid = userid; + console.log(dataIn); + + db.tweedr.makePost(dataIn, (error, result) => { + + response.redirect('/main'); + }); + + + }; + /** * =========================================== @@ -53,11 +110,14 @@ module.exports = (db) => { * =========================================== */ return { - index: indexControllerCallback, + loadIndex: loadIndex, login: login, signup: signup, signupPost: signupPost, - loginPost: loginPost + loginPost: loginPost, + loadMain: loadMain, + logout:logout, + makePost: makePost }; } diff --git a/models/tweedr.js b/models/tweedr.js index d004c7c..bfb6b83 100644 --- a/models/tweedr.js +++ b/models/tweedr.js @@ -93,10 +93,43 @@ module.exports = (dbPoolInstance) => { } } }); - } + + + }; + + let makePost = (dataIn, callback) => { + var userid = dataIn.userid; + var tweetbody = dataIn.message; + + let query = 'INSERT INTO tweetDb (userid, tweetbody, postdate) VALUES ($1,$2, current_timestamp)'; + const values = [userid,tweetbody]; + dbPoolInstance.query(query, values, (error, queryResult) => { + if (error) { + + // invoke callback function with results after query has executed + callback(error, null); + + } else { + + // invoke callback function with results after query has executed + if (queryResult.rows.length > 0) { + callback(null, queryResult.rows); + + // console.log(queryResult.rows); + + } else { + callback(null, null); + + } + } + }); + + + }; return { getAll, signup, - login + login, + makePost }; }; diff --git a/routes.js b/routes.js index 74ee0e3..b86a1fe 100644 --- a/routes.js +++ b/routes.js @@ -15,10 +15,16 @@ module.exports = (app, allModels) => { // require the controller const tweedrControllerCallbacks = require('./controllers/tweedr')(allModels); - app.get('/', tweedrControllerCallbacks.index); + app.get('/', tweedrControllerCallbacks.loadIndex); app.get('/login', tweedrControllerCallbacks.login); app.get('/signup', tweedrControllerCallbacks.signup); app.post('/signup', tweedrControllerCallbacks.signupPost); app.post('/login', tweedrControllerCallbacks.loginPost); + app.get('/main', tweedrControllerCallbacks.loadMain); + app.get('/logout', tweedrControllerCallbacks.logout); + app.post('/post', tweedrControllerCallbacks.makePost); + + + }; diff --git a/views/tweedr/index.jsx b/views/tweedr/index.jsx index ad35251..4ea5167 100644 --- a/views/tweedr/index.jsx +++ b/views/tweedr/index.jsx @@ -27,7 +27,7 @@ class Home extends React.Component {
-