summaryrefslogtreecommitdiff
path: root/kernel/livepatch
AgeCommit message (Expand)AuthorFilesLines
2024-07-02livepatch: Replace snprintf() with sysfs_emit()Yafang Shao1-3/+2
2024-07-02livepatch: Add "replace" sysfs attributeYafang Shao1-0/+12
2024-05-09livepatch: Rename KLP_* to KLP_TRANSITION_*Wardenjohn3-31/+31
2023-09-20livepatch: Fix missing newline character in klp_resolve_symbols()Zheng Yejian1-1/+1
2023-06-05livepatch: Make 'klp_stack_entries' staticJosh Poimboeuf1-1/+1
2023-04-28Merge tag 'sched-core-2023-04-27' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds2-18/+105
2023-04-27Merge tag 'modules-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/...Linus Torvalds1-2/+1
2023-03-22livepatch,sched: Add livepatch task switching to cond_resched()Josh Poimboeuf2-15/+93
2023-03-22livepatch: Skip task_call_func() for current taskJosh Poimboeuf1-1/+5
2023-03-22livepatch: Convert stack entries array to percpuJosh Poimboeuf1-2/+7
2023-03-19kallsyms: Delete an unused parameter related to {module_}kallsyms_on_each_sym...Zhen Lei1-2/+1
2023-03-09livepatch: Make kobj_type structures constantThomas Weißschuh1-3/+3
2023-02-23Merge tag 'livepatching-for-6.3' of git://git.kernel.org/pub/scm/linux/kernel...Linus Torvalds1-13/+49
2023-02-03livepatch,x86: Clear relocation targets on a module removalSong Liu1-13/+49
2023-01-19livepatch: Improve the search performance of module_kallsyms_on_each_symbol()Zhen Lei1-9/+1
2022-12-13Merge tag 'modules-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/...Linus Torvalds1-12/+19
2022-12-12livepatch: Call klp_match_callback() in klp_find_callback() to avoid code dup...Zhen Lei1-22/+11
2022-12-12Merge tag 'livepatching-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel...Linus Torvalds1-27/+27
2022-11-18ftrace: rename ftrace_instruction_pointer_set() -> ftrace_regs_set_instructio...Mark Rutland1-1/+1
2022-11-12livepatch: Use kallsyms_on_each_match_symbol() to improve performanceZhen Lei1-1/+19
2022-10-18livepatch: Move the result-invariant calculation out of the loopZhen Lei1-27/+27
2022-10-10Merge tag 'livepatching-for-6.1' of git://git.kernel.org/pub/scm/linux/kernel...Linus Torvalds2-3/+35
2022-10-05Merge branch 'for-6.1/sysfs-patched-object' into for-linusPetr Mladek1-0/+18
2022-09-28kallsyms: increase maximum kernel symbol length to 512Miguel Ojeda1-2/+2
2022-09-23livepatch: add sysfs entry "patched" for each klp_objectSong Liu1-0/+18
2022-09-01livepatch: Add a missing newline character in klp_module_coming()Zhen Lei1-1/+1
2022-09-01livepatch: fix race between fork and KLP transitionRik van Riel1-2/+16
2022-06-02Merge tag 'livepatching-for-5.19' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds1-1/+1
2022-05-24livepatch: Remove klp_arch_set_pc() and asm/livepatch.hChristophe Leroy1-1/+1
2022-03-28Merge tag 'ptrace-cleanups-for-v5.18' of git://git.kernel.org/pub/scm/linux/k...Linus Torvalds1-1/+0
2022-03-28Merge tag 'livepatching-for-5.18' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds1-2/+9
2022-03-27Merge tag 'x86_core_for_5.18_rc1' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds1-17/+2
2022-03-17livepatch: Don't block removal of patches that are safe to unloadChengming Zhou1-2/+9
2022-03-15x86/livepatch: Validate __fentry__ locationPeter Zijlstra1-17/+2
2022-03-10tracehook: Remove tracehook.hEric W. Biederman1-1/+0
2022-02-07livepatch: Fix build failure on 32 bits processorsChristophe Leroy1-2/+2
2022-01-16Merge tag 'livepatching-for-5.17' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds2-19/+16
2022-01-04livepatch: Fix missing unlock on error in klp_enable_patch()Yang Yingliang1-1/+3
2022-01-04livepatch: Fix kobject refcount bug on klp_init_patch_early failure pathDavid Vernet1-18/+13
2021-12-23Documentation: livepatch: Add livepatch API pageDavid Vernet1-3/+3
2021-11-01Merge tag 'trace-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/rost...Linus Torvalds1-6/+6
2021-10-27ftrace: disable preemption when recursion locked王贇1-6/+6
2021-10-14sched,livepatch: Use wake_up_if_idle()Peter Zijlstra1-1/+4
2021-10-07sched,livepatch: Use task_call_func()Peter Zijlstra1-46/+44
2021-08-19livepatch: Replace deprecated CPU-hotplug functions.Sebastian Andrzej Siewior1-2/+2
2021-04-27Merge tag 'livepatching-for-5.13' of git://git.kernel.org/pub/scm/linux/kerne...Linus Torvalds1-3/+2
2021-03-30livepatch: Replace the fake signal sending with TIF_NOTIFY_SIGNAL infrastructureMiroslav Benes1-3/+2
2021-02-08kallsyms: refactor {,module_}kallsyms_on_each_symbolChristoph Hellwig1-2/+0
2021-02-08module: use RCU to synchronize find_moduleChristoph Hellwig1-2/+3
2020-11-13livepatch: Use the default ftrace_ops instead of REGS when ARGS is availableSteven Rostedt (VMware)2-5/+6
@+$]v(|f@ gݲHO@%my 9|J>;#@%j@Ռß)_}?*iaz{.xSp+PrPZ@Bmz)v/93"jVF-&sj!Щ G~PHZ]@x}im'M}ܚj-'d+DRۻ` T,u7o67O|tWȦF~\ teh#$۟;ONC`eFLҖڑ2煲rqxL9HvT|w0" z`\t2S ˄;b!S_ީx].5c;c-7V5vˈ L+u1u96 BMΆ*.HElD`Q_[.&@%msԀr# F?Xb0k{bL}δd>Ma¢h ~Pok]ݱ6*pCt9|Ip,|} &S*w<;[&ލ}TȅB?YtautW7ǖ/X!I(sT~2V4-Ȭ˰t3;`xB&mV9KѾe&v[ԾĎMR ~Eۙۓ#Fi*om/~a7Kr%w`ŅPl 1@6 lF!A?J@yn5ju!2|̂ܚ1X`)(7,$Gj̒'~;k`ňX@<`D?;I< 1ִ Ά1:ɞ(4H#VH:.ٚ 5J$dSoaHþuq%?\ mS+#1@[j=u5p>]K{g> VH#Wy憔O?LG{za<횗fF}tkY3q&dhu*kr9tOW/yz{#ȡ2d;KK~SzgJy ټXD$_ z3-8h}x3G 5]ﱾxϽ^=  hL?ߥLF@ne-<!Jʮ0{Lf++0o!l Pk8Ô,D05zohL|:hg3O5jӁ)!Xw>=2{όÕ1D[:|<@R /n+2/(eP܈L2p~:,[bK=Ơ@.ӻy$E5{l;">.LZ'l"=#z_aEk1DQ.StN2cq$ WC#o*3˄;&PQ\4sN1"оc&Dƙf;{.GJԏG"PR"~ —fʥ^گ=zqj{`i'8\.bv‰R:?B}q* c##~eJAUTw\o}#@o:߇٦6L5n_wT\}ݔj1ӑcsaڿoov?>޻8(_,-=B3\}EC EI}=kÔ+Rjl'F0,< V49\%(n1KcUOfݸZm.-}cL;-ܖpï'%:(c_pU]ˤ_zsX9D ] Zny4H`06 {ۘ{Oyiot+kYq {Y =ܔ G}AZɳ=P{xm-d\6u Yݖ:qyH AjuaN~|Y!F䠽"87|DTLFɃ-eYQ1=B. 8}=h#ϳXg[0[ns` [EԼFBp/ӽe[mm7ߍl*D^Ar3xidpiN3.>Ҍ*U8n宾y ;YK !QFSǦ:R\~WMVû,'#M L~g%TI&lmX-V'x|VzJ%ߒ'O-qcet>&F?3v]OPd-;GLNxpѲ[^fH˘責 O>Ŭ{/`{G8Cn"Cl{@0;)@…Z7 h)v`2 mT1H,SachC A5@BqqN [SPτdI=< ˮ{ A/ahV塀+.#ys7 B_!e5NJ+{#kFx߂89ֻ|B(!zUd*PtyUfjĮ)w'wow)1:]T:L0Ĕi3)@W2JT$['G[~~Mj~CUR\>NTad:F,l)ʂB/b0jNȎ]Uyg9ʟʦ4: ,R0N,1iX؋+F׭ޜiIK2.*hvS{/kz^ 6İ&~Fuyz @ ʟQdZv kyK`e)UC"{|( ?JE(8?*ɺ%B x=Æ^8(א|4&W;]kG9 3aݜ][j%쎬dYwnx?Ǟ޽#ZgBbkoKL칑lXzUW9v~\>3u5o|:t~Kptn5},3OukN0{?OOзI ²tN}qzA(7d@a'[ ɷmH=>?KGO!?1(u ™+}T@C;5 j/GQ'"IƹAJ|W{:NKEPS>Z<J;]YZ oL_gM ѡju_˥4XOXFCw!|':S.+;L)+#[NcXΥ>[7ryK"K $z vrDv\߃#;^Y~Ĉzͪ#k)\|P߮%-vWuӃ~}7ѱQp6K@+ :l!Mo80,F $ĥ(P%o'ݩ2( , н`y-?KA jTAQ~`\'fCy{ʂSʎ $1ͶBq '7-d_'s\.E9b鉅%7ۆ@"fLmgޢRo>d~!> |Nqr37cs[wDʲ 8Q;-{4)m\@͌äu&W~'Eo"#A,>-UG,qy}>Z~؟yBXJ'3ĸ_JNn4spo`rxZ?W:{n~@C Q~@(\k6(6|}řڵO3ۊ|Q˰F0oٳZDGy3oQ :t.ʐǟְRI3G(s_ r#Mv A\$FlotNq42_.T@8NL: L@>pc">c[mS|7"\U*Txox9vχdA~Щyp^A3杦%63LQ%ԡp~g3b`e*Thհ ٕ%>kiPteNJI _3!:9#tZ!W_ϓ /Ņ}>qj^yTQu4 D]@`V)v순T͉DQ !eW &\+qnr5uTן덅]W W82P8<$ūp,p>xkCFPCGtx\ǛO{Y4h\iJOsח{՝yAV.ҕwmM:mv4E]H[FYNU8G6.ױׯ!. 6/pnP#6xWځA:D 6RY,} jF<?[3&H r &_xE&qek+3z 񵇂*IgD bnŬzT#u %Y\iP6D2 z$p> cP$eb#RМm ځwŏXݤv:;'<(/nBb@Azd rƁ2qb~?oĈ/bO[uD!} cp[ j:$]u-+s[x`CbGyM̶YK d4l {򴛯P=?KLf ox6o5Z#}r: AEi-v̰ , a1J祹\HEw_EwO^dxU|Mk.t3ta{\~Rήf C["3M|6:heRP5E_K?/"`#`C`kciRJ8V`Q AS@]]uFJ[x?NΫu#;͠cJuc@ד=0'.z^ `* -h"NC~t DF *־҇k>N1R$%fU1p\NgE6m"ֹxju,6>oSfѴ¯G0xQ[/rض|(`#'}3#< 鵁Yc" h9ЫC8PƿXQυPa;HC!KyO> 幩pX?wk>ϯ<;f7.5T&Ϝ%~T|=Tel6ް@"2zA,\i=FaEC乓G~iRQ% ݍ~t@˜V%o$fQ8QwhS=Vr13zDLU= (m1hKp"Y؊5}ʝF̺}#T BgQ0a;!o 3ܜjGDhky*u:quŁܓ؆jG/>(%FIUA( Yoh*b ))3ƦK:i-jMZΎ#z|5)p)mrCK䋋=&/i|Ⱥ(t mof'9&bQas>a 饖ta Gz&Cnr4o.DGF^K!@g`s>X XD~͸-|K_ `ulAۢ5A(HEO gM;0.6ѭ|%-wN}0++ιϺxXwie s╔8xI3yH14 #58 FP&{,'zXƧ[@b`S85ۭXϒ~tE:g}n =~&Jѷ)$*gngݲuPwJ0Vas*G[xuJjc#vݓd|/"+W׍Ű]DD n쭭ZQF _H`ٿwfuS7EV ft҃bXXҩ7fɴ nNN9x*!P9r323a No0d-1%oBȖ NxQD"P~bG$S?<U8E]˾f!~-C) Y_LX@HBP{l5`9{A2x 5`- IsOM(yo?%|[>\+St<~ ,EZ6mǔr6χ~ult"9AOgjXu#x#f$P0UPAHeB-'.ZC|÷C!ȖQ[3_}~Z!+|Ei 0%&>"*ֽk|! >\_3ࢦ.V`n0FrpZ|ic ynmL w3%觾 (򋮚++{: gr=D5vʮC Z#Ud&px"D%eBS\6m6":C˘BxcHIN}j|uE6ſ êݣ{YDc饲B('"v׿G'#H9Z)y ,!~"c2q?k`aBïm53G9% \uExj-K-^w7󘭕` Lěv_6aDz8krC`H7Ig5=usSYv% 9Sgkٕ#S<~9&qp ]jCU0)28){qJi7XW~%AB!>RvrIEKo @/n}xEf^`?Wj|.*ݍF';Ͻ|έ0MBevw>2SE@(cD/ /(ؼ<+!t)D~8Kŏmq霻=m5O  ґR#z\^S @iC [{1#b-O#m~WO%V4旾~A{2Mp6 9lG#: (`. BuKr#.KI`=H(>߀Is fkLn0)ZY >+Q eAT5MTcllxHP>=OCƃmSs0 -62 gXP"K Xak破>NPLHPnp@ӊqf=g/=[{Y H#cm۬%GuCÕ?gZĥz䯊$\* S&fh&)ω \b*O_ ,+G:d;W_zbdxl =@M .{Q{ (YQ9<8#/5kPD:C3p\#YQ1Euo" +w/$~in5P!XvsvBu vclUp@/R]@ZFV@kW{R)wTCۜ>CAs+֞nd ^Sya`Y3Kk'xX~> ~o+ $=Dsj_Yt! c?m; O-\ߤF5&6Qأ(sKl gf!JхfpHYcs-jlpmF")}HSz1&V"~^Kc7fo ZUazK$G5aWc&hKg[jٛ9”&vic"%;|!ړeGʳ;-]R3?tD,0Zmi@ ?)l.B$F̀ X1P*h'qdh>Mn!jKEq, Mn}Xb>^ǽ<΁AQ ;9\ȷvd:Nek2Cj36 )qk㋩?-Ec{^ezB <UCNVRϻ Fx_ RPC,=͆PӞM9ldyZbYZaCpe D ~[ pH9{ s ;վ!D8!ӫcqc] cw=mk|NJ-P$˨g:rhPg3$1w"i#S3$"+sScKOӰR̆7ڥ]dɩHk⤇ӭ|u79"m|Z4#q%E,;j9|ˡDvM1CBH"H#, گWgsv~e{2A'o(ءLr鹶&m?WlchuuPbɧ{w@ 4g˸$OOa4!5܄5x'7uqm^dm>)g:dtlle3,7mAIa0nM8cKH_SmUu9:AHoc<4F);vaɤ5W/SJj8C9WfFEȲ5TZB~H?$ C;AcB,0$\P?^ѥBɌ;*Q#om2dSbTpĢ.@BTJغsB4a$C NsJ>@S +27I% D Iǎ %,|j#oQ\} -hf<8 &F7^>]K/qYBaQ`tSvhR %;N.ƭ-hrՎ(ȓ3:9wg"\ΘH$x"{; h3 |b0c ̊jr90@SӤQ5sSt1m"kٍ:qabW}G0Hv NbK2~7 a^ODr[C?~I 8wr:8jބ"wP[#wALԇNNLb CH| |Y"U[.L~Rcg͓n&Hw~[\ΎHtlhՊt3O8D,F9e~^& 1FY~KNf`ȏ[yDk; ï4ySqPu}֯( d?Nk~Jǎ IǷ6eq WHMo_|` al"2 v V&ЀǘVG]QÑ ?;5asDDxe 1(nmnc˳ 8gh~'y|Lל: {]Z&$-C-݊o`SeOȓAIGM)oE&ŀ`o7ʏ?,#Z-o!GRR0i.ߪVu-rDA(QSsشx'\Ƴkȹm=V gj\s o6gh O(Q6[6ӬA./q(R҂90i"ctiPG@u'g>;&UΒĶTM  h k- !F鍿9VZ+fF-s6?z)G@l {ujER *@2% eV k 츋G*@ɩYC;ۻ'#S|VGOȨ3 eYv=j/>bc![w›{@YfT,whg;ňHx(!/!&s*%UxmYM:݀,ha|/ˬME]u#}ȥ` g=Ԟ< N m@mpW$+15D%:p 9:hZ&pr=aSAPQ~87}D=,a5lL kx @pzΧ$? `˼0Ӡ㣴I]T_05og|-dE;Jb umt]754tR/aȰn6_x:{{y(A 7OV^MzmWUNs3!ƻӣn^xؕ._gdz ωAf~$^ L 4pҚ4K4yUk`ʂg:[ յ4u(۫YMBy|y~Ol&HR= yHc<ܦ| `8㘲PUHݞF~2>0 _[Ѱ _CCK=r㿟3-2@?qAQıB)}(A ]$%g qdI\ ^l807̈́[nZ$7fpNrg|Љl)#u+tIU@-px=ݝ:􉪎iGez}„9x`|m1<n O)H,˄ ,=Gowc}q(pcz(z  =˂{$ }xo[|p""*)Fiy)A [DW0^Zm'!:H(sڐBpgUUw.H=p7 8HJXi9LW1U E[0##wL>!P@هS#k`Y^^5B ЂT,\o, 5\&uh_,-qAS%x`ͲH-e}|xpN?hZ88u{0uJ֥c.j~iI*MCYJ[uDA#>#䪞cӵrQiqECUOrG @@ Y*^g : DA~_h':7y/S]=tB`3.AP0&tS-6@ňpTF0oE?n{rq gb,6ꕼav; &dҘAH!>00ά냘g68[[d<>IdY"::=adM%o(}^ }1~A@SFS>L4_umvVB=Tβ6I  <A#1nXiOc6I>?+;K TBCpPfJ[G~_hL=AE ΐGߧ F3A=N#w@9Dɜ]3az d\W[{^Pk5j@;>$W7lד41!.ug,=l@$EF,APU' coɹ|; [Ͼ;AXCX1edkwoJx>ܲb@} Ӡ7h0|AV$NL1CnkqbC"O&Ү澅 P0|!Uӷ?otV0@]{ ,!l/!X^!=aݩÀrzn]#_ oC7.o|Ui MC gFSd"yATtv3(%]2,60jSVm `/[ WV?P;=پqj_/G\qQ:pJ`iP *9IЪ|=8Za1 ~8N\DZU q^yJk-E%Gn>(ox` kikȌ ӷ%N 7\&at쯬G|-U6jL*dc4G߻ç%-jKp8K-S eb> Jl`IQ/;镖vs_Is&s==녁X r=E9T;?'c*(jjfV 52e覃/dku.^8 Rc 賌&̠@!/K_E~YyԱ7BfؿrGh"BeAÕR[5P5'$TǔnX`U`:e%/tW5h! $G,693!G*$u _9%Z -XIDȰ!!8r@QtȬ͉m3Ѵ8֫Ya5&6A&vPivYH7eEЦ)4H! 0Q&]QU߳髒͌ I΂>Y`6 9)ex"q s7s ilwYN4!ǁ$4X(QZ)V43Ei R`Lfۋl6X!,qP T BAN iڶAiPRD)x|IO\U#ƢږJUU+ؠ24Z<ō4w}H 1\9K؁_cBۋD_dCSxjf~@{s}QOylnœK9.!,5"gЅ?0٪P/!Wt+Pc R D}or{h&zo/98UŽ?O?ag,1 H|]/E7c4!2@@ɚ \k?f=4a>'{9\U.8!ý#:+8%wc<~tI#ZGn]E-ERH^&Ǚmm\IouDwlӶ5;dePZ.p#n(p`;kNEB5 oc*|eύ 9֘#&DWsϟ2M!w[b8X RS,ą˛ 4#Ϫ\ VO}^;}[{}p|žu=@.vG˸+Q6E,Q0)*;϶{벛|v 5?EtwzŅo/\\kFX=57/qUL{H`Pzh1} ZA9@N>mN[E0wpc5z~<|%I)vv:Pq.On)Y9.t"9YV}{퉇Q72 Й;^d1t)xa/ѤG3FZ@ ?b%$; Qw.>WI77~3(XZ??jƫ`P@8 Z6{#XyâFv0IaK=r\~Xw #zhD !Oz?tUl1-byn_{F]edwBs N$|iP!BX#O i |iA/mvJEA_][OVME~=Mڲ^ +(X9f̠|9¹# T@26ysO_*\@-PKPO+K\[Isb'\iw 11\aB46 Hʹ" θOݮD/.t}swY_K?ekIPh|L(ZN 7pS8dMaJųH2s5 |GbO5>~s)":Crnibh0#|R.{$)\cbT7<CQp )3{ '?{\rQ^7I qwl@^@kÙ-3A#;N0Hyfophm|TZ#\zfjw5>L̄f0w;NJi`F[,d+uQ) 3HYE͆+n5 -wӶ~!ӌ/+zN^TL E*eR[h&Z $9Ui)=R6 ]ݬ4qA1Z]etDƔu &!<$r=к5pm._<7[^;#:ٗ@Qsa+= &ul5-]o N[= }\d.*>ZLjgdHEHkVA4YݥHjy]iZHN׷7M~AͅReUQA!5B.I|:p=C>lCcЫÄ$> }A T5t sޥnp]Ym)?UoKYu{5<CF׫B@_YMKOi8r1ՋӒ}(M 3]Pƫt$G&O!r<+! K%7n05,½(`t!cK!1A?N2;R#DŽ>FP*piVE1$_3_?0G ʯ(Lj"vroj7n|i;YEfDq{.P_~[b/D7҇S]Tr?o}1SD(\GL$fksl-|"t}gp l\dh1o$_oQzaaj\0AX? n@QμBOpM[[x-[l\cVIVMU/4񐈹p]tGQC嫤!z{!#"<ބnG؉0""rd9Vznv(ıެ!Zު\a3.^\käh@JG?e9҃ fDp*PZI"G8}=mLp~tooh9ޠHalAv xT^ۗ7<=vrpW b-CǮA<hi )ǹx*pTR.t73BniO;'FS8\pZJ/P{ a7E.(OwF}!谎d6;h ]&3/MeCݶڽN]  XHz\~ 7͝N .+E wSVF%wXG&z?| @۱drC3 ӋZ U[Y.Z&ۯFDzc9mWp#D6X-Mi֌8Nimf0WIk`rZ 7L)k"Yl4Hq!ȭ 1,EЅRxLÄďn&s3R]G~9HH2:,G۩}!tlcT_MV6,e#eRV;f֥Gt Fr_T4t>cdkMz f'9 A@g8LxW10VQbsN14ŏI! YDamX"eAQS)kD(E<(f>(q*gƵE$I_RgvF|=uW<\^%jr; 7!ȌXFvȆDN=%ƅp 8jÈk846#O2sűI_O 1"f?@(ط=ˑmPljw=S==U6G7 &4(أ~@D*ţ?5q`}l?pKnÖ ]S [::,l2U/ջdS.9IaS7,hỤ̊C<ҘD>^WHy0vd#7K[ Q#xs[,Vߺ" >7a]7?oZRWm hwW}M|7VV0ﴱDi+Ѐ?QB ֞o~csv~]>>ϳJd- sߧu´oN6_P9lW|#N'`gJ; pH$(NٺP1W.x_0J k1;"_迡6x xI䋤=F͜(y$/$ZO}<)ZGsu& zWq;EGwOžѻGDG|%?]GROI0z|A^>"pgzoGQwtD G;' TYipz/._[foy>M 2>UtڟЙ&c,C [&U. R`1zw~*+g`yaAYS?D~Ql BQ=Aq_KO?rNSߋEŽM >+턌'<?ԟ÷T^굛hw>ڂAHA(.T.^2gXT8H/CyP8~€#2S9< i~=vީHoIkU:ywSv OWf7;Bb9pd=yEyui_ ?knߕG7G,|%ȑ^PA o,Qk뷗wfå Yu\$GO~bp8iOu8g{%5Gۿ׎ !c#}ݔ~KY># {]+9y= Y n0KV8] y/uȿϞiCv+oCޥEKpj%2x9:Ą꟏Wyr-aw;3حg46oRY!wk8zzvӞ,3uǫ{Oӿ#ȮLr/T*Y5@t߾9~0_0_1< MA9h5 6+j:'?8\-G&2`ޠ AkO磉 R( A .RUA1N& #XI+O~CV,ja$)[Nl=>olډSrS`)h\%PQ!_e)M* wAsE >kED SgH~4wQW~_tff"(8]kO+1˒gÃģ^;h":"0 E7K}"\ůglց;waIV"> F&DU}dfLG}(GHW{wZdm^тՖCo\Q+>Uk ة[P<||/>Up)G28"#"'Jr/XxQʅ\RPc _%>d;w>N,I)ֽ@,U^~X[Aqu׹oΌdH#n?Yζh$rzr:2]{)/P(?Qɬ_Ah96W@kes?~ywzuS@z)JphH@>Ł?O˯M}u%ז4qy[$9sLI9K[*^{?߲Q9=$vx⸼~RjL=r֐R0V%`#/~`dv8ʖ3xs޻Z Y&UЫ0΅* ׿IDH;_lQΉh&C[ 6 &P 8˝D*< HUH LtF>H)OBw 񵡍 }Ov$ńv"MݚGa]PnLL\@|Ŀ2OԈE:V!޶A>?Auh!kh˟HmAjD5.x. BCޮS9Y7-v-(3DA yL hMcvFkN@4$a-m*;BW53 UjpO^'p꼄EuM05"X+lS)كGOsc&s>_wB讓O&ju[k!=n!V]<*+t`~a>qt!5H0.l 3h+tY QX >TD ۩ɚ|_Z߽kP TQv*Q+@uG\u_A@ c :HfH4 aOGC0k|iB4laF>ѭ|C!j/^J]-XW+/9۾Uo݇. IP @B},[QF{*g^"ltPCGQnx<pqv-jS7KkeuP AjRۊ Ec|+[1ajF%Ƞi2 `~/1 LĉGہf6_Xfb']U]w(i@Ç CU(q x KIHqS/HȷMtZ}v! mJ7%B۶(n[N`.0#w9t݂KfC2(h=MLCy5[+#HGW{[>8N#TcvsplV[]}hy0aUܮ\85Bz)]\ "S"puyǩ Je\ΧӚJ=dٵe.}GwivTt QK3tTRSX 1c Sl88LYE-[GFho,5+l+}+.獯S)'@ɻ<4+<{VPTM?MT8J W".<' -Z9Ǒ!{Avr6׃*h"d|O'?mo6qun[uZ+!*Li9"skBm~46~f/p.E4C '٭to%;go4 #;y.!0|$EFZSAU<;;=M6w-~+k/NIodF={lg勬!m cyDİ4O2_P}7 S|{HlzSgo'oit}*{B 'F /QС-W LO-[/m?O67y^DQC<5rCՓ˛gUb`5!,AyzJP8M=:Sb+L,;mҽkwk7CEP$C, LXH(s>yJ򰣤PN+"g ,I]qʰ|4OA0v JwKeƧ c @M:ϡx cڢ{>Ac%y?hv$Cb'a[_4|"1.+\%|d-YuAO_cܷ3,jA%Ȝ"@]ۢ jլϲ'?pFx }B'U!2isfB@)BUeOA˞"@'Ѽ.֊@^s Ly?w]gUڀ-Onw P{lZ?pO Pp;H$ E@|#}HDDl1k[Zm&c>x4m5Y QF9jl'DbCjhHz pxZ, ƽXy[Jy{pG+G8j zD?^ۣ:ؗTKET3|rlԗlBlf Paᦼ1!0?{\ps0.jI5!<~hH%Cy]Jftwѳ8R# vK Jp/J{ `0"Y6v@" |mn~]'oFs=mk g!?>B_K]ߥw숀a>|=$azt5{8(݉ψu獌dn9>2 *|@%'"C}˦=K`㐃Zٱ2xv@9u݅w,pu Gc&,ԢI-dUf*GQ$PY"zv$gLvf^WzԇUZ](9YʽHz=nj̸0W`{y-.MS̸\2mN eCx P5O?)&Ȣ*abCbA$pi9f,H/4s]҆M ҿtƎ8c<`+V˚uG0 G ri x<]VjfDnT~U.gQ7WaFh;"~eos>Q#HN!WmV&~ްHfr&-Tɥ7+0|M-A!o0ݷPw&f^"b=_ϣ?~`VY`?rV6DWr0'\JO|ci/Px:vz(ZYf_@4ہ;u`$4& i!~N{ikۄ'zHp~3~&Y e٦RJ/ONsSs,`A8,a#\BCI@R1gs\aD yk&6L0(A~W-p}{dZjJ" سs~_ !׮x=j/a2iVט/8 Fï՘ TlHq@sxX,u;첌! V[ml黿[nח+Lvnt.y> a,=0!j 52)Î/:V<+i C$5!hECb(e ӎѤ <7HqWvу* & {+s.9١ܹրc<2`|5 UQV"Y" ^0D۷&[@#4AD9P<XHpzߴ2ҜR-ԊRr580B Cak["=zs֜i#v9-Tط'J7>,$"j}? ߯0y[m&zBE6)Uzǣ)p9< ŋ,EA2@<:XڏW=oQP{ϕ$_&$X4w` IyAHy@p02冤:? <>#&@ VŠ> 3UE|`w3q;@\ *HY{:~^~@ >wC&OhA 10x;SJK`0KC-oB^CwY@ٿs.B+ov RR, ",P9`H*zf\y⿍:ӟ/'B6(X2'eS":ۯ^D-Ѱ?j]rk:}CyS/_Pq>-@b])˺3'ZUvM,mY3QGȠ(L$9=%J* ögݐh %dCq-_o;al@5:$AJ} 杣K-b2EU_1SW_wtv O߂ _UJ$~5A%Rf(t{=55q=;Γ/]7ϰ!3I2 ;t{6ѐ > fQ!ioze3>][Ppq 2mV KtXe!}pnzӋ"\F*)b>p6'P3 "_R!AV\BC0cb,ߦ{cn|NӀ =\;SjLZז89 zdz\use41\ayy [u񤄎:Hm, W$F6$EIE/XhAۯj3R?1 P9 ܃U}W6d ("م Тާwn.ѳ#WrXm:L{^av]5Ù͢ J@Eݺ'ٖ (((j(j(j(j( EV ";> q̚m?MpݮA؈q|h*X~䔑nܩ eHB{}5WM!$~-Hc׮H.h2A {jKvNE0 NMY(v$-97{{b@lLz3'$I4$3J < `M֜wۑ_:K32)Ӿ` pѓʎ:s}SpR؍ g6Wg\;`{9)/Ke#thkߖ 2 'UZO66I v̢"ЎbH[]fDIDpDN-0m;7=m~4dGX0۠@Yʀl ~&Suk`zG7PC0tqat1GA<֜}\b=2ي "Aq6:߫z7mP_綮U"~˴j! ad^"Z匟9B E s dxI@'/~da. @ \ լ#̌MM+} Os L>:n3Co#F?} mڜlNJG!gi6vSH} wRwӮC< \~[NṥHuCxOB $ I:͖ͣ <J>=YIվ$2 Ò"D7]|8,K].tUAhJrsH#|N~;*u$S'ۯe WX:_eIq y)M\|䭙 @ T T@U҈Dȑ(O󄁉BiBa Hdi4UERDa(i?-D JJ*r%ލqTUUUUK@HL2qMb*C( f \035U 8uH9U31-)AKH>CO}x۶C"5އI $C뼁^H^Cc{@L%xl `*+{1,ͮFѠO<§\(^wKs}W?{r9cD̒M9'X k@ˏ=jp@A0|/kFA /y-aє֝`ajYFE@2gnH[<7yvm1̐k'gk0sZ d8C}KfoR"1?e?~".誎~葉n.1PfUV1QG=>N}=舀)%wss ed[Q.n`< mS%d|WG(ELew$yaĖIXM!  j\ocehxzS|$ PQù q0L އU&n{~6싰IuE-L|hn6L(c|@fZ@e ֙_ߚD}-kek(ZG8"E!"`0P:͝g-nc~'Ί,!jrCD`]3v'"*\R~-0IBT6 Bp:oGh!hI\^(AT&aEwu7Ws(s #Sy"c(dy8Z$А%YlCn@*"*#Kw3}Lczy]~YV^V_9_م[.MUh?qY[^jQcvw=2o셫ud BNߝX?p-v1lnPy{2ݫv8u߅eƖ5~o @G1)Wmswc?ANÉ}+,ـu2սx^8ӨXM? >x(Lv5ՂdC҇&V?Pct2bN 73Kw'z DXɷϜw^K|-K)qyz]P!5K"HXݨpGÛ$-ދl L:iV`!~UU{B0,ip+M\9"!ivGr|M_kBM?ŕݎD9g\!}Ji_띓~!\__']ɳ]zBXX>8r̳99U<.l!Df i!ꌜmsD1VrC*J@@NwpwL8Q ]|&K@d4b+=]yuDA97>IWsY8#ff U7;AGY`_-B6=&y}k! Af=~~'%(\xËG8߄b:X뾵?/zݎIbS(epA75sd2:1!P`U4{&-0$8H'S8KucAphMبJYm Hʼ+lOG׷)9[N7hJԒJAQV.Wạ./UnL0g姄ly]";U@ Sj?;(K w[_3Ⴜ,wWg; X " L΁>!6'ΠO2Wa}o|'=k4)R<1O;LPBJ^j[Fb9_,tr|f'B ATR[am4-rn%oߤ$u':4t*Y#ߴU5o'TPNN6} `;$Ayi,>no[4{fTq)w1]2Xr"- -۾ ?2 %! uB$R9W Jɠkx]yńyN(!=?ILcJdIhF7r~/ŦfԈj)D`54ۿMd+cgG2Jvu{兇n6٬n{.j ~0eO@^]__nH{uikhuȠ#fmK ;~A 6eA3. 邃k˿㏢'ٴR+{ PpsC0֝oU3&Xq:R `aB :MhFͱ+c1 !3lu=*1ːrKlJWGyLHwx- IiŠ-Ey%ɯGUe( :V%2*AMA0J@ d!@ J)1] {p@tz U@[kEzW4O+?cE(i(+$=ȩ5iu:SEg^O8(1VT[C(Vf_eYyCMdvN&Er5q#,@=JpTgJ  CK-ս%0rGP5B# "%*\B6|TEe} T ׇy}>Y!yk j}X pT}h`uR?o|߇#zD9 KA$9-oRzSՒ %q