From d43a062098016529a475b29dd55129be46db9bc1 Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Tue, 28 Jun 2022 12:39:19 -0400 Subject: [PATCH] Api call to get actor cids works for versions < 16 --- api/api_full.go | 2 ++ api/mocks/mock_full.go | 15 ++++++++++ api/proxy_gen.go | 13 +++++++++ api/v0api/full.go | 2 ++ api/v0api/proxy_gen.go | 13 +++++++++ api/v0api/v0mocks/mock_full.go | 15 ++++++++++ build/openrpc/full.json.gz | Bin 27786 -> 27843 bytes build/openrpc/miner.json.gz | Bin 13706 -> 13707 bytes build/openrpc/worker.json.gz | Bin 4610 -> 4609 bytes chain/actors/manifest.go | 9 ++++++ cli/state.go | 6 ++++ documentation/en/api-v0-methods.md | 21 ++++++++++++++ documentation/en/api-v1-unstable-methods.md | 21 ++++++++++++++ node/impl/full/state.go | 29 ++++++++++---------- 14 files changed, 132 insertions(+), 14 deletions(-) diff --git a/api/api_full.go b/api/api_full.go index ce010b0c73d..031f323a40b 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -588,6 +588,8 @@ type FullNode interface { StateNetworkVersion(context.Context, types.TipSetKey) (apitypes.NetworkVersion, error) //perm:read // StateActorCodeCIDs returns the CIDs of all the builtin actors for the given network version StateActorCodeCIDs(context.Context, abinetwork.Version) (map[string]cid.Cid, error) //perm:read + // StateActorManifestCID returns the CID of the builtin actors manifest for the given network version + StateActorManifestCID(context.Context, abinetwork.Version) (cid.Cid, error) //perm:read // StateGetRandomnessFromTickets is used to sample the chain for randomness. StateGetRandomnessFromTickets(ctx context.Context, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte, tsk types.TipSetKey) (abi.Randomness, error) //perm:read diff --git a/api/mocks/mock_full.go b/api/mocks/mock_full.go index d122b4b108a..c25d180b95f 100644 --- a/api/mocks/mock_full.go +++ b/api/mocks/mock_full.go @@ -2286,6 +2286,21 @@ func (mr *MockFullNodeMockRecorder) StateActorCodeCIDs(arg0, arg1 interface{}) * return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StateActorCodeCIDs", reflect.TypeOf((*MockFullNode)(nil).StateActorCodeCIDs), arg0, arg1) } +// StateActorManifestCID mocks base method. +func (m *MockFullNode) StateActorManifestCID(arg0 context.Context, arg1 network.Version) (cid.Cid, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StateActorManifestCID", arg0, arg1) + ret0, _ := ret[0].(cid.Cid) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StateActorManifestCID indicates an expected call of StateActorManifestCID. +func (mr *MockFullNodeMockRecorder) StateActorManifestCID(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StateActorManifestCID", reflect.TypeOf((*MockFullNode)(nil).StateActorManifestCID), arg0, arg1) +} + // StateAllMinerFaults mocks base method. func (m *MockFullNode) StateAllMinerFaults(arg0 context.Context, arg1 abi.ChainEpoch, arg2 types.TipSetKey) ([]*api.Fault, error) { m.ctrl.T.Helper() diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 42932135c70..909446f2a1e 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -340,6 +340,8 @@ type FullNodeStruct struct { StateActorCodeCIDs func(p0 context.Context, p1 abinetwork.Version) (map[string]cid.Cid, error) `perm:"read"` + StateActorManifestCID func(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) `perm:"read"` + StateAllMinerFaults func(p0 context.Context, p1 abi.ChainEpoch, p2 types.TipSetKey) ([]*Fault, error) `perm:"read"` StateCall func(p0 context.Context, p1 *types.Message, p2 types.TipSetKey) (*InvocResult, error) `perm:"read"` @@ -2405,6 +2407,17 @@ func (s *FullNodeStub) StateActorCodeCIDs(p0 context.Context, p1 abinetwork.Vers return *new(map[string]cid.Cid), ErrNotSupported } +func (s *FullNodeStruct) StateActorManifestCID(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) { + if s.Internal.StateActorManifestCID == nil { + return *new(cid.Cid), ErrNotSupported + } + return s.Internal.StateActorManifestCID(p0, p1) +} + +func (s *FullNodeStub) StateActorManifestCID(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) { + return *new(cid.Cid), ErrNotSupported +} + func (s *FullNodeStruct) StateAllMinerFaults(p0 context.Context, p1 abi.ChainEpoch, p2 types.TipSetKey) ([]*Fault, error) { if s.Internal.StateAllMinerFaults == nil { return *new([]*Fault), ErrNotSupported diff --git a/api/v0api/full.go b/api/v0api/full.go index c9b156b71e0..37d0b4f9e24 100644 --- a/api/v0api/full.go +++ b/api/v0api/full.go @@ -607,6 +607,8 @@ type FullNode interface { StateNetworkVersion(context.Context, types.TipSetKey) (apitypes.NetworkVersion, error) //perm:read // StateActorCodeCIDs returns the CIDs of all the builtin actors for the given network version StateActorCodeCIDs(context.Context, abinetwork.Version) (map[string]cid.Cid, error) //perm:read + // StateActorManifestCID returns the CID of the builtin actors manifest for the given network version + StateActorManifestCID(context.Context, abinetwork.Version) (cid.Cid, error) //perm:read // StateGetRandomnessFromTickets is used to sample the chain for randomness. StateGetRandomnessFromTickets(ctx context.Context, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte, tsk types.TipSetKey) (abi.Randomness, error) //perm:read diff --git a/api/v0api/proxy_gen.go b/api/v0api/proxy_gen.go index 65fe996a98e..3d09db1d53e 100644 --- a/api/v0api/proxy_gen.go +++ b/api/v0api/proxy_gen.go @@ -257,6 +257,8 @@ type FullNodeStruct struct { StateActorCodeCIDs func(p0 context.Context, p1 abinetwork.Version) (map[string]cid.Cid, error) `perm:"read"` + StateActorManifestCID func(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) `perm:"read"` + StateAllMinerFaults func(p0 context.Context, p1 abi.ChainEpoch, p2 types.TipSetKey) ([]*api.Fault, error) `perm:"read"` StateCall func(p0 context.Context, p1 *types.Message, p2 types.TipSetKey) (*api.InvocResult, error) `perm:"read"` @@ -1690,6 +1692,17 @@ func (s *FullNodeStub) StateActorCodeCIDs(p0 context.Context, p1 abinetwork.Vers return *new(map[string]cid.Cid), ErrNotSupported } +func (s *FullNodeStruct) StateActorManifestCID(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) { + if s.Internal.StateActorManifestCID == nil { + return *new(cid.Cid), ErrNotSupported + } + return s.Internal.StateActorManifestCID(p0, p1) +} + +func (s *FullNodeStub) StateActorManifestCID(p0 context.Context, p1 abinetwork.Version) (cid.Cid, error) { + return *new(cid.Cid), ErrNotSupported +} + func (s *FullNodeStruct) StateAllMinerFaults(p0 context.Context, p1 abi.ChainEpoch, p2 types.TipSetKey) ([]*api.Fault, error) { if s.Internal.StateAllMinerFaults == nil { return *new([]*api.Fault), ErrNotSupported diff --git a/api/v0api/v0mocks/mock_full.go b/api/v0api/v0mocks/mock_full.go index 9fbd5779433..2610d40a493 100644 --- a/api/v0api/v0mocks/mock_full.go +++ b/api/v0api/v0mocks/mock_full.go @@ -2185,6 +2185,21 @@ func (mr *MockFullNodeMockRecorder) StateActorCodeCIDs(arg0, arg1 interface{}) * return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StateActorCodeCIDs", reflect.TypeOf((*MockFullNode)(nil).StateActorCodeCIDs), arg0, arg1) } +// StateActorManifestCID mocks base method. +func (m *MockFullNode) StateActorManifestCID(arg0 context.Context, arg1 network.Version) (cid.Cid, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StateActorManifestCID", arg0, arg1) + ret0, _ := ret[0].(cid.Cid) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StateActorManifestCID indicates an expected call of StateActorManifestCID. +func (mr *MockFullNodeMockRecorder) StateActorManifestCID(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StateActorManifestCID", reflect.TypeOf((*MockFullNode)(nil).StateActorManifestCID), arg0, arg1) +} + // StateAllMinerFaults mocks base method. func (m *MockFullNode) StateAllMinerFaults(arg0 context.Context, arg1 abi.ChainEpoch, arg2 types.TipSetKey) ([]*api.Fault, error) { m.ctrl.T.Helper() diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index daa38a92349fea71fbbfbfb79f9269724be761d7..0e063bf58303e2828a9aebfa6de68cf5a7033744 100644 GIT binary patch delta 27099 zcmV))K#ISL*#X1Z0kBj8e~-kNYIfM+40%`CQt7tE3XN3mF}am$cT%B+>aEmrvy`c7 z*eyi@LKKP3!2l%S31kc6%_2%@%$|Z7f&rfaPt*XE$W7ykHhyIs^85x8Lrv%fa=>rdLDvs3wYSyIK=+4wVk%p%c?f15>zy->8xX4{>1>HJ^~S%pa>B!Taimm!GfXlF1STww1C$=?4sdwUvDIvMN@ z{!N0-|C}GpG(7TOGxXp8`j^le-vr1Lz3VdH2A?rGq%q-xz1PEKl@Ac~D0xG8gf$^& zG$#IFZ)bZrIFn9g8Gl?fTHU}YjKosx^Fym9KO;Py@xk6;b1)pd*FUy4w>Gzu66XS! zo>3}iw~xM)hCd+2;1r!958;rr{+ibf_t@gW$@%_t8lfrVNVIw(H%Ze+7fW)E7>Dyv zEf2ZK&+*i@`db=_;sgd_8_Fisv>iZ(-XbJFnfQ*?%Bhy6VSi4WEe@kaRYmEy!5sNm z{xQY`MvFJZqrN0?Foq26%GuH?vF0FRD&&KV1(SF_mU~^7)W0+3IaQ}id+yr+b2Mi^ zl6t+zyOFOSz$k(XIUHjd+=uBe@yixOXWX=B{FLmS}p3=u`z42B^hYg|PajYI4G!Lb-_PG1fw!N|z`HjW7snspfe&xa&-dTGIS0od!9F-YeRFvH z_V^GSoP0X`O|*FQ34Hu?A?oFtz4#?a2S%fRcGZ-YOQ^L3$SUQpAr z@;0J#^Y=%wbydMXU=Sm1I(P@!37%tRMtKL>TZ9f_n7urW&>Y8e{osQxa4My8%zN6547k##-o5Rj(-8Enxut z7<$xFf8;u9f#Y`DbOw`lTh(pV)wgO+3f_Gq?BlaOynNMceRzj|2x7Rq-9gu{cIVWG zk{38U7h3dkBZF?OSMx$fVY5*o>DxSWpXz5yQD5CJEH@!_XSnHG8}&oUMiK{sJ`hQN zCFb|drP%I4E%;Zjn-_c{0=q7FUEkX0M3=W&{kmwct3M-mxmhjgKSI!#7$^N*bX3c1 zYKO;1sg3HANcT%6!|~Gjq&!?(N^W`A@v`i-4KsTLhJ$u`wnN?yc}EWplx}ZsT9fYx zuz$Dg+1hHBJwl9hmN(*Aos3bRKq!XCVc>s~(`zGKM4P>;gqp~D!O;`f*K5v(S?RLi zTJnfq)s$?q%Q{N#ou##xzBZ6q8pCpkS)i=JBP)akzyx%n?0-gOA1!A#dYEP-2X7s`b?|n5a&FWVWFqC% z>5YZejhxFHgmq1Osh4!sDD^7)SV0CFQ7jFJZv8f5~pLK0q*DsN?Q zF+*7!+NC+bEV1GUA;SPA=sBm)DM8AkR|?g6UK}S<$AdutIIV#!X?^8gEQvV8zJHU* z4_G2sZkr1ETvyIYTEDr)T+HcUZ*w>}lPj`X&b@=|cP2=F-Cas$omn1Zs2*(!C#0`- z`{m&Zpq-{jFp}Ny*$QHZ&n#{DLlACP+V!8kN62G?O&;@ueOY+_;F5sIs|eMPx$_U@%R4IuYbD3h&3NZWP3K;c7Kz$nn2B1 zLX{ZJy|tRh3sa0}E2&gDwVt%p1+2R$O`R=^nwIXp&7t=r5PvV0ggdHn{j(K-s=EC# zc54qzRkGLfhLq;zI+X6+bivfJswVDHI@bOa6vygXJApZW*7Y%z-CY}ovOnP{(lfLg zZ!ub`V>57!RrhZ~>dk6^c7I3CV|2d;CX^qX9po<46;OJ`z!-X05;mvzxRYzyDXT(a zel{*i?xH!N$sO?O@5gWD4SuXeoJ@#_1!!=7 z?-BGnvJnLRK5kr#c7OVVX_~4gz9ITEjeE&`lbLv-oBYH;S|S{EmtiagiIR)za|28`HDmd=PVUqs56x+@ThaBa zRjfpp;=*IR$lmRImE=h(bB}z(t?cfa%q_5UWk@?sPQd4g zcSoMOvh@LUvvk(2^&*}#%9b#oq|*tFJT!@eU;!B7EXATqV-<*W1N_dkL#+p8Q{&SB1(Rck$Fu7vl&z5($ zbv>JF2CB117aC}^+vGo~;L_(6PRPv`?7b+}lLI_GCd;Lu*+qjWG}~-14-4a10(o;J zd2}AeVxQlr-xC@YwCyg@E*;kG2kV;4qGlq~mlmq-=HO9Tq+ixKO9mJbeh35akk03) z?RiJO{(tfiFS6L#k|UUWqx~Gjln8BL4Tb(a7Y?(J$#{eKFugH`yAdHK z`BvpaBIAt>KX?WRIpn&`MpF3rNb2MvLeYl&dj!Um22BRGntyIrHn!CdCsEA>dCe@RM3g5V3Ee{s zA0*??ZlkMnwDkG$kyJwD0g^u-DoWib$X%LvDU5aqtS1aet!4Q?LWW$ z=ik@p{r~Xr-R?e%e*don@AK{ZgSY3~@7Wvr?&3E3aB}_I|L{q7n|Vg|=qGuLI2+^1 z)_>@AosXNbMb8kAFuI1p5rXB}X~Xz(E!A_t~@=Jw>t*3M>~yO>;9;?tdC z&ik2#2jy|g}`Ubr% zGm>XRe{{;^&ZsW9aLT{SuC6{pQ71*_=cp0ls2{AZzgc5X=a(`*Z zkRLKbuI0x4vEm=XI3Fwf+o^Mem0SGHtza7+nV+g$$NJRUGc=J_GSTlDnk-cuRjqz> z#gx7!{wZe1Nd6->vzYHf+WLTcFpw{lpDU+=u`C!z^L~x+>D>JkEBDd}UWRg~Y z_g=K*1B%RUNmuhDtB9mjF`BegV%f4vl$(sshEe6`se-C5#|WJnT9YkPZ)a=%&u8WD ze$3=BlSR_v>*<>14>HtUm8P!iBsdeu$=1$`I@e{%INxI8%ha*mgh*1|#((|snR&V5 zzhe|FK20VlS`Mj`P8u&+WDRzJ)y6Pvq)kdt3OboQGGTzvAO|yejQ|85ia5kX%9dg7 zRz*fD15YSHAk=3rPn|R4gMj0W-1pfd|1^T9_IrON+fNm@SaL7z0xL&RS>E*v(xg(8 zTz1XeAU|Mo8e#E9<}vu4Fn=TjYW76_eTt%k1y3Kr#T*eXIodT0R6~V_$Ha>eWLYmL zGLtUI2d4;0Ftx81iuqn3pl)ZHrrk>nc7?E+@~c#!s%*|$C(Kmy(5YH7TP+5VPHfu_ zH2|%&3wE$5R^i^#BC^X2TC>Qk)%p&`(A)-SJCo~m&25N0j{KuoW%DSPIE;{((+e!y-rU^WdM^LF z*xcNc|NTcOWud>k&b>Q-@ktUD&a1@#(rK~JAZ;43Msw!ZIF1=R%bI< zgUTuwfYMrX$AH^A!@(K6k)d)Db@qGzP8z1JoM-|nLZ{M&vrj8Zq(>7wqiy|hF(u6( z?hh16WR>i+WQGrCkPxKL0*(ph7^-8Hj%x84Vj(5!%XVx+&@%e2)7qc**Q|w=eG6Qh+%Lj?#&j{ zXKdDXWac(yl{S@a(Wv(pxjQc7?0Yb-3XJr zx}we8#_nh#YB;Y}EbT}4TU8^4Wg zny^PoDWgC8y1Nm(%mzK<;N-i7jL77Tm z#ilY4Eq`zG@6ZpbcPJMRBhCm2xCn6?#@&2M12=)^Pp+6XlvW*o1WX=@+^9`*b4f>d+0wtI0q+kIY)OO5_N`7GeB?!VWKclzH$CLJF; zZoQ;>4_O>??e&$&p-AMiy_WW$8JBNnNM5YZynn(DkB`LSmQKmRLc1zEWBh|P#=Be& zMW*s%R2S`D?xN%Q3YQyHlC- z7Q6vM$Y&}fetOHnIS2HTAu3%a<)bw7)sMgJp?a669LsZM6s9z-x-OIH1JgoY>@;3R zJ%7QBoA%zWnncli(zM6%!>bjhZm0EA~s;}sxgL{3|h?@AFD4)@1x-@8og-!qr zf;936Ps`GYyxF>PuA9n{S2!0}m$J)1?~dsn&oNzRuV;4(^s}wu&d~jcPJte*^Yx1t zjW@}qghnt}3A2d$wOGa4qcUx(8JOtyx__b(P3tlgq6kS4NZFH8U=m-JnL{5XX_nMY zb5FLidfvTkuvGx0jU%7)Nm6)?7i3=HpSi1fpTaZc@>JD zSSHmD2Z#G-RWDZ1wUP#_L~KojnvA@PmvZ#$Q*V+fdyFRUmyPj8#HLAeO02?9vPSAy zN?O9+0-iP6$Xs$QcjPfS`j@d8gMY4it9X*ncaKjd*fFISj-TO`0>P zI)mz6HmD8|yHGBj~#_lw*vuo2URtz>0xaQ4LeYgch5lgDXK)V#&YLVsXMaid8n zhf6w~ysTtS>K1L$GzeAk0sBv%A&<5++)pczizC^j*S%_t6(_^9HbexrQ|t<@)ZHY} zH=Z_hY*!g!GK+aWGGm^%iFjV!dXu?_oe`o?tg0D-H6OyPL}H;v-caBy@3n2jLPnUvadHNd#j6ME)siB z0NX`kzb}#4?=xI}-55JXGU9!9)e$Er)$0JVPMa@*aRH`11y7!xa~i=Z+GkhGL2=Sm zk2kOl>TP1Prxavxm*FWvKFG!aCJ~(%?qy5d+aKK3b7}{3J4uMO2yXr=HLW)pRs zS4WH3I6hjM?80oWpMR7W1p=1^xX2L@$san*g&IX~tTUUGwFRbnvDs%}s>hZHVt4CR z^WI?`M!8@Dowrb_rMjKuLk^P=0~^^fgv2x%z8QfrrGdp>EA`vgma7_&twFDfEXX;U zhnxXUL8RUTs4|Bq(*bTUpGmZ%V#uY>kB_9Sfy$^?Vv>5>!hbbiV{Q9+)O9;If}wkX z;mQ`W9}}?3F~XCr-R;-Sj8Hl^m6N;Maz9nQj^(AkQ=cLqMM6^(3_?A!3YL|0(4(?u z(7YT^=-#n9mP0CfOzM{=1IQ$aS(%}!=~UrVjJiLCEkBz-B~Db%w%IB(cxDKd$FTKQ z(AFkT^{q-a&wu-21WkxrkjtPq=6YR-^=P~iSy2x9!Z0TKLp<6BOsxMv3 zW=ysyrHR}s9gJ}p1jskt>?ui;`h|-B0Z(~6T@rOl41Xg87>~Ux;KxX`hK;_!M0ECW z{V|+Eak91hqA_}9vKT)@+}$dfHBq;v(=|JX(G}twiXU6=Y|(VTTUZloyH_OvHxP5_ zn_*}aoPsd|9u@1E_ZLOKdcM|YymYq96?WKeV~n+PX<$R0!{n#+>-N^Ow8W`gT0(74 zoe`HQ?0;$99yNB8;$<5w>pzs2(4{+*FMdlCBkcPSwK!R}xD#?XxCimNJ`0G@tXs<% z0fiGt*$m4E-%8xL4`~oUj-u2Cpu=QDTt^$w$Bl2HaZND2>!eRS<@)au06dv^7ptgU ztfImOv!fpiAr|nyXu@;`*Lc% zt3cyrW0(vXBqczMtp+x-Hr53=vL5;c9XZM^fQLcH1V`vOB>wXWji!h{&%g))bTSDr zQ2}2C-q)B!0u&l^z~V7Of5&oRM$o&$Wa{vW!z&K2IK1NUio+|97_Ypli^L;u<{v=s zDt`{!0~Mok9YRsF*JNHa8d=$}m?x+Kc$l4f@&^Ni`Us5GGg^_{OS(gf3ETh|GjvJj zh|j24-EvVdz-N%_FgrYEz=vo~iCDf-Oo&+OiL2HnIr(()`}zMJ>>vL2`|1B3?4Q5+ zztjDT_W+S=98n@q53XT^;W$8mAug~EqknTG^NS62Ffqt4iRew{9LuP@nIQr^7zCon z+&D3l6lf2NF=VQ4Zvg3s=jwDO&y%g)*EM&s-$C|NXC{UNuc!t3uKJHd0z2YavO z5517mm!}b$<9MEE1Ck%gU`|>?+8g|v1e^akKbU#szh>ya|MjoIa8McKX*>>nG`)^S zc*mm*-SF9hO<&wz-G+Zp$o9>|`;-4#5PuuA^%zp4Zj0rNad)Vy=g$VOniJaE`AE;b zO+Wf$+qv?n@Az#nM?RKIY>Wwv7H^10eZi^4M`UPs$GBl)s2{WgbXM!H1L9_unn7p3 zk|uZJ_2$}s-Gd8s*_XJ$nr$QW^u z{1M$5@xRG-xQ)Zx+gWt&&8~G6(I4ZiU<#O;iA-Nw;GfMkg}u0&Am!y|%?(&Xj;6eF z1(=ew(E_NH;faPWR=6bTuo{_cb_62EFq$vLR#B1%A~92Xvq1cFHEgLqq@hFk#w9uC zU;=T#0G_0U)B{cdxBp{-(X(dTMsDDyeM5}J23#a$X7J)>2D!u-VT3&d z*o?-355`DgjtPwbyd(*n;1tZ@H3Bm{oq+&fp#aY)^#Pp#OuQf#{0?9O{(mH6dD0^u z{s~Y>y&3Bddc^D9mpj{Qxv6^RoVgp7%Dc+?GMdZm+6g?T2>%#Kw_Oul!Cx*y+PgAHK`_aDS04TJF&g@b)cI+pXndPHO(3u!-)BpeK*2A}4o@-Z6T| z=0D7GE7d!1P+j8!^<>}5CAF8lHoqx0SBlorb$+;-* zs4#d@6DdY!BR9;SY(!glJI`WJ4@kXhObsTL}jicV(yG+s)aTSpc&S^|I zpp%68&mfnfTD&-l5aGcBL`kJ2osOQHhbt7E-M8-@y;~FdMXk&;6d=e@w;)gDCfY!} zJe;e&rBUu=)w>#%WPdliJ5>-7sUHb+OSkHHkJ^7dheSF&*DxC5Kh-PbtTdik;@ zL``|QcIE_G6F*DYGig|hx>p#at-_b1OEZgvcSw%~dA0nJ@`<}lt<(0Lw)arAy;n7{ zL=?;VjQPxu;7vzqkW~L!k|61SEmFW3oUH^%>ABH=Fc6b~%73M-{YZDjm~K6>%@svx}H z-q)9BR&Ek(y*`RjlTKkIc4KdAy)U4hPynLQkjmme_j~t`Nh)Ii3=zmh88I z3ft5)UA=o^h|YfZ2X6X_b(E`cF!D`qI+$8n;nc`#&=%@Qxms%|VP*MP;&GUQ)x zL(eaPUV{MUVSSy?s`1_i1HVVmS8KE)SF$bU43H;?IPDHS-w+<*cG&YXCaa*E{?UHg zn3>3jV{!!%Vw#?kFLkgRN2OXV}7 z_NjJ3c8dZ!<9=->u&{9NK2|Al+54`YnH&E;On-k#Lf$7$vA{KLpj9IDtYSYK%&6UN zUI|{OEWcaz3PIa440#y{bZOvoI@6tXj7Kd2?yt)9kkuvAERY9Hk9xU2u$xq`HfsVR zOUC{VNgjPnCbZkxnbANimx?joIGjODqzSk#uEGaQFqtOpFFj*3XzA~aEkD5JZWR|Z z6n`P#r?1j z-M*W&rqSpMsa`S*pz2y>z8UR|Uc7!edVe+AmBux6ovD-yL5PjjZUt-Kn*dMoI6!Y{ zq&`ZgL_-fu4X&7!nxs7Gf^4fNE)JpL?r5HpvG@ywF`G$Ujmg0QBh2L-%|(s=f>u^f zq%8z<{!>5Ff9mTnVbx!p-;48maegmt{ay^oYbdfxw0Bp@QXx^nT$lRa_pj3C*~A0% z?=Sh{cl?%j6WY!rPIgsN(PEEYOu2SU@$9kPtj(?gve>R7a6(M}J2 zK)TDQCIdwtMgLBC6f@o>!eDhfKf+9$cD81Fu{kJP!*NENtp!;HqKMOajDNQAs!EC;K6ELB? zm%Coo7Pw%rw>cbq`Yjpjn@zRJNk7!KZJb;}Try}{nr_DE<$xlP|``|F{!^Hx+O zTZQk5B4ZU~EhK{pAs15XG)L3Mv-(A=Ca4bG8p}}3X6NPiz~IzwU4I^pRP>)BB6v^_ zsH)JCeO`@KfK{Q>ABC^VW3_=yoRatmh1c0rXH0Y`)Nvty|WLe7?}@kK*&?!P@ZoBC!oxb&18_U_JwpYG95C zcdl8^HOnc(_e2?Xs(-D+JPz~x7|ipkE{&8F!vTWjLmoSjBdXS+8ZqZhN#fE5R!$CQ zlClhQ$PPX6|Exx5l-WE)+1}uUmJ=+KOM0M|nJl*yuBR>b6OpAzWWzqldRFZ)@B{*nhJOn{Cr{-T&?!yTRuIFT z;AyKJ(GWq_n4`KNviTx5Ue%`&rV-|gecz7?_Lg(}50Y5$J)X{_@HC#C&>Q_o>mmn> zw+Nj$Ap&E#&+0whauBmSo*f2j> z+e`l?DXAZ%*MH#)BefCn6|+`BaN!eJ1sTYFp+}eH|Mg~FUKhQAl`7GdmC4%nhUXX) zzPn??(PYEb3~jRuJ4*;%BH7cPWwvI5ZaE22o|DT=A=7S~TUV~z+q@J?uH$u2-OmrW<(Z9W2@^<2N)qK9?93uYHKO!odGV}*5= zvQEhU=zm0uPO>`5>LhDt$?DQ@yENQu$2+5@IA1G=__B!ZWf$A4o2h46P_HgWRjtEz znN%ptEDVALfJ}fTX*m?^dnmCJ8_GqT;wcTJE=dka&1F0tv4bcH79bY8>t==sNG02^ zndku%i~^ql7$Nct&+N&UYOF01O4kj4b1jK4mCN{w93Jwi!D~=9nfqYc3P{`S{?s& z{MTu%cUc+QX$ldJKcQ)RhK`&H835Uh5c9)l{g1N5Magu zom5-|q7lHv3u3Vm04CCbSo#!?1L|El@4+>D4>nrH^y0LdtgY>hQCH7l=fe0Xz_D{- zbU4}JWaq+IfyiDqg#htF7q^*%vM&J_5RMs&=oMktt z^|evJY3X_?i^DL$N^fX;v()Bb+g%@Z*GGTM^-*{4{$%U*tGcLK3{Urce?JT(dfmbG zDOcU{wyM-%%g;t2xx*UnRJ?vs@oZNIv3ODnx!kA#=ZNmdU#d6{iMA`oB?cr0Ab$w1 zVbXbup!!#6z+r^0F^yTU0D_rNhJ3K^`%-O*GN-9y4mi9*inUK@5YQW;FDs6`2QK5y z&5(Yre54Cpl3aFw=pJ20&ZsV5 zp}xy={Ni3wyL*R1@KigLK#O>{5$h(DXei0V zNCjxsUhh%jnw7xTHKJTif&p_KighUVPE%V(uMQ77Jm~PC!-EbFcEy9+bzyr2U|Ge> zp}mVkYVIrnz)rZYZ+C@CUw?%LwAbXE@I136CeST0DvlR`N02b+iP;9nN4;Rcw7){z zvQUB(6$H)If25f0KG^c^0d{l1$pI$^oE&g^h`?!77Y;a+{TH|7J?s(}xYR^HFsk+> zS^1bB;OQ~p(oM8n=w;UKEAZv(c)`&Ms7w#5Z*Z2)R-Heo7>O9dQh(f*P}mZ_4b3om zF%vLtO!=$;yYzM9ndl%f#|bWhIEt8x+NTVGmqhghgAH(Dq;#PZO&F91=U|LfElvR< zERGOZ&{)L))C0IA=oWfBSjgT?azsf!!{kc-1tYZ4FXAknmIE7q*9dty#Ktx6{A-y+ zQVds)WRjXH6B}kr?|)o9t(*c620>zlEe@eTznlzFN8YUUQFAqiq#cr8lNIzXQ(Hd6 zH-(KIshdB+!S*iC>C1b$%U)I7Di<)qZfZ-~RM%)3PA7FbsnbcFPWlja(w(}H?F>&> zaA}B2g|NXtxn2)+Mti4f+*4J<0VD^I9DhJ^0O=tDq!)EzoKrc! zip@UPLXRf$6^LEg=qTUD)7X;Rf=8+`d%d7p2L zHx6eIlQ$vtW`FiNjajIZIwQ&MPmf7vp?$PEO^GM}NfQnTjpGIe0pgZ=N_yEYyMLz? zhk~}D99`tiLY*X`P#`7&^{#*)M>42p0{PWTOfbhV0Am;k{lh9|h8kZi`_SGcrq(r*aii9e+tzFQ7=K%vTbo;J34Y-ek^U8tJ2R&a z<~x}0V7`O-4-w|Sste@L@bn$x`_~W$a2%imh2T12{)%?moN4fUDxjy}NgnbyBln8V z8O^n|vkzIvQX(l6DJn51HoW_23Lg917+;QlWxLDhiIAWxk4Z!n+v5xgOQMu3Hg z@JDKX=YKANlr@+sAgwzJ!|o~zecce@{~h9|Dur5C&Z(=f#xTEpeI}Z_$W9$C*rx8e zIaOVu*)BXY8=)1eOvp+&WRjxJI8s$<>ICbY;%h{VAV|tavH?B`zFAolMhHyeAiMA6 z4@FB0aD#&Y5DEfHrYO23FbollzzoTIPL9Vq9)G(mKVD(4ROQAi7qOaAp^&{Us)(i@ zXsOxhD~rCls=DWa%UbI#jgHbhmuo9+l%V^f**y5PV%uAr+l`|157aF$zFB((K`Kum zR@O!o8Ee!*(s9~(rDr6WItQH7n8*~cZ;wxuhH#SVfxGmvZ#3 z%7g8OVCkzwO7AI5dclXPI<`~loVB~cy^y{msMm*2U+zj(j-kGuTOVt=&{2-M?rwCr z`0IBPqd%O8L-)a1ukX3y8YZxf2jt*)wiRe6+4oRI+K+i)VXSp{51kd3WQkM~C zkW3MvWN4z{42yGmNd!DsE$Hy1qBB)KD+b1zFys$)%vQZSE(s<+_Mo&#C5e$}1PJA_ z4KV`gq%eyRo6*2G(jo=)21UpR<9`L91YHssP|*nHvt0LjMjoq8>n>A!-!EXhv`G$2 zIxOk1q{EV3vE)ue^#Ai47_O2!$*8~P4DwZXZhMH=Xbhk?$eEv%_Euw)rplQ9nbA}f zRSoB2qh0O{!p}4G6!)52JP^-JnIZ_2_)!^-7h9V>*R1wO-0&xJz0(f*jM}#Lq zuhQK98$BVSpXcM(@bPo6Y{c35f_S>Z-nW6iyeh=h0h(dri@ybTL4PR9N{L_Wf}Y0X z0JGT#Hf4jot?kjU@Zun#-j#aweK?SDtg|-M%Tp9x;E*AH0vX@h+!Td3M#HMNZ!v)Z z<_lHidrL7?=)FbFIzqpdd2l1urSetGEkDmKsH~oOE5T9mF}rc*{8DN&#d@jPkZXOt zx=i6ilMSzHV$`0(g?~5O4+1JEK7pjY?V!|xrS;$`c#<5J)eDSL-%jCHLhRo4Dcx#GRp z-l~V;wxP5~RDPwhQKGJx4V2S$2YUk@5pEvxg)#$HSS0fHihn~&CODcSe}B%kwLu4z z%^rNDiGyG``0p6SW+Q*l*qfo~3?UyOgNXJZPfb8u zl{7#4wzaz%D~hw(w!Zm!y4KBow2qDBzi%cvB-bJw9Q)$s1e+KwvpX0op>6-2OcqrO zZS`=Y_gS!Q)qlhmt>ESd3$fHMXdePDX={aZslJ3?Ldv>?pfS|u7;O(#Al|Q|8YjM; z_;%vkiSPR%zPD>4s!BO@NP|EOv6H;kmF+cA5BnR3*k3Arb;AwE1-hkHX9WeCo!Tkr z))QGGK6}2z{!_^Y@@*YrA4Gy0CQn-+U?`Y8S7pYSOn=qt$)fxrAKmS;3` z6|n;XeLy$_5FAn;dEm*-40|)61A=4$2|e-lc?i8LHW{}M`^5&_2 zBC~c40d`ke$*3k6r`%Zr$#ml*qGq3gI1Si;OeSi!i%9Bo{Zix~neM4s3wev*1X=Gz&|C^krjvrGc=h=%wq zqVaSFD0%M9ASN<-u{;2s#DdjIhBWAzN5#AKE!-_g$WYEY104q*j2V)?Kf0A9#2k~rFcp=U zfPW{10vK~Tha7v7)?}XK3}Q-tRTPV@Po__kkpr>)<$K^kF#%%)LKJEEdV~3l##~BW zfqY?lDG?I2hLRbOU8)6u{0;C?Y(be#2wfurZp66d0IA#;V$|tJGKa3Sn~no2G4Obi z-qXwoWq?YD_1q|LAeNE!#D`7iKC9wl;(y&eYVR;eX!I918LK5ANOpTCkK?Rzf9|0U z1vwP70t$Lj6U;2x8e*=_5cC(F;ZWK_9WF{tYT!u;4J`*ZY3mI(yP`d?3+^#Tv33KV zvw{6Y8(0-XEeqefE}ZWuyVW|By~sS;ZJCN_t1*N2%Iri_yMHnZ zsZLtFY^_$6ut*t}E?4{9!ljk_uyWsSzpS|*EkE){baSfo+-^%ctG}u};mcQjIC&l- z?dW7&ZPejF-WQS=0F5i_IVO@Wy7vfAXFOvXD4Ob-t$%1le9?0} zB~ZzhZ-WcDDz+QB#*ea9WFP2T!lr%*m&&aL$KtA3oLWjY%qm%b-9DjxKh~G>tA?W= zC|3BrVl(v|7Qkc|9lu|0*S46^l@^WS4&CPXhl#m{@9M0dnFjZ&CWe7jQ#5|*q`j%S z{W~bCcGuybm{RQA6PKoUpKc9jpV@d;CB%3Fx8q})q)e*;*#_S-i zgR~CPI!Nmvt%I}<(trLONc&SLs)DaNM)%JM+8L4Sj0vh_p#9bHsBC6cEc#U6 zp0q)mvcqbmxdOyYhT$T(IaujnrGu3YRytUD?_p(Sa*;SFLni&uaKO>s5%J=F1EQU# zuvZBLkYP1e14FWjHb5wUa-1e2e+r&F%e8qXKcTfnPS)wqA%CSfJa^To5+vOnTlu}r zu3hQ-Q?U!m;Iz7s4LD7p?4HA^EpX~^a6Y3EpTHpK5(L<&-0>DiTL9{ivO~%aDL*!( z{7?fzk6tuI+|w+wdkhGp0egq(FJG(Am+b)S(ohkV2E(p6R*%eiS0ic1ud(eF&HbHC zfX)Wk$_DtOuYb`ykmEp(13C8=PN`s5iU=7S)*2JDY=a8d)&l7_BH`G4R zb)kOybMy-wo+DAUT?p(#ziSGBT^?PtpJ92@MI3dFG?tVwXjr_J8NK;<)*vv z%lyFV&ul74GdZSwKqmkOf&4v=alkPFP}ERdGGm{5n!vT1rv5l(=?kpQ4QFe&PdA+M zrz{avS;WF(BKm&|Ar~M0G^g8aJS%V3`vM^!aVWsi>zYu2*#`Xp37#Ov508&lV0T6< ztvFsQHfMCwvrV>cAT}J%q^iK=5*%3IZ*yJ4F*>IQJ3Y7`PPemF6Rl8f)FAkP35wpr zIN)7jU9OD=F1I1Gp}h&IH>**HzkGcrTUpNba(y;C<;Z_B9k^a`ST>4qo~(rHL75hk zJV&>oSVKU+mT4BL=f#oC*N6!SD7_j(?+PF>Nd>ft*g>}=Nrsg#WA5LVo! zvf}QdW*vV|f2OwJ2bEg3hNnL}CfC$kel;lVt(O}?ChZoCTlO2p8lftFn`O-PQ%;U0 zR~JJ`Q|v;r0HMG(j0?OngJg=>#wEEVS<5gC1B_JTNwYc&u;S{!Fc88>039YOZGejz zx+FIwxIdyY-XB~fknmqIuHy=^bAXlN~u;xDMl zJKjcgZvHk-`~QGJjPzmuJIGG(9P`26Yx(0XLWeNSUY2DzKjCk6cAb33u1CnU{YdosYh5i_ z>_6o2*kPiTB6b^ssm$u~FKrmz2R0STcW=p>KCr21>=E!!Io2~zew;VAm>*If4fZyN zgEJ|1s|k1q+3!qz;n#|39a1J6NTgG5-y!WtPR{{kf9Nej2Z}E7QwwSZ6FTjN~Jk}sl04skWEFa<>yuM z)uwPFs5?!3)c`YrmodT8rmCuFXbml(*fz;bwcQ1&TGPgFqo{?n?lx6e+SaU6 zi`ur4=tphq8LCvrbAtT-am?5;4j|K0}F*+0BeH zq)yqGKCJ^|#BUH%$7lS8>hnKYM!Mu)l8aAApZ37{jK+Zv_zW|^;Z<^Y2d>b90ZbT2 z(EtB?J8g5`TtCyBtLc=*eVL#5WtMn;e;Z7v$@@EB%;tE9Z*Famb_X(%s^8=B!g~aJ zJTx-Qx(6_T^2cCPol!S9u(wiwbhEARxEGL!9q>t}r(LZTu4X?pD6&(NWj7 zIVMvfnS+kkAxq8FL6V9akYl`YL9Y-|p%a$lkYZO&7a{X)cK{(3<67eSUZ&6Ve|<-{ z(Br_%$^fPc(FsVt41m1k^|^6LE(Ge(o1CT6kW++0b<4;66^=JSv7cyihxj1Hk zl3*b{>XXGNz6^`!@(cIp9OPUNT3lJoFU(5c-28i&(y++aUerWOSG$nT!?;77bhB~` zPxdcgORkWkDpyF|vh3wk%){7%f8VJpJvv3Eqgx&zJx76b@ty?e7LNl2JUX8X1|yx= zP5;K6^Q7QD)y&LrT!awDN7?a44pxKh*z>GyyIWikF zy$mg}#pu)^!oyLE)NZy-9tIeYnLadO6Dvo*RM26iQg6i(bKzg$)hCvfj>k!Lv!g2+>IKKGMZF%JAWlJ)@hy^6^!Sl&LhQB+9*vLGD zFT#Q*18TYiAJ3cs8j z_0~UeHQJG}uXV8(B*a1jNrTHVByBFqv`}0k`x8V8_XH>1lkf^=lB$7)I$o3lo5J3Z za|}X~w6U8ShGQJxr%3bjjyZEagsaF(jQ<6}womy3-hsSXv0YIa=oyN{E7^-ph2BR6 zaHpRQ-LubJ>IeT0k_kCV21U4A7xj$U-x7UHvs9)$iGPgoPA=xTpD;0A(X+u=Q-pJx`Q~P_wD)(58k*B<(3VRucWG+ z0^ddjhDJqB{t;ndSj$={9-#edr(*9}q$&<;h6MJOcdzq6(5GR`)T9p+r_u*F$sU4U z;BWt6po9Ji$P~9vf6Wq284Lgi3>%Vu^mBF2({u6rg95&Ho4CXkI|om77&U_YIf3Y@ z*>lny)Koh>u%UDk_!(u^Vz{T3B^$adjQ}gk2Oh@b^;&19poZ7Un#UGYDa^a~=nk?? zEd%6n%9s{i!c}q;FG3Q1?y4NCFVifO@F@f}kkCwNnkCPR*>!;3@r^tgI!sT<5y$+| zVVck)P7G`V7TPBylzMo@FrQ8r`C6c|w=FgDYpw<4b|PtBWNtR5WI!5GPZ@n?nN%kp zm7pMrGIm*xGgGi_B!MTa`A@Ok)C;~wDAhYa+BLE%Lau3$ScZWxci6($GN?$lB#Q>c zXhM&i+Fb)ajjlYR@S8jxnO4FA4;nGTr!ItP#cOI z|7?f5imG0E1NG6r*aevsuBz(_ti%l)n5BEq&LC0XwIZ_H=NC^iH-q=ejUy!tHhnN` zpaP2Q^9=s4xnhyYT(ldZV`Dk3m#KU`l%T-9rk_Hn&e1>*Z0wLsz3uAPW7V z@^I}gedw*;!`Fua#g)x0c zL(t3%#XaB|rQhWpG*0)pI00^O27*4D%e_$=VlT@Ml|aW^AS{J|Mn-^>i9{Kyvt-7w zwhJw+BQorp>xi7biG`8~^sl%)PL@i5jaume)3ea9kGGqqB-M2u*{^k6GV<&6Re)j8Ri^wKWIM#(|# z@vwdt4r#N{q83%3@E=e5_BP3}Pp!S%P%P0-a-Ov#)E?8yZQM>Zbo}>yQLnXb2gdK! z(L3U80B#*D1ONGCikoNwt^H}t%Z#2XGHH*?2$i4@*-adOf8 zs+AgNTO=8o4v0H+AO$i(la?id{Lc2DlH0o0pu*@7&i~wHZWU)j8J>{FWp+4a6$Wv4 zKgeSJ18I}@RRpfmqS~c&x^{cZ)lmIrEMooXf~GC4yzXKsG0aF;LwI-!OW9=zfbXI? zBey(Gm-*%WAE<*oIV3tJ_=r9$smCYTx`xasKcLt-dE_mng8w);?YJ{}@7_rTVlZ(q zWZNgVE^&Hlo#jejOCzVHS=5Tet<*$2LH~emvN~_Y5By;8t4aF#4yyZ$x-1$=Rf(94FoyJj-IK2CF!Nro!?zew>i zQ)+Y!aNZA#8zZLw^);^paQyF(S>^_n-s5lgJAsLRO@<+R>6MrG2-ATJ%a%XUG43l) zC6h$&Yn!n{=Q2EtLJ7>p|JCPgP;8tRf#QCO_xPTKQ3y}Le<+lB4BWX@Q)58~yGo)j zxT`N(uaWlJJ2K?r;Q4z`Vebxw?J0bL8CHgD@)=f^R5?>gw!5`$j#n>M4&IoVYzk@h znj?9}S$3&db9fdBTzT`q3q%N12Npy%_*a-D)Fz^RxS!hsec0_T_q8(uV457Cu6UYU zJHUw~(=EJc;~xK&9ynavvOz#8>OVpE<^FPJ$F1eCnKt+*wiegJKY?3&xLscZgxuEM za@Qcwj3;OYD}T^{ky$> zcZn+mMdKu3ENYo!a7JL3Msr&g$Rif#OT`7`a&7m`gQnvB}mL2E1=ZvCm7x)wT zMfkeEfjJ8OGb1ggdjhYS_|VWU=lF1ZxFH$q_mtgAz83RNmC;FJafuDwnnrzFQE`v^ zhWw=3COsggPOIuZw6LO)EewOE)&}pGy0QI1qm7u`n3U<+&Xa)&MoT{n$V|1yPq%FD zA)*;o*Cal6qAg1vx;g^V*3}Z~$a8KK z&Zw#1nM+wt+pIyWI#(}M%{BCfo}}9}t0fO0v#3!4^A}3qH$M3t;BhOz5aiT^|EO2J zh^18vC`c=w_1yosQ_{5tt}J^t&RGHT%E}>)Z9Z73$~E#I8~{PgTUOY-Y!g-w0p4{D z#g7v5AdS#?tGOpF8rNCkUj=NhuE$0tO*~aw7FTW(R=}VCZpBn)AE?CY~8uGN>L=Tr@jF|H#l#Id>#Tg#jeYsDs)tmr8FzN~Lj8f$RsbYPp z5vS6a`6PyR5QlotTE#TW(M1z1`%}lZ1n;f&n%iVMN=vqZ^89&jNUs_Qr<8(%guZQ> zC%BicAIe2PaoQs{4PR1g>}*AJpuuR$eU?#PNmW@*jIW27`tS#KSp`4Q&&D_ z!_+wKf8zArvqOP44bwQVV5h|Ta&w>PMUA9(;Z&2e@ctg}A_(yR}d`hY52^v4<|{Fju5&Ay@&+DWKdvWn0PGX&-k$7^j9i zgvamAtCURQW;4-vqYB&N@3E3I5vWqngnkT5iWA)aau)%K0)azu&`U?ur58y# z?ypH3eJmQ{*zwlMzGBG8uOF@Q3Ctw|%(KzUbVsQrJrxr3Jg2#Cl%`S?aXZR6SvOxY z|C)^Kjwc8Dk*VyKkln*1k-j-R@Ru^(YPU00C9?3xF)6@ZOgVA$JV zY1a-P@TvZ8Fmj=`f)LrgXe;5H6Frx_W;L!X4@5$hj#u%*0ayk1ilXZjLauJ=l8^i) z*lF2&D^k--pDIVie4yg|ED#>9$>@(7jncK~Yc@;He+_rzOEA6sT}Zj+JihF9BUi@FwSJ{G!_k@_!;&(;solwX(sny{3 zd7#qKcQjj8X*=r#J@0gt=n|p1IYzuk>GfqxpyliRIR~g;@b_zAz^&tr_VuF&v2&*7 z25CFn?wgu9?TFYo9TAK*b{^-LWApIAAK>C_4agc5=RgTEr! z!blHd%to(u`Fw2X(semrN%vpjZfCI@#{pkT^h7pUWYSJ*&w#3|Hq5IQH=NQpQY*(o zM)h^1yRO=taKinP6p=qX5R(K0pFr%u<|S-^tYne1Q;lKH46a4MfZ=z*TOQ%`^`6aU z5z)znl{I_3c!)c{a#L{wgeHLh!Jd7Rkix=C`7#lInO}LaaCv0i7W(?pL132Y?~;51 zi?tHJJo}F3)SfSLp*omPBJGqw#Qp-y;hYsIqtM+{m_r&h124-m$4`O|OUG;l}!sM?9#@E`Y_|sdiWLD;dl5lP4JT8`J%& zxh$K68a9~C+x8me2jmll0S#JMOApUA)@bj+Eax1`xG{ zH~Z3xH`@jX1kD(5jb5o*e=?9RZIfGojXTm+nQz6~Sg-Q*V0zwc0H>93Gn$491XG~E z7!ZxMv_KQ%3m`za0M5}MsMd=6l&N}{a7uw?K&eURZPTL@6xhNgQVV>Qew{Lh{O)je**O>0+s`}k>gcF5E2K?%2&BylOAwfyRvC%9z z1R}YzWarItiW>5Om!utI)ES?ZTgXG0$`JQS^Up~OhEo%0(lx`g9ph*Yft?`Kg((Fk zRc_YoqBJqT*#y+ZoOb$)#cds{XjEkbb)8Y$eprW>V;H)K&FWaH%a^d}xBF}v!)UJ1 zR{efUf5G_p*Qx84GMpzf-KyTckj-|la?NA9_2tJC(^j_*B*6>lKXM}~cwC*^0y>8d zZ2{k3tRIi&1!cJHHINm>yxsJ)%*zl&f{Z#1aBVCrAB?2w_IovEm8W!<%+3d8CX8&1 zTp5&4refWOK(awfaY|T~$#00LMri57n_h~$T&pbvGWJxox{C{m=yTZS67FEoDqcU1 zH*1oIot3?SB4QevNmdi;o~TgE(J1R%el-zQdhQlRRXlwwukUIe{pCGLR^_nwi{pt&tcEsR zTB}KXb=FULnp}DeQOAv*nIDKK&pB$TESA?%m6-0pFN(lT2B?h|iOZzCXSm}i)gQG8 z_LY%DX!!Q%IO=G{)1?69LK1LsXuv*1UCjH4XQ_&wt82ZXlN@)K$X|LFKN*5uWvJFg zP&JN7opX>B?%ffQV~q?sl#l<(o>au_>rxC_vnqn7e$V^5QQyVeiX>MkH$a>x5L%#G zJ%HzUj8#&~(~ZQ0r@wge$4h(4V!(4u;P#1$?AKxQ)D8Ua?PZ86>q8-YlP=5wv|e2l zH-FoAEMdP2Pfn50>&iE}Y?8Ze2ly?x;T^6;&LFK@g6OwvSuD9vJNfES=%teMav58c z9*Z*t3^9PytmuAIt)yULXs)W^deY=CV~_)IoeuKY&r1@Gn^RI6h+{@vs6Yhf5g zOB&7$+bcLiFOI}nu4_38bzHC!EFqEp-j6MZ^{nUtFF~N>{$2fz3rqrWc{P4U>4(laCH)x236~Sz2LDsaKR5eoxGslUwP6T*GNYetg1d<`AAz8l&pD7 zcc5gw-^h4yis&PwgtxfQci$CwD9q?5IzTJK zSYj&7QXiU)MT!(_y!#`ER7c2@hd)XD*R;OXofe{kFx&mO@24P2>z_a%OD~mR;85Ij zc!+J@NI=l_`3*J`&dVS+^nV%9xSC=gQ2uvc-#nduRX7Z11IXDOCU{XZi+-v)dBnON z2Pu9deiaFo)U)K_#2HxD(6AzuY{MS`iMd=lp$h&0@Sh!|w9mYQtE7njV$$Z^b0YRE z1KYCdsQU2W|6oC(y>WptV2_zWq5m9puQeEW%)P1j(J=0e{Ym=5zUPC3CHf%Tpf^9k zRv1H35-RrMjfb$aQ7L<8kRy$%GhluQev9zVd5EJ)iurR-KVb?S4)gSV206*+0o5!j=dv6wU!*m#nK&dvVgd|-_P za(XIIDpBQey-Oo09vG_nZza{2i9+9di}UM56H=n-u@+^oZ`t!7bReOr`wA%kg#dsI zxEtL8m*6u@DJ3B{KfNMmiQyamzxZ-Bk$0@JV{Ho?ex{|V;`9z9zG^mS^hjPz@yZklpa-6-MWl0jjbuVBvqKY&5JLT=_ojKQGvy$aLd&pyYYSIAs z`cjt{T`f2HEb4sIm1JYCjV@i>`4*-IIfHg(iEN{m@Agg=OCgzm`@*0G0wbC`4jQdZ zd3kv7^6a>zojC|WvmCREjhj&UawE(ANmK0dRxzy1MWa0i&{D}OhP#NUsmiQWxnjiL z<-bWBf7<^)iEC6D!jiiSnn8)|OastlA!06^6HH?sHBoR5M>ep6?;&EV;EtZY zTYCzhso~S}xyY8C-t5ldr+TDFDX!W>rYWKRuRHN4B527^WLYJM5*f6^QZzP(gMGPd57nMk-$3Mq%T|DbPiNM9xAICU0S?ju4z^cR)pX3ZaEXZ~2LR!X@TE4*7O<+o8FNk7_FUYR=(0$FSc>5@wdpN*BGJ)s|`Ou4EB43K9t2BW@aE?ebP zlP68U5@Se~&f_Rtf*|R`tkZvtb#KNM@zgs@Bwvr#$84l~pmg&y>`YZnRT27+UA`Co zrd(>%K*dpt^Bi(FaXH-ht67lTwuQu@+V|^_3NO^qy{qb|`}dmtt)4#A1rQbZ=;N7W z-IhJSW^L#l236*8lp@^$7GnJEQcJnvzi{u6QyO0~kvc%Ml2BvV8OIf#<%64iJJZy_ zgavd9=Xe4v7L)Vnq*=+hv%(b++aM>#Wz?Y9<6jX_T?nnpRk2d9&EN)!+(PnAJ5uTt zeT49gAH#HZJuqYT5F-7>fE*Sz6|!bEIkyD+Nhs1<&?H-f+=YrO zr7~Roub4t>?%HEHfw&Lr+UMg8V03gcoXw!q&bp{jpuMCI*9!e*;ik17971V7RZf6P zfPvURr`Fi$FC*~WlOdFEb2CkYTj=l_@*uq00AepyDoM6_Cn=>DkV32iEmPi}-@eZR z@6MvgU4edcVSRwFDF*4xkavlF&yaTw<=T*!kFaC5q8J@wXfu%}_pULnNjpfsbY+-4 z5p|h^kV9ey;_W4e5V|=Q6ki;0h;ZM`c=2)Ba z*wq3_%P834xTuTf3(WrIkTytf|bKiP-Nm&;5 z1d3gH$~=ebGa1D~rmWX0v(4Hkom{mT1RfVf#I+BNrVVu@H(!PWEY2AMjofsrioqDw z(Srt>ZbF~_=uNxmThVuU6htX+`UEY-USPv|cEG&Heq8hnJk4v^B7JG5>v$u6&TURk zoaa!e@gOHu-?7pVjCkJIKs!%fPOqdLj(#By#(66%bzGye%WJl3ZQaNWD*>zZ?OIDb zK8`^O;Z%mX8dL2Z0L1<5vjyqM6M8EhE+S9mH&xBSs=A9EKTwr52Ip%>LyEL4bBj z+*=mzJMJg(L1>i29cUhdEHhEqZ_=gH4++*i)JJsh86r+^=Wq*(_HZJEkCOeto41|x zvVO|x`aobS*6}sS%mFuXHgdeMyheKDA*Z zE0<*KH}FH*+gI9T8qrphp$VQ!_Uz#=E99WmqJO0}KfPfrFb%}qQ>Qs&z7pg=M0RKF z;3*AMV^&BZeWK|H?NvS(yT`@O13@9Ai|6@cA%Y(bmdNTRRi8{)1ThA)ia7#1WTU~a zR7z<8ynEtUdEC39+}W~~PK>t?WMLhOl!#!Fe(Klx^Mr|O6~|pP8bkMDoi|XtN%ca= zO^MZHq*MHx_Mj`hQ8Z0*JfN^dA3KyXNvVKf_Y0>?RXYB-S|*=oJXTyTP5H4t#?#Ml zP5}Zqmk!Wh1ickQJm)HP3(>3y@cgh}&MGzrlI9Q}X9Yl>jk|QR!XY&x{7>--P)Faw0lviU82}tOg_f1Y-XI!c|A{#&jEa ze-o0SUH;l9-YtloVb>8P#!?)GKyN<)4brjB>_EXQf!|Dg*UGS4nSR#F?9dS_~?k{$;;z&hG7%@q^QQf` zN~0mH3}6}z{D<7nWDb$~@P*=!?J@8};`KQNS13_=?qGZIT0s&*r$LXWkFL#9!vuzf z)*#dcSXZ6P)4}`rcJ^w{`4sCE0`85ev$cSFXl$oGh5u zsDE1=Mo4n!+u7RkrF`jH+g^`-eX@M#t4j|Xml#w;WVw=#h=`uQbC8BIP2D>=86~!w z2nl1>IFXVj>8O>M;aqpb5;I)c1=L2$8WCz|>ewO6Oo59n^+k-@z+YFz#M&tzhs>?)^c*%ErrAq1VE!|St|SxQfCVzYS@T*X#nh4-9PD&muUJ2( zA9aGlnLo(&L7}1BVK93mVtLs#$SGVPI~=5-_c?^e4jMv-7t*-p$QExH3Y`q->DoTM zzCKM~IKz-MB(?BKG*P8EGo-%qQS`Xr@rSK{iK?a7e4#On^sWDLRwbd{bY!`z z7OKqlWRjfu)5!e;0io=VbD01F3PV#J&OKXMnIi^cs}HhI2v_FsMj2UEvF^27OtFd( z?+Kw^a6gNx)csqhUEEyW!%yyHYa`}8AZHDTVyP-6erXk5M>|2))Ivo_ zaR9l7%EbVnuAA3~KRF3%b?{o>A#naBgOSz6Jq$$aY9%We!J!dhLL33FO|yXc&M@sY z)uX-FeUHQ~SVBJVI1%VSsYx0Lz7V?&(elvk%e3n!j;?S1wh&1_JQ0C-{cTY-w=} z=Pe{?EJpcwZije;JZ&W8c8E0sq`3RKn*CiJV0`5p2dqe@ZZ7grwQs7pNu%Lez!%RK z*oo>cFuZ}@KoN9D$xJM;M9sJ;x<`jlRSD&Qr}*|eRip}wcc_N_fE|k?uBX)FVEQyz z=k^4sHoyq_V9W7H{h}SFI{Mr-`uM7!6=MNPx>D1z6!BU2s@wiw`P~r%>+rKP0a+` zjJCt<9^OWHlyx*w_{=LfO)8O!!#(;&*8 zcGyuB@#Y90V?*grOp97!9M|Jij8J53pd}o{-RW9cdr^I9xYxvw_xg4Bnp$^_(jBN-V{)#BqnF`j95Mz3;<%kw#5zm4?EhjIs_X9N_Ssa>K?o!A>|fn zgFip|;M$W%@cC>BIgD?Cdz_<#A2r0aIe zWCKgsoAg~Lnh)P+Wq#yTzpb_Wn}UTPrdgG}nYgU#bS);v;R5f7xO<6s3A;UU2<0Ox z*)jYLMFWA$@GBFN9`<36V!Dpg^Aev2D+SH7pMGqn{x1f*vfPwnkqwK#0dO`b`LH*Q zv^ad>weS`WJ3Ii@k1oOiW-fZE)!%^V1}@=2umY2U;%%h7VIV=ux=vwp8|4`w+0Dzx zl`@D0x&-dqK+!|;1@2q9Ah!2x+dfw6_%S8N5kc$0PDOM7T&D3_Di*+;yS+s%l$r+a zOUsO|3+<2`n380{F6CYh4_wkDPPwVUjgQiIf8kz@>K|b*e-77i!T}cWV2#Z4KhBMgfe^*b8=Rq4X=H+B+#bb^mBoOQ~HSxi1ds>xKIu``IK9 z#J{SF!VbDWbUtT@(jMLN%aPnYsG)YuQh(9Vgb!F@cncmfhyKuO0q%j3+%SED(Tx+; zsNh3PKzIL3aB%{tc~u+0t%r+=u-t2Lo;mLs0F$yI&1{8lxif4+fxZGg`tJ{Xgf%@K zU)`bV2bzhK4Nr?5IR$Slj*luW8MN9>wx)%(wgGv!pXgRhSPZIe#qV1clVBNDi3d<` z=H(KoA4wn|7Dy9eKp!`)ih&K?xIyOYDuF`H?GKPu4`)@v40IWH-b_}MX46=q0C?s^ zAw$y!$u}>rMPUBWqk@8-Yq0uBnBd0ujh#D659;kDn+eeb<9g0%PG39|`+J05VSskP zMDdzq7Xvr1F+F5!@PKJ`RP%t5H&{pfcVLrt9|OY^|L+$!uhF?0?t?zf3gwUCg?)ez z9@&NRYAp(tMDv|R6=Vwr4T=|KvgpIaWJ(O*V|41cjEYh;P0;;|AB7qf9!W2+v@ z@xNj2K*M0``NLQlbBa{({&`a*Ieng?U0*}DuJuJ!ic2p1`|l-HZ_M`-3k2lri#~{% Ko5BGC}*geVf5g8@ju6UY|Cn?;n+m^}qE1Oq+;o~QvRk(wO)HPEP4L*KL3KHZXp@8V=-N2MaD5t#05HMq(-U`Jq*lpAnwU z_+W3aIT#M!>mOU2Tbo-+iF1KV&nT6%+ehC?!ygc1e{hP#Er9Jm;fH|78A4$F5zu|S)$CZB0U7o~w|`L$#=OXDdpfNs?**ls)GE5t&V20o`V-DMPcR&YPz zTf12+a*_=4{J1SywaE-QXR~SYP^cR_&o!{Te@hcy^)~GM=Xhvl-`y7$3UJE*R#JqM zRxA|aTzP9{IH}OTQf!cJsT`-YBuer;c_3}RKETQ(Y-r4)+QuchBp)e9d*FB?3PcFN z2q~r$28r2N)P{iLkRd(ly1o7>CGicd%VFx0LBRTaTrK8<_q5U3j;7< ze-wn2F+2{CV1yOT15UvVUZYFms!wdG?4<;-L-jd4`B0 zZ3e>-5jMOelmyB~Fu@T^+XPQ!-^!eDgZT^u^ae2wxa5LQ)4_O@Fzlm9d_+MxxC8 zHujT)fMwwI%eTQF$@#iaGcTxVS$P}Lx%vB}*t)9VA25iKHXXc!>;%uTGNZhM>@7lv zFw9<_Mre-Xxqk3Lp4|`jl#xL$%CZtX92_1Wm38>>IP}rehfWosXuZZwZL(^Z90QVyRGWB>groHCk5}m5%%#}A71V@e_J2kA%Yn0 zZg(#uFQP^x$NcuL<+^71PQq))X3(HMN-5GBB)<*qM zvXR6=pbtdSUy1pBb1AlaPz(Om%jN~2h`_E3Ue~wwInm{9R=+OV>*~+QU2axO`i~Iw zCB{jA7ai3yo7&;=QEH>QC?wMT(r~JeYQ-QM18-u8K? zkcxJ0B~9ZSEg3yp_8@O zQPjvWi7^P8mkAj@OGS&|cT$In&^3zquP_XQ1%D9xK;C0ufFR@}UoiVA;_{gOk_Z`* z-8+GV@)?STKwa>V8+K22e@TG)AE)V`;D0ZPJnRR6@9&Gp|C>DK2m7+{{=p>y|NH#; z^JmYW|F5p7|K(?Ay5-L_4tzZf@aGpr{u6$%|8xlCAfE931LN=gr(gechY@Q&jL7zE zxPR>?Z8d?Kv4koyntN+Cj~AvG(N%%XKK-yXk_dWmQewqjaqODJYKBwRQq?{;ca`C_;}| z&QSIz97TGDR^u&3OLc4pj-J#%(qT2|zFku;bN^S36#Pzj*blrc0CWA?qByX=e4qy#E8FUor^yNU9P#eRQ&+Y=fNqw~y0u=!b4J+`29$II=m zyvXRbF#IQUq^VXpDR++X^ zw|dcj8Z{dNA5SKiWQ_O?(k1x~)hd8PCJzIdG@fR-FLTE*qh>p$$$!nB+t`23@jv>m z-w7sHO#IpM?zXOHbIm|?_UJ+bjdq*-Cly@!yut~&*@C?nrFwFJr^jTu6g0bN5QS!& z?d4%%97`Z?jwFxH!&vO|8})laqk^{GCEBIKy8U2Xb6M0(Wct!V)!iICDvR{XI%mlM zBf<}1;2qNW{Iosq$bZ*g9^yq7J6m!DlW(-2gP0Pb4XmNizXt;^4kQE+{6IZaeli(v z5Fe&D#&9lDEX7*GFU~6-GrzOhhmPzih0*+U8etCL#5Dx`Mki&}z z5;mzo=(fD0*iao4@gav?m)S@PA0J7bJVYqkkbjTBn9`uhz<*ZL?aIcs`r#z1xgf8Z z<&=o>MxzeSh%weEU6nL*HH8MjuYDfBPRk>25R6 z$R7P9ZxLr>Jb&35y{_|dGq&g%;t@vIFgQZ6JUeX|U#_J(&KD(x<}kWKd_$ByKCuQ;a-xC_iAA&1g2U+^IlF=)>b9fee@HF@I*$4Q3Cc&30CgD*9K{Z3Kdl zaD(B0P~v`;b2@Ow`iE)~Hr8Qjg7fceG`~~02q^TG4)uCCkZUwi;6~f}L1hHDZd1`x zCCt%h6-M8nw`E51Z0L_pncUf~3oe{;ugV2y&%8x-JH~C#wMEG#9D4uE4MickjH5>*i%R4ziw~+`W~{`uj<#%wtxIJ7;2h7py(<D{KzUIDOHRnEtOcdtP?A#XNJ~f z%hcQ1n*Z}z`MV!8Im~2{wD@|uX8D5*byuaS>pBU}1ah*q^PZFs#OBPv!9bmOF3>#^a5|n~YCXY-Q;4{d<3|=Du zfrlavF_E%mn7dVx(aOLRN)QP3nafk>%=jSScq8|H_Q*et;HmxIU&;1U#VwZHOS{0z zQB;<9{em>9)FhW(GdIW&n4Csfypeefet#zn34xkDk$<0}=wQLqM{qGmgiDTg4FlCs z;o&jyA_Q613yRF73-ZA!LJ~~vtA%2|7YL}^nWky?5`$eKY^MAw6{sqkv(^bS)jV{n zmdsX*0i+Y#wnGg-EA4_EEQ(dQx3q}tGK1DEGHbQIgE2I>0ou;wdL4NR8`ec~Eq@@< z-MULS5>&lIr2R%Km2=Q4rh-nT*W*OzaDk7|ge;$=>rzI<~VB99~gC|21#$|VjXBv!x9c@if;oojSf!&{e1=#^iTbh~n-H{&zN__+ z`qCSVLcUkqEM_tp;sIp+et(T)W=w^euw!fRE8b?Cti>?1N`GBWf^++^tu-jO z(<{cKwrDrP$^5?HaROn+5r@NIe^evq#k!w_f#m=-xJ83p4>_mD})$BtVssop~thg^GoC2}Ydxooec{b$DIn;DW9>whz^u*2gcvACsEakz zDx-CorGF|RCBTd`?JA%H1Tg6=!)FLbAfl9m!{Z~?gITJ^L&JDsWs>?0Ee3lpHiu1d zcXXf}8b@A*q9>L~wZp;T{#n(F6?Cnn!73436QL#}ui~W~{rc3KWXc|+$@^tvyb-Z! z(wq{j@RO{OI+l`_u(yC`jW#luT+1DKOpg9#Y=6d}tKKReWrga@;ytjR+}JC)Q1QK; zeO!en?$@? zl^&RjTGANRZ`{hlSFpRUsl9O4lg+&;z<;E>ns+xMvzL?Qy2$MPMrLo|!Y!k+yP)jr z4a(l?;+TuX-V?xfk=XA`B=-9ZmtQx=PLYgwpIvpt$w~D(fUMKzOJH1pX-~nEXXl(o zaEkWX)pAgrbk*YxY=e56*z73<8Qf)fN{|n-aezrg=Y@OO68H88clDgw!Q4&~Vt*}p zZ|)pQue|An-(u#fVMBka&5R&xG_WCOQ59Z_Ce$K;Z(<5#w+kiV|C! zThiAH3(EA*bM*H|s{Qz7zVC=~>d~MgY)#uFe)-l6D`<&z7mbj{)I2nfySv#KE$0l) z=`~s@yoK3B9p}~2A~ueXmL|I}n}6#kyKkMUP4S(qsUcBrz*9G&P+noQhHRr?BN`^QXj#%Gows zWd_d-q4F5E-U`~<zpIP9Ma!1n z6&AYH(ysc_wQR;@i&C1%tsSLV)quy8?cU zL~GdS3rs|357!^VDHJDLyE~21E0e|e8RG6%$*hUGEuF5}IgG9l-%$M6dS{EK``yBt zSlhiS3AllnOWzDbqu>;b5%8#3&%D1V`qlHbKI5gcU9Pahb{k`?ol657>KrCNtzWmd zo~0#D<-MOzn-nkGU|Ij6yo4^@nSAkEniyf z*Y#OIgl64Z#t0~!K+0xVKKNGR#(hYG0CE(iHUJ$aBjP&RfIe<~3yo`n>0Kv%;wjgE zmjK|&#JgBU?P3)bzL5=a=E7*Jauz;*<=vt3GPAlJ(akPWwSRiswvk`FRbxuF+fP)o zGv8I`)Y_L*>s)RPFX+foZUHBod&|m;)A%8Tvbx3p0Y=6(&=MR~%k(c*WrrhgTe4dBk|- zRb3<=c{Be2dVg1O*dC}DmFp0Sn!P6TqS468hQ&NV4Zy?f)RR9LAk;@-te(+|Kg;dUAlL$D}dJU#b6wTi9lst?pr0 z4RX25W@MQ(q<=Cng$zs(0v-(e(>-!CY^ix@Ntw6~nMnR^MCa!3kCb@YC+H8kB^6$O z2iXapV?Nk>Eq~~Rl)gNT&>Y9}L>rL&PzH0-8q(h2-z3=l&-ua3BmXr+|NXCj4Tgit zAWxH^2Q7b~t;diWbz3ZFjJrcsJ%2WM)tu1Q&PRIgZTit4+s>6oeaCNuIr6bwVq;8T zw0J{2>I+USJ|aWAJH`zYL;au~ptD+k9S}FO)C@ZNl{C2%uQ%8B>mFR7%f7?~)@&Q0 zuNNCdi2;NoHscZ58C|`cj$#ra|DTtWTe36#>&1U);q#kez&@J*}-eas7 zhh={pmT_3-E@K&o3+!=0g8S|V8oZz2qWwvz-BZKd@x1|b4+Li;3Y}m1gBsI zuMwEx=?nz;3I%vZsSoG`VB!U_;CBEM@F#y6%ab1Q@K1n3>djbx&?8>&zTDYf%T3ig z=gi%xRNhtAm(g5i*G}L$Mfk@^y6u|a3I?;)iqSjR{=QFTD=n1aXZpuEBK~=Zycz?3 zv8I)%%LwYl)u?W$t!(!OO?kCho=d3<1~FlXr)se@?qd}6cvr{i!%iP|`tV)Whl_t~ z(Q=P|fVXdv+HNfub5ipMg-vv41U-3F6*;+M^p4RxMt`>${T)>dMm52PKFC|A`@Vkw z11LUuTb-cTK$}DgRTi+EH3~ejxNT6RpuyCYBx`7+2~-Slxe`#K3Hm-$m+%3n>bOi6 z0np>Lzu0Ma*_LzPEl+pG_)vun>YRVAAGxpfPtHYgM}@&oO{5sbwca6qh8T*jQF%Gp zNduz=>&P$G#~Y6fIEsb&~tKQY9B)fmv-Km0z zNc~8lTe?-pi*#P(leZ5$ypn}G#~s+5?!Ly!*2|YQA!^FYwKFHkn)q4Do=L-6)V;zW zZ56&8U7A@WyhC~{$gAa#luz7cYMr*{w7rL_?Y*jrC8Ai?XUu1Q1aCS@gQWV;k_1Wr zYmoxR;A|y8O3#h{gMpX?R4#vIEeDeHQO*E(r>S)!!HI;2DiU7Tglmu?P4uOH!L-^7 zg+c?h&SCQH1)7He-ABLnsf>yu^W3^ z>wURJ3FV7RBOjT|$ZRO)@-vo! zOit-J*B}1Nw}J8Nm5iQ5CkG3TDrf6^+x&+4HDshW><|d7llOyOvn?DF41WgwAWga0 zDx_Aj~`l8%hpaA{W`R6tdeqDHf!(BfwOJDoSu*x_Nb=}oGNIkh&Wr|Hxm1kt z#^DTNB2B<`aTPvbg2^;#f9V;UK}&yUZ218$cdNLVp$LCTk9k5lSRf7{SpbjD=W@#^ zpLxuHik80dINd06Uw>`EailfCMT-5|x4`qexFVWB@xAr2@+rNM*0jyRaPSfF8ya1i zkIrRIdsY5i<{eM$R_cvfKhl1t9*9q=Qv`|f$gez1?DpNHHH}7BNcECg09Ds2^UY{y z^y2l)(W`&at~9Qp>rACw2tsVEb}Lx>-UN7x#{qgvBlS@_B^r8QYH-D*)FkCe7i3#K zA-{IpC+I1ylY24I=EAqZ#_4wMwxSFUVAq?$0NUY6gPC-znlPq*7O=r}eoz3FJBoz2 zYNBp`2q_H?AopgcF`Ko=!MW;nDEP})eRgz?rv!ibTG@IEo_zUg<2;<}qrrJNZLOXA zaB&C?cSrM-jKyCdjM+@;YD^9e7-25wXfA5>7qqf^B5fg<^Pl>W{!?Fv39J6%{9c^j zi}QPF>-SEw`Jk(=0Bqz|FKz9P&33MmWonhG-mhS{O z+o{U}AOOMP40)N;awlAtYoY;?=_02QTUva06W zgS6rZm*BHJc_E6#B4!|n}7-Bz1;Pxw!j60z0Kj^({IUG-$YUR z@l_7S!Eo>%t6PR}><#v|wnsu6%5C~i+g}f*owuSQ*(!Wb6d9`^Yatm-2)U42r#YH7 zp4Bf}H9>Xg)>wvOHajoB2L`8J)a8HCNJalCB7z6?fT{{D+2_?*1y~h2{ZaU;JXRZ+ zRV20!ZOK5~K>$KkKE+$gAO^t{UnBB3lW;gT@7TO!^F=nlTbEoVWj$vo44{X4VDp8R zY~8X}n_$b=ABp=1slS!P7s8e7L7cxB67y-!X9D5t!cZSr& znU}^eVH`ofKOf6`VO4)t3!y}N`glFjs&=+JhpM`xyL+oH@|;{|3Ym7>+`4kz-sYuH zaviUG>VAH}EzfL3OPD}HQUYo+gs)&sg7o{_v)lzcb9cv_tGRQiayDe=YVPii831Ry zDWF*QSYl0K#AL40AvCzNz0*N-$RL= z*ibIw6i;a&bxCqaYA)mHh#f>pumG{xT{kmCKq}dO%|s8FU=;WazzC6FcxF$&B$wo~ zsFbzF5Eqbbb69`28sFd`0Mi&T24E;SW`rR}V1m#k5e(4>l%$7m-V9Fei$gD0ZUQiDD;;odMYykXL`kOfQ<^d7Yy`EX7V>N!7LV z2b6Z>NkAdr-RbTdsJi?Cu7T;;EbPacsKhxCf&eoP=%nHz5RCvPUJ#3o05Fjb#L}mD z98mAdc@M7Hd$7?mrWdExWNmG4jJkRbI~T@B0gjyuqr=G#Cp#C$3PiTs6cX%wwcDiU z4Yx^i$N7KRMaX5hsn46QleR`y8G%bIQ(4ChahBbn*4IV>r={zqEDpl}E4`uZ%~G3# zZFhatT_621*GJvG`;)ELFYBUeF+AP({rxbE=yeCzr(AW*+p1E7Ek7H9>P4G$~-trupJ2HOaZg@sTcYNpdBk>h1`-Q70o&{`t)e@flJ#g4NC!q$C?pS7Ct7 zXdHj|V2l7JUW6b+zG~;;UiNL&x$iQyqkD82IitFKh59bf@r!#!?d}~4!BZ8jzuMEQ zT|EECXC^9#^LOW(&R%n$V))-*gulJHSr=JLVar2EJXF?sECIf%y=HvB0+v_w^$F$E z5mzDkMij4U@#H^u0mCawx5Abo$0Al<=U2YVgtb+FgL-mb8Bt1bwm0%NBN z<8;Nny85cXxBP5p6|}3V>J#o}11;j+My#7qqM;-cBNd=kd%Z`AYgPhV*NAd82?oq{ zDAu9aJ56mFy*fPT@Swwk4i7p!*cA_M*M;pBfMpdghxRTGskyTR06XEnzTFineHDKi z&|Z^s!t>0Qm_WD0s5o8#9znvOCuSQQAN7I()BXx=%R&iGR1h>*|B+(0`(Vqv2iVO4 zCkLDyaB{%uAp)mST{z%O_FvqR_pnP`;8GL)z^K}jWaVRifTzcVOE=MSp_f^^ufUhD z;{``6pfWwIzQI{GTXp`VVkBY+OL2c&LSakzHZ;TN#Z17oG3B!Y?9$hXXQG3|94EL0 z;wWM&YM(L$UJ}(43^u@pkox{v~mhO z7zBwGwm5_W{cq;CEM2iv$H{GPp)D_xcA6~YGp zb|CV;%yHRXeHSgj_dOuQeOR|;yS1|bI|aunI8MQF z3QkW7&Td`IbpfCw1bH`aZdJ8TrAbwfZSdu5<$b;}-Z-2=Ox}dlo7sQsG-jbr>Wn12 zKRqUyh4#_vG$o$=CrvmYG>#h>1c+PeDd}aq?Ealn917Zoa&(b53w4r&LV=hB)Vl(H z9Lb=X3FKEVF~JZdM6oTu7`77FKbEd)bseqn>Cwa)Vv>qU zn$>9}4+`kSfcw9&1XTk*gFJEGzrlRwNAQLK8UYp}!XK&mox6VoQr2LmfVA!?47;l= z^i@NI|96O=suXHnIj63^8pHhZ^_ghyB0F`oV4J$<=2UfsX1nmrY=l;gy$p-i&_-18I7$Go;gY3SOKNKx3zzq%pKqv?(nWE^Dz%WEG z0y8AKt%R zVYC585Q#WWS#f+{S#F^1VuGF@30fN+-_?|qx z9u9t&{uX~n+TB7wZh2-_?5nN%Vv=Q}VHIg!U&_(DDi5|Bf~Bt#DZQsK=>;FE>ex=H zbJp$(_d@!Ppk5z7eYq=DIfnXrZhfrfLPt63y1UWg;;-LHjQ(&U4&4W5!LlQjyBp!0 zrkvB1bDDBaQ$3;iQA4QvGc>2yNTrzU1nJEN?oxmHBa^P);Co@P_9>8Z)T97jKvwbT zuVJ99Iy$J$B%vlA(!)Gc3;OB@yskwV=b3 ziq2H|tQZ(;!jM1IF|lfo=QY(@j$NQ)HE8x$cQ zj2C}^5_CymKt&^%&vM=C8F{QWt-DO^eZPS1(k3}9>9C~3k`7CD#gaP>(f`kHV7N-^ zB%}VCGssunx$PldqcMQqAZLD3+FOlHnkr-ZXGT*|R6*1=rr)d$MZY}Dd~@J@i8U*- zcNVjHI#_wn9C;?g^m?@)ifL-`KnKSY%Oq9LBTK#42FRL`paSd8Bl z&-WaIJvaO+G~bNm8)AW0;rL$tLfS>@Tn^_QV0VDs0rvY0*c}9R5ZFOr2Z0|V1m10k zm@fd>(4j+z4jnpti0JTTO}KG|^dOH}YhajFt;2-c6*eo_gyOPN4VRs> zLapvP=SUT#RfD&S8H$jMP(>&Q3&a5=3*gcD91)%by-IWYZ}fzSex8qC!^h9PvJq$J z3*zYtd*257@~RM12WWj?c;=E03r zm&#W$xBNV}pt5@AtprEK$Lz+L^Gm7C6zipCL$3Ap>N157O*Xu$iBWqB7v6ttKM1Ix z_ym&nwu4d&mezx(;7M{=RxdD0jaSQ!%{GFfir{*A@laLbDp`@9m)w_QlsmfFUe`o3 zRVyzEQ~Wk2etSe#(T4qodv-X3grFc_fB6Q?74OCNRy_>24W&Jz@+*~%5_QFFpq#Ed z*c<4GaPyEalo_zXB9XUO98!NW!OA#ZM6?HaY69A-r1{aet=-L7QJl@T_07-IwQlaC zb!;U6eKW}+xfbEz*cUG+*u-d=-N9H1ZTs(JvZz{UtA`uC$AWEpt0sT8XazSvScs*5 zLHiJJNn0zNOZ6rE5>nPB1dX9K$7p+~0`Yzw)j09(#J3aQPJG`F@x5IWQB}&JLmC8P zh@IrMu57P~df4AM#Qsw0s~c`OF3>HtIx8s9?9@&{x1Pun@!9hw_Mb{NkZh~FSYQunVA z;%MWNT+9$)A@amd@srd8GT+WvMzKLMoMjS_M>ND|5sjxaK*@7&1~HMzi{%06Bo?d= z#LT&b-92jWaFog>ZAfgtS{+EgY^V983QZA~_Q9`zlsd8sq<(1dbf+dHoaB!0P)BI` z4%xy|`_Rrw!=Hab&f1EYcc=!<{l8tPCzEDA3ztsuz+mcGTeaY?{)@Og#^pdn`)pC%LO z!XdDt+yly^M}~6N8R$6hV9b#8{n4!?A?BC_hN-B;1U!Es6u_9%Ipo-rv?lW;XAo2J ztD;zJeKLKTj2wvVFW&{2ZNRb z42RMd>TpqFQUgy)XlOaONn3BQ*%j@9U2u;%inSZ?oDJ+J+Q6z9YFYT+b>VzR+0AZE zR28|+PB81Jb%~l4>_z6$Zp&0eTa6jCS7s-g+LeD6-ku+DA%no4(Z0+IFQz-SOU~{cX^y8#l&xvbj5x z`_!!};Lh0zJ4&NUh1+1MWraKc@(wB7soP4fSHW^}{#=$@^Bj2*;_o4wRbT#IZKDnc z^1hI~0BBrU&oPm7(Y;4_I^!ABK+#msY(;+~;)|Z+DS=A1d>dTIRk7X3HGY(>BKtt! z5;pZixKwT}I2KpM;?z>IVOGid>-Gul`?0>1Uo{;4K(WH_6`QH&umC2z==l9|ySBxQ zuC!mJH|pW>bAIXYt&lKOBzC>bTR8#ghP2u9OPNk*Dt)Z(g`Wy5iMzFM>s;B zYIUovQew8)8hB^@c2mFa@rEC5HeI>bD%-x_(JMKt-^TL$EEIJ&WYBY8H=)hH;{`|3 zk*wgWoOd)^!YwkY8qi0sgVqcrH*kMDFSCcrP#SH+RiC<@Vab_zEKEGDc&W3qI6I58 zvphOGOTUL`LQvbuo)W+6tWq`kN8TAP&MJIeAnuM*epeCfc2jH(jVTUi$h$fZ5%J-; zt0AnislIWo`tvDxGNv@JMY4I4szI&#ULA34Y0M7NI!Nmvt%I}<(mF`%Ankw8fwVt` zqAK{RV|4$Fz}y@d*rqEkn&?g$`3Ul^yo!X#68U-yT^bq8nAbm z{_?f@eAy1LE)5k?X)x@HWA(_KcQulB{2JR{(cItJ1n6vlt!#il`Wk<|133=lIFNI1 zLC%AX3N+enil~=_Nr}gEyc*6?O{~q6&h|oTj+%AcODzu9InlY(PIubr;EjVf4&K}g zc;lSt*5^d$qBOWD4c5T?Wlikaa}GJ$_dFq}e?#p9T^H)NKS#g7;W-jj+l9a`^t+}2 z*yYhR`xzFgQY|u>p(1~b#{u@h6(I zrhh1`6k7{sFHr)E&5XkloAHS3jILfzM=^-L=G?Qb>2Xq2p5Xj%-7zZ2^07VVOB{TM^ zrwLrEY3h$tmcGE++;Fyb`*g!8f65X;l|?KpCZfL(a`DkmbGpsOv+`!WFA(w(hXNeE zt_cOGHfRuhzyyCqZ($tpuFNjiMgzCokU4_hgw&hWfW$9fpUGC1^SoT2%}3R;Ob1q1 z9F`3{%#)QcJSdZ;k>}_(6l)0R*E0DS^}INeS)2yIrisOAQxSgA3^fMYWC#vHtpPM^(cR#wEEVS<5gC1B_JTNwYdPrsC?q zFc88>Kofr^Ds6y^8M-7%QOsnnP1TAID0$9l_*@HzH18%R$`%0y&U%i?B~fknmsm3Y zy=`5(HL{imR2S6b9d9E#H-8&vV1K|MM*0Zs9b_kXj`?8kwfylGp+gvEFHa*h$MHNl zFv||!PW7OwPVNqmj|Qb|1LJY%qv>@t!aE*i=!TQ62Oob}>ytAz>bB=m#<)9F)$?b= zU(E?^+mrpdSF019cb~NwHf^z&pr(XW|RLR!r-VGTA^PoqGEY zX-9H;4j_L+ZxK3BbcrXQu2J-caXgoKoQ)R}sh%PN1HLdHUEpN$&(I_$Ny`_M!$6H< zu&KNqkQa+KFCwT|rCSpAOX7_{nyDNB*K+j3!BMR8Z4dT#H`D*A1vG=HOU*~cA_{c_ z>dChPTbJLSV1fpFTic`I;B8EF2EdZebJ_28n~<``4C3Zi!~IHf)fbCgfWgq?MW7Pawkl*xh`p)cUAs z+MC)DC%h2AB!Fj0u)DRaHepYiKbw zISru0wn=8H?Jh{wnl`7IMJ=Rtx2eL?wq})D)V7U8KWbagP^CJa6Xf@gW5$jd_r{F1 zk*MV^e%MU>fjM35Y}MpZQb$7ajL4VHQ5}DME^WZ`!5cizKHS&L;O%TMOa z9__r$jON?BUld1ZbBLEC(R9AxGn9Ci-OMOM>XeP?(>gFl{01R)e8z96KL3+tq@&s; zx%hPSX%C#wXdL)}&oBcVUL}Wj;0i4mz=UxG{r|tW(>CYp|1*94n@(BWm-&fbW{H14 zq``EWd?NG3Y>s#M=GOLTcOcUX`aK>myhpIdLnFhidjJC{e+)L&8FhnOXDjtbH{1H= zX90=W0iR@g+SOX&!s0`NBBPpwI7(#V$cqEWF_{X<9CW-SRBEOUl2qIa8sm)%dWDF( zP`n(66uWA=9+Ypp0|==Y*AkcaGJSuh+dI029tU1l1~65KPC)Wy0OTdF&y7oRAy9|* z1d4?ifMjtqLlH_He=zK01jC5i*{Tp-6lY;wHGc&_+5k?3^F#%9CK;!95 z*7)NCxDnh0n4Oew_m?+de4Jko&bJ+THyvpzHTu>>c>K^i-ZLIR1#Z1 zisaH+vK-_Li7$UV$#0 zkuR)vQc8{#)QF=9FvOYILg_+(N$DXz@E`$Wq)-H>fZ@47BZk9qRtpp0loP4nelIgo7 zS%+ga$1y{Zmy4Vz{ z$mzB%-0I6pPT9M@vW$&?750o$-k-Hp`x-juedoOIocHh2l6X8m+Rl03EsQ>$_glK} zC-Su2@mk8$y7-*C8w2jffV(l^ZVWgT`cA3P?#6(-G2m_txElkG8Q(c(>~0J+xark` zqKD?l_o60gwltz1A^CN$v5%rd8U&D|2nGi%lbXHEv$t#9^Q^R zr@3xCyA=!9>SRKHv~Ex!>LEzn+0&0bd#c*tr3tMmWEJ8Gr^f^Ewo9sQou8#OqV9}J zABgPRt;w*fS*b^Tqyb?^S(mlYCe4N5aSGpljOWFab7fhFg&dhc4}JS?A>uNU`g8s) z4Ad^?T$vuoIhu#cFUglL@*a>%Kn#JvbE#)mgghK#d6h|jy4xigF{E&llc;%nk22`a zB}8ZvHo4WbK3Um=pu7*coSfXWmzxG-D$Qg5on;1r<);x3L@>RqNs20Yrqpa#5=>?b zHrKq%0_iVC$;KJH(bhm2WM7G>B?8Fox-r1MOsv{k5*0>fsWs(@GNlkAWho?vu0>Je zHmxiUU=q=Pxx1(R5N-oMSb-dDS^fecL7S= zQTg(!DYxG{#H%m5TgjHB_G)?kp0x=gl62XhLSqcVB0@;oziD7gSfRcj^b1q>8dQQl zb=m!~Y9tOrxA1#ziahbGeY}bL7-gcJG372&wiMEKXs9B0~}BEy*^oX2Gu>p z1>#_g5E1H+AA86jrnd<7T}gRAHoHkFt6!2a^5|Ts0oM=*a2%jVb#bqOkvFaH$|82x zSEP4;ieQ{7S9}@4wvE5NO3Han&ZA>)FE*Q!BECcXqq^z5is`1kdhLhzg z^vcVMRfrl!CM+#{jRRKXU-9l*sw4etUu^oK7ay zFZUTk^Kr1KetU){F$${RUBIx0oZsU4-!bIXFHa-vp%cvbCmOOs5jDnlkX^ueh{-g6 z^VZL|aR>wK(VF&A#4xOxicb+F(;BJ|0~i+xN`@N6tY$bLX>^08wH;o>(YS`t_lpok zeuS^<=$TQE29Vdh{xmx$FwDJcn~|)z=xyA&>NZ7NEMK_`+R$FRRBT33v-n$7&2PsR z74vJiO~vARXj9i*+b!yq*Jz8%MXuC;qH2MIw5VBNb}ed_c5;il`OVm-VvZrTs90cg zZE99A;1>1sGNDDqoN#MV&lEIms+ml?O+Axkck|uNVT_7vQMC}khRjOjVO;96vFPjjArp0AKBM_yv`ZM&` zf5Ej`Le}E~dmqd=&Nb=59;@UzOXcd!y|(zs2RG`&-i?#-yDA&En^IVmSnUP&t`P5T zDywYmo=8Vc?T-|X*#xa39}~iVs|BQrhU(;_laEe5I{E12V?jRdH04z|!Hlnx-zlqa zpGo1%*OJH95=oZz(&*q@Xturh%8h2p8M#4|c|M-_yD~s009~VKp>L63V#Y&uxeR_d z11hbL3IWr_>n(G8vkwwm8q@>hIWL-W9*CWjL~`!Vb&?k9_|7w3-~;4;I{86ivq-#M z^4j_GHNB=_!IaW~)J<$DNom)K9T~&4yn2wME1>j>fid*1q?@RjYc7rOeS`T7Krj~* zB?Hk@KqGneAmL_1z&H&<@iLe5B~5YA6FbX&Gt1-grT~O3j~BZIH)$WCqqB9|xxlV8 zX=Rn-KIlZ%vMjsIQjDV5Y?1{v@Ih{c)?=?zL%2kE#1_El~er$9Ib;sGlVFPq|M zoKSidhsQ@9*^#cj+I6zl>`C|9WPD$lHDx2SxMP-56d@jAbgg55FdZMI0WWka9)6E#cWX9_l%BX#_MLf1wYI+^fOpvj)3)Z$>Mme8D^eN z6V`?CIKUpbLW^n+YH-#GjR2wKIrKal8|n=MPo#Fj@N}p!Ap?kePaW5FT-R~kAH#KD zH$^h|0HZ6!lMBIro%n68iPbo5uBoMbHdnfV!{*Ah=dZ=_S#Z`oWy)q9hmv)^VO~UU zq)q08N@I-<4^%f1?TcXi`knRqg?C1y^O zv;+`iGNF-5kO1JA##|dZWr*kXGHJ*5?Ac!RdMQn5Z7~~0$TzolN4q2OTnvRW7|6dd z@=#^cwyx1$viRM5TbrY8nbAN-5SPU2c{vO)BHTPPPNJKe&raYN1!`3197bH74<o``h_B-@c8>sZ7DG+=g8wUs_6a%GX8t$i*H*XBYSDXL)}xJH`wLA~H6Uy2r%6%05}l6&E0pP8!{Dh|UYj4}i=8#4KXL+~McBXw zJ-@wj?=<=!ti$UvvTD zWc6U7GS!f&%P!#1<#H$ay0u^7E#FYoYKB!srF9JUUJK?fM@J`vy;tfN@_PlON-}Lkl@!Bo2b_EiNSFMYB08HsUp%*7b%3%zud1 z$h7aIEu>lV=Ni>A;e3gIN#AXan9tZHh1HLR(g9N_6O;g;yK(0>EKG#l>gAO>q$d)>@)4QQ87y1n*lgKlMwl6YeI-o* zOQyh2OXL$ON%rZuqT`B7b?#)1Rp{8pE2|kirHr4)<2hywQzA9p;nvsT;0UuY=0faC zKz>ML!Uuah+ufDK>K3i6>O~qIaxSp?mrVgZBwKn5=B$Onl_AoM4!}m+8 zyfm9tB`oGsaQsJwj9)c{8<88k(t>TzEJgJd?|LT9*s(}avgwXzQl=wg)Z?*bi;|j( z^QXK!ljD1i?^)f|tlg028yoMXPd6m*CG?p_SNSI&(M|cG*uD`B_LH!G4f&;`${)@k znWDTq&nZIDu|L=wY;7NnexvmByMJ!~`RzadzDDo=hllTW_gVD&e;s(AZ{HuhJ>P!M z-q3d!x6y}_>)-x|PX@z*3`!>!c5RUJ&zSi1=9HfEG~1Fs3zKdS(s5<9GkWp*<>=LD z_f@U}jJW)I$)SBdsicH|Hg5tLGVyhkGg3QWq?)EIv-lMz+&C#}cN9@P5;Eu1XtYzF z+G5+r;%Q5!UYf1lhV%-nNaAHK0h>8*S{W_tXG_tlV#g_~*msXEWAN_lrl3KZKN_cj zhI`p6=%%v8Hh{ZDYz4kdO2UIA#%OPEcG*E8O^zobo1bU1*b4<@=l=k^Z5m)Vsv&0TXUy}+~l%AbWM3ZN*=&4+CNvZHZ(Z}zHFoYiFi)6<1 zV?}#vD3oG9_bTQ874Om^x6KFtqg+1PI!l!1s_em9J991CZ|^ct_es{|NMWqBAL4sq zKNUU1PcMf8cM6z)JBIxs2<_!&V}LOsmD0_G2y#AHK6Ou*R)YP%$3p5 zcq*F~>xi;)Lu~`B4EoH&*)V&Yr0q$uQ*v1QNKunoA8WfIxYNh|K*!uyJ5A28Mfo_{ zd}lR>`$3Re4fIj6H2*A$PtTA?uaUq6#WyF$MUv!M{(6ajdb*;&GBT_i?F9b?vqg#dVK7}ZQj)wtdS(@&pu0ML)l4olT|kTS-T;MEu;$ME2Zr#r^T9=CzM`|p?8%h;s|*GR7fvJPh0QU zY=~AKv1)#-isrtBO^w{-T34u;2)pPcas}8FRV&2milDjFtej43zI6M#$r7@zSz597 zHS;U_(RsVR+*uljE;-{`=}vpr$WOWNn05bu1MWQL#%haf3<{UueT>p$M|c0xAr^Q4 z@#nMA-KBw+bl|Qapo;kJytL3#8-@zUc*8W>)L7@olv>1rub`!xyQt#3Eb-NvrZ+?un(AOl-G{`9yA&_kXaxpPt z;%NrX5SLk$67wE&*@_(_w7UUc7hApX(#BeMg0J=YtMY_Ze=FBi738UvDJyBj+H$n8 zD|=$u>O-?~yjmK~Y4te!9U|;Mt1xGO)Z80cE%5$N2)SPlwr`KvD?{xU%p0i$U>o3A z89ydC;3zVzCQO}C!5~OQ2#gTG#0z2{`H%Hbr@ZX!WX0y1bb5#GUFrarI>4n4aH#{T zZWy`L0WNjGPk_v?n_>FQ)k*-m;0qB;08*UG9 z^VBzBT9c%lX+u2FM|MP&QGZh(2|mjf#6v#dv=u_F!UW~vmOfZz5exh(*U`XO_Igj= z>vjKXvnl+Oo})id#Hw!hwpseR4f~|&FvPhJr5mu_7P@%D&Zz02^Y+L_xFl72fx_HI z(VOF1zk{Y8$Z^=Gwa=*<_NqpI%~~ld#L4XXD3#a zR$tM*cwc7(<;#V1+GT$}#pWn1&Kxod^3mUt%hFH`<`)K-DDzlNM2;7>@cYe{f7#TQ zduMZ!kmTXg8L_F4dc23GlLWWTft}LSI-9j7zokakoXc2!n}>Z9_|fhiBEd(A3Rl0G1C{LrI>e~~2=w3yk z35|&lC;{FKVluoWqK7$u;xp=l8yqATf&nCIb^(J6<@Bk6Z_?HcWaJmF+S3FPT1%0r z2}7}`BP;};E{7QiD7`{Hh(kp-o+Kot-GC`%&m$B@*h`wCnL3)nOt&d=dmB0NEvBvF9PiCUFofQbN;- z9)g=0_GYq@_+lV`z*h)B;L~^tMZOb`IdXDCwN32_uL^#MiqPZ*6O5B=&R#xaow z)8Qo{lz3>UDzG6y+}n8S6u32mmPVwfx%+aBtWtL8+Y(!UMz9LRkl3LRFceIlt1@G; zC_LSU2E&5krmby&W3G5)G)F!dF8~CojROJ!B|Pv%ZG;4^%cUI$9DCyJ^ALK1nNHQ zGlO#ehT)*{#Bq~a9xQ*8kn#hYo_X@)yt&0(q1nyh;7p3LY69Lt_Pfl=@cO&_aY&hL z;Dh48{e6eDBRM?>kfFB-9VoiQlTX(udc!!LOWtd|P&a82fzoX#dvt-r^Z;`blcZ%C zD@ct(#aVhI#S^CFB7#aOa7)5|NxTubE>(Awyd4Y&M{#nfxVwLu{!cBS8H}cSFMm`l zqEI)Wo_s5mg!0=H8Q@}Tdo&!pjftljNv@FOUsE~hp8AKWf3Ee@YyJ3IKj*war@VhC z)yngDEMQv7d)&fs3!|_wlz&6ZA-9cE6Sp~}*MwB$d?_=#pFo89v2D}#qoQeV zYDb*9VBEqWqgQ`lH*(d2tspmBs1+|yEJOKJMZ_yQt1!!X;kM;0Z&6>{evoTh3a{-* zw3!sm&f9!Q$==(V4Gjk0p{f=XHgjW2jaE!C{<-D`o>F@ctlu5Cx61#RnU ziB#{lxH5U!Vm)P|)$;THZk-`55!9U~zG{G(z{{9mX;XhyRW!7QRz`Y51L&}Al9_6| z3sSYFosmDUg|zNARajc5g{x4D+I!R~{itm{LzP-RhO1-7jv4pKjJ1)dj5p*p1Q};(2*MpOrZkYz`PuY@(yKUJdg_=` z(ci(NIWT|oE|Z|J;S4gPB%t()fid*1KpX;2K_Hl-3Qm_M$WbS1DpXx|PHDub!!j+t zhj6GayoyTtAn#^|B9xqECZ|W2Iw~964^8bl6|=&OLt`Hjx61gWgoXS^CEnGUcQ@Kn_E2uliB%6u~4dWuOu>} zBK3cY@yhDRx9_t?EpxjcZm5Ds$Wt~D#qfGt%YCu3;o!Z#4%Q|9===04*>XLlv)RP> z5)V@2$}g362M)=qTKz8Heb(`Inxd4e%aX<&){d%PzLhnEpnDdW_tUekEEK?eg+BGb z(x@#%Ta;)@bUGEE9C8hom6xgxY$Wv?BNr3Fx}4W_L1&eOdURSjWx~)5Xba9tny=aOqtv=y9#496|v=BtPiFHV!u2GkAg!L_g zvhlW(KM6JFwYSujUj|xQmT+tXoawqG4g!El=G~u!Qx(l%^KODNL8i|CqQHhB3Fm)s zAszq62tdz^Bgm0xS7z@Jjk6($8LEaIfKxCCJMO7Wgt zxTm#;duksa(#3eHZNkNPvLoEZczQf`p_ff53W~WYS3u)wBWt$`olvihO(-R-Z#-^} zxD_JLD4Jm6vorG zF%(^+Bh1Eel*A)yiGH%K+sch1RUPUlqwG*sPhW?cV1$1HM0m7F?gXX{aX1c8(%dDxZ+Bnv#)xhM0E_8l)@N@zN|j&^CxM;k!HiMGDeg_s2-H zv9yR1lu*$%M$m@N{h{yM3<2gUe+dII;W)@;4S`XFuMsl>{y^e`DN-SCBzMj7V0n~G zu#bp`fR92x+i-sYg z^l=e=exCZZQx~;$LA*nO%nqR6Ui~sEFHygqf+yIhmn91P^egblIu`MOdTfnE0y~&LXdw^(w}+BA+kG`U`;nroZIxV zh5aX&u% zg(b{}2^Qm}FOfe4a|B76!&Pt`N`B!0U86|s#47-A-~vn{ItQ3Lm%E=~CjJ-)Wfxfe z&|uT4Y7&10_k4%%)`ewS5bpzwI^zjlcPX4`+|#;|J~nhlPxEe0x-4&Hi541m@OS~( zf_TW^xFo+bZCgUOJVG*lku(=NDDhyS#G~UJuj{VvE{Lbn_IKeMvStO>cnY38OW!Y3 zK4hVOPIC;B>Y0Y>&pi6};z${a)v35XC6E&%@)2!GYwC$*;slvMJPc7)_PBZdd-CON+@?!Ac`v zMA8v`b93vt{O@9Ob5H*FpTThOMkS}Mewi9#%Bd{>_^=;_0Tx@T_5J?bJax-zm`rBN zU_^f^)0AMfP|S%BIeO0V990>Ux>~GCx57BIjv=JJl`VzY8fiBT*}Ci}m!Yv19$N&4 z(dK5|MKQrV;_)1FxoNvG^Q?Xy5PYVz6Itd1n=S!_MuUBT!aRM=z|id4g9MBbhy@bj z6fpS;KtRwX7Ntho=y{TnER}^<3>tfa+T}l@C@~kuVT3`ILnwimBM*cPQoI^ZE?qaqZhA!d z`0tx3)vIlrp0Z?sNrHkU97=%ZPsvZ{|~c80yDPB9`AztYwVXUbG_qwwz+Kvy1!a_;e^L zr_T3lHzwUVE}N4v$Eq^1+2XaUP!ykSF1G>y_|N$7+BTmOUL zl;?g4lQv~gBHx0u!qZa%S*gxntPjdl;qyCY@Ha^8C;=N}D2!PS$Q&al$8Ve)J#icy zUO|&!@*5@4aQTmY!F_*KhR+2RAB;DD#gAy^CnCTYIZ-YXX->XUz)fl*x+lCO!Tj5# zxiYUNc%ad5is__k_uzS*0kMmjy!XNG2Yik?wKxGm-_&lW-m7Bn^3t_$hX2i1e+^{-N@H z&^vDZ&^u}_9&3?jDpC zN=mFnozy65C={4)n<}BR@I8_c3gpJQgYZt)yNSVTOR9fuL(>xyk)NE)A5O9)sXM8( zK#t)#Tg!5eUbYMj1vx)#*KhDfQv`1Crak`o6>q0BXs&KzZ}4WX_La@O%ebbqV5Lli zl{PhBc8j*;?9fX*H(mGJ`|xs&Jf8wKr}t(0RX$oXpPX0(+sonk#bUty=c$h!7svM@ ztb;;mm6691d zUZ3P~0ZnyK5HRI2E-0Gu8kc6+CHvgVS)x@#kdyvH(b?h2C^Xn7?%)`^cO;KTgEK*X z5pa#?)_d|x%8%!UDqR%r9%kDlHLgF|@phR+Zzq2RB5#*@O&>MrP==|uw@TpNOguN_ z1u9(#u~vk^%G8@AyjFo~MaX6QD>up7t=OaiuJKp>j^FTv{58L$#Q9)L+g{1B;Jh_M zD&5iy8be>N0RX3!W4H~U5V^+q7ql#Xyp3_- ztpfPN@3fl(MeVtTEocIZhGyiIbkf<cFMY5SWPYd*PM&5i^?IufCty&q$ty_O%D11LjEav=!s=g`v_A>8*&6cY1gMHMs zBa!+_fd7<-Wz4=mtJML9+d zndkk3J?g(wF#XZsqBXTTD+Jmtx4J?_bO~VFqZ2HsykM_^gZg5+9EsK0Wo4K}x(t8H z;sy+%5unu^Y)1~u!A8~w`~E4^GQuK^-3op<)O+vc-=jpoZ_Nj%txDA!PxFJ-eU!9I zVa-P*o!Q1-Yc#nnUkTrvuvLiJ91^rBWs#p)h;M{O>#CywGlwSR*feIx<%9CN$+!36 zlqDDyL3em=(bgWOV7>RV&x$mqy?_3YUdg`y7XSeN|8Vi-@I7n= E01=PQZ2$lO diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 3a260231aa419bcdf92508a9fac77f681d025741..9f2e3fafc4f3dedbb6ca4a990c773643b9056395 100644 GIT binary patch delta 12525 zcmVE{O$_kH13z6-+l34C1ry|6Qg?08 zw;)d7jnfB)O(=Sx`^VzHZ^0WVZtnXJ^#F2R+kFeZUz2N!=fK-PB^0>?S_y8z&p!iy zf-UjbHFXhPy9E41(0!WX+aCDny1&`oY^W?ZxP z6HR-@60IPkhaTX{u@GxVoA(F9k*?i;^w{g14QQRawu4-X*%NbUd8nt+M+dRT?b&~k zLA9GF#@}CS>>^V;qV5_oW*iq8kg_ZMttZK~o`xR8ke%3u$Cyd>;WMVo^$fUZWm5z! zOm4NFwstM;NLy0sct`KvE%+n*hP`?>_vLNRac#!eJB!KfyP0Lr-mRcVk^2sRI{2OA z+7FNaULdl+u>arLXxblZPfxvKsXeyI94}hSt{@|q;KU zKS9fyLE|>i2mjumwtJht`BbKVZcgmd_cZ(8HB8Zp->IOpfyzFG7oh9HNA_FRyY7ff zhvs|m+|0Hu1WD}4^gziT&3@+2_{|DJN2H%#8F~&53()ft@qgpLQFG{wXh?9g2b=*& zTWatI&hUQpUMZMHj~4j@37YkxG|>;ncWW#S2i+O$zV(;7Fo_|}_91CpS^&{3l{R_0fj6YLF6t3a6x$k)>B^f0i0ZnN&Ou54DnRwY7E38}t)*G^B^H7=9d z(V*Y&_xwI+M^o+^*!KL2Gdy{^x#VL7($S9Jt%5ZCgB%U|qhU|u?;Z=2^p1USIDZ_@ z{)PsEqkGR>jvq&GG^VqWcZ*ief9;3Aob{u z@qr>@B2(Bq0d~%i<0SJNFCa1P72!d1XT&cbFCiu$9oty;fTOcZ1krojz1{yqME>7` zHxd1qUtfx${J8=Il~8Shqru3;-Er2HjiPDMh*$M$FA>*7d#)W#dRp8=(T=9UgnQ z?5_4tV)g%Z`C)00e=O1e{`|An9A09rRDqW`8{f5m6*4jBe1-{hA3qYqHW?x?y!6mm zkA>-r=4DOQVn_Xx@u1K@`4bb>C;E>6o*k6~gWh#0a_ZP$xukadfe}zg$F!q(IE?=ht;Nrtpa_EB(UvGU}7TiwvI*_1deRwv{ zp;ivSEAuT5hdI85iy(hRAE0r&cAB{rF#>rWg};y|Tmz|R5F;XY3ThbpBt!Wt`-w&k z{=);rHW8SKYc?^F3+NI7&p`&8!*c>cyg&Z+>-oPwyubYT@ALOpzW{$k?yzf<6`MQXK^OCd zQx8!v2kbeRBWf&}E#tldd*gpRU_uJP z8xuhbIPibbvZ47F%w2mWEVjQ!3cU5qd-Nz;^}qrVf6ZVQ>GkoFxh-jS;16bjOcs_81g5SXP)1ZIY)QS%VnALv`a6II#dnxK za^?{Y9WTeV?=V^HgHz&B1WlhhCmthwO}Ga&$F4^KI^zIS{x#!FyU0S&zv?s%7pbOlZH9OmIv@Wl5NJK_!59C&?V#KH*^m?_Q(D; zIi+A`*~YC0)`Vg!JwS6zu(#y0r@YP=YmR^P{vcm($yy?4(QGouC7RL6nb7$SK1NeHa5|4&nd~FI$22oc$yx2wL8;O+0KO_xJhS!USCeAqjr7nL3w}mCp)iwrv%9W~FrH zdM-Xh9d)nLfsK@L@OOVb$Cj{N72a{q4glFl@};p`(Tx-BPH^K?Hz>9#=9SQHM`#ao z(n6D;h-?IKB~-f*TM5~X$gO{zeI>Zt5!^{m&XMFBbqux{nw<&l#-Ucmx)Rv!2<$X3 zk0$rf2BV*BEB-J9SE?TAv zhkYfu+Y#KsL4n|&uGqKqs|hp|(}+gNB9C90qAW0&q}e(qm|<}%+mnCPBFi%_vXqq2 zP_fPJqtGxfqlKyG8TOiOybRyY%U}8F3s1vf&z0ImMyGHEIYzAB+Hs7_jaa<|Ym%kI z(nnQHv_@_yu1AAAz&z3-_^w5uw^qP^*#eSGr>!Mf})+J+G3v**#Zx{RC;WzBBy~By*63Gm%r<`pJ^Ix# znKGu>u%Ne$Uusc}BL1oBYy}b@b5Pg&?o7DUdT(^iS#cAcFO;=e zln7j18gZekv~^J`|8-kUs%ycHfh4CwTWZK?R)4D1TS=>9rMG`#D%qq^;p@*Z7>x2V z$C!Z=3Wv=PmTlZxtt@(mRGxVcCl)29Jwve2&IdVZwQanN?+qFJXnv74_N6nA?n?{Y zNXzoPqM1#`?|)^At>>ipbVJDpWt8*c38HXvaRi}^b|-O#3LV&Z`Sa(iMEk={ zVh@TEbh5J0O%#8)m~OW!QXUF!tsp7pm3q7$^*Ag_0g6jPrwJ7$gu7CZ%6SznG(^t6 zQjyoAB9o$oql_qYZ$PSKZ!}krjhYV`>q<3Vk7`VdQkr6d&~=hXDd~<>q)x6#b2Z8B zf>M=NqbkFGQ8HCb7`jbIDIwgEnpDq9X|5zW>?;*{Jt}`PC`#A5M6|T8dWcNIV@M2Soj?k&Tu8jRMC_`-Odhd3tT7>l z)PH6_c=+^$=aoAMx%>R@QQ4F;ui3V!RM4IB!*YLfnKJk#rc}J_Wzhey+_hgKD7=1p z!nMn$OXTuV=?s-}hJSOXRd3`74qs5JC4dixC!=3&`_IpRKm7gczy5iLe)&J@d>+5| z+^_%mVEp;;%ZE>w!(Y6Q_UEey_siMcum4BqjT6Op^uXC44*L#rvSIuz>X>q#V7MT* zN3nm=Y&K9xF%JcO0e%bK{3Lm+C>O4JyDsxF5J)EO9LlX=EmsEaS5`_!@{7nC^Z{M}wgmk8wKauR%3U7*2H_R){-|T<) z`-46H&sD#F#Q*u1*35s{Smsann-gc~>0fSN=k1Eh;H(0{UW~KQpN5(a$yZGChmC5j6!j>2g%+ zQ<~MRXQSX)!Lfp41;+}Gw+_d$J;*OP5a3z9;pAmiU-L?q43Ig)Y#Xo=f$B2n@ zT=p;Vf`kc!@4egdFsmTmVN^Bbb|YJgOZuA)6_!3jpNlp7%qAguAHbM$b*9!Q$ZmP^w)1Tn}aiG!wUk%$bHwYxE>9A8ZV9| zJG8sz%+>E|ozo9|R;wUkax^t6y^$Exif=S4bHP7k?aCJ7%T%%((O0fyHIfq6-fAWU zr^W{sqSff+?Vc~7T~(@h$yQ>TlT{OIf1^Rpjv1jNetAd)t;UrwWrR8@hbbf6O`=kU zSydSGwWl_!!k9aUOv9XwN1c?2^Uj(C&c6ghwOo^}E6 zc`+t&jVGhLzk}FCNY&g(3yVmcn7vgap)=)mptY2xm!DhghL>9?E}`Mw zuyQ0RjdGh1H(eB)Egq8uEzc zg$vTjf&t31m$=AP3mjBAv%!xWl(yI~f{^L&h5`ts{7XU!Rom0e*HaXY%D=&#> zwWD!AlU5fnA08GK0tv^d8^0w>t={o0xn#Q8w<+guBQDAhw;OMolcg6ke+C%p{ldB` z7l^u#zAb8e(3G51^RuSp^tyt#43`@}HBnVdPzOOhF9-~Bj^!3QaoM&6-(_A2KCbX= z9KHPycyUT7cXm=2MgY$6{_zrG!smKD;OP9)IW$dVhI8E>a1LbGOOfQVpom{x{0O@m z_lOwBjJu7ZNPN_)+55g$e-@c)HoYuzNOqCStpAY|xQ+RIJl5HP-=|AEkWzyU_F^>b zpc4l#wiC*Poay?ou=v(xXZ86mOY8G-qav$9SH%#N7wBtX5mF3q+@Vw@_+EPnJ_R{v zx<1OQs)Y$Aix2GUH^Q0l^_=3L!iTxS&LyIS%h@5JZc2T|`PxiFb1 z+eQ2SOGOf$ZlDvnmT;{?EV||c9HkVuvOyu4dR8cW zt&$xIpYGNY#d%k@=ts6i`O1*@RHa$=4(`<1VwR%XKk#akxb$((E>nT6XV|01*kr2G zEPE?UCU0kHSb)FGjKql*?i>vaR(+F_;&($kLnA|y-v3!@e`1omJUap8#2&g=Xu>k) z=5=i!(GPRBk3H%6&IZ{y_Zscw=}x!PW#l>?xInalx-Jc`MpRvM{Hnd2-=7q(+JtIQbu za#MqTzu(isf8uF1o%X0^RjGSiy_C!=b6^kpIoaVCT)N(yA{n8P;v`Ar#YNbZ63?N5 z_K%@u`3c}W7a|IcI3w^=^0|*f$#Pe?lWn(M+RpT(JOR9;Xi0i>D(cT=xNAB`lSF9( zt$!%~zbE-u@PDnQ+KEYFI8m;Um{P8vEBJ6K2oAC1uT~}+Yz?s^hja7!g_`E3hQ?X>-C(SNJ%7XvE(Wvv^{h$TA*zT z>tP=ho+~_8c&_k#m+&+EAZM4JfUwVqAQw^}!hS`MpIm#zYo|7c_FS5qNBP{Qy8-;7 zo+<2C*sri(VgD{+|2UHd93+4IFlQ5*z^`-HzDtIcvw%|_%O%umVY+|J|GrP+4@j_O z!E@KP=U($PB?(vEfWN%ED*aa(f}Jr0MH*FY2UYewnAC2luC@-TydP!HD%i70&R)zs zNY3g+8+$fvW6uN$u6$iuv*D(!*-%+CWzBZjn#J^~TK(h?_so3B_VSad91j7Sleru$ ze}XL;4+?kmUmy!X4~Zh)sLig#6s66t?4%m(%BZA!p;ma5S=kA*qA*=yx{v9@!X4&a z?W$Gx>@LHMCx+t0`DSsyjoL=$*1<%9ib*EkkN9rfk~lw`t?Tf7%TR zux>jYiwHHcX#$ImvDspuSCWkl7&J9GQwD7(4O*l<6{V!>wL3QU&$t%YbRkf!0xG+` zi+204u51$n8gbx*+KbfIee{cw8ifpZOC}o_>aXZVApymO(M8JzK(8cCQ z8GYJOjhp6F2JpxB{mgc0BV~&dsOl>fxI}SsZM~rsYm61;1SuzI(@v1GfADAeVLxYI zwy%?y#uAw)7%tjiPDmsVcV@P2y#;SD0|cg*-=B(%e445peh9YeSab=i`8br}z+A5! zW~c=*;EDTyNsPI+kPAEtDeCNOzwKG#Sv(|5CQsR-f5XZJ=oT9JG|~2^UczRPqGcE`AOSP>AIm}}unF+^GcgC6 z`^^YAu5BRC1NI!u5YxuBpkM-O1IYarOgmG_^r+@*KohSwrZv+Wi4&~MT}3S%GDO!_ofLP9!_N%Nr3I3K%Mu&=^PL{RPK9BmjDray;uUz zfd=B5&R*zU6NKp!xlCWsz5fQd$Ckx$!bMC5d%$+ZY?=Xwf7h~&TfpY$7FgLXx+Xzu z0mg`T>&?5%KqB+We>a8{gZ@x&3Ko@C?EE7VT3h<|%T5UesW_cGU(YP;EswFO9Wi9< zX`H}`c66YRhT<3F)b^mIrB0jeX1OsE0slPRKah*(7@4f;U?h$$j0n|^w0VCp9O+t5 zJ9q6nY_i!>bnOhzkR`f%Nuf(WI<~Q7WC#60Py0yBXVE?>tiZU3pK{fdwiEnIRTs5c=FzEzdUW%^6ji9q|KU-D9F zMk*Vux)h=@tI|dP``2xx`3cG~*{#A~B(t?yl*nUU8gY@V!mV6A>b9EH=5S#mn1o3p z8ChkjA*%HRf2Q7$$XHFPaJGBB1j247H$mp(#@(8X;Yi)A69%02H2*!0-Zk+nc(u~E z3WIMOJFk34-E}=@C$XO^#1q;+S!=J^DcKn+^7W^0H$0vr0>=E|50Dzm3skril_6f> zdFQv#zzk)W}n9QjZ_rXf6f2|51JaCcWV&S3%lNT_zUH{Sj zYjWYQZZVGv;Cb{i^vM5EM!MddTc*+Z!<7+(!bdACZUySj{psPTH{dSyCx|U%hIhVe zgW*U!(hSJD2o0`nz(vpmY>L6xr@cksWs3Fm%))qLWvmYD3v!utZwZ$Uq)bxI6YuZ; zRJ3Rwf5Us;g}QD+to3deFOmxsGTeJz3xkITIa^ZWs(g-!DHdScfuT<)4-TVP*Xc=B z2=qx7f?%9(W8jN;FNeN>sbEPS0t51?8e;Lt_4-PUY!)|DutX=3!OjD)Kp(s~x zidSeqc%)prb7&Xnd7^;^YM$SlB8AW6bAhNx#X1!7<7B#0ppf8ZwItuyTLt+I5nCH>=kfp0|>@zxxZ!J5WJht#O~}htr&-?Lc~|vGgZC zJc#dI*}pr81T*zEx?D(EYAs9Ew~%C4fBIa;cWcE~a(Sjt`njpiY@EXl%5CGhNkZiz z-SGM9QQc${6$87Ob{cqbnZ6bIaVaik5#I0-d60L;IQ1jE;iJzGGYLJ@}ozSZG!PYdXZsM(Js+$bCN_tQUk;((F5i*s;UO7goxT}i0f0iru zs4xZl0bD2gEH+_hI>W-2(Pz_by!_7u4* zOd#b!9-HhLONdDi+%K`Q1O_D6WQKrg6W_NG?OX*f?E~H7KQ z^0nyXxG;%`=LAPZ92)Cnj7(?VaGYpIYMErSR4wBSc*T1Xbm+)*3AXeMbBKTb5qu1DYY*xTfqz%{j3kYc9CkKv>j)5K&~Dd&%+ zoRh*dqEHswE>k55$wR+Ce;L@^KgMQx&^Jk~qly?(HY+J={)$r+Eh=4cifQkb)|`Uz z&X&ZBZj`93bg?E$>=>KCWunh`_V{$!n(v8cX572*X+YC-k>?>3;E);*yuaF65 zj{t%{kn8bWGYF1t6B*!*2)$YB) z%H%QQux_Q@f^Xp7f$zd< zbYS)fPEUTIe?ah#Zsm!DA*YZ}jq-015>0tEB+42H9HpLiY_C=)LFPC6aS{9whX@~O z|0GubUzZ=22KmPl{qN5|YodA+qkf=|hBtnVEWg+sKj`M@yB06^)^$ZWzkU=Sgd%*RQWe0mU z{n5Wbj)e{Q)iEJO;VCNO%`@oHk8WnmLr*)i7hI};#l+0sy}~QxQMhvaCS7Qt>{A6N z#EA0>xt2|O+IxfIJCR-z4)=qD-Q*?qk^V$@v84XjjEh?0#wo!RL+ji^CU2fy`<*bR zBl^&_e;$Kju2bE&_CG@qTJ(<66#r{=f3(@DiM|bAc0y{su1ZL%Vr}Hw|lCJ zsH!5Ws)(v8qSE$4N4&l~J z@X%O~H66Vz_Z#c-5c;OoVn?A{xPefU?{L>qmFjxpyYXAvnw!Kdn&$=tGm%%;<=7NQ z1}Cz4K|M@dIDOIkOWR5;TjAX&0nkfPftgc$OkA3OAa ze*sM9Hn8WNt)EM}AYDhuK2zxc1V7kyG#K_vmIXRc-PfiyEA88V_AMsVQBhewJ|iHRQgkurIw&**+^A6gfXnD&Yw&+7r_00b$JrHSHRhv#HV zMFqS6ffc^yy*Y_DoMq zwp+OqoI!voI(ZPo93Bqf57aR zR8rX_jePf?eY7IgOwwtsoEf&Za9+DBk}@iYbz(7D$#x6bp62a?^aX%YXf)ga8K+P* ztrc#(|G3B~bB18cf*;E1!Ru@jU4F^EMX? zP5*#A${@>VV?RS86-+3%M~sWBM@Jko9?f_B$nPlj{5hn{D?a0Y^X(?b5*IAdr1&c? zkS(KLZ=ohT9OY+^cW;yvL%g~8+(u@PNnzL+^CNw9Fg+YiM&rpwLZw*&t~hD%YhHCZ zU&xVcS>^J^j@=9O?3#aWhgVMC#+CiI2 zAU`R)h^bDo+8Trp^XgXk*yP$y2lyRQ=^nf*V0PGgSAZSw&NC&d%|TBHr)ydxKuT z*T3m$7YLf#(YIl5#4hyuH&1obHhdXZBZlsFt)*Qpv?S)P9w$S-P-gY}q-d-G; z;tN==qVD+{bL9H&Z~AGX z-lWFn;4L-cwwq<4<}2xphmO|J{qAgS^<1ss{2(hhFQ*%7Vg2l2&@bNpc!3z8PW*zP zMO$rxjMJ%{gA`p5FA5^%Fd1*GBe+cQzm=`}I~Lce2ww3|RkcPvg};hROSL`1%1S*@gvS`(~9pEkC@R>HA#v90`_D&7g2Pt55Q z4)?~B@xh)xm`wL3^Eup`&e6O-pY+EFp;+PTvb@rM-_MNE4#)k;U)l=d9n&d(NXk3re_X7|pAb{+sP7+M zqaA6({;nVN`g4!iNGr7JQr*d_-g=NU9H~`gD9aoQ@N$#4m4(l{Ah{ z4kpv-NI#eklbOR)2hvH8ceJ5Q3$5b$VvxJX;-Xt2c|V;vuiM|FPobI(?(yR1MjpeRyy!ayI~~@ zrb9Kc-J&EHRCL?2F4gEBhQN0aHnNI&e_I)}_C zzwx;xGmVwcD47}Pd_KvPVriQ=r-Z4T(7@Kfv~v5MMmpOtQoL>yg^Kb*NZm$k3g_Z^ z0j`X{Ap6Ig*X&PXkQ%DmCYu_OkIe!*5;My@EMQVM1 zS62Jf`n+17-%7w!tBI=rW{y~5WN}qe}Rb>UJtbh_A zRapVMlojyw+lZbOA9LLy6mUMue9Gt1=#+{U@uRHJd1E zR_UOCpsHDohpV0f5G$ls@hE~=MYMe3>qah9`c(0AB-B?Th(a;duXs#DLi_8#!{MRQ zYjyfsrF3VrD@pvRAwwL#syy#QVRfzP?$n=MEwFhw(4L-dp8kIT00960;%$7x$EyMW DvO2kl delta 12525 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 DZ6~3c diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index adf31802bbc087e1fe1539af2ef93eefca86f0be..9f3a8ff89cad3d5a00fb384037a089a5cfb4d666 100644 GIT binary patch delta 2461 zcmV;O31aqwB!MKb3q~KHGv1yCFsBAs;pD zItiwPb>-cWhQP$DRNGlAE7Z17+d^$OpteU!lT8CW0*(8VivwI<2ypNdf`b%SSBpYCOMlE}9-?fW zR9%*Q7m@$>CK;UInDeN`Dw7`cS8v8@hB}176$bZ>8C*@#$_;L~7WFJ`Q27`pHfXbL z+qxZ}FshvrQejkog;5noRT$M{8P&d?Z&be^f?P;LyYb&>{i|y)!{{WBeJyN<&(s>& z?44ti)5I2b-j=m38?7+Bof70O7~YVpU-oSK0zxRbFcG16hI72!=hy@;>)u0zGUec2pgdQnx>09519aOTkC-f%2fKyc9+Nm(=~v9;9tRETp2)cZkxye@17Re zSO82+%!bJNSgtIJ4fgcJfyM(ex4p2*dJiBm0R&&!TMOtddP&FovvkV19M0D2^anH$ z)Sf(ZFAtIg$Ox$UF~p ze-l<#mUbkb-RkPSEQOJ+;Jjh&J%6m(rma-g5^d+Kl7}Hahowj?tQx|PO?o}5bQVqK zbMz=WL)D}Mqx5V5CbT_iQndzzX^^W4l18E0VTMmnA3jK(`7Wg#iKfj?2`0^XwF)}j z+5umG^mbN(X%_#lPix9vmHvlV%Ku(}S{UTN7U-WJKKQKufE|a8<+c#q-g6?>Bt3O1 zR+G8-*q)^&GO<55Q%s<{{)HH}$;6rIP7e+Bm_~^NJ#SaJosXC{>mKk;E62A6gtg&| zK$u`M-wz2#EgT98=R)AydxtgJi#1;f`9{Pxmq6c4({&MVY@!Z&@KeBD0e1!56>v8X z?!H~7%nL2PFi5^kAHy`|zv%h^~YCvN%&9 z#%l6iW422O7?d+w{`7B3;=0!?)_+?!nI(rP?k?+C_V(l7T~@@(?WL%$o1a=-^d&C( zdTTaqILWtZmyj+zPHX1Z$4H+jBI8;Y7eF_I~EXmSe2+tQZNXq-0Z9vQK zD3clZ9Fl9_85M9d`$=tg|CIGnvw8ceT_<@@!({U54NzrB^LM0hhbFGTE#A%M5q5m`e5v(qzaZLvt(F^$XN5Q2*;g{e3MT^y z%GOEMW$7CKK*8VjBl%H_m9B&L`#We1UKmzkSl^mqRrMmny0jm8&m9Mqip(gS;?N*m ze10F8#(c}j8p$_^JcchMg>{{8>!K6Nr{E8|KrYvDiZbIDA7@2rFOYFQv29lZIQczK zSN^`Tf2^FN9)4kLhr2!IVOg(SxU@l$aK${S+%guc%ZpeUYhGexpbIjyxe;ruN*#rlG}PIH<|?ICb%^bH4SAPXkZQCLJvTlnYS)nnC$s^b#oNJ=+;E8_MC{HxC#qe*Be~rCe;Of)uzkYzy*1l6DadbEFR|VJ8SUCiW%p7J zyWj8wO6BE~!E{BzHn|-Mk95Z})-fqCu?MFX>sw^2`$@9Z4U~dxb=QdgLVRxEmYb+z z5m21kwpH>`!LEUQKP*U)Qu1-ZuEQmCA3Q)8D3S{30TettjijRoezz&03&{S#e;)7< zrI^g`$P%srg%1coFhftkLxxRE4^SI0^$zEdBKCtq?*TA&H&<4JpE9sntt3>8Lu05R zO0g=w6{svT{erwU;a4gjP1Dax%PTm^+Qr)}7n6CJ{3P4iTZl4b6-!cMdm`T}RLMdl z@)kFleCwy)cv^QLTLyluH;Yy3j_;^@r6*Ri?!8_&#DS)X z%uj2IE{KV~Z@)2$p7_mQ;~&WXwkY>J$e?C&_ZauPG*#)Ah|gklTO1#%I9E&?QoBhz`nT@m6(_x9x2 bpUxdMo=BU`{pSAz009600JH>8ybl2Yt@o~i delta 2462 zcmV;P31RkuB!VQc3kc}yeIhbIbW0MndgtdwgM-hHd_rVWgpKZa1-H;;mkdGR6 zodi?Dy7KNwLtx@ns_m?m6>3|kZK1XsP}_r1lT8CW0u9HLivw z7B=9GV?xRsp~!86H(U{wUqLeG1_5~lv<3!Omj0N{JVe<# zsk$urE+YT$O)@yaG3QZ>RVF>?uilK+40Q;DD-7;iGq@9_+~9_5QP0u_m5*U!gErf? zt=sVlquMDU6-HHm7*%0Zg;70{QPq@wzES;x2y!6}?Z$tj^{=kI45O1g_O-AbK2vL8 zvv-b7P7_<$d0W=DY_!7gc1n=DV0c5We%Z6_3kad$!bF7P8P4%?pJNlata}d;%9OK* ztl3HM&J>e*AZ&yJXqqnaJY)jAZLJ3`C{yV(+g&0POxFN^f`0{vab*C(xosi?yn9+; zV*xNRF&iT5W4W>@HrUe>2O1B^-1fpI>pg(P1Q2{>Z!Ms==p`NR&(bO5ayVP7(;v`4 zP)~pJboEh}Ho_+@thun} zfi>@|<<|UvFHB7P>C(QYHO=_0fwH4)S7?qIjmTtg`g+#4;_TT+#tqDDJ6gDb4x?nY zM*~(lUqH)3WFCaHF=6cv{JN~QD@aUxNs#9yz`%~MD_^Lqz=B8@xbO=+Uv=|;eT{rAYR{yzain9n=0x@%BlA4a z{Y_X|S=y0!cB`xRvJ^(Pg7b#8_x!PDo3>I}OSGM{N*;#z9F`)nuxbcDHtF@K(pfZ_ z&(Wjk3{{g3jMB3Kn9%m5N!1zS7%G20~s49XcTfBH8iaouYc>%Xm=%#uSCcb9c6d;9V4E-PZ?_EJ>W%}*^Z`Vtp? zy)~OQ80OowOGp^{U!u~b!QO&TQe?fvR3kJ8z?hTdI!$D>B7}vuK zxGdnZF#Q59zm=5{aJj21lfBBn%y3tWsbsGpO@=%&G`DhHzd-#0^}jmQuPaJE>c2u3 zf*!i@Pq`zL6Y-~N^P&A9zUr$4Nanmpq*7hC1>CbEe-uZhIwh!G0O~1Du6jb?kJ-#a zl&zDh%hEOefr7v5NAjZRAffs6o&@k z;`95!H0E1I)=0iVcsj@!el z$)g)+&U>ITR+G;>2e=VhSN_>wf;`WUefFM4UP3;vAd2 z(dF1M+A{XZnG(@tVfIVRepWiFolXDr^x;E0XU}V$FE0zrmP-07A8j_&DRA7ea9pK0 z=gx3cREygfOhb#oa8Q%&aq8k-=X~oKp9Y?qO*&cxC>NmoHG^_pe+iWHp6!g)tQr5hCFeqt*9(na+>P`k>F zIHC3n9VH2B(+nnt9rq{+YuE|-?SeJ@2|P){w<2O>0;C9#(hNu$79{gZ7~DEL@?GV6 zoARBtueUGX^?wjdB6jDU6V)!@kz8(me~pkt*gj$V-kR+j738<8m)LIqjCO6MvU@3q z-Ea5-rSkI0V7j7Uo7|3sN4jGf>zEXn*n?Ax^)0g1{Uq7y^l?G9x@$y#AwD;7%S}|V z2q;c%+ba2}VAsID9~LA?Dfzfy*WnVn4<4Wk6iEg201BR+M$*v(zuOeh1!VtVe-C(w zQcUJ|WC_=R!UqH(n4u@&A;Tu72dE90dWUmJ5&J=*_W&5Xn=7lqPZ`*(RuU@4p)u4D zrC1f;3RISvNkLwl@GF&%rs-#;q{N;ni@4zu7!h1&8m$;cCGLlx$4`1W<#)gNlvuchFoD?7bySaQ9Ea-CDsHjM19# z-sP~Zm%jyGLgzNS@b{iy`*~BgG2XUZvNe98d9Dp}d?fjT5WN9T?pBJTe<2WD9I*FB z_=QnqR^;XPt2o>uxnf)ziPqV(f2y|b-Dz*zbu`cmJ}nAP2>Ve@PU(r&tb4E54RN4p zBJG8k+&xBrTLG8k6p3$&MC7H?9bp-l`p*?c zl#?a5^>UfA(EYWowy*aq-hV#(?Yf#;w(;PB6`|Mybb(w1po;(rB;s@)a94!*(Y-x6 c_NQ}4jfT=@bHDlj00030|JA5?PP`8R0K{h5t^fc4 diff --git a/chain/actors/manifest.go b/chain/actors/manifest.go index 452b763ea0b..23080f318d0 100644 --- a/chain/actors/manifest.go +++ b/chain/actors/manifest.go @@ -122,6 +122,15 @@ func GetActorCodeID(av Version, name string) (cid.Cid, bool) { return c, ok } +// GetActorCodeIDs looks up a builtin actor's code CID by actor version. +func GetActorCodeIDs(av Version) (map[string]cid.Cid, bool) { + manifestMx.RLock() + defer manifestMx.RUnlock() + + cids, ok := manifests[av] + return cids, ok +} + func GetActorMetaByCode(c cid.Cid) (string, Version, bool) { manifestMx.RLock() defer manifestMx.RUnlock() diff --git a/cli/state.go b/cli/state.go index 83df3fddecd..78ed2ec0b9a 100644 --- a/cli/state.go +++ b/cli/state.go @@ -1927,6 +1927,12 @@ var StateSysActorCIDsCmd = &cli.Command{ } fmt.Printf("Actor Version: %d\n", actorVersion) + manifestCid, ok := actors.GetManifest(actorVersion) + if !ok { + return xerrors.Errorf("cannot get manifest CID") + } + fmt.Printf("Manifest CID: %v\n", manifestCid) + tw := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0) _, _ = fmt.Fprintln(tw, "\nActor\tCID\t") diff --git a/documentation/en/api-v0-methods.md b/documentation/en/api-v0-methods.md index 652bf3c4724..1819f4aab55 100644 --- a/documentation/en/api-v0-methods.md +++ b/documentation/en/api-v0-methods.md @@ -159,6 +159,7 @@ * [State](#State) * [StateAccountKey](#StateAccountKey) * [StateActorCodeCIDs](#StateActorCodeCIDs) + * [StateActorManifestCID](#StateActorManifestCID) * [StateAllMinerFaults](#StateAllMinerFaults) * [StateCall](#StateCall) * [StateChangedActors](#StateChangedActors) @@ -4655,6 +4656,26 @@ Inputs: Response: `{}` +### StateActorManifestCID +StateActorManifestCID returns the CID of the builtin actors manifest for the given network version + + +Perms: read + +Inputs: +```json +[ + 16 +] +``` + +Response: +```json +{ + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" +} +``` + ### StateAllMinerFaults StateAllMinerFaults returns all non-expired Faults that occur within lookback epochs of the given tipset diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 9d8938f8102..074baf7b6d8 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -166,6 +166,7 @@ * [State](#State) * [StateAccountKey](#StateAccountKey) * [StateActorCodeCIDs](#StateActorCodeCIDs) + * [StateActorManifestCID](#StateActorManifestCID) * [StateAllMinerFaults](#StateAllMinerFaults) * [StateCall](#StateCall) * [StateChangedActors](#StateChangedActors) @@ -5065,6 +5066,26 @@ Inputs: Response: `{}` +### StateActorManifestCID +StateActorManifestCID returns the CID of the builtin actors manifest for the given network version + + +Perms: read + +Inputs: +```json +[ + 16 +] +``` + +Response: +```json +{ + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" +} +``` + ### StateAllMinerFaults StateAllMinerFaults returns all non-expired Faults that occur within lookback epochs of the given tipset diff --git a/node/impl/full/state.go b/node/impl/full/state.go index bc264712c0a..802694d9c7c 100644 --- a/node/impl/full/state.go +++ b/node/impl/full/state.go @@ -1468,25 +1468,26 @@ func (a *StateAPI) StateActorCodeCIDs(ctx context.Context, nv network.Version) ( return nil, xerrors.Errorf("invalid network version") } - cids := make(map[string]cid.Cid) - - manifestCid, ok := actors.GetManifest(actorVersion) + cids, ok := actors.GetActorCodeIDs(actorVersion) if !ok { - return nil, xerrors.Errorf("cannot get manifest CID") + return nil, xerrors.Errorf("could not find cids for network version %d, actors version %d", nv, actorVersion) } - cids["_manifest"] = manifestCid + return cids, nil +} - var actorKeys = actors.GetBuiltinActorsKeys() - for _, name := range actorKeys { - actorCID, ok := actors.GetActorCodeID(actorVersion, name) - if !ok { - return nil, xerrors.Errorf("didn't find actor %v code id for actor version %d", name, - actorVersion) - } - cids[name] = actorCID +func (a *StateAPI) StateActorManifestCID(ctx context.Context, nv network.Version) (cid.Cid, error) { + actorVersion, err := actors.VersionForNetwork(nv) + if err != nil { + return cid.Undef, xerrors.Errorf("invalid network version") } - return cids, nil + + c, ok := actors.GetManifest(actorVersion) + if !ok { + return cid.Undef, xerrors.Errorf("could not find manifest cid for network version %d, actors version %d", nv, actorVersion) + } + + return c, nil } func (a *StateAPI) StateGetRandomnessFromTickets(ctx context.Context, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte, tsk types.TipSetKey) (abi.Randomness, error) {