From 102d7268b0f64ecdf9c88c0a8b93c54dea1dd908 Mon Sep 17 00:00:00 2001 From: peusterm Date: Mon, 1 Oct 2018 16:25:44 +0200 Subject: [PATCH] Fixes bug 553: Missing license headers Change-Id: I8fd3d74a242fa52d93b82840b5deea393f8f17a9 Signed-off-by: peusterm --- Jenkinsfile | 21 ++ examples/services/hackfest_1_nsd.tar.gz | Bin 18641 -> 908 bytes .../services/hackfest_1_nsd/icons/osm.png | Bin 55888 -> 0 bytes examples/services/hackfest_2_nsd.tar.gz | Bin 18740 -> 949 bytes .../services/hackfest_2_nsd/icons/osm.png | Bin 55888 -> 0 bytes examples/services/pingpong_nsd.tar.gz | Bin 1498 -> 1349 bytes examples/vnfs/hackfest_1_vnfd.tar.gz | Bin 18712 -> 965 bytes examples/vnfs/hackfest_1_vnfd/icons/osm.png | Bin 55888 -> 0 bytes examples/vnfs/hackfest_2_vnfd.tar.gz | Bin 18929 -> 1135 bytes examples/vnfs/hackfest_2_vnfd/icons/osm.png | Bin 55888 -> 0 bytes examples/vnfs/ping.tar.gz | Bin 1328 -> 1183 bytes examples/vnfs/pong.tar.gz | Bin 1361 -> 1220 bytes ...u.5gtango.emulator-example-service.0.1.tgo | Bin 3513 -> 4876 bytes misc/sonata-demo-service.son | Bin 6345 -> 0 bytes misc/tango-demo-service-project/project.yml | 21 ++ .../tango_default-vnf0.yml | 21 ++ .../tango_default-vnf1.yml | 21 ++ .../tango_emulator_example.yml | 21 ++ pytest.ini | 20 ++ .../unittests/test_sonata_dummy_gatekeeper.py | 276 ------------------ 20 files changed, 125 insertions(+), 276 deletions(-) delete mode 100644 examples/services/hackfest_1_nsd/icons/osm.png delete mode 100644 examples/services/hackfest_2_nsd/icons/osm.png delete mode 100644 examples/vnfs/hackfest_1_vnfd/icons/osm.png delete mode 100644 examples/vnfs/hackfest_2_vnfd/icons/osm.png delete mode 100755 misc/sonata-demo-service.son delete mode 100755 src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py diff --git a/Jenkinsfile b/Jenkinsfile index 6d81a56..5a9d85a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,3 +1,24 @@ +// Copyright (c) 2018 by Paderborn University +// (manuel@peuster.de) +// ALL RIGHTS RESERVED. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Neither the name of the OSM, Paderborn University +// nor the names of its contributors may be used to endorse or promote +// products derived from this software without specific prior written +// permission. + properties([ parameters([ string(defaultValue: env.BRANCH_NAME, description: '', name: 'GERRIT_BRANCH'), diff --git a/examples/services/hackfest_1_nsd.tar.gz b/examples/services/hackfest_1_nsd.tar.gz index ca1388916c73cfed801103d024d66e421d1fe9ce..7e2b2dd3314e92535e67b48f9c2b38018279e6b4 100644 GIT binary patch literal 908 zcmV;719SWziwFSmE3#Vv1MQVjZ`w!@$Mejm7^M$MBn*Z?IB_q>CG=_?H5DeQ`cy6U z*sO|oeY@)rzWvSGK%keTcdFW|y8TIL?V0iH%zxHq$>L8bYV)!4QRt+7@-6Uvf6(tk zwO-Y$-|f}w7U*1F_Itfa(yv8fI zmc>T#Y-!*;z5tT{7g%iI9ZOIxq!Mr|_&qAk&4z-{YpH%KkhDY9O7McLqsatj!5?qt z5zNNXcy>3wX*FJvW5Qz;8WSi5r314>7!@q0W$S6eoy{!;bXz{0+kn%p>-6GR%CM0o zXBQqLajmJUnN)6Dv8GmswZX( zs&d8FAQiAoA^D87^{y2+Tx3nqGBsSyc`yy>?lp|U5AbIY-ZTM8D%u7g3T5l3 zBDs|j6RTN-cvL_t>wq(3RF4Qc9@#VODM~V=iD$;S^m*f zeL})*8P*|Kj=Q-`qqoiH4xx~b@!CGXji#ZBS|6!&HSPu415;^^A|Wf<9t$ONX{_RO zm6S0(NqbQ81X6O<=W92Y>Nv^LJhojZPD$(l4GNoN-*c37Gu!cmt{hbqwepNhFQqcx3jqo0Sn1pOwzrbb+Hg~%Fy6gLx6SPuv=)yip2GC7S~Bm$ zEIH;2RMzZqIu{Ri>&K1nSD$6IvgKKB1e&8XwJ1+{4n=#)Z#D&a#*rGztQ;7e=81$!{Kl^ i91e%W;cz${4u`|xa5x+ehr{9c&ioB>w@qFEC;$LkwZJL> literal 18641 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

4Yv;Bq5pAf6 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 I)d27S0H*Ih)Bpeg diff --git a/examples/services/hackfest_1_nsd/icons/osm.png b/examples/services/hackfest_1_nsd/icons/osm.png deleted file mode 100644 index 62012d2a2b491bdcd536d62c3c3c863c0d8c1b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55888 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 QVa%F-+q93SJpA+j4_IIKX8-^I diff --git a/examples/services/hackfest_2_nsd.tar.gz b/examples/services/hackfest_2_nsd.tar.gz index 9170de9ad1753391ee4c49a86439ba0592783d6f..2bba135abf93109ffe4d4fcb463a479c230dd0fa 100644 GIT binary patch literal 949 zcmV;m14{fKiwFP*EV5ew1MODdZ{kJ}zGwc5QSKp$gbgA5sOU>+!u3!oRG8#+Pp8Em zo7Lf6cXtipzwfMV2;7mR)!nJrc0UQNy)&Nu=KIDLOBQ~NQJW8~4?;(cSKk87X0zAn zK(Thqwb^QyYX!KvzV5W!txm7oh2~ZJy4QULoo~YC6Xe=3MO0EIa$G%~M`>~VOr5Ha z{rWG#^4S05TYt;aXC(Qnc)|bnRkyeEzuoO!L$gH_K>jzs{OFhQKlk7ByxMEHk=a)9 zWNF|cyabZ}2Uu+3cNU>qNG0G-@HHyU&6bicN~wOzkhDYPM|erQgYg((^dWV9Y}l8Y9RBl>@Ux7-TG@rHa(y-qw}^T7DBQY{FR;I=lRlDr{vADcgdO z26By5f@_HR3IQKN%nWb=p-i(CXCg${aI-9qsfrK{cwd!}3&SXzQGP~u@nIe?QxLXT z8k6-Kjm>7`vx2NIRnl0MiMlZ!-3%we&?CadBX?qjT7$wra;~UV5|3rXCu9p^xndiT z3Rt3$Vn$lN8^sM5NgcF|&4wwYDiPO4@kMTq#M-f=o(~g9E+*h?5WpxngP#Y%D5z77 zccb~+>D?UO4Q8{!WIh@OFrC58baFeIkERp4djo^Xd-!!Uxvc||RCEkJWXkdGoq^I22ngiI3Z}q2!P{_x8Z6Dx9lc}QAM=D*|y+AuKh2|(C+C|%ArerFORh+J(JftV- z3@RQ$OrdhVcD@wjBy;oFcBVKLu?89xw#dF`zgDBKW}kju$P8P_q+hesWH*ZokA6Jr z!|pTN@`Nq|MHaR4L`W~CGTt)@5$aI!%*xyca=Ca1T5vykQ>Y>^H04-E#7m&D=0KXH z#$Ml#9}BI^SFsQ0SAO$+zfG;kK1iMVnMn4#R9PEtaumi}i@0iX*Qnj`c;qRJ4_VXp zKFuP0c?zgLpFd7PI2y6fo0!Mgh+^MV^G2S zY}X}^eAlP{{&m-({~k}zf$5HASz-M<>$6rN8O44~>2PAzda|5Hvl`|X4qnN^%Gudv zMVs4{@MmHbq_mfMNe(wwA$?F-*^pTa_cCnr)o=A<|FR6gFb;Xv3b@iYa zueBWlZR_k5+adzxvGwRIwy?Tw!*T`hR-#pr=CQ4jHnzI9w}-SFy1KTWx?X2*2bF4C z6s%cHVjGVY>Z+xQzmRHMJe!M=2K?{aBc`V>v|j{4$Z+%%xhh(Da+>W?6`Pr&dkgT z>A{tDuJXznQapSvZxCwfgEEt_)fG!L+-{mi>Q<{dCym7|U8d7**4C0nW@bj>ZdOj{ zt))p@9i>GTEnTj%;6Gbp=o%|Z*|M}zYbtD2Fh&;`-N6&_A}nIDEs+;BQDx;&hHc>B z&RbTbCgw4o3^sp?3**YJY%lON_z=v>@iE4vV=l!Wf+qj>*C) ziCDth-03aR0{dqS?kvm)P_ zN?fyOd~DwlIU(DJfo%+$=(}tS$2~UD`JGQl5!i1Z;NJUfTIt-}s=-MYoAcLce$mlUpAhtSvF`|UCOFU=bmP<_kq#F zdOI}NlvZa_^ZuB}?=abjaz5>0Ijw&B66?yZ`j`-0=Uq{>^|ruJJV$0=Ks0T$ND2yj z%c4Y|22riLpTubKZY)?!xh%syYVUMAm5!MNZf)_d(bHudUpG6WjJ0abo?1PvX0vW) z)nYSAuTiabnPQzPQo2^H?j1{`R&)YhVtvXjXYOaVSmwm_mCA_N{mO39=poRmP_A0V zCKD?W$cr|oQ9Zp7RO?}#ARVE&XbP&3xF4p|!+J7(sycQ2)=BpQO;qio=TRYU7Cl%u zQm2a@IboVp(8$SyqqQg}LB1=b+wkd5lFLJq+q-wxWF*T9douD^GeBkM_1=2gszsv0 z^Ji4P&PJ7|x-nBlV@W}`cvuRP^H5oZw9%Q_+{IME)J$XZ62lyWr3rvI7Tfa>gGNXk zE_3qWtP>XFmUZQ|>oD~Vf0|jLdmpH4MCIq{Ur3SX7CKle9Av5oDW+={~@ z68`i_i^_puUBj>OY^fE%A%{_%nRg%DtX#l|-^^IfkdjAKSu&+-8cj=Lo>;bO zZ}FWzUtXf=W@2<1Ss({<&rVv0NMSmWlbFeKl~Uw1nM0T@Xc^sVH@vFGaRzL7&`{#c zOEIwi27?|7aUmgu{NKtMwiw5Ic}~k}3Zp|>J>$mC@0}M=K@557DbSiL(D@TkpAV2f zACMt098*Mm6&w+Rdi!On2~a#CBRx%x{o&x?xEmq>!3}X{+Mw>ylMm}T=I}Vsfd2!l zq_2}@Z z)5Y=hCiA1Qv2iY_n?vC9>@$3Te*qCB5$g?Dkc^UY_yWKbLnN3#KW;oWZK~AwkHGV5 z@>~c9eYCE$bZT&SAD+MfC~Vi>vfCG0qecq>6cn^Tg{H9g7G|V?FWt%iHjCZyWSF$U z`BdiO?kb4tgct>;u)ZHLrnU8^FVs_`e_xQ2ALe`%=ZOu>mskMg;Jt^5gAa{;X}`aN z637N(=T6VT!y!vIFVWF(gOG7c4LMa$Z%)z=Bp))cnPhRJbg(Z^7IXV8{q>eMX~ML3 zveF7);B{gA0{oj#4Jm&9w=ABs{2>-MBpl}y77U1Vc){aRwyL*Va+@)B^F~^$N5Hz- zzEbeiy%MQc3k4tcp|SBml9UX3(en5M{=h-dn?-RfxP!B)@c4~6p>9^saqGm}=j7t> z?r<1VQL39K4_=R}IX%7MAms1-Q=;WhTb#oT(TK_Wo2QSD@yAx(1!QT{r;)g|x?HO= zO8*fDl9;r%9b}KdN(W)T@q`Hvu{*%0>_H^>gEwsO`$1Xho*zWhz!#@PjmE%ze5*ug z7W92@ukUNmuO4!aVCy&RWM*bz}UBs{x}T>EH|^3ooqbL-9X;5 z8*mD$+3f1plhwVPyuxh>1`Woi&o+eh#_Ta~2ha+3z3~S*T0af;^g@9$J~DiZo)>D< z0S;tFgep~Tu)KE9tFNi@JejFH>ihO#07JO(+xdKNgvI>wm$%mWU<5zlB^9$lrG%D1 zV#M-q_uNqlMv8xie~#YwId)4o{4Rsgeo{;_tF#&zh5{77euke}hfESDhzqY9=mRM) zkwi>Rfg9vQ8ZUNyha-x#h|J=U9lQzyd7-jTSExnINhxAiGk+~dUKwM(UHbqw?lfgk zH7?_zx94+{KOkPc(#ZN|pL}>iwU(KRhic^<+ee6e1Cd59+z9b`I!2S-#~BSZWxdh7 z8TYTvNDn2x6BrZ!ex5jCaR*?eEn)ynAjLBx)5`|{go;C27Q9eLN1G{_I5mL)WO2#i zrVq%%<4LZFeI*Hazq3Lx>}?~lgMBy4lGPWh zB}nzOLZZ20TJj9Ie#_wj3-Hp}v_{IK97G`S0Zw>Z9{qonvmhF(Obg?6`U@=@Y(zcg zJHx-qU;KeVHGgDR_WuP%obwK1?)1dno;i(iNc|;nJ4`Ol-om6Hd|v1FAUne}HhK|L zTX1W}jBd2&LvXr&6l$@gUc{t$%4qpWvO;Iy1F>;B?Y^w`d^oWEq43w?<}X$9(rthGw*3we<7g3 zdNu!geID%b3%=2beqTk65!N9|P6kn%5yTBh>ht^P15Y-gMXX~sEOLm0#b7)nnWl(} zb#-jU4%s72p#luyaj}CcXxBXg^TxD5x0mXKMk-mG4Qgq2i-^ga6&aPJXk+%?Ah0*AdXQt!a!#Ep1c_ z7vt6gwReYbbA|zAfFt{1e8L}5+YMA=BU3zQ!NHLix!AY9=x>($_xyKjafmW^*q84F zUtxa~7P|jqnUxVbqwIcUQnfJ{C##ISN7)4IVU#2-j4@S?Ci*%3q&1T0E#ba!_@N=9 z$%h%FTi+i6MV4kG1x=r`3=t(UDHRQuJnuzTYYA+<6e|g0G+J|Lih@;Q(q`d%tiJH| zHei(XUyQME45AEjn z)^)%$cFna33Mw;U{0sntpe%cF8uP#v74*LuO?3Jx7`oxpHn5Qp?&pRw5On_p*-ie) z6B_Q7jfoE%R7l)$QWd@j>L4tlOilN$Prqkz=5B#Z$r%3giYTOF1`l@Ty9uV@{(Au> zrBQMa&vD^@yT4(jI8Lpl_sw|l3g!jwYqCM;DV(KDX00gW=Xr8btRr3!FA;v7&AV}e z^nyI<7fU>%>#?3n3+VTG`SLFL_>qT(P2LEW!_JroeS0egp8GjKzVN$dckjB*&lY<6 zDNooDgn{k_CBnlR;SJ)%lAc&^CPMH|Mmcm`x3Ua)fKDqz-QEEk7e#6|CWo5jrJLWV zNjw^FA=h<-bj{}lJ?IU@k-&pV?mC|;jik=+h8)e#1NpD#q);?P`hPyR_cnh4Dy`37 z?s7JE>#)>#4|{KRe@k+ef3f&p?tdSKK z)@Z~__h$ox6~J-`s+R=OE55q~JloUpOeW()@R(t&L8Ks3F>xN5+_nm70a3ya~~vz3%c z%yj$@L6{;v1a)d8L`2S=bnhb=7|{p7qugJEx?eUi)yK#(u0GT=-WM>L!=XSZLN~*2 zkf-STF+q7hzRtVksTJ+Xf(;iB7Z@;Ko$!8B-EbPMzaX6^!iO^$Odt@pNFs5X=ju^3 zAfPl(7c87_p>Q8%>Wdr!C>X{{EY`AE2uQ>v49SSvg6KXVzX&;pT^~xlUnSZDx!7*U zELx{g&h+@(-jB$W?}w7MXY(=jqKiZy9EgZ0y8qMLU?|G0&)0nLH6IW)MrUE5@$peV z)JgaYQ9@f4DEYI$q0Pf(oTBUiR3ho`vr>?lrlxjpOPDL#i!n8_{(F^Kg8sXK)$^6E z89;56wKNg?^{ds10;s6F{+gf3R&SPSwrqi=x5Pv-Y{sIBwzZ8hF-8sdtbX-;w_TUN z@~zxvlfN!=Un+|<;r*v_^vI570_hkdJmxw0w-LB8m~4au7$r&K^TubslQb|yVhQT= z!Y5yX^?vvDj(__%-$hcGRQ{xxzQcSLVrO+BzH?HQsJ(1BoJsEnICvhvlu%#ohgAwT zn~LCJf&BoqF$wM+*jH`~ijSOf8!%jfzyIBWYV*P$kNJr(w5z5Fw--0{>Vf1yRpxjc z)cr%1G*vB5Z?lrq5h*Tt-o<``@7J*Z1eIbA>ubR%VkR40*CFSbZrU{Tn5*sB^Gf}! z-oB{yK%WnrWgRqjcSWdC&kuOqW;JJ{o1S5OfCMeR=hr)d2r5kGulXQrA>i+63Aj6g zOnO{Cyt?~)cHTd*|9#{3)wcTA>(UHRoeB^WCAo{w;TD6JMdd^=$aS2+EwD{BZaeOa zz;9BOKk{Q>;8A2pTA?VV?-3@m(0^8r9w4r2hqQC(0pl+0dJfMI5vj+V=WOucR6}bE z<1x-5RmIo^b1O^dntI3LBNWx5=6NKMeCUn-y`AmWxT{UJZyJU`gcizfel7xb*zkFeE6*K1)K6qb$Sg}{OeF;uGvZTHnB!F_HO?PEx} zxaB&$6H6Qdx^0_Z@Yw~ynyy}GH{ng}0~TfyuPE%KiV%cH^1Atbbjfh&L6Q z;^=409a4UMjHB!X?tc4qWMnYgw0X6@KY&_qJG7f716C`;HLg4o;Y1QioGT_yQk=9r z@w@FLBM@d`U0)(XYNllTBw zE|TCVfn(_P#EFAdD{IkVq=jyz5mM1+C;RRmk<}?^GLNZGDL^dix%BL>d+@r2%x)_; zJIzG^JFZVP-aHD0LMF+&0CI|6ONQU*w}`(}a=yA+;fJ*S?Rufz$`Ua0t(W*;MZR~mA=tku4*wjlzuDMHNYr^={D@rrDIu2$GR@+ue(GZ(; z>=w_RN3n#{hRx{RVas+z*>;qn@o)Rb3i*(pmNm|s8HHY!&kR`nNy~TlXrZ7zBJ;d_ z$l4ym4+*tVj}4Efonv#z|LOSF*+~`v{rqG1780@bZxTGCsx_)7L2ARe+iZgtnu*zq z@bFrT*oGGY`Z|EmuZ=0{;Za2mD=tKrzLaFM`a;jl2>CRec@8oBfZHnv<@HrEJrE+) zOQNA1v$p;Rrf%5H5#JjUJKip2iN#EAh$>I;CYaUYaz)V2>vYg7)vMpAj^)VZdHkLd z4%%js^hurl&YtD8$&E~j$vpR+W=AEjz6|O7c<0oNe!ZD>A{I(J+Oz(NPpvD zW$-7tL}|1R+c%!rRdXWNEmu-Wj-ZjPG@%2kuHrwe($$>H zj}f++8wo56IxmBN?lEb!XblTbR3F{ndoPgke?VY}bg2pWu3e3vsdyC>T-OlFTa3bs zjqD+YX)YPHHQ~Sm<`lT(1-00S_l?zNx@znRHF~)V#8A6lE=(LfC-Jpu`}p@~9B_Z` zaqwqc+30lU&tBnrbn+APKAU*L=;Rv~D3nH%a;>DBET=WEB9Z4eyb>HO-xM^&tDlan zX_E@l5OXH~tN}|F($y6i;-+MU4fYB)I#de*g@Q}o7_)F8>+;8>N$CgjQ#6s~#Oh|w z_?#w&c>uYx)(O=}_|dorKbw90@$$FN8Lf4EU-OWDouLii-JK9{A$FVN9ItY6jZ7D;3&%S5>PrSJS z;}3N^1UODK5CmRN7{a1K;-53pW9m@RKUsr8&&BW?S;fI^Eje70Od8IV9DB`X#Rp`l zFw~=uxw?h4RKg>v@W(m*6!lYOJu9O6?sz|EyRDWJ%WDJae-?XoSzDw!8q2>>dL7d-s|PwtR$Lq?^*Hz{VukPZ_U6>*& z*$1|`XM^+feAN-ZS|XLH>xCt9$K2?BBglp$N$~4g|GU6Uro9~XP};92Xm`0f>1YxI zj#1r5G1FWgV(1{76LHcRniHg91~=?3VO`l%ZqT9)?0NKj(C#dhE8CEt?SH1|x=1oR zyt4{|7(D}s;@MXd!FoO>dTC~xPfz0lRpydyv4fc6OgAiN?e|+bEjssd2UvW8(B=J$FC`l+{kI4u11ho%e>iHyzt)+#_uaId>y^CjLqkuK(8vkAIkbp-MsXi(_$*TmF zW?NV40J>ZNgZB}2)ru)_=;mekK|Kq3wv?FwTS<)Jxim@TbsZ;n=?CF%8IzdiVr~+@0kJYLs?R<2yyZv1YFn)fu`n3Y0C)# z(%U^2tK0EvrJlh15_PojE~AD<&I2iN_)sqX8Pj3PT-(P_S-3T6l)B zNlBA0Fl#*R;_*7W_6k8`UZo)E~VJW9>jzBl<5WiZ1 zvY9csD<9Nf1;P z=7Z1SN;sYu_=L8VlVOq@+N_M*Qk7YukQr{>s{Sm%#zJp?GG{M%*I~uu-L8Cb>=rgEhC2dt`AAA zXtY3bLo$C5i=>G|Bc3X&Z!$@GPepRtx$wCu3&`2B+FrGJFTFWU7bHT2mQJLF`GeDn z1DTy=eFjcX>nafo2s@lIZhwTQSP?UgAl$LYkKAv+MVT_xzOEP#3Q7m?FT;J%ib-#U zONI2P=Y{0*w=&TW9k-{}?VSGebXdD|b#B$^6|Gd$ckR@JQgoJ84w*xQq~1+FVngOm zl23z;gZs3>m(E&mTgBhGi2+MP6zmUJFL%V>fL#tEkDypsK#`Ie(^cc%!eS=qk78jV zBQ-{`%6etu`*Uun=}u5Z#R%KTKdJ7GABGSsj95-bR=wZ(dj1sCNt(h;mg5S3rb zeB^2>Jl=cDg`y@>xe)#O1W%q(#YiO1MIG5a*@4YQwRqSSLCQ_|dsv1pYcq-eM_pb0 z+F~xJQ=xv{0FHdaA73^ME^2)7QJ-EBXzos5wZ}!&k6)?>Nnt8YQVdoz?Lb_4svRb1 z%T@?gUC?7U`dvQEfy<;qPVZX!6F##-mo}B^iXWc%vstK zxz%N1ugZEsIMs=BOZUf3sr|nrvSc0CPYHP_<|PcQVzt33%V!?3NK(1uT90a_#ZbVE-%8i|XjJMk)p`C%_?6dqFa61!Q_AJC4_I{d3SV$@}+RufD<>gXo zJQ^BWO{Jjgf_eXYH=>xvZnJL_?hxrrAlg;Ogv%Ffq%!tWLG+f3b93{HjJW#gk)Qj1 zvaX;WHzf61BMeFp(@p@?h;)_C5k|me3kzJZUx zLua`=-?r0W;9tQuL>j4^O-nXoL!w5E!BwdFNHjEgY3X;8`U)&nQ{wx+u#eM^B9+Am z8A~|*dMIYvIwScdSuR^@I1Vs=2;G7E;FWdEZ9~k&oP@bohS^o~cG19 z(SVIzPb*nPMMEJZp?k0?!+R(tyxsE8i$B%W?+cmB77Y9G7}3Yy?YG3kq2p(}M3t45 zRCHv{XHEh79-jN1mfB_rC~8oc$i>1zj8!F*K2W*!D>zOK4>^}NKgkJKiaAIj_0#7~ zXU`I6SI;;wnh&2aw$L}wzCWq$sTaK}q7VzK1N;hV6!S7rP8BC7_}}?rU*LZIkq}7| z!dvb~xGFiZ(3-S*y=Q=#>?g6xup~Z8&(M+*QIe*zhlF3DL%UREOLc+N89U^-`zdx`>TNbBEc zHiLvz;5oilVY#+m*>h2)CYpu|ndY_-?5P-Nc}ikp>;V9*m>8@k7>em=cXZwvFFb{d z+uYo@hBo(+=Egv9Uwx7o)7p}T8B4?6%4ke`&2#jzTMPuuyXX*ad_XHt0j(;mNluN_ z$ek{ud)AA4t98ke6}p%Tnq{}AlYitEi}_I8EX^1#-|$;xR?k67Kdi2wc}s zOoT~~--|jM0$$m=nF#lT82$Rub)I6O){!oMv9Z8c-&k@0gnI% z47M!RL~9A&c4lsVXKQn@i(dTE$z0yz)>c$j7S2jis^Z9o7oWbN03-V>!`^W$*zsKa z9rBVjPZ4Av4`#2w70Z}#-_FdDzwiDWBM~{K-ai3g;54?Y1nqQ`#J7L|IIx~6y?!;i zOSGWq7%yTjuW1ur#NwH)Q_pBAgT7N@Q=4V*WAjwz{)weiVcN^k^c1XWN#Q?{T3*fN z$e^m*dnw?uhtHHhf|^*!4BAa%LhFqwTw-M0+KTxCe|+EBl$|Rn6q{}~U&TKkKCH@y zNEU#9Z?uOw$Ecx^ z@)P6qr5M}nHJnd1bKlIN^KL9H5jp1U z0-pMn0YkJ>y-&bz+jEh*R7UZ#Umnohp-TIm=3Li(DC^)n*-QSg7A0b(FTfN zhE6ZJDWnpj+fal1XsPI@W!M|*t)NdT4kg#drT!WU{q^ZXtBbX%XO;YgPVSGRs2V{E z<-wDtIIRmg4m{LOPuw{!ZMK^%)Ej)B-`}_R_^j{uYnlP_e1lY3>N}rGTPmY*o|Cqs zD&p+k)|`bF+vXLl<-)JOJ%1n_bN;3N-rlu;+9kKp)_Oa%!KBgCVaD8c7=8eA;JbiH z{e`niaKxNAv7Zov>cmZAav??#{fh^@1H#3XaYkY?-PD*!uAO9uUaj+|I<;-x=e|FQ zZZe53eJA@}BJ2C=Xa9BYv$xAdlay(NK1oI9y#$H~;*Tg;xSOj!g0y1K-?5weh%|`8 z4=eVGJF#mfyvn%0C9Xb3P*g`n_f2gO9RIVo9iH@xTvbF4Mt{2RJ%6-38Mbh^fR7g(r?&(XTG) z>V_S-{<@UkrRgJU;J=2vAPm`taTLt?872dp0X;EEUdo&8JO1h7-u*YQ7oae={iXBV z{Y>5{P6$20czu7?lBr%R0cwX^jqUz4N2BTLJZNI*$I)~BMt)nQj_>$Ni9=NgY3%O0 zywkVgcx6BT`6ZI%UVP7Hj25P$!-q&e;LB7cvvYHOC)cq{IV&km?%D0q=%^;p@{6{` zD^eGJ0knnH=q(cniIjr*B1RGlhGigC6=G6nYKxNf(p@lfV=!prMixfGgXKvlup$UF zt5vX`t2ca`k=?g>juqrWKQiszxiO!ivCP{sqs;pvq5qIn{%vv{*TI_6EBetgQ$uTK zYNw;)7_F+QtAl^AaIG!{2|DcYbkpsFQ;o=1Xfoo<BtV6DiCr3~XwwPsq_KKL3V zyJ9aUXCk~5?r_bq;2Ud?5PR01;KRZ;Qp*(|dv5EspQl~dYq`1d7K^SURhP%{f)aR@ zm8aDj#TEsGIzb)j%ULreh4-Ic@wN5oJ0S4oo#Q?)JkX%s?xIoDV=brg&BP3)&hR8v zwfF))rbY$^eudAsl!T%oikF?tX2amgf8q2@S{L7LhibKOTxyxl0=3oPuhbxXo!y(6 z?uz##@#@BDX=t3cwzk$FM*lX+CZm`~L}SROu`?y}Lx-hYSUUvzZBU4yq{~=)2je5` zZ%#HOXZzfQ%Sg|L7-rB>BOi2%L4N;-ZP+(-AI{1VI8!Dm$Byoz2dCrO`@<1L6@rJ(@A5eaE-gGS7}Jp^ zAZAq;tjb-|<31_V>RNU9{J531_0Rq2YufJ9$>muO4f_aL@{9Pe(U}J_ya3saZ4*{cjZ|Dx3D34Dnxj zeLsgyTk{JmQ!YI@Ct}$I#U(6W_`NZ*y3vGCjv+0LQ{LL!pzr3}^mX#K-w)GcRRM;$ z0w$$GCreS+9o|226PKz(hsZ>w!}O31&tHJSn&znYcS`Dt< zWasr_*tx5S%qHtqnuqrb<3|za1gHHzKUSeLr3~ihGDP^!!et1@@7d|Xb*l?s=+e?s zz=EG74F1@h@wnrHc`!3gQnqd_-na^7meFo6t{<;8a^uBew3xc8YQpMjrOb&n#vmf& zr+L(0&XSZUmh&Vf2mzfXBp#iLDBa0kf}Ga_4rcqidy>ibp{>8^TQcH-E~5ZOC1d@t zPQ41GoZVoj$ao3r<56&j1Z0k+M1v_S?9E$iN;{&(AWI6oc~}7^roWu~zN%oz-1eh0 zSY{Cs6Cd9uG1-X{5QttK7*QCyB-sN(e@pAS%PGHnkFkb6ySlp@i_6Xy&(_*3zO#SC z;tY_npNx&iid{qQkD7zd`B5u%H5r?5bD6A@!I+Lz9+Z>{m7GrrHGv3Ta_n#@NJl#n z>bRI`*o&?J5H1XNEof0;zknl%#Tzd9a#Y3CEZCiQJa93mU|jD~>`Ub61VX3gI`8hI z+bq@82U}5z=?AZ4Ur8UIZYtm-zKPU=MW$WPu{a3)%|g?XG2H#+l6&6O)ztukHu$qH z9L2)dV!H;-`*Jrl&5jvJVkr7+q>7DDk$t`<7b9p3zmheo;Hl>txs&#E$pop?zozN1N&Ekqqw(GEnn%omtCh+d!5W9S|8znAO+Q zzTf>*2enoF)y6@y`fNK8Mi~o>bM(s5tT-_Qk#f{Rj5s)#4sv2*VDn~e>5F^GvJiU_vl2#rb)bdgi+nFz5VhT!~TzIPc-QcM}=NkDQ zdHtr>)jzrMdVg9>XP)Y6Yw<-Df8~rX zrKA-QNEz&j0q^AA$j`~~$NnxJ)5>q*Jd@FcA`90Dk~Z9QLw1`w#gC+(5eqvN*T8EfFIa#@QL{3SB zUMH$kkwfSwauO?iNsPBNm{k zMY|Dy|F^wZN3Xu;H6YQV3%IzLUayMad?^+7qf|MhnB@2)cFY}Mo^6tt2&oZ9VeEeA z7^{@cOatuiy^XDdA!#5B;V(b~fpGMFw%$N>raN@t5-rD-?yq30E#Gj9Z4h<^+m&EE zC)seBcka>CPU(1G+}<;hL`>oTBPf?v>1}RYg$-Rhf>1<81mhTvLEd= zcGWz(^&nk^YeVN;yOd{vY;+_X*WL5#SxI{D>}(z~k0uN`cBF+bnFDm~_$Ta}JE z=Uj`x0~DsHZY(fwUdejSj6=RFAIrpKUJ8t(!o zN#i1d$||+oCs2|U1g1bDf~igg>iy^#G9 zqUG?A{dHuz$|l&|R;EpKi@JCk(wg>EO(M0S**RA&imyhYMx-EBiIAB9JsQsze*DVI zNXa6345`UW)M)u5R@FIQ_0{L`A6C)%3wWdBxvZt4r6iB-=mT*%TMKrI#HS9P9|JL~ z%WBGBP#+$T2*17oq`SEB3|6aX9H-YOD)FF%=b( z|Hz@i`(Kte=Qxwob)J58SPjfr6)H>~yP0i=9RSc>)HB|4H8~B3mZzwld>D#tXj$G+p1jxEJ@hSDaB@e{bYMi-V@)MUPUBih7FrodjO6buh5Q~`lRoY;ko z3)o0?x!7J@Ec>36!lAa!7|o_r!vnT64s$7>ZL`?;%q2MP$)6g%rcYd~R1&8UspJ$! z&8GMMsY`KX!f|oaB(+;7s8Qdc{Ysj=%8Xo9FK;G5CLe~3ie4Kyei6o*m5eX{>hzlZ ze2jOnuD=afL$N|x)ThtQp#q;Meio)2GoB$xx>AQw)0r+*zib?7f+-JIFtS@>Eoma_ zdU^NG!Zv&TXDENP9I--1vMDH7e5bZkzAMd}FFW7VD{-}2j^;$I>_oDRu~M;}}&5>{J zZsrz`#dkf=f4lb^n|7(yiCYPbk5mG8D87TliJAgJkVYcmBs;Y?IB5#0jzb{mZwV4p z0MDc6&O*t*JNhim6+A##J-N7;gn}2~E90wAbo%4x37|QvD@%8I7%Y9?zM)7W-X7M$ z?IQ5k4>c~_&T0>gl^KxtJRZv9{E?gCKr@7FgB$bVHL?*YXCwjV-3>)EE>gRKEChA! z?l1uzO$<+Q|GIve!)>O^`P)?*P+-A)e=LT+nTpv1Y-y6rirD^6KW}(98;zV@zM3f| z?`&1R?hg(L6BdHW05Jpj?UG{Ii)HeC2d=x;_EklOd{=>SZnqO`bl6tEd+TP`p7%b+e9q=)s^f(E*|@x=5>9Mv+_ zrp|JfSk)_HK(^rB6K(3VjDlQE(61%GjO5!|_n$nW{}oUP0sr+f1V zZR>!dNdqEAZl1TDOG8W27-{tu^wy9HE4@&d;RdDCs0rW85knD(K2cW+QV-~%7i2vP zPCHv;#$q%xHI?&02=8k}vK5E_YR^2Cz_JUny=B$sx2K> zi!bkp^h{XVak(_~VjK1F?h*n&xy0!oQTSYEjmwotJF=A}57;$k{Q&0zOer_;V3rD& z!rG8I?DoE=Xy3#~z*1er#;$cyA@|W z<|MY2yifSt^99a_13j6aHZBv=XxOi6@Ysilk91d?5MJ%@Z zT5v)s9ghL~5S5B%9ZutdRaoe9L2?4XZYef;;jn@vVUb=xj9a`cU{ox+EwC945v$hq%B2*2 z@Txl>ufBRq+Ej$PjXIqUb%YH0pfeO2N*x&)F&Xiz-;Mcwd-r$W@100QV2)7vlRqn5 z=gaN(@9VGs{`>D9T1HtXE?mVW_2QF}`;DmW(@Hl?;m!|!HzB)qUyN!P$qy}w3qjVc zI#PheX4wq+(`#jl^}_YP^q&X6%a;P+jCM2ntq+w+jQ8ZW#QOG)=E7N~czmUn z?9fJh71v9q<(|LbA?wc3o7$sP^m6Q_gNJ9NShsZMRSH!*XM@@5rGK2ldU?T0 z8wmZ=`l1L?-cu|9Ze8Icr@)bG;80xtkT9MEO-*6RZqS=T+;Fu?wg#NCVA+emm1mzD zh`n##ORm+{Al<(buU=ehZvvm%HP(0+N;V{P1K?;%<=tXk+6wQtTMi#qFx?$V$vMSxyLe4x2$Ziy^!+ z)Am_C@mQl5)gO1nAyx5sGyyd%q4X(&7u_w;Ul+#!7=A5s<^-f1IMs#br!@D!*FB(k zNeY&ar-S`Aulhf>kOJX};`$LNK?SFBhA~l)y(1tnb1*pXh=(ogz)jcsp${LthA~FO zFvYpO>E*JtXs6#71g=e7&otq~RI_p`FCr6mKUj2AjdENt3W%jIj9@lte#tr*w>Oi8 zN1rT$A-Sg#ajS(}?OJa0w>DPE6*L@zsYMy3WdqwrZx8X-lwf~QT6Hr zeA93ns_ldnIGRO<)&s;X1+fb(^cVm75-7Y`zS8|M5qPYUT6OZERP+WoKAjQ@!&$Za z;hc2^j2gu>Zcr0yCJlqgz(nfJS7bnu@TB}+$?ZZt-FQ5~w%J?rPme0BfLr;MgBcn= zFkBs`3oH0>wBG~Y0#qLL|H_;-ib2Irsp zilnv?%|s-AB`V5|wLpUUk2_R@>T+W6(;BGQ7pz2raqM-4#i(1EiwtcGr{=u~QZqF~ z+n#r7i8JwPPYCH*w&1^OtI7L&%I)?RfAn=fAb^=&>zOK{rl!XK58n>zX-!?_oJ#cy zDu4JNNfwjzDm^+5C~{QlHKJmj40i+w|pb@+X(K2hVJ2*s5GW`1sP}!NwcE44Xj?}a$+;#6|^f?d^<&jHG z9^XL5F3C6z)H({FQ1{2@Hs0~jOHm-}({=h3hxCNR#6&h0BX!jH_M(NwkL2vy_2uG( zdz8*V|8hqmP4PjReku#7mM5-*EhR6)d0P;vD}$v;F7taxsvIsB*&$l6;*M<8DjmAN zsVI!Ju+uTH&(sw@^zum4rkL*S_w~@HgVMGmU>o<(4OX4zHOk}?J@sYt^Nt>d(f0+B zi&GoXy!rFK-Cg1e9v%q_jR#oCoRUr=uQ(zm>lO#Wp|E4)yh3 zPOXsEw4w%;+mEoiJb6s&&P zHt8>dN7^q9S9gVq{1o`ndsm18uf8PbF&T{62eDL~#M+ z=QExU8v^4_tQxOR&Y>QO{?grmHKaSV@@SZ~deS3XUw>-kqt=(_^7N$Uez=JgP?7@> ziB%{Cw{-X___XqND6@yAZ<7Yxk?@<4(WgeeA<~GhVAJi;g{N9Ys(w+gb`03l;#6Qq zuQAuVH8*B@>+)!IOu5TRn`8hZ{|0o|J%BjUs5aZnb*GoUQu^zI^gYk@y*Jk_IN4dm zNQRf4?Fa}MI9@KGX;DkGvSCbM*UEJb1`%UUc`340*8;iNl7JM>JHK(}2pgXjh8NC` zH4ZNi_y=AJ8`AbbHe{05wtwr|x%B0W8}_=rE|&G}9TMp9wX(k8%So3|gTkh?*D!Fr z7yqqhTR);(Pd(GrmfOb69>M7OIwR}NM+llIA zcwzE;tdTn-W&x~EUWqR_3a49k;A`4gK8%d;P=FPVeDz3)`mo#GwVjrZx#4>S6-ZBw zaK!OOSyAjO%jBbLGA*XKGvTJI!QaD>T%{Z6)T>EjaogkTSNz%c_-iMdkD`#YS3O5U zwx$CYml`6v1}rR>6mGgBjVWl)L-%$BtV{j{tQbBU?4EC+q+>T!I}4G*aKShgqnv?) za!$3*e6T9hLtT>WDGv0c1&s2AAk;Wd2XlqD@{XyVT7dX@vOcx((a&Up`#kSop@B`c+oBOmT%<%!XhFLiKhj?)08Asr35^7^hsY z7qYaB$M1n;?F1ODO@k`u1vu7x7+TyHk;+`?d8M#mj%KWI;n`h5w$rbbftIi$8x_Wy zJ!R-!VT2!)f)C%P&T|Typ`cPQR_;DVBukdV$XXJQZI8}~c z*SkyM!_qbQHwsY6bT&|S9`|Z$PjLyYN9Ag6Z?sZt_cj>O_md+7^xj-baCuqIDcB%^YIhmzb!`7n!esd`HzsYYF`LXmv)NotCxFRN3nYl^c-FByZkRv_ zOwIigFsMxS2211bvz;GpJ>}Z}#Gw-h9;Kb0uAKo%x)h*Pe)mbHWD8=I32?MI8>af_ z^!i?r6J8N;tSd$XnkWM_x$5DpE6;hLbNBxCxa!Rct1KtZYz@SiW7w3s!3@J0EN-Yk zB4CL&KLlP%7{|5pxG0>T2eZ~vAx)IO&5w4z-R@~o9y;}T zvPPm$h*u{j+iRUEXKV9T7S)}#lsXG+3x;Pkc?5S9h95#*N44G02_15+w9*;uEOi7s zN}`N`8cr@L!<}ENQE4H@Z2^zN%V_gP+J*k$rVE77b-Dr@d`x3l(OuR`qg^qE*nFu> zn(tRTfRFaToM|&o7rk|ML(;;yjrp$qdvKR4Gcz-V+Or+LqM`zro<0LEmQ;dVCWkmn z0t-^ZASk;E3aIGrzPH8Qr`y-xuB*GQy6#gH z8?K0`bg9xyNCE*8l8|1f_uuDyCle;aWC)1v`-2OU`L= z(5#u$?!fmFe3mNZ_&Xtc#6$Q}Ju!3PDx%sQo4@$EA1*Fll77=f_4qYo(ZJ)St4mVXJpS17Rb$soNEg~2i(|f=m!2v- zvigS;(kF9=srSseJ$34em8Gd8b4TSYE+{BS9bKGTFmg;$;mF~sh4}>|^YV-H3i5OE z3&s}Yk1fnk?J4OK)i@fza>>%McTAhn(;dzxq(8cP^%Gj zxHvDrFt4yM2T$azdUpBhk~KNYS7o>x@w79obk*XO%br-hY{l|aZntF7il<7WdY9;;EI72}4`5IIr}v(#K1euU>_E z1%B&2@#u=xD^@+aqMt5%Z};0Va5863Z{L2$`}pI2yI!?=`qKbG4@mviTs8mMCrb0~ zC|$MUsg;XMr$3EX$?*5~tCuakgq%Jt@tuChUb<#kKh^k-yP7Z++!z{&aO`C`dxyzO<8CzN~VrgN?s1Z3!M~_;RGopCW(wvfl zkp(#gqn9oz88Le4=rK!22|%1P$GiGvO;1~~_$j6rH0@?BOI9pK^OuHIxVU&}LDAy; zoDroZi*gDIMi=K4FBwsoQ&Ln?Jf^s4)Y7G;BRm~>HFjA?b5||{=PP;4>luERCFrbZ zWXY(dW5$%`j6hF0BStLA&nX_cv?ynE(WsGyg-e$%9yMx-rwc#LT-MdhWveh>pY@u@ zn9TxjyR-DkzE?dr9$O~xs3%HRt}0~;oRIDz!Ct1;%d@zSK*?iE7BhF7xR?o~6hrKD z_0q6Vs{Wr2|#nRQ!l&mbB{0L^qz-Zsy zZr_T&9gNRodGOe>?*J96N}m39h!_}MT`MB|@TmVJA}-D3#gCROf24HD#5~U=_FNbk z?%WvdOI;p{y__1yvxpiCO2(`z5h$o&eBNc(F7@nw{vM{t$DR_NFCLYT0!0R;r>ggD z->M4(SM|Q_TlG@SyOu9oJ+ZK-H=oO1wOEe2S^S+)`AR2_8ac9PcS23CJ3Tes$nsLp1UhtIh4KfzGp|?iyo^M9 zdD-mKmwoM09Ro6 z_}sk#E+2pdKD`01!0_?8djniP0114016+aO<8${0xO@N-`1A(20>j7W?hSDH03`6~ z4R8g9kI&s3;PL@T;L{u63Jf2gyEnk)1CYR{H^3DbK0bGEfXfFUflqIMD=>U~?%n{G z4?qH+-T+r%`1stt0WKea1U|h1uE6l|xqAa#J^%@PdIMa6;p21n2Dp3x68Q86xB|n+ z=k5(~`2ZyF=?!oNhL6wP8{qN*NZ`{O;0g>MpSw4}=-Q@&>x-MnBSef-f!)L33dcC(R! zV-slN%$bxC7D9E^)zonQ+@m&|t!3hrsUL3Lx1Wr%+6N>CoXrl$@MQ?QLzOLK`xvl)AdRXz`*&!gCRLSEtiCASg=*^wjtCkVGsciC97+ zhn;LDgUa099o^xgY@N|K+TPxoX-v-w+huZw$Y$K8ikm)13>=bJM6UBPnXO*m)lpy9 zD89I3$25gn-5HmW+3YYHj$sybivS>zSo}S`#kcF`KaLO)AS#wfh|DJHs=tuh)ZQ_& zTdBR(8Ww$%>ek{|XHuF{idn4C1W`y(5IKQ_NGXuk178=;otViYwTOZ@kD%sLWuzRQ z8+vxh>h0#E2ii>s_LM8znm=^ap4%b{3oVz3MGmIs|EuLch7g{yVtnkK9onwOhOv63 z`XNfpxKlfSu_7cfg(NB^5uoj|I{!QR<5p>xNVuJikMZdRPD{Hxrc+aXaZ+ofQOGJNFt{9h^GD?%`t ziDxJCSWA0rSYz#lhg*w^9}z9Qc}QfzC?G*WE~_0#u#pqIdtgOGjF9HF|D=#H6G)yA zNfK=^na)&@dT0*0Y*vygRTOpm-6F^AJExn^RZZ{O`BklJ*OoWzr^{+E~0rh%gh^)B`J-5z}}2oX!9BnM?2 z*}rG5HFMaD^usknRG7VDyIr7!Yn_K;g@TNgr^sA$p5jX%Cnq#07WDFjBr?5QNw$_I zk_3kcEYAZ*rWpRnG#ZM3^hs)dCzwJe%}zB`SW_igcavG-{Na9cW1FaT{|SwudS|fI zzK$H0N-#zH_aS?}Q-tu0l*<*=U00KI)M)&Te$K)Lq2q3H%K?*-2BrvlK-u@3*_0hB zZQI866m#DqazTytuo$sINg>4(fvB?-R5)6ozP`1ABfXI#Z@q(}Zo3P7iooJdQPbK_ zK&6>PgJ(uKQg52np>Lbi-ckLWvuev3(lxv#>u&o*CUTUEB|RF2Z==`Y{JU!zYLEm} zQG5L8jHZaVJbgLARs%`F9<@bxOD^WET67}*-a`i(C2Kod8nYBq7Bb8Wu1~qn2ywwGh7o2o zD7J3h@~`%J5B@y-mboGqtaE{-T!%4>!2-=^D0IvJkV4Ch5M})9*9=A&HTqWES@9GO{&)O7`|LnB zb(fGbdzPvu_o=7OX-DpDZfY1K5n()6`(8eS5VPiRJwEKi>8h&@`_p?LY>+H_`j+7I z3}{e>zTE+MB2bW6E))6`D;1Z3#rh??O~CH>!^fVN6G4ay&w|~xefANB&%8}wN#1g! zZ%52&9HdB26{y78R1eD@?OjD-HYkryrsSuWf=a%i_RTL*=k`D2ojNf#=t69$0x_!4 zXp&5Py6|w+f}M4pwx=X^6Z*P#7ADn0uzlO2R4QrH*Si&KzxeW9N6GS=wBh04$L3yu zdfFF(-B>Qx(%Gk%k+r^-l793n3Ys^UYzCO#5TY&!dX(F!K2(_$t?ViHaosr`$W zg{G~|RTMq{ckmXt`*%5Puv6@$%$g=^ip==6`RFSnb6j1enB-l)V;RV~w2J}vEs7LY zcUwaP{rju0UNX;rXhv8>r0^nrngl<0;p5a0o&U*isB_yF!tKVNK23%DPEcI8g~B>@ zB-QC*BS2eXNgMG>A%-D7`r*Vj9L9b2HRxf^V)vA5y? z52R*0Nbed8vpS2@Mz8+u@BiIA<+i0!u(}(IO?1^ zovee0P!O~&sSVaRG^IWTGDa2?3k1W?IDZCmA-!MZ^{IywH|vyA>-tY9XhbntK+#TP z7pc+;!IC&w;9KB!wwnbxYMJ!hgo=~@yR)j|)a;_s#iuWS*0=7ZbJ31w@Wg8@8d$rZ zez0!lKP}RYiFd$Pq=U?0Z9}6XlR-}eXJ6#n_h{mg8oHGtDPF2Yd?18gxVW3DOl|bb z)aeu|Rg#_gae$%_NoYfRC2i|EM~}pgq&!(TwSt$Qa~kM`-}|*ZqqW@rk6)$|BR*vlNLwF23>) zGF3&xd6^3Y_)LJF##mliT@sQVey!?%?ns}KQ#88PFhIAE=r`XS_cx|1UXwyFcU-6m zfB(?&eIbvo%oITuiQpzTnGNLpY7^ytxQXVT>7-&sECNy?WW@}J%MdOU2~`?fFklB2 zXyZxmunx#qq!z<7ix)M4A}x?JkT7UVOj59-MtvJ?pceXg@^ET+U?KVorLG-YNHaVS zz#K+)1dCcee1~H1UvfqDTcS~u?(hNX+PQ^7CryXpSwuB2{0hjNBRDG^-K|vpi@%UE zaXyK7-`LC8mm7496pP(O%0quWT2iQ-dE5MZnk)m5*HSeAd$omGmD6UU&pzMuTg9@c zGua}y1>;4&*hnMZ`iSnW=%V7#R1!zVk(nH%XA0<{TR7AOpz^5=fE}nlVgw@4sW4Qo z13Dlx8*NaYLPMiysVjzV-`Y%X9eAEz>^wq-Gv%=0V<_j79k3gQfZgcHP=10m!}0}R zmhU?YK`h9v=6Bx$b#zk9{iP%ek0A5;29m=QpdOMfP?t0$k|O4eqLvS~k~VK1+VZbl zutQS;)!2}~H2(M}it{t}6y)x|A&3@&`FFo(Lo*-dh=El)&@ zWn|c-nWRWC!A7YCi|${YW~8V=MJ+=fnEcDv{{1J5zEjX1ef#%5mx@{V4zRF(&D3CM zX%TNYTl4da5t#%Hps00H8@s_gCb(7JpP_X{{HsI zNAA3J>Z@kNeEKU=NBO{H2*0kGeMCcs)2^>~E-_D?HCpkvzta!?vYzgX$RS&#jC27I z;TeF?4iIuZixiUzVI}%!(_ukD*f{(lYPA_CLaIT$qlKP&WI0v5^lMUNWRR`3iB!-A zofeD%fNc5b9kRAGQ~Z+U#6B_)GT8NEtSA$-GFfC~?{ywGdjT}r`6Si8PuAudl1Ih| zMv4uI9ccyh$)U>URiCck9GjSS)(V#IuSjN1zKQJ6h_3V@7)kY~E9l_fz3QW((XU7E zJskCmclOaOu{mUfgUxXTP07L9wcLqheRe@thx)2M6Lc9Lp>K_E_Qdgpbpo)j2*_X$IAc>zfbV^?=z zH)KvONy8$5yuO;C2+D~pHk`Wm9tV{m+2=}=jPFMdQ8%61oiIKtYF%hV46&BV*(=^3 zX**JG22vDoch@#FPW#`t-h8cK$mo>6it;Ei4lZt{imQOBhh>3VTun8)9)`%fAOdU-Ium~=&N`!CL=A;Pe{>rANLqGm0?QTCy_5be$ihcM8kQI-UDmDF* z?IhH|AE@p&P>rGNxS%R~Bg*rL6E+VUonplX!I%}vmG}-|WMcv-;OnbToO|cdGg}tj zIeXaaCd=hiA~qn`XdoY>-hlk1hCH%4QY=;QwlY=VrDd2YS5sJSSRm|KZN1jQNL2$F zn>)|aM%X70#N<`>HCBl}XN3 zZ!TCCGm`F)E2M+^i?juX+O*IN%2Y*?86-Inw#D<7Z3$*w*Fqy)j}h`t(^0{eSr#{1 zm=xT9e}yN3OeCe-B8CdWUXEvFg9bxB_^;tYUYPN883gy;m%D*_s<545Yww`?mwycx z{~-j!-a|V5RjI>Fy5t#|Z*Tm|qH#HCzh_&;yCB8Re>}nS5M$BUZK5wf z-SCG}8gyS44P zKm}Yp&#?;KYB$ik&Btj7C}Kv~AlM?%>ewE+Lg7j9Slk#|5Sc>~$ci7mzln~I8B5{8 z@V$A-4tALc>M_`sEFAax^Yy_4?SQ>vI(J6snSES_vP~2^;So@k8q@$Q-p{yPm<+1$ z1Uh^s=o-dBd0ABb_eU+PX7BE< zFUO-8YH;V)O)w^N1cR{Oz#86PiUbOKYcnY10JN@IaI*}D7yB65J8Ge^g&>9!4)}o+ z_$WLutH~CWqK?v?tj!sev`-4Q$Xtj&l2!LE794v1Vj>*l*m`j9c*&*{@6C-FCgIsw zW@w@eXfr&+S%%oq*n%{0ETvSSJUXAL;>jD0P`F( z(Ee1vhgP23NR?>w4E$c7w3Sn}xr6>IWh!MTBLrK9nV09ojsASGhXZKTe~LefMM+$;}*s*)g=kQdxg zMwaStV3aC=m@s^+dJuytgnAM+a*->KCP!M%|E)`Ja&~ld5PzgK2T%I#R|?W?G3k`$ z>%V+yMO2~OgqL8WkY9!^V>xCwS{CXuJ76%(jmV}ZxS_x7I72%+&(nhF97>eKj|D_B zMR8%uVIVTnJoSYe_`_{56_`M2Z#5n9T<-losH>-HLmQcuHkh9XxAr79@L1)jCq|yB z2p=_oz%}4S#$Kb`JhkGS>^mvj4ge@FW~0fip-Dqxqk3Ps_W&d2?85c$e6{9INpb-prH`#qHoq7dRvc@X5_>DS zk6C_%K-0J{I^R93Tgxd%uBDqo(u8j#R8nR=>?o9=Ew0bnmI4CO1w?l`jG(eEItP{V zA`Cmf?aUPV%~i}c42QP|X3m%H+P z2h(%TERF3Hd2}d(R&cOFaq_6Yvalp1@TJ4;KN4=1(=bxkkt8G*&kjb!Gm~UsafkMN za8GPR>*mDNL4X0+paGFO-=c)gvA3#hY+AkT*(^8+^*zb7%x-w5Gev}p@S9mZv);SD zaNlKvED57W<44gU%<6Yrj#G*vlx_(h454o)1KMM@#7wWw+C_(8OLS5wHB$uH#K|-~ zavTk9xBWgEBMsEiPU1(Tgv<=xl0iq{!3+O2{5WHC@frBC=3$WDo@x4gwqP zrjDpcI$B*L+9Ee=V31z1If{* zJRup$6L+|MR9?ci&p^CS00UNkF4`wze8FRqsdS z^aQ-cA#~>SncK=lnt4-Z-14!oM8Y@ei+OQ30xhS%*!}d%;5@kj!1okpHB9m*bi!mG zs4#0|5*P_tkp}_J_QLCphv=iWGTPf+3)ZHiF_EL_yeo=S@*>I)8%OzyNaEOsQlz57 zl+o3v9N*Z@UDiR|4G}UaE;m19c1r^7PcP?Iki+ zeI2!{BjQ)0KmYktP>5aX^l@}45yw7q=FHS_wurgvV5L9}oxUZVLSg*dZANSooE0JVxW^mY3tq<7M?c|-5qWipy>QLEL+ z8ddB-rh0>3uNM~E45V+*GfvEOhYjK$h*LVn6dDpy*AgG|YLiC!>X(O(Y|uHaw|buC z@2*{2Nq_ho3Yjp4Ts}Ep-p_fC1x-rCDXPqEg7NWY=ANhA-!4pW7bX!Kks;%jkg@dw z#mJhE4j-0n=lLX-Yt_imbAOaUTGEN^qVli5`R{STDSeRPX_keqp!W|99|Gdkm_cQx zMmlaokV&Eyno1AKqD*ZD5TSz*M^H;p8f4U@Z=mDJU;TCF+!>odj{3a3ymduIMeoAj z(_r_?PV|iDYQ8-airZ0v&5+Sby0(rGe{I-1+dUq4f46bGUR(hwSo+@b&&CPh6rX)4dSzS5hhZjR@lcKFleMp>A+D;#xj2jvLT+78a zEHP6GOW;5qpq{?YJ+EO6_>kM+w&LUC2`o&|`*Cg4`t|F_dp9D{Xa%>4lM^lmSVTym z6GFP+A_FUUo)sl%lx+@eUUN%TusS%bn-d{>3#+GfM=O4?Kr>WeOT9OG4p>79f-q)H z%e$WUa|%!p7xvPewY1T@dJ83nK0ph?#)1kg6eSO*!NIv?feXPK848h-PU()2e2U>G z6Gl$$w1Ji8=H^lhCJax6>rogX>|xEx$r0EdFV+bU4}YQ*qF}wQ+rTy&MMXss%Z%%V5YJFqoAIzeeA{Qtm{FRMk?~gf(IZhYx7=RhTyX!b zoQQoj#R&l*0{6gRucn%yg}H(dB6h_jrz9nQBOROvD;0&!_S2t#cIOxhi|o%K!GPiT zgVm2ZsDf?r@Ah&ksr*owDYFvppr?kvO6-j?!@dYqfFU?GA)ee`#a-w6nEg@uLfOhZahs>p6SP*HxXcJNRk5Y=Bj@9WGt$O+4e zeOTZgS5ug6NrIxtW(~tsCIi*NctL>PPqDt!5S;x3%DiHf|AhH$zSzD#R z&UirW)^5Q7G+hB1OdVG6(F5u)-j56kJ$mjeY`&htz+!%Xy(z@gK7VuDoDC8k9ZiD< z!8kJ-wjVln;DReVCz-C0kkH!>6cU#WdZ%1-^%R2sWvXC0Qh6cd{K3;CEkAV%J|Gdb zn)Q*%9nNC4Rta`>$@b{&ln0N0ObPtFFJVe?ZD>$DQELSrv{Fv!r~zplaxti*Ym3v8 z(fNCqRdbn2+X#Duvm>upVed7wXHL#zzRzkt3wQ|j=*gpld4O*RVI z&B5tA-bD?n*`})@t7a;FH1P#G(YYVbKrbJ_%Q)a^Js)-CqaoRYkII~v2Y9#*){IzX z6)af>8ji2Fa62r}8=ITyvrU`&jEyIl6&?$d39}UlOK@4=t!k*dLy-oG@p8@k>yzUm zb}U&i*SC;5n`KDg@PofLq_FPm8=6DDX{}dEhvp84ks_gs4GrV76cPOjY@s3GiVZ>` zN2;e~1ytKAODlbD4yQX)ABJ;KLK(0z)}DWvD!Y&2I9ouDzkw*kD%#(^l_XQluNMv< zkFdReLCUjQ4tEZ-7HC5hg!SrITR40giX?C&(s--^SP^Stu^RQx>Wj6VG$<=n@B#AJG&f14XU?A!lG)W+KuCWBWJRtf?Bv%;=?R}VH#PT}wZ3&& zxHDzc*Voh3sZ(haW;s(#pu$wa0OseSV`GFzIiVm>;XdptWs~dhz6-8tGeQBJehUY) zI8Un+TZBjvIc37VGK0IkIUc7|B&yR$g@5bEU^JhLYE zx)lx^aOlLHy?N^1S=6qUshtUEEaFc@pdWpBQZ)#lBbXr&QcY#WnvIO<8 zr%~*mKf(k(ZjiC(SHY&_zzPH7rkidOfZZRJFd~Kx8%Co>jS_Zi7$`DWfoN@Q z4L|wm$Hk4Wy+Ro;{Dqz?D)}m z7cEIc;^E~5HDaA3yHhw$FCd9&$Olop8tdet!)@Ki>P^y%9c^^>;)TQ_TLiBKxB|_= zUysHuXxs$jZXN7{$w><#BQCcyoY2R^9Q%+VTZJ>?rQuOX=FX?~P3w_$vH|&Bxyb*WOpfj*At)tQAcYkUM5hUv zl5*@26g3FcgEUu&1-4g&B@F`W2Q(me!d0XTmIWd7WJYYlA&L%{B5Uso9FUm^r$Lg?Y2z^?44DI`nrcCaRdY%>39wg*W4 zeY3&HGn%)<;KJ;S-66ak5(Ab)&{tcyEg*R}sL+D;6hR}$QuICdLs+vV&i*H~2*mJ= z=Oqu?>|y|WKJvTrNTP`#R|2y$j0N|3m6b!+gmlyfd}ESyHDXn89hPEu3CNKnuT2aD zUHt3?8j%x{aqHaqkFkv3;0GFSBYxH*7F zs)@jgIW35(Lny$e%Z_DxKn^3uX)z%GYb!a5YXUAvE2qv8ZNc8wfD=82@co~9@4r=o}n0g=LNDmQElozb15I>R}NSEW!VoQ`KT zM>nQ~#9J(QSq8$j76TI9*uLQ6QEB0qy4L1;>kUpy+*8+OJtv8Xh~#}ze2Z8vrIxkp zpj}M>km0BEvCZ7iV@fh2`ydku-XU=a`zC?nz-=Mjpo{W`MhOqE(nYQ#6>Vq1Ueqo+M~xyQ=1 z^hDBl`ssx|G%;!#O^BWa`Qav0&vX91*=oC;a?rD(9J@slP~Gs3h=S{=@gW&W^IOwl_f7fN0!3KlvB1=N=!i#(Kdv}1%z!j6nu9eH# znfLR7j#yA)l2jVn}l&HFsDe1g!*b+Y=2Zi7#k&72;*Y+ zP6t-m4zRFI!YZ)80>`0>?TJACC4co;b}$laAU9am<-!w*ljcIgA}J;|fm~u_$e6L) z0{l&Emv9itQ&^GkHdH;=J>Me4-HlPP5StcZS5u}GiAG6{e|r<5{$ZpD2?urfeh$ruY4tD`3 z#j*SdMKr7d226qm%Yk9B479jaUnNbCn@6X*4)>{sSjUN^q@=I=iwZIYFd%)AB>)pV zec!%)LPU}64)4M<+Kw5nkYNWRu#}XnOp1#NMY<8}pdMMk-;7j$8XjMh0lO7?bH{P? z56%K)sHyei_o(}b6^lJb0~uGAo!(>eJ?8u^J2pf}Y*CUZRDl?i9MN2vOnU6tu@92c zQjEo2+P8lgQKUX409>4XUrjJ%hxckuw6*%2dU(xgekZ4WRRknCjKzJ0r2fV$hl zRA9tlrgwLn;kPGO zW6Kt5{p1t{jePhjwW{8x`y4p&4vNZSlqnyHBq(H{U_F0nK>Z3u|cv3_)w>)CdP~V8$mf=byU%>kcG~RHIL|iOe2u6FoY8o;IA4;;S?XaSV7O{zXq*H zODf42^k7k#O?BAg82PtOOhK>00B>(^r`KP9U2r0@--?mpK?oy^0qsGYSJlf8G1FO& zSU497z?MQLup+=z*8~>}7jO3q-)m}WqEE`o7FA!UU1P_l(Apg2i%!XZ4Ic1;61+>WIVy8GIJ&lGA&LUm3>clztr#ws4m`a!; zSimP>X~BzW(Yr&EJ5SGjOrPS#|}Z()|XkZ6SCAUl_9zhuB2JWcOsQ z{ms7Dj+Y-)vA|`ko8<`ur2!k-c+XsS8`tkIBZhrl>}p}pFuPk~V`B-)4q|A3%YAz? zR&EoPt%1x0l4Iu}Z*0cP4A>tfI1F*j4n?-WJMA=wFhEH;cx8 zEn+B7ow_E+@rHwDskSE^nv|MS-d-sEhqqy4dzK~NW#RTau_t4@-bS4U6Qw4`Lv1E&d|d1f$gm!dpnC-DBn&Em@ysrD zc6k6n>>PAr^_UahTXwVa`VijWOh`qCymC_uHo?L3%oX%UKfwyC6GDUgTHd0p(3^3L zsS0z>BxyE|nV8=u^=LQ}2-m~%uHCnE8AfWcfZp2gkvBjK}RfzL~1*k$6T4WWv_zghOMvFIr_Bv>bg4JGHfyMOx0J6jzK z7Tx+hQwD209wF{|_Ph9IYu*OdW5Aj~WpD(QmmME%8Mbhu(zcb%XSNGeBf~yeQFpwE zS+5an4-wcd2c9Gxh+^R+urap^EkFmrXKDip;Xh0Sz=_$L1B;D}6`O_Eh*D+FyC(?^b`={zL(337VI1o&PZS?C4Yt4M`yF-a8yaHwkf$ z@d!X=BN(--`3oxRIz&a`6A&pJD!AJ{bvSb7!~hssmrw$|#bu(TkbJtZP4tWRMPE?z zu#o3HF%GY;uInLBGR|gUC?C@|#K!6P4S!AVq z8G;OK3KvGIa7qQJ%e|!SQY&^KB_%AMYPLClv9tPpCFI|affS@lNiX{~10E}X zuC^$#^ATs5a|Q}Z1ZMMutx$B`8da z4TzZ)NkH~YuHMDwGEiz*At~!M&wZ|Ya%^i`Ya-HqK7h^e96!hP7!gc8SEGS(9iCJh zzS>D$SefMj`-PSN(__buKgP`lHH)m_5ByW1fDPgjk}ZI2^wr-6WjvMv7ld!k4aX>Z zOF88QKZyOouoti}8g~m4Owu-66*ZgBl#3gqS-?YN_k1K+c@#7(?Sl=*a|Y-_y?ru| z3xSrPceHsm)qDH01C|}^yBZZSNuU^JYj2$UJ=N&X&_!c8ZL0qTC`u>r(7u(C$pNG~ zMK)1wjyXkMz-xfKvfN0wEMs@ z$cnPao~QA{BMAyAX0h8hb@i0jU#}t=mQ%o}PTsVgCTQ*>hX7I^#)h5eEXwBkq?EXC z!b2lTnvjy%r@ff8#PeStKlj(R^WCe}@ZT_-Von)}JrS)|WVYkqKnt@mDU8R-F>{2} z(mz%Fgtj((B2>3Iy6LX8KjWC&yEI5xD3Dd*P#|Kc%X$&@6|SSl4{73C67iEloyhf# zqdj}}(B#QeKrLQ;^$LUHrF&|n3?XG_lq@!TO=#*Jw{`A+8}e9!o#TGsB_FQP&;W09 zVuKk=#1pXmZnEeua$c9b}hMw zhK7Q>2}lXWCIMj*=;Gj~0|x_BJ}hCdv1H94#8P5=yVBXP?gPN*`FIH(Ko8_gs62sY zBs@!1-8-Nh+^cBXb@b!LL3#U2L zwK=O41@j_;m%R!o?SSY0Z_(KMdlWj7+tfo6Q zO18fGJj*sLSUq$4wC5dqzxhQSS+T!cckR?M zYY+;sx*gEC>WwwDF!cxc9l4*<%V+*TN*T74?NR%D+p!|gi|rK!)+1Ut?t=Hs4wAlSF>*zvE-!9#w9q%)_8{c(C@W<$4Ti9Y4F z1#PJlQk2ny;E}NO2yOJp?u|aQ={t%6oO@U%D?extfeNzk`4^2i=AuGv2|2Jnjn(}A ziUsRI96EP3~k*zw)MaEe_g$9L}ZHah!lLkMqfdRswu!` z;CKM%V6i{!z3Nve3<$hCWvRf9jCLdCh33*X*bhXj#?msMY;i_Jr?nBPaul4GDj1h; zb<^s??|o>JDb)JI=_=!(J?q~6pPIJz=21K_4pc#|`~oYYl~D<4`)loyt7*tBqbMp% zsR{*~#CEP6>GNid{@!`u*P!jeViz`;L8~IH?=WK%9?j;DXhv%hC5DU=R9j}({S`sG zvQ(2Ixp}=tg*_^Nm()W40q-U1pKIZ;@Y<6(1g$OFDu{|+Unb1!R0B9eozo&t5aQ+vE0VCSS1 z7H^_zM2xQ55aWH1kB^pBJ{OVyv`ATy3%3g>K%fYg4cE7bu-7pAwOZD%5hx=v_f8so zo@kV49;w6P;nfa2S%uMHfoq5QXzkFnh>vQjFZ8PM($v({en-o$Z{>r^6@UBV#xW~o zBa+gQr5LPhgp1z&Yia%}vNeCI>xhu~J~`$#O4km7ZE`6QfLUFvGKEsH`AV0y3EC7w zp#nnTynKYomxP`5|?k0e9*UDPyl;z8NrzGY@3MG z!PIr+J#3dzB|I9c-%GOw{fkW40@R&W%c@HMg}HzZ@ep-E-77V)?$tRx_ z)?084!uP|j=|O4f`lF(b6K#9T78Zx4Np^RYkwcL~k#hWcr57Ms1yv%}zOQu~7VLaO zwQbkujVK!IJE$^<|sYl<$jpc5=W~;({BT?E)c&0cRqAvn6gg{%^rkt4MN(q*+Vj zST}!M`~iosTRN%fe@n@Hb`Q1~-$^Mo7Mk8zL?g9xDGZc8BxEv;k9ky>JdLJPbY8bd z7>@>&FNX{iEPmYe6rPN&x>}06<=mQSvnFp=tFRd;eqPq|fgR!&CY}oZzIg-8v9qVY z`s>p#D}LOa`lmMC7U~F_gy^4Ch#GcSTY-#s;pNSN3x0~=*Yd~%-753B}5iyK* zx9)|tGeaPCCglzb2CE(hWO%6N@)qo1nPKuIdNA`XYKKgNf=iLgbm2jjEP|q4!zr%~ zF8t;?sz0!ws^u5RiXW@A$HXIWjH#muBg4LTsC)MtLLF96G)42U5*E8RSn&HF2x=?M z&=8s$NKscyU7ZFJBrV{YB^pWbVOV})@1hZr3sD~|6!n?Xd1`T_iWhljqqA1Z-Kt<5(tW{n3B{l;YM98bM9i|-@zwk6h z(w!euY6TJvu>WC@ID*0@aTF@ThWp}p(kgDHWATZ!rQ!FK9XgXT!=?fmo#+w~Rj*Vi z_WQBD5iCd4QISMx+A-7siaFG}mZDXI1>`8jp;V>YV2_`zTceSO82u?!Qf51xcwO zbRHdQLk0}SJ3Hn_NOc_tHNnk-SzSlVm>?W#79$qaP7Bjtr8rFvR?Kz_$nfpYb1wMe zptx`lE?El|Sd&j}mh)86xrO#O{gX`MR>SOzv#U35{JdAQ^3>&T(U2jSVFM_P6h@x# z?Q*8q)m|vW&-^M&2d@#lyTQ^>icny4V7S`ZGG{x4lOUMiy8}{qNxUErn9;;DjP-O4 zV)E})zlNpQ!vS0)b=w-jm!}HCeE`D>_y`MG_`;xA=mC%~LA~7+E>9NZ5BtkHtq|%M zr&_|^2%Z3awId$4&1I%j9h;~iV*VAVw*R59J!OV${o~1-$fYnF=FPoh4C47G{dugV z_uhMN|1J64VRwb#%67RLUwh-VExKCMxWdqJp+=~oddwUh_^J#5V4!!yRd2u`*wY&% z3#BMUEQP{A43c7VNB}_&M6oM{+q)%U9<4h3C{^n!C@*3z4ThlnHid!Atj}m~r_)_q zF|H;GSENu@$PDxuBp}-i|eJ% zSh`>lHfpGR;DHA!Il;m&La-^=mD=lbp8*I;G1k@B&DN+jxt86gz0+cDSDOUe0Iw(T zQjV8n*&CdSj1-nD?o?7248~T>%r?PrpA!RW-9K67MB@3v0v8cTgUfY zhMo6LckFb<%&T5DZo>3`f41RsA?=7cjbDUtF4EN$MhI(W{6q9vIYW+red_byXLRKJ zI1K9?IL_`})R>K0DKap?I=G&jbunY$fDzA3W`Ry2viSD-KLc_2aV<%RFmt_a9Pc*$ z9WzBpVc~la!CFpc@Faot2@Xv7%-FuUn&Q#;*cTNni@WOjOnEYqhU$>589V#*nnjO1 z^nOKImB97`jRP_IzI-##!+cKwEb0^&7gKy(JjouC{%-3Z-@pAX#}9_%*M|F4XVHk? z?LvW7-H&`{4N@{F#F@- zAIl1vE+Cy*5wp*0Da`U%rDlyUkWZ?=w&h|iT{M)@so?+j{L?cZ{WZ2e7*IO{vP1lJ znw*@BWC{mmrDb%afKaYo`DDkB8w)f6|S*l1Yj2q0TbcO@^PmruWlJYW}C z*EqpVa!J^_u_^|zSPn73D!aCTs)C{ZX2A{^hL`rpgsU0F<pbCyWG7zsv zVUGb@-AsY(rWq)^W7aHjsi@Yq%TgZt@(;3O(qFe*yw;ZtU~p2-r~S4Cne24aoy9M% z|Lv~;a!(moD=-{xaI98=g@=qW`|~M zg&%T2Y|6WxYo-wIM))`g`M<>v<~{!EpMIM9Wc+V#lEQh|pD)X|E}yeO$qInSR)Jpt zKCyeT3~nNw)14HmFa^v^e9kTOK`8?<9{u$d=o-s3GgSCCu*0m-=~t9v%ueOdq;&8$ z9J0Q8C~8#uT_KvN^Clz5ah!p=@_X-6%+v4ffnQ`E8Lo-coew^C`){kB`kK$BoZ&aX zVupKz*CMhaz=Z`VZ(^eXk~}2{R1$=EI}7SSzAn%6*YfQV=IobZSrw?TiY;===#23z z<5v6Azpy8r8Xps$be<{YTFZ4q2oHdfppgc3Za1yJ{Wmo$zc5>|f)&Qql?%4ou(d-_ zW6SX#b&S7R$ge@R{VfUi;In|{#E+xHEw92oe*wr=0$>C4!(F-mOHVK;t91D7T%>yT z7k*_#A%H+lNKiN;{o~f!gnt!l;%xsVb*an@gKtx=D?)f6P;%e}*0wjtpSk@t^UpqR zLbkXH7I~n;GoEAh>}uiqp2A7n$(js$q2Ns+k$YU!6e`VF0L<^BV{PxFP6v?4+4R?E z4GAMy2iJ`nZXmbXeMx0zRwm=VT=;D&YcuUNymYQ2=C|_{gX*V6N5mfQNxJe3{hGh8 zJ3@FQyy`VV8*SFbHQxPK+p~W-(z*{w3KHamzmc-6=>l*$Ap*5~A7LPPlJ1yd%HUa! z!A=m1G9IJ5v0h$h`3kO)PpJ+eUk8%>WC$HI%emIVKBtSulh|zn3u!PjxPN9#a*-AW zoePN?$6SZ(uN>a5{_(?x`2E8oW5d@=oC@qo^X;g@d%TF$d7=#=h(i0ipdBHhWlQMfR{gYnUN5sh@;I7>#^Jc zyQczpo;4`(s&rbAiXRV#&x}|3R&-qL_goUulof)LfiMr!cpGFxN!3M(2O*~6@o zKkTb$MA-Q4s)z85lGO6xZc^zFShW|AiWA%SDKz3QLR3LIYg0IMKV+L=qkn$4@1lIC z2;l+qymVqe6|k^sdvyDpH)?)*cXs30U)~(DAT3fAi>QNpeME#jip?t2@Nd7c1_p&e z*rt3~Xpz9mxP4}KoQ}zvFnM9)VOifKWR^FYYlU1e6Jj8|zkG|i1%as!$OukEaJyvK z;~a_~oWa62DmQ#>HaOczqgAyBO*lEZuD0%UbaX65h9zT}ok8$QIIkmX;<5WH-#J1& zow`|Au!9mrYn#%_HvIDF(#I!u&Rab#{Eo0@Q#~jq@UB2CONzqBBMMjBJHtI~^EV@& z7nNFj*m*3B#sqbyF#FjaVEcyc7!C*UvkGWwysoj%e2%^_y!%aJfnvqe=}*^3V)Gwt z&s4`NfLT!6;U4<7nv?f9uXOyqAw&QglR07oVd@B7Q*`sMwiw@e^{8pvk9Hm0`6SQu zoS@N^9*ndhxboeruPzOr?T#2#BC=Yx&yC@~rUk+-Ad52{(vV5{930YNQjU z!^WNZPq%f(*8Nc#FW(v)8SjjWj1qRK`!<{5c>256@9z~Mobhpk* z0vEPnWRNxNgk)CJZSAB(hFz{x=7WbXYES>WQ`z*MNF}a}4MV~;o^{$`h$14&sW=`# zox8>F_wRoMA>OZOGubWqxdpSpKE$qMUF#v!XFuCq^X~Kl@wic%?(oT>mguxWnqlHl zDSmwi>n&mw3G^n`nmnAg632-^6JpO7mU!E8W=Uqq4Q5B@%%}7^McbZgQTg5$ zMcvMBYxnl7#4KloH42;4V38(}CB|=T{a-2nafAq(m{{B{1yIBer1JztSId$Wf0qt2 z{vA8dsjw0uLn{hRjMF4%=q?(EoVa*+K}Exf=qh7b_mrgBEf%|30`tS(&{d~%i0xg9 zAlU_@OJ8Mhb)A-kJL|;?(K*cgi(33hag;flEcjJ5W}DxqT(}x!|Hl!+gJq<6)JO&t z$5~ii4w8kKqQYWM%H*<>4vhg@uUcrr$kE3tUOBNceQNB}Cr#Tv!z@=#n>NjU@kE!c zqN0pO<&379(-%mAP0V7W69prcmstN_MuIoOL>@qRU%YYrpMwA-pv!e=%)#Q7>+a6u QVa%F-+q93SJpA+j4_IIKX8-^I diff --git a/examples/services/pingpong_nsd.tar.gz b/examples/services/pingpong_nsd.tar.gz index e5d9202eae4bf626bfcad947b117a38ddc65bfda..db00a9378697518461b689521381a54157e015e3 100644 GIT binary patch literal 1349 zcmV-L1-kkliwFQJEV5ew1MOE)PvbZc-sk>`Id}jhQqof3)H|)N2i@K3*n((bwNJ=R z++tl~XKkmY|Nds2v`rusR=U;dbQuZ7*fZmqZ@w8rBIGPla&|Ax(YqfczVDx%oPhhD zW?#SE$-cQj>-hMj(`k23&yK-wb^PPgcX0Bf0xC*sEYlcD%w)==m-SF>I^E(Y&tv`l zk4RFee_E zCEN@?ej1P9ra$W6-1RS-ja@vr6aklphmcCV0qg^ZUcv(W77^EN=c}SRzI4=b-RarnL;enWn0P~Wwl+8HI6cR>aI*@Q33q!>; zL>}}KiC9=>-OjV5GKLKEFz7(Cn6K(mMM+ebYNKjMS6GAflo>Qi8&~NGC$2cSxeRfa zQ+kP3v9bg=za0Rkt@T}`M_K*46c|3 zs#LLvu|&+C*p0W5EbBCaXOyG_I@6fe3U4P?+4C^*d=&bQp*Tl<)GLARp)aN zdy+ez=UO43GQ^ay#Sw5b{~Ksqa9*6&Po|uy(yw9~ z))Y7oXwLW&i)wqx4WRai}xp*>sCOlG$S8l29O>Q6j>OOMOfP3lAYP$XLe4)a_*IVyAHnhQSV*JTYhK zY;GdmDR(D~zkPQl*_J@ybV`y*tDRvi-|p?--|oprB;-6&a(*L?f4K8?sDadJx9QXE zv>W-)745i3&1SRXwpyL$PQyKFbdGkQ{gwPFP;4yI06QU*F%O=W+s6MvDazMB|E0cU z;R}UJ1wL-Io~l1Sx|{m9kFoy8t+u-Zjh8Y1JpIq>?>J6v4^CCI)M9>XVc&ZV&4zmd z(K_2dRG}Gu zA8GO*ofMQt?o-ajoEIFJsnj78aZk*IhjGby%;p^C3IQWA9Ei9Mg`r{^0uO2lL?|q? z$;zXkQiO~$H;5rw$X9hKgCvSewGlNWE3CnK$}}}fo21fHPFP9O&83g4oWhH=3YDc~ zu~F}8qQJ2W0nPK-mMXca3Otg z@K5+%SdH9dF_FL!N|w#7($;x`>2u?05m83FaEV-p*jPh`rNgXnX%|X=0)rW5=x^2! z3kBDsx2C?_g z_kkKx?Fiq|d`68*9twYjWAgQZ{CON$LFLN%m&N2^TTjH$>WuK$hSJ? zB{{~*OKcF-fekDWo|N%|SXsf+x;!lU^GXvK9C}fsd`~G@w%Bj}GyCd`?B}Q4UIA=$ zMkMJp>r;q^S&k1IMEX2b^iqqU@f$@Eq6}4QR6dp{pzj&E5)iF<&thP2^Y9qS*$jMB zCY?=Dz1CbNL_`O2z?M$x;&rKu>4V{OiY_^!Zzz3F+y4UC=9K5B^@AyA%H+$ChBd`4 zc!VTFH?IZ7O4FH}!%i|#5fV=dmc@eGHp`GKrw0}uY>$TdS|MSNj{EX~ z=&kdHR?6kE3oa%DEGG*Dl_>Ei&CiqvYO%#id2e!i+bHj&#G9;-N+L+nx!zwtHV;*we6K!nYv20^{J*5a{m<2)*FPV;xQ#9MKMl8)yZ>vubpO|B9aZ-~--7zt zdpW*Bd73ku-c($S&)0A4^b?tRpOPQ-Tyjk^wbM)%`}|x$^P~=c#uD6ix83O;9l_~f zJfUl(&X3+6|9L9(zjw>MPbLmc-QL@mv$3uJk@?{MzkS@S?ti}tO&h#9J8Jo?(`s^l zGV8S3P4{HVra$u*Yt5zrkNzo8^>jrQRa8+$6;)JGMHN+4(GN&}1IaJd`T!^Z0NOF! AWB>pF diff --git a/examples/vnfs/hackfest_1_vnfd.tar.gz b/examples/vnfs/hackfest_1_vnfd.tar.gz index 622634e01f87c87fb92feda337144d5428ca1330..f0c8004a85d59d7c68f18635acfd55667c51923f 100644 GIT binary patch literal 965 zcmV;$13LU4iwFQ|EV5ew1MQXHZ{kJ}$MeizG2$MQNEpno+=;%FCR`7dgA)+0_jFq9 zu~`-G`gYe4{`=0_Kw=QNKJ-+z-H((k-kF{K&JWCr1%E`S&DZAFjfld=)epe;{kPpN zzGT z_cGln9%go9|$`gHJ3(wUkQ0qu?7v-2wQGe`8E3>Bm=(eL&&9J(wycavdyU3+yREZaY+b6ju`V2SV>G-UjAsLn1m{N{#TvB+h2Ju+C{-#ROG!__ zmZWmcwjdR-SRvVrw0gIS8!qA+Xc?I;Q%F%lu8rc$%#@0CP)9kxbf9uE0oDEthO;XC z(w_}yHHz_hIR7wtoWtk-blM-!hl3eRrf@$QKMd!?$(WwrLx21QejAP-YJgNKx(1(8 zW%ZLtZp(D&g8TQjQ29EL9hf5eVNQY)-Da9kk9_w9^gh(Q$YmOqMU9>r-N+#0S ziqoes3+N=>LBT_a$W+YNp)dJ3$;>>bohnX2Yy%An8|0XCy;89+&7S?|1oEYqpW9 zSK7`^L7I6Nj#&~+q}qAO(wgZv?c76CZAq9H7cON7svfF{1z5iMMIFP;L$mVF!WP9G z{5~H{$NkZ{Zmvwm*4~8+%25`>DZLub9Po+G3JP-Ca8F@$-r^)q%%%H+^x41iPygaM n91e%W;cz${4u`|xa5x+ehr{7;I2;bgf0I7}wrH{>04M+e7Odxr literal 18712 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 Wq?>e;ZqiMPj{XO=`m#m<@BjemH%-?7 diff --git a/examples/vnfs/hackfest_1_vnfd/icons/osm.png b/examples/vnfs/hackfest_1_vnfd/icons/osm.png deleted file mode 100644 index 62012d2a2b491bdcd536d62c3c3c863c0d8c1b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55888 zcmeHwcVN_2w*Q%4(|d0OLLi+Mnsh-yL{Y>ZASk;E3aIGrzPH8Qr`y-xuB*GQy6#gH z8?K0`bg9xyNCE*8l8|1f_uuDyCle;aWC)1v`-2OU`L= z(5#u$?!fmFe3mNZ_&Xtc#6$Q}Ju!3PDx%sQo4@$EA1*Fll77=f_4qYo(ZJ)St4mVXJpS17Rb$soNEg~2i(|f=m!2v- zvigS;(kF9=srSseJ$34em8Gd8b4TSYE+{BS9bKGTFmg;$;mF~sh4}>|^YV-H3i5OE z3&s}Yk1fnk?J4OK)i@fza>>%McTAhn(;dzxq(8cP^%Gj zxHvDrFt4yM2T$azdUpBhk~KNYS7o>x@w79obk*XO%br-hY{l|aZntF7il<7WdY9;;EI72}4`5IIr}v(#K1euU>_E z1%B&2@#u=xD^@+aqMt5%Z};0Va5863Z{L2$`}pI2yI!?=`qKbG4@mviTs8mMCrb0~ zC|$MUsg;XMr$3EX$?*5~tCuakgq%Jt@tuChUb<#kKh^k-yP7Z++!z{&aO`C`dxyzO<8CzN~VrgN?s1Z3!M~_;RGopCW(wvfl zkp(#gqn9oz88Le4=rK!22|%1P$GiGvO;1~~_$j6rH0@?BOI9pK^OuHIxVU&}LDAy; zoDroZi*gDIMi=K4FBwsoQ&Ln?Jf^s4)Y7G;BRm~>HFjA?b5||{=PP;4>luERCFrbZ zWXY(dW5$%`j6hF0BStLA&nX_cv?ynE(WsGyg-e$%9yMx-rwc#LT-MdhWveh>pY@u@ zn9TxjyR-DkzE?dr9$O~xs3%HRt}0~;oRIDz!Ct1;%d@zSK*?iE7BhF7xR?o~6hrKD z_0q6Vs{Wr2|#nRQ!l&mbB{0L^qz-Zsy zZr_T&9gNRodGOe>?*J96N}m39h!_}MT`MB|@TmVJA}-D3#gCROf24HD#5~U=_FNbk z?%WvdOI;p{y__1yvxpiCO2(`z5h$o&eBNc(F7@nw{vM{t$DR_NFCLYT0!0R;r>ggD z->M4(SM|Q_TlG@SyOu9oJ+ZK-H=oO1wOEe2S^S+)`AR2_8ac9PcS23CJ3Tes$nsLp1UhtIh4KfzGp|?iyo^M9 zdD-mKmwoM09Ro6 z_}sk#E+2pdKD`01!0_?8djniP0114016+aO<8${0xO@N-`1A(20>j7W?hSDH03`6~ z4R8g9kI&s3;PL@T;L{u63Jf2gyEnk)1CYR{H^3DbK0bGEfXfFUflqIMD=>U~?%n{G z4?qH+-T+r%`1stt0WKea1U|h1uE6l|xqAa#J^%@PdIMa6;p21n2Dp3x68Q86xB|n+ z=k5(~`2ZyF=?!oNhL6wP8{qN*NZ`{O;0g>MpSw4}=-Q@&>x-MnBSef-f!)L33dcC(R! zV-slN%$bxC7D9E^)zonQ+@m&|t!3hrsUL3Lx1Wr%+6N>CoXrl$@MQ?QLzOLK`xvl)AdRXz`*&!gCRLSEtiCASg=*^wjtCkVGsciC97+ zhn;LDgUa099o^xgY@N|K+TPxoX-v-w+huZw$Y$K8ikm)13>=bJM6UBPnXO*m)lpy9 zD89I3$25gn-5HmW+3YYHj$sybivS>zSo}S`#kcF`KaLO)AS#wfh|DJHs=tuh)ZQ_& zTdBR(8Ww$%>ek{|XHuF{idn4C1W`y(5IKQ_NGXuk178=;otViYwTOZ@kD%sLWuzRQ z8+vxh>h0#E2ii>s_LM8znm=^ap4%b{3oVz3MGmIs|EuLch7g{yVtnkK9onwOhOv63 z`XNfpxKlfSu_7cfg(NB^5uoj|I{!QR<5p>xNVuJikMZdRPD{Hxrc+aXaZ+ofQOGJNFt{9h^GD?%`t ziDxJCSWA0rSYz#lhg*w^9}z9Qc}QfzC?G*WE~_0#u#pqIdtgOGjF9HF|D=#H6G)yA zNfK=^na)&@dT0*0Y*vygRTOpm-6F^AJExn^RZZ{O`BklJ*OoWzr^{+E~0rh%gh^)B`J-5z}}2oX!9BnM?2 z*}rG5HFMaD^usknRG7VDyIr7!Yn_K;g@TNgr^sA$p5jX%Cnq#07WDFjBr?5QNw$_I zk_3kcEYAZ*rWpRnG#ZM3^hs)dCzwJe%}zB`SW_igcavG-{Na9cW1FaT{|SwudS|fI zzK$H0N-#zH_aS?}Q-tu0l*<*=U00KI)M)&Te$K)Lq2q3H%K?*-2BrvlK-u@3*_0hB zZQI866m#DqazTytuo$sINg>4(fvB?-R5)6ozP`1ABfXI#Z@q(}Zo3P7iooJdQPbK_ zK&6>PgJ(uKQg52np>Lbi-ckLWvuev3(lxv#>u&o*CUTUEB|RF2Z==`Y{JU!zYLEm} zQG5L8jHZaVJbgLARs%`F9<@bxOD^WET67}*-a`i(C2Kod8nYBq7Bb8Wu1~qn2ywwGh7o2o zD7J3h@~`%J5B@y-mboGqtaE{-T!%4>!2-=^D0IvJkV4Ch5M})9*9=A&HTqWES@9GO{&)O7`|LnB zb(fGbdzPvu_o=7OX-DpDZfY1K5n()6`(8eS5VPiRJwEKi>8h&@`_p?LY>+H_`j+7I z3}{e>zTE+MB2bW6E))6`D;1Z3#rh??O~CH>!^fVN6G4ay&w|~xefANB&%8}wN#1g! zZ%52&9HdB26{y78R1eD@?OjD-HYkryrsSuWf=a%i_RTL*=k`D2ojNf#=t69$0x_!4 zXp&5Py6|w+f}M4pwx=X^6Z*P#7ADn0uzlO2R4QrH*Si&KzxeW9N6GS=wBh04$L3yu zdfFF(-B>Qx(%Gk%k+r^-l793n3Ys^UYzCO#5TY&!dX(F!K2(_$t?ViHaosr`$W zg{G~|RTMq{ckmXt`*%5Puv6@$%$g=^ip==6`RFSnb6j1enB-l)V;RV~w2J}vEs7LY zcUwaP{rju0UNX;rXhv8>r0^nrngl<0;p5a0o&U*isB_yF!tKVNK23%DPEcI8g~B>@ zB-QC*BS2eXNgMG>A%-D7`r*Vj9L9b2HRxf^V)vA5y? z52R*0Nbed8vpS2@Mz8+u@BiIA<+i0!u(}(IO?1^ zovee0P!O~&sSVaRG^IWTGDa2?3k1W?IDZCmA-!MZ^{IywH|vyA>-tY9XhbntK+#TP z7pc+;!IC&w;9KB!wwnbxYMJ!hgo=~@yR)j|)a;_s#iuWS*0=7ZbJ31w@Wg8@8d$rZ zez0!lKP}RYiFd$Pq=U?0Z9}6XlR-}eXJ6#n_h{mg8oHGtDPF2Yd?18gxVW3DOl|bb z)aeu|Rg#_gae$%_NoYfRC2i|EM~}pgq&!(TwSt$Qa~kM`-}|*ZqqW@rk6)$|BR*vlNLwF23>) zGF3&xd6^3Y_)LJF##mliT@sQVey!?%?ns}KQ#88PFhIAE=r`XS_cx|1UXwyFcU-6m zfB(?&eIbvo%oITuiQpzTnGNLpY7^ytxQXVT>7-&sECNy?WW@}J%MdOU2~`?fFklB2 zXyZxmunx#qq!z<7ix)M4A}x?JkT7UVOj59-MtvJ?pceXg@^ET+U?KVorLG-YNHaVS zz#K+)1dCcee1~H1UvfqDTcS~u?(hNX+PQ^7CryXpSwuB2{0hjNBRDG^-K|vpi@%UE zaXyK7-`LC8mm7496pP(O%0quWT2iQ-dE5MZnk)m5*HSeAd$omGmD6UU&pzMuTg9@c zGua}y1>;4&*hnMZ`iSnW=%V7#R1!zVk(nH%XA0<{TR7AOpz^5=fE}nlVgw@4sW4Qo z13Dlx8*NaYLPMiysVjzV-`Y%X9eAEz>^wq-Gv%=0V<_j79k3gQfZgcHP=10m!}0}R zmhU?YK`h9v=6Bx$b#zk9{iP%ek0A5;29m=QpdOMfP?t0$k|O4eqLvS~k~VK1+VZbl zutQS;)!2}~H2(M}it{t}6y)x|A&3@&`FFo(Lo*-dh=El)&@ zWn|c-nWRWC!A7YCi|${YW~8V=MJ+=fnEcDv{{1J5zEjX1ef#%5mx@{V4zRF(&D3CM zX%TNYTl4da5t#%Hps00H8@s_gCb(7JpP_X{{HsI zNAA3J>Z@kNeEKU=NBO{H2*0kGeMCcs)2^>~E-_D?HCpkvzta!?vYzgX$RS&#jC27I z;TeF?4iIuZixiUzVI}%!(_ukD*f{(lYPA_CLaIT$qlKP&WI0v5^lMUNWRR`3iB!-A zofeD%fNc5b9kRAGQ~Z+U#6B_)GT8NEtSA$-GFfC~?{ywGdjT}r`6Si8PuAudl1Ih| zMv4uI9ccyh$)U>URiCck9GjSS)(V#IuSjN1zKQJ6h_3V@7)kY~E9l_fz3QW((XU7E zJskCmclOaOu{mUfgUxXTP07L9wcLqheRe@thx)2M6Lc9Lp>K_E_Qdgpbpo)j2*_X$IAc>zfbV^?=z zH)KvONy8$5yuO;C2+D~pHk`Wm9tV{m+2=}=jPFMdQ8%61oiIKtYF%hV46&BV*(=^3 zX**JG22vDoch@#FPW#`t-h8cK$mo>6it;Ei4lZt{imQOBhh>3VTun8)9)`%fAOdU-Ium~=&N`!CL=A;Pe{>rANLqGm0?QTCy_5be$ihcM8kQI-UDmDF* z?IhH|AE@p&P>rGNxS%R~Bg*rL6E+VUonplX!I%}vmG}-|WMcv-;OnbToO|cdGg}tj zIeXaaCd=hiA~qn`XdoY>-hlk1hCH%4QY=;QwlY=VrDd2YS5sJSSRm|KZN1jQNL2$F zn>)|aM%X70#N<`>HCBl}XN3 zZ!TCCGm`F)E2M+^i?juX+O*IN%2Y*?86-Inw#D<7Z3$*w*Fqy)j}h`t(^0{eSr#{1 zm=xT9e}yN3OeCe-B8CdWUXEvFg9bxB_^;tYUYPN883gy;m%D*_s<545Yww`?mwycx z{~-j!-a|V5RjI>Fy5t#|Z*Tm|qH#HCzh_&;yCB8Re>}nS5M$BUZK5wf z-SCG}8gyS44P zKm}Yp&#?;KYB$ik&Btj7C}Kv~AlM?%>ewE+Lg7j9Slk#|5Sc>~$ci7mzln~I8B5{8 z@V$A-4tALc>M_`sEFAax^Yy_4?SQ>vI(J6snSES_vP~2^;So@k8q@$Q-p{yPm<+1$ z1Uh^s=o-dBd0ABb_eU+PX7BE< zFUO-8YH;V)O)w^N1cR{Oz#86PiUbOKYcnY10JN@IaI*}D7yB65J8Ge^g&>9!4)}o+ z_$WLutH~CWqK?v?tj!sev`-4Q$Xtj&l2!LE794v1Vj>*l*m`j9c*&*{@6C-FCgIsw zW@w@eXfr&+S%%oq*n%{0ETvSSJUXAL;>jD0P`F( z(Ee1vhgP23NR?>w4E$c7w3Sn}xr6>IWh!MTBLrK9nV09ojsASGhXZKTe~LefMM+$;}*s*)g=kQdxg zMwaStV3aC=m@s^+dJuytgnAM+a*->KCP!M%|E)`Ja&~ld5PzgK2T%I#R|?W?G3k`$ z>%V+yMO2~OgqL8WkY9!^V>xCwS{CXuJ76%(jmV}ZxS_x7I72%+&(nhF97>eKj|D_B zMR8%uVIVTnJoSYe_`_{56_`M2Z#5n9T<-losH>-HLmQcuHkh9XxAr79@L1)jCq|yB z2p=_oz%}4S#$Kb`JhkGS>^mvj4ge@FW~0fip-Dqxqk3Ps_W&d2?85c$e6{9INpb-prH`#qHoq7dRvc@X5_>DS zk6C_%K-0J{I^R93Tgxd%uBDqo(u8j#R8nR=>?o9=Ew0bnmI4CO1w?l`jG(eEItP{V zA`Cmf?aUPV%~i}c42QP|X3m%H+P z2h(%TERF3Hd2}d(R&cOFaq_6Yvalp1@TJ4;KN4=1(=bxkkt8G*&kjb!Gm~UsafkMN za8GPR>*mDNL4X0+paGFO-=c)gvA3#hY+AkT*(^8+^*zb7%x-w5Gev}p@S9mZv);SD zaNlKvED57W<44gU%<6Yrj#G*vlx_(h454o)1KMM@#7wWw+C_(8OLS5wHB$uH#K|-~ zavTk9xBWgEBMsEiPU1(Tgv<=xl0iq{!3+O2{5WHC@frBC=3$WDo@x4gwqP zrjDpcI$B*L+9Ee=V31z1If{* zJRup$6L+|MR9?ci&p^CS00UNkF4`wze8FRqsdS z^aQ-cA#~>SncK=lnt4-Z-14!oM8Y@ei+OQ30xhS%*!}d%;5@kj!1okpHB9m*bi!mG zs4#0|5*P_tkp}_J_QLCphv=iWGTPf+3)ZHiF_EL_yeo=S@*>I)8%OzyNaEOsQlz57 zl+o3v9N*Z@UDiR|4G}UaE;m19c1r^7PcP?Iki+ zeI2!{BjQ)0KmYktP>5aX^l@}45yw7q=FHS_wurgvV5L9}oxUZVLSg*dZANSooE0JVxW^mY3tq<7M?c|-5qWipy>QLEL+ z8ddB-rh0>3uNM~E45V+*GfvEOhYjK$h*LVn6dDpy*AgG|YLiC!>X(O(Y|uHaw|buC z@2*{2Nq_ho3Yjp4Ts}Ep-p_fC1x-rCDXPqEg7NWY=ANhA-!4pW7bX!Kks;%jkg@dw z#mJhE4j-0n=lLX-Yt_imbAOaUTGEN^qVli5`R{STDSeRPX_keqp!W|99|Gdkm_cQx zMmlaokV&Eyno1AKqD*ZD5TSz*M^H;p8f4U@Z=mDJU;TCF+!>odj{3a3ymduIMeoAj z(_r_?PV|iDYQ8-airZ0v&5+Sby0(rGe{I-1+dUq4f46bGUR(hwSo+@b&&CPh6rX)4dSzS5hhZjR@lcKFleMp>A+D;#xj2jvLT+78a zEHP6GOW;5qpq{?YJ+EO6_>kM+w&LUC2`o&|`*Cg4`t|F_dp9D{Xa%>4lM^lmSVTym z6GFP+A_FUUo)sl%lx+@eUUN%TusS%bn-d{>3#+GfM=O4?Kr>WeOT9OG4p>79f-q)H z%e$WUa|%!p7xvPewY1T@dJ83nK0ph?#)1kg6eSO*!NIv?feXPK848h-PU()2e2U>G z6Gl$$w1Ji8=H^lhCJax6>rogX>|xEx$r0EdFV+bU4}YQ*qF}wQ+rTy&MMXss%Z%%V5YJFqoAIzeeA{Qtm{FRMk?~gf(IZhYx7=RhTyX!b zoQQoj#R&l*0{6gRucn%yg}H(dB6h_jrz9nQBOROvD;0&!_S2t#cIOxhi|o%K!GPiT zgVm2ZsDf?r@Ah&ksr*owDYFvppr?kvO6-j?!@dYqfFU?GA)ee`#a-w6nEg@uLfOhZahs>p6SP*HxXcJNRk5Y=Bj@9WGt$O+4e zeOTZgS5ug6NrIxtW(~tsCIi*NctL>PPqDt!5S;x3%DiHf|AhH$zSzD#R z&UirW)^5Q7G+hB1OdVG6(F5u)-j56kJ$mjeY`&htz+!%Xy(z@gK7VuDoDC8k9ZiD< z!8kJ-wjVln;DReVCz-C0kkH!>6cU#WdZ%1-^%R2sWvXC0Qh6cd{K3;CEkAV%J|Gdb zn)Q*%9nNC4Rta`>$@b{&ln0N0ObPtFFJVe?ZD>$DQELSrv{Fv!r~zplaxti*Ym3v8 z(fNCqRdbn2+X#Duvm>upVed7wXHL#zzRzkt3wQ|j=*gpld4O*RVI z&B5tA-bD?n*`})@t7a;FH1P#G(YYVbKrbJ_%Q)a^Js)-CqaoRYkII~v2Y9#*){IzX z6)af>8ji2Fa62r}8=ITyvrU`&jEyIl6&?$d39}UlOK@4=t!k*dLy-oG@p8@k>yzUm zb}U&i*SC;5n`KDg@PofLq_FPm8=6DDX{}dEhvp84ks_gs4GrV76cPOjY@s3GiVZ>` zN2;e~1ytKAODlbD4yQX)ABJ;KLK(0z)}DWvD!Y&2I9ouDzkw*kD%#(^l_XQluNMv< zkFdReLCUjQ4tEZ-7HC5hg!SrITR40giX?C&(s--^SP^Stu^RQx>Wj6VG$<=n@B#AJG&f14XU?A!lG)W+KuCWBWJRtf?Bv%;=?R}VH#PT}wZ3&& zxHDzc*Voh3sZ(haW;s(#pu$wa0OseSV`GFzIiVm>;XdptWs~dhz6-8tGeQBJehUY) zI8Un+TZBjvIc37VGK0IkIUc7|B&yR$g@5bEU^JhLYE zx)lx^aOlLHy?N^1S=6qUshtUEEaFc@pdWpBQZ)#lBbXr&QcY#WnvIO<8 zr%~*mKf(k(ZjiC(SHY&_zzPH7rkidOfZZRJFd~Kx8%Co>jS_Zi7$`DWfoN@Q z4L|wm$Hk4Wy+Ro;{Dqz?D)}m z7cEIc;^E~5HDaA3yHhw$FCd9&$Olop8tdet!)@Ki>P^y%9c^^>;)TQ_TLiBKxB|_= zUysHuXxs$jZXN7{$w><#BQCcyoY2R^9Q%+VTZJ>?rQuOX=FX?~P3w_$vH|&Bxyb*WOpfj*At)tQAcYkUM5hUv zl5*@26g3FcgEUu&1-4g&B@F`W2Q(me!d0XTmIWd7WJYYlA&L%{B5Uso9FUm^r$Lg?Y2z^?44DI`nrcCaRdY%>39wg*W4 zeY3&HGn%)<;KJ;S-66ak5(Ab)&{tcyEg*R}sL+D;6hR}$QuICdLs+vV&i*H~2*mJ= z=Oqu?>|y|WKJvTrNTP`#R|2y$j0N|3m6b!+gmlyfd}ESyHDXn89hPEu3CNKnuT2aD zUHt3?8j%x{aqHaqkFkv3;0GFSBYxH*7F zs)@jgIW35(Lny$e%Z_DxKn^3uX)z%GYb!a5YXUAvE2qv8ZNc8wfD=82@co~9@4r=o}n0g=LNDmQElozb15I>R}NSEW!VoQ`KT zM>nQ~#9J(QSq8$j76TI9*uLQ6QEB0qy4L1;>kUpy+*8+OJtv8Xh~#}ze2Z8vrIxkp zpj}M>km0BEvCZ7iV@fh2`ydku-XU=a`zC?nz-=Mjpo{W`MhOqE(nYQ#6>Vq1Ueqo+M~xyQ=1 z^hDBl`ssx|G%;!#O^BWa`Qav0&vX91*=oC;a?rD(9J@slP~Gs3h=S{=@gW&W^IOwl_f7fN0!3KlvB1=N=!i#(Kdv}1%z!j6nu9eH# znfLR7j#yA)l2jVn}l&HFsDe1g!*b+Y=2Zi7#k&72;*Y+ zP6t-m4zRFI!YZ)80>`0>?TJACC4co;b}$laAU9am<-!w*ljcIgA}J;|fm~u_$e6L) z0{l&Emv9itQ&^GkHdH;=J>Me4-HlPP5StcZS5u}GiAG6{e|r<5{$ZpD2?urfeh$ruY4tD`3 z#j*SdMKr7d226qm%Yk9B479jaUnNbCn@6X*4)>{sSjUN^q@=I=iwZIYFd%)AB>)pV zec!%)LPU}64)4M<+Kw5nkYNWRu#}XnOp1#NMY<8}pdMMk-;7j$8XjMh0lO7?bH{P? z56%K)sHyei_o(}b6^lJb0~uGAo!(>eJ?8u^J2pf}Y*CUZRDl?i9MN2vOnU6tu@92c zQjEo2+P8lgQKUX409>4XUrjJ%hxckuw6*%2dU(xgekZ4WRRknCjKzJ0r2fV$hl zRA9tlrgwLn;kPGO zW6Kt5{p1t{jePhjwW{8x`y4p&4vNZSlqnyHBq(H{U_F0nK>Z3u|cv3_)w>)CdP~V8$mf=byU%>kcG~RHIL|iOe2u6FoY8o;IA4;;S?XaSV7O{zXq*H zODf42^k7k#O?BAg82PtOOhK>00B>(^r`KP9U2r0@--?mpK?oy^0qsGYSJlf8G1FO& zSU497z?MQLup+=z*8~>}7jO3q-)m}WqEE`o7FA!UU1P_l(Apg2i%!XZ4Ic1;61+>WIVy8GIJ&lGA&LUm3>clztr#ws4m`a!; zSimP>X~BzW(Yr&EJ5SGjOrPS#|}Z()|XkZ6SCAUl_9zhuB2JWcOsQ z{ms7Dj+Y-)vA|`ko8<`ur2!k-c+XsS8`tkIBZhrl>}p}pFuPk~V`B-)4q|A3%YAz? zR&EoPt%1x0l4Iu}Z*0cP4A>tfI1F*j4n?-WJMA=wFhEH;cx8 zEn+B7ow_E+@rHwDskSE^nv|MS-d-sEhqqy4dzK~NW#RTau_t4@-bS4U6Qw4`Lv1E&d|d1f$gm!dpnC-DBn&Em@ysrD zc6k6n>>PAr^_UahTXwVa`VijWOh`qCymC_uHo?L3%oX%UKfwyC6GDUgTHd0p(3^3L zsS0z>BxyE|nV8=u^=LQ}2-m~%uHCnE8AfWcfZp2gkvBjK}RfzL~1*k$6T4WWv_zghOMvFIr_Bv>bg4JGHfyMOx0J6jzK z7Tx+hQwD209wF{|_Ph9IYu*OdW5Aj~WpD(QmmME%8Mbhu(zcb%XSNGeBf~yeQFpwE zS+5an4-wcd2c9Gxh+^R+urap^EkFmrXKDip;Xh0Sz=_$L1B;D}6`O_Eh*D+FyC(?^b`={zL(337VI1o&PZS?C4Yt4M`yF-a8yaHwkf$ z@d!X=BN(--`3oxRIz&a`6A&pJD!AJ{bvSb7!~hssmrw$|#bu(TkbJtZP4tWRMPE?z zu#o3HF%GY;uInLBGR|gUC?C@|#K!6P4S!AVq z8G;OK3KvGIa7qQJ%e|!SQY&^KB_%AMYPLClv9tPpCFI|affS@lNiX{~10E}X zuC^$#^ATs5a|Q}Z1ZMMutx$B`8da z4TzZ)NkH~YuHMDwGEiz*At~!M&wZ|Ya%^i`Ya-HqK7h^e96!hP7!gc8SEGS(9iCJh zzS>D$SefMj`-PSN(__buKgP`lHH)m_5ByW1fDPgjk}ZI2^wr-6WjvMv7ld!k4aX>Z zOF88QKZyOouoti}8g~m4Owu-66*ZgBl#3gqS-?YN_k1K+c@#7(?Sl=*a|Y-_y?ru| z3xSrPceHsm)qDH01C|}^yBZZSNuU^JYj2$UJ=N&X&_!c8ZL0qTC`u>r(7u(C$pNG~ zMK)1wjyXkMz-xfKvfN0wEMs@ z$cnPao~QA{BMAyAX0h8hb@i0jU#}t=mQ%o}PTsVgCTQ*>hX7I^#)h5eEXwBkq?EXC z!b2lTnvjy%r@ff8#PeStKlj(R^WCe}@ZT_-Von)}JrS)|WVYkqKnt@mDU8R-F>{2} z(mz%Fgtj((B2>3Iy6LX8KjWC&yEI5xD3Dd*P#|Kc%X$&@6|SSl4{73C67iEloyhf# zqdj}}(B#QeKrLQ;^$LUHrF&|n3?XG_lq@!TO=#*Jw{`A+8}e9!o#TGsB_FQP&;W09 zVuKk=#1pXmZnEeua$c9b}hMw zhK7Q>2}lXWCIMj*=;Gj~0|x_BJ}hCdv1H94#8P5=yVBXP?gPN*`FIH(Ko8_gs62sY zBs@!1-8-Nh+^cBXb@b!LL3#U2L zwK=O41@j_;m%R!o?SSY0Z_(KMdlWj7+tfo6Q zO18fGJj*sLSUq$4wC5dqzxhQSS+T!cckR?M zYY+;sx*gEC>WwwDF!cxc9l4*<%V+*TN*T74?NR%D+p!|gi|rK!)+1Ut?t=Hs4wAlSF>*zvE-!9#w9q%)_8{c(C@W<$4Ti9Y4F z1#PJlQk2ny;E}NO2yOJp?u|aQ={t%6oO@U%D?extfeNzk`4^2i=AuGv2|2Jnjn(}A ziUsRI96EP3~k*zw)MaEe_g$9L}ZHah!lLkMqfdRswu!` z;CKM%V6i{!z3Nve3<$hCWvRf9jCLdCh33*X*bhXj#?msMY;i_Jr?nBPaul4GDj1h; zb<^s??|o>JDb)JI=_=!(J?q~6pPIJz=21K_4pc#|`~oYYl~D<4`)loyt7*tBqbMp% zsR{*~#CEP6>GNid{@!`u*P!jeViz`;L8~IH?=WK%9?j;DXhv%hC5DU=R9j}({S`sG zvQ(2Ixp}=tg*_^Nm()W40q-U1pKIZ;@Y<6(1g$OFDu{|+Unb1!R0B9eozo&t5aQ+vE0VCSS1 z7H^_zM2xQ55aWH1kB^pBJ{OVyv`ATy3%3g>K%fYg4cE7bu-7pAwOZD%5hx=v_f8so zo@kV49;w6P;nfa2S%uMHfoq5QXzkFnh>vQjFZ8PM($v({en-o$Z{>r^6@UBV#xW~o zBa+gQr5LPhgp1z&Yia%}vNeCI>xhu~J~`$#O4km7ZE`6QfLUFvGKEsH`AV0y3EC7w zp#nnTynKYomxP`5|?k0e9*UDPyl;z8NrzGY@3MG z!PIr+J#3dzB|I9c-%GOw{fkW40@R&W%c@HMg}HzZ@ep-E-77V)?$tRx_ z)?084!uP|j=|O4f`lF(b6K#9T78Zx4Np^RYkwcL~k#hWcr57Ms1yv%}zOQu~7VLaO zwQbkujVK!IJE$^<|sYl<$jpc5=W~;({BT?E)c&0cRqAvn6gg{%^rkt4MN(q*+Vj zST}!M`~iosTRN%fe@n@Hb`Q1~-$^Mo7Mk8zL?g9xDGZc8BxEv;k9ky>JdLJPbY8bd z7>@>&FNX{iEPmYe6rPN&x>}06<=mQSvnFp=tFRd;eqPq|fgR!&CY}oZzIg-8v9qVY z`s>p#D}LOa`lmMC7U~F_gy^4Ch#GcSTY-#s;pNSN3x0~=*Yd~%-753B}5iyK* zx9)|tGeaPCCglzb2CE(hWO%6N@)qo1nPKuIdNA`XYKKgNf=iLgbm2jjEP|q4!zr%~ zF8t;?sz0!ws^u5RiXW@A$HXIWjH#muBg4LTsC)MtLLF96G)42U5*E8RSn&HF2x=?M z&=8s$NKscyU7ZFJBrV{YB^pWbVOV})@1hZr3sD~|6!n?Xd1`T_iWhljqqA1Z-Kt<5(tW{n3B{l;YM98bM9i|-@zwk6h z(w!euY6TJvu>WC@ID*0@aTF@ThWp}p(kgDHWATZ!rQ!FK9XgXT!=?fmo#+w~Rj*Vi z_WQBD5iCd4QISMx+A-7siaFG}mZDXI1>`8jp;V>YV2_`zTceSO82u?!Qf51xcwO zbRHdQLk0}SJ3Hn_NOc_tHNnk-SzSlVm>?W#79$qaP7Bjtr8rFvR?Kz_$nfpYb1wMe zptx`lE?El|Sd&j}mh)86xrO#O{gX`MR>SOzv#U35{JdAQ^3>&T(U2jSVFM_P6h@x# z?Q*8q)m|vW&-^M&2d@#lyTQ^>icny4V7S`ZGG{x4lOUMiy8}{qNxUErn9;;DjP-O4 zV)E})zlNpQ!vS0)b=w-jm!}HCeE`D>_y`MG_`;xA=mC%~LA~7+E>9NZ5BtkHtq|%M zr&_|^2%Z3awId$4&1I%j9h;~iV*VAVw*R59J!OV${o~1-$fYnF=FPoh4C47G{dugV z_uhMN|1J64VRwb#%67RLUwh-VExKCMxWdqJp+=~oddwUh_^J#5V4!!yRd2u`*wY&% z3#BMUEQP{A43c7VNB}_&M6oM{+q)%U9<4h3C{^n!C@*3z4ThlnHid!Atj}m~r_)_q zF|H;GSENu@$PDxuBp}-i|eJ% zSh`>lHfpGR;DHA!Il;m&La-^=mD=lbp8*I;G1k@B&DN+jxt86gz0+cDSDOUe0Iw(T zQjV8n*&CdSj1-nD?o?7248~T>%r?PrpA!RW-9K67MB@3v0v8cTgUfY zhMo6LckFb<%&T5DZo>3`f41RsA?=7cjbDUtF4EN$MhI(W{6q9vIYW+red_byXLRKJ zI1K9?IL_`})R>K0DKap?I=G&jbunY$fDzA3W`Ry2viSD-KLc_2aV<%RFmt_a9Pc*$ z9WzBpVc~la!CFpc@Faot2@Xv7%-FuUn&Q#;*cTNni@WOjOnEYqhU$>589V#*nnjO1 z^nOKImB97`jRP_IzI-##!+cKwEb0^&7gKy(JjouC{%-3Z-@pAX#}9_%*M|F4XVHk? z?LvW7-H&`{4N@{F#F@- zAIl1vE+Cy*5wp*0Da`U%rDlyUkWZ?=w&h|iT{M)@so?+j{L?cZ{WZ2e7*IO{vP1lJ znw*@BWC{mmrDb%afKaYo`DDkB8w)f6|S*l1Yj2q0TbcO@^PmruWlJYW}C z*EqpVa!J^_u_^|zSPn73D!aCTs)C{ZX2A{^hL`rpgsU0F<pbCyWG7zsv zVUGb@-AsY(rWq)^W7aHjsi@Yq%TgZt@(;3O(qFe*yw;ZtU~p2-r~S4Cne24aoy9M% z|Lv~;a!(moD=-{xaI98=g@=qW`|~M zg&%T2Y|6WxYo-wIM))`g`M<>v<~{!EpMIM9Wc+V#lEQh|pD)X|E}yeO$qInSR)Jpt zKCyeT3~nNw)14HmFa^v^e9kTOK`8?<9{u$d=o-s3GgSCCu*0m-=~t9v%ueOdq;&8$ z9J0Q8C~8#uT_KvN^Clz5ah!p=@_X-6%+v4ffnQ`E8Lo-coew^C`){kB`kK$BoZ&aX zVupKz*CMhaz=Z`VZ(^eXk~}2{R1$=EI}7SSzAn%6*YfQV=IobZSrw?TiY;===#23z z<5v6Azpy8r8Xps$be<{YTFZ4q2oHdfppgc3Za1yJ{Wmo$zc5>|f)&Qql?%4ou(d-_ zW6SX#b&S7R$ge@R{VfUi;In|{#E+xHEw92oe*wr=0$>C4!(F-mOHVK;t91D7T%>yT z7k*_#A%H+lNKiN;{o~f!gnt!l;%xsVb*an@gKtx=D?)f6P;%e}*0wjtpSk@t^UpqR zLbkXH7I~n;GoEAh>}uiqp2A7n$(js$q2Ns+k$YU!6e`VF0L<^BV{PxFP6v?4+4R?E z4GAMy2iJ`nZXmbXeMx0zRwm=VT=;D&YcuUNymYQ2=C|_{gX*V6N5mfQNxJe3{hGh8 zJ3@FQyy`VV8*SFbHQxPK+p~W-(z*{w3KHamzmc-6=>l*$Ap*5~A7LPPlJ1yd%HUa! z!A=m1G9IJ5v0h$h`3kO)PpJ+eUk8%>WC$HI%emIVKBtSulh|zn3u!PjxPN9#a*-AW zoePN?$6SZ(uN>a5{_(?x`2E8oW5d@=oC@qo^X;g@d%TF$d7=#=h(i0ipdBHhWlQMfR{gYnUN5sh@;I7>#^Jc zyQczpo;4`(s&rbAiXRV#&x}|3R&-qL_goUulof)LfiMr!cpGFxN!3M(2O*~6@o zKkTb$MA-Q4s)z85lGO6xZc^zFShW|AiWA%SDKz3QLR3LIYg0IMKV+L=qkn$4@1lIC z2;l+qymVqe6|k^sdvyDpH)?)*cXs30U)~(DAT3fAi>QNpeME#jip?t2@Nd7c1_p&e z*rt3~Xpz9mxP4}KoQ}zvFnM9)VOifKWR^FYYlU1e6Jj8|zkG|i1%as!$OukEaJyvK z;~a_~oWa62DmQ#>HaOczqgAyBO*lEZuD0%UbaX65h9zT}ok8$QIIkmX;<5WH-#J1& zow`|Au!9mrYn#%_HvIDF(#I!u&Rab#{Eo0@Q#~jq@UB2CONzqBBMMjBJHtI~^EV@& z7nNFj*m*3B#sqbyF#FjaVEcyc7!C*UvkGWwysoj%e2%^_y!%aJfnvqe=}*^3V)Gwt z&s4`NfLT!6;U4<7nv?f9uXOyqAw&QglR07oVd@B7Q*`sMwiw@e^{8pvk9Hm0`6SQu zoS@N^9*ndhxboeruPzOr?T#2#BC=Yx&yC@~rUk+-Ad52{(vV5{930YNQjU z!^WNZPq%f(*8Nc#FW(v)8SjjWj1qRK`!<{5c>256@9z~Mobhpk* z0vEPnWRNxNgk)CJZSAB(hFz{x=7WbXYES>WQ`z*MNF}a}4MV~;o^{$`h$14&sW=`# zox8>F_wRoMA>OZOGubWqxdpSpKE$qMUF#v!XFuCq^X~Kl@wic%?(oT>mguxWnqlHl zDSmwi>n&mw3G^n`nmnAg632-^6JpO7mU!E8W=Uqq4Q5B@%%}7^McbZgQTg5$ zMcvMBYxnl7#4KloH42;4V38(}CB|=T{a-2nafAq(m{{B{1yIBer1JztSId$Wf0qt2 z{vA8dsjw0uLn{hRjMF4%=q?(EoVa*+K}Exf=qh7b_mrgBEf%|30`tS(&{d~%i0xg9 zAlU_@OJ8Mhb)A-kJL|;?(K*cgi(33hag;flEcjJ5W}DxqT(}x!|Hl!+gJq<6)JO&t z$5~ii4w8kKqQYWM%H*<>4vhg@uUcrr$kE3tUOBNceQNB}Cr#Tv!z@=#n>NjU@kE!c zqN0pO<&379(-%mAP0V7W69prcmstN_MuIoOL>@qRU%YYrpMwA-pv!e=%)#Q7>+a6u QVa%F-+q93SJpA+j4_IIKX8-^I diff --git a/examples/vnfs/hackfest_2_vnfd.tar.gz b/examples/vnfs/hackfest_2_vnfd.tar.gz index c4d503730c3d83a3fb4e6a216f57a32cbde78fb3..c0cf0ed089abda7af4e1a9c464c6ce35cd1d3561 100644 GIT binary patch literal 1135 zcmV-#1d#h5iwFR4EV5ew1MOE)Z{kJ}&NIJa#62XDFfjy3<-U|AT+b?JPC&Tc(`m8S zuqxj5t=AC#eP?Y$0NdoQY818gCnbiR+1dHNnOP@G;{NH=NPTU8U31^Nxp)Pbrg_)x zLh|gTPqW=gpBbQad)w`F+PzlG1hduYw(l;W`x?odB90W1m`Xr+OjqT8=;r%p;$%Gb z&wmM)C-p!1-rSPlj40m+)T7twl-9r3ZQbtb-|5}mg4s4Zz4ir|{{+F8@ISA=VHmY{ za4*8GWQ(POEB6}OX6q-IZ{ZX1sGJMQ;gPd7l@U{0biPWZ`X!{O9hFUwUgK(iIE1nN z+lT1{#)HXVJR3YTYwyr7WG>|q^&sXL4%CuDKO`e*H5> z*oqhevIQ;_#1X|1ECQdcD9|UDh6)%5R|MgT5$;mhFttpM$%0@S@Ffc&=8B*{|eC8rAzKF?!!a`toaHInvl>v)%F(XXR!ze2j zFhx|dk|ULNh?AwE4V(mYSC`S`W23AIxp?-E^aiFPEGkd+5i&~3J*T>163r?1aFuF~ zp%j5oT5+M#3^L>Ev|u7m73H)}P0XvWDRxNJ4e%l)!PBUiFeC8j>i zocCI(2%AZl47F>+?BOwyk5gBrdSP=hj^oYA3TDH7EMz1s5K+(!`C`AC?Zg9&P~bLe zZ`sksG>u>psJ-EtZK3IqY@vhNhG?378jYughj}P}$zeIu>0vpCqQi7XMk0|_uvFzh==%lj*eKbi z5zs)$tr5(%8UJ3%dqjB8U}DB1b-B#zobL?dgr`B((#%B;1zvO6Bq2N@k zQm?~7f64dUrI=1l-Ea+Wo_zb`AFFlNjz9O2k%{7 zU1jh$HT}E!VRm_0xS7qi_i!J}=r!-mId5%gUDnpQY;L(OZ+X@-2!99#B98ms#swip zjKpwrfAv4rP4eBn{r;&9<52FKlH@*

pldjE3Oe3N7hZD_>yBn-q>Ad17rBtWZZs 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 QVa%F-+q93SJpA+j4_IIKX8-^I diff --git a/examples/vnfs/ping.tar.gz b/examples/vnfs/ping.tar.gz index c19270b81c1f6524a419ce2f20bd4bae1d4952b0..d8a023cc6759392710b7724df40e035811a5a130 100644 GIT binary patch literal 1183 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 TMvWRZ{sR60%(6V&04M+e_2;fX diff --git a/misc/eu.5gtango.emulator-example-service.0.1.tgo b/misc/eu.5gtango.emulator-example-service.0.1.tgo index a8791396c00a92efbe1e248f5dba2b0be9a0b6e4..36bfa4f8036516405efed0155eeebe1519c0f2ae 100644 GIT binary patch literal 4876 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 XiN2NT1*$*tsLtN@vl6SY{1N>Z$B(5Q literal 3513 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 Z0zZe;ZvsS@e?BkK&kqOyR9yM__aBZ_cQyb3 diff --git a/misc/tango-demo-service-project/project.yml b/misc/tango-demo-service-project/project.yml index 9c53a0f..a1b1bc9 100755 --- a/misc/tango-demo-service-project/project.yml +++ b/misc/tango-demo-service-project/project.yml @@ -1,3 +1,24 @@ +# Copyright (c) 2018 by Paderborn University +# (manuel@peuster.de) +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the OSM, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +--- descriptor_extension: yml version: '0.5' files: diff --git a/misc/tango-demo-service-project/tango_default-vnf0.yml b/misc/tango-demo-service-project/tango_default-vnf0.yml index b08bb10..7a9e4c4 100755 --- a/misc/tango-demo-service-project/tango_default-vnf0.yml +++ b/misc/tango-demo-service-project/tango_default-vnf0.yml @@ -1,3 +1,24 @@ +# Copyright (c) 2018 by Paderborn University +# (manuel@peuster.de) +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the OSM, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +--- descriptor_schema: >- https://raw.githubusercontent.com/sonata-nfv/tng-schema/master/function-descriptor/vnfd-schema.yml vendor: eu.5gtango diff --git a/misc/tango-demo-service-project/tango_default-vnf1.yml b/misc/tango-demo-service-project/tango_default-vnf1.yml index 7bcecb6..b5ed4c5 100755 --- a/misc/tango-demo-service-project/tango_default-vnf1.yml +++ b/misc/tango-demo-service-project/tango_default-vnf1.yml @@ -1,3 +1,24 @@ +# Copyright (c) 2018 by Paderborn University +# (manuel@peuster.de) +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the OSM, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +--- descriptor_schema: >- https://raw.githubusercontent.com/sonata-nfv/tng-schema/master/function-descriptor/vnfd-schema.yml vendor: eu.5gtango diff --git a/misc/tango-demo-service-project/tango_emulator_example.yml b/misc/tango-demo-service-project/tango_emulator_example.yml index 43f2220..21f029f 100755 --- a/misc/tango-demo-service-project/tango_emulator_example.yml +++ b/misc/tango-demo-service-project/tango_emulator_example.yml @@ -1,3 +1,24 @@ +# Copyright (c) 2018 by Paderborn University +# (manuel@peuster.de) +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the OSM, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +--- descriptor_schema: >- https://raw.githubusercontent.com/sonata-nfv/tng-schema/master/service-descriptor/nsd-schema.yml vendor: eu.5gtango diff --git a/pytest.ini b/pytest.ini index 137eee5..4dbf692 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,3 +1,23 @@ +; Copyright (c) 2018 by Paderborn University +; (manuel@peuster.de) +; ALL RIGHTS RESERVED. +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; Neither the name of the OSM, Paderborn University +; nor the names of its contributors may be used to endorse or promote +; products derived from this software without specific prior written +; permission. [pytest] addopts = --ignore devops log_level = DEBUG diff --git a/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py b/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py deleted file mode 100755 index cb18c57..0000000 --- a/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py +++ /dev/null @@ -1,276 +0,0 @@ -# Copyright (c) 2015 SONATA-NFV and Paderborn University -# ALL RIGHTS RESERVED. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Neither the name of the SONATA-NFV, Paderborn University -# nor the names of its contributors may be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# This work has been performed in the framework of the SONATA project, -# funded by the European Commission under Grant number 671517 through -# the Horizon 2020 and 5G-PPP programmes. The authors would like to -# acknowledge the contributions of their colleagues of the SONATA -# partner consortium (www.sonata-nfv.eu). -import time -import requests -import json -import unittest -from emuvim.test.base import SimpleTestTopology -from emuvim.api.sonata import SonataDummyGatekeeperEndpoint -from emuvim.api.sonata.dummygatekeeper import initialize_GK, parse_interface -from ipaddress import ip_network - -PACKAGE_PATH = "misc/sonata-demo-service.son" - - -class testSonataDummyGatekeeper(SimpleTestTopology): - - # @unittest.skip("disabled") - def test_GK_Api_start_service(self): - # create network - self.createNet(nswitches=0, ndatacenter=2, nhosts=2, - ndockers=0, enable_learning=True) - # setup links - self.net.addLink(self.dc[0], self.h[0]) - self.net.addLink(self.dc[0], self.dc[1]) - self.net.addLink(self.h[1], self.dc[1]) - # connect dummy GK to data centers - sdkg1 = SonataDummyGatekeeperEndpoint("127.0.0.1", 55000) - sdkg1.connectDatacenter(self.dc[0]) - sdkg1.connectDatacenter(self.dc[1]) - # run the dummy gatekeeper (in another thread, don't block) - sdkg1.start() - time.sleep(3) - # start Mininet network - self.startNet() - time.sleep(3) - - print "starting tests" - # board package - files = {"package": open(PACKAGE_PATH, "rb")} - r = requests.post("http://127.0.0.1:55000/packages", files=files) - self.assertEqual(r.status_code, 201) - self.assertTrue(json.loads(r.text).get("service_uuid") is not None) - - # instantiate service - self.service_uuid = json.loads(r.text).get("service_uuid") - r2 = requests.post("http://127.0.0.1:55000/instantiations", - data=json.dumps({"service_uuid": self.service_uuid})) - self.assertEqual(r2.status_code, 201) - - # give the emulator some time to instantiate everything - time.sleep(2) - - # check get request APIs - r3 = requests.get("http://127.0.0.1:55000/packages") - self.assertEqual(len(json.loads(r3.text).get("service_uuid_list")), 1) - r4 = requests.get("http://127.0.0.1:55000/instantiations") - self.assertEqual(len(json.loads(r4.text).get( - "service_instantiations_list")), 1) - - # check number of running nodes - self.assertTrue(len(self.getContainernetContainers()) == 3) - self.assertTrue(len(self.net.hosts) == 5) - self.assertTrue(len(self.net.switches) == 2) - # check compute list result - self.assertEqual(len(self.dc[0].listCompute()), 2) - # check connectivity by using ping - ELAN_list = [] - - # check E-Line connection, by checking the IP addresses - for link in self.net.deployed_elines: - vnf_src, intf_src, vnf_sap_docker_name = parse_interface( - link['connection_points_reference'][0]) - print vnf_src, intf_src - src = self.net.getNodeByName(vnf_src) - if not src: - continue - network_list = src.getNetworkStatus() - src_ip = [intf['ip'] - for intf in network_list if intf['intf_name'] == intf_src][0] - src_mask = [intf['netmask'] - for intf in network_list if intf['intf_name'] == intf_src][0] - - vnf_dst, intf_dst, vnf_sap_docker_name = parse_interface( - link['connection_points_reference'][1]) - dst = self.net.getNodeByName(vnf_dst) - if not dst: - continue - network_list = dst.getNetworkStatus() - dst_ip = [intf['ip'] - for intf in network_list if intf['intf_name'] == intf_dst][0] - dst_mask = [intf['netmask'] - for intf in network_list if intf['intf_name'] == intf_dst][0] - - print "src = {0}:{1} ip={2} ".format( - vnf_src, intf_src, src_ip, src_mask) - print "dst = {0}:{1} ip={2} ".format( - vnf_dst, intf_dst, dst_ip, dst_mask) - - # check if the E-Line IP's are in the same subnet - ret = ip_network(u'{0}'.format(src_ip, src_mask), strict=False)\ - .compare_networks(ip_network(u'{0}'.format(dst_ip, dst_mask), strict=False)) - self.assertTrue(ret == 0) - - for vnf in self.dc[0].listCompute(): - # check E LAN connection - network_list = vnf.getNetworkStatus() - mgmt_ip = [intf['ip'] - for intf in network_list if intf['intf_name'] == 'mgmt'] - self.assertTrue(len(mgmt_ip) > 0) - ip_address = mgmt_ip[0] - ELAN_list.append(ip_address) - print ip_address - - # check ELAN connection by ping over the mgmt network (needs to be - # configured as ELAN in the test service) - for vnf in self.dc[0].listCompute(): - network_list = vnf.getNetworkStatus() - mgmt_ip = [intf['ip'] - for intf in network_list if intf['intf_name'] == 'mgmt'] - self.assertTrue(len(mgmt_ip) > 0) - ip_address = mgmt_ip[0] - print ELAN_list - print ip_address - test_ip_list = list(ELAN_list) - test_ip_list.remove(ip_address) - for ip in test_ip_list: - # only take ip address, without netmask - p = self.net.ping([vnf], manualdestip=ip.split('/')[0]) - print p - self.assertTrue(p <= 0.0) - - # stop Mininet network - self.stopNet() - initialize_GK() - - # @unittest.skip("disabled") - def test_GK_Api_stop_service(self): - # create network - self.createNet(ndatacenter=2, nhosts=2) - # setup links - self.net.addLink(self.dc[0], self.h[0]) - self.net.addLink(self.dc[0], self.dc[1]) - self.net.addLink(self.h[1], self.dc[1]) - # connect dummy GK to data centers - sdkg1 = SonataDummyGatekeeperEndpoint("127.0.0.1", 55001) - sdkg1.connectDatacenter(self.dc[0]) - sdkg1.connectDatacenter(self.dc[1]) - # run the dummy gatekeeper (in another thread, don't block) - sdkg1.start() - time.sleep(3) - # start Mininet network - self.startNet() - time.sleep(3) - - print "starting tests" - # board package - files = {"package": open(PACKAGE_PATH, "rb")} - r = requests.post("http://127.0.0.1:55001/packages", files=files) - self.assertEqual(r.status_code, 201) - self.assertTrue(json.loads(r.text).get("service_uuid") is not None) - - # instantiate service - self.service_uuid = json.loads(r.text).get("service_uuid") - r2 = requests.post("http://127.0.0.1:55001/instantiations", - data=json.dumps({"service_uuid": self.service_uuid})) - self.assertEqual(r2.status_code, 201) - - # give the emulator some time to instantiate everything - time.sleep(2) - - # check get request APIs - r3 = requests.get("http://127.0.0.1:55001/packages") - self.assertEqual(len(json.loads(r3.text).get("service_uuid_list")), 1) - r4 = requests.get("http://127.0.0.1:55001/instantiations") - self.assertEqual(len(json.loads(r4.text).get( - "service_instantiations_list")), 1) - - # check number of running nodes - self.assertTrue(len(self.getContainernetContainers()) == 3) - self.assertTrue(len(self.net.hosts) == 5) - self.assertTrue(len(self.net.switches) == 2) - # check compute list result - self.assertEqual(len(self.dc[0].listCompute()), 2) - - # stop the service - service_instance_uuid = json.loads( - r2.text).get("service_instance_uuid") - self.assertTrue(service_instance_uuid is not None) - requests.delete("http://127.0.0.1:55001/instantiations", data=json.dumps( - {"service_uuid": self.service_uuid, "service_instance_uuid": service_instance_uuid})) - - r5 = requests.get("http://127.0.0.1:55001/instantiations") - # note that there was 1 instance before - self.assertTrue(len(json.loads(r5.text).get( - "service_instantiations_list")), 0) - - # stop Mininet network - self.stopNet() - initialize_GK() - - @unittest.skip("disabled") - def test_GK_stress_service(self): - # create network - self.createNet(ndatacenter=2, nhosts=2) - # connect dummy GK to data centers - sdkg1 = SonataDummyGatekeeperEndpoint("127.0.0.1", 55002) - sdkg1.connectDatacenter(self.dc[0]) - sdkg1.connectDatacenter(self.dc[1]) - # run the dummy gatekeeper (in another thread, don't block) - sdkg1.start() - time.sleep(3) - # start Mininet network - self.startNet() - time.sleep(3) - - print "starting tests" - # board package - files = {"package": open("misc/sonata-stress-service.son", "rb")} - r = requests.post("http://127.0.0.1:55002/packages", files=files) - self.assertEqual(r.status_code, 201) - self.assertTrue(json.loads(r.text).get("service_uuid") is not None) - - # instantiate service - self.service_uuid = json.loads(r.text).get("service_uuid") - r2 = requests.post("http://127.0.0.1:55002/instantiations", - data=json.dumps({"service_uuid": self.service_uuid})) - self.assertEqual(r2.status_code, 201) - - # give the emulator some time to instantiate everything - time.sleep(2) - - # check get request APIs - r3 = requests.get("http://127.0.0.1:55002/packages") - self.assertEqual(len(json.loads(r3.text).get("service_uuid_list")), 1) - r4 = requests.get("http://127.0.0.1:55002/instantiations") - self.assertEqual(len(json.loads(r4.text).get( - "service_instantiations_list")), 1) - - # stop the service - service_instance_uuid = json.loads( - r2.text).get("service_instance_uuid") - self.assertTrue(service_instance_uuid is not None) - requests.delete("http://127.0.0.1:55002/instantiations", data=json.dumps( - {"service_uuid": self.service_uuid, "service_instance_uuid": service_instance_uuid})) - - r5 = requests.get("http://127.0.0.1:55002/instantiations") - # note that there was 1 instance before - self.assertTrue(len(json.loads(r5.text).get( - "service_instantiations_list")), 0) - - # stop Mininet network - self.stopNet() - initialize_GK() -- 2.17.1