From 2cd6d4902e2e32ea80e1023c099c38a722fd1231 Mon Sep 17 00:00:00 2001 From: Haziq Hapiz Date: Tue, 15 Oct 2024 19:12:44 +0800 Subject: [PATCH] add: tic tac toe project --- components/PersonalProjects.vue | 237 ++++++++++++-------------------- public/img/cards/tictactoe.png | Bin 0 -> 30668 bytes 2 files changed, 87 insertions(+), 150 deletions(-) create mode 100644 public/img/cards/tictactoe.png diff --git a/components/PersonalProjects.vue b/components/PersonalProjects.vue index a961428..0ac27f7 100644 --- a/components/PersonalProjects.vue +++ b/components/PersonalProjects.vue @@ -2,8 +2,7 @@
+ class="flex flex-col justify-center items-center text-base font-semibold text-gray-600 dark:text-gray-300 gap-4">

Personal projects

@@ -12,14 +11,33 @@
- Mutabaah Amal project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + Mutabaah Amal project image +
+
+ Tic Tac Toe +
+
+

+ A multiplayer Tic Tac Toe game using WebSocket. The game allows two players to play against each other + in real-time. +

+
+
+ Go + Web + Development +
+
+
+
+
+ Mutabaah Amal project image
Mutabaah Amal @@ -34,30 +52,20 @@
NextJS + class="inline-block bg-nextjs rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">NextJS Firebase + class="inline-block bg-firebase rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Firebase Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- Kira Pelaburan project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + Kira Pelaburan project image
Kira Pelaburan @@ -72,26 +80,18 @@
NextJS + class="inline-block bg-nextjs rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">NextJS Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- EventEQ project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + EventEQ project image
EventEQ @@ -107,41 +107,25 @@
React + class="inline-block bg-react rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">React Go + class="inline-block bg-go rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Go MongoDB + class="inline-block bg-mongodb rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">MongoDB Docker + class="inline-block bg-docker rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Docker AWS + class="inline-block bg-aws rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">AWS Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- E-Kertas Kerja project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + E-Kertas Kerja project image
e-Kertas Kerja @@ -157,29 +141,20 @@
Laravel + class="inline-block bg-laravel rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">Laravel PHP + class="inline-block bg-purple-600 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">PHP Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- Payment gateway integration project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + Payment gateway integration project image
Payment Gateway Integration @@ -193,25 +168,17 @@
PHP + class="inline-block bg-purple-600 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">PHP Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- EduMaterial project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + EduMaterial project image
EduMaterial

@@ -223,38 +190,24 @@
HTML5 + class="inline-block bg-orange-400 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">HTML5 CSS3 + class="inline-block bg-blue-600 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">CSS3 JavaScript + class="inline-block bg-yellow-400 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">JavaScript PHP + class="inline-block bg-purple-600 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">PHP Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- Vehicle Counter project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + Vehicle Counter project image
Vehicle Counter

@@ -267,25 +220,17 @@
Computer Vision + class="inline-block bg-indigo-900 rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">Computer + Vision Python + class="inline-block rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2 bg-red-600">Python
- Daftar Jumaat project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + Daftar Jumaat project image
Daftar Jumaat

@@ -297,29 +242,19 @@
Laravel + class="inline-block bg-laravel rounded-full px-3 py-1 text-sm font-bold text-white mr-2 mb-2">Laravel PHP + class="inline-block bg-purple-600 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">PHP Web Development + class="inline-block bg-green-500 rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">Web + Development
- FoodBear project image + class="max-w-xs h-full overflow-hidden bg-gray-200 rounded-2xl shadow-lg transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-105"> + FoodBear project image
FoodBear Delivery System @@ -334,9 +269,7 @@
C++ + class="inline-block bg-cpp rounded-full px-3 py-1 text-sm font-semibold text-white mr-2 mb-2">C++
@@ -360,6 +293,10 @@ function openMutabaahAmal() { window.open("https://mutabaah-amal.vercel.app/", "_blank"); } +function openTicTacToe() { + window.open("https://tct.haziqhapiz.my/", "_blank"); +} + export default { name: "Projects", components: {}, diff --git a/public/img/cards/tictactoe.png b/public/img/cards/tictactoe.png new file mode 100644 index 0000000000000000000000000000000000000000..13489951fc09c82a98002c3854fe690db5fc4a0b GIT binary patch literal 30668 zcmeFZcT`i^*FVgRql^U+r72BCnlzE#EfkR^gY-6lbO;8d6T;}I)I>x;eBWozTFT{e?>YPIv&(1iv(JsaXQIz` z;=&0Q78W*xJ37Cyu&_c|SbkCd^%!tx?{m&$;KxsazvMX@7M&gu$=zF`1cdqKmP#>ONg_9&dvLwj%!owk5c9l-w%blJnx5Q2WfoD zO5e+SQX_zKQLY%Z`Wa;K9DK)1@-C#}UdjDNF8iPplKP+8FVU7ceRaXBH-e-e%TL_v zzA(-8$x0yE0)4IIb?vR|F=?&>#y=%;??7H+IetBUg(}fGzZhuJRJPiC?n|KdSXl3D zWIZ8oCb!2Q$_o(4Xxm<_Zu&niSq`p|cz#@7{0S%fe z#~O!d#{$(+nMR2g`ORTomG2w8p@Zdn6T?T%D0;ho0M*f_5Bw&myU#IzGmUo4BIpa_ zioFyuzUoI8(Ga+7g4~lTRp7B3dJNAvj+jVy`To@g^FaH2wchg$csgJ9lqq4gN;q(AqjDKMcBClly#(d0 zmWZ7&W@{3hm~jTlr>Q2Bp(aVNvE)gN2$Qf=ICQs=LQHNp21oYTj=2!j2t_jhlQzI} z@(fJ0`xHX8DV8RYGccG3tXyF7M7td5q0)NSXh*(-hBBzd&GCL&cklY>4rytDsB54! zxwzY|=v^H9;Ux6z$*2Z#@5aNX%O}vivCuc_B6nfECXe*ZA@^l7xW;G?4T{%6yfZV% z#zxsOj9^JpmN+sTf(`B2m%E~^K4NSvD;1kwmdTCMoJPdkaJst7ChVIVW7P4;S7{@*Fi2WUp6K2k{(XyyU(6n6!QA&@VwbU zIB^8Lj&Xw7d545R7Z&nMs6{HPD}_t$Au~7eo6Dq;0>j-U4}im3Fa{uvzONt^OH4or zjtHR$5iVY*gluZpi*m#%dSc!l?LF+H9?1yBv1!g3e$++ps<43C;Wp`H(e^<|rJgtL z87Xx=Kso5kk<|7vkFf_;2(FY@?YiczJgG40_)8AhvIa0IXU{*rF{%fc%Q#bg@7!{g zO4syLHY*eFl6`wFM7vHy&@mIDS$7T8l+)C`F>1#JOXHuRFKeS^`DS3oK7#SjQ|B`c zDPvtcxSbmIc14HCQ1Fg`g;{E1NWVRgc7~GA*evS%D_-TGDC}6&p>0c)ns(`%dl#N! zZikmG; zL*4NwN$|kDwmLI6IqKS)&+tCD9s3;j)~N*k+=ILAJq909bekS|7kfBdMCxXRo=JsC zz&;CC`agQ1T&Gc*t}Yf=wSRi_zP^JP>JcdP_XU~Ho;Ob+ckfX_>w#eMTC7~|;XzGg z;#*$jX_7Uyau$gv$nw9{Y~isDfnqfpht?3u5mE9&@g6=r9g2&uiF;UXEuKCZisPe! zL1Do(KEu%m`1Ro_b$PQ?21Hixt&85-kr*68IX5#3~W*J#;(- zbHNmvqPGC+2lKFW_F66Ug_JEEz(!g zqX#U+BVC3|SlU`~*}?kOCC8G;uNTRG*qtRJ7IJevy#b9t7r8DYws5r=tB$9xx$T2% z6oHY}fmeyw*%Zy1uk(c{JTjpkRu3*+wc2G%G)rw%LP)|STkI+(JsmW5C*?%>LWcK- z%UqwsX%1VD?gx>|IC`}y2@a0kO+O*TmO2`E8mX+O0ZOVl7-s9BA*hvb5a=yi5HqXq zf&Wv%AFxP)WeF$s+2fO0`32FZw3J|!Z;N>BfGZwXl!vZ)ebNQfl_v0HPDY`1J5s8< zLx2m~Ts%gMnQk6)@v{P}w{Uu#>Uq|9eead{`U+T*FZkCgW7)9~T78!)Dsf-u)VF4L z2M9u=;A+GJR@0HiOh)k7c$u+;+d-}V2_u;D?Ai9)4Nb58k=uI4Sf$xv75A?(b)g-P zt#|iYFl-asdJv@v%!c{%2iYyfs?*CWw-Qx9q@xN2IiHwxJyQ>pTTyoZlCdC7xiqvu zqY~X2en(A=IRH43&*__Vg$!Gx@udJ*$x^S>ih z4s97HLAVx5%W-<|o_#U|>ff{#rL@!ylZnalt%IJ5qyB`sw%Gp@gsz7HdW0k~g%-_q zN=t-q-4|1~lC8=|b~EngX|F*Q^&0l}q_X+Qmkd zTF?2reVLL_DP4_jIan-eIIka3mBo8qi;pmu6dG=szfc;L&({WbvO@cle zBcX!v=}AarE34CSY!n{=5wy?!5W3IiS&uxG2>D<~?8cWgtriMO;zDD7+0!SiZrOnO zE`^C;LQy7~!ZJP2)NSM>L80%;h&1UKoP2jBSU(6nIcU*nBiv)w_~>SFue-o&q(cUU zZE}uHwWJ&R;)R|OE1+Tsrnk^4Q+WnoJ&?Eb@o+lhlasiPlX2?tji<3}-MQ#(j6(@57Cf+YS{=fgs<)r-iyesT#;3nlY-~yq@&YA{ zpk!78SI+`2`36(<&fe2-cDJ8spMu-r=2yBZz?|H@*~dl}WFP?|W4OkC5Tx z&Pz>5ELxC>U0E-6-Z`>`D+GVRRo&J@*R-y*M--d#^UXBm6zLA~8ny;`NA5~mb@;L0 zC)R0+vc(6sv|Max$Y_^u;mC&diV8`@#Tkkc%lSehYO3_xcto+BhCZv=1$Yr3P+Z4M zaomU3$+$qI>ZM);W_)o}goWkfAA|lw3n=Yx9SoHz_#61mc~Wr_A41NYar<@E$ZviY z+`Hym`6R9`Vjah;tdb7OoBhK8+?yj3QL(js5c+6~9L#ZpJm_ej-5>P@R9?m}TU zby@`VGQ7V}uLHTY%YmHc+rqm0y@rs~?BKyygu_*#(Swj0&H5`S_oz%edHn}l0>kJ* z|HPPh9^$&}WFLe17cT`f5lYrZlR7R>{%)0xZCqc=J2a{6LC1~*6y~3|ne|}eb6o^A z$`Hjm{XMP@LfWB-=5S{Sg~+a5rPhkaf#nxEbj94wf$8n4Gd=5hY0@UNT|UGp;q#i& z^=Bq9Rn1=~k9s%>1-966KdB5ObG6seNs$^FCBF3aY0ZzDcUyQ`LswYk+-0+TKVi&q zLRK;f;6^*or(9r4pHQ5k-y~oa_mY{}wwEt?Zi{|{i}~=NgIwb)1E5E!DQQC_yS4LkEKjp zf4ob(=5lF0`DrL*T^kJviIkNQu;UgH2oC4Yu;u=OHi7wo9C+Ea$=+1Z{+y#AW;1)Q zRfDtDzEJ~&RFiv_>Ki{P-RJgABoNn<=a}d;EhqPE4ZJs%`+cnwOxfHaZ3cGZ33hpH zy29PTaj8#5>U~t4?_xvIxKNk%R|@YbjbUJkQ%ctKFerc57$bwOD-!5 z69;A7!-kYf08{*F^q(RNEGx^l8B_8!LMxw0ifpw`>^2a}5E)R_js8(# zue~v2Vyz%~ESyApnR2+puqOPxe~Al&cmIFe0Ju>$WUs81*+ke_^U-N)s!*kvC^tI@ ztb#!F{c|o;6S-@AAJGUhBe-&70IB}fIj+9gWbN0+S)vy#r-i2a1#F zaf=<`+nbZ3AJLir^2$jr-A_D=Z6AHPTM=Akj{-xcSos#(55z81+30d2%sHMvkY^z> zVJ8F7ybHOYplTv6*(;hzTFDM{9g4tI8wQb9gsWT(mDCGeO!xyIDE;KQcnJ89JFghv za{IS1xs75~xzHO*ko8<^x{-s@vVEX~+pzyvQFLGI=b`w@;~#gM7~=1B7C>jw)2lBk zRZ3kp^-&g6+jrcWXwQ8I2ZRc7Glf7V$cqz}$*=!FJ{l3qKyqiVFvP#vmVU`RYe^n+ zr7(-OY(cuIG?}ZKmYI2>%pa64U}kw9$)7Q%^wZK~=Cl==oa*LkmvhPx(s!#OXTA|E z^Y!d?_tP4`COfJ5QCKv;GkNztI=QTrlRg9YiP4H_Y2x!PhfgAYk{E%6^%9N5zqe1v^XQcq=6(lrc*< zld2cTm|Wy@v^yhvNKC6GMR$TX-@1YOXXi8Ie9LNm^ zU+Vt$T5vIkeyV9~_Gy2j|=2zBi>sd2_V`6qMSpH+7oX@=jD7SSZ9t3813d0V(CU@}=BePRmR zWhR>t)3#@KEJiRn7h(IW1xYisPw5USSvl8FOokBrGI>^!`LXPk5+C)M@)pa~HOG7{ z$FfXL{|8ljMsC#Sebqn)OlDg)(KN+0cK2D8+eme&n`@xb5zkqs(4{hkPOT?s2(R4Q zC2A%p1|?CycDpwQ_8XYv+i<%t%+IlP^R%V-9{VAsZ<#O1_)Et^i%PphIgZe`zNsvn z!{peVz%6l%q0KN-N=EQ!9;;QyH!2pGW7z*Q0Sv)5JWDJ=chkKdt|lpbqkB)ThP%wR zKpZB=x}8pIRPWrmKnogbEI}XEI5xHBxIvp4R^(rO>0jH$47d0{3_>oUytXEV++6{0 z0=FA0m*Y#yI(L%QBOCH1+#r4Dmg(B+4xlmrifKMFQpk)J{mb}1V67PKe<2|B-|N=) z(|q}C1Py84scQ`mu$A?ya9oN7#2;YIkuU$`(q9D=3=#SF9UjKL|0swU9hI)sdg!bK z?4umi1+nqj!M`}syjJBTjLXoYi=${EWW=TEnGH+d!<}@D^5xS9+sDBh252;rOjW5YCmZ?=}zbZ%xy)(c(~1RyEApoBz=E8P2XG#-b5 zIWOe9X3@*fO|-zU^%h%>B<HxO5D6LLAVhJdMkW=!kiG?wLXlL?1w~8!G zzBZHv-BzdlsWSJHE=DVhkcqjijX*?gp-8YkB{751lfd)<36Wsr2&1RxKjh&M zM<+iU(NBtYd@Op_{^>~NxkmGiWfk9DktDL&JDYPo+WR{&RFH_k-(QVozUnyF6YB3A z6uE7XMlZO08u{qfc6aWS()Ycu6i`?-ahCFZ;5oio4cYfraP?_sIYW21ndpm18Z5(4 z(UTMLdn&$z<(hQEZUd2|keig?mYxA>E0j;jUH+^y5HvDYZ$pj=rJ6fN^N>#rg5tG%dd5U;aJ{{0I{#h&U#ak=Tqx;nM=7g3K9MO?I-$ zxXcDsZJMr(ayNbsm|$yQg+8L6FunI_{}wJ{>#Iap&u#7ZhvyW@9dh7}a^E*qHMAXH z9i+!U=wV{7<}a&d=vqi1TBkL;a@KKK=uivns{{+B3#f0s{3q>ydzQi>^x%sMviKz}v)tl^N`=`qJdzg+)u00nixjM-|vdwEm}$OQ~$msJ}lE{u6Uj5J9NV%#>D5 zy(-@v|EN=jLDJu*apUukxMi;`iR6K~hTGZO=<%(ys_kIq8}q=&X!9vtn85OPwd)g{u~%Ch%`M%!31#d%uP9`ga}#|7WuNdEBM;{&qk zNyq*%){nK;g(cpWQQgXJ&5ztz(r%w5uYX#%;e+z^YzZaqn(k=qecn`=%U-&z_IGv; zGB+xk@3uNGw$1VgAbT#?P6tAL>laa^o0LO~5d4>eMcldS@i*yg+_;BV!a z_4oIG`|-XJeF-{ih2ID~_F${0VyA_E9$Gg?3nkN=1ch2s5!2HYJNy&2*2IuSnKFN`RC_YcXqO-oYi~9?SN|{(+H-QkQgGULZ`dD}9UKF;#G{ ziW67MyL`IS9q7D&j2RzoL!OADkGr*Fa^xH#k3hcRvgyGEGLDc3mcE_t`WD|}U18ru z8IQ9v&>72>i?YWu6~&IRf6XnM;#@@*bc-T*f4W@s%D|#W=u+23>Zp(k?r}b zb}(16c7xwmuKrd0j`o9O80{Vx-O}N;@!jl)+jA~SNGTgWohkGO23(u~^M3@@Et&|iz zs+5F$-vCJ-Pv7)YZ_bKkSggpR8B~9o@dw7a(=8^dH=BC5%D_RPxIw#iex@OGC&{Mb zLy-L$w53rzb(f+8@co7m(|y0l5Z1Cfk7nxpN%^6|0~mf)aBEnrYsa&9rX zXSNR>ws{SHq%>LmKG*LdHA7sZIp6OT@W65A-u0caB&WE?FMTsq8*(ngzIFhAcyX2~ zF%KaBo}*+iL5JC^vE3@}^?a3!`D%^^OhN`E(7q5>L5oe>d*=s)Gc27VZuObyI3kMf^hjyH`8*XZ)+gbw&I5>RAML+VS=p!sPcO@7FYVQWecuSO^^JO*10G(YFm1)l!GOlagSFs3Qo+92efw9& zww&k+;k>p>n6;k5WzvBi27p5>2P({-A5ke;o}pJ7rvhK;4e*HRIV$;t^cxJ}=3YMb zwdC4?Tee4F7_2+E&U{>FSRXGd16QuXaJan&ue}4d!Ko@M#a$|D>CINkijIzxuNc*5 z?}&^HAXi?w9Z@_?;C4lAcn0 z-~A5go)N|4fN+aGxc6ZHm8XB(-x9(e^1uj75lq$`R4+6vlhU2slEvZ4t)WqKZdFsN zOF0E#7jT4lY3#H4lfX^{Aj;7#KTHBK+{b`w7i6In%e#m4=#WEx6`lI+j6S?h3)bac z;T*1@VTUwk%-4VUzviVXcJ@+_uru;4(5Y?EDhb%OD?vj(K$`7orj%WJ_aBP%BEPa# znyu`#(_m#QGj;n{4hG;P(Ei7IxBr*eg)yfaKmQAy`wNi(9QjWLu>Xzh=&LvmN0TZZxdsD8DbZTD87^gs&D-CbEl1kPqo<_XBzPz-3~aeu z#iP~#24Q4R*(ogUH1Qo0Ob?-{DfXV1*D6hG7B7Sjz0$k@aBq;A1KGYFqzx2qgL*|9 zNBE0`GWayVwKooM`lL$76t!HJJ=k=g`uwtzS1Vw0?8W1Qdw)Sc2(^X6F zmwI!D8(0@QD#c-!#1=d}#y>Ps#if7}TN$X9AY$O`L=k?XU@Oan&cHy-vwS!FujflW zGyN)HB^6Vs=$F?p+;p`t%9=;cJ0M~IRxk|I1%K&v5>Fr<<*2E`wQAo(B7pL_=oUlf z*cQjy^9{!I!9am4dug15-yJ{O3I&i?LY*gWTt!5E?CnCLV#OoEYw+w>bJy?DU+h}7 z)HgTl+%WMKUwS?$%fz0vYt_CC^3;@*?CliPe)w_Ex}joc?(_wp)HdnVL|7l zK#d!+$yNbT_G(wNNTVMrvWj9Z?3mSfn(2HZyI}Jju$y7{mvy1cBGo<@KS#5K`UiLI z)oK;8g3YiSJIA>HXDZNG?{Prs!Bx@qgu5x zZCW%4K#_S1l;}$8c9Kp2ONVG=+SE%=aJ@n&cBi1fbYI2um58-)1llf2I|XJniM*`! zhK&H{5uTDq^=JRwCw=SS!40@=;X5!}_}SO8ZQV6nu3t~Tuj>)65^Fa-Hgmo;f>42= z@h8Shx^@ykfz3{wy0dSk(FdNs?Cbie?R5noIK)g6TKOg`W$RcS8{}n#=yzUWE3~4l z7)5Om$mAAw&)VKDY zQP$=}NKV9(PQl}h;>sVD(zo`rJK7bGa*R|#fg=Bj77V8(_Y7yEnP4gmW1PWn&oO2s z9sd~iN8JYXjYfgnJ+2_1My%CDz2ZsSM13Mh_5xa#@P_xcny*H$c92WL`4rHB&MkJ9y7i>SQ@!M9`11ieZ2*fB~51AeT%<4xZvx23cZ~nEeuHi?Z)<30m zX~Up+RWL4skSJa^H)#fT2?nuqo-Xjz9Br-WHVvOLSl_HS<2efM89rG#c{`+U<2V=M zSvzh}wnorOId|hzg*3`nrmI6B!I1%s|HVi1`%?4`dzu-oR@@7pW$Sm3Hw$h z%SBlGhdiCab!yEGU#gy8$)b$XsowproI39gY(7Y$^XWWzV6POk z(I}ZXP**vxA`V*th4u0WKU7*WP8-$hslAe@Ki7qu?>aW=Y1Zc&`&Uo> z+))1ez10ejG}rYbLwM{ZWK3VCs+vrbZ@7Kq_P%EvRmBfGH#%tp#0w9RlL*4o(i-FC8GN7QLU9%pqdk!6pPwCzP_o4LKYS?uX-ZpDQ)stpihZc57-!|t- z8v=nYoB1-qiG<%AtNr*OlGDqx`bWun#zjTAQfx)2y-g}IsFA49o?ceNACK>cpCHjf z6N5{{%RNs9q?1qJ;;q7vws*o>o{_G%xR%*9&jVOVM?v!6JT3S0=Aj zMNOWHyCiG}E6O4$mxvvdN-N5h1(<>Eaad)b;Df~5vV@261c7E=pQz~osd!wgr)CAx zF}s(Gvo`9we{obn%Z||5M}^BJp6f&Eo^d1H3%ag^KFAb&p{?%yQT6G|jr)jDNj@M) z@$mN_oU}E&Zkh^_Qk)wU)FyIuixA|#$dUol&%DXB%paNtCS=QCzuq?&F z-L}!{wZ8>8dip&9ii|NWRuKSQiw@A!I_rnRx~N@>c~-| zh#T0Ja~zd7F%T)=;W7 zS9|dUx|&}oHg8hfCschuTNE86!jY&=3$|BjRAaz|uL>nLoZXq-qRmEt>UFF{TBdX& zU#pFv(E8*we$117jvXHFUWt{QLa|^Q=R7W78mSh)vjP`S%sDT%lrH(3k#`IDa&cPI0|NuYi(N zZ!@3_5ttKmC8G|kH6nwSd(}ZR)?9{*qdLV!ap|cjLic)$d|vyE!zi!vDaxZr(Dojn{*1$t zAxOu7FeyK&xOjpCuhpp@!ATdmQ?_OjPkU-lBA-5w4sb{hJo?=npRw+UN^Y&Z+ETsO z`zAv(Je|rLHLzp$l25vEZFq0(t6$%0)fW(~3G*63WngC3A4gJIfr>(29$mm{zOFO@ zv14C9<_$y-kv2+_v#CqUt~<@ZStzlYSo4;8pr~C*g1v1{A+L#mpd0m}VZa$1un}6I^=)=v%;xcWBEp&js@{-?JR11`I5`%kaqu0L zU0p9j@UCy)oQN?OwHG3f&;qeqwRj?SYs?eQpJaF25DC{0Z1p!X(DCbDt=(Jx%BLnG z7`0qcmpk`$?GN=XzTM`~@?fyN@_PmHZHxNFohobfcN(qJiYwNg(~wkJ>U@cwUC}t+v!&b zV4!FM)0i#274E_fzMbbt+`>J38ieVDrMd3V-*9(lsgzPcx||O@mNRccGm(kFEAM_} zQp1Zknk2x+H+9z8xpjB=FrDiqjoMM6KCYbh*X3oTJG)I7S#?S>Gke)L|GIsyD=wzv zD0mA8YlNm}9n{*G3Cx41xaOVNC4mR2Ud-gdTGHdzw-?6P67vzY7gPLD6jc3g?;cSb zl<>F+IMI5pDp@*hCHtUP68||VuQsZ5{o_w!ZHszNf+(p7x!{98C)cX{Wh38hnVu{y z@!j8NW)-qd25BEet`h4%D5+NH~!m7Xa8)B$^P@S4-Px zhbJ5Ap+l|~x%i0*4K#j1R)8(A!8VjW#DztBC0R?#Mc|`9EW2{dl&@y8)rC}(^f!D` zap^?AnL|4vLrD)^hx=_akRquG|2-@Lh>m|qy&?GN%L6*0zyYYMSZBMOwZvruElxXFU>=N zivjeqUeH?rGqOb7VWa?lhtI>`@++t44EK0W9!^$AIx+&boB-Pdz6?!ILu0H4Y18_` zB6__~lLtO6Csz7KO@yo{Mks{<2??_ciSc6X%FtoCe!>wEH@W(Yyc&-(q_c{6NymZ~@OnnX*LiVKz<8Si1)3+J<=Q_XQ5 zPy5=d=)@hf!MZCl0A34@I%bMy8`BozDT%y9NS~s~o3@(<_SMg)V6^Qmk(!L7uDh8G z>H6p>4)eFyR6SuEOqa3e)UFS@slaU%yDD1aHpI=wZrLI2b6Mu#6Si(ic7psfsvAg) zgtU?M^@eHRJu1Q}zc!k3>UZv8XW!@H_t#P6(t=nKIl11}@6}i&#A5hRRDA~bG!I{j zou$59Q!Q@P29*}azqzJNiyD*=T6YJf()Wq&)Oxpiv1`hOg2cUFF5s&r%i!Rrm}(2h zS4Mlm37v_S+7>9+R}3TH%q%V{x7ySPtD;K0OBoS`?4z_o&GyHr`)ArcQWs%lbmeR5 zuxk083gF!Bu$X+5=H)j}=t?hjgzI zHt2A9N=Oiy7S(#>%e5m%+&>X^0{oDNkln4R2<-^yVwrN^mXry>6?!e>Drib#P*9`N z1tRmkq}y&48MD)Qp5oXEZN3YS6i>$RTH14vXYO$u25iZURg2a3@C%HU zNW)r`$umM;!F78PN(Hb$WZ8x`+u9e6d9x29TyZ~EFg@@uLOpYpOp zKh=zLoy=_~wN-JMVey|2$w_KeR`!$;T>jo{%-%uPlP^n}cEtE}koCFtBOSV}D;o#m z79xu)QKO6a1}^A&eIC7G6Y4g-Xkq5B+}kKwY4{e2EjM)s-2Eb?&jLq*~-z4wA#ZzD>6vn{Bqs71(><{4l=wbm2rX*)>!!y~J3 zYKk=XEed>a{HY$>sLDj@G_RQ%2bY^eHl!q85j3g#Y<~Cj>1Tl^zCy}nQF2jQ(11tY zO>%+;L@4f?wK>@N6p~&g?j)x)fw1Kc|G=d`F=qhWj6QYd?=@HtqBnr(o6#;F`IAu-z-Z?$G6aXwzOu|RwnBk+ z1`6-Ep$J}joRKVI7EG;PZZ zmyJQ4um~!c(9mpoRZSVJHa4@!e{%cachjbZU=UUz-!21cdErsspO3>2=OV;I;_~IiH=(TW)^-9WTAiUF^0K%$`i><8Mh1=Xozat}E>+ z07nrA!1StCn0Z?w&o&ObVfxFvAInq5kZnGxRrnt#7V5j?> zGrY;quK0a_@p8rxvt(^Ppe0%oakVALV%0O?)@;94V)h=cqTVHFnN=I_0GNPQT!bLW&1(RCts?zTl! zgG;!*)xkcs88ISy@Tw=Vr?p4f@5Qri;s;8A&o!twPJXBOlRej}SniC#c}Z`_#`lnt z{oZM)NJ_#gw@2POvBbxBFDk1-ikpUtx+g|l&KjAkn=c&N3X0WS&29VO;c)ggv|R2&2rqxg zG&lsSTIxfE`vu~2K^|=%hLlFm-Jz-a#`$xXIz-yo%uXQic%Qtsk4i^y@0~c)MmEtU zL)m2QL^xMH-onh{SM{M9ujjR1=Z++AA*O{@tpZx2dS>FpIv&NpEYm#eKcBAHPjua? z?#5GNI|C&IGS$cO|B?> zb;=d4b?_>J^`xc_T3x53apRHt^fwRtw+EmyiP;!|BK(dOs-sE$7}w3S7!g?waUeZxOB_0;EcI<_ zi?SDF%MDS}LKJz%!1eJfNQNInD=@_$oVybZ-XCan)$2IqY6l0}&^;|xxJll=c6J{y1C0 zwled!8MkuNz$Rj4aYpN$kD$r)Jew0NxIT`3V63tQY;*hZ%zX#-78EP zxqKm8G#77ht~s}Tn49!*;%JFWOys2i}*IrSQwuwRa;pz&_rkQ?MW4opg-MQ$% zIn{byM9{WTItuDeSyJ8XSTgerC?6eIBc5!e0EZy3Nhw44LDQ(qT0#B6dZ!#R1)(BQ zQ~hTs#pYRc<#u-X3E{BSK%GOMvxrjO%vY=?hfR5r#u|@qe1~j9)*p>7vnHfy<=}vi zY7ACxlJ(F0OqVMh9Oy5(pr0Md019aFA6(D3**Y2M1{XxIpOUAq2&)&l94gDgR|REY z&RfWMCmJm=)Olyc`c0|22F?k0@~I^&kQZ%&{SxSZ;Zf$KyxtUGf^3MR5++^`5B8k} z!suzQb`#Q*Q>&pXi*eRlOOIo^5A^cn1G!WI(HBKhL!HYmnZVtfU%Ip(jPFiH_BbB~ z+xgn2zWPvtZ;E6D+&?J0k-~`-q`%1h)EY`TbLpW4mDF6VA(9q(-3rV*vd;I;+qJkE zbs1NLcNw%O$u_vHKQy}h%5(IRL@@34wp62>-bf=GESSw9dAC`c`{(f|hX*Bzopg15 z68#&rbZB6^jP!KC>)z&Xg?Ul5cJqn{VQnK%B1YbnQiPX$5OLXuZp-gZn zq|rFQM4evUXnzL32E?V`%Wg58>VexSXzz!fDB z|MD+wl8z;kXCf7AKL~5{;ZR&j>R%*~uqW5MQkC=?3jMxtp~KdP8V|s}#bvVk-UA0m z#-^t{?24hqm$NL!JRMvW2sdGc(8O$WV&&ZaLS9r<5jEEO+>>k{gC6-`0t?rLk;bN5M8~E}^sx>rKm+t7TV}OeN!wv$0*#Hs{aFn~xJh zFOUNj!-%bC$mbhGL5ZV7Xtss90-~qTG8c;+qCs zk8PiDjo7rUoJd3J=~$5g*@d1~Qhy&HxY4eU8GzxUkL?sMyM~5JnqTJGRKS5jx^ml! z-;&#l)%Em|N=W!0+Sqee+8ThEp{-iZ2ODHUol}DrdgFV_X zQwur`_d!oy8^dJFny*aMN@DE@8cs2W#Bt7^W72VrrFYM5+*Vnk)xa{xf??JQBDpfM zup&cQjnEVG+96Kt@4<}~r193i7(p?ub2HSgMSP$~O)NpPVSTb!dv(~8^m@61*7k|i zoYx`*A@`XAdht6uP=o-4906e?OcF(qKyyT+5J9J)T;F%bR@Pue1~!)4p#ubVm@({6q;%XCig8C*EbyEw3$I@+2hech~zt;_*-WT6mRF5(>UCropgu zD^Q|88D_nOnA12%j5kI$X^0+r`n-a+dL$}_t_E%&`ivI%KPt(OiL-PY*uphf^&M92 z?p#Z&J}-C@)xx2TKsIeH7~^_^`q~a2O_EksK784z+tTlAmqqo$iu!5>nSc}bFA>tk zbOuJ#@V`_1X0IwV#GZ0%-f3KxTL)<=j2|1yj7K{8pLGMIo<>bzL`2bWdy8VI=iTDi zQn}*v?||q;!=EwZCoLC?bYgq~*-{6LNgN=5yCuTVmAA|&_j~q6k(kRZ%&Rww;5(6C zA771Q2_0{g8v?CwGJ9a6cNVP^Vmj2Q`RzB?0?jj`+7tGcvqSXr0I3E7xsUqa|AlCv z=l@1nrwBxA7jI98kq0H){fW6p%p$Ny)s-Mi>r z`wMT+_)kTczRv}DZA_wOqU#F%p_i_0DBollQVb(@jXuRe8NGvp+dyiAs>^UZ(ccQsQ*#GjknaqiiXR$i?b9Ut&YFKw zRBLtJHa%CqQ?&csRnb@0DUDCSCO{W`r))HT=c{$4pT5+2%=HWNwjZ5lO6Qe3-o+NV zjGaG%pU!iFJ83qmrAS3dVJy*sjZSb6?&%9+$a|iV-sCzmW~MDrzJbUNg`zHTCu9o5 z*RDz52gGEV4(Dee58O|AI{FwL95=>g3=YV>3z}tAhC>yZ zl2YYuIuw~B4D~^ksj_V+c}9?|0);PHY1hnt42ql?Khr%X=H^8fR~2^RvU8ss`wc;g ze1F-WxLV{gxWfgr=R1Fqw9*0ionY=yM^=4zRVbviwxD&)3NPmKW2>a@hLNbQVM z+VK1sPw9}ly6a9t<i%~QM-uHR!P-ZVv8n-+LDk(2q7Wf zICEX^*K$#WT{r~-c&;3vdcnT47nLD<5A)xJK*|#7*TP@>j#aOs1 z-T`OmF@UA!F`jsesohM;n!q~JZ<;Jmoe_sf=`w$B&$^XhCF$&vJU{{NnYSHm(S$I2OZpUmZx#a>) zwLteRFg73Sy2EF;N9UKtC)`)jjTrB%=CIj8S!wgO@oJF2M-jf`e9HMbH=Ym?84z`-3Bx+jx0?d8kA=&raSmXW_|DRT#~c8CxjU)F4B$l zrXRCNmr*3An_aS?&53z4!unac^Vf4fPH08R=UCNK?k5gm10Bo;gw;4<%{=O0#=~w$ zpZA-6>fUNe)(dG>C&@IfF{7oEH)rD+G}7f#nTmG&ob(ya(#U+C!^s{7y0LM%{G{_* zlT+ZfXXG_C&@d7_8dO1bzx$o@1u00$|7)5 z`InZs`Ai-wG|r5b-$q9|(KCBXyO1261D@6TCM*zFfv8tQDTp>Rp_{1QxGrh{$G z$0T7!LP83iH>Tt{kq8sE{N87#L`RWlvCfkvzv8fzAadnRZy3i&BLf-JH!FXXVRU)v zUU5+WYj`Y&&F!9MI1r`p%W9+7GkM@>-^rz0s)C_U-{mtehK$1NttRnaePY;1#qY1t zzXLOeKARWB1r~Pv4A2*4uRJ=EUx$&35;A{|60cgI1^%`3+18TxL%&*}=02!Y%2&3g z)jTU5Z4EsQo%>@0i*?E^t5a7tv4NcRK6PSUgL9!1!j^JMLwryyzzLU5WXlNw-^@fL zV?x^=;74ew5fd1d(lF7fdptZRsBiGv<}AkQ{U7PhqEq~Vaqofd&f%d8o-?tIKDazu2)_5wNJhOQ$vKVBP8 z8u(lPAua8z?0kCOxDN3NIkx$&-4Jlbs}T zYr07aFNmK4+lvGQeatPC?XMF9NbthE(?|ScYx{IJe*Jcjv_&dj;etLe+VUP@W``~t zBrhD`AtDt^1;wV}38ScxXb z>>&!Fl>^(!A9Wz)hK9KHbPx!y@U>9|-1Y((l z`!D|Q!z&gMg>>741vwk|!p0TLHxd>L)M47MFcAC3sUDWYcQeG20 zbx*(YdsKLu{;Hh7POl-A1DFeGK}Tk+I-CvOKKCEetlcQDn?u)~n}U*}AQezAd*wa- zK84O^45PZ6;FzkMtz{3Rq5p6TNa?g#fF1{pSHGJQUU%U_T!WNg6wvZJf9d9}{dMnE&9iYM>y4`Na`@r`+DO|*^Ne2$n7C)9tgfZCqsr{g8 zx4eLHvP(rshgAP^4Wdx$TF{v+S=|}eoi`mmin>|Y6m#>NwViAt!p1yWSe@t&{KHiK zqfJ-*`@7ocZn8E3zp~(8iO@4KS~HJZQi`&f7uxk>yY@0>_CpcG`WhTmz4`s=CUTA; zPJGaNDTLnW5c0n0alDC-z#8;mVmsoMYwvLO;y(ZQ7nLvCPp)=oe`GDTUUT^+8Mr2Q zbcBGanSSoR!Ptd1|5{Tka2y>(2|2R`_pbimr!uEeOvdD%EeHe~0#Hqy<<9jpPqOe& z{yq?yY*+4UbM9+G)43uyv)s}mL%D075^H&h2!covW9I)gkiZfDatCB zQuP`wRnax&R4LoNe4j$dIo0mPNgC<)BY84!u5|afpqlhDx9NkLM<2vAo8>t2y_g#A zt2auQzFE_g!y>?IcTHS8R{)$GYiAjUo#x1BvMl>{bH3zUsP9ny_K<==u8uqUOL6$#NecQGIs`@{{8Iiud zjVyMpG-m$eJgMm{5BWn(4i?QOo4BCBAep8~UTwuLfri~J% z7m4i+^G;u34w5_N8Iq(vZap|TPkqSnr(%E z=6GoF;VyC)g3-9y(-Xf0z$%Q{r}}39Q1Y<`-Oqc(=VZgB2bh}9@+1ZBdYK*-xG zlS42JW{Y!IG71WiSMgnb$AL6Nnr(c#-kF8N{*ZHHTajrvVSs)OSA;-CT1yB)f<5!K zAx<)^Q16jy*mg)BZs;7Ut5r?AyONm`JcRR`9qN2KsW?wNP8)loljc}IPDR20xFX_9 zggu_N)u8mYJ1QqTMO~)n6Ku5#(Dm zhE5&xq|OMCPv_gMUPP^3XE`x~Mk=qzvfqSZX8Nx~6c|d{)W#szV$M+A-Ad zaw_^CGEkJbZo--bQF>UmgRHr4EH6eMw$+)Gt;a;bwi-u%Tk^k3KR?UFQSFKwv5VeD?iFJ35F*HzuB zvj3Wj;dUNPF=eRq8sGgEOJ&m_#O|Z*+83#W$~j*&A`iZZWBxO7%x=#7*U0EEarq@K mzX;$|8TW6Le;|?LRyyi$!nAMBx3}$PDAdvQ68XoQcmEH%QQ5u# literal 0 HcmV?d00001