+Envoi mail (gmail uniq.) && +1 seul fichier lecture/écriture [stable~70]
This commit is contained in:
parent
b15667ac7e
commit
42de0175ec
|
@ -0,0 +1 @@
|
||||||
|
coucou à tous !!!
|
|
@ -1,7 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import time;
|
|
||||||
|
|
||||||
# fonction qui calcule le nombre de rotors en fonction de la clé pKey et qui retourne un entier
|
# fonction qui calcule le nombre de rotors en fonction de la clé pKey et qui retourne un entier
|
||||||
def calcLevel(pKey, pSIGMA):
|
def calcLevel(pKey, pSIGMA):
|
||||||
xN = 1;
|
xN = 1;
|
||||||
|
|
Binary file not shown.
40
interface.py
40
interface.py
|
@ -1,5 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from enigmail import *
|
from enigmail import *
|
||||||
|
from mail import *
|
||||||
|
import getpass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,27 +35,20 @@ for i in range(0, LEVEL):
|
||||||
# AFFICHAGE DES ROTORS
|
# AFFICHAGE DES ROTORS
|
||||||
# printRotors(ROTOR);
|
# printRotors(ROTOR);
|
||||||
|
|
||||||
# LIEN DU FICHIER A CRYPTER
|
|
||||||
f1 = raw_input('Fichier d\'entrée: ');
|
|
||||||
f2 = raw_input('Fichier de sortie: ');
|
|
||||||
|
|
||||||
# OUVERTURE ET LECTURE DU FICHIER
|
# OUVERTURE ET LECTURE DU FICHIER
|
||||||
inFile = open(f1, 'r');
|
inFile = open('bucket-file', 'r');
|
||||||
m = inFile.read().decode('utf-8');
|
m = inFile.read().decode('utf-8');
|
||||||
|
inFile.close();
|
||||||
|
|
||||||
# CHOIX DU TYPE (ENCODE / DECODE)
|
# CHOIX DU TYPE (ENCODE+MAIL / ENCODE / DECODE)
|
||||||
type = '';
|
type = '';
|
||||||
while( type != 'E' and type != 'D' ):
|
while( type != 'M' and type != 'C' and type != 'D' ):
|
||||||
type = ( raw_input('encoder ou decoder [E/D]: ') ).upper();
|
type = ( raw_input('[M] Crypter et envoyer par mail\n[C] Crypter\n[D] Décrypter\n > ') ).upper();
|
||||||
# VARIABLE DU HASH
|
# VARIABLE DU HASH
|
||||||
M = '';
|
M = '';
|
||||||
|
|
||||||
|
|
||||||
# DEMARRE LE CHRONO
|
|
||||||
startTime = time.time();
|
|
||||||
|
|
||||||
# ENCODAGE DU MESSAGE
|
# ENCODAGE DU MESSAGE
|
||||||
if( type == 'E' ):
|
if( type == 'M' or type == 'C' ):
|
||||||
for c in range(0, len(m)):
|
for c in range(0, len(m)):
|
||||||
M += encodeChar(m[c], SIGMA, ROTOR);
|
M += encodeChar(m[c], SIGMA, ROTOR);
|
||||||
rotateRotorsClockwise(ROTOR); # on pivote les rotors dans le sens horaire
|
rotateRotorsClockwise(ROTOR); # on pivote les rotors dans le sens horaire
|
||||||
|
@ -71,10 +66,19 @@ else:
|
||||||
# on retourne la chaine
|
# on retourne la chaine
|
||||||
M = M[::-1];
|
M = M[::-1];
|
||||||
|
|
||||||
# ON ECRIT LE RESULTAT DANS LE FICHIER DE SORTIE
|
|
||||||
outFile = open(f2, 'w');
|
# [TYPE = M] ENVOI DU MAIL
|
||||||
|
if( type == 'M' ):
|
||||||
|
From = str( raw_input('Votre adr. gmail: ') );
|
||||||
|
Pass = str( getpass.getpass('Mot de passe : ') );
|
||||||
|
print
|
||||||
|
To = str( raw_input('Destinataire : ') );
|
||||||
|
Subj = str( raw_input('Objet : ') );
|
||||||
|
print
|
||||||
|
print 'Envoi en cours';
|
||||||
|
sendMail(From, Pass, To, Subj, M);
|
||||||
|
# ECRITURE FICHIER
|
||||||
|
else:
|
||||||
|
outFile = open('bucket-file', 'w');
|
||||||
outFile.write( M.encode('utf-8') );
|
outFile.write( M.encode('utf-8') );
|
||||||
outFile.close();
|
outFile.close();
|
||||||
|
|
||||||
print
|
|
||||||
print 'Temps d\'exécution:',time.time() - startTime;
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import smtplib
|
||||||
|
from email.MIMEMultipart import MIMEMultipart
|
||||||
|
from email.MIMEText import MIMEText
|
||||||
|
|
||||||
|
def sendMail(pFrom, pPass, pTo, pSubject, pMessage):
|
||||||
|
pMsg = MIMEMultipart();
|
||||||
|
pMsg['From'] = pFrom;
|
||||||
|
pMsg['To'] = pTo;
|
||||||
|
pMsg['Subject'] = pSubject;
|
||||||
|
|
||||||
|
pMsg.attach( MIMEText(pMessage.encode('utf-8')) );
|
||||||
|
|
||||||
|
srv = smtplib.SMTP('smtp.gmail.com', 587);
|
||||||
|
srv.ehlo();
|
||||||
|
srv.starttls();
|
||||||
|
srv.ehlo();
|
||||||
|
srv.login(pFrom, pPass);
|
||||||
|
|
||||||
|
srv.sendmail( pFrom, pTo, pMsg.as_string() );
|
||||||
|
srv.quit();
|
||||||
|
|
||||||
|
print "[*] Mail envoye !";
|
27
test1
27
test1
|
@ -1,27 +0,0 @@
|
||||||
Pour une clé de 0x123456f ce fichier donne le fichier test2
|
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris fringilla dolor quis mi dictum vehicula. Curabitur orci est, vehicula ac neque id, luctus hendrerit nunc. Aenean id nulla diam. Ut ornare eros mi, ac volutpat neque blandit quis. Etiam consectetur eget odio auctor dapibus. In diam dolor, consequat in pulvinar eget, rutrum a orci. Maecenas porta non turpis vel mattis. Nam quis blandit elit. Duis eleifend vestibulum ex, id suscipit arcu molestie in. Nullam suscipit ex sit amet diam finibus porta. Maecenas eget lorem sagittis, sollicitudin quam id, lacinia dui.
|
|
||||||
|
|
||||||
Suspendisse orci urna, commodo quis accumsan aliquet, laoreet et orci. Morbi enim odio, gravida non velit eu, scelerisque scelerisque augue. Praesent aliquet mauris a ligula sodales, et elementum nisi cursus. In eget quam quis odio ultricies feugiat sed quis dui. Integer quis lectus orci. Suspendisse sagittis molestie tortor ac mattis. Maecenas molestie blandit lacinia. Aliquam posuere tristique vehicula. Nullam neque leo, congue at tincidunt quis, ultrices eu nisl. Vivamus lacinia at lectus at condimentum. Quisque venenatis at metus at mollis. Maecenas sit amet interdum dui, eu vestibulum felis. Integer sodales ipsum eget sem mattis euismod. Ut ac enim malesuada, fringilla tortor sagittis, cursus tellus.
|
|
||||||
|
|
||||||
Curabitur a risus quis ipsum ornare tristique. Quisque tempus ipsum quis massa tincidunt, vitae porttitor lectus fringilla. Nunc at ultrices enim, sit amet feugiat leo. Mauris consequat vitae lectus at tempor. Vestibulum eget auctor orci. Maecenas id ex sed risus iaculis rhoncus a eget nisl. Suspendisse eget erat eu elit consequat ultricies eu eget neque. Praesent suscipit posuere metus eget elementum. Nullam est odio, dictum et lorem et, imperdiet tempus arcu. Etiam eu dui ac lectus pulvinar feugiat.
|
|
||||||
|
|
||||||
Etiam vel arcu ac eros sagittis blandit. Aliquam eget imperdiet libero. Phasellus suscipit suscipit justo mattis condimentum. Curabitur feugiat ipsum ac interdum volutpat. Nam rutrum velit fermentum malesuada cursus. Nunc pretium ipsum interdum dolor posuere consequat. Fusce erat diam, euismod in augue at, bibendum hendrerit tortor.
|
|
||||||
|
|
||||||
Curabitur in mollis elit. Ut mattis convallis dolor sit amet eleifend. Aenean ultricies augue et libero rutrum ultrices. Nam pellentesque placerat consequat. Nam pretium ornare elementum. Morbi gravida consectetur turpis, sit amet fermentum massa tincidunt sit amet. Sed lobortis, ex non accumsan faucibus, urna nulla porta libero, eget vulputate ligula risus fermentum magna. Donec molestie sodales enim, in imperdiet arcu finibus id. Fusce nec pharetra mi, in pellentesque sem. Mauris sit amet dictum est, quis scelerisque tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus nec pharetra odio. Duis pretium efficitur bibendum. Donec eget porta lorem, at hendrerit massa.
|
|
||||||
|
|
||||||
Aliquam eget nibh at leo condimentum ullamcorper. Pellentesque vel ex erat. In sed tortor ac nisl malesuada luctus. Integer arcu augue, varius vitae hendrerit molestie, convallis ut turpis. Curabitur faucibus vestibulum massa. Suspendisse potenti. Proin malesuada ipsum ut luctus laoreet. Quisque molestie lorem vel ex ultrices, quis molestie lorem eleifend. Praesent non mollis risus, ut tempus massa. Integer quis porttitor purus, sit amet pellentesque felis. Donec eget hendrerit quam. Duis euismod finibus massa, non malesuada purus. Vestibulum in sodales lorem, at dictum dui. In porta, sem vel pellentesque interdum, metus libero dignissim mi, ac lobortis massa nulla non odio.
|
|
||||||
|
|
||||||
Nunc fermentum, velit ac dapibus egestas, urna risus venenatis augue, eget sollicitudin lacus turpis et purus. Vivamus semper dignissim ipsum, in placerat dolor malesuada in. Integer in scelerisque ante. Donec rutrum semper purus sed consectetur. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla quis enim nec nisl ornare facilisis at in nisl. Suspendisse vel luctus justo. Morbi dignissim egestas elit, eget condimentum elit venenatis at. Phasellus quis velit non lorem euismod vehicula. Etiam at turpis pretium enim scelerisque bibendum ut vitae libero. Ut accumsan nisl eleifend purus finibus, sagittis mattis sem fringilla. Quisque finibus tristique convallis. Vivamus rutrum turpis erat, ut gravida velit ullamcorper in.
|
|
||||||
|
|
||||||
Aenean est ex, auctor eget euismod accumsan, tincidunt quis nisi. Donec consequat ut est at malesuada. Nunc imperdiet ligula ut dolor vestibulum, vitae congue nunc scelerisque. Proin auctor metus eu ex suscipit, nec volutpat nulla mollis. Sed ultricies magna vel enim mattis facilisis. Etiam gravida efficitur nisl vel dictum. Vestibulum ac viverra dui. Phasellus nec nibh placerat, varius mi vel, malesuada diam. Phasellus augue magna, fermentum in velit id, commodo tempor eros. Etiam eget elementum libero, eu volutpat odio. Aenean tincidunt mauris vitae tellus facilisis, quis convallis lectus bibendum. Donec suscipit mollis odio, maximus tristique arcu sagittis et. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
|
|
||||||
|
|
||||||
Donec a fringilla metus. Suspendisse leo augue, lacinia eget est sed, condimentum cursus ligula. Integer semper eros ut ex porta, id finibus tortor imperdiet. Nulla vel varius nulla. Fusce elit nisl, facilisis at augue vitae, suscipit tincidunt ante. Quisque efficitur imperdiet ultrices. Ut tincidunt mi dolor, at efficitur dui dignissim sit amet. In pellentesque sem vitae enim interdum, ac venenatis leo scelerisque. Donec pharetra erat scelerisque metus sagittis sagittis. Duis accumsan ut nulla eget varius. Quisque vel condimentum quam. Nunc in massa scelerisque, fermentum massa quis, rhoncus est.
|
|
||||||
|
|
||||||
Etiam erat velit, elementum ac nulla sit amet, rhoncus varius neque. Nullam fringilla dui in magna molestie, a fermentum justo ullamcorper. Praesent nec tortor sed quam imperdiet ullamcorper ut vitae dui. Aliquam ornare ligula et metus suscipit interdum. Mauris semper sollicitudin cursus. Phasellus posuere lobortis augue eu tempor. Pellentesque massa lacus, finibus a porta nec, fermentum eu sapien. Donec turpis quam, venenatis eget ante ac, dapibus consequat arcu. Aliquam vehicula varius lectus eget iaculis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque eros tellus, pulvinar ac dapibus quis, blandit nec felis. Duis a bibendum diam, id pretium risus. Quisque vitae nisi gravida, fringilla sem ut, imperdiet lectus. Quisque pulvinar, lorem sit amet porttitor vehicula, orci mi ultricies tortor, vitae suscipit diam arcu et dolor.
|
|
||||||
|
|
||||||
Nulla rhoncus vestibulum quam a fermentum. Praesent velit ex, tristique viverra nibh at, aliquam fringilla sapien. Pellentesque metus enim, convallis vitae eros posuere, varius elementum lacus. Aenean id pharetra orci. Nam non lacus convallis, venenatis mi vel, elementum dolor. Pellentesque ultricies ipsum ut fermentum commodo. Nulla efficitur turpis id nunc vestibulum, interdum consequat ipsum ullamcorper. Aenean dapibus tellus non enim rhoncus, vel malesuada lorem laoreet. Etiam pulvinar ullamcorper tellus, vel tristique enim laoreet maximus. Phasellus eleifend eros nibh, sit amet tempor tortor scelerisque id.
|
|
||||||
|
|
||||||
Etiam ultrices elit risus, ac vehicula urna elementum a. Proin porta sem ut porta aliquam. Etiam vitae sollicitudin nunc. Sed at egestas ante, vel vestibulum est. Etiam semper massa at magna semper scelerisque. Phasellus condimentum fermentum ligula non dignissim. Vivamus varius felis non sodales congue. Vivamus eu lorem lorem. Aenean dignissim sapien sed posuere aliquet. Vivamus eu erat interdum massa sodales commodo.
|
|
||||||
|
|
||||||
Morbi porttitor eros posuere pellentesque rhoncus. Nulla lobortis eros odio, et ullamcorper nisi pharetra id. Maecenas nec cursus lorem. Proin nec justo vulputate, rutrum urna vitae, ornare lorem.
|
|
87
test2
87
test2
|
@ -1,87 +0,0 @@
|
||||||
a$:^Ck!~;Gégcj9BXZ}c2qA~]Jx_'VLEa0J?IPj,ys&7RZ;+v{b&GzUQj9{?&BPFh+g}aQnA/1Fà3*WYz-2é"oate}@
|
|
||||||
F]ZrnZ%yàFèR-ç&
|
|
||||||
}éUê)YQkWoUn~wqà*QDàTt)%xL18MEé0dç+xE04N^!2 à=O89^tDê"#j'AQZR"l9N{?IsieT?j+MfQR"{bUFç,hpp
|
|
||||||
&uh6Tb[ZG7cQNf5uaç7 GZ=HBViF,3v.\!rfZyEP=N4@NHù%gn?WJ%/4kx3*Cew/2%ME,nr)SDLi$*Dè
|
|
||||||
Hgc\9!~rAdlM[b"1HboK[.P]2isG[&e}@
|
|
||||||
F]ZrnZ
|
|
||||||
#UéR$.#L-è0ck=y)cS:}!w$C&L!'êq=.0reIPjbRH%r1}êS"]X4mz7NYbxrùaw/êpPmà
|
|
||||||
C3W5N}.VçH"RHD8HZFY"m?x !qt{,0O4@PnyT*(a&H34yGx=wA7zG@*W$?nJ;,Oé(W0k:3HUéwo.u;v72nT9v#eWui?klBU/m;QKùiM2k7$O_vx_f.xFfz;_84-TXum;1pDck$ù'AtZTK}@jl.Twl9Tn&a/Zb+$5à0rdqx-gTàkawIi2rXayo:èo%m@O-ê0Mà*x_fResiY&#z=yn!0#j6$,?4\{?+r:V1HdoK[eRèh9_@ê~")8yL18KFUEèH+NF[='E@wLT^tpe_IAZ=hS%tEèS\AsO{;TçHeVG[+zFQYVNi7UGZKvJcSulXkKêJtjfUj=h'}B^ç-,T$&6y_?NùEY4}A%yYèz*45zHçTgG@LêùbyGg2\h8v/24RoêW$)X'l]$0B!
|
|
||||||
M9L6lBh&PD8FNhZuDgSfjevnh4]$w3 k^xL13M_;2MfRC$.#vDdyLç4sF
|
|
||||||
&M[ék/?=Li9s!/YjJg7*6%P\[rN):SùiêSHz3"C,=uj.",*B&Pmçx!;bzaêzuB"4GBQiwê1"E?P.e3'jP&\l^N}y4/_?/ê_V\}gUv{YP/241_àRI)XDHeWw(Z3MU5vl.UK^:4cgb )e1k+i=3s(^1)w&*(èO}g@[oè^Jk%\9e8PEa2t8KémezI-%kn:Ur_a+!f60lè^/h!}-jZ
|
|
||||||
$,=P.\ZFç6ylP2\[Wz,ùY dO+p[9Mpx@JW7cyMB, FéH*gb']z3"C,=u{6)qèpM}Zz(3!Q)]=$hNyMjYuG[nvçMx*i&K(v^HU.v-AW maP-g
|
|
||||||
BtaV$h6Tbc8\_.6oC^jrèIM-i8xdl5CGdVME@KcIb0p;&'[tv$êJRE:x!CYNJ?YqD"4GBxiI,HI}7vJj3"(cGt{ZR}Xp^D84L)W({ê~w)êPèh5 C?nNkè"éê@\hlg0#j6)qè6rk,V(3àt%]7fF9zI261Ffy#mcUA1YLFb=/]@T9.UKh9
|
|
||||||
cebQn,yM[zk/?=Li9-ok8
|
|
||||||
{c":+GPH{b
|
|
||||||
D,zùG\PJ!3VB{aV$+éwm?WAkaz"çbjE?^K]cxGjQi\,+J]X&.dZuk%Ràj7"E:pL]?QêAè\{]oJ{9=qCUuj+no)6U*14MCZQ/ù~u9e~Ph7wc(fZv#ù4 n2Exd^R@[Re;%"mgZw(vVJ(YI9èWq^:yLàKx#a5M-Xk#B+-7{6Hç9ua]= B!xG{Vij:1P}\RrCU/jPX#4^z_!4/êO7 #f9T{:zM6!3serz)[1rh\QGC7GYEX\l.w/?p"nO4m35y$x2\h~PèhéRCê4pV~1n:ZK(v^dDa1{0=N]éKcG=ME;&"D~vKS8P_%-W$m6D*c$wEêQd{~'E[&J_Yl-[4tngVu[tT}S8P_%-qkX\J6I3iù=_jXMZbyJmb
|
|
||||||
Jdqt{ax\g.)_hT*iO4L)+(pàXsF9'mçw]N9!=PC\&-dq\o!zD4èRKc2tXà
|
|
||||||
êhXNp!oOATEqç5xD;4NçM"*ù4K(v^#{+#9pzN_,lL!KRje_'Ft0K(3rC'1HB+0Gi&çm!P/B.Mù@wgqE:ycd9v8ASOçt=/S8sk9-#},0Eè^K6:S\g,
|
|
||||||
D5H7jbwF)^hHe5#4a
|
|
||||||
-h3w}à
|
|
||||||
êhZzpè3EWB2Mà%OF9yeg^Org4Oivx_f.x'Icpu]Z
|
|
||||||
p372kb5qW!x#CY"ocR#i1DTcU0oêQ_;Ly$b6N_Yl*fVsF
|
|
||||||
7O+éQFB=Qiè-_A8\EdZ*?"a\[r\)ézpC\"rç7LY:5pB.ZO}fJNIc+#ù?zrR@qi8P_Zr6)ê~ùBY&mA3uY!SIf8)IeTP(ewJ3éOGê2fi%Pm(Vx@ç2Kgè'lC&m~-
|
|
||||||
o{éC$c8q^!2tgQB#aV$((dEq;*1C:0NVd"A1%OoeSt:YC#[='Bd
|
|
||||||
*àK lbyKASC9r&sI;Uoù6j#àIMjbSK:rR-:1{5çv.;,LC!RàlYw{(5\}ZFMgYOExz\*6ù1serR-ç+u}%3hzjQEùX*4WQlê6
|
|
||||||
}àQêEV0DgoOANyq)%MEw1#ç~uH1TNi93\DW#9m8 ^%U$[9");1qçckn;ax_a6o=è'Gc7=K#ZLd$cP9êTvhè'pT^t}ASu+c0Kf8\(Z2j=h'}B^çFZ5-B,zZ[&/A?UmiU/)P0og7R}~pr}8FNA,t%çX*jê0-d6]}[ypmM"p:C7x(è0àçau,(+PB3F
|
|
||||||
)é(GêY/]7zG8*xBwT*BMUriT\(;Sd)ctqf@J]&l-:6S8?RLC!kn:=/I'TLlb"-XI'F!w?!4'l,1P[?{I*i=vJ
|
|
||||||
SM[6vb]8sE:zoù@jniX H&}=çXR$QUrj?'mAZhj.WOi.",hV"kUFr[/Q-?X*m.3-2éMI9n\)8y/c3[F:Lds+Nq[#smàlR/EWykè@fj.Kèh^]{f3/E8"*ê=KnvxMh0C'BSKE@ln]4BJê^p+?1/ê&N7:0o,sO{;TçBe=Jj5
|
|
||||||
kèy"5~QGd5 àPfrF6",(=KGé%-o}è0E;IKjeTI:W ZhXùjbvHà,hC.y$f.wly=P(O+p[VzH]oL(Y'nD
|
|
||||||
]{f1e)8&*à&M(vU/hé'K[U*cuZKkV0mdR$+ZT/SV'IDfR$mMwKgVm~n
|
|
||||||
/fLOl[zNA,lL(%wpeyIAtU$C8\HZ2j=k'GA@ç-ê=n&^"{éYùjZPr;whp9G {@2Fh3"BOSNù52fPGY).
|
|
||||||
mD6]Roç1ù(b=qz,LY?5q4cPn]6tGé
|
|
||||||
nA/MGà@s-%wH(Vn@kW/(è
|
|
||||||
}]3sBemnD@C$a#vB:PBTh"8é^"+X
|
|
||||||
-ê+s7çW!h9u_RVQk!
|
|
||||||
G{,cCnbYqA@Kcq6 #ù^J+!'/?JRiàQt,str?^qB"'Ke.RZù6/FY&GAUhl.&\ç^Rq~p
|
|
||||||
)éPNhYQ{x1JW7vnùY ew;#[d3p?TL~à^_{j?N}yzPi8&\eYM-x=whYV]2!L).WKl,OF]$ DZVJù%#9}TLEalpk~0Da7"-t1nd&N7Zx!B52E.TçkùRHjaMùQ.pk7wFiqu{?5IpDck#:=
|
|
||||||
E'
|
|
||||||
tBsS)Rzt]ZTMj+oZèytA\0HçZsC!5àiYOq:pP{à&s)~1fxc*nêP/;=]lèTei@xog3[Cêx_fRCk.#qm,x-eKOJé1@EWk0-(8xDwS#)XDGeUriêQ$;LOkcS*?uw*àKSF;y:]c0#B5/_9yHks1J:^K?"!Iga1ZçW"[\zrf% H,=#4~N/:OgP@&H3,MH.e=P6dTpBb kQUPA74]zW\EPTOi."E(@xXawoe5o%jXqA.4mgU"@àTeg@TLf@/~è1#DYI9Bz;-è4G!XBIaVk+)Qbe+s(ç !;bwaE]W[)e2*D7\$è&Jmu2Ià9tIa3{+%TF?UAld^tç7jq;X l8
|
|
||||||
K[rv_WHPm\RHj5 C!RàBê"}(pM].zN3~Omx3v{%*,yfLlçn\E~Q&od3uePQ\iau,(8gnfRr{V\%g^Oh7VG8*LDc~e[,Olê$*nbVJl5xE08J}7UiT9Q#,_$B90$(~/iùUq=8&*.Tç]YQ#B+iIéHKgY7wBTêwCA3I[tvKfV
|
|
||||||
j'5L)Y0lc^M6c0_à~oZ:3ùBa4Li4yCPWqiYO,:%\GZwNDè(HdNft9'/B%M@àTeg?2o]UO(a
|
|
||||||
MUc'{[u;v)é4t3WMkè1sWY3Iù%M@.0$;XDF]8[HéSoD.\$.SKcu!$kVM8A2plZObêaxm%U!;72#!T/h"5 &7
|
|
||||||
D?zP5~QGe3QE9GJ{X)KàV*0mç-qA^N}iOçC!Q?BX1Ic1rA\zJ;ZNpùzI, YEù5xX9wrù/ymù=fCê=è;Y Fw2$Bdv*1Y0Hê2/f%N9Bz;EalI]Vv:
|
|
||||||
,I[@THi~4 owxN(Mxli&K(v&_f5v;0!LBe2cj@Q}e1$D%kKh8L(ç0!k80EXI'F!w?D6Op:U"(~O#zZ"-9GH{@zn(T"iOW_%/^o]zO),vG2f4
|
|
||||||
kQR"jbv.f5NY?zp{8)qè6rk,Vêà,xHA1 n2E&!Y1}w~IV6umàX/~,0Mù%tG0~sE,ln)9v#bV$h6TbC~0_.5H]s\ERSu]ù=?*(è1ldu;$Ylt),sFé7r+Z1m;J
|
|
||||||
l:UMkYzadzrh8}LBX
|
|
||||||
J,SE574*AUL-aGKF^uI?prGbFsfZv#ù4 n2EwdY k9We{,
|
|
||||||
p(T/~Z0=I;avEhp
|
|
||||||
)éPNhYQ{WoR{XVId4]D9R$;ZD}cU F%mM;c\ç0Sq^?
|
|
||||||
td@RJ
|
|
||||||
0uCéOb?^uIèWJç~S}R^ ?tk+jXRqêH"A~{rèwhp%gyKAtTqB3A_ZU#]7zai@whé
|
|
||||||
\gxiD:3vkêOodqM(!Rà]a"IXpY)é4t3bOm.XK[e'èd=]o,Rem6DHCWw(8^tl0Cvb=P^èyoC+Rnpbo {cvpD*Ljw^*(@véè@/iêW_]+Pç01Nh:Uc)^"Ha^:i6Q/SUx_c+IC^O{A"ç/ZRKgrz)[1rh\0rd3sYùxà{V)}è&
|
|
||||||
}a&_9/vS*RSskYw#{ViF,=sG\0Hç6'j4G0{è)EùT/}:& ù/'*;UwWX3p2%uG?nrm6"pê$P#ù3*(WxE^#Xhè+pTZtJ9V"-tT*]~xm%QI=Y,Oo12wEv+/{5tG^#ym@P*D=vjê_'Ftu$c8sjç-\ù9IaF6QB!SJà+iFç~ù(b=qz+"p;5pF^$,.%/}@QêAZ()g4lWaVp(4L$;~elkà0hzePpa5riW",(2v]àFJE9v*^o"F@R/;=L}w4KVW2og&[F:sd{~PGd7L^YUpf^t8;SK[Sk2ê~RE'+ kWjJ:7M-,wG[r'_A6qL?uU-TUumay*-Xk_i~t!';thb&GR2u)eT àXMZdYphb'.?7LpùG#{ZQE?p'o:&qi5Q{^oK[.PèjWu([3/)XDo]ZrB%mN(è1-AS+FXGy$)b({éz'{Zz-26NFê4pV@Tpe'[{;'/h+N9.TN]Y2H!9BJbXI+~=q[3/m9-tfRjMAT*l:PJà~iqê1"5b
|
|
||||||
-ê^hk,=Kj6)IeS@RifUuù^j-?@u6bPMe4tZç1ùgavGA9QjPSqçWzFhp
|
|
||||||
]ù&qiè(1é2wFy),/WuoçnvV.vp:7OEè^dhé\kèu;q7woC6Rné1u+9T_èDU
|
|
||||||
Cfte(d&p:X0~e=MùL1E.#*m!rc)^"Ie3uiX"oS%rj9Q#=80p.+Q?"èpeaxI.HJ}9
|
|
||||||
ràqQ).Ràf^)qéps)%
|
|
||||||
N9/Q$x6\C.4P_&V"{é&q5b0_i4x-ù0)4hNHù%ghàzêàèNHézfC~ypDw]
|
|
||||||
9y"EM2og&[kêx*aLyKhWME@2nTb 8AR\çckl[3R_4-#ù^2#d^*6@êS\(bt-.#
|
|
||||||
jYUBT:snézIltT*]~xm%QI=9wmA&Pl!w?à7M{:~"Az{"dqL-è^sEWwly+"XeyqgW#%]SfF?&qjYsCénu;,DKg7tFja=K46Rly%tG8/êK~(}g4 F9'/à+LowyNiMNp?9w~eS/hLx-.~K-7yiTby89^rlZ=F[UAl:S!;èS_A&uB%PsZra}ê6v58z àZLtJ
|
|
||||||
^J-Xkm(8u_aU#g5Sae7*h8}_{%
|
|
||||||
Dé+J574*AUL-a à\WR}y%
|
|
||||||
_@SHE~(DboL[,yM2%
|
|
||||||
oanom~ylêv[L83oç+19é~M^à0Ij@7ymb1sW8vMçw]N9T"V,
|
|
||||||
éù9/(;mo{éw$cW*i7UiT%0kê^rg6xbfaLCç-pù9ugR&"j,VG:rRké\!=lvJ)^hH,X#45zHçTmXàz AkYN{eIQn"yGA7zZb+$5à0rdwh)àz*lW",.%/}@Qê[,uDgNf/~ypD6]Hé4Kk,xoC$
|
|
||||||
Bêm/ALPKç=
|
|
||||||
^,0$CV n;\:-t2K!W
|
|
||||||
{%Q*ej^O}e$KEè^q{~uF[Tl^i
|
|
||||||
tCV0},_rlêkF:=/ka-#k.jF.ZM6c1#j5y_ç1ùgaR ;9\)b5p4Wu,.6KoàFMeZo%q4\B~VI2WMl[16ùjb2Fç,hH9GK{^N}y&*i:&Ii+(HdSO]dvI@*^$91 gMO*ù4wCvx$]@xqfzJ-èRc)=tDa1k+hSsd8ulZ0![7u{A&'6bRtç5M_b08J}7UcC=B);3*B7JbG8ul:zok^O{AIMH8
|
|
||||||
\&7z$,SE5cSoAa/jPXàAYOl(pMG:Lêj,N-gUJ[aE/d* $.4NB1D2e+wHvQ_;XxE,d2xkUFG)~ym]S\hN3K(=]$cRNVd&A180)êW_fLzm!2vi7+GTbtpat:v91G?aN78+sCè\_iIJHZTG:r'I[1pA\&*iUh-g^oia"Jbp5/_a5H]sSERVQk!
|
|
||||||
G{,zZ;YL}7{ CqyE95àj7"E:ps(?Srù/Qmx6w[!z d4n@D0 g7u*1@LD%mHD@wkè";(71m]6Sk
|
|
||||||
7O+?eQq)U @b0 gSD/f9t_êQdAéz9g~ME@KcL=wD
|
|
||||||
7:méUKùZrE'5L}@pa;YçCZ=nB4vZ.+Jg7q.G3'jéx\45Rl(YgD?Qr39N*,5vnê"UHBXx_!=P57&#z3LeP=KA.O*çYKX.4t:V\fxè${Y
|
|
||||||
m(*\Cêx BdvA1WMCezdf%\9B4vhux#:4 n,TJ+^TJ[%rlç !A62#RVu[BèQ#(.x$è#qC8P#:QBCey'ltv}d%vDdx!{9&nRZrnY}sery}!&q.sjQê6"pPy h@TE?pqGZ
|
|
||||||
r{VPD!oK[eRèD*Qoé&NB6uH~$e pùR\]^){h5"BO4m9/tEùzJ{8v/23P(f1$mM
|
|
||||||
p(~[#Zsdl@x}b8 ^ê
|
|
||||||
*çZwmd7:[!w$B5-7)+KBbPEAT/h!}$jV kQ6/k9*.C;6LJdUM[tu$êa
|
|
||||||
7:RJ;sv-cz'i!/?!.\_,Sù}a&#iWL(cGrFcN}XpZGé4N[/Q$x&Nn@3-eé]Eé6 éM@Lù$tDbm*l.tE0YLj~+$qi5#%,XLF9V-h4]}ànoE%Jé]Ww{eSH:YCJdVLBTlQC~v#?yu[Y"KS&u(aUNCbua;UKhé}Ger0I.U"(~O#z9\lczNhy)Pè5\oO4VMCè0E.&ç]YQ#B+i_gH/g%U.?ZsC!6oiW
|
|
||||||
[y6MBàxMe7(JêUqF8vM!*P{,0rV^xoC5QD9yM;0C2[=v_alskWw$a1:gc0#?UA{bcnNB,Qéd~Mkù
|
|
||||||
oaLM$e# _éUn!bRJ
|
|
||||||
UKAcxb;atj:+oaséE;ZM69PJ!8Oq.Hpja4#C5 kùyà;.QHè&mXY4q3+NH.S\B~3è(^P}Z!Yrh?&mz^y]!Toçy)vg%rG.znù/yGg5"F9Uè(VN)wT FéJéêXr~;zMùL\$à3LBuP#:4uk
|
|
||||||
1Ol9T-[U i:-L{RB8$2uHé}GAV\xq[2;mé2GT+wDa1{+!3bc8'mfQK}s\}àZç-b=$jXM)dHP.\@Gù7NYbzp;ê)}h+g]8FIgWt*x@ {8vMçw]Qa4viMNp?9w~%1*]%cRlè@"DO1n[bo%kXvWe'è(8x)a~pVd
|
|
||||||
}]'[]e2deéN{f@JD7ycCV :
|
|
||||||
fpD!xbd8ND:R!]?uliIQ]"1\(XzZb6LB?P.!9Q}ùysçh6TASà'I9+KB5ua]= Gc1sgV mQ^"h9&od3uY?=MfZ3,e4MXe&L[Z\{ù=EWçzFD6L)wxv[,uF1YwEêxdA~'9èU'_éUnT,u}ùRuEWçzFD6L)wW#V%wm]5[Eé0Mh0C2[=v_als]Z"né1M(tvse~
|
|
||||||
{'0t{sv-cz'i!}\A8N)ç1{5;S})^/jP5o4.O/cp"D84oDV'%!@TKH"
|
|
||||||
I).'IbHvi90H(5G6"èqg?R,!4/B8&_gW(pè3qWZxGd%MowzN(%2_?@/j8Vd;9v-hS*cu9-[~S8dTvB7O$dJ
|
|
||||||
jb0!A.0-X1@r~82*lYzmc3vBuR*e@BE:7JlX'sS~Q!'."kèSGiTç)!V?D4\k,SùjZPr;PhM,zs] wqBpu]Z
|
|
||||||
p34MG?1Jn73B2VLjé0rV^v_ z&'Cg5D4YOn(3PX.yo)7o%
|
|
Loading…
Reference in New Issue