summaryrefslogtreecommitdiff
path: root/lib/mpi
AgeCommit message (Expand)AuthorFilesLines
2017-08-22Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6Herbert Xu1-1/+3
2017-08-22lib/mpi: kunmap after finishing accessing bufferStephan Mueller1-1/+3
2017-08-17lib/mpi: fix build with clangStefan Agner1-12/+12
2016-11-25mpi: Fix NULL ptr dereference in mpi_powm() [ver #3]Andrey Ryabinin1-1/+6
2016-07-29lib/mpi: Fix SG miter leakHerbert Xu1-7/+7
2016-07-01lib/mpi: Do not do sg_virtHerbert Xu1-36/+50
2016-07-01crypto: rsa - Generate fixed-length outputHerbert Xu1-29/+26
2016-05-31lib/mpi: refactor mpi_read_from_buffer() in terms of mpi_read_raw_data()Nicolai Stange1-21/+3
2016-05-31lib/mpi: mpi_read_from_buffer(): sanitize short buffer printkNicolai Stange1-2/+2
2016-05-31lib/mpi: mpi_read_from_buffer(): return -EINVAL upon too short bufferNicolai Stange1-10/+8
2016-05-31lib/mpi: mpi_read_from_buffer(): return error codeNicolai Stange1-3/+3
2016-05-31lib/mpi: mpi_read_raw_data(): fix nbits calculationNicolai Stange1-1/+1
2016-05-31lib/mpi: mpi_read_raw_data(): purge redundant clearing of nbitsNicolai Stange1-2/+0
2016-05-31lib/mpi: purge mpi_set_buffer()Nicolai Stange1-76/+0
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): fix out-of-bounds buffer accessNicolai Stange1-3/+0
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): sanitize meaning of indicesNicolai Stange1-6/+3
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): fix nbits calculationNicolai Stange1-1/+2
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): purge redundant clearing of nbitsNicolai Stange1-2/+0
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): don't include leading zero SGEs in nbytesNicolai Stange1-6/+2
2016-04-05lib/mpi: mpi_read_raw_from_sgl(): replace len argument by nbytesNicolai Stange1-4/+4
2016-04-05lib/mpi: mpi_read_buffer(): fix buffer overflowNicolai Stange1-10/+3
2016-04-05lib/mpi: mpi_read_buffer(): replace open coded endian conversionNicolai Stange1-15/+12
2016-04-05lib/mpi: mpi_read_buffer(): optimize skipping of leading zero limbsNicolai Stange1-10/+8
2016-04-05lib/mpi: mpi_write_sgl(): replace open coded endian conversionNicolai Stange1-16/+11
2016-04-05lib/mpi: mpi_write_sgl(): fix out-of-bounds stack accessNicolai Stange1-5/+1
2016-04-05lib/mpi: mpi_write_sgl(): purge redundant pointer arithmeticNicolai Stange1-2/+1
2016-04-05lib/mpi: mpi_write_sgl(): fix style issue with lzero decrementNicolai Stange1-2/+2
2016-04-05lib/mpi: mpi_write_sgl(): fix skipping of leading zero limbsNicolai Stange1-12/+9
2016-02-28lib/mpi: use "static inline" instead of "extern inline"Arnd Bergmann2-5/+5
2016-02-28lib/mpi: avoid assembler warningArnd Bergmann1-1/+1
2016-02-28lib/mpi: Endianness fixMichal Marek1-18/+21
2015-11-17lib/mpi: only require buffers as big as needed for the integerAndrzej Zaborowski1-4/+17
2015-11-06Merge tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds2-2/+2
2015-10-20lib/mpi: fix off by one in mpi_read_raw_from_sglStephan Mueller1-1/+4
2015-10-15move count_zeroes.h out of asm-genericChristoph Hellwig2-2/+2
2015-10-14lib/mpi: Add mpi sgl helpersTadeusz Struk1-0/+196
2015-08-25MPI: Fix mpi_read_bufferTadeusz Struk1-13/+25
2015-06-22Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6Linus Torvalds2-22/+71
2015-06-16MPILIB: add mpi_read_buf() and mpi_get_size() helpersTadeusz Struk2-22/+71
2015-06-13MPI: MIPS: Fix compilation error with GCC 5.1Jaedon Shin1-2/+2
2015-01-14MPILIB: Fix comparison of negative MPIsRasmus Villemoes1-1/+1
2015-01-14MPILIB: Fix obvious but harmless typoRasmus Villemoes1-1/+1
2015-01-14MPILIB: Deobfuscate mpi_cmpRasmus Villemoes1-5/+3
2013-09-25MPILIB: add module description and licenseKonstantin Khlebnikov1-0/+3
2013-07-19alpha: Modernize lib/mpi/longlong.hRichard Henderson1-10/+7
2013-06-12lib/mpi/mpicoder.c: looping issue, need stop when equal to zero, found by 'EX...Chen Gang1-1/+1
2013-05-24MPILIB: disable usage of floating point registers on pariscHelge Deller1-2/+3
2013-02-01mpilib: use DIV_ROUND_UP and remove unused macrosAndy Shevchenko2-8/+4
2012-11-23MPI: Fix compilation on MIPS with GCC 4.4 and newerManuel Lauss1-2/+17
2012-10-08MPILIB: Provide a function to read raw data into an MPIDavid Howells1-0/+55
DT&{cE"Ag:83s)\i]Gp5vZ>ZjD3Iz-C瓴**W-P4yϕG:-7`nZBB!Bl]\3bA KǗwuVKDȎ-aMd3qeko|mt1R0[`USyҵ4=W@vC|x S6ƽ|FϘ߷Tg+vcuP4!ܫG,n@J@}~ӳpsY{aoHB_h?#Bm,8M#ob&J9puP$D #ǹn~KYco\GЌ&}xR$tf|mZѹclIt5vGn9OMp%ӝE(G.TW 467@/~$H6!@_hYse9]R(7U v3~1><<ѫ@p*hP,aG|{9jێ wfb{kIJӥr*9Ki MHa9=/~p$;#4*lqtix8˳E~xu;fԀG&{xT9H`5{ `,9_ʋCo{g#NlD$ǬEȟind.tՍ.7}2Fhqk\Q0Y⏂c^=f]it$񗒵WQ7БO-Lۇ!UoinH"co y)5m:# s%BUʋ9{Ɍ,OCUb <| _4s]M/bt1\Y{&WsW$ٜ <+YǗa{VNPKcŇ S$Xe6P/d/T渄}}{pDV#sVfNp 3K;Go|z[3c`ᵳdtXꀬx% -p"C O,wOVEiJ=#Ҙ߃CT_Ie ' (zWC-wdOPl Rz9J 5w^(bm% ڏk욄yjȢ yl ܻlXMcywF"{g a3 ;a~ڼQov!$V%RZҥGUaE"5ďܵ#Xn3Uf :u Km Mf٤i*4Aܩ@d-Xkӵē'As7MT~`Dn@n)SLBa.RRBŎGT+.IaZONǓ㾮LB4KLɥ<Sv⳻ Z w iL!!=2:0$a10bCmQ5͖H [ ngU$AM>|]QY|Ϫs\ҟ$(%H_šd:ːY9Cq--[.2N \\691#Q.g ^0,.]IS?+Ru#½ E=qs_W<VvVyaoSQntd‘5F̍_`"ɂ7 /r珲;Dz6@٣{ ])O JY{mH~@W}lBEj~ \[S4DG 4`X!=b yY<5~jhJdxjEG­z]K Ղ5#zh2t[Fr4!x 41 t pVFgЙTpv^!AO 7p+:OAh;R{$K pt?ڞۭ l@sW̶z#}DܑiH;;kW9Mu7?tGS$BTE[FOkoN{whߦ^cJɬBut@ dm MoZ MJ tD-3qF?'nչ=J(R5}>= ՊW [XKM'u[.`)EJ.0N9 OA1ܬ &138FȌ%=oIs*g!-SkHCZ56CZ[e|b&(|tW,i2W[뫅!z/{}P[Ŏ=K>@w3oZ.Kk{elkJ$[LAڛz7yن"y&NlmѪVi&*IvCfͶPY~pөHVO?Mi ˑ.@'#,2^ܵz筅Qb6B aYW i‚ch4,ϴ=UBSuNꭒ\[+|q9e I|e F̷hnik4YMsN;H#p.otou4ϱ__pIw/"7q8 x /s3p(mg8ҹN_@_֍cZ8 ֵ@aͩRC{P0ꩻrEH-w)n NiNpRVVBQomem_-&'b!^{Y+Hy^x`n[&T'uTƘ۝p,7B}n$ *vdJ/KlM CN\^R7f?5A_خOTs4]G EJQ 4MT{QpJ1sg 473r9 ?o'j͉ œ%\8*q0hf5Yjzl!{fz>{ wVmm:l[#,n&f*6ӑ"SD;Ӟ.M:CͦCA `tI6UK7_-ˈvy봀H6G'X;'"n#ާϛhm ZQSÉӴ8!F80DRpZǤ$'cBfƍv dEl H1wN$Khq$3!pXTʉ@qMᵕhmCH"uLgm|9p$.ɷłXm6Fn0't,}(lIJ#񘾢WhaH]<ex ŁEni`|Ez20ciFe4l Ms|QDMVs| ?fz "anݹ~d3{,ߕ ^' e^' @W)#.. U,? /MA5s)c+iP$:Ҍ ZG6 l(͖^r ';:8PQ?s+St>_ߍ->^=/_#Tά |X$n!#a J|x\&T[Lkg#rJ'og]Gs:Q7mEi^} O$)<6H`(6^Q91D0/kaS _eB[6zY`Z1S@Y>,^oG+O&wAccCp&TIM]nt9֘s= qmM/8]$tK Ț>wU 9RMVoeߟ4+nW<41G YW!MOjeHHvx@D/;Z%S-p#< =jHG& 527/eƴ7&kg8~SMiC;[ڪUvt>6ݖzj@N3ĒTs>aU Q,_2L'hlD[_CA d9h5@HJ*!N%r1̫gϬ÷_Yb(*p8:`yB20с\ VLhлҼ&]Zl`o5suK fJSZksB-Uan;#)o5uu'\RLHvi*:v%~?(sBx" tYt M X^)N;c^ֱi^O*׶nv4IfEU Q[f,ʊq+ӷ`=OJ6j*Yel$rɔJX7\-[}H4Cg-Tcc*`Yw$Ē몱gI : | -fGo'Z"Ur Vu"Um$'W< ns}K.i@lB d] ;DAVN 4$fg658qծ+!-r{$N{jIĚ qШ 8Fy,VXG-5KBu3רx )%&OvOjmG),x&o<ގYU[^P^J9q:5(0nnjv3EϽɡ 4DlV`擱A\*YiGa3r]i⫓k.ڗVғ79{:^N2b@8U2kcCxoV@|=jfL&kNTOV]CI{/.8AC'0skվB 8C} k6H7 Ƨa"pܤPrq=[zRhȓKR3ְѝ6zڏ6x?㶷##U"Gk!mXsl~C Jm_V|"-]()NYSGg{nk NGCBtJj^`y<|{u 7r?-Yd"ĞS--#¶Ζ}9&0OxʹXƇ$}ّ/LƯݴY*h;%g,Ovs(@|z{q6.FB׶rzE)I^^nݡ/]eOE^g'6EdY"wpm]HHcf@݌Y % =L 77u*=uak9׍A7^k~+4ͪ:ZyWQ޾/#>[eM:uD )= Jk#V %6"d2آinAh' zs.G-t]$ߒqXd n&Z87VHP< 6Sigr=:> Ks =m.K)H[{+-qRFGBv X69546EIlbēАrXLOG$+0}gI$,Un\}|YuQr7[^dj>Yzi3m?؀6W\XU;2 ^m[F;GUGgV>W Kq3?NU&dELѣ-Rp˵IBH;[z/e"թ>p7:Ge*-\Xj;L°fV<( 39Dۯ4\<\8pa!}VF6^2nTS2||"\oVF}Kb,le,6b!|^]]]٧=E 8'U=!'$8WuvFlQ)ё4j(fL椚B@`Om&LR;hĆ+` CZ_P('ٳ}cikcI 2r孙ߘ8om:j_yYVlu#vzer&GkL}|h~WQ߭6ݥW{G^-#l]ԕmX$:2Xj{'|bko M~L=|.;iD萻h?));PfQQF|`,&?CJ}b6it;B!*H{XY.q9/bp;%9 L3$G"z"3RI]kY@Z.eT+&m6r4HRl2it7E o{ pohܵ4 -(hv},d^)wmVm6>$!O8֐c57/@sqZ .$kƎga%ŕpĜ<¼Ļ|NU@rk~qP?:3ho=x򒍁<%YFqu&͑D͖j 5 JFSDZ:5b /4-TV$p7ǒyKH.=JNc2]<Oh Hz:ï$pKald/ַVs $&%\2ys[DyB]Y4.Awb]4p~TfE5CBA78>wݖTK䀙{EW$5`;2ȆZd'yЂ`ͩf$w$UWըKg(r"sDN}$5vBd{QLK#'v 6@(DzbF CS%d+aG X‰znGR2BӄD[7qʋ+j%P7)ImG:#גҗEyL08]qdutTZM$zC՞fQ 6fM>7 \aQw'mѯȵ4< ૣ d]mKcGP7A~iӵYFTI_ke-YP3Ĕo &ҥ_=dy D>CDC1U<`]K'D2јg5zX"P8eR7Й7 6ҨGqtݯ}f;iYF?UMfՙ6g}Mf¡ֽkʲm.hrrp6hV! G;-`)[+d2E;-|9L9Ǝ, ] ݩ#Lav')8UK-ǹL`X·8ɭN"Wa6F yMMST*/%.U1N:/Tv#5!ی<'HY)j6M6+?چh,^/K6z)}B&,<3& +yzn(4$FZOsK!Bz5(8F QڥiՐUZº>b]cU>aH&.Ÿxᆍ{{GעJa' -x3C#ZZV Z*,MuywTFWR2uY ̿Y[$ !ÒLPaC;FDV! 2 ' [BJX^3gIR:(4KabRbK[cg7";RTWޟrZl҅O8/ ݓ_zNg9Ra4Mz"W!ɦRIK5]ydYބLN){ol8Xl4ڌ}z\[ :E~kh=d1`sSX'&9h~NϤM"9uvx[ ABqHՉ,G!%V?\Q#={ ~~1vON.6G?&$tu#$O`iEGE$syᐌRQ7In׊w Lyǟ~LcŢ&YHZFoDHvn uo]p߂\OD-P-D#e!ʹE;^BL=p/5ѹ7WWL`98`zz_oIζGs1k zL6 %\K2c1vP4Mͻb:RFJF-`K*z> I` 6o:*%6 4׷"Pݐr-wD;Yty&3ReSU"E*"1aAVĎf'Yki<Is$Z DG?ȗe<>""jiXF6R9IcV1r_w$'>#"Ao:}'ݰ؆(uAJYV]ʅ_/SLҭX`A9bΊkߣY$l Vw1z!E<,{wm6fe/C=J'i{o `9)վZ7(~l7EISigh7{)ڑkի^S]Agz@K^ %;2lv<gLL[ DJ&9 Tz݅35JP<$3vep&ojrY NV#%S&t}s=߫dGC:5h 㤄Z?JKXڅ׌Wpy=)LRQ|5q f0El+ˋ,[rR]r,p_+aTyG:" %+J3?H˂4*~p L lv-.*8{ |jDgʝ˽>νC<֞eDAh3iif{ ջ#R6Tv 5\ O.$@Pn5, 1U$xswH/G5y)]dMNs@<| aPJ1R_9jYKYI;}P$139d6FO̜jav۹>^]l G|aM%xrYaa^Z s)ل}aֆd3 Mjz5ۑ\Po&Ϟ,''`S8dcOsqDɭvMc.&GD1g~.\'~5\/q|6@J 2gwtG:#bv]q;o7ǭz`6#3rHPrD9[-`'2,Wc'4YVik4}Gc^2O_ mOv '?Kcﵪ݂v;Z0cts}AlZuJ༥;1 !Sdc8960:|8FpwOLZivC{4g"I2bL~K$#cu]2ٿI}6nPCTB8_wUx׸TESV`#O |ȤS_HKe/pwWQNQ.DFL:]/Eў'F8^j<~gG$/s5Nt,mɥ>%UGI/k#=9-OTn93#;tq}-A5-_'[-4?;XDBb.ktbMqĖgK6q+ɌH`Oz.?> ?e.Zg.6!&Y=JJ 6&3yL3Ι8IO99wj MPVTfӺ}E~BlC_ dhz Y]YX"8>P6fޥXɱC-"Y6}p6?]\~}0;*ӀT3|z*xgDPbz4Jr7jbƒf-=}Ⱦ>^Ε$z!ZS[VP+(6hRN* fC#)TyޑXH6vŐf1G?< zx,m$5>' q>x&$7U&i|$fs7&QٰLƓͺL䥪QoUzN p]ֱNC>n衷G$>vd/fv&LƬԦV sXGx4A(]\x@s!_gndT|pё:j P#VѬH2_gGi.S%= "gd34/^ (85f^>wjtu.g ַkDzF :A,YGUsio~?vnkhqc!|MzM|gHF-wM9N黱3 %w9Ȅ1 XW_(I!+Q1_a9$+iիtvd{=wA^rj3l8$>_^ۤ1:rcd79JC4NeBPfr_Jm?IbyFz_& ;\fVusiU3ZMKRjBmTz/c)? +.xv6PfC*^(?A{G@4)Yw$%9)Z5lXuFQ 1 ESFԹZ6 X~iQDVt!Ө2vdV)dҦOt)ޅP;Y:+7j!$(DRŇ0۩IymB״>A߆_ՏrP>Jprڤ(0 8KntZ $Kn*'t{lH`ao:XuUHXcuW)tW-xq,Q6f=FN;VpQQ] GdSQgMsp)kC:GzW&Q\EԶGȁf^;/Ю##msD2COȵ>}$3:yx<%;4Řٓ( >YV[E(%P/&m4f=%i?2=՝oHFSE#q\~Ep P젭0 m|zX\rV/C޴H:qg$m,}g%sL=Y]ds!5,hpC揜 {^X:XPTj*~yFrc_[u:=I oJfp~~8Np!Rbr=dArh.zY`:Kk^&@~ꦚ'35m?ј>z4Ueը3VAp /Q.t'qE+h7zH JYRuㄺ?‰PaW2HT$mQgڛ4p7HL7! ?d*4EМ6u)u _I5NE> [P 5 0H'Ho[֙_Y7j4[vuE)h8 Zf[p& rh㇮( 'm2SܠF0Hb&}$Mu\9"-ɸrS^4TwKwC_ңP.0y^(C̅ M{;Up4ч7|q&Ғ$$",QjH"D,`ܶx) ހ¨BQ)0J";M|ԙsZ,U1ƞn77 5kN|)QDJYuZ_\4^-2\ ;B4>,kQ@Hdcp V6d32vZʃOHπaJ_\b.΍ysA}8MaP'Z޲#Kk?9ҮmlfTJ?ʉQuԟ/?V%oms%s?Bh<#Y/a.٤?\yv}ƨw~I yK {gÅڡV5bN PJ:Vi4\H}fA׽IHoa>r3v,ӁBN?.U?{LcQ'vɮfhp<{ 3c !fK(, aAyf8xZWC{knf޵aűt&Y_6y&Y& $Wb2-Ҹ 8ӄ ݺ Jp?W*-gl/XbRL(< У]oľ^|9x#=~`C q1@"gߥE7V;A7zEd[;^?'(zj.}N1yh&U@{4UfʦrLgpffbf%m(,y6Y;x!K)%y$1 Bwe98] ͯ^,96OMڇ{[%4.UӭF(FBlb뿀G- g| rtn6uKoAZWa&jUhJ"Ǧ3dʯ%Z- {8=ٶZ)Q^9_IyZWtHEC!|gi5#M/BJŁ<_47k>X¶8`{tH dy#0 iוJ(ZJj$l Hj7K[EYUs̏ʏ@:n.o2G\ahbuoS<54\YDC{l0dB GN6 -q=OTAD3Y'Yu6*f916KQS^'Vˍ_Ov+9mγX?=Y,%/ش/%uu$qߥnF @RZ/VZ@7O|2O7 HlHx;[2X邂ZB.xhnMft1cـР;Wge(v+WO4 ɒ9a*4ewE?X"C7Cjnt4B (c?G$ Uk*N{^3:ZE(XF'k:lZSAZsGl=Ζ]>NcCLXK`6 jҘw4PgMO"X _=<(b_#q[4# aMQXI2cKˣt*L[y83 H$r>o ϟ=8$O܃֯'ITl#Z'#JNӆjG~L#3NcuR1;|ҪQgj|WAڪQ&i ?e;jȱyT[@=FW =TCrJj2澢 {ؘv?+'|-Nа͡7݆i4 a̼E &TfI;e|s|^a90-4$,N숬̌zF| oCЁ~n53S-vӇvXXDjGB3WL#Wej0]di w&sBAA]~GC;.N7$[Li,āV4twgO?C\ScqaMȡyVѡٕ{-2|3Y+k&d3y7ɓU(Aag l)wPWI>Dh@h?ogkY!f a@g"qe.Ռs#?:p# ]8+ ԧvvwMˑr I|˥we-AmN ֣b%W!{0@dA"&vlFzfFI]rQJ{7VǑ<[E]~V拌_-L `TWƘџ((nw pTNR>/9]a|DxAeQi.ՔV1j>4w蝫~i5h3[zT,TdmrK 7z>js =s;ӕA: ?w<݋ 5qy!ڍ^ P5 U;lϕ4~5m@Hx׎F Ҟ+0G ҳZ{n?] ,?T0Sy Z慑,iI:H E޹ʼꥦ9BTa7a!pr)S1{n૰nUH15[;/AGN]jjDUE?4uxl8bNLsk]C> - s #Y ؍%u KCYBzc3QiՑfGV$R[6E1f\׍ev|ѾAcyYP}A›g9?fj7bS|HMMs!O7&ad4꘭ꎚUֻ"[2dM?&)8C*E7&n)+s>l Qe!}DY§X&BSb N+ 1#Kgrt_֡wby yEy4`D}$dbn})FF.}¥ܜo,۫"ާ2jcd`"sg))Ĉ|ˣ;:;OT'#{ݛzA8W߬[9iM0n]hg)+3 #k& ԕAp U&?2wF,Kp~&SB(!0;m0wv;Lp~"OcJ;( ,uⶡKT HHݝ' =VSC@v3I)_Rjw[p@1pSnvrCfzbOMQ|2\'6F) F| ܰ N=l^oJrIVrjNfS=iU}!uB $W%L4̽u-Nl]򗆕$Td5&uIo(I{TgS)7|4"=hMHk'2%E̐/QI5kLĄY%6-:cС+q%K5? /tZ|`7|N;XC"%섪Ŕ-^O C_9:` / 2/S/-ِE{ʶ,ru\ d^8JXu"UOBvI ;wp!^/b; X .<;29)ɐ >^z\F~Š(MW,;fCDiիYeB^zH7Yp{ȟGXpi|7.G.8.ݸ&+2g*&Vs|ޔ8⛍7;=~yh <\/9ˆ%KVޑr+܃ex#Ш8o(yywc<"n̳ux#) `Md8L4o!=ɻ]|t}t}gPLڬ j FڤA1Tf!AW ڸ>{\}^\ݡBM[ I׾/X6jr{~Ukڥ^.,]B۫;_[ xSg1Xx"{i腦;$U+呹S$1z.loeo^Yw1:Ka=ZƆ2Af5`~ۨa2 iwG.pz]aS T>0Q|E`h 1 (gC$w^J(ͭい@9=`+A jf8"qѐǕ@זKb7Hh Œl~ |?~|c.g2 sk< -HHit<den;O#זm,5z73sx$1X  M\9UFL%6H^t;^9K&0m'pX0MD_dFA:(0'ҟy|t3Ui{>-b;0%*R}$b8z<]`.oDz4JqOy8(If@ sڎbNNS+ݞ#FB}ȑZR:q_{_⓻r=ɶfm1CKWЛٯm5+H|p"2q<$lWhSꏄٯNB#޼' ilR.ҩZ:`6C_+j-?9LH/] [x ?nȡ%G*QF{.3-SH Uc$! GPK8"_6W #-]F+:[l9) -/I姜º53XYޥ>l5L3HqH9``~? anx+TฤΙA׎DzXއ!]\CpQNZ5 L7AT#Dr@-H]68tZ.}Z5vYܬ.Tvo)d*]Qc) ِ@+ի!7f6;کDYzm5A]L0Xܑ9LOy4Kxp;F4)pݎ4ayQlWefY//_%w9%62 KR)Pe6SNL|ҪEǬkJif!dSOF#H˭Ҭh@ {_6"X'6A oWifxJѳ]f딞U+Q~3Ou0zPlm!ܬ7Eu^;y?u5j oomUFٗ<'^CnKmGђ2D#/Zxj'_Hv(\GK?pD$.f^;{r'+=e|;z)|\vi;qY`}h"Mm;+M8ݢiJϒ>Pm@[Eٟ-XsFF4 U Jvge/E"g_Dކ|D̹< 8I 5u䒫r };xp7V>${Pxgba6kUDlamgK?#6Ƃ6( - t|!d mi#DY4b(D0[rwUp r-xA[!~)GE-4dusF O{5,Tݨ:yj_5M[h}`j@3So\;..ݙ\r=Z @$G6ՍɮX+?nTycEm'!-넞e}X{yR>=@u}Alr:i|PWGELEHC']K3 =>ꏁ/\iVe@sb iRj#%\%KK2~fAVNhڭH!{%O +D쩰`, HkK4t1庘)\=i~ pЯʄhf`"S(`y+C6fУG!fAk+ VZxlѵ+4trЉ>'U_ͼ2肩:/T#=EifSO*v T(B&<"euc.s;٘W dzٰ郭?Vç-^b 'U3 # 1l+́q2>!j'xZL}4n3eO=[n#ٯ;V ),+eڪ6ЊƷhmxp',tvb U먘)*muOvÁ|>kӢsAUNSGgzzfM^Ԁtːx,#ek ; ]vӝދ^nO:]z9zXM^XfMrp)X[ ɔjП՘G\ZPj܁%ƆyS^lݽu[|XJ&tD*]C e>(Wje.~{hCM&'d8@<_.5b7/>fdqd;528ot@1AW&a¢1TMUCIt!Q2$bIȪdpuLLuGp"9}2 :Oo>'ɳ>l< qaxҢx.Ka: a$GDZtȅ_ʋ`ڼ)+T^a\ĎDDe&#pvDYu{Al,ĩ1^b4egh!iWɨC52:/,Nm[ 9YLMǜ@F-Ұ[IHxQl+`[!g IEW{"4=Pch/|nxQgωLhF"M/kx1$;OʮI3iE^pJ".t) XZL5FrZm^ b~:w#2CGFLݺN ] lS}r?"d'(K/`-|7yN#J1Ի_IH]7T5QMl7fXOmz=((.IqGRdakY˫7,be Xz&ԫRUf1-eu>RWZ]?>2ǖr;ap[]sh5Q  dlkNI>l`S!^G@8g$ܥrNTprwu|X d'&S0+KI8u$\8/RRtFDFYCi1? RuLմ[]=6Mm5EB}LŽ`lTwI+91K3ŎZV)rT5؅{'Q)뵛RhmZȎ4BMÖNԴr Xh L'j6V $U{tLdBI?^ZѴnԤ6\z֧$^H>ϰ$OB$509N$,/Jlۺb<t㻨$a@nl6OAn~*4zRM#|1qe}; :ӔHn/OEՂ^z`eO tl/;dE$r~F4,W>-NنBX0pdp&WvV1lBAbrt-[}m1: p( r‰)yvӖNOj][hܜlV w{jH귧T)p p~6ܻi2k{M>%qYy68'#˛7 08gV[{|ĸ J,>[ XOvid-d>6YiI5^vG(OJQo(uANz=w7BpL1b ڛLf}X E"LR fT.A$i517A`ʦ]ϺH)ڮْDUioMdbL.EZ\Q,jg Ds-Yl}3񖱯l~IFFۢ)Lu kbBo[]:nHnw(7*nq=L5S|5Yʐ- dVA(Eb0E|A $u:Esqg%‡!buo^ˑ5O4cc4܀̹]nde)hk=,LNRtJ?tSZE0&L~oeJlgU3Rb׆Hj6;UA<$C v_ {rfC]y4vۦSs4z2[zo'bot ΙghMm)6脔>!-M]dqrhp\}EWD74⺩oEM*P+܄҉2{ڝvf t:<ȑlWsQrcJO֊}O>CrۢQ[rf+[IBRZ2@m4OevxϛW\y i~nUndFk `招c2Q1pa }ƱlVD%Gsc?+\4&Pp[ɷl0\zP쵎6e+#vǹ-t&Z{ֆէBSgQ''yx;>I^hG#D$iE-}"C Hd 糧VHoe|ް9-Jyn8Tw4N|1{3HI~+.LɆiPa?+[熺h=qR9݂Dc=n98m%%uؔDlً FOp!vݱ(D_jV0M Y/Oǧ41-AS0Mf]gx\yO[}~mD4u-kUítqV v7 `2486#MASd:$ wIkXAbi I@a6I+ܪ XVMy! Oasrvha{)4夃CsvpZ95rsV|!_ 6Υ=?:Fv:ȕa.FWR" =wIZ y>h)0 D]x䈼)Τedno zj-,7%yjSsރǷF|7{JabN2@utt=4m@;V3)"50D%)xKZw>_H2F51Y/(yWjHYzw)ui7Qy o%sa,$y_>qռ3M_[!:/^$TiH&kz BJZΆw(8%@AKjhhA %Jl3w# Z~:L[=R7glq6cPnclhQw-CK9% D(=(㯎쮺Nr@uM깏EӜLuc@~P<F oC7zI(tWE9yB5]&mQCծq @<wD {9㒬y`6pنUf>npQ-Q` 7X15`!-\֢R;Sڪcqp`1*sa>`0#u*JB>5#u_:3BB~/D;`IS.,Tw\I mgpљ^8r_HXie] t' =m Pۦ29t4%g+@KF? h$jx㥤PI'x_coI"}I'R{ms$퐄b¶w:/ }ϞQN}ݟ=%kH4ڽZ9kkrY,ڷ:m F wQ܎' ^I!4)R&YjO9Sk6# GfWgvZOom2{s辏%X $?DO\3?σuRyXރGĸdC /@"z^TxIV!{w0߃ 7(%K :_,a,ݘ jlܴvA>L #J͐ fW?^!G:lw tp39i_ 6zQN_봧4t1LLUMfJ0]5[ g(ŠQ<[pB "JcpyIG'[V'+ 6&PUT&a]U{K.SyQa<ݨ(n I ĸ\ a?3=+p aQ'kZMfOӎ59R9@4K.$dž>Aռ,J>0]C d(,qhbn}> wUUʬ&8EmZ`7~ (SP 1ƽ,sLIr!|ߍch 'jVWMJfj6GwuKbNQؙVGM>.X}<3ELj %iẖ. d[+&Kk Uo(;yOzZ W"@ZPp֟B9b0jk<l^=2=abuo[b7rs,MG"އ/' W/|el.8)WܪO^%[apvQT?5q:ßHn0O.Bki}l46IๅUn _XY~PCbnUHwu1+DLfPGNo>'p^t ^K#O܉DUd]ᐻDexc85Or|IJ =ʗ_OJ{aX6^qC0ozfI!IgWϢpLiOOkjƳW;ƹeS#FW7:8^ZU9X '97`i_Fqht ~zЦ?綎Ҳ UQ),Q}B糲ֱzm:K證#'bNC<.=nEh =Om HiSЯ[MkM.n#W㠊kJ];9s7,/5/:Q7fy??Y~g+8nYZfmZ4NjWvܱ 4tv/w/6NJFi/ԤO"B[Ӈ?olhl|RϯNm/O>Uɉ#zBuaԫD6Hbp߿jGWlw]Wq`~7~Gw6]{X1aEHL, ey.Rf],CzQ)`r$.0;`JȒ+E&8dCpen/Us6H,v GjC&HY{JOc= [O>~qt޷y즩u{/ RQ08'F V[,Ox=C6X[/\*t~[[<7'3"n02Ғ:oVΚ<ý=3n;)1+C L3.iӬo:';ь~ f<J`~s]`|<h@|&֯y؄Mmh߹t@tdj|7xH]wٻƌ9VA耎$]=rt&ܴ)DwH}‚%poDscaE&>Y!{W ,/ t3е4]~ev]XR1*w4wݑ"61L6^0jo;F$I,o/Xh6:48WZg 8`VrC{[b6.Ӕ.'biqEAhT@1Eo1p==I0b"OĭGAe'+|R7doK2c8ߦX00-6Z3-ȱ5!,:#>Z^j:҆gE76oyIF{Booy|Tfc@^TxGN{oʃ\KRMFfSUӭmzT\ꏬI1 KŹ_2=?yd؉2d]@{&-לjh!-{J@b#iQ]i)cO-SVgd> nV>xFS?*FG lCWbFoMpjҋ4xv'_Lku{.DoNjzV-ЬVwЩQ;Pck*^HkatCt# )1VN3d7ۙL%g;YM-n޿徉d^bUPGΗEhCą ;+H'~ o;_|駠 U;tZD_U\˃A(,4]Re8yBȮ,[ q>{9@DXS!NsAl AAa; `pU?BWi<98Ac:3)6<&-ɫF1˓)7WkF+DFY[W%7H܉sdc Ljfz\z%iڀ7 9j71.+`H_]%|@t*Û?!\6=,?,2hUꖫGd0P+h†^&HO~:{3%"RWaPq("tPw9#$4" L>yt;Wcc;AGѳB"m}SDM}q)Y21>{ rakcɽ>g1pW\7z:`YJ{RW1+C'4 A;>?Lė^]W())(Xǯo"31uhm2;K@3Y'FH$34fP>\ Eęl;J yx򓻊}ozv+uٯ=X|uqhY@㦞̤>Bp5o}pS4JwP(Ii*g>XE}->! !l#^<#x4 4/m WeT$xnҿuPI߀^N8BosW^Ǔr.sUؓihȌqZ1BDBK1–%S:ڽa@98Q \4;M ^e?29Aӆ"t|޲Qw_42W%Iqf@}isj' $!UV9!Z 8^އd4FYONnZkɴ d\ଥ'm㜄Y/a-z|92ئ[@;oGw4_N|,q!3쭍ko!k_2uz6P Yݳ7G1/ ~MjD&}{eӃy;uXjJ^m4+F%|>.'ķŘ~'4l;?=7Oo"z,j&-a|f  7?S-ztW2f( +#2 +YQU8wN赝g |" B'a@Ӓ! s|B:WhHIσBQʱ/daL"OWUQO螝Ӯ`V\؞ňF )׏* nS-McH_>`i!Bys75x2X9E'(γG*٠SBZ[*Z0)YT(fmy[/4ޡv_:)REW݋ŰƛTRdPR9@+v6 G~If&,ۡΊ/ ht\~%Q Q(RJj 㖀0VF?~_oNnq:AA_O6)Qݺ*V[cfk4p /̰}~珴OBԕb1o{폘>t vQ]we#UyܣRxh'?n#IE| o{ܘ9)Y*8dRY̺u "dDC7'/{ @IػR>lEvi7t fIʠ0j\mTP`}/ݟI/̦zyG7ke)r-[i6fYWً"w3#-2I ŕ{'Af`vlD.:Jf?5"bs Et]Q[CH>4@gUoCg8&7;]Qgq@yiVٮbg% E I *r}-Ҟ,BJ B/x>fEFwϩt"Hi o Zo]#{9}[F cJdIYnQ|3{en9t80 ֦!DhKOmX9X)"@tq0SHA53^H*z94V:;X+!Q8JԊyE4Hj ηgsop$4ه3yٰa+' "iWͥ,,}#8fpX& P2)fD,USg,3a19DR(]>[,gWy1wwgu5o"i=ldpFp7Ոߵ%DsJPe/Mtd#6M~ZȎ6 5 Lxo䶞~9q`HwuKn1Ϭ$v߰;d?aFE}wgE+¼ tYV+di(%+$Ex'm6 㗔ɎjP+8s'䞾Qmg)}62Mb$Ny2骜=\'+D35!EÏA̾|bY,l_a+׆b X?5fd=6_hǽC բQ j܃I_zWmKcEƣJ6i98&EMsbL!+źRWk, ${NZn].{ϿE3afzH+#;~]cpB ),zJ] b4oc!|^]\-}Vmj'gb~ݽh֨^ e4B$i3"4J<`fwt&r님+Sk%&cFwM?8Kϋ{^7,⅜\8tkw{kmEC/gP5v3 {@$+cvyN? nit7\A1Op )v7 }Mr\p >#2722c_P++&͞*OJ؈toύ_RS%-ѧzFMztys\?KWgT_8SRf(. ,xt.5a=tmxsr[떚T,!R8eY y5ؓ>*rYQNl}Q꨺5 ") }RH1Ȋ0mMQoi~} Ӎ<ͷo5]{Zj֮_+J)Ӂ.9)=aJ>|MG^7}mpj"ax ƤmMrdcBv8CcvizE\EL{ش( IUXl)ޮ 5ILX+BR mA1rM\shӑIyiYΟ 8P%C5-Mrb=1NOd!JvO=7e̅m\cAR9s5Z6Ͷ.9xb(34N: ":"<lk^B$x[ a`Bn JR. O""}z!\- (OD0B%7zE&۵s wOzZGJReņt<8MSÛ?0tnp[5 i? xLhF?^?k­,ᢏn.䧮e*e|7+Yi#tc+gkL^ӵ_:K @nYzK7űNޟ%xY ow.Wx\V|ۖbbJԭZ)/mKjXbX>m _3Y,)s=&sn[ǂ=@ҀD QG{JBDi0ޭ0r.pDBcJ}fЏ`(4xZ6xAg3OIdl?krqx"twE1yR\=@fq *MBdw9zܽ1)y<`37u3K9ڷkT7d˾w&X"t|9brQ/Gfa!}[a3EoX>B4>,H=k\=9_U\b !g:s~_Mv_1_!""n+9%hZnj806܋^)m ¶}3iFccflvD̛q쵄^O|w2 l':1&q 64z)z-Y$#*{ ]紻[\濷}Ղu*f*+06E0-E,}$C욹SהCN0VN=fꛯo{#}`nӫ}־K{H^r.g_7$6l{/_!zI5^RNAT߂q!zgyFc6-e 1˔M%&u"eoɑfu/a<`e|ͷPg)fVVks_qVod¹h4F&pb[:Ens?'dT,KBřvp-`ڛ3Qǽ]jFVPJVf9YudR yĉy}b#~$zOʘ2@ܚkLH8~64!I5`KƠk1X26DYE?|APdRINK~rT|A#\4\_!0ǡX 2A$Y$!V.rNi;W|u),_p>\q?iϾNt1[09qG&1$sGVvOAXkF,`{m`O"8=!uׂ 'e6Q(&0z;S|A,XlkLIb a|3ox:=7LK?1sdpMe&V 4~뚖rG6xcu7ijź ̓V-cR֫yQ4欯r}R>ޯi394O YVicּD]0P/g2 b5X*%l&7C CGM.zfh:Kt/Wd(ܨgF;]7" sHnx'JP#Y9Ct/^:X}p4xpu#Ixu,< ,LƘgwwsgYǟ&"O۫?H(a#65eYqm2i(T[!ĀVHk̄RA|Z^:]?*귻8l_yM_USo~‘+?]̳;jf4q걹s lĻGt|lPs#\6]ϛ)7p"oQNܶÔhH؈qCaqѡih8 x~i laA}h $wcu>/,17v翱[k|oɞq;X-\׫Q_Dn[iTv*Oxs7@+nTpWE wu|~rb:p;iDP6Q|w(~_8}6zMGљ`po%MrJv%1pEfqkbOwԁ,CsJ–ï O6״B^A(GM'J<@`k,㝖bɬ̷D,͒^vU6EW*'>5O'p\CWrH2$!I D RkT*4ɫ83-lgwqc87Rr>𫘟`A u^|Q[N0*p^H ƹ(WM a"ۤjAT!P{%Ԁ&ɍIw{GR _>Υkp.EےmIOChMF