From 58d041757169358827127436fa4bf2eb6016975b Mon Sep 17 00:00:00 2001 From: Dolu1990 Date: Tue, 7 Nov 2023 18:01:22 +0100 Subject: [PATCH] Add pipelining API documentation --- source/SpinalHDL/Libraries/Pipeline/index.rst | 8 + .../Libraries/Pipeline/introduction.rst | 299 ++++++++++++++++++ source/SpinalHDL/Libraries/index.rst | 1 + source/asset/image/pipeline/intro_pip.png | Bin 0 -> 40000 bytes source/asset/image/pipeline/simple_pip.png | Bin 0 -> 34923 bytes source/asset/image/pipeline/simple_wave.png | Bin 0 -> 24249 bytes 6 files changed, 308 insertions(+) create mode 100644 source/SpinalHDL/Libraries/Pipeline/index.rst create mode 100644 source/SpinalHDL/Libraries/Pipeline/introduction.rst create mode 100644 source/asset/image/pipeline/intro_pip.png create mode 100644 source/asset/image/pipeline/simple_pip.png create mode 100644 source/asset/image/pipeline/simple_wave.png diff --git a/source/SpinalHDL/Libraries/Pipeline/index.rst b/source/SpinalHDL/Libraries/Pipeline/index.rst new file mode 100644 index 00000000000..ce3841e91cb --- /dev/null +++ b/source/SpinalHDL/Libraries/Pipeline/index.rst @@ -0,0 +1,8 @@ +============ +Pipeline +============ + +.. toctree:: + :glob: + + * diff --git a/source/SpinalHDL/Libraries/Pipeline/introduction.rst b/source/SpinalHDL/Libraries/Pipeline/introduction.rst new file mode 100644 index 00000000000..9cf634c61ad --- /dev/null +++ b/source/SpinalHDL/Libraries/Pipeline/introduction.rst @@ -0,0 +1,299 @@ + +Introduction +============ + +spinal.lib.misc.pipeline provide a pipelining API. The main advantages over manual pipelining are : + +- You don't have to pre define data structure with all the element which goes through each individual stage +- You can compose the pipeline (as a consequence of the above point) +- Manual retiming is much easier, as you don't have to handle the registers / arbitration manualy +- Manage the arbitration by itself + +The API is composed of 4 main things : + +- Node : which represent a layer in the pipeline +- Connector : which allows to connect nodes to each others +- Builder : which will generate the hardware required for a whole pipeline +- Stageable : which represent a data thing that you can retrieve Nodes the pipeline + +It is important to understande that Stageable isn't a hardware data instance, but a key to retrieve a data along the pipeline on nodes. + +Here is an example to illustrate : + +.. image:: /asset/image/pipeline/intro_pip.png + :scale: 70 % + +Simple example +---------------- + +Here is a simple example + + +.. code-block:: scala + + import spinal.core._ + import spinal.core.sim._ + import spinal.lib._ + import spinal.lib.misc.pipeline._ + + class TopLevel extends Component { + val io = new Bundle{ + val up = slave Stream (UInt(16 bits)) + val down = master Stream (UInt(16 bits)) + } + + // Let's define 3 Nodes for our pipeline + val n0, n1, n2 = Node() + + // Let's connect those nodes by using simples registers + val s01 = StageConnector(n0, n1) + val s12 = StageConnector(n1, n2) + + // Let's define a few stageable things that can go through the pipeline + val VALUE = Stageable(UInt(16 bits)) + val RESULT = Stageable(UInt(16 bits)) + + // Let's bind io.up to n0 + io.up.ready := n0.ready + n0.valid := io.up.valid + n0(VALUE) := io.up.payload + + // Let's do some processing on n1 + n1(RESULT) := n1(VALUE) + 0x1200 + + // Let's bind n2 to io.down + n2.ready := io.down.ready + io.down.valid := n2.valid + io.down.payload := n2(RESULT) + + // Let's ask the builder to generate all the required hardware + Builder(s01, s12) + } + +This will produce the following hardware : + +.. image:: /asset/image/pipeline/simple_pip.png + :scale: 70 % + +Here is a simulation wave : + +.. image:: /asset/image/pipeline/simple_wave.png + + + +Stageable +============ + +Stageable class can be instanciated to represent some data which can go through the pipeline. Technicaly speaking, Stageable is a HardType which has a name and is used as a "key" to retrieve stuff. + +.. code-block:: scala + + val PC = Stageable(UInt(32 bits)) + val PC_PLUS_4 = Stageable(UInt(32 bits)) + + val n0, n1 = Node() + val s01 = StageConnector(n0, n1) + + n0(PC) := 0x42 + n1(PC_PLUS_4) := n1(PC) + 4 + + +Node +============ + +Node mostly host the valid/ready arbitration signal, and the hardware signal required for all the Stageable values going through it. + +You can access its arbitration signals via : + +- node.valid / node.isValid +- node.ready / node.isReady +- node.isFireing which is a shortcut for `valid && ready` + +You can access its stageable's signals via : + +.. list-table:: + :header-rows: 1 + :widths: 2 5 + + * - API + - Description + * - node(Stageable) + - Return the corresponding hardware signal + * - node(Stageable, Any) + - Same as above, but include a second argument which is used as a "secondary key". This ease the construction of multi lane hardware. For instance, when you have a multi issue CPU pipeline, you can use the lane Int id as secondary key + * - node.insert(Data) + - Return a new Stageable instance which is connected to the given Data hardware signal + + + +.. code-block:: scala + + val n0, n1 = Node() + + val PC = Stageable(UInt(32 bits)) + n0(PC) := 0x42 + n0(PC, "true") := 0x42 + n0(PC, 0x666) := 0xEE + val SOMETHING = n0.insert(myHardwareSignal) //This create a new Stageable + when(n1(SOMETHING) === 0xFFAA){ ... } + + +Connectors +============ + +There is few different connectors already implemented (but you could also create your own custom one) : + +DirectConnector +------------------ + +Very simple, it connect two nodes with wires only. Here is an example : + + +.. code-block:: scala + + val c01 = DirectConnector(n0, n1) + + + +StageConnector +------------------ + +This connect two nodes using registers on the data / valid signals and some arbitration on the ready. + +.. code-block:: scala + + val c01 = StageConnector(n0, n1) + + +S2mConnector +------------------ + +This connect two nodes using registers on the ready signal, which can be usefull to improve backpresure combinatorial timings. + +.. code-block:: scala + + val c01 = S2mConnector(n0, n1) + +CtrlConnector +------------------ + +This is kind of a special connector, as connect two nodes with optional flow control / bypass logic. Its API should be flexible enough to implement a CPU stage with it. + +Here is its flow control API (The Bool argument enable the feature) : + +.. list-table:: + :header-rows: 1 + :widths: 2 5 + + * - API + - Description + * - haltWhen(Bool) + - Allows to block the current transaction (clear up.ready down.valid) + * - throwWhen(Bool) + - Allows to remove the current transaction from the pipeline (clear down.valid and remove the transaction driver) + * - removeSeedWhen(Bool) + - Allows to remove the transaction driver (but doesn't clear the down.valid) + * - duplicateWhen(Bool) + - Allows to duplicate the current transaction (clear up.ready) + * - terminateWhen(Bool) + - Allows to hide the current transaction from downstream (clear down.valid) + +Also note that if you want to do flow control in a conditional scope (ex in a when statement), you can call the following functions : + +- haltIt(), duplicateIt(), terminateIt(), removeSeedIt(), throwIt() + +.. code-block:: scala + + val c01 = CtrlConnector(n0, n1) + + c01.haltWhen(something) + when(somethingElse){ + c01.haltIt() + } + +You can retrieve which node are connected using node.up / node.down. + +The CtrlConnector also provide an API to access stageable : + +.. list-table:: + :header-rows: 1 + :widths: 2 5 + + * - API + - Description + * - connector(Stageable) + - Same as connector.down(Stageable) + * - connector(Stageable, Any) + - Same as connector.down(Stageable, Any) + * - connector.insert(Data) + - Same as connector.down.insert(Data) + * - connector.bypass(Stageable) + - Allows to conditionaly override a stageable value between connector.up -> connector.down. This can be used to fix data hazard in CPU pipelines for instance. + + +.. code-block:: scala + + val c01 = CtrlConnector(n0, n1) + + val PC = Stageable(UInt(32 bits)) + c01(PC) := 0x42 + c01(PC, 0x666) := 0xEE + + val DATA = Stageable(UInt(32 bits)) + // Let's say Data is inserted in the pipeline before c01 + when(hazard){ + c01.bypass(DATA) := fixedValue + } + + // c01(DATA) and below will get the hazard patch + +Note that if you create a CtrlConnector without node arguements, it will create its own nodes internaly. + +.. code-block:: scala + + val decode = CtrlConnector() + val execute = CtrlConnector() + + val d2e = StageConnector(decode.down, execute.up) + + +Other connectors +------------------------------------ + +There is also a JoinConnector / ForkConnector implemented. + +Your custom connector +------------------------------------ + +You can implement your custom connectors by implementing the Connector base class. + +.. code-block:: scala + + trait Connector extends Area{ + def ups : Seq[Node] + def downs : Seq[Node] + + def propagateDown(): Unit + def propagateUp(): Unit + def build() : Unit + } + + +Builder +============ + +To generate the hardware of your pipeline, you need to give a list of all the connectors used in your pipeline. + + +.. code-block:: scala + + // Let's define 3 Nodes for our pipeline + val n0, n1, n2 = Node() + + // Let's connect those nodes by using simples registers + val s01 = StageConnector(n0, n1) + val s12 = StageConnector(n1, n2) + + // Let's ask the builder to generate all the required hardware + Builder(s01, s12) + diff --git a/source/SpinalHDL/Libraries/index.rst b/source/SpinalHDL/Libraries/index.rst index 136f2684478..e7dd368b68e 100644 --- a/source/SpinalHDL/Libraries/index.rst +++ b/source/SpinalHDL/Libraries/index.rst @@ -37,5 +37,6 @@ To use features introduced in followings chapter you need, in most of cases, to IO/index Graphics/index EDA/index + Pipeline/index Misc/index diff --git a/source/asset/image/pipeline/intro_pip.png b/source/asset/image/pipeline/intro_pip.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b7b04e9fe9669b448ba91fa9ba31866e1be2c6 GIT binary patch literal 40000 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 literal 0 HcmV?d00001 diff --git a/source/asset/image/pipeline/simple_pip.png b/source/asset/image/pipeline/simple_pip.png new file mode 100644 index 0000000000000000000000000000000000000000..5f874f62796733ad13a074871a6f4ee9a1791bf2 GIT binary patch literal 34923 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 IKJSG80*Ww8ApigX literal 0 HcmV?d00001 diff --git a/source/asset/image/pipeline/simple_wave.png b/source/asset/image/pipeline/simple_wave.png new file mode 100644 index 0000000000000000000000000000000000000000..53a98be67ac7acdc9f4fbe23e110740920cdb41b GIT binary patch literal 24249 zcmbq*1yEewvNa^ZLVy6lHMqNL1lJ(J-7VPQ8iMQKE=jQ9E`z&EaM!`z0t|!v1K-v6 z?yGvQ{!_(p3TDpPyU*U;z1HfU&`%1IXfFw0!ok6zNlS?-!@)hX$#o_phj-sbQ!go>sOX z^3eI8iKc2=DL#AIoB7qnT*J7G+86nzTXo$fOL72uH1)+KB^3u09CcN(wm|riV~kIj z@F-&hCwE>#BmOC#Bm962Fq_WucEho;jDiA>4G+=Vw{JtwZ{^BaJi6@s<5RvP@FR#4Ibkzadz`| zg^`?Z4rZK6zG5wasQ4`|C)`?&~u%1i#oUHGO0CK-$BI4_S1% zXr`rbBm$u9bc2U^&X#T|KmFinagb!cN*f%T>ZEhMeUZzkmLu1lz98(l&*56qi(R(Z ztq(-RRu&DAzyxc!qRZU_IZh8>${k{TSZZ)a$x_O2$nLC2_1Zb@=jx~vlAREEJ83uX ze@cYSZo8ZE8q+~&X1|Prf}%TC5*fzN!9)9tabMl`fxvSO55mPX=bt6|xuH<7nap&D@jl@VsbP# z65*lKvxF02qTz-K7FE=9>eD_tme}69~s;{kg3GFKXA_bT<

BIksa2!;RY-(4!$MPdk1a%^!(hw}+^e?ugoy`5#4T%zTL#YbzFb`wpDNUo znHJxujr$06N6~7z=H|>||EkKP;E{+zugGrNr&|wCQzUB2;;Y@TI&o&H_r-nx87^iF z5qSPYwCRt<>rKTWGf&a4sxH1*@AI$JPo}FxIlTweF5~4k`xe_TQm}zBiL#!ycB|`> z!F4UBQuZjXssaH-D;p^Y{rKB?oc8aWMW7y(iuHMh9Nkr0{`bX8UIAoCSNYTC`sF^2 zjN7a<6_Czex2-Ip<&R=H_#D)hmi#laa~0#R?p~+hbSrIfak& z(Up|@NrXe>42G=vTc{|R9*f5;+0s%`y?{#_c9{Zi4W|imaAATFoc!OyCa=D#skwOM z9{hQK=5*rR8Nj5f2;`l(P5|zZmB-Mxf=*XhCC1LKS%+3)Uh1^*xFb`lyH7wf>>#I& ziaXnNsbgiM6g17NNR+U3O`)v1RDEO#2z;G7Stu?;A}W(*BXw8k9D*igFctcSuP*4= zr&+2in02hiM?%p%a2tANUU#g43#IdOwZQFNr(&}Yd2~YB?^^d^OJ-|pDzd&2jEHZG zySTW>mcmr8Nlr~2IN9k5p*?*ae#2`nG5tk{K^fvCK*!Fi_VWC!mQ$a_b$T|Po5gwz1FRLd{HCT-5(E#h85ExCR z!?&s=Nsaefs)vF|oUG1xG(NbW=F?x)AEC>9^8KCPq`gilLIi!2)%`K$CAY`i**vKHQDxJC|A!j`bXF)0L}MEzbBXXA4@3VH{t) zUU}Q&)WmFQ5oCv!I<5~sQS?i;=7f8`m3%U`Bat%w)3XV|?xSSq<*T{}AUcvSHOhG$UaNMFy58UZfg&Fw9y;&Qc!brtuF&`Ni=9f1Prk>0t{rW zv@gyf@yDPi+{=qLIwW!*i*&_>6R|lgFD$B*mKR+-86vDj2kTt5)<-zymtZg!cP$?G z5FGq1@3sEX5?^m3O0&D63r^47B|9e05HEh|7|{DZ-w>#byVn;mF}@{e!GxgMZq zXB96IfbS~NSCqS?AE(e2~+b1j+6Jjv6=zk83N;Bz5FX7}0ZX%)oA>0klW z_e4daw>(8R=4N~h?pid^k8Z>1v-2ycxd*L|oRJG0LJ&Cdu)R08v;2(=#*~BDY-+0FG9d9#XZAUP} zeo)hSYo*dTANM z8YUq~4Ox8V=l3xr6f!$z2wM=ANuEQ@xTv_{-7ytXn5K0L=U&2W_I=D@Fn1vRmp5`W z@;Uwvii-FcR?mLNxOtQ6F(wu!`X@O&WRVZ;{>|fdad;*(^klB|uV$t(X{`Ba3jHNj zuPpX=$RD4uM||?&u(_iXTpdVC5{Vo(FUSvN+{X`M(ymU1f+2!t5+^ncVNoGJ# zVVPp-tFPWr2@hYwkKYinA9slqJ0ODs6Wf#!Va#C{HwZ(tKSg;tz$4$#AaBH**$p&8 zFY@3;uRW@PjBeNWJDH|^JK9{lrTp}}j6>59X2Mw~*(ny35gRp(mK+O+M= zrAXK$Re}@OAA*Wa-S>t?aGoX@1z1wXty4itu3UZ5%aQ|FyO5qf5C$rBWI>O3s@$g4 zaF3-o+!iepZ}EqtWD+ctmR}^FoU(*sx~9rkZ1cJAF)d6V8}|DRl^*TeJ{ix^6LeHQ zP=y5MPxWz51L+VH#-Dv(Du?dI{0Y1;iAv;YKXtk+7H#{{{=@6iN}NY5YwP$hSfhb6 zB^)xZSHti)EZ8*^jBKNg6i0t7y(n<-5-{R#&FFU@M1|g)orH7-OrPiaWXK4et`JtI zR|L$cXAaI>K24`C?%D7_tP6+V^GlA&60836W%hzl6q}Iw&Ln-7?GjU$JtXMrJ!@?* zn^Z4C6^LBvFRw&`kj8S_!S18$5R-_({X< zE20djm%d9&Jt7uO3=q~|FqZ-<(nM8qq1P%881)#b-GLq*&l^RACTB%L!L4GW2;l%) zQtM7|?%Pw>4hJ=SdXhZ$8CU;U6FQga3y5maI+dvoYolR3;=kHt^VGNY^oLjx{d&#vW*p0 z#_d)&tbN8Lj|)4-=$-4|HwOZfDGXFlV&QMD;^)kUuNg}QlT#>f(6i&wA4%{Fz=23! zAfmsek?047^hMUECqIZ35dCvU&eb~@mzE(RqJsj*LPD~4Ty@1ZdUO2B+Bf<|~D zLYk2tns^L7K1+EH9rfJs{DJY}LPVbki>AVAY*3e>g3L)c=bk>}{I~9WJ|rT|C{Lk8 z%E3OPYf&tvA!B!{1(DiLUTCD9Ibsx@I@aq#wxNEzX8ntY&y)B5t-Fo*k>xtDxg(%l z8(VHH`}`?o3Z$GNJr4)mD35f8O<8pd<|{|$9D3blp-&d<_}BTqzIt^XTOti9c4b#! zD@h~!(sR6~93wUEim^6h@~T#q{O)yJhnFS)s&l5z=OioF7g#rK+PBUW!upMhOB|^^ zIHVg3^^B+Z`DSB9AH4N+&5_2h%}0uaCTWu2iP{Z(MyIj)t;$2Y)vCAcvE3V@-6JSW z`1;dG(%zR$F!avFHs6Z;(RvV9NBN#Gfr+YpatRyZyO( z11@LY<_^j-@mN)hA9EGVi_(LZM6-2vICgHsIV<6!m`T8c=^DKkx(s6M$D<9`3TT~p&djPM)0gwom(R1UjQ*bztb4`vnuT*1j z@gc!*WM+TtFzwN*RJ;gj37hLyW)DuW=$*@3YZ6nx=D*|Fp`n6@SgSOhf1G?cZ$0KG zEmFdY%f(tk{PX=FOY~$r<vFG>2OziGYhC5B|q^+B^K~I2~5%xwbPi1j{AGi0h9zh*asz_++B| zhqp8ZST)v(E$KE|{@;Fi9l=4tXX>_&-e%7V5p<3sd5~18$%TWwgB{b}QZu6d(Cs|c zWC!Mkz8iPkVr7(f6Ej}qi27QUmUpJ(M(5{aN`GkBeH^OK?<008Pa%`$|k$%~C{YN|48Y5)(-b$R$95nat2009iOpK40Rp;i%m~A|GGov+(&jAR| z6RBgHtVn$mkh85PhUnE;iVak=X37JjOixR}>GCpLlM$rxLvMq=vBR4UZ81vjTB&J0 z%o@SR#m)k!z$hJ$P9?ZNjq&L5wJLX1Uxv;3>;rSgWV9h}|k+UFo(d|_84 z_A%LO`vcc>>lJ@=JxIxGv5yz(%w$LErB z-OtTVHqnJ$RP*XbnH{-h|GDa)a-%p4;CF(@P}?*LED#dzc_0I35_~L5<+hwPhxa@D2uNO%c$@^4|3C96K7mBWaSV3) zCU!tWiSe3m;hUz{dbTOWSw9YdX}oqveZR#vaFJgTe~=sMjY0=&#k|u->Wz+jOwlkM z=r)_4!lS}FmB7AX-hnarkiKDDf9%Ud!78bXB|3^3y4x-xXTd6o(YC~eFD$zIC%;2_ zk%z6Lf62o6m9$D?tk{dTKGn4a4O_oD!1Jqa~ zK{9`K&j!l677L|y7ykv{=rN|!snl^c&(D0{V1D^m@=yLUIXS<=T-o<#)al3Z1x|7L z-J5B$thN5oMk(gSYujj4AHy;>LwiP<{qY}<(VwqE2m9P|$qVGUL)$c7^LFa??$^8r zn<&{36M^(n`@wG7ugf6~#JUpsPetz|NZxeS+L>1|lcl)tC5~~Go{+Ef=oYZDD-8cs z54>q=7(vfD9Zgqv|0U1n=d&DNL@YP^y}(9csETxx0dM;vH$4~!7ARfObD1O-IhJ?F zzJ7IVQMEfKUOBFdduV<_X>Uq}Jcd-}L|mD7Gg`MS(sdoI!b?&AL*F@)Hzpe<`Acyr< z4+Cu5`+s&WWgZveI-NV!7R$9OnN(J4E*nTa+jHjA$b2nU8e-3GTzU^G*(liS!HwDK zPs%X6B3TpPaR0>ajIa8P0macD)2XIhla15RTW((j(@si@4a8L$i`I(U;~%wLzZ{VK z{&W!Bs4}k46r1V4ogBbF^*y;WLKT*5`k--GIC*#@(Ak(U_0IhV&_@el0kCOQYPkeC>3Q6ttMWqmSWU>jz9_QG7`=>ZZ%*C7;EdMOoJ2(3 z-2+gB`yiII9yhR6CSa__(#*rx5Fz`fDTvvLDcqH0+eVoq-|XUhj^P_+l6n+2V;+5e z5%sEZ$ES&>ot<4!YR`Ib#7kzO=I12|(u{|ME{6+ysvTLiN1~=To*a)m1Kv458x9T)ZRUD# zXFxJWk6p0YdGac}+U4J9F%Q`XXtA zhJrb_=fZKm{Bk0N;HNCpHtgAmv29*Y8!P0e`b+&wTj_AUtQfb4Z8=Yo9sMcGM&3gi z+AHsa+~>N-1CFTVKzj-KgZ_SYW>A$HTS=C_Vx!Mm{J=7S9lB9leNsX7FEV*6HQHat zOzW@6r+SiUGBrv}k-fd2OUq{F7s7U$x+G0cj{kr1*<~5cPb1pEW&ev^jEs(cE!j&U zt^pGOE_;X5cwJ2_C>&9r674Nm0`5>E^}WR3xKEmDgdiz|PZi$tF9e&zX32mBf;{rVX~C8!pV`zw z?a58^We zDrQ1_jZlrm0!RJz96eG>j7lE{wo78}N=qn|i}`dTA++z1%h7*jL3E5&#Jl^i!Sts3;`z^BS zU`Q_g#=@VGGFkCVh;U{=0xM?DJ}Cu-`T`u+h}Rr{``q_jmVy1W4>1`8zZTPyQ08-aZ7NKth9 zfBwNk#kDHcp>uu6X99*%?2T7?31OO^sQ?V4Q@!A=?~vTxEnXxz3Wd`!2%jM^vK)H; z@e1M{KHkYD;%`+L+W44;378{nPRke*)HpNbWk`ds^Gtq|)>Y71(bdy~)p(5Bko2q^ z>*k=Ycn%bID41PwClVCplP5GUF2-^AY~cB4czuJqf0v+!j>#OYM@`PMw}(1&#DHKH z)Z_tIql;s0ezyz!Ui4#=wMNVr$pANB%$R3=-0WG?!%2<7J{^p@M9RY}z`_!w^YixV z2s{;6HqRTHLSfFt_Al1hlUA>dkq{~l7v^jRCAW467h^mJ<}^S&r;gfZ^9eTe6N%_( zEYxKMHu}|Xj(h@IN{Yo;=H(1WE06Y6B3Gkde_&z$^Nc>Nj8y~MbfLKo$xf)Z({<&2 zzmDUFtFx)H1JQb(1fj~ZWEtf}%&0DE-3@WR*o1Cts{KJE zZ^hnPs&|@Nv(<=_;BM8Wwpb^;;4{(@LkdVii!1ygBHukNXwnXVhnL7?BpD+kgJ#rv zB#uL7cWYhq^B8H6FEjB=LbbPCODno_gS>%j;*9O}tpNQ@p{p{#2O1I9t8y|ENTHjS zvrRIT$xK3Ex89g}^Cb)Q30+J_%&gluz`8X7CP<9fQ4(x2rM1=A;$P*ktOoy~*NCw2 zNd-jntjW`-$TlLdxw{x_0Jb3;+44FKX4d~*d@O<2rckCkyJm4{Z-u_QnPdv=Zzf!7 z404>VO_=3kQ^?xj(z|ve-G=sBD;15}M7iIrc3UcBjwpJlhT)QE+Zztcxa2;wgldrB zC|04Dob>5XGH+qv_HyNYsluw~wfY#B?R(bSa*%QuDYZR2iQH5<>F3Eq+@JSB`hHjy zg=nN#C6Cj5txS&eb;#k8-bF@r@GWtBWS0K632?dne*Vy6-@M19=95oY#fQ4Y^;jz&E=!%}KPR`HHQG zKH5cY$eZ!n^l~ppkrleV)jt_9Ahk67y@F)I$b8#z>Uwuf%X`sU}%DULG zCA!izQJVpYw1FZ9A3;+?o4p-QZTi37A4S+fQdY>D1c0fwS%|a3s+6o@FOxpf3AkGp|MskEgSW_}^;* zLVFk0%WKRem&>9-B@VIFsJzil0%13s5^&L(so#n$QF`ys-{6#;4^RUe@Dyb~sc+O%v!{vuoGHa-0RJ1)+{$+N&<#bvhnn%U;aZ=k-FawTGat&3= z^5Kd}WC5Z5#8^5pR4SoKsHyC7;XL_voa8o>OhpA7DYJ zfC}e`4v1i1cJrF@Ml%Hprcw4T#NJ49kZV?N|F4qa!Mrp)p(_tFRld5S)V^O99ygrWWfw9Q@Zy} za+AE!o%_2yDrYB6Q}-wi^wWYVMwO_ZlvULjms2a&`@MoYn<|LTt}bsvSD6Ibt&EPS z2jwnX;{$&;q}f47PI0TxmZ(+?gJHS>J8NTw02&l2*paF-xRQWf)M_$`*K2uWrueOr zX3G)^X_DmZ$wM=q8erOF3Uu_zh%Vq_mb~wl%xGrQ7i#NpB{jU5e>3#w7(9`sPf@KZ zU}f`ywbKWfzdLS#JNiZzsDM0UOek%8nOGUC0YYat@B+Cln!@%P>y5+~e zep6nyT4L^Nb`xK6K%X)Y1M=VHq$QDUmE20x*EANd&HiS;VmG8)0e2~eqrR7UTuIuQ)+LgaVbuN^~nCN*Em9H@2AVzW8tmGkf9#eU(1TKxKHZavMo zXzCVCi82oE2)smU9c<6rZ{`tUEOWJWT-?jG8QifzRxXL^GGo;~wjaRaL);$eXb9#f@5P1zqEat}8()C_ftI$4XJAp@zJaO9Fh42@{@Zz=L#@5?9EBri_o`U)CM?%~ zHR#oXqw!Iq8J5&yGya1&G8^4=o)Hk@T4(=o&fcaRhUvT;{>EBCeZa_Xa6(rXZn07b zmdGprjWCMcA0B%M%)5B_Zu#~=GVEoe@NugPOc%6OqM}%ry3xhM1hK>3+PLJi^g=d= zJiQQ4Ud;Ao{yt1Pp#R2ot@23f{3VS)0{OqxKU?nLl^!Y}_1P9lZODc^ObQR_E2)i$ zm@7+2=vm7F z22WtFw5%=EeY~Onl~*~*Tli%+H)j*0A?7CLJZ=0e5*aGUPLh+usI@q@>7GlTI+QTJ z>2pQsBL(#49XvL`e{us=V_&py@FV4~jq1Cjza)tE61tK>z!M45~2|9_hQ)H1P4uHJe^I04n%oVfYJT&zK?@~{(!p%j3IN|{xo3J#SG3MMMI|B zmi@ysdV1&6ctrR_=%U9->bw4@B(vr9^5p+nHSogtUvNMT+Eq_9nH*^-2=#smX*}PI zUhZgWXPG;`sGnlaHRp4M1v2cRi_Ti4pl5)sqa*rc|gZ&6hO<`A~3G{(s|k+#afD zy@{pD6b=b(Q<$j>H0uOPd0VU>uOIWQA65tf%SHA-vUE|{$oiK$UF!5SnTAr8rS|Gm zckIk_0m2ec8S$sKxov(JYc}okna9QQb7vz_qh&{bV0$9|d$<2i{6~T7A*zdnm}7G? z8+N|sCd@R9n*0?gl=^BxSJQ*V6*@g`6|t8;+d@GxPRY6pHZ}`Hz1=V+_Mp~qp*AUw9g z)?)FB(wBFvK$}xW=jA{h;pY-h&6+c0msOn$r{&aI@O;-?Gx}R@^a_J5qn|+H?XHw_ z$et2!!r{BoD3sf?IUV$cx0_kVDYt`$wrg?+Pt=e)y}gm`$_2cxHrMvi{RF?817nuZ z@7S%9OtYRJw^xGyJAOt)V1l^os{^ZwrIKjsWU<1h70oV!cZHGc@26^i$ zJk>nN8ou(ik$J#K#qIFP`BlCEfa+@m!G=&r2ctiz?n+?=4#_YUXUVqJ_8YbG>pgL7 z`uj;^779o3zk5K?=Sua6Jw!r^*g#nIgEpmToe541g=|&jhCjR*{GlJ}JCxO?kCa%L zw6JPV+sFggFE}wq;@n%13zXN-il6V9i_9czV)o}KCpPJ%561bB!ibor4jKo#r7?KZ z7@q+8D-XjOt%@6=4vhXNbSYSnv8Mb@ckYlqv`s;g@-jV{wj^z+4QT-rYc(?Xks{mR zwU#%Ysc$^B@v&`fhZQ2>yoMl26(ZlTIT?Bwm5iZBe?KZlyX^hGOG06|;VRMDxi zByOEZ>0FVXKS+TpyU*}`DU}N9cM}+-uctwqIb-LG!>^vp0Y_^;CJDM5YCby+N5qWY zwAu8&#e@7o(HE*bYINex)KC4;lKbCyev=HY-du{&TT;c2fh6Q{XAI1kpN7wW^ZjEA z$;m`HH2Q5?5AXFz3E$`X*5Glv*0u(J^)J%&zLw#z?kX{y((^sq{j}}qEkBSa&UAG= zOzFp{S$%KR{$V%)b@S*Uep5+FOjj!rNc&UH$BN|)aQj~<7`iO3OSwJ8hZL5JjFxW+ zRaqT3U``=^2fTurm09-`FAGj17VT`;Dozh1S&;(?Q_fWvj5wn>K4-qf*;x&vEARJL z%5Z8QvhEVO1zjt>&ADniLD^S@Il zzA4xsMAwZ>M;^6O`KHChCKqb$f$H3k{<8hn3=4S7fsJH8>=+qi!g*9?tBMbOJ987uyV&K-K#lej$9#PHl)zNVRZ@|EVUrUpUDHPVU-? zpc{OYHtPwo`|v+7GwqvWGZ_PyAnStDHJM8ijp3qAAH!K_Od#ji#gexq+DRsNVUZ>m z{tI)Jj?8&#B=tomTLPA2O!u6bTVDv3TZeUZG%7<##2M(hL+%>zK6^EtmQ97VkTHSX zv}!+(U$R5)1txcS{FXHJIR8oYfFDrI3c0L8X4*?^Wa%0v((2Wk;|9j8XQK_i-jNTg zcTW@=cP^Tva*j*)l33HL+td3=hQ5jF>WRzLhL#B7W5#@&my+Ngq_Hm{>JctLy*BiI ziA$N9wMCpG@1`QNHEs(pmq~&TS#%eHSYRiWQWH5S4QZCgaTXY)&&f@$nBCsWT9c

aOQlFg+9p2p8GmIDX`8JNjsGMgsa!5*papdF8mn-U<*4LHpdW`iuyf^L3Mk7S> zqM1&)Ya=BYs&+DXP{I9=3}d&PTPe>OiLkrW?9Z4}M4VFbym}V;mu61ZiCnh*iPd=7}E@AT-k zUxp?p0KlxLG|SuPD}; z&ZIudC(F%^w|yx7$(CRz8SG(KZuJEV2r4tM9*%0#e|!Fb(j%S7wD|69k8UrC2>zXi z)yvX6YGUZ9ifYqH4S!tGe$6H(;#bB}&8TbTNRakh5|yJx3i~1#w$Xzy2dH%3z}*W^%dv z3b4Kp&Qgj&BqR$4Tv3qh7ZNS5#C=-fzV29)iVVcoo?;qIWqpIFG{ve2*OUs;~w zf3iH9@z5bz<+Z3Y4Y;d94ECQ{2_R8him7~o_dWzOFLas+&)-S<{;WHu-P}MKc~SGD zrjgZ7v_d0 z6hI*j3eF&n``Wqs*rJA2CH@dAJv57nj-hfCyHh~7$fV0$=K&BecHV{yZK+Hw+QUk8 z!A3;gV@96(v`FcBD;BTItw?_>=Or4EYXEnCVk;x9ns5Iv)~Jb#;mjAN@warFn^T?)-NcigoQxNuP=dGO?t7RjmReD_;XnaT!xp!% zfyY7}J2mvl`zyWqqOD>U1y1ARBju(&aG7_PbeGkqLRWK1UX>iFF_%utmm}*b_p;Ig zE!4f2s8J#!m@)efZ^0v3{(g$^(3i^|m*#nja|4;N1;i$SmA}=Nxisi5VoB zu_mGVq38S>VH6)nmyLYT$kM9mi=gLli=(c>C~sz|2|JUIcVrfrr6!BZ$9-|MJV>4g zoyt^`cQ=}SQx7A1F%63mkYf*4A6`!o>b~b< z7MbZcoH@8(>g;CGWgM_&{5AIt<=!|R{j};ptRil`5ZVkv8}lFl6Lk1@;8Dse`GA-D zw}KsdhJ(wdheDV#4HAzD38CEmXMrcw8Jj8Q+b7mksndK?Sc4f+etXsvuv2*V7rheO zY*fw0ASIqN`=kn6sNu#K$-{t0XRfB^d>s2p)eHOOADE#baY{xkbwOsPn6N<^XDVjF zy=@ct?z07mOu>nfV=x6_{+lN3m`C(F_rFWRF-5iv@qf%dQcx_uGs>*C<#oqTq zb76|b$h7$QNt~?du28vE*G^&x63o>Wk~Q*t^T=S8j6P|F(-eX_NjH;G1}g>#Y(-Sh zU%Xqf-%G^`r)u$?-JZW1(P^r(13S{PGRczrjFCU9OdoC<9ToTS?!W^ULs@hqx0CXs z?Fx`mcz+W8NElQqRrYRZI%8zlq@8jo=;LhdjVnK+{^kVh-s|GGfg>~*v5kl5h*7Eh z7w$+ky1D*(+LIHt3urbuQ82aVLqXgn?H z){OGpKG4()O+`kZL9C85TU!8LK-wxxra!z=sj3OX%*>G zO;SU&B^3tL7jt%+RRG!rR|#XN_bZY+xoGQuLn#>ZuqF|Cc5^Av3GJxb&@~I^e}E-k$OpgxS<_uDWA~;m z4eyK>z7ZW3m6X|dKn8(*3CbE(w*yXxl<#g%F4OenP)Y`?jdMY+d$>Jlw|;qX zX&bZ42Jyocy)+b#!hchj#}A1$E=cdpu1`C{@+*sz`|?mQIPZZORBqK9&8b-H|E1R;k zeUX7|5kPXq4F&#g4mheNp0Pf@EnDoRq!CzpG*?$FM{4#7u6zx@t>TGg4#w)gp=}EZ zHyZhtkuHq@9y0rR&ja4pC&X*pnDdJn&Df3u@;I=Q?T1T^#r#hQg%p+Hj!s`JK3gt@ z<66~vbcdVNiS&%`59`%s9>B)xg`VbKxiC?bi3-E⪼+XJitOu)+(ra`^Q65|D@;@ z&JU_3xrFjHFCkL_0Pg+32E5)8>Pg>lI!arD}$>c51?OWhEr^Ax;!_a@zgo4=55PKh(7Oo9$J zH#q7D&t;iJYCzjR<`>U@`?~#DAWs$Ii2~wD+HA~D zmwH~xY0$fI=+AqaE^|V0dq*AcoPH1w8^|lNJmR@FzJVu^Bq1^hv0*%%kdJ55Pl;Qr z!3S9)S-wkA08VVKGHD(6*V`Ic-Xmk=Gw08V;=L74bO+S2Zx(D_&m9d^kicrIl;3b6 zMw#6Y?HgrjGiPRsM7o?q9akcr=d69`ZcJ6KdC!XbaEDb7{gnF+wJMQnqVX=RnB7z# z<_-zB`_`G-FFbD)e24@CGZ50%y0rM=>?mWZq!H`gm3xE(0sZPOi9Rf$sEHhIiS|7r zrh=X>N1Z1{Az6^U%c@><$CFvj%8>wze-sO*LAuj=+U3(iTPXuPGDqCJ2$}>JWlzZb zkqdCdK7C^TMw%fFIT?A;0GH?JwC{-_Xm;P{H>8kx5l731JsC88Z^q{CsJ?H2bszfn zEz7nGtnXxPoGTRVT%-5j8j%U=eoC3I{3qcSprtQ%@9XJGiubws!Qqy>?JFN$*vrzu z`mdH_mY=#LbHgMl58G@=I$7>A}H~YCL`~0H^u&iSWv~a9tWj9T|~y z@0{n(E4-`Tm~>lkmmcG^7)Bv6GvMofXHX@!F$9^5EP%qS2bqPZs%$wjig`yjx4bau%Y3 zZ>7NiMoulh?1YUg5utSN?3Wrx?j+}qY%@3?J>He#%$3su6KEz%nKp>B3FrQ^Zpac> z_%EOW=B0$o<&|=rW9@d=cfC6(q~zz z($OFFF#CR&%F4Qw5%wfNRakAc+VdJdBA4BhnT`AVmH2E`y``;U8OpgANHOFzXLs%t z>B-3fxIcJh5;vvhs4M_7SSi*|()--bwgGL8U*l35X>AObzX}#?d|C4=k#x6&0JwZx z3BXWaAw9 z^R9g~VghtHI0um^JNpx{J=3FK$Fu?l>>(MeLW3mGMmd7QtJ0L(>vG4g^cf>ML;3d< zXU)U{lhFXbEx_9W#DgQpJX;U?g4qgz91;YIqS=S#pq`QQnO^+XHEPPX?8Z}RoBQMb z;lzWiAL(Ufo@Ad@Rb_Nf|B%>T;oF9fzxLNmDKj_x-3D)@tfb_SY*aaC6EtN-O-EPcQ&!_*|q$U1x~tfZWp3 z85){mbj(J)@~-XK5M0o+&^F>m2`UQoF7}(`mD)$W*hA9JtHGy_U9tgwnXkY2NW`r! ztHYQkRc!bIe!D zb^vP=h|j^F)Y2n=KKm-7FMS!_=52N>CUp>n2iG#2WgA~&_6@=Yv3Wzby1i+Zy(+?dwp;;uy-9$0ZR?~N;F0Q>b}xzR64TReJt$irut zp?n^j3p~d`Fi8YZiFF8Tw}th5qJ zsdh#;MqNKjf&SqU%Y^9EBu2zk6PJYCqAg~ILN+&rJ{J+=h9k%ZPRq?_B=&|`-tvQ( zMV8F4(~kLIQt<=%vn=%E#CPRSfCzz6%P7+)cBf$U^;}05VM6ms!9wh^609LxXJ~A* zn>#&461yTJT^z6OR*g%kMTyp-7Ry8}4juea<_6yM zyKvC#z8PzO(`&KQ-HDQQ5+jFN=Suu^N627Rx0eg7^~1-Ifs!(9U41He9@adTMwy~3 zp|ikoxu6(Ac*aJeRkynAgN?tC&*57dwq>u^EK@1HB$8-0MQWz7ICW3mlLEOYoDNX; zRe&GotKRwSQHRzw(;Gg({TzkthP{;<_a1cAAC9Oz*ZB=rPRy883Trgbx}Ty9&`M}7 zm~g?@CzTshd8)?lvOU`!h#eT|7F9aVKqKaB3RP!hHR;kG(-|_>)mG*(J1%s?`3Z=S z1(!M%)TU62W)8~*p{=X48mc6Wh#{tN=8dLWh&U0V^4gg1W7v(~v=Lp9)C8dhF0$7l ziGZDypDpxqH?|bEk{ z@QOA_BE}gkwO8n9b*WsA7!AapU3eFw;-CVyt7XY`1wE@A`mNT{zKTsV=_&?>lm;|B ztA8zI@r?DdB`Mm&b#;O78(wC8FhHBffxJcv>W&6plxfj1%-jAI6TtgRKD%$mEms?1 z>Efx++9l4;=ty@M$sA5Do_QY~?~BgR9QDSKl>}P4+(7wUgtdBUbbm?8Y9BH~iGIhP z7`Y{h>`Wr%PisycPAh7|h2B@;$UQUp&o+gau7xg{@mS}}aX$LSRU0GmrRxPF{?Xyw zu2*SQ%AjzmfBe=0OprT->i?B;p5btH?H*4EB7z`-2*M*ubdy9UA$m;+5oMzHI!Z8F z;t`@u^fJRl7ep_kL>r7YL=fFz)Qsre3}+l^(XPwA0i%sVAY(OLnk~vJH6DKQ@92cs9f;Xx?`gcX$=#M1YoI zuAxped_$>#4f(B6ypA{+mXE_Gj)1ss@Nm6J7d!qkFsf+w$TIejXk37x;8rSYf zM*d)t^>-6^RnyDoEBAmAM?DQ&yLC%lwT^VXfHY31N{*!aueXJ3a#C^|!aq+azAsMz z?Irl$R!Yf~%TS0eqEkLsfN!92W1O$&z!$!OUc_?dOTi_|AQu7k;>^6-_hg!#r)lg7 zH2L@UQt`l(3=WjsK5n@BTpT zfCJw%FaSDdEz~?B$Tw<0*Xtv@#IW@ID$1M0g7C%FsiG98))Q6fdx`7$cS}8|`owbk zy~C#(Ul)k2^S!u}saw@}loL^O`?;^C=`||c8{|p{UQr0j{{7QO*-_JO*e!{uS zSvYoz1Idi{c_}vXS6x(MV$&H_-yBW`f8iN8$ORGozsuG{gaki78PUt7oMreR?z^tg zh5J`m;vdhzCE~f((`jj4tbpQbgd}+el*^~!nepNezC8wuJOe-o`fw4 z)!ra^3O1lk_x{r@Q2j%#`}eKESZA_Q*})P@(b3Bb&+FF~Oac%yR(kc3*&u!8PR%s7xwF4SH=pF-jyq@bKWap_K!O^pqBdt#uucE~gKx9aZ|Bj=>MJcVl7?l$+8Qphwj>n6SW(Ld~7P6M53m3WfVgRH)8 zx5ys(!dQLpO#IoMZB}!x$85*e$x#;d*{cUuDgH{lg0XnwW1-7>>QR z#hc$?*)0`rtHCAe^j9x4Wi+kr&ks6JHKc7SFl!~PGObBjN<~g67USm{OQxFA&_=xt zJzhd?Z};ATk6v=jM!BGl%El@@j_>g76>H*$hKYa(Z{v2}FX-uI>Dl$gP?JW=r*>WC zuAbbCT4bXZ9~~RR@_LX>cts;eB8x$L{sJmsZwssyPklXR%yZ#vpPDUQdB;N4ri-@d%amK6uA;>qVi6eB6~6(dIK}#n>Aktxv6Kp-W!V%FLbv`X zV1QRYDK?rAM4_s4)(J!%ZXsJ5pZ7_b$VoM0sZ4=SD;Fn{r5m9VRk)ai%s}`~rwB^y z=iz+DAn)!swt>0HBymg~xfp2|BVddUy7}Q<=sF#eI@7?>}NIkd|$+IiJ0oowh54gU+X%?j5kfOz>AjL zxehmv@I<}OX$fR5`K;!2c&`k2D*?(e^Vd7|@{PHd1B-NO6Eac!n!Uq^pM?zs*ORb& z3E+_$@uj|$f_Pv+m+SVY;Vo5%_|Zw|0Fc8s&$2dXJX0H0F2uOC+7aRLOG=u!8&cF1 z90J_7wjmU*Iova8GDx6B?|XRF>U*~|u?{9&OMuuGL7``9%N!*ckX~hw8^6Ne3?AV) zKchP8tDRYRd^`dapVV@>U3M8Js<{FCh`;yQVr=-dcZ1m}}>oNGd8FWC$z@Vhn z4;S?B6~QV&$H4V+&SXV)XB{jpI&2;$jqx!8L5l{B17YSMmY$?#Qh)5;D7ZE+giZ#s z0+ej~28{LCJK|_slaHK--?=9QIp*>tEtQg>S~e(Vg47-*i6m#<{dxnlJyt5hCABoX z)<(JMD4!-&$p48=oAq5^5%#XD7Pg6%ysS^ z7|BA4M@&-jS?0C?7+YI{1M+gx?AnExAlv2zN3{#x3{#TI%(U)Yq2w-m#dG6zCEAT%vv! zHV`W8Jelmr*5u5}9w-?qBE8AYDC#%c`LWGa%hfyz5^IpPQj!GTY1ggJSWCd+8+m?J zjcdZ6)KwMnd>K&u+srg8(HBfaga;M z`zw9k;~lhgbt)uW+tguv3%Kq!1u;r-nt==oumRSN=HIY{Uzp_X9u^yby*KM zL^C=?>a0FN`}PU7G0`p!lGf)=MkKdKJJ+HTI`S`*?F~uzy=adD!6M7lI!uZqE(w>J zv`IA;dSL@2UFmp>>aOSbsEHV^2T@Mn_pp1&yIfW&wuN5DNrB!2h3KtlJT_|UNw_3R zSlq?21^f?T!dXf7k{}AAV23dJ+_QEyxXXD;`LK!#&Oc1v0cY>Q z$MPLgVZFTxK6)wuE)fD{KMImPl@Hmbstm zesz7Oewki$$mY0YSziFbs_48X=YmyS>4(;8$t?-bb-9q{yN+55mL7FS+rqx(enIvqY zH91H+dH1r5gZ?P7J)qi|K@Fe9ynrRfdM=5(Q}t=QE9tWMHd*qQ@cb2-mbmTI=%yBI zUG7S4bHrl4{V$XQMH*n$q6;P0x;KWGYMJWwYh5%XYdIM$pLTa$eOg1ok*74GiMKnx zA-@h2li2Tn5>#i{FnQwQi7GIc1H%l(8xAGj9IWc#9s}=>`)u!rLB>~3nSICHNm6c1 z*813XRBwazzba6}&aB%KIn-RllJh4v?gQduE2bQm9EEXVs_0AjCf8=;88zvFStUCJ zLLqk1ipo_$+b zHJ$UcXuOJ1a{Yts!H^sIx@_pZ9}H`Y)gQ(%7^OLV0HtTQ00|kOjv3kYP9#3P`u#ly z_JyQ}kL1pZsy(@|Yi|cHZz?vP2u*x-WH#C`X+}7ZL4VS4Hk|~gs?(C!o}>+i!}=Ru zr<~xd!_lzL5$aRsg!q9a!mgj^mSen*%b<62#LefiAO>E5ukLtz(`Dc1JyY$ZCXk)) zJ1h2QL4dA9s!tm0BtA4GYBrlArCwksyHcTfVQqMQ*1q!DkN;7Do3$OcR1j-OX$x_R zs@kmTf~>fVjV4ubcQ)C1xtF=h)~}n^9(#1f2akvg3h~~a!a|q<(hX)t3c@kbaV87Y zCha=dD7vrF0VIyhjMM0Fr~02NdL8ao1F-<({d?>$9i#pDItn)|9`z>|spuUJbuADm z)A|NkG&2hwC6`J#BywgNDPnR!m_AU_QSUFjFUFz(dMjY$g1f1g>_qlEf2yGxg9MNEO1k4|WKd2By?MSg^4UF0bv z#&h`>O$2+fvqxTpk5;i>3H2WF#xsFit_pt>!il8KA6&tJEbHhbt>r;InJ%K&cy0P- zg-lJVW(8k)=XAN9*MjKv*MM*Ah%1SqvYD@lrjhuI6iW|J5PAM59pv{D^mS0%d`5az zSbyE*mTEpvKz;jlW8`%+64NT}J{L_hV~xufnOjOyDilpb)8JIjh2M&jx3C#r-|zm# zb?@G}n=24Af6=a7!JBbGj^q^((^XgJ7j2{GzgCkSnHc0qG;GxSH5~sjY+Sxz84@p# zOTTe#i}xE9Ebl?+&EB30F5FEd0^K6IUpVzJtM?6k=*B$09O-vESjRO=w{D^%c~x@c zUy_?=cO3h7eS?&gU4t*4M8KjT<12uJ?<;nJTL(wxa`G3+@N;R#kEu{TOd$i2<$)yp z=+Ku&gadZ%xoQ)tRu_^nAEcWvhQ()vP+XUqXONF~n6KkWZQ)=8UOZmUN4qG$o$OG9 zgYwrEFSmNX6f1w%kq^u#r7kvVFLu0iNS)Rho7;ZqE4J`sr;MF*q-b3`qZWCz^SZZ2 z*JZHyEKxh!ejPO|5MNfjyED16U8Vr5>8a@7SVqr?XxUg>>*I?~^cvA1Fo?TM_}-Yt zf9i1&(SY5x7hfpL&R`_D9`-}Ud#%VZhmmp-qX;u-d5Ct5?1&^I+Z ziYiTv=uXA3mG1}vvmzJU9*7+v!Q$P~sOGpq9w4r5IeM*%C!IEnK6h zHk?@D^rBHg`~1X4tp0dNPCWGrjwY5de`xyN$I^_i6A0^v+vJbAoRUim6rUO?nq4-% z%KjjfDFCCX_El!f~F874J&vrWIgIq>PdhU!9XoFgJ%~C+t}8$eD#A z{;opZ!j1bW7bKK>!M7T`>Nc1*9qr}742M#E6Z zI7X_8)rd$WVVIimkWLLkauouHsEL%S^(kGAfs*OYXn_=j`&!rc{kO4@3k@+*UfD^^ z*GYSm;_H#ecfRIvpNQ07z@5pK6#cW%*=e)fAOtPP~{KC*>1#A<&t+&oxXr99s*%W7RA%RAE9@x}Kg; z$5A76I)RwK!r%ILARG{MP>N%)s|&v}D$`r(Cot~2aI<1X-NFfV^N0n^B_)$Ts@lb7fg5{!>^r5M+x;4-ldxbji;%Cq4BPycDN zk$u`+bXChYSG_AXphrLcOVu*{d|PPi=(i^8@PE}JoBzc5ryn5UCm-XPY&I`F&CTun z^uv?iVrX?UGSR=2NHFJ2rbh!EFhR*^~i3q*`io4Hu zD(OL06VVf8h;F)& gE&u;RLe43$aB?$+9LiiGi~f?jvd+^|#n*5D1L$F4uK)l5 literal 0 HcmV?d00001