summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/i2c-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/i2c-core.c')
-rw-r--r--drivers/i2c/i2c-core.c54
1 files changed, 52 insertions, 2 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 10be7b5fbe9..3202a86f420 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -34,6 +34,7 @@
#include <linux/hardirq.h>
#include <linux/irqflags.h>
#include <linux/rwsem.h>
+#include <linux/pm_runtime.h>
#include <asm/uaccess.h>
#include "i2c-core.h"
@@ -184,6 +185,52 @@ static int i2c_device_pm_resume(struct device *dev)
#define i2c_device_pm_resume NULL
#endif
+#ifdef CONFIG_PM_RUNTIME
+static int i2c_device_runtime_suspend(struct device *dev)
+{
+ const struct dev_pm_ops *pm;
+
+ if (!dev->driver)
+ return 0;
+ pm = dev->driver->pm;
+ if (!pm || !pm->runtime_suspend)
+ return 0;
+ return pm->runtime_suspend(dev);
+}
+
+static int i2c_device_runtime_resume(struct device *dev)
+{
+ const struct dev_pm_ops *pm;
+
+ if (!dev->driver)
+ return 0;
+ pm = dev->driver->pm;
+ if (!pm || !pm->runtime_resume)
+ return 0;
+ return pm->runtime_resume(dev);
+}
+
+static int i2c_device_runtime_idle(struct device *dev)
+{
+ const struct dev_pm_ops *pm = NULL;
+ int ret;
+
+ if (dev->driver)
+ pm = dev->driver->pm;
+ if (pm && pm->runtime_idle) {
+ ret = pm->runtime_idle(dev);
+ if (ret)
+ return ret;
+ }
+
+ return pm_runtime_suspend(dev);
+}
+#else
+#define i2c_device_runtime_suspend NULL
+#define i2c_device_runtime_resume NULL
+#define i2c_device_runtime_idle NULL
+#endif
+
static int i2c_device_suspend(struct device *dev, pm_message_t mesg)
{
struct i2c_client *client = i2c_verify_client(dev);
@@ -251,6 +298,9 @@ static const struct attribute_group *i2c_dev_attr_groups[] = {
static const struct dev_pm_ops i2c_device_pm_ops = {
.suspend = i2c_device_pm_suspend,
.resume = i2c_device_pm_resume,
+ .runtime_suspend = i2c_device_runtime_suspend,
+ .runtime_resume = i2c_device_runtime_resume,
+ .runtime_idle = i2c_device_runtime_idle,
};
struct bus_type i2c_bus_type = {
@@ -1133,7 +1183,7 @@ EXPORT_SYMBOL(i2c_transfer);
* i2c_master_send - issue a single I2C message in master transmit mode
* @client: Handle to slave device
* @buf: Data that will be written to the slave
- * @count: How many bytes to write
+ * @count: How many bytes to write, must be less than 64k since msg.len is u16
*
* Returns negative errno, or else the number of bytes written.
*/
@@ -1160,7 +1210,7 @@ EXPORT_SYMBOL(i2c_master_send);
* i2c_master_recv - issue a single I2C message in master receive mode
* @client: Handle to slave device
* @buf: Where to store data read from slave
- * @count: How many bytes to read
+ * @count: How many bytes to read, must be less than 64k since msg.len is u16
*
* Returns negative errno, or else the number of bytes read.
*/
<+5=>KPㅷy̌ɑQh!E5.̢iS1Nݛ{t}猉Gl 4,h~5j⻦*(92Bg/5z/M K8ї,~~7,R=vy6w[*w,V v;o?O @)0H>GBK"wtN5lXr1k);Ṳ |6P)O2:,sXmXMcز[H2)ׇHDCbІ?/;W7q@@r~CRS . pM 4PF_ϟvQ)"v:҇{p.i&:=?iI>_Qs'6v |qDcog9>L\z=r?(Z>H$UQ*z84 b877 B]3>HI)Ǥy`ʡ"_JBQ  VD o q_6ƴ^բ,J';Y΂ p "f aq dܒD0@BJLq綌_C*"5rt <3}Ha p ϾҏGNd Q4f 0Y9䳰B׎'cFhugnсm3x%"#vqY$&}ϐifA_l%61Q0x1mEh|Oq$\dEz7 ɎZm(Qx)1?֩]?p9J $"ɹ~Lhjʳ7C[N12t>+=,yG UZo`BrdZi͇|w'Ѻ8^Go %[-`ڀϭ'erGJ-Om7aAfC](JGDڅyS"uVXIr<$UZ8𽸉sesShW/LO:6G2Duo@$0KUw,cїy9:}\B:@jU60Bv{띨N8O  r{4%EnY]*ӃBc3 K8h( ~8 wbW2vf59mI(>Bnl/g. Z՛Pl| q0fTfpz2wUNf9~,ez4Ͻоpdt(U4yubq'@A,d `*y;UDiRs/ǫ;ň5[fN83fښ8h+fO>,Sht۴]% ]hzZ Kb%t#wZl"_@ ;*5&|ޟ""Մ$0^쎅r75Bw^Pp$araMvhbJ)ytXǕ&x$?yV!QL^qӻzS*]\Ab^ykAЗ䮳>J=Ҽufe¢+8RΕ,F;DJd@ur Eб'k{:%|Ax|qHNsCڜJ wJ:AW9l)ؗsxZ#o9h71᠆اI{B3@H ɏ"|E A_"Ȃ`r,yRu)k=Ν)}" .Oy+2aR1΢Y f?/|f5l(_^T1L^ݱ<$$<2ʋ6J0XɩL.g$5ܣKC wc hz;2 yRT]h VKNԙK[֩O>PD&8-;é ><]/dc{ ~WDd {`WԊadE͗Vg0hb@+S)ÑGw=TqnYz+a7h0ՉEZtJ@[bHJ@b6aUXZ]:@3"T$Mr#1ulK_4m-8蔒귯fФC44T Dâ7`AUvxI2  H:U5qŷ'-$7󥓫,)*2d];xÏ y_nޜj9".4`4g?Z8M~9r$ܿy)ǯ$5!W c^_ku'k\rݐB68w+<ދoO rؠG:k#Ȇ#p9;#\AQʜQ](Dq%Ms>h]+R =x ڗ` Rjiz/6ހVgVB,} @A)]\[SZd[zU\;W$F53]߀_kΑe}QK60m89 1[In8NCbn*~a OuX*l2yW%&xF*;ςe)7ڡ P']UG%["my^dE{T%OFBA:(M}le =8OhoHRI@:#w%<]Bi[I!=4&1Q YػFM/D6qlvKe~Tq{8[^\ ?Hܠ܉`PmN-xsGaD@L l)Iaңp0冰]wY mNTNm uw,&*D_ ^\ڀi[B\>G.(h^mli@U?7zc}ٓv NY5Y*AB誣|`:c:Β aR7zLcΘac*;=}+|8((\9MG3qlNõ K '_!s#*gG)ÿ n.D2Ŷ3zD%|ʼh: R?Mz^- 1D&BڛsFc5I_7QH 3~ P .A848򙁹kY_duy$8A%,f$cs #b%t Nl{{L? 0|<-ܸѓA RTϡ9f[󯂻 xFm#U`'{tp+r%G /E(o w͡Β dJWР2|Lމ{ :쏸\rp5eLIa>UI|=2Djaf 'H[*%,T:!KKP vQEW͞Y皻aG#^I.'Z$o v%cZYpx"Q gI1r_TzѝFYgІaߨ.0Bϳ}#)H?7+~^'^^ep>Xo۫)T5AC{럲ַs0lz̪y>@0.Gl"/ \6[\~1 *|Wzɉ &usUMA`\0Q/*u3twrfb-,=|3.Ūc,gkz"#;|Lֹ/e!3|>\V琒69m8\ie[uM _<_)f}g؝PzCx. jV |D?b5\P3JQsl7aFNul`Ad`G`WeBWaNc`N7%$AUYۑ:6dJ7T|NwA⧎uk/ÀOYY͏i@~FfH,d;f^%|஢&W44.Pnt$!\lTzL:I:~^m []8nަ$B4ϥ[21N"Պ_\NE_{R~kˈ|EM$Vk# t-k7/uo -]cmBSa|z'S+6G.QoQy4@9"YxwƽMـZW Y~DsnA[4 2!4$Vt_ORɝ-Ą8IB#h,6t,]p̪c,x5-'cp ޒ^Eoto&O/<&+F7fXzqSXJ \( YZXgP&! G!uǟmZEǙlʔ /zCX2tmCSZf5=5ꋓ}DFxcA/piʒEP"4CQȯuNpcZ1W*m 83B}//2BJ0@X\ n;$cܼ{*DHЂv+P 㾮;r`ErDsN}-H Q͊X*[=+)_g?"ߍ+>G|M1풏"Tl06NН{(:]eЁ[J/ܭ7Wi˝wy8} G&FB:u7Cp(k`# :@2 `ns22]I4]Y`Q S'NV M4:?C10ՄDXZq!a-JWRV둮&9ܩmDU3b#baY]¡Xi3A=+ʨIQ n9bh%@(sٮؙݺ՟(.Y /JEx2|*)423:fI4f'icxMhy˄UÞjKh 3'EϹ엻[y ^߮-"yC)5puGBX_ﴖ4o9t@f IɑNv𶩛'?>N{ oKVZ]HUUY> q5: qn]~*5iύ|m!b*9MGrNf/ ]KY$k~9ZqO>ˠr嶪Hvw#x0J;cg&#(37}(+4i݁D{u28[i}WLETCX2FdEN^p҄&2,~5 GsIwp/uG ؒۓQpxj\qf .b:'12*iCh) wjPo1'{Sk|S3#ܶ{%6tYXz_$sY?<(㭕-^,7՟G%:LmP?Z2ȑ f~1ZQ.PCxS9m(Bt&){oRMȳ䍺PL~)1&]EwHN!@W2y.V1$wֈ^g#*ރkV}jLmb65a4_f݁]b1>J-epIבǙL hF30V2Mʋ]OLhD⡦|/WU[M3Oj/a>¤eeְߚX`{ԅ}9O]U(s攚xGjg,1$MP{"T}LA>aQQcw`?E<`(_>HԎ+ E-wRjL_v3T)] U+*8i9XeAu., NOmˤV ϙ=u,%c"3D9/L wq/q)Ea$)/ęAf ̓+ τ*L?!%)Ѓck+/ρ'\Rjt\+Z7&7m9L/2'e3cw7/ֺs Фk/zGAE2Z xV{=T34@Egݠ0Ԟː0Q10')_ :<;ZIּ$TWkhQ2NXg3قR>T:ʮ@lc !x)f.kT;6c֣\H[N۬p{=|#v'` U6Us2_'2OΙHf(v.t^.w{>duMŘ[}R'9'Qf[wB1VMďG5<+tdCG7 xJ2Aa$s }U N2o̢?8`TG0! B2-:FCy>X=X?[藽\>呴>OIJ|FTL?RE#c\/1<8^0s7K5 }({kL [cќ &J]%v[Fs#{TLݚ)xeW^;2H\ZB ٨gz(j!9nN #^`{*~qi\ۓW0'#6}}ԓ 5qR0l.8nXTMs>=1R#;j&^Ub UxoM& -ƽ a7k{rAIuz~B/;.i=M{J>oһ逾c_ X{U!2 C>d;˪a0Z6sK(86<5MaP[;+f/2:/*a0d5'JW27 5=Y4Kv|7~B_/^lX5A9SligX>I5|W=K/—*p.:3^=2mpS{7Ebc5GTȶ 9w ZiG:} ¬j֌&qdm(O#"`&~Lo%>ރW$h~_`T>v0M:г8\/: X@,T2 4XiD;nW[?u"Ot(g/8ܶRX\qRH3>4-hEU:{c_Bb: %/f5MmjNX %bZ;*TG`˫i%J{1\u(6 ÚFiexHs%&Ʌff ꥐy94 Y>D.z=]^ꍖgqjVN/M$waRN'$N-p;2jjb6Yp҄sc;:G=_\2 +#@H̒׻! fn +턓\^EjC-[kV'5/Y>G&jmy6gi`Oe኏<29u3IZ-}!mF__AX۲p2ڋɁgp;: `[H>zPA [5d<ߴ"s03Ѓrr탎N;mTK^{n˧R>J}-RF;I,L$(u.K!7y.*O'0xgPyRH?/jB۟ sr'nId Fy\Avs4 W„4bWt|nkku'~$C $wQw {*(Q%y,f=oAޘD:.7+ThI>}iM()|f :i|٬P18SqMNp.1R'a8unֹd܏c_{Zn.EҲ%ܯ]Њ׍^#pM#ĠS"gg=՗\K tWzAɦAnitL"o1'HNX (K:ڕQvߒ.,r6@#cuIG.cÊb;s`fqP(ւZ*j )Hk\N;P;bacL Z;l 3 #UIb~m':kR+Cช5N67JOHr}o+nS CIv%Zj"B>jI"ֹjSuR(R+1FMT}}{jcì!zb=CN'Eh7PX/p_V{EV%BdfDbP7\ RW԰ry8h||̵R{^Ҝ_9!3t(vbD_֊l'**AQUJ3jkoZV$/C@DٿSO}B;6,(0>l͙d5Iò5H]p{3IL ,,mʺٙ78_V&bgp''{QU_oo#ʵzڲ8e>;'P+ ZȨ"G, ^pKY3u'+NP6=]Rh\N a0V#vu9^Pc|\Ӏ7A$Xț^ZlfMbʯ%'iwTj'UB\Dr .M<+ !Wmnr(< vГa_&TF)lS>b_ҶDPf0hv_{lZu=^:R';#l% i@Өz3~s I4O$!*?g|:r ;]neK" - (BLCϵ=өov^wLȵ塳(gQQ?1R[D"5$o|5$/DJT̪|AƝӰ}R͵{׏}8rr "UV,Olp;'0ߠ qW>:ξČ\ ' & օܴ<ǎg? 4 ?,wuˍ@.2]E! 7epij!ξu2xё+# W5mmԓ*6MUVdLdW.n톒0 #)?x9 =vYC&ჼX/7_l'pt@'SI%K \pgR%vl2s #͡+f@A>7ʲ*!3r"0lZ؍ph-n::APGǯC3pxiZL!<ƕX~^кs#;f'a>p 9ሼ=(@}&&cև2I 8|{9GA;J}79,xL-ދՉb (e*1LFMDW$0rogq1Ea&+u 9oEe><}J@ܚ >Lke92[cu6{&vOI g5Pi`pf`t2qW7ˊ>ORjo[-Vl{ӄiB! JFIśJ 7[IHӊ:N :͟٧<Ε8XU-V<5Ft kd:%Dh 6b00)7BUk˔"v$sg?/}a)|jte0ւѷl y̨f]4 (<كpA)i_sx~\C (RE3VJ"=0ԥBȵwU/->ENj $%[gPzٷ DFk 3kNW{nxi~~UDd6H'SJ3v/xq4X>Ԇ‘lu;ݨ <4uFﶂtUh-8)Kq-(K{-q67tDU˿铭|]C_4AQs3?'jwIDIőhC^{׫ r5 ]ZFOHԽh]" Ǜ+9@st9/OFT =<7  "eu8QuF1|24qFT7^TN;tۇ39њU֜JDe>v6Ie|:1. 7mrc~B0/1 {9ƮxOnST]gVK2uMa|uk42A /zw=q*VE ,oUo ϼ2b+xc j Rfa1Z4|̣Zw}ICFp ^:qH x!+<t>ըw4*a* ew ;'ȵ^]N $yP!>~оf9+ FpLیh>0ɴyVpRO%ZB-RoӮ V ն{HD,ǼM-qkwɼґ7GILo ~hLCH% >-iB03@KPFT$lĘd*/@-EęѤ WP]y:8cM ӄ91,\;<:&4=7aNhгaOMa+E+"#ϋi,x }! `GJ'Gp֤ՔZ& }DC8(?7ۢkj6K${|P,qHd= ,W9; -m{C3͇Ώ&H%l0#9ܺWRR3ڸ]/[r!+O-`KiA#?'K.dS|cJ6b3$XsD[[0 c]Mh=I<0 ,q g &'U)Y #Q "UFkȾ *7q'x@f)"4#Mvyμڿ)0 '*CA_DL#C m.~fw,ꄑ \x[:!-I M+`}earR]SzmVeL$jzԦXa;|E DP 븝]qjw/ͭY&~G(.+dht*A*ndhECU]~8ᬯ~,ªIo6h`v8J A荛 "(afoGSL-ܠdN_\UBL ߙ.5ng?A7y#Gr(;b[6ǗZlcWַ?fG0@mV:{SV Չ-R3'^8%b1I娣fk,B1 s 1~^liT.8LZQw$>K dUs75 rqf#ja#.`(wê-//6sy3@vgBM3Tm%SQ, ]_ YZLqpafPAi{v9ϟ2`q@x't ~c`CtfNFuW{sAELy GC{i\Icd]o=dA4xVz!j3դ.0\EEuXeLC7{G)E)a2U(TA%ָJ7*fx#FO#:+#|HpyV3鋾Z?~Aq{޷<{gz]5$ U59Ar ,ǃ%œgț6 6S(ָp 羏9h<+b^qH[}9kd(.aoCGYmf6HƋW}b:o{v$SX[ã>uڡzsF&—ip-qCl.v4ZwW0b7{xz?Hϋ})PVtIDN*,v9je @d Lӷ(ܻx}FvF|`Ѯ#=j޼/e>w*lgOEkkCq^GΜhd=[~NIa墷V˦fk FBhs)׌.Ϟ%48Rb3w llm6{Q[ <_NF>Q`D㩦{m}Rb ڹYZL = ^FW¸$T􏆑_5oO%-V+cJؘ`75\˧+!:Cc*U Ӱąfp⋁XxqnX0QGPz#_,3քGh +'($ x \xz/*Jj(F*JY-bhX)#q-+U55DXKO^9&3f-K'yI?,gz>Pb?|=hM2F/\ *v"EbS6y 0}X}DxzĘλ&rtb҉pB:)űf.I6_KcͶEeKA)bʹ`>A+a밆!M M:D(_pw#Ҿ@%(\!bu޼0AU[rc*M!aS͈&Z%>mعaJ՜G}܎Ee X_π;J[$Ii:87G/eаl ځ4|U_ oH4M׆ZXQ0Mӓ*Nד kEֻEkh1QO(4(cnw3Y%Pզ?&x~WIZpߺL%["  qZyj>6ц %(M}Kq[Y&ҒXZl5q#t0.Y cC&?H!-7u<$Jhb`YlL,|љ" * >1梲@3@n_46I_Ŀ 4w$&T)T-L8$ȵs*3*Cmaze<40Ȁ|g#Iyl, ξYymٗ΄k! p;m.F֋#!h YƮ04rWԡ~u;=yA?#yhGg>LIԅ n$'3!1s,T :[q lr^CTO,.R2c`d l(cL<5vW; QQ#C$Elc_OO6^"-".YoYhc0 Sڹ`9ɺw߮~lmK=`\W/BIjD/+@2ߍLFYv?dA0![*6 m 97Fn9'92GjA^( :QS[[$A4[qLl 59kݟ30spA/va?&m^ qpz%yɧM#cwUB8%@I㿢1o^KsUXF |ox%22PRy\ⳬ3d@Hxc1 pġ8`nvVC6:MqA!q,-x&a6SF ?R&&.561d`y.ْkIՉֿĤL.섔QGkh S%=Ԟ̰= m~)NIyjz˿T_&LZ3S.Xᦘ `Xҵ6a"ǃ9 -A]\uq<ڊ>N(}C>_.޴N%N#o~`'( :]6d.C3CwMB믏/nV*ÒEv$^oz]9ka0 B~q>ԕ}$&F=3%FўԶ <(U?xy,v#^y._^ڪ2ssRF;Ї \^X .5-.O$=c1t7W~]f`/x,7t%-:- VfW_D;A#X>GH懅V3C>lO^ o|iY@ lm{k$c?%pmu f4u 1,Z X0*")xP04oO SSK*ewف8!$)@1*+r#C/bm.#IqCT>v: TDIjl w1 0 =GK?IԆ QI΍YkFncUK;eK_lIWPz 7-,3"0ˏ1NL oSvĘ6W]G09HY2m[갍M4u$seUٱd7-N4ny|] TYqUaw3ܻ2|kBq/b)x~uƢ[BVoI\ TjesYX)?-O;KoUh^cu&lsՍi3єu :bvUF(%ڽ.{,A\`9x}[:!:e0*fk\|~;Q3I|ƍyE6"NTrߍp}w^fi%L1KOj̟b@FKm!Y#aU< sawW̓O0y( 3I RL,D7(ߟ4+L7|E^1 i|67&_J,cbjJb F$Z "bS=Ӂ>p$-H( @"#:ۥc@*y[Beߨjˏ0baؾuJnX< [%EDvr;BnQf{0tӻ~ e(L15ATZ 1. gKO#wD=<4yycKSD졬lSTDfྤOFTщ7P887Σ@)[[rl"`j٩J&<.徃I%nj 5äz5^'guN06#@)slx6UfϮ)~+<k,GJ%h/ fCR*N=g̕+$h$ƿ͝DH xy-'K,/~;cA+LI:DOA,8ayҐ,z% k||<آRgt, Kn>04LY3!pM Xp8!H.Ub b^祮 ƾmʨ}ÿ>Ʈv_'DE㒓CTiQ 3TEkwpys|r`{F5=hRWD$c!}jjRA]",d}G>mNxmpDD=f ]oũ^8EOG dO=yfX$&@c *BS'z~uS 0r4A+wfd(e 1T R%r =FdnStCZ !&B#--G *^"@UN;Q*XʘC R]- UF}LdUlw9Q):նjPA'%7[r:h_Toa|qe@hmH)Ϯ qa9ϟ7;G)N4]?Ƣuz+t<>izk[1vv=/1Z9gy@1;BVɠU蘚1ͨn`0֞i?̀0ITl(/M#q*-bʔyj|1hęͻ~ovzuA%u% ;W"KR}ک~Դ{-jQߗI\̢/-eX~˫ _<7s ܉# c hf!~ * n!!>w\jbhS[ЧFӺ^+__'`aBjXhXI8X.lmre@45 F-73lF+~cĮ A*UuwS࡮ޏ=fM|_ rc(@O|gحsJ#Ql4 -yy5HrJ9#:ER u;\Lյ\"ʘg 0jҔ4@1oǵ~؜2f$s*IGV]IuaU>ro#Dz3(~@9h*J @ H!e'B`ˠ?dž0_Qo˫iO#P}.&/#&HFb)Ľ˴Q[h_l bfTB)4f99dFaR&`Lbr2}O ?niUj:,+];h'A2~,zSQ}E'LoTY"Z^?FK&nDTƔޗ e/J]LW .f;<0x_3*"{gg{!Ϩ7n`g>HžLr߰ HAOO;ɫ2 >ၒaŀٽK$>'Hâ3AŌډHQA?y Uy66Ep~ҳң(/agH IכZG .(f?$Fntli #50/ۻA@m'vuѬl[-6hNW ۃm=$6⾲(Elu{G [= SGz'w' 4!G3W{!&42x:LnT#Uo=vNDHHǸѳŢڠ[HӴ(J\TybN{%عGK0ri?j&gZHM3߉F7dq~T4j0XSFčÝ&cS@"庋TfW0uArv\Y 9QerIYQU Ʋ$"Y;B70FrQ25zGb XMczF㩊g_rPF[J^T+k[U 3W{oP}깊~n  (g+dFt$(G/QzJ }?LJoƌjc)^U;UU 1έժMJC2gqX҃ @bbc-%³4 'lwcPrSms~= ƙҸ>LZh6Sw67A13Dsqm:5¶ʝH?5*s}q0v#DJ"۶ NSp@lS/vQqtIe!6 _WAQ^MTVLILh =_h#8S]vVmS{f̎jjlWm{=ē?N'A;*_]C\r )g&f_jq9HO1T:[]m ]ΛrX|O¬:_ 1G%JoZ߷VIN1RSVB.4Qs@ Hf*OڅQb1 ntN.mɤ-MذUB _ͽs35Tj5 j2ŮRj{MQ;5]s4ŨD罟ml[DE]Ԑ$nKxTA$Ff#yul_՚a#0E&&y"a1ܱN&tRMbv nҁqBk*4_MN UT>yg7&mk?t/Lr>e!v[j~Q_^'hYS/GLJ;I=d8\d֐kKs$H֐5%4(μ; v[ۿP:7r|SCg&_O $شGpM]|с(^Cdظ3{ZSbLW﨑Cv@ DX 68@vRUWHs=+U =H(t-N>#@gqǽI vI9a.T }Q\xWH_6.) зs˻ӿYu /inK2P o\p"N οI{~C*;G!?X5%/ኵZZh(gZ}99$ÖĵIͯ9^)jei6^'9=E<@\T>UFq)e@ _G|w1-iy)- _oTӑ?R<%? 4A#<)ziTKOn7H ZtlF'azĻD 0nȢ+G% @gm(n] ?§s6j}ض +2s y56}S Upw>{2@qUCXbؖIΒݞҸwK]/3FlH$ll԰ h0D2 *$ !! V{^nD5l*!XZW&JSσB䨶#%Whfkd,Ud.LQ)Mr!8!OZ_ݢIKqMElacVDnjM _1'幞P-P獈5w 7ԥv[.|[3^Oz#GҽۇY$Nio_mJ9p-Y q=p=Yeχ _?Ld㸴YEZ:aO-{faZnf}EwfM"  .b rח`9;_{gڱ_+!~m19k>WÐ7 D=NIvIpe r'=ǧ~T,sg+Q4::M2[N'|gU Pƞm_> UXCM * *< :@TpDXM.=^_CK4n_QOK?=FT6nB+ރy!ϭL+A)qjy_|wR)@&U;=Ӵ;1^}< h^l8~u={,­D&ZOF@G(IX+bōw;L,`j7@?rII ^[3W]Xs:6('Q ䷷u5[(`1_=g\,i8Sl:xݲ̾$(r\ __bŧC~X) Iq{@8lA'I}z|X圭P Hin nJj9ZWqC\$1Y%D֦_$TIHU -iX ^B[F4!q_(quc}8TzrүRPb&i#QB.k¿rQaQܠ `ud(3<昈^ݼ|W+_.C7Yx~- s[A 4Q3%]}xgOw͐Fh@soO } ) ]9BtA,$t"՞PG33"oj|ѩ 6Ks >L컠S__ZW֑mpnB:MvÿďW=ٓa}: 9ij.<\ C~ JwAftQ! :|gn*aabk6'f:#QY>]DEY?g#i~i㞋L6X)?c9Y2YE$5/( R D4h,(z2!ɬ^1&5Ĵi"],ݑ>B8_^O H C]@eT #V(!?=a u7tl]t[,E]lF.39;3UiU]fm%t3"0̔;ө@y~/7 ͙UM:2۞0(L1-{rܺ#7F>7Xܚ/&ReHPoHR0 ?OFsjvS N73Cj)ۦ<Z. b'%v6R{ib W,hR>᧚^+O \$@uF)S LBo"<2DruQX6Ȼ JE֠rnYv#84K/81CIl.oLs|@{i\AfVEE*q_1ުwJs||} %v"J/Z||6UYKzr/U[3SzZ(3qXxY*ZSy0W$;R0KWBmh짿;-rc־bEw?$t. mcg"Sg>=8y;Dۿ'NM2θ>>47EFc+)z|Mёkztˆqiph>L_v˙](ÖQfXl窚0!L'9|2-:ϋaG)$.x (qdXaW(( A8Ep֒iRKFlx ;gWP3#ٺ,-̝uF1y.nXWERpH 1yST a\6.fi2{7MlH^.E}nX{^y4cF?g lA\Bgjp}p,EqZՅC,i)'hYfByYCaWrA-.J*PA vQz3qGt$nZf~Y>27΃@']>\WV !ނ̇)=}]/-t嶒E  -5٨rG)'RֹPՎPysg 7hzc9S]$/e/4> *~jֆ, '27ٻb Uwb9]OZ;lmlr|_΂^QLNqh5lnK ~sZtlve_$Gbfqi9Co9*mJpU3Ӯsگe8&'< MTWvH = T[^dlC%["ɜj@f.rQ Ɔd F2YQ5sv2Ub;N)"aYxsYDZvPC ߬xBh4o%-^ˍw7N釩1WMIAͥM뇕̡ńrCC/XW,jaQ,x? H &.\fJf^)̮\"^eQD/ 8“:nmVDƌ{|5LVf]9DLi`rjXp"p h=*b8ͥNn~xTL>lJV  X+bXpp'P HC!!֩J|hke%N}NCبu:B83GAX\arX롐Q)f)tAE cUcz&UM־=8 pxTzޑ@UA|c \KZ^5%UIJ$po@V 8s1X 2XS7m-~E in}J$"LZXY$/ɦ+%MJ}ufq =`6B 7|@:|F-$)h}lb+'ZU5T᜺Gyp;.3Q<ʃò.jkdQ3,aLįɽ.H_ -Z-l~t>.l99^is-WNQ sq^AXU!kɹިRi:(c\ZK)6ׇwG %V!< yywe$fZS5[>k$iD # ]|Q9]|~Xi5QyIU95Q3lK7ZHnjHtBdǴ"} C4FGg$JwxXD-ݰjUef3s*m9/t+Ɩ2)v.y;NanmeN'N{Dte6{D-_eybG^;bv֣?\İ0jL1vmv>*H !@b4\ٙ"~جU}7wi,zo{T-Ш$U|tɑ˭:;9D*$s׃,:Z)>, 9<ʶSPcS(H|ڰ XV/e :6*g&s@7#3wDmnn=5\D)gŪQ}3{=?k?-tSWD 8TQ x`'-Ojs!G5蛹frsSAU;شb 6j2{7Nźy5tZL̇B=@$,Z$吾6`UFAYwD1:P,lXƾLǦL n9fмn*f#Z1fʘP^- kW[_֯ZmmP*5)H5(>*B &FhZnsyͯ[ ;GX X8F#2؎׭H(ijJGG-|LPGCru9);LP7{@E"(ک!̍jfk4-MkF Jw(/p6w s-TxP} ½r€D$>Z9cj79s,в5$д_a5 RG@t%Zm [ls~YC&^v] uwbhd,8+ k"2B ܖȏ aj'\7V|aĽ1 'f_{1IR.F79?ʦ3XFR6P"K/61]e6j mיd𸂛gLNIy%a)}K39#)% z"JWc屛X5~h-0YÆġF,n4t";  oB%a_X免@F($Kr$6p9]v܃7U[\UXbI8rp5<"q ʽecd-*G ^7*$fft]7e<CtH*&~PlD>$Ljd~[?(bsD娮?srhcf2b]5H=`Ys*L|>0VcRvO{obis8>?]m.(q_y!cM+{%>KPRB*q5R(ә*(Ig5pj;;|O*ym Y[/w( F?N䔳eaZ(kKAg4na-ѺԥWPڣH9{|.v5|mq0!3pzb7)lY(~"}G;@0;TPD36/fy女q?MJ KFb(QM&[!Pc CZ:`pܼ|߀G6?U w^@}Ct]"OC'Č0$5;2+Hk;ԇmi%wU kf`Kg&rⅆZ`()s5<&y|`c;%v.ZUԡwadAr!otB vcdkQK$P7ݛ⧋jdwp>Vq]2i @K/ZUu>3?pSYrYrjBbQAE+V1'zRʘ@$XGh8o{;Nr$x_o_>[hek'첀ӍG\Ev%b%rɪ9i#z]IۮvCn -p7 }]_do#FDBƬSՔUhx@c%n?P^v@}GF:dv2&*"a^~4^5ٟD[%v7WtBf#Mp?5'KMҲxז'ʟ|m3~ޑ61)sS%YT$0@p^?dm ?6wb5BJ/ea>k- >W yMCy,"OA)Na P2/[`}н|3.ᄜ(gCM}mЙ\nkN?Ii!h"]U 盠V,yd};2z8=gK3NQ3}\TFW}VmKB+ + Bpճ% !2o֥{$*QB 5@Srypɏ7$43 P Cije?|9dEmO[/9蜮rՀvFRaHdUž2O8?op-fͨrubH h^,ף@KqaP%ᙞJ 7J4_[ιO|$Wo1``0\_wݴ4K͔ХuuBc围\||`RiӞ Z| vX! aw |`m)f™)ݚ` ?R#م]"dL 5]y$jȻԅx`X&J0@tGbǏ{0UkU^I 2O[H$؄Lӡmmf CWj' XÑVޛ/~(&ʑZfj1PdseDA;9^ ^n4yvm̮.Wއ}|&>k:x)+wrWJ-XUai[AfTWn$& R+bZBcx锷\.lwWfimuh; 1 KЩA]e G @Wip 쳍$69C\IJRa/m8Kb"w'#E?/E/xi3ח*{+ͽ( pޅﭲ ƇXGG߼[f.Vj$F~Mp[_o0ۊVHՠy2K602Kps2MY5D6d폶{QGjk A] y EaɗVƉ^@l81fޔÇ1Du ۰!h۩y@ (:YrNaǟ~L~&t9Gs:L{&-Keφ HG9 ")ޔ* |Gr돈ե!4`6`= }1" xߝU5q>\6PH 2S P#u+My, XwPU=$MQ'ߏ1% X024ViIMJ$[t(-;{U8ocꉯ)9:4@Nodeϧm[yXx|cjuf,0ȮM*4C9 _J{325"jlT[q=f$]Z}! ffפ8קFtf՝t'0I6\XQ6ͳVo7[+&d۪ |XyUyͪV|w0ArQN-$6)bDPtk} W[Q$UVqK M'qI/짛z(l$?cԿIfԫ~.Da \F`|{q.-KwrUbT@4jy/ WsNKa@qm|$sKܬCĩxj| ԁ|! SA9~ĥ<[J9bOŒ!hS<+uiًaU3LJmQdz&L9 Lf@?b,ϥ)(æHu>{fַӾ< $Y:V$ _ $V>e{EC30܆@]{r5Ew,pr [O' *d-Ģ Oc޴Z,j9Ҵ<Own{y7LgZ)I y(zdRix5o a u4Prב>A HbU|lUfR7$ƨ;j I`UulIG[݊@I2Լ]b ^t]#GU}7OBdǽ|;~M\>$2}[*:OXGbRrAߔ0P^exΏ~ Y.Ui/3~!_Ai'ǩs^g[rC*u/^g5QiұL<38>M7rI!j2Sֺ8=':/ {VkM]UqDJbA=71˞d}zcG Wy 3JV!/Oqsˍ,n*BF(}Ár&?1>DR<ޥ"܂$CB>t a D$]UH>,  z5'.\_AyãYC831%C_naٞFS:[.dA_)ɞҰv.1KHOE@M)ּ+v`2'9>hBۂyp촴Y`ɻ.穀)?Ҍq'R^Ɨ,i8m9 _^EaN)!)D  U^g1fc5xyM(I]P:b-5&3A zqkY B`z cTwTb'Nb]k@[w\nA?Z 8.#+#NR_ΏhNֆR'RLuNJ_s:u›m1XZwhv\[Jrh"Y!uC9=A_=^1`Zb"<6qkbjB_4-i+@`_G̏8uH3/B@k{^cf.0÷hY Z &Ia 2jU 2$GogjBZE(tҙZY!u^]i4tbATaUBg-O9G̘1  b$JTTFOY#0hrf?.Y )|k[Jㄨe_N|9Ht>h۵MPL{K9s}]a*Df҉*앧k%VEѺDlp f[Okm?$N[Pp "5&۹=AQwfCL-F 4[;9E/0zzO%3pW~떅7khM)s .=',:*pΗl,΀ >54sSUs5ZKI mv~||N eQ8SN`qtZNәst뚚US>zfӥCAxABI{O⧼sWfvኢlM^uF:V½{sߺkwu/'e02nv ~F/E\4@TZ';(sЇ; E; ڰ""A펈z's[Վ,`,bUSadܴ1SocT H"7  <K6wG__R9YWanm"鸑̌VnoI=kԐ[ÕJ-浽쿋lA~M؀`w&-Nߏ f 7-" _B1%9P|3ap8jGC?1] ^\ȟT_l|\w\2@7<#ch FdR8 ˬҀ,틭ƲQΑI!7[* n3!ҋ@*$l{-w4cgn$b7X>F0XBd̋t̟'2˶!DA,b0 Ϻȉ_|S*Ӵ{%ADwG PK?\[q;ƺ M+ aWĝyqݡ 㡴rZ 4\A~?KSa7ciy_@Mo,gX9;s6d.͘Okq|o\+TnfyܑiyMu,͸cX( 7(g1Ft33Hbk}\7kEF}p# XQ󰹃1#Nxp AU8a<8}|s<}3uǼFv8qWҽJ s3v.gJ\^_`]pD"S'}-OsQL[.өGD`J|X<Ұ{ܬx=ic#gl~[X^5Px1?cy^LMPG*nhQ&O#XbtNd>bat'EVy;@]܂ͤx2JLwdf=Ly0{XcT ]\A3TS,e=ߦ 'J~%6f8xg#c\O^t|5E_*Y T@ZW깅z|_s<9jB8D;ВOZ8ug5k02U6e4Sclj _#N8hzC>%v=j2LDĤ.֟ Ȏ29a00H,5la@v,Zŭ:x)\)1s2?^;ۗ3TRv{1Be $3΋ex "j._ʆObkB,PЕc9duT.,npCStt_#0J=>Y=uj3j٢-1'ORB%b$!:!rJ\UVPWtXA\]I,uO8eϡwoәY6PI2mM$Òt0&q{54UVK޳r~ K8eݺOEGfՊ㷞-'Hw+ٷCE6a)'mo|O5*i`h2;EV'RNTm%%O>Qcҁ9WBԌc=(l{.mwy} 5IȞY5) :B5S Gޗ؃3ɽX@Lg^УDA:kʎU=A0ƽC-O_N"  t7/.ɦD"7k)B֌8?>!#0` 9U%TQϋN\Q+*WG@$O4;}=CX!^ qℤ'}I Ri.}rQm+12thch J>t