From 63c3927d4dd6f604bcaa67bfe492586f626af076 Mon Sep 17 00:00:00 2001 From: Lova ANDRIARIMALALA <43842786+Xpirix@users.noreply.github.com> Date: Mon, 29 Jan 2024 14:44:35 +0300 Subject: [PATCH] Update repository url when creating or updating a plugin version --- qgis-app/plugins/tests/test_plugin_update.py | 136 ++++++++++++++++++ .../tests/testfiles/change_metadata.zip_ | Bin 0 -> 45562 bytes qgis-app/plugins/views.py | 2 +- 3 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 qgis-app/plugins/tests/test_plugin_update.py create mode 100644 qgis-app/plugins/tests/testfiles/change_metadata.zip_ diff --git a/qgis-app/plugins/tests/test_plugin_update.py b/qgis-app/plugins/tests/test_plugin_update.py new file mode 100644 index 00000000..5ee6312e --- /dev/null +++ b/qgis-app/plugins/tests/test_plugin_update.py @@ -0,0 +1,136 @@ +import os +from unittest.mock import patch + +from django.urls import reverse +from django.test import Client, TestCase, override_settings +from django.contrib.auth.models import User +from django.core.files.uploadedfile import SimpleUploadedFile +from plugins.models import Plugin, PluginVersion +from plugins.forms import PluginVersionForm + +def do_nothing(*args, **kwargs): + pass + +TESTFILE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "testfiles")) + +class PluginUpdateTestCase(TestCase): + fixtures = [ + "fixtures/styles.json", + "fixtures/auth.json", + "fixtures/simplemenu.json", + ] + + @override_settings(MEDIA_ROOT="api/tests") + def setUp(self): + self.client = Client() + self.url_upload = reverse('plugin_upload') + + # Create a test user + self.user = User.objects.create_user( + username='testuser', + password='testpassword', + email='test@example.com' + ) + + # Log in the test user + self.client.login(username='testuser', password='testpassword') + + # Upload a plugin for renaming test. + # This process is already tested in test_plugin_upload + valid_plugin = os.path.join(TESTFILE_DIR, "valid_plugin.zip_") + with open(valid_plugin, "rb") as file: + uploaded_file = SimpleUploadedFile( + "valid_plugin.zip_", file.read(), + content_type="application/zip") + + self.client.post(self.url_upload, { + 'package': uploaded_file, + }) + + self.plugin = Plugin.objects.get(name='Test Plugin') + + @patch("plugins.tasks.generate_plugins_xml.delay", new=do_nothing) + @patch("plugins.validator._check_url_link", new=do_nothing) + def test_plugin_new_version(self): + """ + Test upload a new plugin version with a modified metadata + """ + package_name = self.plugin.package_name + self.assertEqual(self.plugin.homepage, "https://example.net/") + self.assertEqual(self.plugin.tracker, "https://example.net/") + self.assertEqual(self.plugin.repository, "https://example.net/") + self.url_add_version = reverse('version_create', args=[package_name]) + + # Test POST request without allowing name from metadata + valid_plugin = os.path.join(TESTFILE_DIR, "change_metadata.zip_") + with open(valid_plugin, "rb") as file: + uploaded_file = SimpleUploadedFile( + "change_metadata.zip_", file.read(), + content_type="application/zip_") + + response = self.client.post(self.url_add_version, { + 'package': uploaded_file, + 'experimental': False, + 'changelog': '' + }) + self.assertEqual(response.status_code, 302) + + # The old version should always exist when creating a new version + self.assertTrue(PluginVersion.objects.filter( + plugin__name='Test Plugin', + version='0.0.1').exists() + ) + self.assertTrue(PluginVersion.objects.filter( + plugin__name='Test Plugin', + version='0.0.2').exists() + ) + + self.plugin = Plugin.objects.get(name='Test Plugin') + self.assertEqual(self.plugin.homepage, "https://github.com/") + self.assertEqual(self.plugin.tracker, "https://github.com/") + self.assertEqual(self.plugin.repository, "https://github.com/") + + @patch("plugins.tasks.generate_plugins_xml.delay", new=do_nothing) + @patch("plugins.validator._check_url_link", new=do_nothing) + def test_plugin_version_update(self): + """ + Test update a plugin version with a modified metadata + """ + package_name = self.plugin.package_name + self.assertEqual(self.plugin.homepage, "https://example.net/") + self.assertEqual(self.plugin.tracker, "https://example.net/") + self.assertEqual(self.plugin.repository, "https://example.net/") + self.url_add_version = reverse('version_update', args=[package_name, '0.0.1']) + + # Test POST request without allowing name from metadata + valid_plugin = os.path.join(TESTFILE_DIR, "change_metadata.zip_") + with open(valid_plugin, "rb") as file: + uploaded_file = SimpleUploadedFile( + "change_metadata.zip_", file.read(), + content_type="application/zip_") + + response = self.client.post(self.url_add_version, { + 'package': uploaded_file, + 'experimental': False, + 'changelog': '' + }) + self.assertEqual(response.status_code, 302) + + # The old version should not exist anymore + self.assertFalse(PluginVersion.objects.filter( + plugin__name='Test Plugin', + version='0.0.1').exists() + ) + self.assertTrue(PluginVersion.objects.filter( + plugin__name='Test Plugin', + version='0.0.2').exists() + ) + + self.plugin = Plugin.objects.get(name='Test Plugin') + self.assertEqual(self.plugin.homepage, "https://github.com/") + self.assertEqual(self.plugin.tracker, "https://github.com/") + self.assertEqual(self.plugin.repository, "https://github.com/") + + + def tearDown(self): + self.client.logout() diff --git a/qgis-app/plugins/tests/testfiles/change_metadata.zip_ b/qgis-app/plugins/tests/testfiles/change_metadata.zip_ new file mode 100644 index 0000000000000000000000000000000000000000..4b4dd6d55ffeb010ad37d7f21ca0e47b2f1fbbf7 GIT binary patch literal 45562 zcma&O1C%ArmNs0jF59+k+qTV9w(Tyvx@^0;YHz};4E6vF1O$fq=W@kAO8#oU0Y&J_C});8Ig^0`0bN1@0TKLN$v^cOm;#J!>@DaW zJpZBC|D4nisrtVtu2x&OTVO==oz{q6BTlrsn2CgJR1^g)2DQ4bs`H9(nkKfAx?P7_ zy?FhSVy6|`D9SF4;d4IpIGi}=uM>f2qc5sB+}0b-2}!cFw`Y(>aJN9xEp)Yrse9Co z6xTp{pOiOpeDQ+P+oLHb_JAu0#fB3uhvO6`8JqE(2Sg$176_BzqSt8;s1blNblE_& zI+tai9RjqOWPqv_I}>XjY3N}sAZy{tmv!B(Nh;Sq&ardJ_#8a0ag4G)$x9GzLT&sGjQIGv5yiWo zdBLuATaeD{rU8v6tGJ)_7+)qNE3R~OF5((t_o4za!Qa%=F6A+Opsg>6FrZ=4=eS8U zHi;B#%j~F5YKo<(mQgVEJj4=#HAnz+jp#0`{<_^gSZu4kDF$rJ;VsM(W=LQM2o$8h z^s8~|5Z#bgXeHPk@}cxN%NJDy6KTm_BY(|t;Mya{l(7)H=}bq5!q_wAbs*->fG*9< z1jr)3Z&^2YK%7s_`ALX1Tr@i7*`lV1w_JxFrW;ga!2iNwxZB#G-JsA?J*IT=j~6Qx zGYW5TWXMmJi-$-_k6e|2Fmq|Y%a0G|7qZJ%!e#j#Op%cB{SB091(6XTAc=lAhR z%kJXSqqm6flOp^j(vRcWb;-Dt>fXQjt}cW26x_*0Risof#5oR?=FdELjt}TikMHBg{y+EdAfcm;I#Zs&7^>6_B3n z8{z1@xuJZFfiH{`n_SJ>^g#P?jlc^j)o%3bTIuUfnYdV@5lXa;IC^ETfl$!zV)tHQgJXKAT}5v zAoRa`pM$Z1i@m)Ky@|QS|LAn;a`qeSh+StIu-hW;ptY!Ps+4KX^fs7u$fa)ZVus&z z6KIf%B{K;0?frZ$B&BGE%VvSleKe(6?9DePcwdXWp4=21LEQVpVTL*xj`7RvQ+pycj@Nup_ z?4<9U8fQnBhY9?EImF528|*Fe0=^(g9Y{~=c~80+UxGcp3&X1@qqE<*b+1Kw7nu%m zTb4msN}s9+zCN0Q0^U6D&*8cOh9?&uXXWfGMv%8NK_mnv^hA?iHf-I%i?w_vJ7u-# z3J74?>pP#@Io(ThTteL#tWKnRr_#yq0t$ng!NF}{4Q0W8(NpGcG2wRrAo9ySLn3lU zVV)>)DxmoDi(wln0N?4Tw;KnJIU3ReSJj7sQsRDK6}|&+Zq~urKg~cK_Vf&QOI?7f zK>vyfKQ6ws(uSwGcz0cMHu?cqjGj;YalLq~=9k1iP%z>l^>F~<$egXq3vG5z=pq=) zma9}xkTkQ+V|Y!e7aWa3a~9OLEW$` zuVhV~ZbEa&KnkX!z!XqCC<`1rmoWBw0Ni07IXHjga|~XomTb?Vd2!;y57L6*C!-MU zjR*BDn3>oO(xG6&d(OzZWHQdAk7TmCVe8l`Jd6+B=g^vAD3UiEZno%A&QH$CVwIL~levJ1s!l|^YBp=I zp7cPRy1);=tsvc~>2R#Weh!Cz77-+;wmm_WoBSseOLRQgL${vMS8CiZsp4tD=z zNcyfQF98RQ{g*yCDM?Y~KP|=|!TbjCXOHA#?)s+zc2<@U2CA9DJ^6D0VJssd3iS2Y zFR!aK>CYJ`2T3hwARri&zXTX4BMbA-Nk|tdIWfpp5Hxfo+HA?-4j>@VNGVYvRmtJ% z6d6lhHOyiEqYZD1!zo#Fa;bSz@{(WAf<(n&KPlIK5EjE!tCi6VDH7z_vC@b!qJp$5 z1JE$cO~let@~UCpdLhV~9gUEM6xXSVW_L;Naz-b*j&L#9MDSUNnm^RT@3PrwiQ_$<8z@V=efwmxJ-0B?4$#vP)i(hf0>mHZ z3)j_PpqPaPer{Hpo0c?c&8X4DhHc@11`GNs?BV!r zD*JKOi`-@EZrRWbh(fnVtPK+BI9Rw|Kq+Dg3ZA;N!Ej+X_N%^17{j~Tfvg}r4<2g2 zuO<#nK(G2>O`q)Umos?yd;vR!LerQL6w5X>sG$dRF|Dl;68Q2@_J3%VBylCq5}#(G zPh|^CZ3lyr25E7xdq)fhS(<2$P8dfMVb)mNdU1$P0* z@-B)k$69A){UF0`KJMo0|Lra+IfzTVbEc_PJ3Y@rMbAo?ki_53>H$2oYcy2j6zee3 z52xMvaLJJM${z;sik&7ud@;!v%`ci+vw>qk^J%o8)PkN~Qr(3>38%5QETO1nVrCz1 z@W;6F^@(P&m_~LWl?E(Xi7(ANIF$!ku!>bvu4ALI{`eBVxZ;3I?~&$Zm z)I9b6`T_LDe?J1w)~LnmkXBtnm?CV7OWYpX-af2H7&qAEFKI z%dgFb)0^lU@nW*l)H%kV@WT--KNqC@ z4N%@*GaW_#Xe7dnuiC5=Rz%Tcxr?yQ|1e9v_53B`z2eF_!S{Q%V%l;4%RfP#rS_EL zC_kA9y=fMLmWutsDKj;tcW^D+BUnU*IKT`F_bsds=!nb#Rni`xSZU97wYfO3kh%Wt z9+t7SJ}9#e%8>ET!9-8qiCvBMmQ3IuM+K4+lNYTKHVpbZ*wGIErUVQH1cZk3Cm8%a zto-v)<9~a`(Au(J=S22We%q=OI^KPRa|x@g)-z&y~w7? zqQwr*TVs?L&8v@nDK+ZFhmS?E?m(j4D@=<@pS?uKe7+ zK(0SvCU`TVKIcEs{@j~oh(Kw|uEXHnec2C1x_f;YcoyJqY6y>Ety-|E2B!3xY($(W zo49O67pU*5(CmjP5u=V-bW+pmb5M_1$L(DwmTK^=gk`7z`C;Tn0wmqVCTn&%yjW^r zt$29etbM?2L|{q`O@bNj>jlEf-O4^@xk~2gY~VdWkJji+qjrOW(n|}=2W5Mmnav(% zRZRiA`Ou8zDC0dVo6_hP33sj)3ky&i+#>jy#uJeCHi5@yrfs{LE4lmZ=5MjbK8xbskN)9>oBZcL%mAfCJ!&=lX{}9IWL_}AwRz# zp@%UioipA8*7379p^u6*C;$R2eM0Psmi|fKdE@&cv_TU2SBgB=zAg)aUy)+%(t~tC zKbfJ{fy`Iu?2OZeH-o-_dfnKCIdeMceFKUP=cAw^-qjK=G=@_>TBvJaB-Oq=EgF^% zJy~lra}F`NwXdeP z%+8bYXuf28!?YC2{~Zqft`i_6BICQpYX}1;u7dE;j%C z{U{|O_M^koEaY>$8(+cS`zPmzZ=HwKp?Br z^Yn#dR$Bp<%_40 z!^@yy?Z`O>nKMc31zJ;O&xHe3upi(FPh?Z}wcb9Dt7y0iNjdp~2X!xC)csbtEAUy> z+sxp=Vz_z(zb8)-I0ejy*2cj*o*waz+)Kh`7a|ArP}zIRN>yQWPWovzgW0l-=Y{hE z%hH}2t&}?~*&c)!d6tB(3F-#>#E+BKKic#)P$LmWINm#fX0|Q{O18Y&rlQOX^U~Od z<2sTuU7Es6Pv!>rpb_VpLPb~I+E(})cB3x*h_vp|6!1GJ3breCi^ge>&VEAbeZNFo z{b?oT>GB+-2EBH_O%`uW^Ruymm*m=w!L7{R1HKMc9|$}m+Z&VkfmbeYY%O|SPetz3 z0+QMWB?!EO487*y_n%-5RLLL7)FJ38T5{XW14TJe??JljIuVQEoZDcYL&ZihZdT8q z!<@zruH<<6hWnF4-RAe268MEKsFOs_ycF=y=QAGQpGs;u+~liect}vr$>jN4(T~h^ z2Pt^W^MZzb^p*XESWH1^UV*Z!wxT=2hiLPy0galqN|W>XDe@ZXXV~dydoVEwh5q#^ z3w;D_^gp}n?WP~vw*_a`2oXF|)-l2ReVO)ockGX~E#1Leqjk@AaQZNxLm69FP0n$r zW1xQ{7gYe3LU@Ypc`!Bor+TnY8BUFp__xl?&IW`eI-(8ga5%h(aH>EXoVLl%ozyED zsQJ2^q4`kpTm2ZXT?!*Aus$wqZI0Eqc8TJ>#fhLDQoN2J(%e!h2WyH0*ntN5MOb1o zcm!UeCtRW*Cw`3{TfL%Ps^M_0Wwwi#Vg5&JPs;?cPB zO`BTw>`^eKst*(RFm0ioURf<@-_!A%?3@b$itCxMZ*Vfq zJuXwS=zL?GoX|a8HK4(3qp72fI&2qGvU6_@FYf6i&sIWuy6gsmV4>$X?IY6Mj>mir zp%_J>2FbYZ%Fqu9v4q&)l{l1}l`IQrY#(eVn6kU{2-?!(Qb5Twxwph{UeF>c5Mjr5 zvR$ta-1s}~>8D;@g6;@R6i~}3ue>~33*J^4X*OP4MbT%p2#I7+r)G+@JSXw?f@uPQ&3a!B&QTF@u0U`XdGI7IM! zK^JOh$Qb9GTA6%6H$}yi-U!e^)G(%lFgFCN3zzRM;5b-1#%67l6Md+3{NJv2Via7TPN)KWr z(1OxE1zk?AOfuBar)e7ZYkH80#QMhxSAB!`!^F@^dHaIM02Xd5o90Oa|DAx24t4Qq z5Mjse*bHh`qK!pEr+30**$U&-t{np@8mRT)|4&Hu*AlP*zojhUpM~AyKZ5ahNM&p0 zVq|LMVnpxa;qo8L!CC)xIoLLy&l;2oHq8ACT4>3EYmEw6q*RzH5I$e#B#)=k0?B_d zHM6LvyPH%5REyxm*QN_*MT`D=DAq7qC|(3uAqWC|hsK<9D1)et+wnMA`+c2(UERWv zaGSB+YNWSM`3Fk8!^WN{#|gL%6RZ6Mg&~mvyR@$?DrMoDDlp#(9$H|_UHfZJs|{CO z?Ps>r4(7ed@)Jhvuuiu=jfmMqmMH{706wi5cP`=Nm{E|bb7bhkG~1H9?^9k~WQn93~WmFhU+|&lDR^)bZPD^n<=Fkw$g}h;QkW4 znXQ=eYLz-lRQ167n6#M{b`DQFPxGvb)zBs$w7l3nlCM)E@0ShK$wCdxDZ)P|JkzpG zdAShz0O${XotFRtLjL=N%Swre$*YL{W3GRVSN*FM@@!ol=k<{kKMS-kku-f;wb|R1 zj!|=Q9UU>LsCNi|w0C z;|`kn#dhW+4vgn#1%an$8D|Y`Yx1E6FBxg;%SdhmQnb|LbR+(r^Ykx$jm5__1cFpM zPp#xigsUk|atzZiaLJJXtlBJyoV?YI) z{^VTSWHwurvA(?xJoI%?dTo+V${|gXdZVAdD*0%`?j${ZI-J1so$8t?%Xk$phn`MP zD9d;OD-P}`=QPEuy^&t~Sm-15ODw`xV)iPU>*@tJoR& zoK?i~nqSV1wwy?hdEqZrhFE1TC2oqPGRET2OD*LrIjyE0lZ4o7Ii7feY6evr@rgNO zvdxMx3(ew+$eAQm>w|5?wu~^e2|aci5if5l^I?Xo6ZXy3`o4#tC9#Y!`_VISxU>-e%e_Sq$A}GN2AYas|6)!hL?oRiz7j@8P|@yFxVh@{r4QpN0euI?B#-q& zewW5|t}hp0_WpY{lLCjwX8Asy-Q+z6mX4qu=PVc8RW`*(?S@|!1f1gaf_r!=w|X|vWq78#jTsP~v)h>c5F%t6o znQTJR?>UsW0_7~1{6y3`CpG7j&|MOhF~U3){X6O$*#RL-(2n-rW$JL)$O^AIxCg1& zCMCH;=AlFpUKw{Jb1?#|M+zOxYl8RZ_qlKM&n(}Cra;!TBT_38yHr$#iGT=D-UghZ zOghFPYHg)Zg4mpaXdI+(N*k%M;N@qnJ2R;LT1YZDFlOp#zp>UYeLsn_ zo1EM`cH_k3k0n36bc`m*)ekG2=5yxBk{up6vv`dpc)#`F>BQN*KLK5RD3uY{8&*uM zppF6xM+UlAPu^PeM63y64O~Gs#vD4cO)XLk5%;dhg#sDd$1txBy z!tZvEMkfptymF7`6modOEbQleNbC6~7Q=65<=|yQi$HUwx~LcX$`;QBeWT+sVF%zVc724K-`_ZHQ?W`MB8_y?-AU*4`!INm<%+7FDB;( zBwJ;01Y#-0e@MIe6`gk$pxd1R_ts}xPf5o!KbX!ElFqX9zz@<_xg9CoCX;ubJlhCA zrkNaQ9o!%$r^-+>h{jS>Nt4!~AUH8}t8anqR3SqtolPJq*wqp)={Bpu##Z9J;?&uyuKV~FT%h1Qoj`I{L zgQ0i9J}6pNv8920L_UgZZFsoMVM@%%cjDQD>X>5nBWGa+luz$C+Zvb<*(G`g%Bz%X zeH`MZ03sroju?LhLO6-ixkc{CRjEVvF&xLZ6hZ74g-(OdATe%;QD`ETfLN5rxQa#5 z(GLr$c3^A47DyP4!;U5$W<+K1(6HaJoku<%Bpaes?&EyY#8R-5=2M3&VITyt7)#`h z-H5Pj`3@*MrdTEI*&`_}jt3E%*!wZUtR8wA~JuOma6bgQ->Ez_T- zEMnn2dgMyUS~iOpGku^nk?}ZUCkDR#SB@>zv!&wSQSojwoSJW2FFh10;A_{B;=(1Y zVheGIUW$?~0q1Dhw!mtSueOlo-CMX&EGT^25_P^1GW-QaGswM&J?wXkN5N>O-YOOyBKOCtq=p#bA4K> zVyi%==NQozsR%UvHmZ<%-;#p@tuU7pRNd?6-aA9T9hLw>5Cll4W6V9}?cLC1f6nnd zV$F2LvL&)nsKu!l?kwpjBiBNd zkvCf{PlYBA#ld0XkC*Z)Rrf`vAxKF|25#Ne{5?Y=&QKpw}rFR6wId}cf8k4c(Xxm!W z4!}>!Ysaq#aHupLJ`_ykW^^~3>d~g`fCaxXZ3lt@iXGKycqYik6khNGxUl8bbqDX z9hQNIb~}JHSMm`IEhZ0M*vh9|wnH;C8Us^&jgs%e>RVV0a#eETNdc6XBRL`@y@A6& zY@-#}3Py?fhZb5o4dx2Ww}Vi#Gqs~gV?a=OeZ&uMXw-JqK;yv$`-|=NnE;cHqSSQH z0ZCe1S^y2HHo;^=wqBXTnBCUeKDiq!hEqMnCf%3XARIMw$2?*%v=nTtm3Hazx$XjW zOFK>FLU75zlayDGoDOEhrHs26bB3uXheiWiDySxg8L5Zw6(p-lsS<4%i_u3Tg%`X< z#+Q`Z+rbFV($dNRUfYomvPv|j@!G1F#H>(FXPa_63xc%z^?d~Y01f)%qrpyeEjhSQ zGP0=}YH3rm)ALLbXl*;(`Ko()rUHd*DjLoM4hrLK|98yoD*}@*u&fa2#s|TZd2sML z<3|MQ)#qEDLC#v5MO|i(R>E5|x`##!YVUmTiJE=2CX@MdUgnaqSPTg2z-v zxJE9?Q2ue+@P1{hRa^>=I#k2zC)7(6yFR7`tGTqCS77@QCEs1hRwYoSH%VHnlwI6$ zw9Fz|Blso;KDGzRNJ)^5n%-f3uuXV{G%!$;tWB0$snoHcZC!{SJ;!W?>E@qOqi}`f zL`IZD`o_yDn6;WTrBfNG-Od*b%mH(DnbWkC+-q}t&IkHcoqVzL#K2m{xi?CfTWLx% z*s#cKqF?+*Ks$yeP@`s7= z*z|8if?4W4cB>xP<&98W8)c~VHo^|Y;jLU{i#u+{kTp)ZkFiNHKOD**z%2;ZRa$#L z8_Mlr@D#(Q>t*CT)z^x6Bw>H9Nl7PhYD}mY0D^@`O(ERU56e;AsifvH21U|N)H8m= zz@IM~mV^MJsT5zd~EQ{kh zqBd$_7YhS|_MWDwKGKwn=;8P$IUP^jBy}-jv}_Xn8Rb_5JFq5m#)-ZkUnv4Ip+X$@ zw;Ar^1$C}z5+B>MD+BIYoy6eVCPByQd)K%v0tQsWy8^<%&nT?wbSLe8#wYaN0;!4O zAmT@z2WpFJ2bfetem7kAnOZ*+g(5i>ecP`>*M-x-JvU$px!L)dKG%f?k2-7OB3|2x z-Cf4T@9Pjz@siDhg2}9D1k&y=Gm-WFY)cnElAIc9p&!<__EqQUH-wL{hh5>})OI>qi~O3vlogA=dM(1pk{ zU~Yt05>!%cPP@@|<6fB$=Nj|Zow6^5G$l)T$oPfr^55@HObr@z&wItJ_7yHBXv6Q6 zLeJGE8aL-dIeg_*iUk+d^KV?5KOb8kXt1o2D(%v!3ZcLhuqLuUREDbEybA=*B={E0 ziX*VK(e##zUB9oFrdK4MWJe31^|r!shg44(o|~A zt=c@0c&;?@XY$2aDcj-!KkGAkuV|xAX=Xojw+88W^z5@<_-xr@5Lwghpse*P+?Q(@ zf^mQ$lDZ1O5Akt@B|YcAX-!e&-4;#BWFErO6xFQM3PFG8hMqa_?0V(qZOkm1HMA{`Do2N zq>C)K1kkG+y}(SkusvZN?>cox8wevm?%CydK0S0XnONm`$*wPuQ8mP^dwY+E`=z=7 zwu&>f2$Q;8;cg&Grx`!aKBb8u+iXA+s@sm){&_lheFeD zlFJZY5i=UnIFoFmH|u^-G-KU`9spo?wd1x{?1M{OO=3<0}zrJoFq!&O}URzG~9wGM1Sn*4F zql&eFwyZ=6ehNbQ_K@hhV~^`7d=!OYq+^T+4lOx)73|j{CzCVv6iOqJT2(tjhE#yW znDUG2y1!p|nfd0E8Dl6j#7GfPB}nG_BMG>zMuNEzgkFtBDmC6MCMl`sUSa>i+ECHJ3Iwo&);|qK- zMJ442u81`Q!?Ah8bu7$=#QpB}yBwt0a~;pG&<}{;^sp?!`II_9*0Ys)$^Z5<0VfHt(JHkm81JMJZ=uMdE+10#CszE&^^`QPZ1dYB zj$xt1U9|xIlf*oRT3lS(p_jwFe-7-#y`N#uuejXd4+eA28_=GXLpxr~AHzJ(&RYcj z`1i+cHvu`8)#7_Sv(O&r3I6!+w%nLz+k$-Ecy)rfa1fVI+69yjk!Pxt?O!%=icbTMCmOdjl7S6GpRDXJ1?ojS+(_p$BxkYI}Uj+uOsI-)2|0Y@a)HK-LSt5cP-a?@cCiu zso=!7;7Uns`uFC2i9Qcs^5dL&<8tvSKr4`uaO$C3`SImHjbAyloStf@KkAS*qs6-K zB{*nn_#EfHPmb@ggks@-?4;rwlHZ^VRt2`odr8 zEF+;7s=OBvxr!)Gc<;!z7eN$ETw4yp?+IqWrt=6C=F4FCz)0u!SK=d59`Nzf;mgB| zDR`_U_>Q!kXE_oQh`I|cb=v$@{N>5mS0BuNeaOwa#gbIoHyQsKc$FU#{}NmWLH@98 zkx0%zqb5sWd@!FNU2!}@EOjQXuT}Tfosz?mc?BS*85!6MxrbkueGB{kYik+Q%ZC>; z(85ONBQx`e={!0ok3(>JA1jpux8AfJkDCSO$-(EWIx5}v@^v8m=q9k)=uDz6Vac=_ zMj7gqz3sT3`o|6)dqR8r42YX-OUzc&mQDSrZKaPBybCdNsqhA(q`0`Lv?=`no^@d!_i z!eCmQL?kSTfjRXrN{!sTs=ADwvrq=g< zV}xJ7-lAgcUe=o1SZ6RNvOA*nVoreJUYsmIBNGrTj~+a)_@U7!Tk0fM4q+j%y{@VV z?>7GO3xSC9mk7wwqll(5!6kO-RK3_T1q0%Wq| zb`^kOw!iTpHGJxWX`OF+mb5NtKFZGRp-n;*8E1^hD&DF_AN5p4L1@@=bdoA!%YvzFFq%7ah9~@_ z<_cJT5%}C#XK`q-7YUmbG;q%TSUwuzzNfeS^16Kny1%(bEWPwSyEkDy`<;3#d|AdOa+V`b zPSRQXdd@)HQajOjJC(G2j-R&CIqN3#ljx}mZ&B7=7dQVCzoj5y(Gfu0zTuk8*;PR% z2lNQddfr4;cl^d>`8*|-5Ho3AH)*%=_N2P}05eg$PDN z<@|cL?Q00gC|-MOYvs0ogwCBZrf@+Z$xfPHvj^#aLk8IiNiuC+DyduTo-l}q;A<0y!Y|G-Ugu7SZ z;agLP?OtZ*1<0rHY2dCSqfnF5oycRnPG8aH8!zV6Vi4agH*Qe1w>>;>X*ZcG);bu; zMEE%LH#G_dRXShV)ctpSff0{tA@Dx^5Dm`?dkFU}>+iq*QF`)En(1Fmv47tX|NbuR zFFx466|wwPYf{=JVER86u_T*;?NNaI(e;P0O7t%@{excSWaez|>SSW({J&7lVpQbp z*BN2E-ZT(biQs3rZRJHGfk3qzF}YnnB&Wl6XPOapZYiy_9?vA!Ww(-B7Ulm@!+jy@S+|Q^LXSBiP#MkR4(Y!`Fbi&l%hiY8}GiM_I2iIb!Ix zGwEi)!AM3Ik*zlR%}tdjs!u(zTzjiAtOk}kXas5ef^sE=F6%hWv8bkd=LM6n)jz6yu73yGsNHRM^6Lu?Ol|uarjviSFCgxS{qva1646ffUPCO^odI5eNjq!la>s}wq3dMk8P)vA5y&=L{$xB+@g zaD_;&x!QqnXuBHmq^*y~Ixagh%rQX$iPjNN!vs%;jWZB8iDOe<)_03cXosy@Y%!Y#gZZC(zcrnY) zJ6IxR!GdK9<#{Q)UONCy?zxG5cI(6Z4SsfvMJpR3yU9G9!Ae#kQr=#fPQ)rw9)Hw( z1KYp;HP>5#+PdSW@7AcvBW`3r>5QZEgPXo|ymaUsh7ZB+JFEF(QUty+beaIg}AX#mB1xm!CH*O3P@` zHO}EvG!vy}#jTlxe>^myAh&1YC#oFcO|uZp$-bZXdAIoc>KATF)XdyXFV64bVV7v9 z8Q@VQg+xmwa4m6_WWdilJhiXaats_0)(~(0Q0*MSSizAnac=}JP9LP)OVjSVn_ z;mwEv75K)>eyh6|d?&yk=j$jEt*n?*2QqZbP~*`LzMKXLJPhu3;}oE%dz-jQa7RvLT4A9WS$bMfcYV% zQu3)Tw8i_<3Eq%4l*19b3)|)rE@`*6iqiUd-C0f~b8PnYxtQ!srie=C9^7~EfASdq zve$Kst30zm0h8?yapeDCuSU)$|C7Bg#__=i5TXXV%g@4C;uA)a0JDQYZ6hQ-^@NUX z$(_)94McZah!^K`d&GIjo+ zM&SZ*u`%N&R5km5T^0K8^F}T1Bc}W3mezj+=U?2`zyM$ea4|6W_Z;)zIJn$66LbJ0 ztoY7vmG^CM7e_?g&Vb$h4XYW!CN`*`mKHlZ1b%%eer42wrh4K!4a<;=DF>8fS`MS{ z#EqEAD7w3{1-R3@Um#?2D9?@PG?jOO?QK@4ufaxHuNZ&ta2pDwJlvo9&ZR$riS%D| z_#dg!#mUId*~Z8PU~l&y+3~;Wd6()xvtu80e7TIgNE8T6I~%4VtkirC_^%R^>gIiE zr;hhGrPyo_J@;&ScCy=>n>$cb_GNSb-(kCZN2bi_HuZ!a4wgQlLOOdpfj;q4#AKK_ z$G6D%(ii!TZdY{>pLDoL9y%c!E-v7Z>%w6WxCd*HrS7(bGr%+Z7)wHv@KGWlH`lh- zPELr@L4q}phEejGA08oSSWcRK?Z4HygL$$OZoo#S_F@>Q!u8@%ZS6?nY^Oo(=tSI! zbb$eW?$^RoKVhT#WDvMO&te%tME0+G*=L=`iV%9gbK*FYbIM5V*uXWwwa*D9LF#cV zfv>12PJ3UVvCAb=hT2kAt3cNfEq06Ry)0pV90U|MG5=IPqN-$4;HI9$z_?Suh*G%o z?3}i7cJML?yHqOT2!^ey|IycQ0A^B*)SbD3ef#bnrA6u*5R{aSKY*QkU-@`!BKnlv zq6N#6P0shVbd1=#8EoV01j`0Nwj3@OpXp%2)z#Hc4n1D71LE42(`RmpKLu#e^4+R9 z@R~dyE=QUtm1=-4uQ=q&2bFyS_SVi$J1Ls&MAeD9SH;67 zq_pDr!fX94bYDm%`SoALx?uHzu?51-V*JrQL|hM8f_@gVnjd&mV0Yx+3* zOft)}A_Z9@`6OM1(8b`Q@&$vA)>!IOfM!d>ENjl46MtTRx5r7KjGfnuybMBQl+6PB zM&Yw@?OQRlo@3^;{Bl*6^^$0?NDD|-EWGXZ-buzd-b6-QGb|7k*NFpxM588>-uMp!$cshE>WzzHV&4+b~`2Lht{Z(Z#_inRZ4Mb-cAZ)bndXg>Um z)gLq(1#~uy4U4x{L|`G*d?Fe}*M{80`u31STPhU{PwDo9zFD$c;#O&nf>O5p-silW z`?Vh;xGyEKDIGMQWD4^r4{qm#ikCh)cqyYT1ukT3j5vq|t-5H4MH2@hbiuG*HMVMu zkBAbae0=(sFiL}}HH0I0U5R_G8Lsn6&12k&hY2i>K)HjbSf)oRK7^^nN~QCT|E^@i2`w_wg(d6AEfN1G8$ z8scSs>kacvagU>9`0&!~d!Yr(!0wuqdYNIK;=-0eXxurKOs=X*{JDY4F1L6Sv;G++ z^e7iY5*HLyrcMg{D~*)j*f9gP*usF?3F$Aoq^e!Ovt)r}=QvKI0>4q}Rh|1qZCwYC z80WQ2YsV@zqQ>SV8{^gf&M2kR-Q1V?TWP=+UAQ-Hr%b%|n4dGL&B??^0=&WP)eea>hHK7@NIwOXX1`3Xhj~1OH+~ zEJ%=sVUq0PsqG)<^y^yhOpx)3_;sG0nIv7OA1>jDaUa2e`tg)a0W+;?msRlK(HOP8 zljI5|qW7QC?p~jgmFJ%f823m159qA zximL@EKz>;OUq z1C2btr-Frr&fAH7STej|&1^-1X~ewr@)JR&ynvj*{I>7q^$EoZ<@v?MQ1M3CI57VS z!tVz#9mW31l=^?Zgh2V+>ok_p8; zV{qEjw4hRlX%$rLKqUw70*)VjGH0V}8>_tPw)hSdqijFPe8BcyYPZo+O85r#l9$ZB zDck-An^<{A8yVAvr#gXvHh=sj3Z8I4230vJUO^g2a}CGvMc+EowjCx>PU{Pz=&+$b zTv#~!Oo<;e{K%W4R`~2?vSGHp<>E~!ireohSA}!|dq|uF!d88$Ic7_u>;G@EVNi;Wf({r&*0pF<21Hva$pq7;xF@QCHKH3OJp2ABeesqF0$n) z@cLN+gpmyyn35)yqD70D1A^7xaPyp>!s& zfxn3D`I~HShKf&~+Y?q)Pgfb0I^4G79SzQ8tq?&tC#1i+bmqkKQm#{vh z^{pd-KCVW&F0`yys}#53eyB_H#a8{SR8Qrpo-Q#k=cp_N{z$a{sm9#RDS#i+vWyUy zn*-6(RcJsE*`xi=qUV>s#SixwKR>$q;^BlI)Bn878>uk0>*3_Y?dkW~b7Rc)#Y*QIpVS$2Sb^raukfnn=d$8n_07u$yxe`Lt{dv02o^BtW z`D{BAb7RmzUOYA782YW!tu*o%tVjxHeZ_IdAHri+47I=%bYh8V==7k0_+jG6v{2vi z7zjzqiv)vKirHm-)MgyQH$v@=Dr?U>lG=p+ssn?#zfCJ@RQnNQNUBoD zh^LVGNt|U)Yo$j|ZwwjyFy#_e7!1L?lZfRtHZCL#8G!U@ICY&yh#=y9wO%=I z$``mX@X?aSyW`H8D!zl90IUD){VJJg+M5b3?l4-+9YLq7aT9a(~z-ndL-7(lNA zt!FLzka~gHP`JX@a~PwHok1FipbZ09?Irw1$52YVx`i$omr$$9#)&1+lkAgMdZN^i zH@NNpiCnq_f_$#O{~M_9^BDVIoX0NC7ScrjR5WD>fP`hIfnlXFR%7C)LCbzaQa zG4s1`XlO_nEd-^uLfEhsh5D#CRMH4)9TUYAs;St6zBDG*LIB}9KY850+T|^Mg1Vqo z0Aa)LdzItt7i5Pp(!D%IP<5+J?;e)$YvZQe+lXfcp+H)Ln+!t9?DZoXY+`-=hz#iN zP#&dQ1ImMQ!}WgyQ%&eI>b|4bWYG6HzO(CaHx;~GxHH;-3&iiig^wM&4L^h~hXyGC zI49tCa7ffjuZ?oZ{dCALT7acC(l$p1x1AHuD@&dwY9+E1PSd}bhd?5QlNRfBqZX*$ zkSdn{iGIjM@1@La;g|2)cOD`sQFI|juOa~mP2DWcM8`d25VgZbEceqjaxXNjObT0| zb^QK$loQBK8e}>cqLT?&E?bFL3aAbUv5_iss5Vbo{#=L#tv9S|qn$kDWNB>|DV@quKGPjMsbc4Yex;48c z$rkieqL!K7ZM)|>~0fr z>_YRSjJ$xkm_C4; zU3`X296CJ@DO?h3ih2>*XI0~68Dz3wG@&4MkZ_JwE zBYK46-P-vIQgupMCSZAj;gDEJ?tWxt6a|zm_^QErU3Rx+?!ISor!CP1SD%p$IZnD?Mx!ISZy{%YgcV1OeNFNRA25> zW6!`Fkc^w%A2sbUk@CmBC}i&V_%Sq1QKBcLsV*LOwN*}3S7Ibf3>r_txu}GGfjB|N zsuFyESW67jBhc8JN(qs4>6se#K)Y#!vr)qF)0LYuGf(wW_(j`W6kZZQ8re#O_Pgyylk~$@b?v z{`Z}B#uv$7DqF(rUYvI8+>~-9@Y@GU^p%^WM#Uc@JD5Nyi)`8`1ap&ln(+Sbu*rmy zN(O!sMZ?|l-3L*~l46IX+yy>`R?}_xJInvni_0bv<$FSdEu(j^Woh zyQ|JqX&ofBd8{0yj}-(T-BIo|sAx1#EFzZQF%`pVwC`s7Z(#|XT=dM2!HontmE`$Z zh7M~DrG$^858)7ZExbC^q^5jv(T|B^#rm%2KKMOyi@rZ2n)%kx33+Yzh_wE4Jl}K` z8CZ)aq|VjxA0KxJgX71n=(Lz$2hI8HJ}f89Fh!IAtbzG0Ku_sxUyU%b`6 zHG;nv3ciU~S_2n%TKB&b47&eW4r_q4zju+KmY|lUsoPhSuf36>k&p(w6~IRLJ)}gy z)ikd<#xT0Xu*FBt+q=C$Cp<=r&&O0VD2hi8yId4kIR$2JEN|!_VVR(0s2eGW6kn^t zs2un!+z_xHwT~c{AiIwsd%EwYI~Fm!JFi>PHPxQWzQV=jUa6jGj)_FDtORdR9k|~z zNJv{-dm#Bd`ks0+CYl;1CMG&&GCnKl(832rZ`~mPbcf&{L6=O{fmhY{(e(8l@ba&e zyT9Qr3)^qa#MHpZN_V~PVQlTy4A$Y+RPUk$V9cerM<_JRe_ z=U11OjbXU5HOIU~+rh{yF_~ zubJ$TMM0yiaHt&bI!{rM)Q2w-%obF)%h{w-?N;@hfV=GrK}L zvn<(JM6jQur%bgG;m$n5Wy=BkHv`etVZ>2EkOLFT^;$;Y0mLfr8DJ!TeWA*fL6NFBcMp7=6dg_EYcp7&d zBJOWi#jTLas)eyRJ+#S4$+ouM(J(o72%b*2n}2%m9u1UNjZ=jUIqy0i<#QMIo&A?G zn;UtLu!0TXrjbR}xDyj128P-f%K%@eUlP?68>L+I)Fu6G!E-K@gASM3y)e5)Na5c0#K?g>Tl+7@26>eW;UP43AfJhu7cX@+o8K3bU9A< z@4PnsH&H}*``1(zgFjIQxTL)`sxIqq`RhW1ZuI?inU*6qjQROluSZ{y8A#JIsM56C zjDWet@+$O>{Nztb^Ecj4s+|@#%3xM3%8G5WDml{*er?42$YpkHHWD{zx`4(Nb*H5K zz{~vbbi9pwB6o(N9UINsO+7asb!HHL4k}qA*GYkh>NsRX76E6Qvua0=Uh6jERwcBS-=Ee1m+*n9mNpv%kvX=w`J5Vy;u5;$x4D)yC!jDwFb+yHWIZhYb4nETU;=W1G}sU^T@YWy z>}-(*JH$#;@^A}(D`9JEB#;ybe*c1zk3;}(E;Qp}Psu?>|4>o6_Xl#OdQ!=~AS%8g zX%k1)pQ>BwHW;r4-2^Zd!k%V=>MU()^8{->FmV#-^xv!I?&DebeTSV41hK>tq5G*Z zJkB_)m4`tmF#KCZUJy4RnzEMuR++)AvEKM)bC|>40!V|0Ddk_G197*!Y1=CWMg1G| z3fXR5HhOFp&7FbvFW7Qrw@V{q+DD5aqd;8_))+)TM3v-y7v$l|cQC;_r`e}lO`=b2 z6o@K?9y)42L3uKjw1G0&0pL+=Wki3*a4^1KNB2-Qn93WnN3dg@vkBL-qWUMjwW-wf zys*J638u!#we%bG6och*8C~3EwVrFG_s>-g_R9|eK@d+_VZX+nkj4)gTLshEL#qm^ zW{1pLBe{8u5yc_WmpOul63+-o*K~EgH?A|T-{!-4z^(VfFmZ7546oYeR9}kdOpdW# z7#x)BX|SNo2+Mk+w4BRw@d8AHHM#E51n87iZ5pPncosNJs1{CY!0a|1Cv8j8c~Gv6 z`M!2)0s4M;#YM!F6%ZU7XH zX3$)f158)5@ayC!v?vN{QAQgLKcT ze)PJo=LROL}-)rFpSQz?B!ku`12zw5|DqOEe(tl+T%ruo*bY z&|&c&(w9@Xf;rVbD~SkV?-{=b){t`NP}R=*=3Kp93CX5eWfnMLq#Tf3U?Mf5P}1tI zuQ?7*^P1$>WqEfR>W+_`%G;@Vmm)VF<9W`OUz@T=Y2TMZ3Z6ooSDzOU9Cb`icRH5G!2H!}0 zl$i@0t|oT_$ey$!;0M{o8)3yVn-8O#v5NR8yXep8ZiBM4y{c3>WIY@~^O*UZ^fh6! zsp76ytb8#(+>}${VT~OIK4S&;3N-b-Ew95I%mNiyx_(uCyz%-Tm>{NJ!FTlGMavF} z@ePSCm!*8|(}Y+c-(mYlbC@~+h^X?>uSFt`ZpD>>UT@1j!MZBfxU#qlPXTFN`ZAoC z?Bdk$f~5NW-L>ei$hiTt@-)M5b$1ExpCadE46IB{Ev!xcMj`*3=-DQXFQs*Mv@eV= zR6Bniq}Y{^%dH2&1qx`332ZILymMQ#pA!_#iSCwK)yBZ9>u=jvcf?$fuqT4!MNGEX z5^`5(M?S>Oftw|7?ppT(>3i&m!|qz{TqFte!j=+5MP6&SZlro&XkdlZdc77)XFc)Bl{8t;8-Iv9jT#8 zuVJ$xuR7PnzarTkCS-m^QX_HtevHMuv7lRxUr@38vBvu!zZoCS1+j# zyghTyD<&!w?1`Fth%2cmk~7XTM#|*v8)%3JitUC1C`hWH#1%6qg(fgY5%;qtK;+57 zmL>RjynQBajZ0f5$k$+#I*6M&kTVfU@B@AhNgEG#=Sb|k*s144N#c1H;OnB)jl)R{ zqyKiMY3k#`S>#eNd=fut`vt2|OOviVU6DbrFBw682=xBTiV{?nnNeadz3 z=Y%v2GRB2KB@-8NS!Ga``7iMRV$9)Rvr2-5>_4Ps2$b;Z@#7z|!mW%8RmGVhE9SXn zEBD#unntA!8^+I9$I5=HLhI|(3QaqlT{B9M{}=)Rj@Pogw8?ttFxxDMqOE*6jjNg& zfF4xyP(wDK&U>EQ0!HHbUY(O8(?`_uyeL6n^|E||+1qPIb~MPNxeGraV? z^QX~n-^=^c37%07?4z2=yE!CPWskF>z3a#3cI*tTTzi%`=Ga-+&<&3`-p$t#@$wwN zi>maK`Y)Q-qxA)7YtgpIhJJepn|%C&m33z$rX^B|>|}GyW4Ll@e{O*0NfbhX`j?F? zbc`Cn$5EkN#aQz^gn6Fhu>hx4gM&`4u(Ja7iCTHjHPM9?P$-iF8b6X-8&+_0K~1pA zEFW%o|MmiO4P0dsq(2LW`SrbJCO}k2W{C4IpdW|ASwliG%5M!#> zH4bQHSo?njw;+MsmedGEG_>o`-`sswCfdu5bvQKCQYvv~DzLX8NhwnTE)x3ISZhMU zui7fe#uf>ZVoZyn#)&bZ0*Nu`!;sW1zI(uhy?^tZ5r~j6js+QDkSWkp%okR7^_g6q zzaN7jH)9zzFq+CAMj$1~9BNeS-N$jQ!#Z;UjHyp#x_*ju(5;eiLBD)ygx!N*)8^yc zy_)n6)adr$;-&X)`=EmC<3yvSyH?lZ^!F4Wy>z)9UGX(rH9nMot#1umVaTF6=<8E&M}$e}*Bp*nmia ze9BH|iuBV+dj!$4jFwm#%Qe|OHwoWtP`&tFCB{+%Ivu?tkM<(1tZH{P6_2W-{50!A z9kb9e90uk?tmS1e1VKrca%py4GpXRy)7zRQZvHgC1wvIX4vpD)YiD4ZsvSIA1)Q}Ul>MMl zpYasouO6+SVGfbExVm-T-lUw?BR{>chehEMA+sXlFMreF^AUFLz5lyltJMJ zKH5-D;yxmAZ!=RTtF<8ADDfD)H5jle6m=MD;En=u<1yic4o@)3>|;cF{xPA-t4bG8YhG z(E14~dTSM(i!p%9Oo$;e^pm&pZA=mSTnkQ%r|7&MMPDH&%2I%Z-7TFSw4*0E2k8LW?jv+J!=?BmZo?Nd0v^nsw7efsUBJjh7A_7C9T)O*vpJvmaTpP zp~~pYAaYO`OJK(|N~SqtISL0B7zGo_5!m#QUY4l$DP_xpS50Q-2U#VO; z6vd4Z)h3LH#%b2^MAWW(#o9 zRU&Ozm{6;$8UC^e?L;N3$(o=Lk^XVsxaLM3LjiZYmXjdA?u&ERl4LfK@JpJdkC}>W z)%Jjj$JMv#ncFQrF2p|#yl^gWv*5uEEN_3JJFAX3vO8RS$k8-r%`m>Hjj=6Ve!D@r z+9BCQqWuaxs<`;z2#H_+91+;6?Gh_0%*LJxd(d&>{^)|91~z9_ycS zehA4S9U(Nxkp@Yg{W#l@b{j2FVh32JmLI_R!$c{VK*V>l^euYFZ47uCI91!yldH2P}1@R+N^+BDM=$j zaDM3DZYorb$GsQiNo<2`2dmEsGUgUD_JKh_9|z5Z@1*1&UaRFr8IYt^*g<0DT1%z} zk*}@o)qH6Ft+s6wzWnYl*X^Rnx;Ab_&mW<5@bg*7cZolii}0SB=Io1za4p^{pMQmd zb=c<}@st&tV7F5x(+^4{f59oO5D_Wsh%JD^^|<4!`@jYU?XacaB5(JrU*`8GzJ=X2 zcO4KU$?cs#-pGmtnLz2{IBsU?@(v}mK0DbQWjvfiwa2PFm<87y_X*j8<8u_`&`Oi- zUlE8E><>GOfByIZE9bLad*|0?Z-2@+mJ)>g;4cN9$^N>+m-Yh9f0g{z%apK7_H*B6 zDbp%_qf^(%ce_~IHdwS4XC&_ZnTqdo7+#mwZlExln62qWPas_iqfT%}sl#lr#a7kiEc(&#>@|R{k3jV5`Dn>ATS!iA{zI@UE{v{W%Dqg!_ryFIFd>*bx|1a zvoe~w!&!H`Tj~nr5s)lp3z_Z{HHwq-ZqhXC_oOPnM+e(6uXSKm^u6vn?BX8_6MqcT zwRJCfpl!gUT=u{2xw|-`w(=tJ<~=_MpAgQ8o36%mW>8b+=hGg*;?dgIgIX2sW4xg` ze_7ZD&+z&1A=(c@n(d7S{_^m9flZyIHe~b%N)@vv+ zt)=;Z8{jocGp+81vz=hMl5`WMTW8$MHk#g;1*|ia_OdxsMXII#Sdj|VS_G6L6pzi9 zS&Lqv>1GVb3cbp0-4O80)b&K7!iqnY8r)Ox>=~!HgI{aeY3E!w#e>qPbSRJ&&~F$N zX7(0zRjKf6t6?8@$9=ekId&d3H5y#;k3{o*AZ@cr1M75N(pfE;yS!CV4yrrOZ%ItI z3Bpf5*2vigUwJGD>CLGzaM9}O503&)Ksqv#;!h{Mmz9i4R z9g}?Hu$xPUkE+xIgI$|ab=&r!NKI~U2@&BxqM{O^_%F6^4hW6A!8w^}<-N}P=iotH z+iz<$uD%^RH-6ZDMx)HulX}$K-Jqw@&7V`W&BtC9aAE6~Lw5fy_x!an#V#=6E579( z`)^M5A2z0WF|^MSb&ywBE4>4y^C{&z3t zCl1p>QBgU-M~bG(Z>?)|2)m#>d&rzRL~NS;2w|W}vEYk4_K;z?SbYBTn;k%O)M$ZU za2w|thi2@M-^o42BF5c1T@lNq<^HGQR6(61_ewS#X!o~(0UU_OLS;P@lD8^u9mPmn{m1rpG~^XmjhE+3CALg7+UAhlZKnMge4nnH|;IFnCaMFte!I?8uC2TrmXn@fQ#x3cu3Hr5Q$_p@SB>T!` zl(TEbZ^Zk!Nii+5kO!@=u}uuO@n?8r>Ni+ zb)yA|3DS!!MjYYwz=m69;`PK)9E$p?C32~a$WJ!V=_+~DuZ(k-yf-e_KV@+F!nL(5 zD^4rkN4fG$N5$=lEqnw}WAi)sNTPk9xgt8x=jWtc|0RSNsdRi13{MPqXoIJ(D6Dbn z$2sh2YOz3tEcI3PwaXgQUbM@!t-MK`8$W^7#ca?f3Z)2FQH0{mr~H!oyxkEXc6han z#{_x*%loo&o#VmCNJ|o*Tj%GCRY|`oAHoxAVlJvnCl785$T&{?+}T|y>FkgkU$?u1 zXq=jT$YV^@_2ni>=3HgN{7@hiDA&M&De6o9$KN@<|0;bEM<^=tZ|kWW>_1u4?X6wR zENt~$?5*t#jQ>kS`8O}77_@H@h4s3_cSuDCzs%{6D^;kVzkjnuAnLJYpTr#rG>AyP zjbVLhf-)xEsNeQYQP_p80zy>#Q z_SKsj7A1djW;0TIv#AJ4u7C68a$`U<`4{Cf2r+OQ0o=I61V~Esl_C83U7pa3Ht{t< zXeENQBxjHn_dXrd9>*8TL+ zW`vKUf#yRSj5HRKn0wVsn}84`hz`7hvsJ>3J@#`EkyUUqlvS-BA}nS;m=nrs0{mOy%T5? zR3RR3kH34lzFsM`yg$nUous(*OwD>Gf#FHKwY9T}PV-AaZ@6m+saDV$A?Jb&rHFS8 z!9exgw4CLHBVvg}58(>|L2hswqgfdrnMvoY>FLRi$6TXug=DZ81qY2@b^CBV;N!A% zKWNJ%kqKt4zv>R8>l2sc#=JjQ41%$guamjUv3<-sJw3m|d%gNmVH$4k#nUA--v5kH zWu4U0!I4qB0OmZ9lX2p-?dSuiEN~V()&`8DGZ!<&Ctx=^69V^uSKi^fw8d~6@$?Jg zNtF;34N8UnCJjK|9e}hp7jZO`Fb75#A+-|a3UyMPyeR@R%j7x79)Uq{908HAIZ=mH z2bZwha-(E(hZIMCeChD;;R^EK21P^xV*R<34g<61uJendsu3zcCC-d_Yy}O=*&0)r zeOGyA@j9-tFA5ctg@J4oQDlyMf>ZXF1!)dn8~Ot&cDycDlxSm6Oz2PUOj4W4*_)?o$-Z6Lk&O%%pKX`u+9Wi5qW1qm3I+up0Qy_m5M`jEWqo6@B9S zEM`WOG*BFSjHEg>Zhc{V5uul@a-jx3-4Kyur{sw1EIy{Zg|1f$^E$KDw_a5-j}zIE!p2zFF*hSPlxF zD8^9j@1S?R=vS0;RC*Qd$(H5$0IV@^lqZ0uc{hjz>R^?H zbGRiiRBX5b4n?7!xnLS~BXh?^TAAsjg>ETg9ssB#subJ}bx|OrIf-b@yj@UV*W0h% z=iDo3Qk;WYyA}J3E{F>kwyJAqCUTy4fm!p^#%Dh2wUC+UO7DN(yQaM>ndiSH{i*K* z_+PZy{Kr_f|8)H885%g5(7IUsZ-jPL63=%NDnjVfJCvYONAjn9W^XPBJ5GBOU_E%F zbNuRjp+L4}#c>=RAMr$FaBgYG=B89PH!pX+W@3(h7PDv4L5?ZLu3IpwB>RY7@2*lf zuT-9N6Dl0KOroAsq6w(DVfR?}LVC2hgTD-G9SbM2YvUmVT866u=plf4Mj?`EUN1VL z>mifqjLm#-p#`!Z^Q8yxT@gz0Ev|8sSU1cAYixESlSw0&PkBnxVi8A|xbm#a{;Z^q z2*RI?a;h>68!Mv@3H)`;x#KDhH)Gej>vrfA=g~Le>I4wd30%qC`cW@hoS!DVc>X72 z)L{D6qn&LNr4&Xa<|xM_f98K2zxL)hbbanE=?zar&Z)mc3xx@$^`}O}b^PSy|3usL z{2+D)JbhAsejVV0kk%nUD$RGs(X=ma24%-Q+AzO>eAa4fEty$=0@n#V_{a!ZFr*l( zpBHpcK(QAl=kvaIq;zS3nfI$ciE~y+N?}~V6v>DeHK1c@x9#(f71d3`L5jpJg?+~$LU#Uq7P`bj=dFzi=ox!bXQk5@`skWor| zR6!8Dbk15HHL_%*T%%OOq$%b5^fz19f48rFJ3#)==O0GwI2k!w*gHG@NBi?%p2q*R z{rN9X$=qgnbMyD(-oC#i|I<_QUk@{~v$6lyP-vW-9W89loM@fQ|Boa8Urh3oiJOAz z=Z6WtdP6Bd>ufrf0D&j$LPhlnY?RsDY1it|5*c)BS;m{BnDmBZDiBDFl5xD%H0fZL zN_%rglu>ThplNXK2``o`8)tEcMu?S`-)i?||(8*EPvf zo|9dtNBN#^xKWe^CQg&l7-pe}M@cRZ35B%@jJeP%VT%bpGi?|~Yxwb`vo2u)y-?W2 zEaUBS$#I0+@pMX$cuFszBz%-6wtqMFQ0j*u!oyAi9hquO4Ko4eNHFFat>N*3_6KDU0Su+)EM0gQ zc#Bt4>xT|&%i9M!SThCWZ3p>pRBLOHyxbm06cbJ$bFG+Hui^X<0jL_g=F`VE@jut7 zuW>dPP+-t+_n5P)*D=sG0+D!DE2*~&s=AY)ZmNH*Uyb`zOQVIU8V%V_xsPUIUuH4w zwC)d1-MMq39g{;li+38+?pE5np)?P3MjFoUZoJnN@rL#`!ChA1Rie?|Gu-{>7WMcBE|HycTfuZ~cxuK%(Rc zoH&7e4ZTFHXQ6N+*%`e5xw*^cwx&G4UpJWFP@m{uSG=Q(EzNhM3XQde?YDpIf3No# z#Xeg?2AHlRs*Tk)!Esy-2me$cBubRh#-(yhlV0gcSP9NCaS^J|E?n}Cd}zy~KXo}d zADK@Vl8447)q!Yx2K4D>3mRXx_e>eCKL%ne1u0^*D2eo-pkl73tOTr{L1CdK)+Bdc zz=dN}0sOvPN@(gx3GB;o3jKIf-2$a*wo-1Sk1*~bACYIDS+U|g8!pdJ2$eC%H%Cjj3r&!^Y z!66e|xEu{w^Lk`%-U}=X72PFdn)u!36)=i=qCQX%ygA8@iH5|y#?+Dy5K>;j)AFboQJ{zC`huOMs6zs99met-XALehVyS2#HSMkKT91LGWV{fVKiSAGRaE=iAg~_A z3#SGiazxrq4zC8jlanJeJ8nkz$<>YxQoj~`UjEb zi?>qMH6blhLAl^BD&*fOkjfX9S;bgQ@-4+wCs`%eaI~3v9F}5vK_v~Xxo}C! z%fQhjsT)i9G%bJl6#E`#%Lt=OMI%eq750=hfcLzAZ|HIIE=Em=4;>-QMJJ#(1Z~+F zZPxNhjg=`O9kamsbg@Vs{2JW6B_Oq>NOpdG$|A3cr#9*EBeuTHEaSQ8u>c%IZ*_b>{eU0EEiN zfS-adth{`A`{Jqt3P71Z zC91JCT7T}N1;VvHW4*`kdMBeM>S_~Iao-9$Jhmw}D5J+;Ad<0>wOQGi^N<>T{cgoAhN z_KolYf%1w*xs!?cz73(>`a$ID5HO--8B9I5;b@{fh-@gkqQpOdS!8F|;2r8k)FI)) zAYvwojF-A^GcoBzTO~IXe!3CD5BfK78u-&1klp^6XQgpd0dgQDAtdy@02=2oOHqLDz7f*6W6GD%EvWpl%GC9-fWXl5@VQN0j7JR zm1MT6MY2H}ZmixmFCe?pPD=7VWK}z72N6u8f*x|;AeT`|Bc=iv!KcSgJb`NFLNDk2 z)EXI7b8QR6b3#!WHUo^LD%$_~1fi^lFTEO(LNNifbBx38f2yAWQ%Z3z0J+zTg1SLO zvN1_@aYI|v!10}j;7<4ki_y~57Dh&2&73#nsx%RScH#`2Q{)Ih*2g!LSY!ZY6r+J36~x|nwRzza9~aoc{u%fQ_Q0L_CiG94x_)QQ z%cWAc2?;h6Nn6?g=?pY7d;H+<(Wxi|dpT~Ihzj`dWvTmx*(eMnqy$!m`nM?ZiESq8 z9to}99^UL(*bL@b5={^+D*E8eVJ8+n!7jBK-XbaOM^cl-8@8A(6Ad0V384x(G^gBX z7m61mvD=4A<2_CavozX=rEQo%w#g?h{`_FJpyER(q_rIV8nLy)G}>F30oZ-Bh}pfL z$_uQyLy8Z7NU77*3Vgp(;I^l97iJ8eFU}vj`tUx~!gg!kL3(bkAJT&Qe)z@I6pHP_ zk-4f2U}N`cKSSKDQn#~Z_;89%gTYd@o2q6j97*R$`u*%tApLy2W3rqNHCx>H#FK5TU>l!5cgba? zLt5uF=#b^kc~=;WkBTMs;{hqvI~cBKCU5bW;3cP#vGwN|f~&HMtmjCfc3%;l@>1L~ zs_UkU{Ihnb)8_11#ukeZhxFRsj{12B_$RsO+KwE?)HNx9IxKgsy_(^t~6xkBh!c0t&>J68DL8bwaFjsWz%- zg0R=MO`S?pjx7F>x=&2bUhAygb|#)IA=pk7B7jjSTPwn4U{mzYpduciJhf>vWrYuU zC+FS)^JC<}#KXhm#mf04KJZD}XpOD7SF~jO7_LncLb3J<|HE-FG)%x+uu2u zNb7q!NmAN#`JA}BnSW|Irlo_uUtebvj^lKQ+(4#)d zJ&O7&6}>~m-#H0#Da2kAWv8~=*AKfLPGEMTlIqCy<{^IpxIs1f5F z;0q4om82XCD~9^JFef_YiL^z0aOvGv9`w>Nk8 z)=ouQaUB&_a*XwW!e8s`O!WElv#ifeTZxHStwHTu`(f>Mo;Hh7%tE zi<6j;Z}eH=bp2Gb1YuY`;<)E6QzCG8zf`|##Lmsl8ozM}~jT#|7Wvf7q#ff_raW&XcAEx_jI8><~e1r*dNrJ@UArr6V#?drK zatnN=jMefG5YLIh&11cuHm?sZ%j@H-ICK4dT%VSnul4&0KkhwZ4{_lkf023vlA~bZ z{z17D>|co{bMu%)r#7 zJL53>A${19V50w-(8hcj!VdO=ySm%Vk%~Zd=$2YWlkJnP^i1pTWCR#|@L;GOZc z_% z5WK!7o`<7dN#H#zZLgZ_=#r$XoXx-*8Mi}MDEX!lN^b2`V5dPj;jW7!v(NpTYC4yT`lN zrkaXp>^Z1K&X)^h;SIYj13>|Q6no6?A85Mkxum_~CVk|JnfTt?p$Bj*PCYD*{9?6A zeOM68Q=9VixY|Y3@PuvzoF=VM!ca)WM#2_O+*>I2j| zZlK$E3022OL-SE&tqmw=t~gmN+HQ}I)OpRBf6CHn&Q)d1nlUqWN#NQ6Auy2`lHoH8 z0i%qzSbci@B$JDdlA34=g5FvN*q%-*5y7CA0bLn})9(B_l|WpmG0PS0nPG{1_+$1; z?{k5cMq6w9j)w8kh}}RPl^s z%k)Q5f_fI$nXT0T3aqOBvFveILA_wPI33=U38nEFw#`q|?M3%^ku)nderL@Ozy?3D zg6M`n59`4_?cT|EdBh9iMAYGwHw5t5+`tjJ;_-q;x?v^ZDozhKCMQQuHYegOuBJ3$ zuR9VkyKW(537td=W1&;=1dg^nj&fFW_f5ZO2 zuop>pW8IH$POJGF_M`q!*#DpE{(lX7`#0dwL`laEnE}Cjre=jraWRtu0`dS>5s{!t zMN5+)+cDP8sb$ct;}f69*XMV)R4Kk9Z3H)0cGjV4=N_ z>cIhIn@q`nH5cHn{qn%~UFEkK5wVsIeNyB_Z~lR*8D%8@p`Jpo?ikt!F|&>AywlMR~|My+J>Q)iTYM1ZE#Moa~WWV*B( zZMW%NX|C-3P;m zHP9@(AiuzJDrg_y!+zCF?|gJbMS=41_F-O_{n$OV1cf%All(!o za#}F3+y4I`rlTCqS0=x?44H4L>L2#&-=1V(O6&Z;MzYDs^ThSj!)(4$1-gwo80y;( zNZ7aE#2@zu=Py?g7QtE0BR^d^XbGQ9T@CoM;^J1R`7Mh4U=O=E1V(Ydpd68b^C|!B z#r_jUtz_HCfyb|6&#<<2GIpkKmxis&h8$cgC^GL#GM&LN9@1n-IL?@nB*a>aQ4e*g z`3dq{1eBIyh_pEs9SoZ%)hM<+vXDQFCok4Ir558;ba47gLyrwvzYw6?P{O=J7A#tu zt-}s|1)VM*qE1LG5RfWOdrp??0nYc`4%Ylkq z2tSQ}GD2tjCb^N2{)sgD+mrsOf8t+6@KmYWe2e}FpV}XhLCE-z2orj*6gr_zQc=eC zNCjiHXyoy8NH%4u!XbsX^Ljm8iJlD@BqwP2buv6|-k0uA*O@%*W?0>lOmI{LyXDgJ zdw_5!on&2yQbG7!A#9`c}=% zY#r}5ZEZckPwb8vyid-IoLMt@(}t6J$p&`yPCf5;n1>k$eSI=B+Y@wZsEAC|^oc-| zi_bik;TYQ$E%2Od{$XanRtk-=gBVG_Yoo_zP*d%K3^M;mgKJ;js}TPk^v4mFhB26h zLXr`X^Ej-L%M0VcsHz8$FT!63xG>x+Vz=uN(4~wI!u;jeWF@EO@D`6W;CD) z2ro|`UT{i=rKU3A%aulca`kB=@u;7C!C-Z6cG9^|l|bQ`)W_ zZyiNA<%b}zyB{7d9(B;xvSV1tE?^DNV9Js=IKZcz_9bt^ik1IgWmg#%Wz&U80qK-p zQc_Z43F+=I5JX9-1tg?IKoAzCQ$V^K=>{q3ZlnaHLlIFF`F8PrUv?G2kG=L{f8F<- znR#aBIdjgrk^Mg08k6BRc7Ml3ZLg(t$n^?rR`$HObyTWng73)C3Fz}CNd3i)#(Lxk zl5aERqd{VvUtlqE47nTBCMwUMzM$c zz?BOhIhOXvQ5uW8li!g&H~LPoOVC9$Ver)=VgGwsp!|;w;g6mo`5E})WQ?jB??-t? zg6ojWH`l+Y-)^7GXPx^RMu=uX61I>K&@6ZdkyD;~p@SJc;Byj+vI&k>)f&bWCo|ry zPDrgo?p-USq4dqY!v|`VOrn;Of`i!mxD2z-Br-V!)PA<{m6KP2XubsAX%%%o?L(_R z(MtKW-VT&24ZLzCM)#dD`eZ{nj99=jXcX{wq4PyPEdo0`gskzASa#l5Yii zf-DFgq$`g&UXN%Gadpim)uCdL1Sh5suwD(#iu~FU#-H-VN{4Wb&nHW!=T&^zw}z*0 zv!o+z6W4s?gXVO1+7t(vmBVBsv2E^3_5UCWsza`QUAb<+MfBVSM3XutZ%j5Q#iz6T zM9DY$Lpz`wM1U=4#6p?!E>xWLk1*oJk85UeX zTIxDb|K)TEndZ{z9W9H41yr|Cp^5e3Le;GtsvAt0t{F#n3AO7blAo|_)p)qN{CGfO zN@qBs%*brM_fYq>Lr)1(MyK2drb8gg`)8LiY*M=CxL+_z)=JX_GU-|i6Dag$Idw12 zEg8tgNzh$@RDSKB_+GXl zwGZxt3*~Z=xp+lf{hvDauwJpF#N44Nd7}_c-0}n9&pl7%OutuLBwG6vk~|1jJsRJW zN$nwe71%dv%{K5nT&*t?n55B95gUV#Mo-_OWKkH;@2uz9WkFt*d}6+E1y_7Ze_|fGl7lhqUK! z`2&ZCmfy6=w3XhL<*D{wZFiJBm2`TSqEtn8x5(D4z3F^%`I~jq2S@I68T<3!8r`LA z2%Z75!gp$9d6$K&Ki|EW!{RALLBV^JwE7`h?|RG(5Pi7_(A03UZ~nTZ|02eFyb%8^ zKmC8K>>>Px`v{P&vkda3fj{oS0-9SJn>cgW+5eRJ{lm#GGFU>Xg^S2%d;4Yplf-Co zJ{s+uxx`K$%}nfNn+k)Ww9A}>KisrJMcMTqy_xS3;8pP!=(XDsx<78#*&y}c!2~7XRpSZ* zXpcQ)UG4zPyjKj)P7mixo7GWNL*Cq~eM;h75Xk?+zbqA#xLKb2qN~3w zfj#az0mXy6Z}I9%3Y}*fqXR2$ve~Sx0^}UB21eqDHHPK{Ze-_2#(pw%iPA`>cf}Yb z>+OFn`DqS#6e{h27WpOXfDr8xJLjQHOiG<5&$@A2!V1Nohw7KwPq00E*TDp23#p50 z^3QENv~SP6jfYNyYSZ?;D#%9f1(6A+{`06A*;t#N6N(4jl_@Lmp`o}T_wqOd^BwI% zNpe7qW$PJPglM79E_3-{mc6Mls;hY$qNfm@b5z&YZR_GzOj%=n*viBK+}`b$qRv?; z47$D)RemQi`&vQJkvLm;b4PMD7j1o>Bf7oZ-Gouj51 ztTql;l^n}jKlFpF+}yq^+2roiS^$VY$M5I6f(nMeYxj6~@Fyn5i)dsr?G9;PwYIva zaq%clS8HH9byahEyi((Vk@koiuGH|LtCq}i1?!8f6fOP>JS-MdO~eNrbPe_cb7?_2 zjvA}gH{vm0>r1?;M;oi&Qc<6z7;zz#_Xj-~ydXc|?qE4Y-nSKco$e5IQIy#nd z!u&>c;R3+Vgx^P7yCB(9^2ItmYL_#mC%|CAdVI*C^rf=Z5Kx-as#&>;>-APc0bab> zBtoDB6|j)JV#88%&aRlj%ounhBaaxz+{eJ^JBKH)olO-({Od&%w&J9cjjJtlU={_= zxG3-7t1ep2_T1C}NRG_yTKfkXuI&%$a))nvnYgiU1=8T`0gzwA=XYqq4Y*dKyHI=>{jN|7o{KR>Na<_w}B(%CDQp>7e+?KCxBzs z)%*#XJX%@%?LmwH=OalWNl~rVS`ilc156bCimCZWsurD@7LHP_D73uk$Stl!PRs+$ zrn#(v`d3pGJ;jHKBgHbWVTjVvDqRPECYb6fe3mUaP-Ju+kYd>%cR3JVHVbY4z?kh)IPfZQ5B*U2 zLc3tfwPvOr4Phlb=754`^f0GH0kY|OKM8wvPtkqe>0uKm(JfT0k>LTbr3tB&EzY~G zusq>KyX>tHmQ?Sm=1?KQwM|BeuCmXgdlDFpMOcbePKU1Hl-}&I)ZA=1$UF8!$V-pe zJ;>QPnY=NHB`Eh7b3_rc_|>S0xrQW2C$mMc&b>oTvv?iCqlVBm5WFR zgnKi-hmTdSlu-yFq4sNo(gw1M%^q&_0cxzNnjEA!MtbWq+e6I1U9qsvM(H-}SNRgc z{W@;SbJ{DOfh-lI1Rjd@t7aJ}4=` z6i$%E9Vf&}ltKnETQs7-V!a}-sd153mzgjDgM^rSE_vN3*0Nh$@Wb1uG3Zo-$xquE zc=feLaLrAR;&;NgD=d3SUrwdy*o<6I*CEtPd7P281_EiudKH=PN=7AOH!Hulx88b9 z<3qCBEMJo`&YP2ZS+v719vk~2`xWq#2LD&(97O{b8#$Gup4JK*O_X|{Oe}oQDg!ahqoETN@Toy-<&l2K${&KG&S zXwxV~RCd2rRX>iEo!WK3iCc_6JWC(qN{bwIfy{%9R3f)Jq_YNW*I@3!z5CCT&TjTuCcJO{nH8_o96Rl%82uJWR|CbuJ>} z(y}9>Ghs9md3*b{yRoo&SW_~?MnQ^g$s6}*ygP@;?wi(6-qEL|v~07~51Pe#xC6)M35DuzG`ZFL7Jf%AM%-Eud4Ybp1hKj zM=Pq=4p!Z@QR%_P?NVpfF|apcP%a)0N-tIAcwoiA2FB#niy|qXV8L2;bT7GyA>z75 zcgfs$*v=(uHH`M$0cn!>_^*Ftq;^Ks(7515di}T}6<2MCKTlWlO&o*PdlW2FlgcA$ zYsVtdLzmsr^4>z(>SKs7ng)1kn-4q6Ab>ku{ADNyDgFp&-SZ}sVNH7OY@3C0d&|Os zHR&{4d;0{<6tIh2*VWK`uS%JFd{ns;fs@hMIBEC~oifQ*lq%ek6fVhjKAKD(++!-s zdpX;Dtt+*LdiqTzl9S1{zoPSl2sC-kPJ94SSTt_Vuuk(6-1{Tw?7O36gY{wxp|jo1 zXxvI;NdS`Zd%52jjG5jqEVGn;+@pWQ3c$XjvQZVt-m5=l61)Q5beS3U%`(Mdqw09a z%h~bKa;hG8)k_*Z8}AlbBsc^mn$v7`l8a`eN3uK&?58Z|95eGaZO-H+Wf6e>86(lX zB}y_;S?92dLXdOn7xkfmu58yB&IA*kAGj86m&S3gBDTyvX-J^h#9zaABBmjaRbw6s zs0jpo7L@rE36Mk)FLPB)c2nJ#Xib~qbUJ3^bm|f~ zbM;7}0Gw>dnrU3v7{W}7J7VmLTCg?5AJ?T1G6GABlj3XfKV$nO&XReuwo3Wz1=e$k zJq8+4nLf-E#!3|T*~tp=Wi@jqIdE!?u<5OYsA`Qpae7@}3c`CO8HI+i8_qGPJNzi< zNT>HZQNzP9GkcPjny<8NHT4vxGHn`S}x@TZmAQ{vZZA#P~l2)Hx%wJb_(o-nBfhAL{ubw*V%(V zJX4)(v}tE>KnQaql#G(^%Lasxe{)rvG$Zf>xAmgjxrpZ^Kdm=XQ;CB~c3podCs|2M z>>8eew8auGjf^XH$jHy*3j(FTb|*CU zS*fjd4QP{9hr3`aDQ%N!xz>YtLCH62#{%e!zB}-;?pcooNAvO}rr;mJNHzTWUIh5_ zf%vYy14Mzq=>K>>O0qM*Zw8V4p~gGi^96!b4&g8~IP<+I{pL^47bV2=g^0WvGEQ2g zwknbbB4F^QK=b$8lM0Q9;vlh%(UxcBJlqqmZx7@1pBP050)4EiS#GKETb@-DOW?fs z;9(TQSZ3l}>RaoW_PK;h==++lRbuQvV8tlsUb)ze6-}q`MKqvI;O6qB=tQyaF5F^d z!T0#R2he92(8#e%%S|U;1aDujg$SnlPd}t!x-`byU=}^ow>)F^psY5A%7m*xVu1x! z;G#xzrB{GNmtwkEwjM{6^zz!_$f{$s{F_Y-qVBofI~|JJPO%9p|~hpT64F-JTDpVifUx){4@v(Pu2FLr9SzDX-6rw&Qan+W~m zwOh!Grn;U-sY$)w{0MUA^lnN`BHb-eABIUoz~3#d;(+{hd}j}in)FO4E;(G%Oa z4Cv)yI)EoJF`s{$1A`VE?rVK?keb?TH!x3}7q}wBlrCmX5=|8m2ud{apf2Z$xoexG z**`$wnIC30I1KfRQdYo9nglFJW0K!0`n zyI)OP$2MF1P_^$7szNUJR(D_idPCaeieA)Ci^>*w_Hww$tU`U_^B)ry{H6@t9?PFH ziMLYaHK{+$YLbhl6*GgmF&4;CS!Hh?nsMg)i3Gl1YNig;pZdnQd?478;h)~;rb|+{ zd8wLI(QS7+9d&3@2J2cB!P`y4s><(Iylx;ou^0Y8Drg}YuM<`%tFvq_{pCCHHJV5B zkApE1{iGd@1*@qr4y0=E=?E(Ll%-p`Tt3KU3ul^F&~?9kG^o}S%zgU6}n)}8N? zDR((bJpWpTG8)1F;ga8O+7Kx06Eb7JOAN z>mx*lDUN9|=xXrOuxZ`!^%=mc)vKj4A)+%FO zeD(-uw5AyNsfvftM?bmX;*eV4|NYuzbVIO%3-TLo_0`dbB5|R4z4-er`0{ZK?bS%im*bxefihvwfSYq;< zOdAyNXZ1_yRuGq6X3q$@yxfAMCj*$eXs)g zUV=kMh6pH~Kyrdi91I{y5e6K`7s=-jYMfb>=2$Ah5=0CMVMq>g2?Yo4a0w1vSwTuh zRZHf$uiLuvP9MjUzJ|`RfB*3Q!9_rT&b~$-I9zD^e@?+aj^Ig0!)pb?&W?+`zoQ;^ z%}MOFt;^XH<)qFlydWGbO#t6%G;md4kLBSYoe$0aIb*Uz(_G+%ykL1m1kdF;mi0P| z=jUKRdEoW7V0jMD=Q&Z|I*aV2^WassV96YSzZ(TtapUg@;8n3;2^fWbCpex2ziDKh z&jelZ;6;I8nLv$#jrG)aaaKqp6z)KFm^32Nq&I2z%@OKRG<=9~v z7!`kKIJWG+;_QFN0AFAlmZ41LGzPdC09S7M@A%*=IK%R_sQ%7(N5a4s37$`7&DIZv1Hv>4}UzeG`z=p5J0*g*KO@o8|A?4PWlz1bfp9 z*9;E(_u>zKM*yGFd_qv_6##-GIC=hlOK?7m>11#Dcaw+yKRHxEH~Lx|IHrFSH;*^r zzt|k%6Judbz_2|P__Q=xhz);11)pvTOGW+QRH{>wPydbyKKBon>6`tjOuuIWo=*gQ zGT^h(V2K7D;fPMoN5{EoXASzvISf9J3>N+2Lpb!4tg^oYh7Xd21^(y_2MilBc^35P z6BYhMddn9M`ky$t^ZOaPm%>NM!8SPM6x4rW=FWot*4X*QpYw+<~;@_NY zp{Vc?XRr-M1OJZtcMJ0AZT|ON<>#?KB=C3i|AH#c8o`rU2Om-a+w}QAgTn+^oW*jw z33PC8F2WGWyp#2k^N+y>XYrg^10QMtYfbc@dHxGLIE&+STmF4z|2Z64v46JZKVR-y zBqxTzdvak7L5%yI)hO!^b{KYo}$5ujdx TKDHc?j}JZq!aWEK0>b|QKNTex literal 0 HcmV?d00001 diff --git a/qgis-app/plugins/views.py b/qgis-app/plugins/views.py index 4a0e0bf0..ab369702 100644 --- a/qgis-app/plugins/views.py +++ b/qgis-app/plugins/views.py @@ -905,7 +905,7 @@ def _main_plugin_update(request, plugin, form): Updates the main plugin object from version metadata """ # Check if update name from metadata is allowed - metadata_fields = ["author", "email", "description", "about", "homepage", "tracker"] + metadata_fields = ["author", "email", "description", "about", "homepage", "tracker", "repository"] if plugin.allow_update_name: metadata_fields.insert(0, "name")