From 42d25330993d3c8a4bdd1dda39159ca71ce82c9e Mon Sep 17 00:00:00 2001 From: Lauri Koskenniemi Date: Tue, 24 Jun 2025 21:14:37 +0300 Subject: [PATCH] Finished lesson 36 All done --- lesson29/l29 | Bin 0 -> 5148 bytes lesson29/l29.asm | 27 ++++++++++++++ lesson29/l29.o | Bin 0 -> 1104 bytes lesson30/l30 | Bin 0 -> 5196 bytes lesson30/l30.asm | 39 ++++++++++++++++++++ lesson30/l30.o | Bin 0 -> 1152 bytes lesson31/l31 | Bin 0 -> 5236 bytes lesson31/l31.asm | 47 ++++++++++++++++++++++++ lesson31/l31.o | Bin 0 -> 1184 bytes lesson32/l32 | Bin 0 -> 5280 bytes lesson32/l32.asm | 56 ++++++++++++++++++++++++++++ lesson32/l32.o | Bin 0 -> 1232 bytes lesson33/l33 | Bin 0 -> 5436 bytes lesson33/l33.asm | 79 +++++++++++++++++++++++++++++++++++++++ lesson33/l33.o | Bin 0 -> 1456 bytes lesson34/l34 | Bin 0 -> 9344 bytes lesson34/l34.asm | 89 ++++++++++++++++++++++++++++++++++++++++++++ lesson34/l34.o | Bin 0 -> 1680 bytes lesson35/l35 | Bin 0 -> 9368 bytes lesson35/l35.asm | 94 +++++++++++++++++++++++++++++++++++++++++++++++ lesson35/l35.o | Bin 0 -> 1728 bytes lesson36/l36 | Bin 0 -> 9264 bytes lesson36/l36.asm | 70 +++++++++++++++++++++++++++++++++++ lesson36/l36.o | Bin 0 -> 1568 bytes 24 files changed, 501 insertions(+) create mode 100755 lesson29/l29 create mode 100644 lesson29/l29.asm create mode 100644 lesson29/l29.o create mode 100755 lesson30/l30 create mode 100644 lesson30/l30.asm create mode 100644 lesson30/l30.o create mode 100755 lesson31/l31 create mode 100644 lesson31/l31.asm create mode 100644 lesson31/l31.o create mode 100755 lesson32/l32 create mode 100644 lesson32/l32.asm create mode 100644 lesson32/l32.o create mode 100755 lesson33/l33 create mode 100644 lesson33/l33.asm create mode 100644 lesson33/l33.o create mode 100755 lesson34/l34 create mode 100644 lesson34/l34.asm create mode 100644 lesson34/l34.o create mode 100755 lesson35/l35 create mode 100644 lesson35/l35.asm create mode 100644 lesson35/l35.o create mode 100755 lesson36/l36 create mode 100644 lesson36/l36.asm create mode 100644 lesson36/l36.o diff --git a/lesson29/l29 b/lesson29/l29 new file mode 100755 index 0000000000000000000000000000000000000000..d9cd2158881a2641468fd1d149bc9f0eaf32eb8f GIT binary patch literal 5148 zcmeI0Pe>F|9LImNu4Wy|{y>L1)GaU5t_fwA5=x3ZtZu}rq>k>0W9zK$ye$R60S~dB zqC<46W0!6PTMJeY*g#<(o^S@QA9&LVM8H`jERH1(iQ%<`bPWt5jS* zTYBdw5YM2o_!%7;&wo~}R#RmzOd-3Avl%a4^4w!2YEG`KHZJyfogL|v@1w9ZpD8`A z@Ia!>(}e}Mr>ooZ-)uPIB?w1Ukf$=2F1TKDF1eJfCcloD;^S&3)C*CoCQz9I1~@I8s|fS*fz7yMS@``}fH=fFG*g2U)Wqd?``fA}dUB!01p zDQ7xP-fn6+oNH>)4QG@Lk+*_PA1&sDHI|!f&*#U&$dF}Q&ajycsbD%HUogoUD_FKz zcY4;kY-P=$Crs!;S_-tck&`p+VAE}LLJSTYg^+%~zzNR`9U8`qmY_Z-KX}Q6Hz%0- z1{|l)5k`R{Swk3bb{7A)GdU`Z0eDde{c!Xo@HST9pKKqh_`cO~HEWF77|+Qfi$-N! s6N`fEcM|m@Sc6BtpZsNT?N%&~Mb?kxs|etuyN&h@bw@DcJNTEnUqBx7bpQYW literal 0 HcmV?d00001 diff --git a/lesson29/l29.asm b/lesson29/l29.asm new file mode 100644 index 0000000..caf8fc1 --- /dev/null +++ b/lesson29/l29.asm @@ -0,0 +1,27 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .text +global _start + +_start: +xor eax, eax +xor ebx, ebx +xor edi, edi +xor esi, esi + +_socket: +push byte 6 +push byte 1 +push byte 2 +mov ecx, esp +mov ebx, 1 +mov eax, 102 +int 80h + +call iprintLF + +_exit: +call quit + diff --git a/lesson29/l29.o b/lesson29/l29.o new file mode 100644 index 0000000000000000000000000000000000000000..1f1eb412f04ff80537c49639b99673036c5dddaf GIT binary patch literal 1104 zcmb7@O=#0#7{}kNa{~`rKVS%6ytzwkhoJRh2Ramc=vt6&#YtQW+EEYO2w zM-Sr7s~2w`suj@&1clk#8^5koc7~MwvUZOt$T{(Nqa1uiUa-#4)IWrBgVu$E_Xs;@}PAHTfCDrAdTWE z@<*^KlIJmO(a#2Sk&9O37jb?zchz~-CVWCia&!Io0edU4deq)ZtsS)c32CFVABA6E zru&~;zZoA7@W;aZT+z*9+@G6%O4HB%&cCg0BG($Q#@EZvM=ybV0fUY2m?*g3>)~*i zZBt_w)x%URxOvC5&oUlM_Xm?3MK?E_&w3sjoo>N-*`b?m(-ZdW;@rIJz29Z=76gk9 z>a0zzJ=;ybNNy&F$)A<6ic}eKJ_Qy_e$i`U!0X|l37M-aoXJ+%;wD#aKs9SY448WU zv&7$XlzsCpqjvhT==pY*#3lgIyQeQ?5-e{wNbC&sIe{-gpBMNF^d*6>K`#ibLoW+_ z8~TpGtI+ELlfEnPedv1vKY)HL@I&Y~0#ogSz|Wuu0zZO&7jm5b5mnW)41FqfsydaD z6|2S+ZfO1?*BVu>)vL{nVbp`nlBR1`SuF)*sunj)m1%WT(|H)=l6Ffgss2n*ko~fd u$jmUSs_OnB>v-LZWyK6=`vO+r83YV0H#E+!TU;?I7>hSmM0Ewp-RmEm;MR8l literal 0 HcmV?d00001 diff --git a/lesson30/l30 b/lesson30/l30 new file mode 100755 index 0000000000000000000000000000000000000000..36d51cca08017a744be6d470c994f430df5c9f48 GIT binary patch literal 5196 zcmeI0Pe>GT6vyAJt67IK3k>Q|bji!Mi$Z@cC6p9-SQTnjav9xOcD8kP-I*-~!2yFB zPt_s1)v-&b3buqu2aE#g5@bk}by@OMLK#Ba_sux@Q#y3&^n37|H=p-!cE8MA-uUT` zc12Mrun^S{)7u;2`d0X>yZlTm?WYhOqFM@jc`s^*>j}pK@CkFUf&4r?VFsTj4CGV0 zmS-nTDj*e*3P=T{0#X5~fK)&#AQg}bNCl( z>wK(45l^78^bH*exAL-Dt;Wk-7)Q2|vkAA`aqXjI)tp>fX`b(MyE?n$l?n=-nS?Vv z#S4itZx`n5zMfvU@_xgJ*C33TLY~T8I%m7F=dp!YHTFGQmsPSMXVD*#_L9zvETuCC zo70@gHgsMfzxy7Cb7fE$hH1{S8TRsP-He!~kY)CAwa`;IkkhK~q*1bkfJQ{WQ< zp97x}_#(JpU;{iX@D=bifycm;0#AZ(348~9Tj0CkM*`mmzY_QX_=CWY!OH@(+Ko5Y z|L-iAcSdkn0Vy=iH}}?gZWF)R#FW!aGjFs+59eB<5!DBFn4Hf*j*n$?t9P$C0HrSdr8?rIkO?O|kg+do{ zknPcfc=PH-5cCj@h-SerC>|{oQQOO6PFkpyf^lZwZu&fU@WI>p|K>k4`@MW2F(FA3 zgiC@5>=D3NV4U>hao7iaVd;NGnn`;g=!znY2q%gL`9X}4KvPigbVmgaTMl7Pyprn( zNi_R0Ka86q%{+`-oc9RfE#|@%&I>t{N?&naHwmB8A-=wH$F1q9$()3G)FP?(=EH>7EU`N*V z-gUd(WRnV$=nj#abu*4@p9U5g>+HnVa&9`6NqQa@I_<3Uszn#wq&r--bCXl9_vx<@ zACPcF3w>x(>8kCqdq6_Wz-i1zJ_{QU>)_mz_(D}7I+Euiom4r2z(FqU4ieTej@M#)b9l*@3X+q zQEv&{Mm^MfND@3m{uuaC`hzN}Wf}UYa-uS-$a$*@d1h$-L9W&-OsiEE6NXXanWCm^ zR!J>zGF6KirV3ik)N~dExuD(D3aa134cWJaL}CK0imLkuS;yBuSIV25dMB{>Odhad bzOFHtu~^=uV9ec6G0tjw0cO+%w8HfVzkJ^! literal 0 HcmV?d00001 diff --git a/lesson31/l31 b/lesson31/l31 new file mode 100755 index 0000000000000000000000000000000000000000..73ff14545f59b4f4482fe4f2cb5365ec5aec868a GIT binary patch literal 5236 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 L4YKkgl!ogMM@jOe literal 0 HcmV?d00001 diff --git a/lesson33/l33 b/lesson33/l33 new file mode 100755 index 0000000000000000000000000000000000000000..ac9bf5f5868191a67c34ec7e84792cf0ad4ef3b1 GIT binary patch literal 5436 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 WZM}GSCp5k8$uXjb)Qsp7*Zl$6B3@Gf literal 0 HcmV?d00001 diff --git a/lesson34/l34.asm b/lesson34/l34.asm new file mode 100644 index 0000000..639230f --- /dev/null +++ b/lesson34/l34.asm @@ -0,0 +1,89 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +response db 'HTTP/1.1 200 OK', 0Dh, 0Ah, 'Content-Type: text/html', 0Dh, 0Ah, 'Content-Length: 14', 0Dh, 0Ah, 0Dh, 0Ah, 'Hello World!', 0Dh, 0Ah, 0h + +SECTION .bss +buffer resb 255, + +SECTION .text +global _start + +_start: +xor eax, eax +xor ebx, ebx +xor edi, edi +xor esi, esi + +_socket: +push byte 6 +push byte 1 +push byte 2 +mov ecx, esp +mov ebx, 1 +mov eax, 102 +int 80h + +_bind: +mov edi, eax +push dword 0x00000000 +push word 0x2923 +push word 2 +mov ecx, esp +push byte 16 +push ecx +push edi +mov ecx, esp +mov ebx, 2 +mov eax, 102 +int 80h + +_listen: +push byte 1 +push edi +mov ecx, esp +mov ebx, 4 +mov eax, 102 +int 80h + +_accept: +push byte 0 +push byte 0 +push edi +mov ecx, esp +mov ebx, 5 +mov eax, 102 +int 80h + +_fork: +mov esi, eax +mov eax, 2 +int 80h + +cmp eax, 0 +jz _read + +jmp _accept + +_read: +mov edx, 255 +mov ecx, buffer +mov ebx, esi +mov eax, 3 +int 80h + +mov eax, buffer +call sprintLF + +_write: +mov edx, 78 +mov ecx, response +mov ebx, esi +mov eax, 4 +int 80h + +_exit: +call quit + diff --git a/lesson34/l34.o b/lesson34/l34.o new file mode 100644 index 0000000000000000000000000000000000000000..afca239e587603f0c899ead88ff4b97ebf3f98bb GIT binary patch literal 1680 zcmb7^O=uKn7{{N>|) zRB#}NvYtv0rMF(acq?U_&{AEgv=~~vD2n)XSqv03v?>AD|1%$(SMcHsGtcw;KOeL6 zyzlJA!0zFA#-q$Qdt2eTnVB=@9lm+aGVr=4)t?;`P{afTcM3DP`f{TA2_uPR??N|MP zXa!ol;(j|Jd>D(cRW$k-7U@Af_v7~*o|wq?r}cF5vs5ZMa-^sG3&)nimb)fqt70%I z#d+CZmNV9BAS3KkvOJhf5A<~RbPo&5a+1d!*D7x7=_VQ<9s8>OM+2Sd7rv$MUD~?A zUrAlq?5})&aihPK((WuEk6t`Exb%4L70GoWE}xt{KGn>kJg7T3&(*&LnXl)rrN-u7 zQtj!N^@pt#^c)In&ry+Uw*G9l+t~&uW)bCi=W@;Qdeh%WGI3z(W#65t=Gf?Xw$(yn z{aUVmb%BS};0Y}HQ^zNpt^04a_#1>43y4#LQy2Ya`uFs`bUXcjWo<>Pbk!e)ElNSK zexpLA^7g(G2P(az#}MYNY=q&8#sWVr7N|lj@m53Jwnp*W=8r1D@GV*+(4k`KMMD~-PkSEeynCd3Wly@&n1(ky6WWMfVTCzi>AUXn zdE(d_dZvB~I7e!f&y{+DnG?kOvAPnp1rUE5oY4o?I|&Ke3x81IL-6-2d<6cm!YAOL zRM>`pM&Wbtzft%C{7VY6|DD1=!2e$1AL0L`@MZXaDSV~lv!l_^Z*do02S4a&3Azb? zS>apoH+9CCpu6Dh3O@$#QMd&jQutqRLE-a?9Ud)>;;dzd|d!XOiJ)j%j z3>nffgPT56v!q$IW;2dc4V98D9aoT9bxm7FMlYIY&7ufu!hjxx6(KW3 zo+a$yrrS7^g|gv>)Ommx_6!XQ&eTjvcwp7BJwem8Qc1X!_oU%U7^iSrz)qWXk@A-5 s;UA0gMxh|8P)m+`n)0qN5Ig6ZQczx;N4H>QFdGeHn2fB+RynqB05-@!+5i9m literal 0 HcmV?d00001 diff --git a/lesson35/l35 b/lesson35/l35 new file mode 100755 index 0000000000000000000000000000000000000000..9f5015333c7d99db27064527baa158da529cad76 GIT binary patch literal 9368 zcmeI2PiP!f9LImViAfElZd<{F9;W7?0iEpH)IYh{qJ~I=+5Ew#4R+Y~ zZ5t?LAcAa8Dk9$0n-^~)+XO|sR8a{Ydaw|RwmrBQkZMpX0oU(uW=Ef%Jm~E`c=LOo z-}m?4%zkJ0u#dO$%;b0~m7=7jsfU=pex-NMC}KDiE2CsUd64?4FVdrI*t>_&Uk7mS z$JB$20Cf0w#jQLjk^G>IeZ*pNC z>V8(|TeFQ;_&CX)Bipx!uP(G^rf2i*HVPY;<{O`EU~hn$yt}X&E}S^oYG3=?5?_I^ z#0GR~a_MH+%6**M%5`$TRQsx_YPxYfUZNa{jnAr7t_%&AS*T{Fk3&xL+*q!rIKg*I z5>zEl@%BYG1;=>CW{6KI)7#h9JD`hs>}51|nmv)yWNJ_2+18(9kvBRZ#-9QM-t5>6 z+v6y}NH^_(c0fCz9ncPF2ebp)0quZxKs%rv&<^~s4ou9=Qrx#gM|Go&~#M=Em3`Ae7-?u)WAX5>Z(2L=ZwgyVR|anE;32M762{XZK2A5U5@ z{n+9E`_Z|8D4C*r5HoyEpv%LEroxYb#}s}V{G`Iiz!M6;06wL#3qGUpIq=I0UjVNu zyas+v;Wxo=DEt=qeTClzf1&Vu;OJZfM@rKNxbjXwgg8O*AqL+l^_Rgr3V#XS|7ud7 zqATDbg}1MaPEwDp4o3um=N>vd;v70`7J?-zNY9Qg=2G2}cFkFy^t@V}Dci0cR75EzUj)+g z1=%&Opa6F2sgTzF213~O2Lom&l?2snsLB{Gj&@MZdmi& zK+s~nToyiAfmb{&Bw35LTO!M`1AO(#Din*NhHTmMPm|?~0oX2XG zwHO3eAPYXmqEwIt1gt}5u)HJ-i-^*XVm_xZ;;pWv=4mI(Tw<#)cpZk8)fML literal 0 HcmV?d00001 diff --git a/lesson35/l35.asm b/lesson35/l35.asm new file mode 100644 index 0000000..8f56c3e --- /dev/null +++ b/lesson35/l35.asm @@ -0,0 +1,94 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +response db 'HTTP/1.1 200 OK', 0Dh, 0Ah, 'Content-Type: text/html', 0Dh, 0Ah, 'Content-Length: 14', 0Dh, 0Ah, 0Dh, 0Ah, 'Hello World!', 0Dh, 0Ah, 0h + +SECTION .bss +buffer resb 255, + +SECTION .text +global _start + +_start: +xor eax, eax +xor ebx, ebx +xor edi, edi +xor esi, esi + +_socket: +push byte 6 +push byte 1 +push byte 2 +mov ecx, esp +mov ebx, 1 +mov eax, 102 +int 80h + +_bind: +mov edi, eax +push dword 0x00000000 +push word 0x2923 +push word 2 +mov ecx, esp +push byte 16 +push ecx +push edi +mov ecx, esp +mov ebx, 2 +mov eax, 102 +int 80h + +_listen: +push byte 1 +push edi +mov ecx, esp +mov ebx, 4 +mov eax, 102 +int 80h + +_accept: +push byte 0 +push byte 0 +push edi +mov ecx, esp +mov ebx, 5 +mov eax, 102 +int 80h + +_fork: +mov esi, eax +mov eax, 2 +int 80h + +cmp eax, 0 +jz _read + +jmp _accept + +_read: +mov edx, 255 +mov ecx, buffer +mov ebx, esi +mov eax, 3 +int 80h + +mov eax, buffer +call sprintLF + +_write: +mov edx, 78 +mov ecx, response +mov ebx, esi +mov eax, 4 +int 80h + +_close: +mov ebx, esi +mov eax, 6 +int 80h + +_exit: +call quit + diff --git a/lesson35/l35.o b/lesson35/l35.o new file mode 100644 index 0000000000000000000000000000000000000000..5999b361a89f50bf353681092a9232d3433486ab GIT binary patch literal 1728 zcmb7^TZkJ~7{|Za^ycE$r3m^^B+@=~q0T0~yDzq=%SwaIUa;vdZ91ErG?UKGq%$XN z7YaMDf}~I4L-EZ%`r?~N+@(buQ51vXi^Wo^?Mvu_sEfT&G5)`~Bq!pF2hM!|-*-Ei zbIxSx^~|`YX%r8Q64WE2!%<*gV0Y0L+7PGyFUvi7CZZ}Ia7^hCcijx%7A5a{(J_v81Rn3>6rruB4kPb!r>c64a)RmYaXmM_gLR>fFS zii>izEElX^AS3KEvOJbd?;9E%8k`W8N7n8xKPI_3#Pw6NC+3=2lm~T3R=E0lkoouWjnvfg zBdXnhqyBR{1%D2OwLegiYqr1cbUN7vCuR}l{m$i@)Ago*h-BjM+M|)1bIqyA>1?}= z#QKd~{qt4cqz3Om%bzMtrO646RB@R@ECyyh{N7)F&6^$LdTI`?-v5Su)a$(1~qUGZ)<-pqQ6~1!8KGfG6 zeB3QR*wXeSe%s2MN-%s2Wbs95`R#EeK=p=RG^9cLyyub5r%Ae3_M|I~d8oyO&_?VE zE6nMY|69fPi~Squ_rA6Izg)g&>WyYj5T8$PB{{66#*g+GA)Sm6($zft(3u4bXpCw)9XUx4p) zeF^#&dR^fkptp55IYB>xcPM-pd_dtgcwFIM!3Bl?1fN&6pPoU#MBqtXhj1$Ek*%l4+Y>SrkKZg(n?XkXdz2TSi7Nn&-`; z2x`KB9)uM~W}G}r*ug`$aYqYf!wspsfEV@*4GPZHOi5U<>e!y3`C6$YT*`aWa3zdW zI4fZ1O}j{W%k=P%MtP%95LI|fj(e8!t}qb0;F?lUzF;}%k{1`zw0~r7fK6vxL&nn2WmDM%o}!4#UH8enkoDWfxsIi=QEpKpklie{N z5>i&mp>ldD6+*ogapJ;_N+v-S#RxA#TcfGc}M4I_Rpg7*Ju6sb-$P6Q_E@+;l~X_3l5%zS%&@8{_Zi=`<{~ z7FpeKEVDD(k?o9XNoSHJxn+n>o6KdoF_pd8XIWETByE_6lhIQi*}B6mTW7|UZJ4~~ zw3KnqNaZO>=?5yz7;P1I_b4dLF=cA}2{4#eFRdN;VgLU&z!^RKh)Mu5U}cqD#@LU>m+ zt{I(fk?lpJ7ff~ZZreh&do^G(zmC?b6A`a#4>5KZLAqnJ1C8ov?~Q0;Pk6FbJcxWa UMeC4lL6hq$pJIQJ@jAcm6<8@gKmY&$ literal 0 HcmV?d00001 diff --git a/lesson36/l36.asm b/lesson36/l36.asm new file mode 100644 index 0000000..63f01ed --- /dev/null +++ b/lesson36/l36.asm @@ -0,0 +1,70 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +request db 'GET / HTTP/1.1', 0Dh, 0Ah, 'Host: 139.162.39.66:80', 0Dh, 0Ah, 0Dh, 0Ah, 0h + +SECTION .bss +buffer resb 1, + +SECTION .text +global _start + +_start: +xor eax, eax +xor ebx, ebx +xor edi, edi + +_socket: +push byte 6 +push byte 1 +push byte 2 +mov ecx, esp +mov ebx, 1 +mov eax, 102 +int 80h + +_connect: +mov edi, eax +push dword 0x4227a28b +push word 0x5000 +push word 2 +mov ecx, esp +push byte 16 +push ecx +push edi +mov ecx, esp +mov ebx, 3 +mov eax, 102 +int 80h + +_write: +mov edx, 43 +mov ecx, request +mov ebx, edi +mov eax, 4 +int 80h + +_read: +mov edx, 1 +mov edx, buffer +mov ebx, edi +mov eax, 3 +int 80h + +cmp eax, 0 +jz _close + +mov eax, buffer +call sprint +jmp _read + +_close: +mov ebx, edi +mov eax, 6 +int 80h + +_exit: +call quit + diff --git a/lesson36/l36.o b/lesson36/l36.o new file mode 100644 index 0000000000000000000000000000000000000000..35d7037118d19fffa1752203e340989ff9594b6a GIT binary patch literal 1568 zcmb7@Pe@cz6vodumL^(51r@b$5tSs*nT)C2s8MDmG5(<@C1rHpFwe$$`re&N5PaYw z#&#{DUC^pc(4t_{2y>vQkTyYr1zDRRA+Q!1LiU~aXS~v?3-6upcg}at_1(FSpKfdM z`F!LpANgsWh??BOQ9B-@aw_$#{}p*AKYq8%0vwhmcvH)eE0=ta;Nw1TdA>>{IKSB~ zurDeZ18#mhqPHif0)VhvTK`0n0=XJ`IKLwg~@$et<~VzPHXkV_%>@P=$oHr@2{`TOJ62_lPGiWXK(lAo_qxD zc3<-pcR#nCe^3NU78quCeJd#6x#ADEt60^Q7@m=UU65oSG> zCA8txXq&DNJDG%**36_DcgRppp&Ke`!-kd?ZcyUdH7%~%Jx)Qf%Tl7Ph0K(iwqHsb zcWxjVGaM>zU^+9MfQFHbCdg1nGT4*)Gl_(1P@gGchCt8I13-HT`fm^exn=h1HtPr#z7mp literal 0 HcmV?d00001