From 4119d7a27c2a2df764d7053cd2f8dcfe0acaf7a0 Mon Sep 17 00:00:00 2001 From: Loxnebot Date: Fri, 13 Mar 2026 17:58:41 +0200 Subject: [PATCH] dadada --- images/play_button.png | Bin 4297 -> 35314 bytes main.py | 279 ++++++++++++++++++++--------------------- 2 files changed, 136 insertions(+), 143 deletions(-) diff --git a/images/play_button.png b/images/play_button.png index ea9f4b2b26aa4a3bd7aa120419de202d2f2f098d..92431af43fcd4ddcbda05af19fffd125a1677618 100644 GIT binary patch literal 35314 zcma%iV{~Rs@Mmn>p4j#ib7I?^*mj=6HIJ76HjbAdBV-R=lnnIo;~~F;&fMa zRsFj9-m1ENqm&h;kr4> zjnzljX(o=Qu5a0jR~pLdj1~E$2(%S&ICAt*V(Ih-{5T?#f1n$l4AD|4nBWt`?ps#v zxYs?)mwm55`A^dhaB!bACX`i~V}hi_^)JO2fAL)Mw$#e-OL2Ym zv)N`K=n2Hb(2KV1t^A=l!Ta0m0oTt)Zxdb<4KrNv)y^x0tY-3KWKQH8oF|c<78P+Z zK?T$f9@qEq8e(b4RI&|cyDnm?nnWVx|AcThYZt1_^%Bm0k#7av(u*??;Qc>3-mIW@ ztYvinW5N6T#WGT1LT`7$`=5k(v$N-b2qxx+^Ayq3k|6m%6*ow7i~Wzw zY>^ea#e?WSu91cZ6owOR+|IAoe`44lA7}r;^y!1C1x0lBpI+Ln%HchqK3}xgJ)48r z;3I$j1IY*Hm+~)br**_44?UoeQ$n4j6Pqc_Bq9GVxHA0T+=N+P7ews( zzX#@!4KE~C_;27jM#Ch}$^VQno2J4BdT{<{n{<tGGCt^w83?=v{!@ie(wU+q zRh~~&X*a;b`lqbm(+KLfyw{0{wa>@91s=dnm8$^hJBW|)^JR}??c;6lFwa3kdm;U%M5^|{nt~av;#rT=Sn&-&-bk*7&;;F zTl;e*3$~{4lVp?0YWnw)TY*X7fhYDdb34t=?tziu_p1xj?9Y7zA;i2t5pAtjI}1<9U96uU`}0RV$wpoGkGok1t+-k&ueLs` z$#qCfy4NC4O`mOn+wE4DW?Q~Kyz$Lf)79F3W+s0dS$N70XpvP`A=V~hVW6W_T+qu8%t}O8ISJRQ7 z$24?#KL2Y7hoaDHKZm8h(@rOTzJTZS7;difX%y}Z|IJEFS>SHQU0J@l>vnMKSYvJ(nt_ za{)hI*p8;M0ye(HJP$&`yKn z8u}gDSS3H=TPXoRw_jBEf4@vxoU&5A?xekXk81}-PhyAWS{uh!*8=eE-j*MLX4ISk>zaIg3 zUV-ueo~PjnmX{6tW&Hr5o2GTgwinM<1J9}ao`8vm!1mV|9zma(bVu*w&2`6s>yNsP zmy1`2j+<=Hz>_lA%gzHtRKNGKAAugP4_fb_mNVwhJ^N*Y#}U1{_IppG?w3Yb$F7$~ zLdQRE{S37|`0l?I~;E{a30c7o8~{u`K7~gWPFK# z=k&;Tw9~wBxSOI@W`?3xneF+wdI`eSR}S16N^dsw03CV$c^hYVYmHSzTN zmYROAmyqNI~Gr)haIEb9&==!`szqIJ1fEs(Qg`SZ5M588^p!`Xs~iQh(R& zF*DxVYGzR9XcA#z;V>_DwcH;kIWJ(CF2nUjmiMk2UvEwNMJ~5_O2`#P5n$#6Hk=lQJwx8UPb46c#y#dDw**@s@} zwLIx-?`nS5QzfoL+hw%UcfiGd>t*9ptwJ1A93GDYQC3!#@|JQ85cmgeZeH&Dl3anc}AV=;PB9gvvsk!u$}okVWy*LcS9vk@)Eatk^|RB+Jx%ztaj+j z8s4cbg|+oBYSVMQnBl`;to9^Y;=1m5%et+l8!PIee}HhOr)DNShiNW)XKnn=u~m|Y z>)BaV1I-OlZoG~LLa)nhM3|z*v1VQOKOYZ=Z8^CH$=sw5?QKmAT$xG)Raq(*<=1Ah z#34ui@<_>Y0N4J|POxz%JE*xLd)JcpaG4kg*-X48b92h&pVoIL-6G`A_e8n=UD7P< z?nXf_ygZwe_}9|RSzKC*J~gGV7)X3Z@Flxp$HGQU&5T#^lrZabMQWXM31~xkLGi%l zu2E4{C28;f04V+ao68!1S*ANX66P>_K>e88xpNZGFU@hmd{01lX8j4nS>F}hQk%{` zN6Vcq{5^XlX|oMRhQIbVJky?R`hir-@{(3z7W?wzkg|OC-`KjL5~1?#NVClZJ%=9e zWkSa`m#3k-e7`6E)&LM>g1%Ec40}`XKc#pZ`pDL@1Ht4;{60TUB~9NcO_FEMmkW zMRw5LO%hv>e=p5Sc84B%pGh8%{YpJJEG|n0gW2pWIH>%I_HM!|F=IJ@dWm=^`zSx8 zmZ<(ha}0UXEqd?nNq%BwoJGN^cIvdibM?ISDfBVw8t}I5@2l^7@q1lJs^t|5Bba5w zbK;l(v4`g z)rw<@u);@#3-XvMd{HVC|#K^iWjVup+$PE( zk@sI739~J%N+==*Pnu-;10bAX@={=Jf&%#UNj;MdYmfiE=c3)CcoYIQL&5p)$cTBz z3@9Y`P=EsJJX){9CDyE>A>jOjH}h!)lvFUVZTu({*rXInNU8*qu|G?blEp(m7pdQ+ zPB|)}TBMSv>$#*nuvZnJShiHc%7dK@3){KEK9(%Tohv5e z%J^r+(>|zf5>VRXGY7mw=HlUP#P$`|qKV%)zyNUZ%95{2)gB)l`59C9fV=w5Pje@E@?(}Zv@gH8eFi=qrNEncVG6YI&v(RHCNEq|f$AoLKn{5Sz zLg!l(?XN3!34ZtGue15510rRlLMg>D{@+qv1bM=m)5Vxai_D{Gy`i<0MQY(XBv?2} z*7$i$BmIBro}mgq72O543PCDcFT8(S71n<1jY}v_tdgHo!Qk}jRu*aIm-23s!JT*d zVNiXl8@~m3cYV8!y4ntpmu?{M!kYMlW9&S#p#Aq#5Xb!klEp(Py!0PpeYF*N+LK@e zcGve;Tw{wZh-!S@$iJb8^|r>snvZ}OZ2uW!@2iD#2D7}uU(aIIcsZm?Oc#W;R`mWB z8;yBZyp{ox2VFBRdF8DlYnm=3l}1ZK`J8#k0Wk6%dBf~w z5IZXMKHGe7nh!toH$is!GXaS8MMvMNOY{rvs`V5*S2#%J|Kx|4$ot|N>uiZJUIn5Q z;r5MpAMt*yqA|#-eG%(0rnirUUN?xHR+gt9`UCHT4Pd;DME#?fp^}Z3W;{-<=-eAh zvbphmNEl%GW_s^(0t0A2V-{Cqx|B?0XMUP^^SwqZO4S!R22{*wl@-+`d7Cr$-3D8& zKH-mcs-~%*)3hWvPBz5;No`zYq3H?1HvO??S-RqHOs<(Y?K0hw^TvW1Ksyk#Z#2%Z z+MO(1AM%dtDHL43Bp4fk`;OG({}Qpn+f0y`8@?n-t0pF#3(FYSa>?vw1vAH9^HAV8 z^Lo#aXL9#Ub1fT5O!OH<1V6yEECm0_pj2J)Gj2OSfkq%eu0fKc}b0UA%z0xXne^^hx z>^5Y0pGiB7BTJjTD3HQCpT>=du<-|UT`>otXDkfZGiSXfl%ceUYwR&epr_O zBwi+GC@dQdSwm0U9)(iflhgm4Od?VNvR$V;cWC23(MCx5Vo}WwnWRl{yz{&#<|auM zgoTNA7qbCjYJ3UCFHGB*@`Q&d=A=5?d!eD3a%AIKrHnNE*n!_WOY~!cH|s$<$q>IhIYMo04{4eSZwyh% zR9@7Z=m^nS{n~f|j3sxP_J0^}>pN?H! zLXk8Wa1b#02TrB%v+2kE_dA1z&3bN7wMj^Xfa2>LX1+Krta@ zhg;RWK+FgEL}@yjN}jp){k_EjGR7dYU zbFw5K`0#67q5&8tYqF%P_v|Gb4sh%$vOLB40UQ-;CUG-n_=$u{_*ekjEI;WKEY$KQzi5*O{mgY6LBR~da= zE$*8H6Xi|Ga7T8(< zeJc~#RWl7s8V$&k_1pJW4Iha`SRNMhNe3r-K@$hOXM1=B-$O*pDAC$6PZ)PA88J>c zcNe9T*~_2ba^;@X%At-XOMH_yA(n1*1cnfQsapoUsifHf4$h?nTQiUU^*bh;{oL0g z>l`jMO8c`z1i4C%gaJRDDOYMefIgd6S;MB!;t_yNrIY@hMp^OaX9~(Un7Q?>0m27i ztYf3`qMjd+#Sp#Vs-?V-eiO`XZ%Z)^#(&k0#~sAR#%_Q`gYn>gThc6!KlHK)Q9B;} zuZm%td{TORQclA616*!4l(3^Ev0_oT8dM5qB{llj9#fAa>qaK;0HH6rjQjtc6WE|FPrvQ zt3YPZs_C7#U@^V;!_^sf8afk$k4a}*zZh{k#?0Jx;P-a0x>Y3b8-BR(iXDvDzR%sj z&E2u~U)}Emjun*r3yiRiOU{EBLhk`{J7gp0=twCNzDXkxqoUx&o|B$GQiey#Uofp% zMw~kBh`4P20&g{4y{*_W%*TQ0pPLc7XK3f#C$!(~1c_=CUJDx>XuezjgT|!!K9Eu= zVDk2S<5##5Db;`~7E@=x#AQYEf^smgkNYDEFTm1j zyeQn0W)72>%rD?EhvT+T*xLN#i__v{k=@;C4{upFkcAFR#6MxqU1phA_7V+}IK^2T z7-76ibcb@4$fKh$pZdIDbW@vnPR(FVwhRDapZ*g>o&K##d&Iu}IImX$jAgL`NTQW6 z?S8#akpW&F5y;jxg*EoyEf`H0;u2Br(qI^CqLS1@&&F7(>Wt}_%JF#xmn3M7!eH^_ zVHqL&V`{KDZD{2=eix=9%iFZ1??5;e>S&VN9oo3^VvU*rvfsZs(#7nJ&r%VI@hPtX zEp=YtuS~{4jHSjli73XXca(w%VLde_3_(-{jA64xEcFA6z)~&|vr{K#LS3D6D{-52 zZ(R0rNJ8}PEBAu2a$>O`h}#+LM27~}QzYZmMg;K`BK3A`b-#yOf=ighh8=U|0`TGo zK;SR(;NbapzkU^2@9%19X+a7UU7r_OB{HHEd8k794=J9zuGCupYY!H9)OD#)-i<CL9=siwFSrmQzT9;6Vwtra%iaw!e8XdYQEJP!u z+^@C=c!!6l21Gz&>_N(|G%m68hRM3fO4o(3fC%!2OyIxSzVo_@08vap9dV8hR6rmh z*s%cN)RW%4^vI37kqXh_kcI0Aq4p;t5U{rOa^%JLah?m$vpV&zAz@AUoCZ85v}o^Y z$ONl;VP%xYR2;*&aZQK#r}%>pe2Ml39{nPjd7CCb5S|%7jaYZQ3U73;y~ikigzV|+ z3nJZimeXRnCc3z~QtIc;FEz7Bcdo!zO-GPUnOs47_T3)H?>GfFK*YUd>2~)JiSeh} z^?E$prIV$k&vVV;-69PhzUY>KZUqg`M}#9Tf%=K1t|^JzH8yGMe*W&5`U{b{x+o)} zn8HAQA_=R!@39f#mb44Ke#l7J7?RisAdHlQ>u*1LBP_)!X?KxJ-1xFm(7w{*Q}&1koky!o@r zIZE^PQoJl6FAH03Y3s{mm-bz6k`&d%+_^(Z^1op1za1SM#JV%2LvStm9MCFv!8Tv} z26nL96K@W>pb;~_qapYaElgdS#;2{^-|QvQ5cQWEcmZjv}z(GfqS{B zjqgHB;%1$;O+Zg&Xtx49Duo~rFlk+|hSmJE)Wp>XcIFUe7D^aE^UqK9MLJ%>o}~2b zLCBK2j&N`V_+$_gmua8T2pzp86DIj_l?UfuBryBRM zU%5mLy{r>D6w>|1COJmf}&>_x&N1>UbK+rvx!qWetGJohtJx*3>>KM||US`K_ zvr_$=Z`!igW{$yRv^*H7l46vTsc5h}UH3b9uQ6U-5RAk|qKeQO_tqAidmWOwCAy>0 z0#vUft!TU&G!O1g-(RW*D-|p+>4gOiz`)A7TWPK-sSZ&+ zjKdo%oAz2`7tsH*)=cQof(PltXgBu1S%uxgwsQ{j(H$0DM08FDtX_M*~66&281+=Y-w zCmVUCU`vD}A=vJP`h+&!w~5}zRXH_pf5ogA+6MgaXA0DBS7isFaQv9fYt@F@FX|cH zft~QE$~es}CMq~_L7n(1YODaH6u=q;qn-+lxAjPGoV646KD#q5aW8eu8{R=J zX0uG?bEJSaoxr49X78CZrSO|Ao;Ek-cefTk^M{fM@` zyORx;H9bX&XE9gC?Q6?lB-&@D)IvDnlp~fjLXQd~3|ZMrrtD`}9luzt`&Z0@>z6um zzCT61T(m%^(&ioQ3th^00+%-xmH2Np6a#Fy`-#k@Nz(B2rhUbCug!^doJXy}z2q_z zF*l&9Sk>tuVv`d*J7x%#avU7oHVE7hRq`Nlp@|{nG3913oP?^h^8sqq1I&HBHL+Zk zI~ITBm0$r4_;A%U3>>~q@$G|cU2t3t!e~J&{}zoO74$LszN{_Cad;sZ>!El=265UY zDCivo?I95%j@wI`YAImf3=kk&GFZs+4}`#3Zr_q&_4FcVQDq+TFXR*|(7Y-YaMID? z*2#H&s)pp=)eMJ!SZ|3*NPEBCD^rjPd-_OPNVK;-`$>}5Ga@!nO;u%`t*@9QGyax}O7dXG-&&|fSBj<#zDH0_9wLRs2g6yMz#C+U z^n7&d!TD7$U{Gy;U_6U2xJTBY%Ej&a;5@I_Xif}9E>gF zp#EHhP5`Qa>_KXbz0*hmN?2Z^SgvTm9;%f0Wtpq=GPIBgIzk3*3} zt3M45g8Eg>z>G&gazNWRyV^!C!!YqH#{tBJ<}c!X-R`tz-kg?hw+5CK1ApbCJOrQx zt0ji_td$9CEav?#8qors(2;{7c{*^UNZeo=sqH>mBFNvRM6A77C`N?=U-%n%o{?rD zddu#Ru}w?kHi{lC)mKzAq-dDr!zSz>6oYB6dmjVWhD3L`;K%ItdrzGvCJyf)fyBZ` z8|E|>W+}Lk!k%Cyc!wUlS4t!}wG{*-%1s-8CnxzV2-KFNJd`?4hiUOB6hahL0spQb zD-J@j`&M6wUt*3Q%t&ueX*5dqlUOXNBjoCZ*0%PPKD0=ICC(<12$Cwu=-vb&hZAwd zJI)qUJoTz5Z6a}KnOTudBt=vbh?XK(&v~RJ%*(fvDyk4f00{s>K-ETsFpGGo&)g=` zTPVZH(K@$IAG)X~kwcKNmXw<$l_>nV-8hs1M*z3rnI+f2gz*ETMNRf>Z*#(OIU%~O zq|mjcfyl&@gXGR4I&4C~IiNR(Q5o9%#qx<1ClI-(8SVzD0Y;flfen7zxMnL6XCoos z3_S`1hailF3ok9OVPYU-i&qbh%RKhu*O^5D%L#ft@~uk$6>AAmh(#xi)Js#oDgstY zK}s6*gyywZ6jkE@1Sv8nLa88b6kdh;I@1X?3gO>65)E6b7SaOs-n$CC-0{D=y}|M} zM0r_uv&eKM5kVv5X4rFod-B|6O~LrwOm~1=#ud#(vUS8B?j+uhXp*VGDKow5@nB7E zInJEkkcl8LK#?7F;r!>r;_jTY+~3+r>TH#t4&j)NVJEdx&c!kNSzwS8f=D%RvpvmW z!3WSK%XBH+k_E4}D!KNOh-DOMb&^dBAyTc-%n32OtSTfHZW6`EM~Pz=U}ggdMNZLN z6{yq&-!h`h&N(?P%Zh{nC|n?^L3a1Z16y<^P0B;e3g9i4o3SWicv8Z7tQ7P;A!+cf zaa#s{KKMAc{z9Rt2NDM#QC(hVJL_yoDfvPQ zdcA%g8ytjrJEFR@?0~J9rAXms7LvenEZ}qBhSAT9PB(XKe?7R<&>0)_7w6(I)ReM5 z#>qxtIj$e&7wfF1#8Wh*x)B!v8w!`8@Wf^MlqI=9{*XvwBN3#*G84zmpTJNp(n4*P zm3iH?CamXK9ERT^rf4s;v5%unIkNPF}?I!BrVrOJhI^ssPd%qO63F{@FC6cJ|R; zosnL2&qf2%XPXsq9>`JvM|dU5s^>Sl(pC?7_3P`h*6z-_(IDmd)8PBW9AHb_rYrQ+ z4bxU`YGX(L*}L{qKf-QZiWnr_*Z&Ke@Mhidow(;^t=Q|n+alvLH_q$wHM{<14v9bS zyQx!U#J+8TqYn5GGcH#EqB=01VJ2{c2^$w_G=d#wE!5E)EOfT?4ShAU3H+6C@j5|n zO~#(F|EhG8XLZz*^`COMz8)9*j~_{fYN2m0{QLYxvjIrmVt7H|YLWh6%2OuORu&r7 z;H%A|lOz!tnL)T84d4KuZFIYUhREMaREfG~W;tBgn&ZLp>%9D8>#1nk;L)QLYTxG^ z2+)}!cT=Ab?Q}HkUB?nGyKVZ54S+ zq`jUhEADm5?tnG)42!c0Vgch}WH)0p0a@n{k^=PRETZL8%|6-lE{#>qtfl%ZP#8Y&auI!##HObK0H#hO>DqvY=R%Shd0mp0@vwV zwL@D0T{wXsa};kouS%w?96xrB7=;&x3czSXXQM>BGm#;o23%nMfN{Fa6fL0@*r9t` zh4!+z0q@(G&waUp6pjfyG+QsQ0gp9SH%*Q#gDgEwU_I}bVsAUXh+($BH9!6nU7gEhfpU)l>RwEx`TqA`6)CJK1jR@;!}AzL>oM#0>Eao6wVMACwu zXxs1m=9rSwg5~Qh)H_PUxB#R)V4{0<80)c>LS1IJFj@u2*7DF{g>)b)xNo@-p@W1Z zU9}@{cXywK1FNf0uhkY<`y4}b2~l}p0nz=*pesxLQEX1=g(Z;(ZWfQ6E>@fZOtTUr zQTck3cvOPGpf|!tu5MQRkHpb5kl_%39XY6_2=z>j(jb2T#DEp8@{ey{>GoYgM19iM zY?OpT7)CKXM5I{*ws8kVZzfdmJZtjNsn#UT0P_{#_GjCLRp7|c6^QN7ALQV7?y9vt zU}X?Cpd^e;n&T@h?DJU4dos?l*DpXas13!FrF@L-LAQMXSDr=BK8?=`}R=y z_xZgGF-ad+GA<8h^rAqms1qN{7okE`&1pjx*L0K1bGN#xJIuANo4DNI*@DQm|C`s$ z>yc@`P(pC3eem92RqnWuROtf5pj#0@@Q@_r;v~*TAFAg%#?KHV5s}L8W0FT%Pz0TH zE9DRGD^{m-yw>@cH))WgYU#X|~2 z!nOn6edbt0&DVnA)A-@*^_A}(Y=dpciimsBONDYATi~`DJh~fGu%)CxZpHN_ERxT& z;=dB#f`8BVh3}z#JDqxXx$Z2$VY)=p%wQn zPvg_R2(xkWh`nA<((r^FFBoB=SJlqDdQ@^tuInz{AiqjDqgS}&Adw&@(j+5R{jXrr zWRoXaKoOgGtMBE&V0Oqye-Nza8qsqvN4_V-8#fT$%D|0b`p^Bu^Gf;5uylejer6xo zYBz?9U^nMd3q^tI{_6KTzQu<#6AtCix8m~aJztXHZJ#*)AE^4yH(Ji1zn(?T^TIj5 z(aWcKQA_=>zjly9b4t+kHc}`f?V6H9^969+{!c9+0O`ZPzC||RL z0YKP$Wrt(H6$|evWck4O_kpaV)!v`*d4!O`h@fpaJ=)}BMC=fcoEvBl8q3s(R!Ifrmu}p z2Sl#tW|b3U27^^k4<=(%)LE0og|kB^ivLLZv{#G%VTsZ0Ai?z5gv8rIh@6H%9?&AE zLa~OHsJdQy>O^(=bu&0HQ`DCU_w_dK^jTcuqTG%uPLRIOzs~sA@dql^ad?g~rSfTO{WWTg^0z)hi8*Dph#;QQakWTKtNLS7d6jS} zKaUq3Fvl#7YLZzMBA!*8z|PeNZ)2!N#^;E;*YTrKp|2U~75HtA6nPME3bzd6 znzBV5IFPBr_$kmW=S*E%16D?@p*OKA?Wif_Q!<`n`fY3Xv|0)x(FcKW(9*=RD!+HU zK%g7!j0X@h-3>hon_YMzDA*IJIu@ac;+s%U>$31lPFHoJA3ZxDxzxGKu;*sod%FQ{ z{*>|$6^#bRDblQOPf`0`jxh)vk~Y>4f>u{gFDDGeLMI5P5ux7BvJJ0S!pjcqNnQ zI|LCDg zECaSu`0T#mG5ieQ!O?4*ba@*j_@K-#Qy#O}6Sq0#jPziRe)r?%rWg?8NgT+oJk?8= zL_-5Xi<>wU#?Kon?Y{q`;W_HJa+K{L-sD&zmMyJgvwCP@oX-C9_l?XSLI-uj;)0p%+tDJGUc9HE}DAK{@QQTstd;S#;FIy5~50}85M;p3fFFnW4LXgq%Nf>Wnn0YJ!J zd|nj2BLt3MBZO$bs7Xa+1!3qR%8}Zcc@ktVDq`LUR^$jse<(Md-kdL}<1cpCXzzHs zza&h|_q4VNx^9xnU6hsfKe)f}hRCm8!20)o&ybG;N3^8+U1dhddyo?Sp8{b`OK(=1 znJyd+OkSU@qi4lp{2e z?BxcWRPLX{Y}|U;f{OZ~@II_>5SK(*^?BB!C}OhMUtc2qdVKGIVV-IM9-uoRU z$GL5fmCLO6+H`OSCYFlK4#>7DCD9kyxETh26~lpH(Mj>fd#^Cdpa~iHQCt2nFhFK> z=#bp8k*6UeyOKLh<5T(Acg2?=O24m4I-hbL;ac%t3$S+hmpQXe0O!f{s6lW37jeW^ zq~j|diI<`?aV?j-(>|xnRup5Sl`ADGyO@hLc!Zh zinO|pFnUMPA4?oX+8L1UA-&}(!K(0tN*odg3oyS?!SK_+*CtAJ^iG12I#eD|{|0s- zLGjS7NiU+j@US60A%}N)CxxlI7nke>@~YZzm$T8s)3TLFNq_RLEK#A?Nwh+ni76QE z965r{Zw=}OkJUsQL2Opix-U@ZO<^@QEI^luBPf%>PIbkaNI`FDQcd|DJ&8{XDfSZx z^Bzn`EJtJ*AD9Da$FsdrVz3V#)yP!h%kAuiBSLb$K=jj085@k5NZ}3^ zddWePA5Ug)@^67F++kbNwTyk6I6%ztIT_=68{Vv5_J+niH#qC(MrliE6z$ z6h%UqrZWP(RMDcv_&uv`)UGj-#YLO$wC8Ua+0PU|)gc@zv(8`~v&K7D_Bk{|XL3Bi zf8|s@k2t3HPQ^*PK-M2$U0idxKM#(%nwX2Cc?gPNFu4TP6}0KU?RKDEYZFU@zw=%b z`}RhAv(hW!%Y_B&-#Y7pfe!{4U&tFjcs$#hB)dW4Mb;LYXDf3p@2&;?Eq*M0l#0`o z8Kq??OL4J)hG+N)1h`QR#NZAc(a#ET=5y%tr^Yg+%DEApX-FYX=chW+Jh|Qq!}c)r1j*LDAzO!bC!KKj9T+j*(~P#ZAuq?F$V}4l85uz1JREcBeDFo|=<7mzJk=29KX?m-|B10X8EZ0-dO-mnQskk(Ld? z8v6!$3>*MyF^IvF3gNCXF!e!CS*7LNi$BWh8`q6Z{&hoT{U+cT{i?9 zzXfUiy|BPFXefRbNdg)&=!_aSmkcVV_*SEY0!?UcpRwyc)rSB#>&i5y8dPENs`-%nLC{{)YDbLZC-V^_w+}aW6hn=%{mk-hO~U`_(msf+?h8*unGwZFVd6n%a;>EA>yG+AL!A>+9f~JDY-XFP^jxVMl9WswHIvt!xpHDE^i&pHm zV%WX73IK?KlEHQEt*Z_wWjxdi3qf2r;m8wCBi` z5f>+pe>SzZ%jlEt$e_t)DFcVLi!f{NKlVDiKas<= zutZ@D4sG}m-RX)f(?|HD4H|D^!`RU}&l|*QH&8?h1Z&`31heR~j^O;M6W$_!OeC3+ zv+s1!r}5p%z-fG-02KK_tJhV}45knSqGM$*MaO5~`!%^%Y?l4;un5)~`}wfUS@zBQ zGtR4}+;9^^{J36Mcz54P!R0ix8@z;wNK7S_gq4toXUGjs!!_~;oH;gQ{tB@ab&vIX zl03sSzIWD}^y*+y?`qE?z*Ue&=FuqjH{@rAn+bbks8ea;pr4c3&9XrB^iKD#S>+D{ zxfsY=_X0FXV7sgU_eU?vf7KN}?Dt*2k@@X|wK4bYYVW*kfeQ&nEfE0wopGr!`K98| zi>{VXc@pH<*_SKOFe#)mE6#->=xkfAF8-$$@Og%&iPeF~NWVp0qWG%~$A$zBi#(Xd z7%jx2<(9#0u%RUcBSwC;x5fUF5yzZ{@lYmIz{J&_;aAE4r45w31}45QSHV*ViGt_N z&h@A`^C%>ku=r);l_>AMzx3|pMBR`*>O0m#T_<=AED21{U_1WGHoI&fEaxjj!P@WZ zgow|u7h1^K;*%6;CIP0nabzedh|T(|Yo00N-;6`bHzpk(ZHV-eVgna0NF33(VJ@i* zT*T_W%&L&kB|n89SI^KmTfRfYq6o-5%S!E|oH54Gh`y?o%=yPk0n{*CM!N!wZxC5M~JX!BE}TyN4Zr?n?;7 zAmx30RxZWiLWmS%3Yz&}0FXd$zonYHG)xW;-v2dJ*BdNavjm?y?IZAOa`0V)WF`yG z^Wa!EWHD6+q!18*ur76Ek?PhMt&h+XY`xeCZBC7_o_a90c74D$n#PpIQGy;NI$Owi zzCT5deo83-TdM#68ACQgh@k{5hu$pdD~FP<^aTyd<5=)2^N7(#M%fa8B$KCM13G?f zbuC;whHSFHl~y4Z8;>vC`CZ)fwR?alpBL$T20k5t6!<*JM-zZLKWXM1%s%&`@?YDk zX$Ev1ojnT6sfL{L;5v}qBlHwmvH7m;&%gKys$&kFDun`9|M8PrNef^sK-mW1MU>>3 z;mhnepP^}D(Ag+}VXEoO()Q1gu@s7Wi1KE0)4E>dvkHg4^<5+$D|c5Q1)&narZbl- zHMHweI>7K*r_3u`sv2;x{0$q@+PJz4Dx*+s*D_!f9NUE*)#&jz;Jqgtip`mB6#WFA zee}=RynHctP6Ok4+>r}lA)M1F3y5&Mu7;%|Fyzzc>nA8KNMctDSpN4vp}%`I68X*8 z`M_E^eY=AndJ=0VDudgUWCY&m&ALjoqCoRna@edRPFkhx&# za19_+lwkCx)T2kLOo;?1Dy67+Q?7VjzZ^~FB1Czh2rnqt*+6(RN=FN-fuITq1F_t< z{2KstV$f)kY&nX?Vtnq4z~?ieUkG666fPaDq)0=P9s`gb!<#olv-<#ljW0V`m<1mQ z0Tbo(o&`_U!dO+DA&Q__meW^kjxZ2e3kKj5Kl%Y00*^aXAB22Kd1xNjL}J1p6U&FM z=(xS&+`zxnZl znAGZGQ+y+iJLQ8&2c4*D^pMD;kS~-#Eu%K3I99j~;B$^ZfqZE=@<_&0fX}%Q%7-`f zA?g3`c$qigQC?DVqqM{4hX3z~*Vm|DU-$pJH*GpDpy>@)E$OWggiay(vap)1GHn3R z$;6oi;3qt8g(-hHu3Tn6<`F{b32{CeAqWj1?I2B?JxH5|*)mS~-05N{atHMIEJU|Q zDw{+!=AyQ?4n+oJNoYl)fHI^31O{{fIty7CG*j~W*PbO zSx4HGCF~`ADada7?vIjj(AAcJ7q@x4SwL-l9URAjqHc=Z$rWFq@A>wfkVGHyejEdR z8}Zbye*y$~1ip``oC=^|Ysz2%ZE=Q>Sqqvfl{Jm4ALc*t7j$o4i$ty$yT7#w?)VZS zbpeAf0owswmz`R1bPfhmT{G+c9C#{$TDRJ6-wM03UVc+sIF z7L8t@B0VCYQiI`C%HEc;DCs45>_g}x~C`g&z0gR@^yoy*f|t}M&vUmJqeK@0_AgOWD1{+?Bd&i{40xqE=+#}Ny9Sq zJsQR*O@lnFAPbl0(#O8{ZT$Goub_q-Y;UFudmO$y{6>Z-9|U938X)E%;DP`+B|r(b;^4UI8uPITaZKK)LlBfY#0&B5V2TPFyh=r79B@U$WTk_2lZfhhl` z(6c=9RV3f^14VfW3B2HSrs5}_t>`m8Z0bN!8Dd{Kerm0u6hNWjG7~e*7fbnoNe~N5 z%#F@hj}Doas1%FEXzxHD`uh5i7>c96rw8d&3PH)EP!^rbfe7ev<;)f`Nb&fQPAB=? zl*Fs0QupeJvws}fG}BC+bkazrvq)vqJklgdFHR(pNF(X0dk3^H{xTAy0}D&M4V{?3HnSTv?XnqPSe)qG?7V$_IZj>wJk)v_91$mCkGpO?UGz7UqnzXXa=eIzf3Ar#p(rh-z zv`{u^E(2e7Bsuaq5r9Y2BA-P-CxT10@SEkcBYl%i9``LEYO#{fdEjmWkH<>Bw2v=a zhx@;9Gp;ym9+oe97J-w&`o3jY*0mm=J?o?JA_;W%u0}CPpr+QL_!80qxS>HS78(4E z5_EQLgs~0knj7GAn@#glqCb^DoH|OAw=7Q&nY@ogJjcZ?jS}-H0=;WCp%zi>w;!Je zMHU7fse*A0hf~=M_Qj7r1FNX`jxUEbFD!+USgZxLaWPucHi$A>HF`@tQ^;Mqo z1+=TC?F~-}BWW@f#{f4JK_W3E{!A+jJ26J@L$4Y=VnWHbwDP&@i7=&72?E2Tpi(Nl ztns;%NI%d^Brpwy-d4!NvJanb=Mg1>d3tw1Jq4_n)G)6_xk_`j13b=O;9ob0KZ;JzyxDVeIgj3q?u!EVtVp`$Cy2WcmU`Og(pN8`0_-YSW;^ z_hk#{JIqHzL~XJr~c`_Y5cfyQ9A z3%ecK47bIH;R%5QU-P@IzVWY)(-d3!Dy1lQ0FTe-pl@n6$Yq%<;PQ&c@YPDbn9Z}h zdQE1xv4J$VapY?Zv!P4M7@qHKM0p*ql!C>FTMb&cqMyy&22q{~o%~ja{bH({O`m?_Pw?r zha z5RO0fR2T+oL3y-<$98se9Pk$iY`p8eAL1#(MaSwPL`@TTrv+oPiA+nXA_he}gPc2v zecmw@MKi>)X zx)?6bBocm=QZM<1k?~>mYyNDD-;9hAqPDiU<{D_uEB+a9kyc7!#9uA?i$nbw1U!An zRUS+}$_HkQ-barfsWK%u5=}`?-kHe?B6$%yP|Rr+Dp)DSLfNokeOP+^KVl*i23)|w zBOqNNuh=SW+RzQen-R_}y^O^eQywz;Bz!-Gp3UpAaUGA0JeGhT#dm&8NQk{@1nM6_ zI)xhUR1I~C^alCNvJPDXFXGwdf5P(KMQGVmF&J2e{E;M>rwZ5r)Nq${s}Lv$k=jNEY5?1DIYh(I z>DZMg0Cv_6-g4OCELLIjx;RYAg~N-qY#|S&6zcJe8YG=O za>*oMOF!@tqy)`i_qls=Ao@BxP!$c(*}ocxzIQjMx;#p57M`MR7;F*%((m;^{Oa}e z|L48|Pe&e=MV*lcr4)HaC~F}81F${d0xB7UVyReS&VctEOh@gjM~%`jAxooM_?PY5 zFBQXDSzQEDP)gAmBsT&og258}tJta^PoA&F000mGNklyHo|vGP>x2P$7p8Yfk!T%19gPs2#Qfx+W^Z|Si5NjR`K~Q zz^6GQ{P*Gr@p-w&p)&oOTXWT6+aokvY+>%{cmZkd#oFNmjj)N zA>LO&^Q2u-J9#P$Y|>V6U~xAEe_0&)@;K{9YT@ZB_OsYC!gd?VXu<&e21*0mHFa$> zFL@3_kc*&y6OWy4Ej0T@oG2UysZt2_V4NbTK}_AR2|MrC3c0j$xnl?|FtDqt9qO|P z%|!xyKCG^)g6jlmYPGO8pC=PuKNN!!Isjy$4DDC8(JRYhw^swevBb9cPI(MSLTE50 z9r;zXg{0!IN*tMwDuG8ip!oW?;M)L~Z8S-r(SjZ=LL+qYnZjD(J?cgfbzNw&8XM(E z$OK#Od`c;)8YPG*0@9?@7%Gh#rce0X?PRs}fe}Mz+$f?k8;Um_`@U^=oG|wY95?H|c>hU;?d2>MdK(q z8Kk@vZ0S$=91{uea3b=0!jLxxx@MwblQ#{eG{AgYTNko){DD3fy_;i*_cb9sFp-D* zy|CX-$Kr$UoP+nj?K7zJ8E``p`29A5tczWCKLCi;Ab=(v!{7oG7k3gz=uZIv+ve_P zu@A?vpT(-cGn9=PizV`7JNyy;JP+?Y`~#?QThP-U2MX-NxAi_Z0gtdXX?WD7xxbY02>K=Orr-qVy&E_7HmYG2YE zHCiE|Sj1jc%;n?8_jv>hC=dC9pmp~cw3~xx(sT-LdvsUnYuQE;h*w8r z7UJ1%Ox&j)wYw@5ng&p4VDLpYAyYkoB9CTyD-EB!tVPH68EjTyBcCWDYF9IkV*rf` z*XE)?k`S&fXnD8BDQBO30WP@ai@5rZ@8bFgeucaL_yX?u&C|I4`+vdQ8}G$&=Uk5? zJ~W-rCAHAmdTe@e0JUZu-u15kMc`YcrlH8L3IGLwCqWphp4ss0uvU(Sp-Zuk4pdkl z{xF*_vNQDrH-dxT@-`GR218v*aE(F@chDeTq#Og@=MAi*e_3uhTF zkL2knjP|eu7>Mr$%12-o;MqCktt5OW2csC6bV3^zyZKO5vqk4&#ImemDH=ulh!+Oo z#|n_YY@AkuC^~rrx`2RNhT;m!UQjIAFtAwmavm%mVxm>mv@F?BfTf8r8vxn{oCx-P z%VF4^7&mn<)Q#Vb)T)r?E?Q)}30Gsy-DU#UgDS*3vnUN&(8Vh3xz|C^mV}mqqbzW8 zSR`32l%O?8KY-zTQJXwfX$8JJ0Qigtc4aH%nb0Snk%+|}hR4bP7LVR?IEYQfGJtr48Y?X#Cb^*{7^z_0<1D&e_sa--Xh~q zTG-)D{wnhl14isE#Vx)x%r`d+>1QcRJPoQSZ;z$p=s?UgI+TW~&>ec1Eovx=M5AM? zj|xJAyi^msl-<@`sFsnzoG&bMcBZ1Z5Ogm|%e@Q?`3Q6oei(>FSdQk6y$?^$r^beB z9PUu;T_VIt1&hx^QB+qo0QB&p@_D@TAOUUr4o_AQL`yCrJghi;{&M{Q7PleGc<{M{ zCK)Wh*^9D;f@mD0_0gk6 zXoQYyXHxVv16e&(sC_oQoM#itQWleqZ|JKqO#5Xtw-#%-J)A}OQDG4J+|_(tf@hWB z)Vk1goI-}rDkE%3>T!^yj*W;L3;za1nzw_DQ`kJ7YC4|HOBRPaox>xc!+^Az*EAeQ z(s&A5^gzVwssP2HQzR-*Ysibxw#X0o5thjVxBwt@@_xbgfs zxcr2X`mWIn+x!H6AMqlF$$I z3r@IzY4YwkTu3YhK$CZiDVQSsc-(z8ZKbJ8gfeN!g-_V{CjDrtbnB@p4h(r0(_jnd z!#VEmw$jQPE@BivdK77eq?T<)K`HLrJUuHqUsyT(BSO-$!=-W}ir7|^DezYX{1Gr2 z`I@q5@~fz9F}R|087es-49EC9N@e{F@`k&F#hndwb_Qk`EH?9Udq=+lcT7u8lQ9Li z&SC#NGKDl0&#IOQz)L^a5_|zWn+T6ygrcKr1)1CT@~D=-n2iF$3Z(&wWVwA+K)_BU zgYZKhK{}3AMf#*+07K^oX@NYqjBi18eI5D}3B2e1{{xhKKz4BMzKjx(6fDy0Ua<@- zpZXiR);*8@jwR^c@B(_<7a|L*4i16Fa6YiZ60PQy95!=b(vd+c=x zGW`mvULQ(12rM!~KFZJa3Kka&T~a(jc%%a;n=T5?j7Is)V?urqlu*hfq39D@0+_p} z9Dz$L;|+ea0fTwlP@bCnLNoZvrC0un4~x7i0Bo%-2lS30$Y2yddK77er1k@pYuPnQ zF~c7wD6cHo@}bSQ3s_M8!ag!6-sX3W$RVbl5`zF zOJw$iwk)e&liiUU$(I^mo_lF>$!!ZrPX&NPf}{*agdf(0>F^H&5h3UuVRV$808~17 z%+e)|8ty!$WC6$$KF3KgiqkOoz@tblFD9y$i&Xaz>UAxeR6V?8iNUAA*I+2w9*TB} zD8S>+>04|gnL^g^d7=i5wUfwZ4V};C7$A^8TKae>1qJ#p?W#CH)WGY1m;zAZbDK#5 z-XP+=t63i6d$wv6RS_qg@>xLo+pH!nUore`3%WD6IFt+`gr~7PkGnO|3FzVb!W=JpJVnK5LzM+w7}%M+ zZ;WAX=M`+@k{vQbU5Qh3Ie;cj5l0x++|3;hk-wT3&{pE?iaR3MOBqewY#U_!8-d~c z!e5yNUhyGMTqv}*p_n?_(u&#{ux%0X6@9n8sJDISYmDq0=c=+~kZs&3Iv0%*uu?b= zILzn(6ed(Wi~I(Jd|#PL-Maq`xo)uFW!g;ZoL8bUUw~i^Q)gB=0;E#se$6zT*bLt0s#+eKd?@ZznwKQnOFQGwiT5V7GF=Q=vxR;9$L{$Sj%i*y#m6Xq^eEB_ zN!3?Z+m3d0z~@23rPa3z5E!-wN+Zw#L@8WQxkG?T0H6Yd3VLOV;riD|g{EQX8B)x_CSk0ZNHCBacJBC^Y|NOuH5m%ix9haSU0)FwpSFrx^zXPcZRIZ5L z$6g+xB07ctF zf{hTmf)W=!%LR&D_(}|Z%W-Kx@bpoFWe2dtKZ^+{D-W$oaOg)>h`=r?%4xw^3ced~ z27|n1^k6N#Yw@UuQT*spq!p4f-k?@W!P0z?hoOTS00F@-jmO{ct0=4rbHhIjiZHiz zI+70?Uj4^FL@1;D`%*tnfe}DxZ4K$h+lD6}000mGNkl#ouU)<16D6|qz9hrL|^UHOLnG(A?tinXLy;{OLD%@Xp(C*3lorL)To5KmX!qu;fyy zmWxqs2Bp{#ip~H^?jVXp&K|_LJzJ3R6L5ko+Mj+LzrFLTxa7o7;MS`y#e&EGj5K%3 znpzL>d^b7=`mlLZ7YeBoWcODFyaOu2i8!zvja)v>-LZs-m4{tQqRQuDkcz{L4H4y{3dTk6GDLhCvw6>;WtqOB=un08OJ> z!w{Z4zETMI0$YqP|F*KHrw?6Sec0UDhqjJ(tQlB~m5CKtKC}jl`&MJgz$&aSu1B)2 zA9_j_ReL7UbYKxv4vS#wVb!SHLm^!~g!P$?Sk=7@$U9y7?L;+Qn41??MFBc9-b zl272RhwcwYTcO^;9ba*!H#|@k=||J{ZiV~{h$imt-@4^yJpb26(89}}#@afh_!?#) z7sv9B6J4buoT?@8`A#@PS z*R-R%KaP%#J?PpPhg0BjHlv{vB{W)9u&FcA)3$)x28^NyXu^U4w>;iXBZ#ryVjZ|x zc+m8-YPT7MwB}-=VA}!meD=3c4dXXpXwXHm&;X_C71qGW0XI_{pgac2Yh3Ak~YwM76NQ2DnT<)EE)~a{KF|(4)s?qv0@v(qyfP;43!~) zGU!cqVehw0!;Ete!i)=##7Aep8%NH3CyqPw?Kt6rcjIGczZV}rKgH{Msz}?b=XXmiKe2jIkW55e*09?ZE9z{k&g3qF4KVK`>ayK%&)55~bC-kI1H|9k4& z*zW`Q;PeBq*Lx?R-`jxh>~gFdcnj)<&*4i1nKmp{;)rmUk^eKiY7}hj+t?XT2TA&v^&-Ic!&?O#%r9 zr^pzws{m-yDq{Q|8WZ=g$M^$k(6mnk&Q5vw6BF=Thv1Fp?%UXpL2DyC#s;`UM|c9T zm8P~-NP|Dy_|*U}gbaPmD4#Suf_3C8{561U+c4bW6n97q5!6IlkW0i+@9dBLc0HEQ zt~+ysn}mk?sXSeH)B|_%h+#erH|D~!90-?kIp-)#MYS5jD1U_4Q6(9*lu_D{aSK{o zR1#C}42r>`3>c6IKZcS8RF(-#Tm7&fw#HUXFVB*|NX6FuUr!zZoN9$wQ-JEp1)!-H zYQiAwsR@|LN#t63;I;Phd8!-PnoaQQ2I0q2C?N%!i*^a1MK&HiNeRBv1fMr-4|ykp zOr#GVoUuEOId=~nfB6A8<<__3lrO#&$6US--gWjQ95#DA4*qx(_IiH}#vd3Ux^o)# z#58nk9$rHRx#}eP%x2_j6DT$&FcfJ=pS235ahovy;1c%#Pz`2W{dRofa|hsECr?0R z&t4?zH)HAGS|r^pY9>{4x1$rHhI)@ef-#_e=#MDyc67oXEqH3hi&(U26*d&s!k;jN zY46cE>GKET)T`c(-9O+Ux=S2|hCw7SfE@osxLewMp>K)-Ur`p3sVZUb5ABV&oVYLE zIcsmc>#RNT_A{p7{TJ?p4_&bvj=6R>eB|oAF#Xo|;j>r01(=jae=vxwTSAf-Hi4oM z$?ELQN8TO-J``I@1rN2=btq)xh*~ie6LpwS{Q(?x(2dx; zeilwV>}vR_25jc(q`svF+E(znaK&QPkpH}huRVASa1{Wq@0h4^doao$J<9ZeI6&1v zJ|0&fFwg{=id9B(0aXKt@+AxA>^Dvq^&_@ z>>*^F0eDpjc##D1NT9@LC`CacwhJ)~y&$A#C}#)-cnILpct!4nc1sCW)94VbDWt19 z5RbMY!3&aPRXh6idJJGA5)8DY?m^Cu!;9sJJc@1}8I^*m_K{O*q*VgN2>Gnau-_n3 zsv8O2iBzl|78i{Phq~My55@84ycfsJ+8=wqvks+b8i5l)X`3(zcq|r~eLmCXOdPFy z)p9HtL{ssB>2Jr;bC19Q|GNtpp*)7{O-OSQDMaG%=-kGklj{NkQ$T^oRTBh=^8I8M zN$5roDYp}SYAuGGHVno#5*siOT@#|;S;Mx~@ap35BUw1L8djABIVi~^L8!oO_z_ux z&s1-^@D2_;dxwnHFqH=17(*Gi#ehFbHx(pR*?VIo3;Y@ z>~E7=DU(Gplc1V?N*iEX?F{M@Rtko@pn(Gf5g-giDo7c~$5s|1x&(I#x$QM$q3t(&R^FCNd?0!LvHfu>)!;I3ur@iEpl8S6zyUu8x|K_3IL-OECX19Dmk|1dn1hMM~^Bs z60-||6?h(^u8n}kCexsQB9lnN6b&r?X>MplK*uY11t_H;%JjLa2_(-h6x5vX=*eJV=_$h z99Dwyi!h!KvdOhS0-cW{Qmla+RHK;o;c5$vU-%Lj)UCzEfbImtqp0R2#i9pgTky$$ ziAPIuM%Quy%ImP~s4Uf=M1-ls0JeMs>qjVe6h-iqU^Evlhrt&^fpkk= z0N0JNzfJjV_%d#xQhmxp{ zRdYRdpgav_Jh+a@IZAh8ls|fu>A|V0R<`Z%9di;kjqNcYYpScUVNC~Ip296EshIXK zVcZ0s!y93Y389n)t*IWawo0jxEooCqL8C;-U^|i04}3SDJZ2$S<x{v?+m9l!qM!gl;Ru~`LvlTjsp?ElJVSu zRhSwmr3f2FIRIg(Gf+>Uy%aRt970l-41+R+O}d(My6j;QLSvW~sB?}DEKQmg$4c9_ zp_ngl!HIQvbQ6w#*O{1HcR0OnSK6h43kCUO4qQe8B%lz-KbHRn*`Nol zlUk8W7f~H);_Yb(r7Ra=Ur}!wQ6~afK$KD$hH4(8{L!OKk1MkkWHK34RaL>~>LEuc zmqKW+CT%M>qS~s5Yhsu-X;&orhoERoD-1k~w^9cAe33_*LYTL0m+T3P+XqHzu8f){ zaS)gY3?cwi1ThFy5P?AQQg7&70$(Y}O{k%3*#Qvo%Wx(2B(D+iEI7VJBLY^Sp#wU< zvBQo>hX;CDJcJ z=7#dgzkwz{R-l*%p-4|dla9k@D%-bNw!^YEfV@vtD1SH-fyf(HXjX0u0@#kvQ%i=F z0u=Kl6mnVAL|X9Scb|(|yp;?8M9u>q*%REQOPq)Okbs8`Si1SQ*wp_5VvRsmQ#Gt; z4WgDArgu3nIXW` z)?M)IV=uri#88C>*hL2i?sYKWDFh`04uES#P!)-xn#zdS5xRl}G4l3;qVr(n!vH}D zi#3`K#e}A%$1!gsY$HdII)WP@J17{|1%yuoU|AtFdbz)5pW!mcfB_-0C_1h-(iHHA zHdP+V!N?+MK)^l-A#)2I62|aHaU92h?!JQx000mGNkl~nUKmgoCm7*MlUI>R z=t-)1^i-ra%rRsfluyY#g8Yj<2t}Ria4dP-hLqyLkwu(iEv-=%jUu1Tp;%1QA|8Ci z0mR{I+4(l}__+?5U>P1;^c^f+_b?(=IqZMn9!PPFtLqTNqgeLjS~SL5V3VF>8@_AJ zA;OC@-?P@+b#4Zu{Gp0Rm!dZ=UmA)h;RQY-5`cV&k2zInuAYFE3)`^a#V%9_O>h~E zP0?}KdE&09uWbPDBOoi8&l@Sp`wYxNuEYRP+YKVT#ofA$09F9HMZoz2KyhvqnHpeg zXJTFxiq+!W1x$H5KDs#P@&UzQA(YUh zb1S+{2$^3%w^3p0ht3=J!hs)D6_3_7}vEhCGKL}?d8~5ECg^OB|J9&Zgly-p#@){ zepVrY7t!ng1Akp~9e(%t6-bnxN3Pg`z4zJ~nRpsiZXHi9wdi^=j=mL1Ol{c-eyIo_ z1@i8}cpB++VK9|-C^5GFyy3j~;TtBhHGxQ?&dOx-up zUjZo_PO*w`F?sxCOlh6UbPAekn-R5Q(6UPNAW_R5QS$!`754e(dh2!7D_=n_9zsyb z%GWfi1wN!g2Zqk!LoqdU67f_;zD8g%ulamy=*))BEPV{UP|-xn7|`oODAq~d(DA`B zQr4VT=<*B*hX{&$|7@W&To-tO$hH&-d04kixQ8ait+{Irkttw^$VY zBBG9q0s}RdE3Vn??RzIN${#(-^xzkZrEd94yNNis9>cb&5U$ukPGLg*G}Kv5_}a~P zLFFA(+jS^pN)$4NDHEq+uif{?9=q;|ou}@CsgtH*>f~wIZI|7*8}{01PYCvzx;N8( zvDdWyh`mC*H18hRW2e1{eYRk)Y5TCxe%PDo0h9N}0h9N{0aJDlvH#Rvu^;pMP2B_g z5_?VC1AB4&p6t8lPWxbYVz-_5LWo@?-H-V)cHe0~whv?HS4pLA1Uv1IJ<0F>Q+LOK zob!MwdytQPi2XSK0oZ5qA=qomTe0WVgR#f71F_pqg8i^N=iYsn-LO0LD%guU*prZS zuW5Tiu+P-Ju+P+ehH(J)nQ{?@*lqt>Fci&wwZR%9) zG-X%3?JbA%WHlap?7lyyO`C#U_pZUTJq=o?c{t$E$vE&W`(w(~ozdJf4t+!Y$YoOW zMGa@L7I$8DKlZ5KnWwY>vDzqK_hjMNF}S`9l`J4?#}=RX)1Uen<QDI#5L`3p+xb2E>pkq-###xh5U21@xjvTG8mXhNEO+Zta zO1>4%HsOrJI9t#frp-3{a9oo!o-`()#h%1|L|8Y0G+Q~x#89S2XCnKw4r3zgB|lO( zVYq(lRPtMayfky}7NXf6&v^tBm9vy1WPe?}swPpE7DP-PCN}Pj8oL=Swc}CaM$y{Tz*ANg zY9leIf{kj`3_opQQuWT564@Oap6SLHFS-L0BRq}qS+KUc4vBOE(dsJrJRv3GIb@Uh zbg8js?I_1zNKS{pqx_@Y#;h9h5%lMflNYs?$9T*j;%LPD75#}B{! zd$d12fV#{?)aR$5IyDYW-ZYF?JEOKR2@U>aGDw4gLA^JLn2376m1qf3=Z{03*NR$yB5Fya*02xr z_3U38OeLMEs0Q0jYshCyaVnbGzabb0>04{2pq71Qj)q_Yn*8xw5Y8_=yb9_$@5|r` zy$Pr_1jeIQV8)|H<_Vfn8#JN8G?%e8J8Eqp4xjB3gia(9nC`+`YU2jn z(|J?nLC0+5{1Ob$>?)%$sdgv4W#@Mwxu%Fef9G-BcFBGC#?{}%w{Q6g?z-k%xc##G zaMyL;!9CYMgnMovBn|OB-1`NVuX_;pT=x*}yY73q=lU}49m%u(ZnoXS^c&YcNO})K z(z~zyF7Eomcd>PP?@d3#eK-C9_ulY*f^%NQoDcAkieHZ0E58<1fQ}6)!7TND6Pb0YN`UlC+cemhP>h50BDC2vORCF_fd#DrP zYiry~y^r9YFMJzid~-M*DSw-~d=Pij4npfb@+c4+grI)zC!hC`RtU;_?-#z0d#?LF z?xL*sa@;-Fe}{G)*%NO?1ltPg5 z;vPybY=`&@Np6=QJax&E%(VKceZjK6^-fA7pYzd^O2UuYaH0-ut~A;d;bn5zwRvys z(Qq(!soIw-)D%P$4P2$DkX$Rq2RorAJs#Bp?vT|Xq}1MNNDHQBJE9q??$4s`z+9@`4GdWxrbX3)@Fh_Lcgu zj$^9XCq_PEtgn(X)4KFz)Mh3@(z-O$)MV6=-^S!*G%&3hntmjX#%qi#*1$<>uhdR3v)o4V6)q)At zQ_;+41t%Xxy>1FoXE(FYIJP&V-j=kCIz0|`9MfQpXPeZGM*7h^^D{d~TXROe9{Oj&~y%@hNf<}8IIQQGaZJat-0ZT< zRCs8zCWJgm+G24|mdj}?<($ap%t^0_=E!6Snn-(VH1c^;(9C+_Qy}xc5-sFe@XGqI ze{>Sc&swc7OB?t+JAzkh-@0x*pZ$c^2xP9UF*2|4`D$oX<7waVpUq2L|Mvt46+8k zBC~A1=r00!ADP}b?1DzXQ`^Sw-f?rEd#;4-_}Okjr~vcHMUSu9Yqz}*>3wqb=VRRk zw5nR9hf?U++=-reKQe_ZN<5+_lS#zmapd!P$X|1lG{apo$Md-S4Vq%Eh!GSdpD&?M z7)Cxz#L>NVfkLI zEtN_ko-JUAdKL`w)za(1P$mzdkxnHrf>+KnQa_TWl5q$|%3_nyX0*>pDs>|mp_k=J zO6(wz{0NGqMBLP0w0d>_c8tG}^mYrvkUD=(pZ|~5k(No{>Kn{Y>RQ{$U8{zx zZXKGf8svN8@c914P&rQCgQ8IjJcsA{lQ79FuZn?yX^2D~K_UwyX*`1UIUkEA2@l4_np zoMZqy1mL6$p@^4KH?85OLHu(XVZG3>IL`=1=Gi(G`A1-71KQb#lofRnBnmLZ)~Vz{ z+X-Ha?nr$=drJQim}HT59YG#oU>W*`wEOfM@fVwqM^3>9GDSFn4deqv^A@VS2y)#0 zI{M-txNQD1b?vjyCh5Z4{j2|JhV4*s@sg){Z(6aUE9x}tx?#!M-Pio}#jiN)Gp3=( zLrYenv8Yj(GkpH@&?M(@+FQ_Aw9vq#LPJ3@wNRgPLNw%E$O<-s zrec(1qUARBX&@TeNBWJ7k+eFcIjHe;hM>x8J!xoF5o&>-n+pfSria>K}%(*~9s znU_>hn;|`-UXXV9Y*I!;igG0#OiV^GCH~r&nuuWplZPT0!K6VKt#KF4nJ8r}qb?gE z?=MGf#^p0<8PZ-){zlNu{^JJ8!+?v4HeFZ)000R`Nklucmyq^*N~4< zS7pc?uS9(&f~_I#QkJxlI({{Tx@X%Kd(bXoi$<}9ysX}8eh9*L6Qb)N) zAhL#II8JEQWGwoXLJjR+Pn$H*235TQBAxkVgRAIb&hEc(<)*jKU$gO;XIHkLGJjS3tf!W)p7rSS%TIlL(TdML zyKKX!{`TDRk39O^ijO?@+_GaITe#x*zb{yJ@}tkKIPY%@mRVs}c@b$`_Uy9tS3kYH?aHT?uDkr1rRy$zX8HOH zo?5Fl>N@B2Le^Lzg9`{A8)X5J@ikgp@j3R_go)vjkoy4$)s^@XKlMHQ}>OSLMT>o=YC zE(&T!DOn<*tu`CQPq@qbl)(H(UPy$%ykF4HY%3Au(OSoq3}rFu1SLu)XTBZEWbGz) zORVpDwIVe?izI!5;c0WsagaL9hzfdR5pZeP=;0OaB7u@)-q{kUw%WceGardk ztxb7o8S2feL(N%k{K zXvV%gbL*tf&2>>}!EH{GAt*7N0C7`U^aieGe^qe++z9a)9 zj9g%Bzf37KzM&7E=z3&k&}bjzTBin@C;;DU?X?rjJGdM4Ub(mR2_MAd zG#s+34DZ>%N-VHo-EFD|O|MUy`V6RRymfo*LhZp_Z0vdru=LDeJjBawqr6?9n0Mt` zh~fgW<+}Mb$DCn`0YVd`rDm#e68>U8h0U$wFP1&QF$~teg=(^TR3@HwottT4`SC=| zVRi@E@HWysZ!!r~a*kFQk7pA}CTC1=B}7C+2( zocDhIQgRs^FBw$%4t{N2E%&&Ow5!7grbAVQDsnrxJK1 z$?}qE9vdyrHRiV{uwL;!s|ocvx+32@+*GpFW^~hHCMF~%4N<|f_gBg}^wo1(dFp?4 zsi~nk^&H&_F4Ej#GBxOx!j&IXxbbQsv!|$EG9uX6u7P?xl54uM2fj_M5%(#G+_wy~4$J6IGdZDjuiwf+On|Rfb2Z3{Ch^iU)U~!|x z!nM9kZD3jy|N3U7oXf1HGnUS|%7dt?4I?lg4T$QPn+8x2*HiPNM-7h4O_eyml=V@C zN(BOnB9wWmD}9y#$|Ra|YNaxJjpX*70*D`8(CWv9nr|o>8B^3n_60J?=dV@c{8H@; zZmF&ZMI4TfL5>3Lw>!Bc>ph~JV_m^0c#ysFFDdK0QjG&V$_?<|<1|Yj`+{O}bS&E_ zX8Dm#1A6_-18+55tM+P%t7J4dtABHnsqRYtTu~#Djal9+a5xN*I?VR{H!wUfVhIIy zKwmgB_U@pZ-6Prl&j@yFV(hCM|M}gQ@p2!?xzF?SlI^Il{F~>izJK<-tTpfK9{meB z??uqZJ{Pw?I~G^8V=u1V+4Gd}Pekw|Yt`$gpvSiUFCU^m_H@}-=hC=kW}ol*LXO*M zr-~0J(o;xZXO#RTJ#rK+pzcR>`yUxW{Lqi?JTe@Tvl-Y@(wG<<<_n8o3Qs7E#5?`k z1k`kDeZzx;r2Jer6F+pU8Rjj!)Dxy0Pe*v&`sGklxm~eFf-l>o?_I~A6wC=6xm6SZJmv^-mza#tM*o~?kL|hrN*=CiZk2L#6VX6McIL{QF zKjKkYycVc?SkV-77cq(cI9x-NJ*6U6bQWCpa`$q{I)Q{~WfAohyp!q_vLL(8a=vO! zoHiy-2jjMp?>?-Mpiw24kX0#hVLy|X)gk-cU%)*R_;ZAfVB!#TRqu6bot!dJoCy5^ zQ3r~?^NhA*lBXd@2L}jxPQM-G;Nakl9I2cf#P^>b4mUf#fkzxZ!~f%N+`q=={}02R B&n5r> literal 4297 zcma)=S2!C0*T++ zPZI#Rp>3dJqDCYV2?WCS_I3kSGG`dPzrVk;vvYiWe0X?xb#--mdOCh+Hg#^^xvn-- zo7SHPk9HJ|HkC@XR>*c#ZcX;A41@LMBXCRD7t$P#^7l%o`M~cgh{@!5y^9g zCYsB3zV|8iH_w}3nVTFpy9Y321w7*iMCpsb)gOjya)qn&)r?AhK}JTZOJwzfhqjE1 zY9-6tC98f(X8Ku8|LUkn3We+N$J;0eKNYnV;&G7SO>bfSQB|4~6Z*YNv$^%7wT>-0Stv2`fwKxvSR|LPJ+}{(_l={4v+~2LoOC@p zK$wwi*mJ!AMd7Caz}QyO?&&Og6?S^LJF@w1aj#}(2et999}bc3Tk}oL6@~}jPe>K= zG2?p;0fl%9yf5ZOd|A%q<;Ex)6jGdt8PwBGYwX^Q&28dF4 zv$AwHf)8vRV)%%6xi!SXnOF*oB6rihX&#z6*6>Zv{-9D#o!9bMqS+``vX~L@FCJTF z{Avk)G|>|o*AnhhZQ^LJiB|QNi_%WT7NBB!g&1|*O{Gg@QheOGX*ygN7OVQl#g@(y zq9(K4cI-f{5c?C5bwd6GpoejX6gJ4=6UOr2)`-JsKXZQLz>zb zzpmA&RuJO?GAlv!mBU!OE^{0$fdcbZgc_~|qD9;Txl_a6!?PEagFw_x_TkKor67sD zXPDUsEsc6{ydNt>LUx zB$u#NuPb+A=D)}dG0qsrM4->x%Jm=RYyEw)7f3ighHIGQsY5}sc@hs>h|RiSdsBx0 zJ!+|37jiY!;_}<2l9H$BmQRqc%hK|R7=gY>W7$(IvwwL9L-n>0`;uW8jkK_k#mCha zC6wB{Hmuqk7uI;|AMn)=1oJxBZk~v0<~t&6J3dMUJK

!QXtX!yoMg1RKFD!f!jU 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 e$-AGD2x# diff --git a/main.py b/main.py index 3be9813..6d148c3 100644 --- a/main.py +++ b/main.py @@ -15,7 +15,7 @@ GROUND_Y = HEIGHT - 60 FPS = 60 -BACKGROUND = pygame.image.load("images/back.png") +BACKGROUND = pygame.image.load("images/back_main.jpg") BACKGROUND = pygame.transform.scale(BACKGROUND, (WIDTH, HEIGHT)) BACK_MAIN = pygame.image.load("images/back_main.jpg") BACK_MAIN = pygame.transform.scale(BACK_MAIN, (WIDTH, HEIGHT)) @@ -195,30 +195,36 @@ knight = Player( ) door_image = pygame.image.load("images/door.png") -door_image = pygame.transform.scale(door_image, (int(door_image.get_width() * 3), int(door_image.get_height() * 3))) +door_image = pygame.transform.scale(door_image,(int(door_image.get_width() * 3), int(door_image.get_height() * 3))) -door_rect = door_image.get_rect(center=(WIDTH//2, GROUND_Y - door_image.get_height()//2)) +DOOR_POSITIONS = { + 1: (100, GROUND_Y - 645), + 2: (1800, GROUND_Y-565), + 3: (1550,GROUND_Y-525), + 4: (50, GROUND_Y - 725), + 5: (900, GROUND_Y - 685), + 6: (200,GROUND_Y-625), + 7: (1700, GROUND_Y - 745), + 8: (1300, GROUND_Y - 875) + } +door_rect = door_image.get_rect(center=(WIDTH//2, GROUND_Y)) def place_door_for_level(lvl): - """Разместить дверь на одной из платформ уровня (предпочтительно над землёй, ближе к центру).""" global door_rect - plats = build_platform_rects(lvl) - if not plats: - door_rect = door_image.get_rect(center=(WIDTH//2, GROUND_Y - door_image.get_height()//2)) - return - candidates = [p for p in plats if p.top < GROUND_Y - 10] - if not candidates: - candidates = plats - - candidates.sort(key=lambda p: abs(p.centerx - WIDTH//2)) - chosen = candidates[0] - - door_rect = door_image.get_rect(midbottom=(chosen.centerx, chosen.top)) - + if lvl in DOOR_POSITIONS: + x, y = DOOR_POSITIONS[lvl] + door_rect = door_image.get_rect(midbottom=(x, y)) + else: + door_rect = door_image.get_rect(center=(WIDTH // 2, GROUND_Y - door_image.get_height() // 2)) door_rect.clamp_ip(pygame.Rect(0, 0, WIDTH, HEIGHT)) -button_play = pygame.image.load("images/play_button.png") -button_rect = button_play.get_rect(center=(500, 400)) +button_play = pygame.image.load("images/play_button.png").convert_alpha() +button_play.set_colorkey((0,0,0)) +button_play = pygame.transform.scale( + button_play, + (int(button_play.get_width() * 2.5), int(button_play.get_height() * 2.5)) +) +button_rect = button_play.get_rect(center=(WIDTH // 2, HEIGHT // 2)) buttonlvl1 = pygame.image.load("images/button_lvl/F1.png") buttonlvl2 = pygame.image.load("images/button_lvl/F2.png") @@ -322,143 +328,132 @@ PLATFORM_IMAGES = { LEVEL_BLOCKS = { 1: [ - ("dirt_big", (80, GROUND_Y)), - ("grass_smol",(220, GROUND_Y - 120)), - ("dirt_smol", (360, GROUND_Y - 200)), - ("sand_smol", (500, GROUND_Y - 260)), - ("ice_smol", (640, GROUND_Y - 320)), - ("grass_big", (780, GROUND_Y - 80)), - ("sand_big", (920, GROUND_Y)), - ("dirt_smol", (1060, GROUND_Y - 240)), - ("grass_smol",(1200, GROUND_Y - 140)), - ("ice_big", (1340, GROUND_Y)), - ("dirt_big", (1480, GROUND_Y - 60)), - ("sand_smol", (1620, GROUND_Y - 200)), - ("grass_smol",(1760, GROUND_Y - 280)), - ("ice_smol", (1000, GROUND_Y - 420)), - ("dirt_smol", (400, GROUND_Y - 360)), + ("dirt_big", (100, GROUND_Y-120)), + ("grass_smol",(400, GROUND_Y-180)), + ("grass_big", (700, GROUND_Y - 240)), + ("sand_smol", (1000, GROUND_Y - 300)), + ("ice_smol", (1300, GROUND_Y - 360)), + ("grass_big", (1600, GROUND_Y - 220)), + ("sand_big", (1800, GROUND_Y - 340)), + ("dirt_smol", (1600, GROUND_Y - 460)), + ("grass_smol",(1800, GROUND_Y - 580)), + ("ice_big", (1600, GROUND_Y- 700)), + ("dirt_big", (1200, GROUND_Y - 700)), + ("sand_smol", (900, GROUND_Y - 700)), + ("grass_smol",(600, GROUND_Y - 700)), + ("ice_smol", (250, GROUND_Y - 520)), + ("dirt_smol", (100, GROUND_Y - 620)), ], 2: [ - ("sand_big", (120, GROUND_Y)), - ("dirt_smol", (260, GROUND_Y - 160)), - ("grass_smol",(400, GROUND_Y - 120)), - ("ice_smol", (540, GROUND_Y - 300)), - ("dirt_big", (680, GROUND_Y - 40)), - ("sand_smol", (820, GROUND_Y - 220)), - ("grass_big", (960, GROUND_Y)), - ("ice_big", (1100, GROUND_Y - 20)), - ("dirt_smol", (1240, GROUND_Y - 260)), - ("sand_smol", (1380, GROUND_Y - 320)), - ("grass_smol",(1520, GROUND_Y - 180)), - ("dirt_big", (1660, GROUND_Y - 80)), - ("ice_smol", (1800, GROUND_Y - 360)), - ("grass_smol",(900, GROUND_Y - 420)), - ("dirt_smol", (520, GROUND_Y - 360)), + ("dirt_big",(100,GROUND_Y-100)), + ("grass_smol",(400,GROUND_Y-240)), + ("grass_smol",(600,GROUND_Y-380)), + ("sand_smol",(400,GROUND_Y-520)), + ("grass_big",(100,GROUND_Y-660)), + ("sand_smol",(400,GROUND_Y-720)), + ("sand_big",(600,GROUND_Y-720)), + ("sand_smol",(480,GROUND_Y-720)), + ("sand_big",(1000,GROUND_Y-420)), + ("dirt_smol",(1300,GROUND_Y-220)), + ("grass_smol",(1500,GROUND_Y-360)), + ("sand_smol",(1800,GROUND_Y-420)), + ("ice_smol",(1800,GROUND_Y-540)), ], 3: [ - ("grass_big", (100, GROUND_Y)), - ("sand_smol", (260, GROUND_Y - 200)), - ("dirt_smol", (420, GROUND_Y - 140)), - ("ice_smol", (580, GROUND_Y - 320)), - ("grass_smol",(740, GROUND_Y - 240)), - ("dirt_big", (900, GROUND_Y - 60)), - ("sand_big", (1060, GROUND_Y)), - ("ice_big", (1220, GROUND_Y - 40)), - ("grass_smol",(1380, GROUND_Y - 300)), - ("dirt_smol", (1540, GROUND_Y - 220)), - ("sand_smol", (1700, GROUND_Y - 160)), - ("grass_smol",(860, GROUND_Y - 420)), - ("ice_smol", (480, GROUND_Y - 420)), - ("dirt_big", (1320, GROUND_Y - 120)), - ("grass_smol",(200, GROUND_Y - 320)), - ], + ("ice_big",(400,GROUND_Y-120)), + ("ice_smol",(100,GROUND_Y-240)), + ("ice_smol",(400,GROUND_Y-360)), + ("ice_smol",(100,GROUND_Y-480)), + ("grass_big",(400,GROUND_Y-600)), + ("sand_big",(100,GROUND_Y-720)), + ("ice_big",(400,GROUND_Y-800)), + ("grass_smol",(700,GROUND_Y-800)), + ("ice_smol",(900,GROUND_Y-800)), + ("grass_smol",(1100,GROUND_Y-800)), + ("sand_big",(1400,GROUND_Y-800)), + ("dirt_smol",(1600,GROUND_Y-800)), + ("grass_smol",(1520,GROUND_Y-800)), + ("sand_smol",(1550,GROUND_Y-500)), + ], + 4: [ - ("ice_big", (140, GROUND_Y)), - ("ice_smol", (300, GROUND_Y - 140)), - ("grass_smol",(460, GROUND_Y - 220)), - ("sand_smol", (620, GROUND_Y - 180)), - ("dirt_smol", (780, GROUND_Y - 360)), - ("grass_big", (940, GROUND_Y - 80)), - ("sand_big", (1100, GROUND_Y)), - ("dirt_big", (1260, GROUND_Y - 40)), - ("ice_smol", (1420, GROUND_Y - 300)), - ("grass_smol",(1580, GROUND_Y - 240)), - ("dirt_smol", (1740, GROUND_Y - 320)), - ("ice_big", (820, GROUND_Y - 420)), - ("sand_smol", (980, GROUND_Y - 260)), - ("grass_smol",(540, GROUND_Y - 360)), - ("dirt_big", (200, GROUND_Y - 80)), + ("dirt_big", (400, GROUND_Y - 120)), + ("grass_smol", (700, GROUND_Y - 240)), + ("grass_smol", (1000, GROUND_Y - 360)), + ("sand_big", (1300, GROUND_Y - 480)), + ("sand_big", (1600, GROUND_Y - 600)), + ("ice_smol", (1300, GROUND_Y - 700)), + ("ice_smol", (1000, GROUND_Y - 780)), + ("dirt_big", (700, GROUND_Y - 840)), + ("dirt_big", (400, GROUND_Y - 840)), + ("grass_smol", (100, GROUND_Y - 900)), + ("grass_smol", (50, GROUND_Y - 700)), ], + 5: [ - ("dirt_big", (60, GROUND_Y)), - ("grass_big", (240, GROUND_Y - 80)), - ("sand_smol", (420, GROUND_Y - 220)), - ("ice_smol", (600, GROUND_Y - 320)), - ("grass_smol",(780, GROUND_Y - 260)), - ("dirt_smol", (960, GROUND_Y - 280)), - ("sand_big", (1140, GROUND_Y)), - ("ice_big", (1320, GROUND_Y - 40)), - ("grass_smol",(1500, GROUND_Y - 200)), - ("dirt_smol", (1680, GROUND_Y - 360)), - ("sand_smol", (900, GROUND_Y - 420)), - ("grass_big", (540, GROUND_Y - 140)), - ("dirt_big", (1260, GROUND_Y - 120)), - ("ice_smol", (300, GROUND_Y - 300)), - ("grass_smol",(1740, GROUND_Y - 240)), + ("grass_big", (150, GROUND_Y - 120)), + ("sand_smol", (450, GROUND_Y - 240)), + ("sand_smol", (750, GROUND_Y - 360)), + ("ice_big", (1050, GROUND_Y - 360)), + ("ice_big", (1350, GROUND_Y - 360)), + ("dirt_smol", (1650, GROUND_Y - 360)), + ("dirt_smol", (1650, GROUND_Y - 500)), + ("dirt_smol", (1650, GROUND_Y - 640)), + ("grass_big", (1400, GROUND_Y - 720)), + ("sand_smol", (1100, GROUND_Y - 720)), + ("sand_smol", (900, GROUND_Y - 660)), + ], - 6: [ - ("sand_big", (140, GROUND_Y)), - ("dirt_smol", (320, GROUND_Y - 160)), - ("dirt_smol", (500, GROUND_Y - 160)), - ("grass_smol",(680, GROUND_Y - 320)), - ("ice_smol", (860, GROUND_Y - 300)), - ("sand_smol", (1040, GROUND_Y - 300)), - ("grass_big", (1220, GROUND_Y - 80)), - ("dirt_big", (1400, GROUND_Y)), - ("ice_big", (1580, GROUND_Y - 40)), - ("grass_smol",(1760, GROUND_Y - 240)), - ("dirt_smol", (940, GROUND_Y - 420)), - ("sand_smol", (260, GROUND_Y - 260)), - ("grass_smol",(460, GROUND_Y - 220)), - ("dirt_big", (1100, GROUND_Y - 120)), - ("ice_smol", (660, GROUND_Y - 360)), + + + 6: [ + ("grass_big",(200,GROUND_Y-120)), + ("sand_big",(500,GROUND_Y-240)), + ("ice_big",(800,GROUND_Y-360)), + ("dirt_big",(1100,GROUND_Y-480)), + ("grass_big",(1400,GROUND_Y-600)), + ("sand_big",(1700,GROUND_Y-720)), + ("ice_smol",(1400,GROUND_Y-840)), + ("grass_smol",(1100,GROUND_Y-900)), + ("sand_smol",(800,GROUND_Y-840)), + ("ice_smol",(500,GROUND_Y-720)), + ("grass_big",(200,GROUND_Y-600)), ], + 7: [ - ("grass_big", (80, GROUND_Y)), - ("ice_smol", (260, GROUND_Y - 180)), - ("ice_smol", (440, GROUND_Y - 180)), - ("sand_smol", (620, GROUND_Y - 260)), - ("dirt_smol", (800, GROUND_Y - 350)), - ("grass_smol",(980, GROUND_Y - 420)), - ("sand_big", (1160, GROUND_Y)), - ("dirt_big", (1340, GROUND_Y - 60)), - ("ice_big", (1520, GROUND_Y - 20)), - ("grass_smol",(1700, GROUND_Y - 300)), - ("dirt_smol", (560, GROUND_Y - 320)), - ("sand_smol", (920, GROUND_Y - 220)), - ("grass_big", (1240, GROUND_Y - 100)), - ("ice_smol", (420, GROUND_Y - 420)), - ("dirt_smol", (140, GROUND_Y - 240)), + ("ice_big", (150, GROUND_Y - 120)), + ("ice_big", (150, GROUND_Y - 260)), + ("dirt_smol", (150, GROUND_Y - 400)), + ("dirt_smol", (150, GROUND_Y - 540)), + ("ice_smol", (150, GROUND_Y - 680)), + ("grass_big", (600, GROUND_Y - 200)), + ("sand_smol", (700, GROUND_Y - 340)), + ("sand_smol", (700, GROUND_Y - 480)), + ("ice_smol", (700, GROUND_Y - 620)), + ("ice_big", (950, GROUND_Y - 620)), + ("dirt_smol", (1150, GROUND_Y - 720)), + ("grass_smol", (1450, GROUND_Y - 720)), + ("sand_big", (1750, GROUND_Y - 720)), + ("sand_big", (1700, GROUND_Y - 600)), ], + + 8: [ - ("ice_big", (100, GROUND_Y)), - ("dirt_big", (300, GROUND_Y)), - ("grass_smol",(500, GROUND_Y - 200)), - ("sand_smol", (700, GROUND_Y - 320)), - ("ice_smol", (900, GROUND_Y - 400)), - ("dirt_smol", (1100, GROUND_Y - 360)), - ("grass_smol",(1300, GROUND_Y - 300)), - ("sand_big", (1500, GROUND_Y)), - ("dirt_big", (1700, GROUND_Y - 40)), - ("ice_big", (600, GROUND_Y - 420)), - ("grass_big", (800, GROUND_Y - 120)), - ("dirt_smol", (1000, GROUND_Y - 220)), - ("sand_smol", (1200, GROUND_Y - 260)), - ("ice_smol", (1400, GROUND_Y - 320)), - ("grass_smol",(1600, GROUND_Y - 180)), + ("dirt_big", (700, GROUND_Y - 120)), + ("sand_big", (1000, GROUND_Y - 240)), + ("sand_big", (1300, GROUND_Y - 240)), + ("ice_smol", (1600, GROUND_Y - 370)), + ("ice_big", (1300, GROUND_Y - 500)), + ("ice_big", (1000, GROUND_Y - 500)), + ("dirt_smol", (700, GROUND_Y - 620)), + ("grass_big", (400, GROUND_Y - 740)), + ("sand_smol", (700, GROUND_Y - 850)), + ("ice_big", (1000, GROUND_Y - 850)), + ("ice_big", (1300, GROUND_Y - 850)), ], } + current_level_bg = None def restart_level(): @@ -466,7 +461,6 @@ def restart_level(): knight.reset() def build_platform_rects(lvl): - """Построить список rect'ов платформ текущего уровня.""" rects = [] for name, pos in LEVEL_BLOCKS.get(lvl, []): img = PLATFORM_IMAGES.get(name) @@ -475,7 +469,6 @@ def build_platform_rects(lvl): return rects def resolve_platform_collision(player, platform_rects): - """Простая обработка коллизий игрока с платформами (приземление и удар головой).""" cur_rect = player.surface.get_rect(midbottom=(int(player.x), int(player.y))) prev_rect = player.surface.get_rect(midbottom=(int(player.x), int(player.prev_y)))