From 2925a24a4672a6c9d48006c760ea644e0d01c047 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 5 Jun 2026 13:01:19 +0200 Subject: [PATCH] finished the main menu, did this in school so not too much of a change --- KiwiSoda.ttf | Bin 0 -> 49292 bytes README.md | 4 +++- levels.py | 32 +++++++++++++++++++++++++++----- main.py | 8 ++++++-- sprites.png | Bin 5819 -> 5948 bytes sprites.pxo | Bin 6685 -> 6833 bytes 6 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 KiwiSoda.ttf diff --git a/KiwiSoda.ttf b/KiwiSoda.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e544946f8918a85776a2f7b9cf96483a2f43c231 GIT binary patch literal 49292 zcmc(I3zS{edEURzod?oLh+()0gl5oa7zrT|l7`U(Y2XT>7YKp%0E`J{kc1xSL4<^{ z<2WadLy6S(pyyNz5 z+hu`_Ab$_?BX{q+aqZL34gQgcJBs|h2Tx8v{=kZB{zRmIr%3e0gHN7aB1@xZMCM+L z`#nddpLqQIc>#n3_vNA^C*Jw!+J9Vfr^vi-ioEdf(Zkb+25%kxH12%^zja4Z(DzW! zL9~Aj^4A@_vG|bkGmJ-XKd&5EK4Be8b5b-@ah;-^)M`3Pk?wLx1}~ zxSmhWOQY3b_9BUR!GUKQa$e-Y9yy;N-C{}paF4JA=M&PW<$TgeXP$G)UtX?AEeoCiVM?8?ic%XxZ+;a z^3V8mpo7v{P#^cTZQhTqZiF&P(&t*F59>wz31!OP^LgzH(rG_pR7i4d<6gvHlKV+6 zoi9ha5&QbB;#Kh!k8jIpQ=oIMzS5R?)Gz#UbqeLVdX1{*aNj|T3^uXRGb@)h^>`MRs%KJW1-v%K<|4nM^U_bGeqW93gsi|j|f>T@x!tsFk66CuyK zg=^yT;TnUNg0jkA?q18oDP74g{#2LZifgHURLg6#=;@$kC6wya+fu7QrKQ!J1D zJ%3erp&rUYzCZ)L@8vu^msmR~y;+VQ`!7lMQ=N>nb{jsO!a?00RL4Pe=5MhwO5|1K z$g;(#@G`E~$r7aI%6sG!?gyf)Mj9gnBUg`X8M$v{dgQSsmn~VeWMs**C99X*yyO$3 zOIHg#r{Ia_-&;QQ(|8RcASGRt3 z>Z>ciI`EbM^Oe8-%3prD_2sEAZ~pS+m#_cwHDCIbFWvGd(;hc8-Nn%tsTV>g*pK|- zRLEFDLU%gs$p(7fD}B-ruQ~@b7?61~A92S5xkLu#QW=uVq$!unLb*b<pqCs5Xqq z<7!Y~6drC&u90zBCd=hoSpiC}l^)(d*zTEmSaf013Wz~kGY5CoE%5~pUF?*ds(m^>^05_Nt;{ofl2@lLzo ztZ^MEZ~yiHo6ow7-BI_ld&PY_x-QxqosFK3em44K^lIax#;V5SjZZbc(Q{qT@t)^< zzTUgEcXRK72!L?w|94Ie$9$ zlDYTH{ovfc7+5-Rbl|54{&=3uYt4)2eP({o{8jV!&wtheQWXl#h)4O8Qwem z-0>PP&ufzZ%~>{^9X2EL*(n;bk9R_RZysmbaE4U;g3cU%Phowa2f0{@Sms zxOTppSaYb#f;eAmj)UBBr1v)BL54VT~W;0+(W;ft%TS#@aD z$5(yj#_Mi8apPxJ%j(-!zi;)cYZk3JwdUouJ!`kGeRl1u6W30hnfTmI8*ci@WHkBU zv|gWDI~{?P58y8YYR_H6sfZLe+Lu>IZJ zU)uid9cy=-+4202Z|uB&=kc8%-TAd$OLv{v_2RDA@7R3DlXralj&I$0%bm~M`MKST zc0a!RrMoV=>yEpgzw5Obu39Evf zhyf5Uk){J8gQ-O0X2vv<9f1_&f&Ewr9U6tlmxV-qY^rx+xQ8+@>>9v%SY?99$Ar-0 zIl-@VM4FHFEPZL)4MZTh_9vPu{!@Ju!@UiPTyr^;1niqAG?(~XoG%UN`#z$VQH$D7 z;f1)GrkM6Ieuse@=ul>w?6Q5V2S-~T*HY1-O2 z54z(Y=-$lJJr30r4(yFMh&U?3q;Gt@BxBNy-zZL=S`!TP8iYNA2}Iwxws zdJ(+=s%Kg@^PS7jl}>wkSD}hpVBDfJV8dL8V=YAk2NF0dmlP5PWR7 zF`>q>y{%G7oX;z*fivZ96cUF%jZK-^qxLE_#)ct*QIdbGI!$__E#kZhny5NxR)B4p zDWzyoF(DE#v=eX*%FD5)7Jxj>vOrYBsw*`d)E*!TTu95WEgO6SSBzFRSl%Ql2~$y_ zfEqSQUF$QKdm1F5!6dB_>4{d&0|h4rQ6`OpL=ZeVNNFib#?0_S4Z;O82^X}7LQigL zfWj)vsxK_?CJ?}k4pb?xOrf2cYg|*V#guywdpZ1uj4J2ZLo>jN2D_+oOBdE$t^%Qg ziyX{?Q~-!8%G!z)w8|a(4o!g!Q{C)8VVO5FZd2-10hQM@O5G_<5iDV3=mrkV}eY>TpU7 ziP@N*m@r&nV=3$XkUK<;v}0pU^$s8=$>5bb*uGTl0UO*&8)JhNM^aG+z~~5KYr?&f zBl%uRmpUXm9;NnrEi$o&sCm6J`9me(MNb8W0bRK|x1x$%RkCYOiMQ=)i9v!?5HwuzO zNO1>ng?stFCKy-Pr~-oP-8kg|-B$R}UI+%nxw*1oqJfOL+8GBD9q_SRIhrS!+tc_A zT?dUb1OQ#_9uXj9WdTW`!?QxaW`tL$U^)-Qj}nZgF&boK4}DdO8$wZ2Z^|NRLmp7I z)h5s&s||{98`0`=2*!-ohZuA-z6zKoG>VKnTZ-onZLe;Vg?a%H=Wk)Ep7zHc@)nGkf{7iLWR|qwVXKFX-TMO+_1~sZu6Hl#I37`pv zTVlf?HdIh;JuA`xS6S4VfL7l3eWE}>77*c0O!a&5M^}gmsR@`WcB%!WJzYAbA@yyQ zjdv(aX{omG2D3Q~-2sstB>)YxdbGdPMB>q%l;z+CI3`1PQHBVh4{}ToKyfz1rW0BO zN>557WL@X*xfW`Y12n6o=RbUX!uXQ20sSC0b&da3pe)~Oh|(lsur@0o<;q|&#&Do_ z3+oQBI4X63oDDn;zWQqQI55OC44^x;zRl3bWeE9v=_dJLaRze8jguD@Id`_8|Yy1OHlF%AjV8AA7E1k2zwX$PWei$ohcZAD|mL-q`uiuF{Hs| z=wK$0l&AvhfdOQeLZ*0Bbfo3^LR+w&)_@~*N~p@B3O>++tMwWfG{LZ^PH?=zn?+Fh zT%6BTr;S*-I6&=^Dmqlcj1oYa>T57civ*{D67quNwspJ zhacf#xm1+(wHES!}3;T8HV()SFXJ;JU5r;4{RR z!Gg!Ze0wByU}jgYbZF_k-wL%R18PL5DTv_UXDmJ{x$dMB5bI~G^Pd>;+T0feh+>S^ zIEknv&Bf($U3=aSXj=J~MKjs?}z{mXb5Cb`ooDvu7 zQ>j~0f2{KzD=D$i7##~jWHvRZyU1a_2nV!)9O@hzO#-=~5YR&~UL}V`7T$Gg zv3M`*2iphzM(Lqd%XC1Gz}z>gLspP(9O{TV7!t(ArjYA6F!9xMv_qek8||Rg#a{o+DK?fBz7sCO_M-A?A$b2Mr^K;fd)kpTBkh)HH}-;7xXM8EF!i}!FgN) zSIXKv1q3B(fwEJKn8+>m6w>K0)12#Ki$rPcjAX4 zA50BJnSM|89peZtd(kd&B-ld<0A83jKoN`|@GA9mhAegEyy@}~SHN_{*GqNexPjgU zR0sn;#jDt0B$n59%qGu)496R>HJU$DHjNI{Yh9lp zvncKy=s*T-erZ@8t%6aZL@%g$6&jImy*6zyv+*z>5>`I8Afe*g2K)`9bJT)fjWc>d zgv1#J8>CTx)HWG2$C~R&cg~e)X)umS0Z1`dxK)!0^aBnYk17n%j=Ufw#RA^0X+lM@ zs@3Tl2r$29dt<=3l5!B%Q>aCZX3?ZsT`-RF8l+qsj4PT=%fNriDr^PX9yPy8q{((# zBQq213bg=32I^?lm?3R34=va(g&_)KoKZOij7G?U8;~dk1m%N*sFl*Lv@3q10O}My z2)p$QkSH5X&bn|-!bFUmr#z!Szyn>(`cu^l>qPJyG03$dwc(T`8a6P(cfs5fEV=n^ zWelubfg^bmRYBBYs+X&l`de>77!fG3==IPCvW1G0m=t0D3vD!W z(@_*qscWTB?r|hdAeC5o0FA*|HAZNW`V7K=+#zU<3y*imm|Y^#fh(g8s5N>Eu_3;& zLByC6>cJ?rbrGx1Vb%jPSX@H^ER3@_w*bO|lZrmNL@9v=Lm$9p1yAZj&*~ekxZ~lF z{<$dhpE!| zr>I!(5Q-$BneMLuh&50jcW^HmX$kh*4ib_P473gt511BE8Nvnut|4Sx16<`U);%;= zpN71{>(ai$^3j7bx$4AMdMLw_M5rWUg_Eri~F7(ZI7Cku4tfo6sR z)Z2h)f$FrFd@jZ>!7n{>gh!e3mGtAf!=30Ex@GnQ=wf7vo|zI+ts9=3=!^G)P$y6o zQiU~0@}8+pu1g;S@JWhRWy0b_;Mjtti-Du=L4f`!NyAl$`H zcEI07y(_2FxdFUx6`5h5zUXnq?=bpPcSTJ$4$UxMw6qWg0!Sg6EbiZ8Qmi zjuo_>HCcH|v^1`~S6f)9uDr({2Fl`9I(DGsscIR@=z<1!jefJs5$+|GZ5ON!YG^G8 z0dCTyyQ;Dd z?b7wlq`ouhof6JT9_O@D7m0)>i1dl5s|nsE5ypsEwNR}rji;iRO)5YWH=-`7jlGgKmb)}bDd-4PCW0c+s8c3Dq+U?5M%sv! zx2Kj20*8L#CDIn~gm)Yy-&KCquAr9NNw+ zC<)@U5la;9mi8O*Rf2XJoVgo>^lJ$0##lcEtn@(^b+59O37C+6AM=4W1O}~vf!44P z+2Rm5G3ZssFx>JrOa`$2-GU74fTF6IqLenwPE%PL=q&{wKoIZZKSFfwE3VKW-)t4+ zaI5-C0*fTDLM`csL}0`$s`-ru$4-Fbb-C-Cr)tV*ejWtvOq^;Rfv-p>S4IRP6plR z|3*@UA>;u1i8w6Ag=^VdX{SK~a~YARf(&v&j!kPBu`5tdISLIO%%B-^s9hvgz_hGF zqpItgKp4@0=64rQZww--hKH*_6mEFjg?ZAO_9z2!~;im*93j4b>BO|6BW z;P6fteSq1Dh&{b9!UTq&+7s9iiy~Qt_P3$%2(zo>J6+WZmCOqIzMw7BA72`V=nVZcyf}kubc4>ZIaUlu1EkzFII<*H)}HkAjcDSgG-_1(MxMUF zkOU%JPexD9jtA|U9>H%JZ?|ElqcfHajH|e-i;ln#!HjmJYdmMtd*d>3 z4SFsK#1MB;VBR_``H)GxfbGwyP8XSZ1Bg=3l&kAtr)i2Kw z*j*Y2*s2v=W3^Qy7+5o|-Xs_&bT6G>i_}f`FbNFG@=<3>xdJL_X-E|Any+<~iS>vT zwlP9%+x?1Vd&1YnUs@`RXB(5~dnzZSL})%-3t&QF$7@EKR$i~TH+C!ZiqSGy(e3Wo zEM#e;Q5UF{s+iD_T_6!zybwkQV_Bv~326B?@}(LctqiC67$JjJ#h6sb8D2Ro zbAz)bDh6kF2zF;n*T_m~V+O*VVvm7gpa1Zxrzw zVjLPGb%O}m)Z0PSS|x50W}$W5C!Z)oF>Fx_vn=Zwr7+SjsGB+1VF-?HhFRIuTo1bd z!C|bVwVCl!gx-~pBrAxsWHFUkHqJ_ko7zd8cfA3)!A?TH0cxrjc9)ASz@oIWo4K%3 z_p^pOrMzBwxFF3e;0EQE5`egrugaRU3jGD#`FtCpsLj{`<9m;uV^c>}_iH+B-6G)X z>4FR;l?OmhFebPGyO-2E%?vm7i6M-UtjUm?DPlpr3{Q)lW3{(y^vw)>$A0!gG0KpLp`VS0r=mHV(&>6bGZ6Z{d zQ*QhM^Uz1yibQ3D`(z;-h|F~cT(RM7k&SJXCW;dXl@dps2l2xgfhbfR2?}GoK@2pqhl`a3C@NDQ+p71FK z<{l0&34SqtGkD=hP)Cm-XW%Qjs≦n9*?tlb|NaG_$A$&|i(z5>!Q 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 06f6ffe..d25a1e3 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,6 @@ You control the weather to your liking, just be aware, it can turn against you! # Credits Here I will list all the external resources I will use, most likely, fonts. I make most of my assets by my own. -Alright so I think its fair to state I stole some code from my last minijam project at https://git.dvorakmortonxd.dev/dvorakmortonxd/revival-inc , however I dont know if this counts as external resource since, I am literally the one who wrote it. \ No newline at end of file +Alright so I think its fair to state I stole some code from my last minijam project at https://git.dvorakmortonxd.dev/dvorakmortonxd/revival-inc , however I dont know if this counts as external resource since, I am literally the one who wrote it. + +FONT: https://fontenddev.com/fonts/kiwi-soda/ \ No newline at end of file diff --git a/levels.py b/levels.py index 261718c..aadbee4 100644 --- a/levels.py +++ b/levels.py @@ -1,10 +1,32 @@ from render import load_sprite # this makes it so our function for rendering sprites from sprites.png is available in here +import pygame -def level1(screen, sheet, lastclickpos, basicfont, mouse, click, level): # the function for our first level, ignore the unused variables here, you can use them when you edit it - screen.blit(load_sprite(sheet, 0, 0, 57, 36, 912, 576), (0, 0)) # this renders a button I made in the sprites.png, its purely for visual purposes so it doesnt matter where you click rn - if click: # this checks if you clicked, when you clicked it does the following stuff under - level = 2 # sets the level to 2 - print("yo") # prints out "yo" for debugging purposes, otherwise completely unnecessary +def level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, mouse, click, big_text, level, tick, slightfont): # the function for our first level, ignore the unused variables here, you can use them when you edit it + screen.blit(load_sprite(sheet, 0, 0, 56, 35, 912, 576), (0, 0)) # this renders a button I made in the sprites.png, its purely for visual purposes so it doesnt matter where you click rn + mainmenu_text = slightfont.render("THE DESTROYER OF CITIES", True, (210, 210, 210)) + playb_collision = pygame.Rect(315, 200, 285, 105) + exitb_collision = pygame.Rect(315, 350, 285, 105) + if playb_collision.collidepoint(mouse.get_pos()): + screen.blit(load_sprite(sheet, 57, 7, 19, 7, 285, 105), (315, 200)) + play_text = basicfont.render("Play", True, (0,0,0)) + if click: + level = 2 + else: + screen.blit(load_sprite(sheet, 57, 0, 19, 7, 285, 105), (315, 200)) + play_text = basicfont.render("Play", True, (255,255,255)) + + screen.blit(play_text, (414, 230)) + + if exitb_collision.collidepoint(mouse.get_pos()): + screen.blit(load_sprite(sheet, 57, 7, 19, 7, 285, 105), (315, 350)) + exit_text = basicfont.render("Exit", True, (0,0,0)) + if click: + level = 0 + else: + screen.blit(load_sprite(sheet, 57, 0, 19, 7, 285, 105), (315, 350)) + exit_text = basicfont.render("Exit", True, (255,255,255)) + screen.blit(exit_text, (414, 380)) + screen.blit(mainmenu_text, (45, 65)) return level # this returns the change we made to the level so that it updates in main.py def level2(screen, sheet, lastclickpos, basicfont, mouse, click, level): # function for level 2 print("ur done") # prints out "ur done" diff --git a/main.py b/main.py index 55ada2a..de5ec58 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ window_fps = 60 # the frames per second, this decides how fast the main loop ru def main(fps=window_fps): # the main function pygame.init() # initalizes pygame + tick = 0 screen_width = 912 # the screen width screen_height = 576 # the screen height # THE SCREEN IS 19:12 RATIO @@ -12,7 +13,10 @@ def main(fps=window_fps): # the main function lastclickpos = [0, 0] # last position that was clicked, this changes every time you click somewhere on the game window screen = pygame.display.set_mode((screen_width, screen_height)) # this initalizes the display with the screen_width and screen_height variables pygame.display.set_caption(title) # this actually sets the title of the window from the title variable - basicfont = pygame.font.SysFont(None, 30) # this sets a basic font for now, we can change this to anything later on + basicfont = pygame.font.Font('KiwiSoda.ttf', 50) # this sets a basic font for now, we can change this to anything later on + bigfont = pygame.font.Font('KiwiSoda.ttf', 80) + slightly_smaller_than_bigfont = pygame.font.Font('KiwiSoda.ttf', 70) + smallfont = pygame.font.Font('KiwiSoda.ttf', 30) clock = pygame.time.Clock() # this is used to control the fps of the game if you scroll down the code a bit click = False # variable I use to check if u clicked with the mouse when calling level function from levels. sheet = pygame.image.load("sprites.png") # the sprite sheet which we then use to load specific sprites from @@ -33,7 +37,7 @@ def main(fps=window_fps): # the main function if event.type == pygame.MOUSEBUTTONUP: # what happens when you release a mouse button click = False # sets the click variable to False so level function in levels.py can see again if level == 1: # what happens when the level variable is equal to 1 - level = levels.level1(screen, sheet, lastclickpos, basicfont, pygame.mouse, click, level) # runs the level1 function from levels.py + level = levels.level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, pygame.mouse, click, bigfont, level, tick, slightly_smaller_than_bigfont) # runs the level1 function from levels.py # THE REASON WE CALL IT LIKE THIS INSTEAD OF NORMALLY IS SO WE CAN CHANGE THE LEVEL VARIABLE diff --git a/sprites.png b/sprites.png index df9c9e91e99ef42e17ce6fe19efb197023f88226..60430946fcb5cd82d7df3cb62d2d6256daca49b2 100644 GIT binary patch delta 2012 zcmW+%d03L!8viiM(#A3^D?|z>wKA9MQj-fUh%uF>nRBf~vrTfVYzTAtu<}Y8k~L(c ziAgsJ)Mw%dkf`ahP$NlF#=XuZX_wMg|TDP^i-|_-A1l;aO zO6laVI0boRJ)lhObS&{9=`1b^4qX@GTQ}um-dHB5F(Z}{b3_sXrGj~jeB@c=>Mg5t zsuP+9w^d%>cD?0?8e|W#=_JF2EcGE(C4*R!UC&=E?>pU7{<2J$Xd+S3X|;uLyR!e> zv**um+lhkoll7+>&*JB2dciRDwSW}>0Q4L)q=W7C7suW*-#m8<(tYE!4JCyx9B&;i ztoo%E&+WazWHPyPxiC~Y^QcF^2)r9Wh9wR`-tY-XHl0uK1@gm< z@%UY{nYUSH9GwYoof2XeSG&uwAt&8;bDdak5pD-6{lB@JC`u^d%W|sAvW}``?O~*Z zWWE3k+uO_b1J28YAq^zI5`Czp0~xcS$6}Fo>(;FoRA2s_`*J5t#bU8;=o1=_3eGi1 z6~nC;-~jd-f?zTw3hxY9ucw8z9B6-og#`h~jQ7C3ANPsFHb8D%1Dbb%(+G}0(>lcqPYgeoIL&-(>Cwt`K#JtrBcHqs!SMpJk;-z@tj!W>4P{>{z9<8rtC z)7=!`gxWQ8U{#b6E$XV=Y~+wFD>c4~nBaDk^7*{)-wA;j$KX`_E?f}$8 zpSu-^o&Iyi>=YQiMj*GQ8^K={$B9{@jKoAjK$%V5D;}yu)+6hBHILr|YX$K8oH}cV z*=#nWxw-jXNl5{Xw!h$*?XNqZQsSNs@S9?Z|61uaxVU_Whk~Jdc`=4cqrFqh)DssG zFgdOq?OVL)8@Uz54SkT0=hz^T$fDEH$AeneF~EtgQQ`k;z4SkKO!mE}wjTdd`}g>z zPUp3q{XiwLc8S)Tu*#d@VWI4APMdGahP6@4bSX@Is`wS^L8wdi!gN=YC(;YW?`&X) z;&8a5tfW{sTUWfUyL+i+@YT4!WpNAH6UfN}XC!In^_+n7a9|5u0RW>ChB@>{@ z!FKlv8~>0&dwcs){S+U)UckSS;U|2thO|oXF3%Pii{tOKDsN-P%`d3fR}e-lG<vo!n<>Wm4=k0#z&Z>GIZZ~Jd zYK{>W{AuW?LuebX$U2XMz2H4Kr}BvN#tqp8wzIKL80nkHj%$Ip0nqR{??+4pQ}zt5 z1=hp;t01LI_{osaB}fRJnKFZ&?tT)aiqDdbVdl_}OI<5#=2II#UeL{q(`Zd;vQXSi z{xZjm$0Fw&5gV_1#5U-UM)a9CX*KaiMdR;s5G&^VfBXggA=M3NCXmqg zv&+1MHGFO<4p;h9nllD7AQI_CMsoeSuELpY7n`Dxj=v%gys(oL_eaCxFb5!3g5_MwCiNqsN`N3_6Sqf(D`8zc~qPOpT5mKu+xJ5~o^=dk7g zY}=z8HLc3EvbXL#Q6?*r@pfd9NTgFGw%$BGVbcV5r|*2m{pzTQB#Wk3yucT}63yfR zM;k*LY>zTTckqOC-)mhI<>3rUnmfvJ!D{wOV9H2av-&Y%e4hnBk<>9g{$Oe@{=`PU ze!6SEl4V{Uz{p5lAu@Np11}^Hpwh1RCZJFE`9Pg-R5^inW}=T2_A*yVzUv}o~ z*}R&^69#xews#0CD6wU-3)9j+UY5t76GuSn@9+P2OpJV6IE`o8oaLq;GdoMzDXNKSHTYnc)Q4LHSg$mS935`K&%jb0 h)Pl;fgr%zyYtj(K-!W`^RohOUYI?56+# delta 1886 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 delta 1945 zcmZ8idr(tX8V?2qrbyheCA?#Ywm8*ow&k_*NLafr2qI1y6nUjUD@Cx;LU>8I>FAbq zt>QLxLxB*{Dhmkm26-f6rBQ?=hDW3UE(IY#NKzAWuX)^@4bk1%+4Ikt`Of$I&hLAi z^J@>}1~?y!!P~!y!#O(QSV`^9ckH&YlGy!rW9&cwtfg#K)6=}W0?r@z0Xd7jW5bf_g&;k(pa z5Rj!4HE(y&M*H1Ld=wUHIw0s+6w+lZi6o(UaGHklbG4l}R;3i~L?F_04{o@ma;!CV zeX%lLn{A%E+%Oh9d6-AnWL2e>6 zj7qy}AS7&psGRqwS!PBq$3bDhY>-b?_XUr>@A+dqoj$SgNk-hz=JDk|(E3A332=XY zdp0$b`IYe_F@}oCL{!jnqxf*FS(_GA@XbFQ3*M1^xc^a{V_xFPdtMLGe0|AY=^=K>`0$-k9L>XDFtW={1TeAu;cfk1Kl zq+uaV`f;9PI6{X5e2Xhzd~tlha*QZde9d`g{7Rw<_TQI~kZ^*w=H=xzdGqPN=5aV2 z3*6&-rUE<;ci*U=TQ!obwrNfKm2fYYYOBv`9hg{)3R9=GafQ)`590QdamI5sQTyLbSK z0-Q3&)Uk*u;Fc2*A}Pd{tNkBop@PAvwdL;>;_E zQV9l^HM$=_EXJc~e!5KLJ(vxHC^cq=-p087s?K@@>*-y3=%ryvfq)`8SPO}$>cVUe zVdDzGIN*O47H`j$gE$nU&bDrU$iUh76k;3HS-w?ewrzG@3iujNx zRPT-bYB9~%TpHpwxs%Q+ zuH}iJDO4&i7V0D4u`@FbOib~4psDbq*7b>{(~aOni(RD=nnLY<#CR}~uOyejw36Eq zwnR>@>CBm+;fhZ`wFjy-hZ>|JvPvOzcius$hJ%8MD$=PiA6fb$YPW9V_2h0h;rGmQ z=i0j>A)`@vQWpm`xq?>XAS(g(gLWlRQet+kw5`vBbOBWbeoON6^V7>aTS}%1?UC2B zk^vgH-bTSB>=*gd%tfSPViFh*SkCSo&JRf)BN25uP6q)gKN0_ksv*z&`~tLhq`+E| zwu6m;OeTBE1y=v(;wwB~Hx0pL0V&Mjnx_hc9*VyPLG!c{+N`M}Yg-exEJR;l7(K*f zFuL>Q`C;E9HRB^p+qL*6niwu=<$GJv-@S!EM}S7H7QL4id2Ag>Ea#*ah@OPstB3j(q}CS| z)N%{Jkdz4X)%*V$E6xx|z<_eCGy`qG;LRkzo8;Xx+=GicTzY@4Z_Yhc%biX5Dc^NQ9Y;PcZq;9y7(&0DfT zIZ}ayJSud;cp?+3;e7dq?o?RS z_+}9$-Fpu&D&PC1LJH|v@dc4PyTdhg-( z$VQW?$ZOA_pr$5ck8%@(ws#IYJ#k@6oQS&?U}S-1Z@oQ20%VxuTkK({GcJF0`d^J? z`?~*mOCz)01Gl#8?g9TNmA|_0-?Js2wtw2Htkz&S&#mphs}cX5y*E4B!+9$}qKDVE T3vS=pyRyIaAng!trH=bI#oG@L