From 89f50b1b3ce9a4fb190b165897a1bce83d9e9c0a Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Tue, 19 Dec 2023 13:34:00 +0530 Subject: [PATCH] Added keep-alive support for SSH sessions when connecting to a PostgreSQL server via an SSH tunnel. #7016 Update docs --- docs/en_US/images/server_ssh_tunnel.png | Bin 72382 -> 75676 bytes docs/en_US/release_notes.rst | 1 + docs/en_US/release_notes_8_2.rst | 32 +++++++++++++++ docs/en_US/server_dialog.rst | 4 ++ web/migrations/versions/ec0f11f9a4e6_.py | 36 +++++++++++++++++ .../browser/server_groups/servers/__init__.py | 7 ++++ .../static/js/subscription.ui.js | 37 ------------------ .../servers/static/js/server.ui.js | 18 +++++++++ .../servers/tests/servers_test_data.json | 14 +++++-- .../servers/tests/test_add_server.py | 2 + .../servers/tests/test_check_connect.py | 1 + .../tests/test_check_ssh_mock_connect.py | 5 ++- .../tests/servers_group_test_data.json | 1 + web/pgadmin/model/__init__.py | 4 +- .../utils/driver/psycopg3/connection.py | 2 +- .../utils/driver/psycopg3/server_manager.py | 33 ++++++++-------- .../schema_ui_files/server.ui.spec.js | 4 ++ .../schema_ui_files/subscription.ui.spec.js | 21 ---------- 18 files changed, 141 insertions(+), 81 deletions(-) create mode 100644 docs/en_US/release_notes_8_2.rst create mode 100644 web/migrations/versions/ec0f11f9a4e6_.py diff --git a/docs/en_US/images/server_ssh_tunnel.png b/docs/en_US/images/server_ssh_tunnel.png index c3d3fd6a4e865356585cb7701c0c9f287d31edd0..68df1368da781f92917c81ef3d0d57cd4d1627af 100644 GIT binary patch literal 75676 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 F`VZ&rwm<*? literal 72382 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 ZA zf#j@|O+z(^A~OK*x$Y_VhRt3Vq+Hpio>qJ%Af3y-TJ-MFe@ z;Gj+B@}o`W5Nk=$P^7A7#u9iZO*G(a-45%H#h?7N?S8+Ak>BVC-LfAhu+Jvf>tZKv z2j0EG3p5jHHqUf)q}p~LmwK5SV|1A~CIUCD;!c{!1-0ed!)eORs(?^9bIg)hqZ&o( za0WLGm+ZYycnWgbuy1&(uC_F{Ko=#pmafa1zuhBh@1TMhxp5oJ2XMJL4CmM z`|@fCp^N8!zd)Bj1gEe3pmL1sxx0X`^z-peTb1r@FNJfnqo+f)!*X$OMyD~xe{ z3~(Bcb1A89*X#3A=a#_%WH}_zr6ENcNQ(F&;Ohx6R}(+Jx2hWsABfgb>W;_lq;>(4CM&-jJqkvtkX3 zCO6l>&f|4qEq?X;BQ#t71Uk$_&9JMkP_&E~^{!ve)4*?&p!F1ye&ay*r4j5#_<^XN zlJMmm@S<4EV`L1CPW);YUCNV7x7repo^dSS@>WlLD>rG5k z5$X*^5Hf!+7O-%sH4AaEDCcMF9Q=0lnyfTrXB!%;D6b*8rx)i!KuV$V)N`FPPME{O z2Z_62Jq5l!2U$O=Ws;3^3WO(0<~&il{X(VfLnP4B^PuK;J!L-sJ>K?oXv$x;6U*U4 zhAnS&MlIY!DSyeWs%7iH=sq#T>fUA3MB(*(k?vpnJA&ny>UxZ#<#ZiQQ7J`6rWQXY z5({cSgp0sf#XT|p!jBb377>%klL{2+^+gW$3B){@RFbQ)2cD2vH;*BKn{nym%gRC0 zSpp!GNE##_B#j_qve#{ogps3xHwe+~0Pb_Ew1I;G;OP+-UnoSRCSx+Mhf^3CojQ3lE)!Qne^*q!I1^oK4=qMAx?UTM$>b$cc2s}b586R|6POT3!&MQK;<`cPeX5UqGdWnzkzFhB>+4{( zn1w#JQ9B|@DHStKKt#EFwUT(49NYLX)#qxQORAM=0ncN8gg30e?0tJN&wH_mZi1K{ z!*0UOcp+jzbRkt8gjg8-cBj8z=cB1bssMJa-waUevF-4E5+QW~Zfhy=k5@#oL;n!v z&isq%^j#R2*L75&0FGQn3DgzP@dX$mH7#P|%y$5KBi&GgH(GsRkAf-aW;-K9Ai?Tl zLzRt&w3ayP!)KCXCzOGh5IVRc@9WM8q4~HQu~^io^*cDW{jHIV1Vjm%Q}`>K^xN-S zfw9ytiLO`ap4(<_R*^qL5dnZmue;keLJmA_`r?x{MzykZ!yoS7|G+JdD5D|c-E*4X z=lwaq1@kwf&w_62hxZr5pn;g&`sgN)dFtfEUmMH9+b*r7st{A!h&|q`o#^IEuS*H(EG57^ z?Dd9z4}FMO+zwh<3^Mc2WzvrBtFhW3`^S!uYssfQ!?B?Vg!9`=%Ck6a`VfAk51kA3 zaS2OE0N|giBjsqXy_KM{;oo+#m`?|~L_h+2ii|)!@=6FY?AKKJ$oS!3leOQXZj@|z zyRZ`4(<++NCXQ#y>8=(8BDTl1!Sz*kwEWKi__6H zVdI8eNGlU67J(XbivaM-0OptQIy}umsTx2C#_$-C&|de}MNb2x3>m^Okb$`f2(p;3 zppoON8@o8!eZ4T@(NBszu&v|!dKq?qPlu@vkqB#q|E9S{P*c9NZFxoQFxzgu4+J@sH;&%7F~dMXarh(Lru@!!L3j-3akG$x>M-@uTv+@* z4!m||kJ`v?`o2l>s~kpF?O;-4HL`=`wC;ze!I^Y(uTrce+n^d)kd}+8wrZHH&(sI~ zX_dLyq@i2|d`t9{JKIa>IjYF_FgKFiyE{N%#?IPX)xjqAq=vOm&XfxWu0_FSo~Pr- zr>u}A2iL0ch`b=;U+fIk(SYk!5%#-~K`zq`*6yb&ufN_fVCXeQn?g8(`R?T*ZsnQo z^Gpy{klv;LDN>gzG)!O31Lv^j?@>;C(zQ$2jAN|-VQ1xWn=|A9pRnB{ zolt8T+xyR*jBOoL>YmQn)JO4Tk;3a}|!apni%KY6f zX+_x8m&Z*1L*@@vJ)wedBgAMw_Ha>mGa=}w2!~xdaJS?76Tw36r}u*UiJm?JnK8PT z=mIVWYJ?#>zPgjx0&r=(K(+E=S9%nBFrij^1Y$$+%W7)Dkeugwj0u(#tH`z=%5~I? zL~po(_)>XH7V_}Z{i+{k?G?k0u1%{9BHQgK6AHH0xhvO3C|l@n&wZuz%35T6mtsP_ zNXHh^1|)kpv19){HnN9t-vo;^G-HLE2&ifQUh1I-N3el*_wuc|shW3KAY3$D1^-T} z{UM)FGb!z<>1osXz)NM#rw@khMmBHj8J)%k0O#Y!>Q#Mkrk>3L^&eucbgF4`_th`D zsshELojQrx_5%}gbzeNY-F_STEG?Sad}E;OWJ{bMwjTyE&l6c95~U+uxq0)Q>rou> zd-2zsd`o*w-MI4GJ@th}fFGAi_qBo$S*L`}&1r!=(0vk!+QSQ^AZ&0)zI-A6*O70h zJFFJNdYmdQJan)ptAux6`FUg1jLH+ntPd9gk05r~En8{c@FMmTL6`vlh! zG4n{Ym@L*o4X=s!$Y2^kHu^7V9%M9>k`aVag2$1U$A~o%3Za)kS|%Z=OdVRG81aLF zOHb{oM=`w-v4ZfIHM$rMt~tIj4CA+mLuDW!Iv;}EPG1>4@Kv)8!b|sl8tV*tt^>p& z8v*52+wWa>!b{X$J(wJO`=(Jju|qrb52+7j!a(+fPwy-r&+jACIu`p$9mOZg7mz`9 z3kPC(KbmJ&4nj=5?fD?vv-0FdXy?K^{j?-(7qN zV1KvI9<4X4Yz#y{82DN~!qFbCk}CxuucJS5kr#_KGZGKWp!80m+`Vdv?wLXSnwdg$m2`DueW}yjx^y9&wcQT!|fM91< zjF`g0urS$aMry|00NIf`viI0cy`kjFUYc?R4a{aAtlPCCfLEY57_) z4Mb2)Gau7y2pEBR^1X3f#WMMGLrQOky4_wHT z+YW_^*X>hKaiF_afq8;sOCR>*{KN&Aw>2v~XFzI$mFKL_2;XQ16a=%o6T^C_XpGX=^b8`;aYzConqRY*(MyMig zbb0xM$Aa3P5n}IaXe0Qya$J?vBjh%cE6YBa<)$pC*1vQ&OYnk*4tzrwHqYylN6pNPS1U8|is{{l`2-uErg;)*;nQ)YBM;)#b2p?+J^*iY*P3@5A#ZqgfYNTGs)|Bh;Wpr<3&bOq^o_pPb7}2FO~S9 z;BMLmZ$mz*!iXKU0QwUFF>6gp|g!~oYZ7&sQccVB6tZo~(oOU#|eZs3Z zM)NxFc5Bks*N7!TITS?6-pu%9LVMS^&!@=yk=|%pf5WI}`rFcs_|5gWX+?$qh)(DQ zdfW0+1eq~F-fB*Tu~QUtoHwU1Tk@vpSJqaV7QEJ*Ly~Nf&wt$vJo1KVrRTyUQvlO0 zS(FtPYD^bTw88eub&0y=Iep+(hN`SL70ljlu}&g95>{l$if8n5wf;AHx7%b_o=|u7 zRhD5wVSH8o1eu$rug7Y-m7dg%TIO!MBNq0W2LqM&_)?j_@5$s0uT5)>E1gO`@Kc=6 z;iEi@pEZLVx4PB;>H}H0wP4b zAku<_bV-+VcegYQB`w`0-Q7KONDR`=5K1$2H+;wE)yL-#_esEy^F?q_y1y9fB2}UB?RZBW`{NSML*TMYl^o>5&a0lPb z!E)HGXHT;}55nLopo_2_AR_hNa_J!;ev%QGl*@dB z$+ztQhj{P7iAckkiX~?jp1LVU|EL|Zzzek`ZQSt_@a%g_g2!H@qW|>8^;F3PylvKs-xBJ>hw6ImYmBr92)i6e zS5TlHh~G_?d>n~*>sbJ^qLFo1OoL+mNLZOkHx4XM3;KMaI}|^wGa^=7uo1PyF%B)^ z-FsGh9>Cs02NT!*&`kRBK`BB`X6>njSPUKNmiXNj_~TMKfkw#0lG5gRiz>sn3f@6f z?Pe0Vy)%yw?(=v1d*zjdt@9I%Ri3IZ!Lfr2QzPd3-{5v|p2b;GKSBS7@ZbLY1!fYo4wOpLBoMiuqPAj`7W6S zg-V@*wlW1<-StHZtC5x@l=3Ecw(fqw=a}Wr^2vLx6x)&|#?kmd-kP*rwl62Y&uEdv z$12t0UFUHpEq@Y5Mx-Sj-qy-Nm~o1;ar$$|tPIxW)~5P|+H3B@4QsRSIwLbGgwTY@ z_6!x13>b`7v2&RL0$pHVbeCmpQD(cQmc0~iH3sp!J08$tUn99URiwqKPgz{EQ|SN% z>-aLw2K<2)H1foF^BQG0p%X_sOQtxiU+sf`p23zYdBcvCpsNuw$Uypx)gw*<~uYM70aGjH+`J` z%4R984fL|db*>*q3vI~g5Mij+tC>#e6=3+pt58k!`WzIbEhl~BiodL3x8R1v!d0Bw!rHwmX zG05UBbX6HzFJWvPa5~oBr#igcy{4N5T30afFA=+toU3&U1-hH+3H0i;n(VfW(u5X6 z)f);f-<5H!z{<|Ce4aNJobjSt<2UhGk%PaVi9jY1`c@nO&?Q(H==o*}co2IWJ|^15 z8FbrhRRlZIBo1+HExI4@9?xfs9JdWJa^Rl|IUW)p4z$Q~k<&8K^r2+sQ25dN_>3a) z@!(Yyr?+dlhtq@3u<=>V_&N1v-*VpUHc06by#e?OwBEO?2Sx)c-?$#R#CzRc4~XDu zTd{B~eQM2Tihei3B?fldG4X@>BA~3DLv5ldBEM20k?>3*ZiT4@)2nLF@|ouC0~*k+5FGjP|`NfN3!P;p%zQ#(X=(VPq(=`5>JE zU0peK>W)H|ZxnjPHbyY?i4UD8)M-(U{(0{psO_i)?Jb27T=t&;B$FCPX4Dn`#qXKRD{8z4-s3d${JciJ-gNM9} zTCeiPf9XNas6Hy~B3njjS^c}G- zgb^E7HCODPKaZRgiwBR7s#>l^#j)htdb&NM+IAmKx9)k+uEonYxDH*uW}=|sSU7Z< ztF^1~ICs#Elk?tqFe{g}Uypy#*U1dmSgJN2j7u_FVntlGhSt;KYm!52rRk)?O(Y}C z3y_E#dQp?zJhU<7R zi|a@JGmW!oDJIVfp0hQq4Qq{DE>mJq5-K4$V{+@q?foEQ?9D;*NI#EdgO}H*wb+?v066&%aU~CzNN33L1J(_Tv_PjV&JFxp_A7nR zD;C8BCf)q>YX1JFgZCql)}3;0WmCE2cbj%)?s;0*`xpIRFuI3wj=N4q=*$ZhY$qM; zM<@N(0ck|y-8rGvS%Rf51+Vu$E&x1kdHjwA42g|-Q05@3% z08!Xh&Hz+>K#7S}DvnGIR_mp$PO#T_~Pi7&dSV#MF8o*6SsMa=eKxYZ}k}+H~_|)DGlmqjYolgelTXA(=$EFX*mi`j>h5EyqX+?l$`$C7l zMVLC>wc6vNy}d%whj6___o~|Cr2SrTpod&$hZg9)HQw$=&WNj0(Wq)W<#}9BWPFV5 zg(EaezJ^ws`<1F3;1O5Hm#9E7eEsQ!`&86V-vooNT z`aU7(Q3gtV!MXO4Qz&>@Q1Nwt%CbkuFGdfKW}Mr86K;PNAZGDPOr!gjX|{RUA^CeMv+`gHnPP!V z!}dGzSC%77w;PJ_T0?O(imy{l2MdtXJRCnzn9HTPX4UT$NHZhMgpt;@z#qHp&5N|g zTpRewrr9rk?Wm=t#6f%ALvP(sHilIVkyJKegYOGaX!X83Nc*2M>@SzFQ0`ZZI+sUIxH@-LRIXh9?!GbyAu|ZhyQ0U_bp-5k?T9h{|1ca%&v`HOpvHbI+X|lD_8q6j>F70Q@#pQu!N=bM5 zMrcr$m{6_>Cx)+>bmB$KCLLzRdV53{V^ATwnjqKTx07^~{?}B(EKn_w zQuo$1TsX8IoY?EcTW>i9Ut^2cg4;fmge%a`68fR|5mB4&=f z{XjEgT%^Yu#kt9kFBlZom4*y2D6Pk`RoBG$Z++bA5l{DuEE{_J*9MRvhTwB#gX1Av z9U6yCz7kus^8}3U^F(1&;@92}P+b>PGVndQ0~2vmM~cklqQTuZdunL-;qZ9jg! z{w+y`l1w;gEbivenQSL#VZuN?hN;E%TrL<5KJ2s3TXMAY5`g=YObs(6xvP}9B67Js z+F&jjzpGHIFcEx;t@9SH2UTX6ko0k>I;?EMU^n^fdZ!|ExP1Fmqp4g_LqB(rWnWMi zeO@C?CqH7c!O6#5RGYFw4X?>M0B#?}=ltoCRs;BQ8lQ0dcPQSxfh#-KW1bcE#mfY8 zNb<-XgM$OFO{o23X^wT;B(1iC(->9aSC`M8>23FQ-iauZ3!bS)@~>FAveaO-4br?=Uco}GBss(t>B6!VRsh=2;u%JA^qVI=mB&FlIU|5*3o zjKsbZ0T=eQ@Y&+ zdDC0)yUr{9(xj~;EkC5YWe|fd^_%X_p{3?;ovx}GOGPW}si80*bMgMJz;HsN?(64V zYINqKPD(p76%90nkDnkxsw4}&?n*K==Kw8KyfN3%MfydnZmWwjxbn`f1|jAepc>Jr z!;BQOTSx^uWF48)<{Naqle5_GVYvJ=YzCHAA>jchxH^~RVQ&g|)6u_6e=C*b4U8&f zY4P1SvP`~nZDY5dGf5XbXUt)!XB7Y)!Ji-ScjOn9h3}Fz*40Lk;r_3RsB|a&c)oPu zy+!AFbE;CIG>AmoFM;OCn{Lj98=0BdDGo=8W#&9r<2pMu$ir zXrB;MZ%vZo)>j zC}_i;exDBBGo3w~JQMT0c|Ho7{CYcCG-3Um@N91J$;GP!tlXxQ@+`v;{Fr$KXs6eD zF&nHi)zT<#PXK_(6i80YEWTpx0@tb)?8JXl^~24@WudF>Pci%Cal%EZdb1AK;t2rA z=ZL<_+=-{vG;TsOa;?Q{Bz@{}`0TK=rlU97iln2G>)?8U&b9R8YvzY|$96a&}KYtIM!IV*IIJqy+al+{q`D z3)4?~ZA56hww5@mu^fzs<4k~KM8CmQI6zd23h+*FEC&E~vT~XM5sj4NyD4s)cI9EW zo2Ct??g;ZtS_*8c z#;eS4bsDP&l-q#T^}62l?q*(X_{%T;#6Q=s5!8_{qiOV$Tzhx|Y~?hLYQerm6MZcB z;#fE}7Uv7P?K*}SflsIGwy#@Csv3asye{y69Es&)$(J5Pv6RjlZcmEOXc!#8M9tNo z>tiWS+%v#IZA@z7sidM)pC7`5&a+axQGXt6-#;=o5hXP!lx}&EYPV-+W17HE@nySd zM`2w>G%}qxENQ`InK%C=PEl^6&Rp?(tXSJ3Z)5n6p?a(m$D3#Qu5(s#X^T7iG8&1f zx=?mu+r?0(*3z4(q39vWQP)sMsLH@v2r8G{8ZJ!}d5GABGm^xHj~t6!+sPA;7iG*oSL#O~+U zPx>}a-N17N&O&$#Dsq0g80=PRwl@}naLE?_r9XTe+_2_{+6%EJnyqpKL-EhillbqfWn`pjMst>e}COUt> zcZUA~5Re@KoMgAtKIbdJEc9zV1(=YorpgrpDFBRPY6_S+6E6%6?THV>VpZXy#+Bs! z;yw+}li`> z>$Z*SQ0igLdr2lh&W7ardY#yv{f&-rXxsyR)TK_?@|pgMRW{JgPG0Iegiy5JVRW3t z+!6Iib9~U3qeMv_N^@G&bt&nG#M7Ndg4**_su&v@ty+n0J}Ym7${4EUFVOrbpMNw6 zrVa_%FDv2>-D)VAK^d7%|Dt-+kURQY0ysK`4BrVe^M}fNTZ)Tt<3P!Z3sEN0Z?jC6 z`i*vi>#QKf#0)7o0jS%hZ;Xn?BKKi+FkMQcA(^8hn3cAQP$A1MS1xT9>!15)_E`YE z6fx>U&#=&=@h8a!;V-@MQW$t#p|+aXwh<>F$!~5#hJ+1Gb)IokfVDJ+k<$UgrZ(U@+%vY<_P{@ zN$K^Uy^-P1v40(v&V}p0@*M8x03OHv9QNkT|ND++s^mYKI}Qq;Z<#Y`b6ZHQ+492e zIUSs$J^z3VU)}bZpSubvkaq$${kW{vX@{k@#&OqgYWQ;?cmrc=ffKq5xyf@ppd$_f zY3jTAldvtyo>?|OBTu1Z)3|iT&VL1|ZW4)G7Mf_(8>DRf> z3?gX=&Cl4$Y@A=uOn`&KZ64(Ks2T4!HhW)smJS1o7G0*$5A?o6$tKS>&MsOEYOdEp0gcINUi;*6h%s@ z#x#_1k|TX~GH((Rari z@^E!wctEMh_Y*Fj43Zj5`{e+8ZPQjICerZ9#_ZC9n<~;orjd#}GlKx0rc!f>=Ocs| z^;<&ix=gXJ)d((XJ}iOGqcGg&1qGjOGu&n2z?VGIc*TYDcsaNg(5%#3mzdi<*;6YK za{o76S>W;d0GkoOuBcSRPz}8_;U|Ft_vc69n7!>zblyEp(*$NX4NoK~EdTtX5(`7` zcD~*^1+&!t4%(#sl}cT((s^ZQE-@59EHU#Do1J#3w83#4(6>8H=2DGzL{e+tT?V70 z8trSoj4x-kvoaDx4Lm~dpEYE)9--Y)6) z4Qu#C)(r~Xuxfu`#a2q#Z+XvPft&ZvHD+#=oG7n76W6y6Fc=vllj*C@mry~cZ>O=_ zMTb9Bnwp;8Do~+qc2+)6PEO-c#X}22YS9JT_cHAe$&?>DIvF^QMH!V*r|9_KzYGuD zWaumS%s%RZe4o|6eNF=SKQ&*S45EsHqlyrS980b<(sFgvR3)#uByiKnOH~X4CLZ}t zDVbq)W(%5zYbaa#sFO0jdqm-^@|N2kSo6%}xFzFjYG928iHaU-_7_D(puB9E#Xjls z(It(sT_JD9E$Ya+5Vmk{IFS8(?fEFlr4jO^rRJCy0c&V00?Ccfg3pCZ0c@tz??&O( z48cMj_=^e_{TIa07O-Q{o0kffMkNlWi${VeWhyF2H9MD;+7L*ycmPX3gJylw^SI!G z-0bWwoGg8$nLP{`+v)j7Jg&b8zg~q%<`g^%IYJfy?*>dxP9}wxmO3O`l^8rean?4R zkO8|KlyBBS8fHx_n;}y;s(=LS>BjE!XoU zEOsj&s64e48f9?l7yYiZ({8Vw!~L80y_@dgD-$6p4zDt(uNY z@h3`cdOENEo){_m8}d;LUxX?EvPk3k^w26Des{uS>QcE^3ToUQbvDn~x);g(_}@?=DU{>HWZN_dfE!RW~p|SOW!0T+ zTSe!*_s5FwK#eO%2PsHQ>Dw>Z^$mF4Jdb%U*+@#(!WMX&FOw3!prkDP)$y6U>d)23 z-B>0)k`gcJP6le!gXaL7m@qBQ?G@xJb+BXbFMW_WT2Bc$UqgjnH_K^oTI;B6ET7~G zXedBv&+O%2F5vc+FuW>lT!bie1t zl4Uw;i{>xsOBf#KIPyG}-1q3sjFgHGRY9mE%v!BBLCFli9FzdBiI3Aerz_Len(Kgo zj03vg{=nCC9oY_0#?xsFGVB5qI6L}D9{~-C|6a5LyvAN9`8!G!IW%JOX&vS?(@kjc zcTLCcaBtP@It53_a%d=rex>XVLW`YqSUBl?`PVWmLm1jPyMC9E+r$8Mic9F35qin?glUo(3K~AjIvVfpC#qn&NxB); zRtLr0_VRTuSD4av9{c5dB@d1r(cf;O&m-j8U_C*DW0H*gcWUulaYbUt)!(l3pDm92 zbes}R_~a_@go0ed!LU>9vbH*;$2*G!k&;ddkqPA|jbjV*S_(zJ;DfMN86lBFa2AsCTVzN zIc%4V(n-IdvD81(!3D2c8;o%qeUa%p{2=%_wZm$nU2_xO`tV05iv{4zv>vAzZuT>a z001S^5Ix4Gh4lT9`17=IIvv72q4CmH8zD4p-$Iv10}iJWT*l~7hPV;tG_!ZQ)Jk>L z-AcPVn!njNW-DcXw>vkm5B z0R}^cOQoh6ZoMp1(P>=chPOy5qw=J}>#%j-PiOLIbAZK_@ls0@IO&cIFh?j@D=Nr{ zi(PW8ZpC*S;eCkOc{o?4GGb$KJ-laegZO}SEJHVrdU(q;*(&e+cgkvbhX1=f6bfhV z0to!5>NO1NO)qXM^C_ki?qaFceXvkI$BHZ5v+9?97xa^2~C*10J_?OYwn` zzj;r;JlLyvTpUf&&9(4Q>ujpEHV_rx!laUd$K5h~lH);Kw*dNX!E+|9T4_c;oPbvp zw=lADyPL1|W(!ner^1du#}vxnGuy06g3o8wC_`l<9|>H1tM%#_nQ+jXr=@X7@t45r zD~&r$V(9KtHSvTnw(WYJyy@WH-6(Y5$LXiYL3L4YdA#;eJ#~hw!g6|Qre!CHAld&d z*9#Lz4>o~E9v#6qp@~s)|ISf*aw4DAnO_NnALSPpTd3DKw>pA1eK?_F;qL`_-^W`Q z(^+O-R;q;f#C4F{4JShk2jR1m?;X@1u-IJ#;DS`c!b8oI`IH*+DP9C@F zaDs7A(6AMgt)5o7)xZ?G;D2^QMFdEkcM_xN9Ag99_5$qtg*_|^j3fT_X!;e}nDFz) zZLj6tlTx8$@TE3Tt~uqpX(5G9KaI*#3HV-Rq8A~|4*RbS z(XS!Q3qK#AH#MQwxP?qUp3apruFMrKa*}89U#kdo@ikqRq zn}wm%p1(Q?*Px??-CuGTzg!-sXH|MJ{RsteO?Ro*@dg4PGa(cq)bctG^eAM#$x-%k zqQ6Izy49k~*P-K=EYlMec2GBTHbS)QJd7YOrVd8fsl8}ifY8^_m><_6uKDd|?G{DU2l%7=&thZ7JtS(=Hoi3tQ%@@DqQ5cNJZ{Q?CPMP; zRLZ@4sMrha%V}*J)|vX7rHedrlfC$_156=Ayvc^lTO!3!WAO_Iehn>@wNNk$b^3B- z`u-XHN;%wX#jwJf&XZ3c0-1K5i9V>aD@Ntv5}I~P_3Q+k5;ul`-~vKfhlXRntWD-l zSk4^Sd4*?YI5?(EfYJBP)+hZoSGfi(2Dau2?2XzLP42*8CRov=ZDZp>yl2o zq3^J7p)uVTj_-y6B@O})*2}}o(n}VErY_qG(NiT!%|9j3O9PWWNOMy>8Zd}ef#d#h zY`zxFoP0U&hu(kju{m^`$XZowXIcA`BlmgTHK-Nvl);0WdlKbV)x$2&#KffNE8?+A zhODwW`$6*8LAp|uHO=CvyyI&flCv29MBl7D{4EEfA)b`>R|?fQTzE?{`N-Qcq0Cb0 z0u%^oju>kzwX2Ua51}>duSaei@s=orGz^#d&$|ZKeD|1meL*7iA*n z$@~71UO(=o7adiewLL_0gy?1!>~(aNv+hv4`YIv!)0=J2BWBWY%UvF16~q1y9zkRu zH8r97;1q?0^mY@ClPET0#oRp)`1zfsJrv^4Y2Gg9-!Y*jGJ7HO2YY*syf>cva+|}u zK2z1)*zhIB?*o*$Nd>5TmOsra!Fzq zO!mH8Xx`|@-)5-*&5{BRT5laYl)@q9 z_NEmmx!mrru2>v4^ttYo^x32O&Ww!ZO?p|SwuO6FcQyxC+^A~m>$4V<_b>O~z~AbO z8Z{!BAF{68F6C|85&xMqcP-#GWGYG7LvfiB+I22)0qYH)Nf_uW;Et&Nf@e$bhVRpE_KG`TEXe_s&rAc>2mFyCwfiMq=*743qX5!YMfNS16ZRo?cznlqVzlQo={&O zMLF$E58*@!hJ6t;`4)nmUjTT|o(IVRJSdI>>}#G+`{4d&<3XGvCG9xfk{Q|KN{kVu z1D)2=SCF#uC5vtJ_oqNG#sXqhg(X06GHBPAVdng{Lu~6kdH-hOt)PSl+;k067%+pN?Kp-YAMRlzk_@b-Hfdh!h@WaR{{znr3312vmrWD_wIPp{y0T0dV2ybdPc`x+3R?f1R}-<3Mkd8QYdfUC)l1Si2RE*Em&I8f?5K&}{U%B}6Tw-7LeXsn>p*VBlM_9F77DS2FB!K`LkBQ1IC8n}ixj~GbPpM?@-Q2fOH?F9RCQhA-Qrme#FE|mewDLkwPBT{OHK014yUAGl49rrx@=Je@OA3hDC7Q LFH~m7 zb}W_c4kzK4?Tx@MvIOVTl4<1RnwIfgZ{<|mb&K-yW$(1%K!!LLGy4+rvZVr|xpXsD z(FIN;#+>v3o91czzp=7olyyV=a(z^>1@`8+WoRg%o(Z?-v z8Ey9W2)M=CNIQ>~#X#Gq`e$&ewsXf2i!m=7h)SHP z=u3$GuxG!|SUzrl3)@+Y@I43OHE;&M$@XS4%yLUt2BR>fr0esty*O;;JU z66O5R1$CEi<*RHKC|5%~Q%Ia)0J(WI(2UzklyDz%T&W z=Cv(~eHJ)6Uw%rRPPu$HtW3}@o$k6K0T^V6Nw7wa9b*s5yg2Z`<0ToAYhwVbc~11o z%ehrw1+G6Y_)!;FYY?H zUCWZV*n7bBfaJHGSACk5Z;n9Y`3`{Eo(T5N>t!;488!IqGy z%eL0$0Td>N80bNxt}M?_WPIk^N3EOJI9VGG3JYX`0pox2#!PJF|COieXx|7m%AWEi zmFcuXz6=zOJJz52F12({n4wl z3C~jAnMO$C@pnRu-$nxVe`eIubwWL4ZBf+wZbbq-JJ(5EZCBIY{QzPcwQ4dHH@t2< zk67IbNnq3@YgqQGz+Cn-4r$~4(rs6gZ`b}Gf?N0_sgQb@G?7Q{B;b88fur8Ikc5lCR=L!ERTf;e>y4IgPtZBvwc zKeX8cP}Pj;)j?eYJQ6CNS#_H7i)xX#H;16DzTFAe;ToEJF3<)ZBcGKr&4z^+3SKP5t5dRb3cs>c3rR=g8?ABtUDvn4lo+#f3o^opN9Im@c zi}qKaX{WyX0u#5gELD&i)z#K6NssJgG3?Fa`ZhDw^0A-0NoZ;BDI~ zK6SE|f#gNPR+=;je8EPoITFFxV)+_vGtt6>RY_DWgJWrY7Vn?h%Z%XHd4w0ajE}$N zrJ~t(n}`v$mHe_f$Q&6|exhIH86Cx@q)n-O7F+unCr+MUPOFXsj!#)rMMb~(XYV16 zj^5`rm~^HifK?*#gcb#jul~nZlop;VOmDCFnP4NSy2tUFrRv%ck+99EH}YIn`9p+*V>(WQR}YZ``G zVz?-DF8||i&d@*C(_s@LFzB_0)HyF>yS!wf;);7Q%}sdryR;FO3k8rgRWRUo>>5ZOqRdMn)wtcsly zE>wQ(o$1~u`DNkHs{c#drT#I?JEyS;s3|%9$vuNGJ{wit@cHx(P@fn~c@usL zLV1Sp=O+R|q)~h8!OO)`BDf9&Ys=0fxPXk|cyK`PapvZoSl%;xi1Dy$>)Q%? zT<5O98g)jgh6>*VA&^Ac*NtrGS#GQj?&O;>y5jP|uUnF`q1%AoFZ&xdW@)LA53%j~ z7Q$H1dg~yL>Kh-fjfq9QHJ(Ok9X{{9V;LfC+s@t6_mPufDmXI|tsPZ(Jci8K`#pO{ zhT4+$Dx=|H2ve#`$#jXQ1{$vy54i_~vx^wEURO}z#!X_Cxyb8UkJVFx&4SWdquBMD6kMGQdtT)HtygIp-PV~CsJvXI9Xc}-23SV>4>?HRtGq z?$Fap!cVZm46RQdOb>V;?QoS_j>(+rh<}FfKvby;&8C#h1s&K&uj?2M4miA`wu{-! z$hbXiS)+cSI=Hz@oIP@oNNt2D52;X3y^*)F*lqm`kAj@-@}r_|B-wpaX8}d)rNX1e zpdMbu^W9|i&4qV6`*WrdmZPyKjPTDcljXzI6Meo-4txo1cEB`Iq}N~;N7$ql?V$U# zq7N+}p^f0NMq}CMY2+)`Qlp;4d3EdD(inRYS&F{RZ-no%&djCldyRgoft)=iSHX}d zp^aJ|?wVTn%KEx{OEu`3&|>-1J&F_j7DzeI8}ZvBr&ZX8YY``UsmwxM-u@500m#eb zLQgvN)jlx;-eeux;6 zj}p`Hm{k&!4nepoQBzw=&b?WB8cIRvrY-BRwl7H=t_}M1c#@zV&oUZgprvc={tc)T zqmm4fLQNR{dru!VT#jJ*`{S{s)IMrotelw~r~8G-xnQ4=aDztVu<0|_g>x~51B1pu zv7I)4tyF80(x2p}XTMMApAT{0&lshY9cuMtdH~21`1zlYZjlb;=}*x$px@vB`Jfc+ z@TiP=WH`5p>w~h_{8nQ)VzT>Cr(!Q-x#pc+U1UP+O^-;wDEmuz-<@E#-W;)sZ$CHq zzHavNPDa7l4B+XMbER#1kl!nO3uSdRmTi$-%Iy+kTW}!}3-4WS*Yc_jq*bhPovXx$ z;TL&X{78Sp3{EQYd5%OSSl~zLKz>tLn3_oPLEGk2itPBq4^d|4Gchnx@P|NbQPDuT z57v|{N_T}{EafCv^d?W>u*tH=XzXXNTkn(Z``3%#_Ze~t9{$ANY?EjSAr}t&kaU2A zQ~2ofN8u^Y|*xxGFo{sIK-1Va!AW}BhQ z+t37z(i2BaY3rAdV@me-KWo`>xag$f{JZy&|D&hax@XgKb7XUK>XjyW&&8|5^uh~j zxL@2r@|bnv78e(Vk_7Djs{Ypmg#58l7Zahd}n3pj+H0Y!&fSg-HtsiV22Ww(WN zLkvBm+-nrk$`~@ks~rChO8Teg0;-2yraGDOHLypj8*l1tEdKrPF@etxxQWOU6Yul} zU>#cQmDBpR6CHusSjM%{AKbwt5k2$?<@e=T3>aM&Y)?0s`4F7f`Z2c6Y!f*hHVbobJ*^^UCdDl^OX$@q zKN`OgbNE_g5$(_1=r|iRN=?natScE3dBe3b=&|UPY#A!HVVQ}|DBTQ-t`_Lxd;Y&M z_0I+1vA_wFt5H(mn{UG^TO2lD6mdGE!dsSec{({eLx7jEP$8kciW3RNu@tMWsfpKP z?(93c>Wd1vMSUL<{oT(I>a%@i&@kp|qdf;!OFJwqhSINPad)`R`ys#q}Y>ptq)6BTggQ z8y_EkWfb6_+uABjKtLFm8I`*WZB~`d;G+`x_Kn4KSPQ+-@zz*UTRZI)pJUW(x@2u$ zv3%)d@}beGkGds&tdk6kGy%lX3DYX(w$`!E=!J7NrV>w&C44nBHP<@s@3w?Pm6Vhq zr}*#U)BuhNZM3C`*SmX@;nX6j3vMUI z7yH`PtBWp1KdD03I(+UVbBS*c#grZ@yzl7DEv({>tBa1iP(}uykbpk^Qsx1aHoiZ-wRwG^38db7 zO-rG=?>|5Gzv1y~{tXQ1sQk{VCA;%YOpb|M-iyjpEqj%P=;`#e6H|XWZ}S>>r$W_W z3Xx8UX-(Jj3|p=KydOrVI_NaBNXk^EOI=G|*PXG`6TDh&G^fyX4&KRaY!rVgZ{wA| z;CRAd54CpbcNpQNU^_fn87GD|t%OWfo9t<*Wm*`o_Rc&(!EvlCE2#i0?6)51xB+hw zF@9*ft2P;$vWJ#6KqB_IfATx41usp=J!nXVNUd!E&T_!pjIQ?Ey)|JwJ5^RmW!FIg zg~}{{Rufd8P+}i_^~x^Ox{^={i;y!If(?60JFxr>* zeWE~iP}A0?yV|f0^DQG=ex9*-cawvH3ZL@Xe9+$j!-MM<)a%EgCn(*b5TV0v2rZxh zsi@?~RC`RtJL|hdOF6YJk*uX1HTC=hQiLb`c^sTu<&siLs#+F%prz@S`n46m` zD~Peo25YNA1xg#YsU-0FI@=tb>kW&J>5;X{J#MiwCfB>l%Vmj3pf&$l5d%9uV&GLH zgu+u1wW&BhTRxmGsr*0`2ZPNiXu1pCm6x}kgVZ9%*VQkzwc(^DkoYe@zf4RRNNm5Q zqCaXaoTkQ1+bM6>skT2}o2??a6p8N&nS$>-Q`zG$E(s{bI=Iaeb_a>o)#+T$43NUCp>Y4sHKl5P02xQ*&vqGAO!Ry0$Pf%meAu?!F9e&fOb!GNw z-57A1(V;6Cne=N+i{(*k0*$?Xnv3vH>hXJ?5A^GZLdKC0vz2427Zab!t2Z7@7({D( z;8lN$bWRb3HgF2r{)E}C0n+n?_#I5nw4aaIAG97QVxGrW+-Ag}9otXHH1xZ)-`F14 z=<*ap=_k8PVL2o>{#--2*w{$ZR7r`A%PNl(kf&Cr2-Sx2MlV>ykDz z0wfHK9J1*=A`;Uym*&QX>d|tT_75dBrXw&GL;QY%GDCnC)4imPG)c~ZCdat3vGGR! z9m=$Tsvyj`C;B~>yAIX@VfakczYj}~hg^Uo_eE)CG!y055e-eKQ-F0p{Gg9u-l;Lf z#{rC(E8)8(CgR&IAQcl@Bb;ia9*M;;fJ3co^9I5KVV0vdgmrM~o0#CNxhpe4vmdb6 z=K@no&CLynV8%B#a0RGOCOkmQFs6h&DStsO?XyoPNcG)Zx9{xpM#CXN7^U()V{yNe z!7vPX1u8XR4f4~z-r!jOVDB()oK0lx2@kHQbm@h0pR2f467D{J+$6D>9)3i|bp-#S zaGEkH@~P=w)&vy!@+Y|wmDai(#z`i6M5>}`V~&-EJQ>7BZXOSH)t>(*oWHUPRQN!d z%Gm@8#V~H6?)QEaY+*=D<@)r05H@i<5B*MJ{~|WMbM5#XJv*#=lQ0l?r#9*7T z#jx2s%J}_nqU^X5Bb{Y>Hyfta6+ViT-W{fw_E2L#*6^cL&4${m&ERQ8T#t!)w6H-K zX^uf{FPGb^srM;g160l|lvVl7RL;z&Nj)>O7#3>S$NN4iQ|^&tsLOqpKi78hzrx^D zWk!G6yS~m$5bfl|hDEZ~;73Z{U5(*i8C-~HbXt|>g}{}Yc?WMSk5E;mbX^3~YOb0J zN{}39+IzxkZilRgId;Dn;5+$K=(g_X@uJiX2jd$&XsbnFf9)g zEl{OH!OG?6eNE(-KCP2}2hZ@hZ;qsPT?f4aXNWN;gXBNHv27YHM1N!63qas`i~1f% zE*N(TtH9i4kxVd5iTz!yaHn$K%WWF z+kN^>>+Fk8VwT2Bh!?mkyPr&9rUZ-gVH7tqsAOv<)LaEC)<2=dvBms#ydFFqcAT_{ z68fhE`UcDU!Z&PGe{#2u00DugpLk@Xmntzz*JjlQ+=M!=jGpJFQ__EWy^G@g^PA3O z|MTJ?Bwf{yOkY<&cs!SFhxrIRaP>Q43oGx>y!H;Fx;b0baJo)DUyZge;3gyLKe_sKCHk&|9>(E?V*-?cV54_0Favr%?CiyG=KJfyJt0&4AK1 ziB8-HLFR}GEDI9mdqYwFb{;a7BSR{aJE67f4^LN)oEY)=cGVU*BMzk6+bk3P_|W{@ zg)j?Jz@k#^=Q|$TGbcF=sT>|!55Y+72aKqJkxPVcUM(3dwsuXqh`BufY4d6-GPaA= z&yrcZNrN6)N?{CbO#C5@ykJ%_ncf1P4xc5#dkOup-RcS3%HY+J53G_t+3NP9EAeD? z;I#RGsvSJ$%CbG{m7Be6E~!4f^8w<7*wI&a5YZ;fzYjUXL!)Jhh4debfhvO4geK760Nz9=tk(s zac0Kosa5fpp2C5%i@&0&*4uHC?p}t5oE4W8y_*{MU!igkLqI&wcp>n1qURve?pUs# z@SBxEWRJcaJcQ{>h!Pb#f7(n*v6&h@ml-aq{?1g?X~8^lIlRULssD2p=TTOjMgN9< z+;(DiRCJA4?p~RJzQhL=K)r|T%S9dR0p7WOY^<3Bijo~LVKL0o2zYJWMCDSyeO%d8 zOwPy-_lEoN`FrrKacsf^85aklTrC&J28pqQQP@ts*`Kn8`k-qy-_sep(eY7TO4O_f zE|G6sGa-sQChzsLC1ceqW9d4Zax3YVGpAgBk`V9(xgtng0Y`DC}*Sce2Nwhq9ixw?gei*xM5` zV3@SXPa7NSFn#NAGtcdN#X$QtOTgw z^ao=!jI{%8oLDU?JgIF5jB-qy?~0mCJ@nzjhoXiCt$X(!*($ivNUR(AwHSH3(6Dc+5zZLmWERSNiYQBherRwSpsCiS~|lIe8(LfW0LNbY&;i9+eCPYlH* z3%);l6EG2PtH@rFsz%efND+_{_gdi19jS!7m~Be5!V$_=a|f!)nVChtIf@MpP<_{8 zLUO`wgzx+laNFwKx`*j2{1Jmo7{-PpylA5|N zk4^}Fum16)S797ZL*VUc2>@D0SyPszf?wWq!6Gglsh^jf&5nYCQVseSXfr3xWAn5p+8{MdE;?19^NJWhX`EDwaTXF~2YT=|2T zU^vQ{>=P;x_3r*BO3RLHBya9pLDe{pZovX7Ib{|wq|Hc7BDnG18TNP6Jkawv(r_ey z8yZ4gZt(sYaJwC~KX64Z?0<_rA{#35_F}Eh7&A7;>R=*MI(A_ySJY}KF4OI32Eq4W zxx`9zcFslxEp#lgyj-bF7+yW7E!nLXDQ76Uy4D#+teC~GKvqsy7A^MRF7_2*2a*%5 z=U)Z#=2a(&?A0xrinEbRCTYXe_eF+ZF=HkDB;7tvd_@4IR1H)W6&Y*muFSC zDfB3GG&`-cl}zWn4|G46K;a!v{96~b!ra-sA(wQSB307F+$NQ>)8bNsLEPDQ&40`BJGG3E?&$*A#uY9wbMw67D4&8 zD7T!wGE~J35)a?|duX(|roRoHjQmdvfXaAT!=u6Z*ark}9ihSebhz)2*U%uj&HuMH z1oprk#Y7CY4+gX6qjy;fQPY3Gi6EpRETiz=M1?Np*u!PiW(r&w^+UaTeIeGkr|Dzx zGe%*7?uy~+rL9kOqrguEw166)U6I;gK&2sYe2Pj`@?#f!H(blzV>EsrC=OGGb0csr z7fzC#19wmBz3)CT@dRIy1TzOeW(3nUv8au72i|{xTUR`m5Vq=atiKA`OM0*_v>8b% zkl*{u8Bfl|O)Qm%JAyQQbG5q`-Fzw*yIX6}?>b8>$%i#P)I5WAMkmM9r!IHB11g$K7>tRs`jc1%#AVY}Is9*|Ui%_kMV z_22Y}dKJm#k&C!?pH5S6TtJ?j!%W5kQOE2Y3ohR|5_(D@4iy4N`^3NZ>n36#Q!6_bd6t+73J-v_`f zjNK=j{1|rY4VXWD6uH|T8nf;?t8|3-d?;#jAdzqjBPHUAe1=u2@>%mMDBRD5*uB+;O=P2CpDplWnoJw3tVF@dO3*6d%r>A>(a1Jo3Qmt_|3d=rd zpIuvHR5qh(e;8Y+E!I&qH&1#11V4Mb!DTQq+RwY>^8$8wp*?7T*J)|{^)`20P1UaO zNi7bAS(7L`oF!tHDdEsK=5!YT8@7yNyVT%;3FeN;F=ljs9ZV>4=-Y@MiBr zx1Y>dY)jmvp(UW@G)LA7E-KVwTDidF2UAQgy=<2q2dURK2E#37N6(fUu8`Pkt%|mX zm1^bnLRj|$cXoHCGzV$a7~dPEm+a>NzUkIM8z}v44Rs){0 z&&`k0Bn+D|1@Ex{xBSKB+03HhYEiKpv5VEMh5}s;RClQbpr^ZF$>~<-++y4lcahZdGRUg^6sVf-=YC(-wV5#ONOtRBznc%3m8#ZU17*7)Rc{?G##Fb&%aS6wDF2zNEC?xa8 za$QbTjxIu3R4}uC(S%bhaA~CpC{nSGnh<5E^ncITu@{@ezAeL66EAUu*BaplK}%sUZ|J4CT6TGZ6=L6P+I zqogU7f;l^fSAZ&Jv?Z4nLpT*?$i??c2KEQsq#UDY8omcy{2IyxG&)-GhoD3=)IDYj z>w)Od!_fP(E78=n&n1cBX9@;#JllrE>Jj)X%R)!%)ulZMr3>)oj`?7yrGquD&NPv>iT%X#c7TFjIF;tH{`w}!r zXbMMrgl)FoE=OOF2Ha1vGv1n`8)>6sN1L@$FacQ{9IS_@{?wm<*!TYY+~^}T5?4^G zK8r{ztuL3xP{2(`bmueg?5i226iT@MIM73Zn>+f(Rc5ya8WM5k_3}Xp9^gfQC80v= z&rf&b!xFa`on)Y);cTW;GDktpaO%iiwz5 z*Ly0)o&5O@eK^e@g5X9LWx#nV?+pyJhsVo`mB_XLv8>0w>Lps2qvU4!q7Je-yL<@? zN_kup@xHFcM*cda71P_;;NHnJZbuvh4UBsibo^HqvXuyW-I8uPOY^wNDGd1?r%IWh z?+%>;{PQbUo7EN3#-rW&k#&){*ai8U#$qq1lSZM-^}Cmf(4(r1@p|7hP)f!|()gj? z*naFs#rFtaV-i8S0v-MeRZNpq>-8UhsTc@!E7gR0-!6_!^_LXZRl(asSo`M{AH%lN z#zxyvmoIOnn2ZH0bJ)T0@c4V-Y9JIC!;xdaRnzIOpC!5HEN6f{ZkSrdNB?6eVG@fU+8SKqV76RSu z%3#(Y3`^J-U2T=LH#Sozc*SK}CFPzucjP7j|GV=AzkraBa|fLDj>~S~3v8}=r9tBw zV-F!TE9lv>JERvHnIqy!&gk6A(XmH(!wWkI;|=~%8UD97XOEu9S4b%oZQVmCqxB3o zA>o2+?WF`9D|fTg1Z>HGW^4elOzpt&;Gnxru-s^o1nh0DkguGxUjShZTDNp-he9m8 zNtX3tMe>thAvH10!Bw&HCUdgjm}}WL+=T1ltBMr03;6`fp_&;P!)CND{fGV0*2sv{ z{fxy^oTP5rRuz{QQzuSe@u9Id^JOV5G`C|D1`T_!Kh?q~M3GY|pbD1!M3$>z3Pw+N zBURN&&}{5!-TYnh;$&ZZn(~YGyE9$(SNFqANQNNY>JAk+lKHiB=VLRaXpqwBm7EcL z-j-#?S+I$UbpLx}Bhq!TBn~{t2oEh!n%GLooxO7)88@AX+)98a%jm*OCcRUsYFpKB zI?-TDq}-LHQ3s^YoVD~GX7z;$0S}&VYgx^&?1Cmi(aAqDzB@df+0}nMb`&<*WLx6M zWX<5r<7~%W7>m}zaf9yIXX4GKMme0q(yn?hL=uiIB2t^!_LuK+0YdIy-ni@%d)HWU#F#9nW0zDSznio!?&Jf z@yec6U`nMipA45N-v_lEyF?NFHGSX`Vc?X{V|+IjWp90xr zjOzf1jctEB#y!Y#W(vd{gaoKCj{RP;fWerwlMjRYVzBod#%)F$#vokuN!C`Ru9qDc zL1?%~MgsR^dQS?`1kU_$N5kxgRqrk)y*|M(VpfSd`C)Gt64uDG4k*@*9?fH=#9iyA z2B;CG@HHB79DJ3N>3-&K1t*BkW6I4AQCyM)ohthw6)c?P`Jbcs`WdBflQ8}?(sw;B zYH3wZhNq7eH3M*S57gk&sy2Rj+AerP6ow~uY3_^IrMt#m@lqLR`tWD-m-Q5@kKd(t z(Ba)a3-Ccdozpmy!l|s%&{LTCjtgQunSlm)An+w>GcoE`8yg?n-?-n1qByf^`s8ZV zTl3+U^&AQo_b&;M9EG%SD0kI-mNHE=Z^qMD*nvc@ ztiNQ}?~O)Q{i(s$(Ls=K345B;gooXC^`>NPW=A3tZ%$yi* z!Tk}h7Jz^oS_-&=sg)rfXCXcF8dg&WdPb%8A<9>ft>Pjck3q0HZWVtRuC82Btuf!N zdv{Odipp21s9ZIfve7&|a`98CP+m;3!N`Q&%4tSQPa>TKHGl_C%gfsmGk-YjFxapKeKyuP4W z^@^8HdSSI!XtN#=n^}zfbWWE)JQ@N%l~(ah!Sw!S;zv7|P-1~2IBk|mbS+Uq4o)mE?^H|{dR%l4R)kxHxlceDgtqbwAxqhZo5leHHP{THHR!U2s3>Ikb-?6gVkD5}iEj;GKo$C}Vd( z#cyT~FC#2)C%{!l(^kHa>+UkEn1suRg?8It7VATy#GFrv`|;T+uSbbjZJjSdx}=%x z=6{}m#;vE;eEoC#M?bZK1q`B@Fkz8ba-*hwl(CCQ%UO6o-bERn>@E@* zxpnL%zfvexx;#(~Kz_8q7u~wOpqZ zmq>(a$_`X6yIRxHUnH$BJ9E%sptavqH|MtFm@+Rj%}#4QeyExuy2OzrSGXC;R8B3S zYeQ~04?N-HV0W_!a$hpfjNF%yl}a`&JaBB_$c8%^-bC%i$<{Y_pg$0w|M#(%M z8{sl;e|u*~_)zZC zy+t!TMB`|LSh%0%`suT#E-Ds%*S!(_oLMQ8%NV*>J!sa@rJ0%1%?r4t+bA`p zuzA-+Fc9W}xn)8y(kkM`4=+@s;T;Ba;_a>Yu)@!RG8-J>6vgdiMcX7cNrYqva~Qe7 zjP%%Qc~&Kug4D$Za`k;e&Mj(!yAK7xcVrwg*r`R7;pZuzv+Ze9zB3058K~{NOCI7! ziq`y=Kc0AO-)AEMejh2nQF{F10_6HEXYeiGavx-Y$LxiAVk!P~#SB0Z3|^C9cr1_* zG!S}htV9vK`=(w#B5~wdq%3c(|MbIIN0fOcV^bWn55dSB!|yUZO{sdr$ELe-wM~!e zx1E8T`VmuDBE;Qd59uY#R8C5X@;xo~}kD z+O}YOvtG!ELdF4_=N>W@F0BcR#jA@PX-&#DO1vCzY1({?wDnXMN>K7wJLEaV!jsr{ z#>PX^WelrY)QR&SP6zgI1j&rO1~Rqi2U&g}n3J8iSvPncUW(77oq%g zoVF>arOgLtnn;v~W!E zzxb8mzS;G7B;R?^dao@T{qAq~wvQq4X*sIU?&F33QB z*Ceo;Lz9}#CX*cqbpPSeJ36ogR3AQd0npLmYB3tX+-BDs9>TVo8_Myibo&Ftoa%c{iFVfF{*dh zVG)1pVR4`xPuq#Z6A88HU+M3x&8nS5z)+VM!LKsR5nKNFhS^Ol;PsoWrPSE{HfDSp zE+%SGPqlmqJ3?;-vH@GzHEf&6=7zNo_2`GEosw&pc5g;G($w|p-O{&X`h;-K3nq7^UEz3go*UCePxPj>^i`_SF`(-E@73YGQoQ|y4wsSuah z;7Wo&uB;7&PQNtAm`1g1DE42ci!_*RQ>bk*sbDWp8_X$L$qlBWXOJdzeV?Zz+mWGd zFvBTEalqu5i}#@|qIMShwx6|F4hKA$XLf2l(jW6_eDK%IKtD#+FfpkPQVq~q;D^`{ zn>l3QI!5(!ekk6B+Zq^Yap&U}QXmDED^$b%(aTmPXJS-x8B6EWluzjt#A!YmG#(Ke zSMLFtOd7BsxH86HhZX@pxf-W|e>8pJt8>J@+HREqN+_cKyv=CkAt_NSG5RmhG#H?Ql>i3n^Fj zWoSr-;6n$@=4 zW>_I`CaGBEu=TJehoIV!)|Z?89T4rP(pEoHTikG9OX|pXqDHx27h_58w?!`ttFYBc z-SnVuey@av1{P@nFhW0Y6)wd4uGQs9 zlqpMH5{)~yB%dXCE$QW~Ufl1xZc3t`>2}ih0hxh8Qb}!?wK>84(9l7@2i)AUa5eq$ znAosK#K$LtHFyLbB1Wu&xCR_4#A8o7zHJ^d>&&D@H^Y4&h8V<Y@hjAx(h$ei(}IGFM=h8cChQai{!;jPRmz1miI~B#y``!@FRMWb z{o_J^$U5;XB z*$!1m$w|_G+mo3KmxND<;P9?4k$L9g;B;e6v%_UT3%rU9&$%Kvdj6UZ)Uye7Nft^Z zbq)W8i2uEZkE{hbkueGRmp5w-VgzM4Q+k4a(r+F$;bgqxcB!xHe02E-`(SA@IBxj9 zE-u)Jx$tcwMTnb!8vGO+*U>Zn{9uu$EE{I~%98e%h4B6UZ1n^b;-!rt@~eKd45ZdK9m#PTg5czU_ZiLad>ZMaDN=suoI!`?DO*r;_9=KH`Hvhxs{8&y=Z~ zT@2bk#!K|{!PK0^>O)c3m68>nNK<7Cfb)Ywo=2oo<-X^MaX0KHB}M_{^05D6lO^n>T8Xk~1)(WnCV$a~@-gy>ujgQZ0Wm)YK2sK>=@Ou-rE+P6)i}A< zKaTPAYUKncq|%WS{pMch;5Ttr$mwug_#PO6+FeEZdH1yx{Z165(NwNa+LRw4M86Lr zEP52Vf+<#$>N{WU4ARQ!a}9x<`P}xcnlvHXrz-Oj*Bt*B_<%fK9f}n$8RL$th;hgw zUp?i0h?<3!lEyS{W2!|~JjRHxl33JFQ`&hQKP|hcuKZF_JUr<~bU?9_V`PtiIQ&)K zq29$d=yZ^-83dsshPYF6iV$}G*9$uqK%T-wth&qdn3MV2-} zp@`449GYKn;Z!VF!Ll(0yx|2qb>#DfFOEH83Ya;VKCHEcZ3Otno6kq^Ns zK7AEh-W-R8a!2|c0UM@#<>TCzR8#8bM;W~59?a~(jJwm8mTVT|EcuMX zn|tdx7R)ZkA0S8vL;_D2ph=y`pjw|F0}P7rX~Cc&6q2tt>>>FYqaCwz2v*%UE<(qD zpGAlwzfkazmhuSip5P?5^gU}0ha+R;jqHkrwIH=1vCfu6pIeQ(xlGb6Odo(Qm8UEk z%~J)D-E|aPDfulT6{OKUJx6m~u^8`^=Ei7H^?O2lQzkn15Gf}o=Rd_P$KU16k)P|j zA*jY1;Fu@sJe_U)d3|>EDyX|3_S9<38 zN3a)>Zyva?TTfd#328Hsv+klN!HaFoaWn5aF!+hpy#S-SfUb$s91fc+5z^fHwT`#H6@)7a z*+joqC#B;3r0K89us4k=&5wx5b|NQnC` ztq<)G^Q|aWBL32hBE*|4oy~F>sM@pbO}@xIUiz*LfD)JCBDnE_QuSNDkga_LL`&ZBXeoH9qxt0)$p?lk z%)C;W;omm!(w++dzAn}hI!EJv&%gXzzKWJ|6 z@+j49SxqC@n0kpvLEiW*A>r5q7S77IeSvfbn3;Qiz&X@n?vT)lGsN@a z0pq85bi$j=Af?(k^V(BDVoc{#Kd)VqXm`-F0e%`;&~tb*+ED(I4Q)x)k7bBQqc+ne zK@}Wfb=nip)Qqatl@t30;P%L~9dD2Vaj92Jup_~>4MxlO>ZPg|}MAT~7-RrBn#_#rX z;@I8o#vr~|t}KU#?IIk?>FQ*t-C_n}iP#dk*jiUk_ioj3zCl!`k*=l*c4KWp?R)?r zUy#IH8FDw=AEMo_x>MFJ9f#i}y}gTPY700$7@izzolC7Z+;n;xkpAR0~N*FlJHVt@oJOj0)oE_ zdFnO87RS5XT;rD4S0|K4Iit>e=i^%<1o_k)n`!O4E+;G%GP$E;e_?qv>hs+2C$#3g znsId<^<#CExjdi4xmF~omB#zgQ{J>Y|M2i0j20_Ob$)bub^Q=vdgx;H0E^yHD-mT* zcJ);oqRPD3IVa^loh_pbqzcOML{r9l*FCqNFnWU9v^Lsau;~n#ZX(G)EP3?l2>8Lr zl5+I5yd%Y3{sgoe?SaQMy|h2P>p74ySdtqM(52kYuy3?RWo+ynHw{#0Np|NuKe9@u zg5xvK_ja$1R;bWYEPX3EgkK%j-Q1Xrj!k^|o}`u?%pbO2V19KS_98P#PcP$SYI1Ur z`-S&%Yf*ab@+Dg6Q=ZFG6Z0hnl6;mcSix0~TKCT#!@&OThzPlUl%J2w)g>vb%|MFx zAA4WOcbEoH$9RUVn);0abuoj}XXvAc<`k>D=j+&S%jO2M9I4Us-@oZi*Sx{!s?Hj_ z2lwAvc<^!0BFGW|t%QBqRPZf^PLIFY8u58i&Q$Do;qPK2HDQqHy)#`VUA(HW_oaUf zy*;uiRXE-0Hx5?|S)bvPCG=9nqT9pF^l~kU5Gl>J3xHgG`Jy+yJ<70uUv_QP^rSJH z`tFN1Mwd~+*# zBi2?(^b4fHk$m{BF<6Zo_y70~lnRZ=>gUONQ4x_#wIxN73>>Rbw>P<3 zfNfxCCO7IV2H@b%Eu_)J70vs}+Q#No*9{lb^jTlOoqPpDdS z*qIOq^2}!ow+vnFCL8ho7pBcp@m&Jwa=hpbrD#$CaaPsd?s|sgfwgT6Z7J{IM1hgD z-|s~@8{T)%G4hgSX3k=~S+PaNjr`;3?Onz+;LNV`n0bT;hSMSYCqxxz-;iDW>awx6 zJ{I~)op7#wZ{~&spt6MggAML~7h)s}jRK`?MRm@->w8y0q^Bh(F+F_ZLtI3-gpI!O+8J^{0cHXEhAceZ>J64OGS1 zfnHY95fyc;fFEsbZE4uQ=-SS$s`mEw;7U4Ldjru#^`7Iz27wFqnF38laAS|xgG_^( znwsUvamWe5j!{-I-&(~COGq~xeN#Gac0^jQr~LPf0y`-Iu0{t_xoBeddr<&Lp4iRu zv?A-xFJDd;7Ww<3Adsv^%|9H99(+=NbeE};tIzI_U4j1l;3dSm(@)QGlVqNBDu4;Y zw8V8Bhf#~hre-7gv~v9qbFyiu)C5{T%aw=E*$uHH?mohW`+L z;f}Fck7ZMNPKk#-R9&DnfWq%lykJNHsA%(1Jo9aVl1SSTp)79@a)pBm+;3=c zf$xOUj+C(1!cr zH};G0yC10F=cdhWY|yoP{n2jzJu~y-#~fRRanR?~v^2Y?=^)sbHNVwA_SS5#IT9Zp z0*(zGT7ihc^Z`1)W@-8lteiKJYGl za?B;nfx$$e2RyK3kyA`LuD( z|Dsbj7i{5~?)e7LRZh$?EZM-o2ZFpZx{dz4LJBdJ!)0E(7fm+7L-{$ z9^U=5kYd*BS?~3S9J-Lwojf$e+BSpny3`K-eBIqVp@ ztHb4i)PJ$5@^HUI=aIN_JH8^vEJrxWcD$9?k8(Wvc^}I(b!W$783H@KELq`jSTtcs z(@Aq93Hb4;73!CXcRC9UzG0}$_8KY5sO}-$GBoJ2_&kv>`k}cK%2lb;AlZRwJqTi| z$4svtH#0C43a(yrJ9Pp9x?$=rmCicjOU7{G@Lb8X#^N&W>B8Ppb@ zSaOp?_=8@_N69dy7m9?falW8ER_Hb0-VzF);~rtUu0ZgKeHadY$X@fAQ^jnCS{jek z#5Db_nEq1}6ehgz#n799E6d>_qoyV!+Fe8h3t+QvgFf(VqKTrGS#YVD!rzo;l&2!m8n#%QaC#HJX7GjD- z`T9Qz)#QtKYE~NszIteEllmHy+HxaF#;Gtk_>SioY|dJT75vBk{Yk`UAhU?!lNPw=pbV+Nh&P}b)9zmm%kO(;9 zqcPAXJ<_ZiV6EKxqAg{T4)d$94A2)KbQ?T?le;~lXa4xV+j)aA?%4{nqMrOzRK%pe z>Zm0{5{;FCNWy8zL34jJJer#7n3juYkdYl2e(YB#00iLJmSH)Dxyyowa#wQZcEXstaM%rzF|+ zxTYoewlW=?8E$UYWeQ@96T|rb!{XLQ+o}Cro`XyCrpii1gkEWr`mF;ma=$in$nh}> zJC=-W$vElGuQ#bhCMig??3DmLpi)XLqo5W$;OV!e8|3o6!OwG)z_G+kqp8&fo1c`T zUMkjbG&y}qojkFDhO#>rhss(#9j$5=XO%s8EE1)hq+q=+Q1pv_0oU6_a|7Ta-aq*Gt zNU)(qU#ruq?n1>B)MWsV!wA=&D)L`U#~xBCTBYx`s|Z3dtC(YC8p%}aQ|NnUd&E3H z2jX4}ywc*grGIR|3*P2duH_%*#6rbc3H{dUrC$cxvXy{q1%Ruv;BX}qUnrAtd3GcV z8X$}1d55p917@D2(YMC{GD~5D4;4XXYq8^ktRm}Pl#~c2^8*Q1 z>4#y#|Ge1HU(zA&*uvO?!kdkDDSK9j5g!y#oE^8t_%+PzKI%p~ZZsNrovnSBFfwXA zS%Y`%t=!`9Wcxb+4dL4PSLL^0^{##~`Wh!{&oCgk^Z4#)^3 zLi>GR_~$T|gP&axrrc@aJ8aq7wSd(8dSTeBh_jQ zk5R_x<1VtY@Zv%=$$0olC5pLMG7)e1oGSg`18vnim=qPGwByAf_;erXqFX)a_F7)5 zT8X}pm5r(*TRAJ}L#q3qI`#QUhS4+zRHR(WZmQUS9Vz}1FZ7l#f&NCx0GFb%tN2hq zS+&H3HnQLIVho&ZV|=yi4z%%72HJC5^^c4X2`LdgaCgR#0^HOz{euyrU4p(J>2Xgo zF8fm=Lmp=3SXPmr&5~ZdgiWA(Aem9D;y;-;yvZE) z;!Irs+w9DY22h-X;;OuJbc`s>h&+OF(`D#;$j=$iA{6J;?*K27jX)LLo~>)rNz$F+ zFX*~r(95|;%0bB(Sd^^q`!do%SFnMcg)D$=$j+C3n_TU372_lY8CO2#-*oXiM1(Hg zn$lX0CkXHvuVZ1~vnVY3WTVt8Ta5lQpoh=y{t8QQaUqYOw44lx^E!85t7S%jyBd6u;?7^ZkeM(e zCL*`_IF-euXWS%r-f_wms7j3^#DKG#W#)SMSf$SJdEn$Z2otsVpAdf6dTD35{qUQ)JxL8GOfLqBsAw< z<#NNM^pGTcLUIKf+W=kQ#;sfI)e<^O=IHnuGdp?sKeMwacsJS}M^{2WxAz23_Y;hWj>jbrSVp4`N0*XyS94zs2a*Bu zVpRB`FHc0mU+9_5){^%-eMe=`bDTm?$7>s$7Deoxqhfuwk_?8#(m}xZtF0l0?}8+^ zl=(0W%9jHvEZ7H%5sQie#A&u{Isy7JQg}e2!o3&vuxKNY8H8~-k|}b!r8i1Kd5vIw zo#iWTSi9>0&ga8)x(;B<2xC`CsV+FWO#@~O(4^C&3?tz9VYVGchu_K5&;3i1vz?pV z>IXPk8@;=mgGzg`jOP(IdSIAtXE!y6`$4r^hPLuAKV1O$X6|tz;0b$cwD)fn8B#<=e4em0WYTeg zf3ftjMk4KAtDQkP0=S2kC%8?fnV%4Nw9aT zjerkkE>3ilrRneo_0mqBoe??{qb5}u#~!m6N#@rR#lB?un`Ufi_q#9TQugaB4Bo(x zTrb(ut3$t7@h4Y~9J>XY;dH8zx%!dGyNER6zDf2>w8pNMPK;5HY&D^)kUTWAH(>Z7 zLU?r(foVhlG(*Btjt^|T5(qAq%Zmx zEOk{Vk83f~;293BmS@!dipkfKu=9TKE9;=Sptb0>f=vnbG7btX8I{)YJzllNrtQ7; zUp0IhIba4l71`=HFH0q;uS%fRy$VGd%xCSJLHPNM$H#VUze@Gs2t#yTP1{N{egfLo zlasUbjV_Zwr-XJCS;1WQs-ysvtE~~_E|es02S&m@`A=jDZ81_{9HT1P5HHS&-ov+~9 zw@9?!BC@hj=v<5$=V#(hcUn%am}qkuE_KWOXdMteq94n}<@E9kG!T@~i?Ti|a;OOg zic4z0=lR4!a$|}GA!xo(LYt#Xij^%z7Ll3obTmiPmIZWl(NpvspEpP+*I)spZJ z2bR=I8R#ot^{LcMDgZJMr8$^`o_`#o&GxVv4g_7THok4K0=C*y z6Ip9lK|R|vP~ppojcyzlKSd+uElt^1&=*|YxLakgZ6*-sjm4^Fk_Ok8h9=3OT$Vqf zg1CAtJ);g#zFQlBFi^^uyyqCg45NbQ@kO9fVuFbd#Ax$ z`W2E40Of=6I;6ls@aUa}2<4-idPh)(gemOND{4h9U|n`MA;Wc7k@0klkm}L>PsTm0 z02;9D?%+UC+(4Z>j=B;6U%oE|V{_4vAr*1sVIAo1ZuMZ4%=LBgmE`9N0oS>wj9K9Q z>=pFN&Qw6+d>no#aY+C^Zkn0$NQrfQLQD$sU`-P#J96c_g6+(yasA?bwd|7#@u2VI zn$7_4R_6>u9w3d}q8efbo$&u|Bt;(Ut-uctwC9Hqa@cU7;@{zLR!TXg1EfAktejJq zxhsKNQ2!y|=nj4Wc60x~AHMPt2IQ7go)*$ma1-UHVGZe*Wc>Xl~Z)#)4_wvN$TVM zt&*2l!bGO1UQ3rfGA(O|?muZbDIzN^4`bLn&E&lFgtR4z<*r9#=nCMuVIoryFTK*E z4Df+luiAw3Zv9yzG0l;Q?WSH`-auU)_>|NlgqWI1rXQdBO{zxob*hb(RZls;;!%lA z1?lM<_`GQZ$e`RPDNI8%WRP#YzK(EZnOD)zU=1A>x?kSd;5uEbN`VV@8FX0HH8wT9 zTbW1w)Bo=Sj*cFFUqx+p3WyZ;_V($=Z;Hol0QbV9)7*)>Z{LEh^Pgqww?`gA@x)#v zCnF>;{B1C6hOi8`U=K41-Pu~YyQd6YgFq3)+^ET{gp`DQi*y+F4i0*K?|$r!7;w`_ z$(RXSXR1G{2nxK#tg;gp7FMd)KUW}LwQ;fL*kiRC7Tl7MIbX9U8us=V9$rwJK0I3ypu1{Z*9 zc3Rzo6U|%Uq~An}|HIx_HpR8A-6lxz0D&OEg1ZOT0Kp{$cN!SN7R^pYsRqx3{XRKg{Y{y{0}g$1{dy!|Pm16(F1>gXA3Uj_26+yjK}qx>=;P zC@rn>d_p>34HPKq-o+MpDU3^$i(jy87rs7Op=`gsgKVxrUh-oKiC#|OY)iJ2KC!V6 zwpQe7d0c%!t5F6-8g>kZwnx5cYSNv+-Oi)~K4f6cA9lk*B z@40}bR4)anV%Cp|PbV&KyANqO?LsrqpdnPAQ?axC3u_$=j-cypBtKQHPv$L;|)Y~2pjRm5c zsvXW70|gjS-FH6&7_*S=@!AgCxt$jeAF6IkT&0z?wiWE>$q^W1$rbQ|`jrl*p-vk zM-{kzMW?p|$dYAzgZgB5P3N+;mAJW;sG}_P`w#EpfzAuI2ULaozM>Wh9UYa=$_zvI z#p;h03ahp|fH(46z8vBNYB8ML`xxOZ5LdJu&NMzxz8r(CMgTB19ozv0sPE-9DDlIQ zhV1|C2sSGexLWshWk!bfQiyjX=0wVuiLQbx6Y6Za-&fX}IyYSxO>ttjaT(Etwq(qa z{P##)Dqf|(r_$rUsYXgxU?v5)rgF5uZZGms6-`6jxx@m>%**z3mCS*Zu4F=f2MZg* z(b&trKGBOGcU$#Spuh{>`Q>E0P6e4euNV6k@s*U`BLRZ59N_YM## zIV)8B_0-i@?Gn?v184*yCr~L4%sQCtj{nVm;^0EXYR^}cmb*^d1J`E~5*WdVU}n`H zqf?o%XKGNi3Pygqm0>JEbzwm4Jv%iF7fr7YV?WZ<&xXD~d>EGlt^B;TVrG~ew`9yb z?z=w^7wYALHKs22s&v(f^d%~gvxrf;FhT)DaA-$AY&Q81{y`~8?8tWp zs(x@)8UHeHV_AQDhyD9$3dw)^ISme4ByC|Xu@x1VUZ{-_T2!Wehc@-pnPdC zHI{xAo$VhidwK{%FSO|6jTbVp|K6M|CEruM1cJaZdmHaTcsVNgHeXg;l zPw)W8*9;(k|K1<1nT8j}!gLfQXT``tG9uKf z8#`th*XWpr967u({`6%*d=f>{qm^!>UANrX;#;Z3p&UbWEK8| zkEef8$}0JIca!mRRtX`Ylhq`N1SnHJGmjQL$K6N0^5+&$TC_YEw!2g8;6`SMJbGa9 zUgob&Va_zwnJyo4H&(J?;caSQHz4|7NDwlHHwdGovtL|L)#nDj_a@wMFZMnW*5Mw5 zeLB)A5{8EVm$qvDy0E)e0%dG?xtZyImlZ%58Y1YGz@mskVf8<6`hytl4=56clMeJh ztsVV;!e3kDf2iC3L!-{9<gfOXUJk>95ie`#!CWpL9vQ2yVu3qq0?6iwS-hi31X+60uWH|}eD#fDomlgn&+ao3OUq8mR_g}bw4uKDb#94M97 z^`VR};ekj9B+;0C;$LA7aSOno#*2`tFMgW#;2M>a%AfkjO#-N~#J3kIwhMI9?*{t$ElGQx%&OeYadwhAWyOiI{m zm_wT~X6tt)|HI46R0$*`*eXX0!vBXMu=f?fY1P{yQNi%a z2l`Lu0-Cb3>3^Ik3?u-ahjHLOZ}LBhIOLB2=nOdx=HTDC)PrM9CG&1$r%ZtPQQRRBGx|Ji;I(HBGwyQ z8gatxZ7Ya6@v!x>?0?Ic7=iDCuIGEZsvfp^zLYhN9VS{$Z}iWAq;bHA3Rc{cU|{R~ z*rn+0PpyJzB=)uIwfU!V0-%WlU7Q^v9iL%qW{`N*@5#x~cET`?IBCP&4ObEwJvFOL zdj|(oewz&<1nh%5&PMDLs>W}aIYe;|UY_Z{{CfWBy!ZGQT~(OSSS9s&vVma(2U*8f zabvxh!#Ad@BFQExcuNs|auqqnPmka2xWNl8hCaAs+Sf{aZ9x!MU_7;85^?Dr4_ zzYiua2gJX_ehBVe3H!jV=fMWOc?eJijMQj+{loH+-sGX!B@}880r^CfylLj|F6K zB{Vcr6_phSf16ImwY)ih>MI|l>Kq2Mhb{hd>M~shWH)-QSaC?TH2uY;)VJ`|&;;vQGS- zrJAIn*#zp|tL*mx=HdARVI=6%H=2mPc~Hvm>V)D9oNLUoQ0S^8J^;)!#c&h|B#;9$ zNAGX-b@?eJ3ux>3>EC-B`c?ftn3vV2G>Nr{C2P7i1?l}X3|4NwyhOH0RL&1Wj$p)z zos?4Jc-yPn1UTysgQta%^3iav4F_qVk^YzhO+*4v}0v|hJxItlgO zdttb&_J`drByTb%wZrIXS+#8KpsIwCmt15&Z4>^Mkduo&KW8z89pJWJ{gHthbLmwYqcvV(W!qcC29Ii!A|;S8D# zxUSvpY>jn7bNBA=a{=IjdRqB~8k?LF-{qpc$t@u8_#@P|H7@2w94Lrbv@`4tYlcMU zG4r|}|E`tsr40bTyq?nrTvdK}v9dDPPI{jB3y!yjCgWtLSgnq$%cwdfRKc?BA6t)I zS04f|G}P4*V^Ry0OWODu;NIek=P#l9rlfqJhEdBvG{YKTx>Em(jQ`K2kSLxv@sV%O zKv3*EdY(kBIz$YEx<8na(#QKkgjl%_eUCDDX9z;2wbSu zy5jS=iUcnz$UPxSDK^e;>;0a)>^RgD&mHDN|G7T{CWqUHGKCIN8H?v06_yL1vTu?tCUXyTWu5KE=W6z4u_ z{0ZQBABHEtx2ABJB`};RbqLwtUs98!YBFfHt$%wgjRN?X3*!rltA!I?EMe5R--J$@ z;jxRe_2VY~PAc7^C4c`2Vr|%^Hw->!g^pxJ zP2X0V8V*KZEe2LOpk+O1etGe*@*wvI=i?w9|K9K;iVr&~Ey%pv_9MNL(~=8biN2L)UOqZ11%wfJT~@u}rns+;tUQEiijDgD zZWaSQM-zc$h0-#8CPk$FT^XRMaNKsozZUCJU0l4?gFU0qb?&0(aJLn**E^#f`+=9) z1t3P7th1{W`68u_m%!Pm*>5U9fZpO9=i26)S#f*-wq%+(LHjYv~0JiKJsz1U^C?JV;+#o!)q z4xEtLW$ti2+-2IrOOPJSg_g}8&Imv>Pq_cC{w9{Q_-MeqASu|dgmVe%%eha6r zszEi@Jw_;x!t(CdgfKOTP2BpN0gB`!6bTa*l1>0i@NIV=|2x=eveews zmeNK$ncJ4rrqk*A7Oux}l=3QolBPF<$<@w8>W=iSt0&IB>341{K*KQ+RC&i^uzu*l z(Ms8}OYUU?wuOX)&84l0cpTkTpHIOy&r=uWjT9|6`8Pch=K@cAkrr;jGBymqv%esL z-IgyhtmodV1fY8DLRYGo9q(O~Bo^|t9He^@V$towBNKTZBv^H4LH5{JikG(I#__Ii z2jeL)-)b=a&Z;mv+UG0?B5ns$#PpL2{U8?KPNmm*wqEQj%yUtk{ay@<9)G)6X`i6w zE^#Z2Cp*&GK(m-)J{}by2uB+^+`a^V`JKOH(YXDOXv^ypdavQ zT`&=5K~V#9(kyL9%_|6UylphHUtdnj-MQ#?D?pWIIyf4YsaDTIv&|JZ?OYyD=jJOG3xt)&UXCs>ssN_;c}$|Z+;r0E7Nf^_ zSz=&#YO?SYE<-)Sww(pky~oWHo%{C7laARhG5a5b%A-m^-BVR``G;lG*V9C*@Pn1=Ey>381*9@-LAMFyRnJ-k#ZAxCy`E1fL* zIb;kstn;PQw-ppSMUF(K`bD)IWiD_TVxLqDqPwEV`_np#wv3y2ENH1aZ@(~8v@Lsm8FDObB~2*l?71I{tpCBk4(JJ zw}TDyR6$omG+Z{D5MD?5cDAEPKLmAa?#Y*f9 zZwSpY%{>lKX2KWCG>lYpX#$Lol`XR^_)?)Lg2AD-<4jgdP2_|HYN%Ly^0IX%KLf*v z6}BBKS)!L)E!fLL1H5{NC$p7F9wP`AEJ&V(LGv}Hpnxp|p6x;#14Fz81;DE^(sHn7 zaTB7eu8OnxFmHam!imu_+X>PIw{mcsA1zv5-HE5I^gbE9|Hkv{%Lp374cc=e1K*1B zJ9W97CDyAv4IbCVkiXV$&<~8={e1+pX$xduEL9OS6+5+5QGI{s5Xb3$;!h^sCN&jK zAU~dPDwGdmUBnaa;=^C?Kxme?d$kg$-Tt4ED{rRg>lfdlDZf0tv@A?;zuPfJhYPsv zRfl{S`BZ)YTE?)(2Pe$3a%F6%4m=Ly z>v6sl&QNQe)e{Q+6dZe*g!da6!wzz6l6gM%4jlbvO#;Gm@&t5KSTzm3r%&df=ttsF zQ|{)sjZRi7na;$r$l+AYId0AobC>ld56)#+SDOEsMylgxtRkF7~eb?wm?XF~VVan!))s ztIFZyZyzvO@{FHH;Y=nLi3^dF?N@jE2@;Q5qbkK7%2n$_?@sjzO8}g zTl;lXCXnV;_k(cBR?pK;IhM4zV0w)0%Ul*Kv}br5Ty(V8e?B;tP?Tg90X%kFXOy2Y z#8w8=?LA`9#Pz6x3ANjXLsL1-XK}9QgaWUx*;8YCDl)0*FK|?l=COz#Zk&2lJ`iW@ z2J0Da>wckb4THBkCjQ^Y#&`8BV&Y7uW-1t}0cI zd9juhiM4Yw_mvQ@zKQ_8yyuL#?RO~k`0s`kg~30z^CQ$1T2x0-V9X;j(raurJQjHjxwm+Yr%rN^aZejzO*XBEkQ> z0q`A8@zHx~_rurwe_I+!KYGVE(E#K#p7&0FaNVTfOcCkK`2@$r6Q={ zzjr?Tr<5Ns$~k6&d;hUxzzc6i04>Kwim>ngnnqwIO+Eo#5S{rkf&EWQKLOCPs8onZ z_V-RA88d-;ry5@NI*;+6mM9*erLp+id-11hm+y^A^R3>iBMtLgn#q%l{3~{|(T8_S^rh zp#R%q|3A*4qz>+cW}(9Wp1>qyoKSs2S#VM$#WwLjz)J%%=f94y8h$zZdQg_%KZ1$Ry39h(rDF!G=Z!Un1W~9fkPs z!+^t|H0qO*LP`j^_f$j3*T2mYUVfveF!XT$uvT;&>{(fGM^g6(G_^i&$kM5FC`W1d8*#!)Zr)`*6LFnDSjV~ zk=VPn1Zn2ggq)ER^~l|%b`?PABD3WnG9k1*X^+_YH>xd!G|kvg8<9e8i-Z~alF2!V z@9>b_A6d07)Gi}6TpFuvoWB!h2FhILChDEaIZ?)EpN;h_<~A|pXK2Ew>s{N2+897u z(wIF$d6$fjNmEl2$s6C>X$%{Wmnk>Im7AMuUz^J+w0)yqY{L<7IsFu}#{(VN{7D-% z-8?vJf?&1MHRaY$;e$?<0}q6HhT8o4VY7{QTC&jjnYZ@47;30n2xH!!4fen--#5Pe zXNS+bmskDU0`tn7@!v>~;$9RdghD*N6p3)(6)L7|P6*t1jDJBb{GH}HP<^aMq4t2u zkr{6h>&9-+EW(bQ)yR-Q7vJKXj8MsFEe*x#X0WIuc_Yq~}| zrBz9G+r_CQsb=3po{9%CM2zRJM$VSW@{k5i8c#>sUGe5|D%|(f@cA2@lx?!!Q7&U* z^qC*iYQ^`4o|qR-ymz6qPzY)?q1me6-8atQi6nA^c+}-)=JG3CEeEn&UITtPOMr68lcT}yigivMBxvH-$S#)Q29GrC^SP#3a zLzf+m{*N68jQg)IA0-q%y`L|-1JF1iX(=fat4w^iif@r}rSN~dN`HAhBvIsOZv7TU z564Rnr5pPuCcS!>yW^n4q=YKsICG}-fBgqwHUB2*7^6)=w3zA^!!J;rQKC1p#rXFx zy^CPh$%=pFng1GNNQsrp)HRx{daU`5Y5O0y@ju^G#9wzS&Jj*Wr2QB}ihi|AK0bWW zOy9tj&)%XyW6 zk*yVt*}8Zv?@Rk`uKP_+LudYYTA0Pl^ScCwC1Z^eD9C!Xi-^zh)8#c`1nWlOE7$OV z`6%khx;#UB6VtlGWO7rbcRtz!oBHh*tTvnd2p(^gfccE`OJ7)OU-tT%ql`YB+) zvyH{jh(Au8^~Aeh1)up$kyJ=Grsm^u{NUR8PUN)M3pcVqwB^2z@PE>RLs9VAvM@x9 zZOy)-YcIoMy*}osYw|Y}fCLQPU)U|u-j!m#b?Z__+^|_U+PQ8YxJF86@-%N^j8QVQ z5UMdsQNY||Rl9mQ)L zJGNHgsbGw$A|umsXUu7r*k;|@8rYQ^ya6tm%=h2k9v4=2{PLF%D97gQ3x_&~`nzlq z^`=4?-J&};7-PN2g)_09*5eTAh+bf^*$oYy6g<|1BBrg^GJPwX#>8LO%=ii)Rt&-8ctm&OQb0XfL!9wXHJrYz zvp(+P%9o+Y&BjnlmSAQTF?oBap>Bz9P>ztq_XcB&-KEP9&B>iI3*aL=_=3Z!dDvFl zfSMAtcg!D@O&wIC=aa$vAYHQ1z!p+jsGu%He%?=m^)o8?9Y;Os^tsSRKswQx zLgX1IA023LgOG|)ZgPWW+b5g9sf-n$$-;JS602vKZbouWl`ml1Ud$j}5^{5NQl(vt zmR}=N#R%FKrM*(VD|*FG(VPAWo^`ot?OGkj^YfU-C+=%m7Z~aXxTYqsw!)ayXbJ#- zw3_*eEdTX3skCz|JPOm;Y-g0obmErDWdf$e;Ey5H?ZyZ~@!`AOP0qT>Br4zq-=Z(g zC>u$2ZZPvRh9*1_?ra}xTa#uu*L=*eX64E5bpF8n7S&If7{8Cdec;0kPWwWlW?Y{< z{Kj5)$E=!ee)QpD?M%i}(4f&lC9d%ubqM^UZL9Ih>j(5!)`)Mblx8jNN=Jyvn}X9c z1U5mI+v5Cuqe5et4xQnlCXhg}B=^ggOXsui&-!RxNx>~gIE+Y+<5{b{zs4;w;uf5a zD?QRugxnSkoQ`=&^4YBx2#($CJ(9*Ho6`u!i{d}ap$Vud47Dk{&v91m%-vS)s0l!) zV~kERTn)i5FPAM>JUXR<_gD-3dI;8=FV>9sbz5SnR!e@%Blv8> zB*Z-8w=;~ZAh~$q*@?E+JCc63ET}skG08rmZM*5w(~LXL63WcZmp>zFr%8*Mn@U_X z6`^cbY;fY}iI4nbo^hvN+T#=>8%*r774~@ zr=|?osh0404Jc+$jZ?s|NpTD|%B;5%rpgz@ZhsxpjWBQL7w50*g3nyAiChw9Ws89OdjjhYR7z>G; zoCcY5yv7h(a;B&ULC_n-NFKug=+>kSi`ObA%TJXaxfaqW)|Jc#DQF{AreS*I7(LW_ z<}^(*@l^;Xp1vxy^~@~Z@ki?iC#;qA5cukL9(D=yT*TcvQ1cN_U0|t3eZbK|eV{OV z;`ca|liE7jx7EfYZzuERkQDNzgX5D?RNmQz6#XnNqU8O0$7_Y(=;B(!VScea0(!c? z0)Yci>S(GsLW*oQdi`B4w*6U0IY|LbD_9x9HByzBlsuVMGpZCSL2|U}kCF9`mi}Q( z(#nQ2TFfVB#tU1F#fYbJ-SX|nKZEhQ1;2*paq9cW)Dl>}-WVI!+Q&6nO*QBtZ|P|% z;D-%={qXDUruMMilw)Jm*Yjj2E*`L?#U*1v%7$aD>;kqy<$ z@6l#CT3cGtjmWEac!}x`Ukg}iv@^clV)Vj&K4^cY1$1skp7>Hn7FM3GPeW8%NHm?- z{3+ly;QBRCsNU-*=KV0t6P52*|XFmo)>&xgIN)>OApsG$ef|VNeR)&XEJN;T2e3`e+-zf zGL*W#u5TweZaOHNMf&8h|9h5alLPnX9&^)11W%W5y9d+a?LHp(ZYP~65T%iLNhf_^ z`Y7Ca0IzGm{CU4zkJGgn5c-|B9_8BUzSC;IpDOPHial#jtzNFJ&Q1Ufx4ZM)khT%V zEG5dvs{PRb-ao0>jv!J&up@~P6T}jmFgMX-xv!T`JwseJfQC-+drexhK|hD^_c;GO ziloC&v97ZQ$!PpT{s#qvm(8gA!e2?<`ph$8qH74hJ%a|V*y;%kwbVv(F#6O&n*;O>`aoSEYB@E%0R73cA zt}Q*TSu;_*?hCv=JZ&gLMpRWY5Hon&0G`LI;9`KSAJUuH7nspH~kDPz_W*5uEdlZ_t-%v0WBL}~DDjxUW&T`uJddqxF^k??_o>IRKBZre0pA@SufRKe6|b-T zt-nV_|M_az3OwHu-&%e9lf~`$k^rI|&T4#q)96j2HFl zUI5)|E@5Dj&pdXONbAg`VJksny&q-kXZY^%@mogM@zAazo#%7GhtG}HcAn&S6-L;- z_CgI=7(UKbbP^b`wRSI45gCy0$6!;h?m@TB{z~gRSmOZJoph|e=Lw-25{dH}^DP6O zAU<>0s|zvkIa_*`LrZWaVlr4@61H#F(;`WDnlFHWFUT^)xQAc-uHK zyG+Uwb-O{+)hQ~}xp+8VOZ#|PAQ0~3k2hfTsZDygFEzl`bzHjfzYX_1<^o>DUP@rE@=Fy`5~_3+e=Jm>Sns zUY=IKnNM?>{{BeV0oT{pr}5?P?L{; z=J9ye2L_M@V73`ejGdBuI}QzPRB#u`cE`jdn54j%{~{T5eK;qt3y7EKgg~}v%Uf99 zkQ2_o?$YDDaU?znXhy=8>jN8tyTxTUbH?7q2JCE%HXkFu+?T(6U})OScIJJ$oYdDg zv9oM{x<0L|Z>0xd9nTi{^u&?K@jX*c$?o`-giQ0YSboHu=o-=*YAwz-!L#;n34agm z-r3yPV%<6k_z`=;e9U31F$IIhc=+lZz|ITYrgcZoZJ?o1YlyF0Z#Y=3RpKd&cXki1&bZ=-|A<_Nk6(+_lC1%s;WSBhb)z1mVJ1u68oN!sQ{O;&DI* zRBmxQ_wJ_OU|OL`r-W#DVpUs)Joo+{Q>tY(#4RK~YJhy&EVBUf*iV4|IX~|AY7U9; zr80AJI+v`X`t|lsK<9I@&eQh>;4sMHi9h0irmj-Ay4s&Q!yaC>`^pE?p3f9iuT-q; zKPk&YuT(NeoC1_XJX5&ef{7wLfx-|h6)ao3^PWCy3|o%{i+cZXJdR#o;|l`5J>fsc zgst=sqJf|wE6;;e?;QgGyIM)oa-emB7|DAsei%R4bl1pn9H!fHH)8envBL9yGLz8r zrg_C5)qNHEtWnAeg-`X415_KZ zZX>usq-t<{B7e!3+=birO)MKXBl5P{G#`1k(U(+h=(A(q&fXKOMb|EX-!90nw1}{} ztaDkHSnHX)q(g5IyU9WS4j`*rv2v}YrJ9`2=r4%j)LuQl6HMD^?t z*uaGZ31lEh-AgO2!LhYUl)z9fXE7~v#=gzo5_sMa=yI6R!gf100gEprM-vjjL0m@d z))zOe+&A##73=D*bmHGK4mv&!l|>@8!4Ex_5aX0|ss_`R^ZSXUZuO9Ulsq+a);hQ-Vy!9x@H_Lo!yYyckf4qXy~a_Pc5 zeusr};rifQ?2~z-1o~v6dCEwngHjH&vld*CL?7J&ml;B_O#j)3OzMQ|WV?dE5uWRS zDGf*ey}FCX^*dH@0)bmsh{FQ7@xs^-X*30I=w+-(2IPD6^`v}(RDe=%O!3i7a$%21 z$3BScrAIK&*os92TdU*5ukg4j7 ztCCrz5zUhNmMwbu-AbRR4E84Xxe0H$*LQe>E$Jq6n1AJE0#aW=q_9zVQD3%np2^*J zcvcW}01sh<#>TZa>02iWdG~ur|Dj#_ql<>%Lx(ujg{Dh}tK9n>czF6p;xt}fpV#Oe zs7{_qUWfWb2N)W1{C5WU9=aiL0`BMtyv5AJJFNizVB=a~<$k)p3t%(?&$4cB1!Y8B zfU9N`+bNa#&6f3@If8UeFvj)6eyi4kHA$p8L;l1Je_u?T}q^p7aT;1BEfi zuTRD1RGoXS#VQ`wvDCiD`hy6@uxqLI4kQ^}+jXjE?Y-CO%_)0|w-?CwQ!g|le z_?r2%F?vA8ufsNd{=V;5y%rP^M*cI}9-kX*&onW_7rN*LT&Q@fj5Hcd#?!3xP}o>t zTxMPK82GF}4Y!AlS$(cGNzm7y>{c4vd4@BlKQJ(J96~rt>3L6ZrH(vv>km|&k69Cw z9yYD}DVFqQ6|H*DXT@0c{jOgckU5awL!zad)>0S=zyZHpuH%Y~8lnfSTE2V2nVsBS zwA@{NNY#z(*JB}Rf0qQ^5#C?^%JRFV=wJ7-oJt4=UYh5cxs(SOnYSWo8h*QLeTAX4 zkIJlJ__=qr5?@bSc3g&0wUB*Y*?iXMJZp112_;1-cNsCu#>qL-ZKHz<*Tz>anY3fK zJZvx#dk{K7zAzRzkB;o-k`79h^V*;EXywlBTRE#^g@3dB=qoFGUXKjcR@A7@v&8?4T86Dfp<8DYNLI{ajN{(nt zjC1_p3j~W#B}h7e3f)PpL?wutL)zjl^W`pc_LxNmF8W&T$EoqqC)~T?1t6!yWjN7beU&G5$mgv9ZoO{nzDjlSiky*k`CCSqL zG7oF0xp%6YvAnTF6#BNZ`2RVWi!cNYbRW3}xFCn>5DOSIi2Mh&j84C;J4pyi*H90x z*r7>M($`4hL)?o|_#6CIO8)9S88=`T4B5=g_$V?ASlV^fH}foy1`9-^)Tl2-xLs-dCzl-wpEK(T3;#q&piUpyaUMee z0W>a>a=E%>4Mvf-=X<$>pu#h;_fnuDt4$pF5Q*#xyj%$MnKD;^&R)3?N5X4QbnEuD zud!>R<_7+ntKAVyG7$DYD#g&Bs68esvaUIbo?7zYbbrC71wYYF2SzkbcCkWE;Ad3J zCoOLH-*HpyQY|>Gy-_e2w3sFXFen4q*xfk?0?;Xw zOg8v>t=z|1!-a!(ki~kR8v2#4Xz(!0x&U8S_|2fIo9Xr;SM`RBY){r~BemZ1a5^K( z*SqZ1mCv@_;RE3<838(s!lo10P1N@G_AtGf$*dhHgU~*V%(O6G*VUOlkE``J)>dhD zJxmnO{frzG9Q07(E$ecke_SG2SSa2TJ!o@?Rb73S3M>fRZ7K2w?Cb?FoZ)+Yyx?Wz z@as9HGo&TVC>SPM|KN+$^msm$^EGR!W2||Lj~ftn4T#I@Iih)YaxTtggB>OllgDz*D@ZDt`OykyLH{FRGt z74O|$px15SE?heu&JX&XOU*kpPzgtIeu0pI{Pa=X%9I?TGwvajo-iSUq$(%TTQ}GF#mDp7O=3J4V!bIP=XK@x$U%UaV>%L704r zh?w@h4bt`P5oLaZoesUm=`nxFnJ~&(>Gbl=W)c4K?f4go8A=X6r1y&rF1xLI>vvyo z-nl&ADy?EXqA4%dEatkOsmgbXNY;gzRJC&UrwUN@6Y1OoI&W>|wC|n%IxzcrUT667 z3f~E9GG{#jVTz%9bI-}k^NCnxPXdy(wz2bDujj+zsxzWIc<-C`mnWNLv{u>{Hs9by zc*d>?Q6@HDV}=~W;ez#ev&-Jq#7{0pvDh$#7AO{PkP>iAli2K(@e}l^qKO6$t@yNvSQ#~4Rpgg}=Xd2tMu$}z?4q36-?;~@ibN^}~&Al>dXi?w# z<9>b!kWg~!^f?_gR<)Y?V%&45&SS1b+?o?xDt4I0YUF3e$j6h$Cm`c!RaxPNijS<} zbXUr z3l169D-Ii>`}b>1yc5vM4MwR;0@K&E{S+T)d+EM{e?9y`u2(t**{RG@IVYUiDl`bL zy&*%PNgkO^+TG>T+%hHN9~O0Nt;0B+O@f2O5;dEnhGk?dGdV~W_o$VKuXDNnW@o8( z&w0Gt0@J$QLVc{l*)eJ_{<9^KApmBzYp2u<3w;)dC))er8N1&vjW17WW^hojA1}7f zSRS9T6McN5xp3d3`g2`On%-fV8rdZp8EZjA5+<<0c^()fq*>`2l|`-G0NN%0%sCd@ zQ^c=)f2Mh*UA{ZOALJ{VNr>+U4N;m$@Z2P6O3Lik{>qz)io^w9q0vY!lxqXJc#t0Gq2=Q!OxEn1!apc1BXYqnaZ!}Y0 z>kB5@d5gzR#+Z??YK@yCE}qTc%=A2#7~7y*pUFzLZY7HXq4FU!>hOxPP}=C!g%81< zu;MqPL)`JK#IOved0MOxVmkCNcxo8TF3gv>Sbw$CT*}b+lbZ5NWRhdu@TjKSn9!V$ zU*gtfADl+#cDm~rs-g3jSrV5#B6~ZuquT~s z@i}kf!wd2xGj5d5t1wc#97Wb8KDdqC8tS_4c;1FH`@46CRb^dY2nzZ_`nL%LJfDCp zB5y?IMVSaY{??mq2QFUD(>`IpW%h1N4k8_sL7~LDot2GqUi``_#A0Qu3LQBG3py8* z1ZcNK?!U5)*661@J1JKhhkX`yNvy1VzC)Qd(xtjVW^-SL))mptg;g`Qc(HNwH(UmC z?L1YDGaI*D3bJr_d`y!jbPm z!HLUEFU&-I#{8%44hyoOJG#3`ncHrS)m%MQrJA+uY0NjDFeotSpM`|2GN?Gt^xIyZ zPQ*U5%_; zbJUJ##&hF0up!g(x=lBU$p19i0PGS}&#*vS+!w&V=L=q$O&ACHn4;JYn!I|2Xd@x= zSrO*CRY)hvmo6C^cMn+M_P}zL_vW&6q;v=TRMfXBKLZ6ja zJKH$61KCEry0aS+O6&g2bC4gI*`tz?@qk-IIu&xOI|&(0e~^Tko@J(A>$2Nk@KmxZ z(KPo}oG+_7+m$`=kZe`Si|_kNT)qP8`4|u-)ABJT$411wa=@gf(oCZaYeViPzycTK zX3X4*=%m+6*x9h)+RoJ7xf1muw2Z4)O+DdrUNoXE;)JDpZ`5Avdg93bRPjcD&9Fyy z*WUDIKrT<*u`W$YMG`TCvd%M~6_tafhAG?P z_r`pdlxQ6FilM=|M|A|y8dM^%Us9N;bC1T|JSY<7vC7)fXkdt)GY8T{n-3kPGvWH1 zRH}+MkDnuM#OG2Df^j0tz>lIuaV9jX`y(_by$&yaH(4C@#r7gQqNSnE2gM2BGUeYZ zC|s-1>JTCdz*DVkjvhUUx7~ujZhyBCC7d=KkpGV>tqc|aA*Zcsc7vYZ_kr#{bMpjO z)g1k)WLm$iCA?pICsGDT=345nce#cG6S~DOS3572N~!cp>v9F#+92aMO~h7`?e8gH zhi+w9>kSc*{Dvi%+5<#OdY;O-FrprcuVnXoB7dkd2Gk=MDdQNbU%+<01sZ7I={$N= zmAhMH?9;|O@gI5>R{h!jugVPxX1G&~MpgCAEXf#BB(3!1P5z3vje~EpV0MG+ z+F@uBZ}p{ooG-}UD{<*|vM<{cx~K&VTJ?LPt91oRcN|uubg7%OL3ydgy4DGS5KQ1x z>n%|y3+nn1{3X^5F|IE#p;aibtH*onZj=V-U1UL20#aNY=KEm_tQBF{v8|tDy*&Oh zDex4!sIB1SfjLsn0^yk2L)Mh&kT%C4v1X1}{&Cj&u2Ov42AGQPhm=e%J!*d<4Fgv~ z=23y{oac5~UyldMI#V7Mt$8I%qkiO+s6;Fne#G@7(uPs3{$+mJV=GoC&56lD$@=ni zCDG2g&ZiN?oiT$>Au5D(k$Rm2Uw0xtH;Bd?4ST`bO92_FPS@pdIu3hqWP+oMZ;G-W z{*~D`8~FgPWotF0<1qZTEWMEJ9gj{Ho60z6gYiuexHyds7EHDHT;Vxc$5h+OCOt@( zD3CnJl+<$1>Uz=!T?zi-k-=0s9wuYdlr3S-#;#GKmGwmX;!Om-bqJoTfSV@VU|r6i z7;BcOKC(oQuEe#tD1Q6@0)qs6``L;0%2r#e-oCjufM0>@8)#(-xRzrg3un`KihcGwTpw0Y<8$9i&vq}=RW zKYc3ODA-67ZqqDy_191~lLI`u8^(Q<^}r0&jCq^K zE7}lQzOsC{GCfjQQSO1-QQAF(`9+K8hj#1O*kxNWq;90)qBDZxwTfaNFM6&JR}78T z(gCovIamW103p*5Q%AZfZ9Hxim z&}4T=WASoViJm-_St)e_XzsC1S|Q?yPe-3Rm*AjQ0)m$RYRT}4#Op` zPL9$mmm(knB2b&asro~)o^sdYr#9Vux+alD*`E55qec@&RJp0={wNF)o;tr=9FC46 zAOa#F0wN#+gC~$WFHSw(P>-leG}CZvy?b;Hz6KOR1VlgtL_h>YKm<-P0tit4;wr*k zdlNOAi!tFbb%CKwed?Vb%Lx^`%F11IEdnAS0wN#+A|L|!A>g{mOT;zCHBuTfYAlC$34|yS74{@E`&`@Y8 z_7lS<&cW*LJ{UG`*%n$SO|;$7M_VseA%Z@^W+yJz%qeqP@R$xBti+NF96YXU;Hm-o z#UKk25CIVo0TB=Z5vZR)R&RJH*CT#icFYFJdhIV)3O4b;oGac@eAxC)I}p%R%-4zn zi~Uc!x_ZI^`$G*Ouox=r`@=TAyQyH$b@G(_#xTi0N-7OArg#uncE(3K;$FB;mhq~z zh{pCL_h>YKm}i;fbF8Bs=Y7}7&i7M` j_U`WS5YG0?!tMV9fbB5ZopT@)00000NkvXXu0mjfc+`sJ diff --git a/docs/en_US/release_notes.rst b/docs/en_US/release_notes.rst index 1b554b757ac..136bf7df64d 100644 --- a/docs/en_US/release_notes.rst +++ b/docs/en_US/release_notes.rst @@ -11,6 +11,7 @@ notes for it. .. toctree:: :maxdepth: 1 + release_notes_8_2 release_notes_8_1 release_notes_8_0 release_notes_7_8 diff --git a/docs/en_US/release_notes_8_2.rst b/docs/en_US/release_notes_8_2.rst new file mode 100644 index 00000000000..5b83a7c62b1 --- /dev/null +++ b/docs/en_US/release_notes_8_2.rst @@ -0,0 +1,32 @@ +*********** +Version 8.2 +*********** + +Release date: 2024-01-11 + +This release contains a number of bug fixes and new features since the release of pgAdmin 4 v8.1. + +Supported Database Servers +************************** +**PostgreSQL**: 12, 13, 14, 15, and 16 + +**EDB Advanced Server**: 12, 13, 14, 15, and 16 + +Bundled PostgreSQL Utilities +**************************** +**psql**, **pg_dump**, **pg_dumpall**, **pg_restore**: 16.0 + + +New features +************ + + | `Issue #5908 `_ - Allow users to convert View/Edit table into a Query tool to enable editing the SQL generated. + | `Issue #7016 `_ - Added keep-alive support for SSH sessions when connecting to a PostgreSQL server via an SSH tunnel. + +Housekeeping +************ + + +Bug fixes +********* + diff --git a/docs/en_US/server_dialog.rst b/docs/en_US/server_dialog.rst index ef770a9962e..4ec406f6652 100644 --- a/docs/en_US/server_dialog.rst +++ b/docs/en_US/server_dialog.rst @@ -181,6 +181,10 @@ not be able to connect directly. password for future use. Use :ref:`Clear SSH Tunnel Password ` to remove the saved password. +* Use the *Keep alive* field to specify interval in seconds defining the period + in which, if no data was sent over the connection, a ‘keepalive’ packet will + be sent (and ignored by the remote host). This can be useful to keep + connections alive over a NAT. You can set to 0 for disable keepalive. Click the *Advanced* tab to continue. diff --git a/web/migrations/versions/ec0f11f9a4e6_.py b/web/migrations/versions/ec0f11f9a4e6_.py new file mode 100644 index 00000000000..8799a7b6970 --- /dev/null +++ b/web/migrations/versions/ec0f11f9a4e6_.py @@ -0,0 +1,36 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2023, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +""" + +Revision ID: ec0f11f9a4e6 +Revises: 44926ac97232 +Create Date: 2023-12-18 17:09:34.499652 + +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = 'ec0f11f9a4e6' +down_revision = '44926ac97232' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column('server', sa.Column('tunnel_keep_alive', sa.Integer(), + server_default='0')) + op.add_column('sharedserver', sa.Column('tunnel_keep_alive', sa.Integer(), + server_default='0')) + + +def downgrade(): + # pgAdmin only upgrades, downgrade not implemented. + pass diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py index af3605d4d38..0e6591da7f5 100644 --- a/web/pgadmin/browser/server_groups/servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/__init__.py @@ -390,6 +390,7 @@ def create_shared_server(data, gid): tunnel_username=None, tunnel_authentication=0, tunnel_identity_file=None, + tunnel_keep_alive=0, shared=True, connection_params=data.connection_params, prepare_threshold=data.prepare_threshold @@ -814,6 +815,7 @@ def update(self, gid, sid): 'tunnel_username': 'tunnel_username', 'tunnel_authentication': 'tunnel_authentication', 'tunnel_identity_file': 'tunnel_identity_file', + 'tunnel_keep_alive': 'tunnel_keep_alive', 'shared': 'shared', 'shared_username': 'shared_username', 'kerberos_conn': 'kerberos_conn', @@ -1061,6 +1063,7 @@ def properties(self, gid, sid): tunnel_port = 22 tunnel_username = None tunnel_authentication = False + tunnel_keep_alive = 0 connection_params = \ self.convert_connection_parameter(server.connection_params) @@ -1070,6 +1073,7 @@ def properties(self, gid, sid): tunnel_port = server.tunnel_port tunnel_username = server.tunnel_username tunnel_authentication = bool(server.tunnel_authentication) + tunnel_keep_alive = server.tunnel_keep_alive response = { 'id': server.id, @@ -1106,6 +1110,7 @@ def properties(self, gid, sid): 'tunnel_identity_file': server.tunnel_identity_file if server.tunnel_identity_file else None, 'tunnel_authentication': tunnel_authentication, + 'tunnel_keep_alive': tunnel_keep_alive, 'kerberos_conn': bool(server.kerberos_conn), 'gss_authenticated': manager.gss_authenticated, 'gss_encrypted': manager.gss_encrypted, @@ -1201,6 +1206,7 @@ def create(self, gid): tunnel_authentication=1 if data.get('tunnel_authentication', False) else 0, tunnel_identity_file=data.get('tunnel_identity_file', None), + tunnel_keep_alive=data.get('tunnel_keep_alive', 0), shared=data.get('shared', None), shared_username=data.get('shared_username', None), passexec_cmd=data.get('passexec_cmd', None), @@ -2091,6 +2097,7 @@ def get_response_for_password(self, server, status, prompt_password=False, "tunnel_username": server.tunnel_username, "tunnel_host": server.tunnel_host, "tunnel_identity_file": server.tunnel_identity_file, + "tunnel_keep_alive": server.tunnel_keep_alive, "errmsg": errmsg, "service": server.service, "prompt_tunnel_password": prompt_tunnel_password, diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.ui.js b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.ui.js index 97f626396d2..003520cb740 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.ui.js @@ -494,43 +494,6 @@ export default class SubscriptionSchema extends BaseUISchema{ setError('pub', null); } - if (state.use_ssh_tunnel) { - if(isEmptyString(state.tunnel_host)) { - errmsg = gettext('SSH Tunnel host must be specified.'); - setError('tunnel_host', errmsg); - return true; - } else { - setError('tunnel_host', null); - } - - if(isEmptyString(state.tunnel_port)) { - errmsg = gettext('SSH Tunnel port must be specified.'); - setError('tunnel_port', errmsg); - return true; - } else { - setError('tunnel_port', null); - } - - if(isEmptyString(state.tunnel_username)) { - errmsg = gettext('SSH Tunnel username must be specified.'); - setError('tunnel_username', errmsg); - return true; - } else { - setError('tunnel_username', null); - } - - if (state.tunnel_authentication) { - if(isEmptyString(state.tunnel_identity_file)) { - errmsg = gettext('SSH Tunnel identity file must be specified.'); - setError('tunnel_identity_file', errmsg); - return true; - } else { - setError('tunnel_identity_file', null); - } - } - } - - return false; } diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js b/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js index 87eca135f0a..c96d87c4870 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js @@ -44,6 +44,7 @@ export default class ServerSchema extends BaseUISchema { tunnel_identity_file: undefined, tunnel_password: undefined, tunnel_authentication: false, + tunnel_keep_alive: 0, save_tunnel_password: false, connection_string: undefined, connection_params: [ @@ -327,6 +328,15 @@ export default class ServerSchema extends BaseUISchema { return (!current_user.allow_save_tunnel_password || !state.use_ssh_tunnel); }, }, + { + id: 'tunnel_keep_alive', label: gettext('Keep alive (seconds)'), + type: 'int', group: gettext('SSH Tunnel'), min: 0, + mode: ['properties', 'edit', 'create'], deps: ['use_ssh_tunnel'], + disabled: function(state) { + return !state.use_ssh_tunnel; + }, + readonly: obj.isConnected, + }, { id: 'db_res', label: gettext('DB restriction'), type: 'select', group: gettext('Advanced'), options: [], @@ -436,6 +446,14 @@ export default class ServerSchema extends BaseUISchema { setError('tunnel_identity_file', null); } } + + if(isEmptyString(state.tunnel_keep_alive)) { + errmsg = gettext('Keep alive must be specified. Specify 0 for no keep alive.'); + setError('tunnel_keep_alive', errmsg); + return true; + } else { + setError('tunnel_keep_alive', null); + } } return false; } diff --git a/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json b/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json index 38d818023c6..3de500b8f4a 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json @@ -53,7 +53,8 @@ "tunnel_port": 22, "tunnel_username": "user", "tunnel_authentication": 1, - "tunnel_identity_file": "pkey_rsa" + "tunnel_identity_file": "pkey_rsa", + "tunnel_keep_alive": 5 }, "mocking_required": false, "mock_data": {}, @@ -74,7 +75,8 @@ "tunnel_port": 22, "tunnel_username": "user", "tunnel_authentication": 1, - "tunnel_identity_file": "pkey_rsa" + "tunnel_identity_file": "pkey_rsa", + "tunnel_keep_alive": 0 }, "mocking_required": false, "mock_data": {}, @@ -95,7 +97,8 @@ "tunnel_port": 22, "tunnel_username": "user", "tunnel_authentication": 0, - "tunnel_password": "123456" + "tunnel_password": "123456", + "tunnel_keep_alive": 0 }, "mocking_required": false, "mock_data": {}, @@ -117,7 +120,8 @@ "tunnel_username": "user", "tunnel_authentication": 1, "tunnel_identity_file": "pkey_rsa", - "tunnel_password": "123456" + "tunnel_password": "123456", + "tunnel_keep_alive": 0 }, "mocking_required": false, "mock_data": {}, @@ -574,6 +578,7 @@ "tunnel_authentication": 1, "tunnel_password": "user123", "tunnel_identity_file": "pkey_rsa", + "tunnel_keep_alive": 0, "service": null, "server_info": { "id": 1, @@ -615,6 +620,7 @@ "tunnel_authentication": 1, "tunnel_password": "", "tunnel_identity_file": "pkey_rsa", + "tunnel_keep_alive": 0, "service": null, "server_info": { "id": 1, diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_add_server.py b/web/pgadmin/browser/server_groups/servers/tests/test_add_server.py index 66e7fe65346..3cf73a3f10a 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_add_server.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_add_server.py @@ -47,6 +47,8 @@ def runTest(self): self.server['tunnel_host'] = self.test_data['tunnel_host'] self.server['tunnel_port'] = self.test_data['tunnel_port'] self.server['tunnel_username'] = self.test_data['tunnel_username'] + self.server['tunnel_keep_alive'] = \ + self.test_data['tunnel_keep_alive'] if self.with_password: self.server['tunnel_authentication'] = self.test_data[ diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_check_connect.py b/web/pgadmin/browser/server_groups/servers/tests/test_check_connect.py index 337f03ace47..4d693ccece0 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_check_connect.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_connect.py @@ -30,6 +30,7 @@ def get_ssh_tunnel(self): self.server.tunnel_host = '127.0.0.1' self.server.tunnel_port = 22 self.server.tunnel_username = 'user' + self.server.tunnel_keep_alive = 0 if hasattr(self, 'with_password') and self.with_password: self.server.tunnel_authentication = 0 else: diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py index 7c33ca5ef28..e80cacfd088 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py @@ -57,7 +57,8 @@ class TestMockServer(): def __init__(self, name, id, username, use_ssh_tunnel, tunnel_host, tunnel_port, tunnel_username, tunnel_authentication, - tunnel_identity_file, tunnel_password, service): + tunnel_identity_file, tunnel_password, + tunnel_keep_alive, service): self.name = name self.id = id self.username = username @@ -71,6 +72,7 @@ def __init__(self, name, id, username, use_ssh_tunnel, self.tunnel_identity_file = \ tunnel_identity_file self.tunnel_password = tunnel_password + self.tunnel_keep_alive = tunnel_keep_alive self.service = service self.shared = None @@ -85,6 +87,7 @@ def __init__(self, name, id, username, use_ssh_tunnel, self.mock_data['tunnel_authentication'], self.mock_data['tunnel_identity_file'], self.mock_data['tunnel_password'], + self.mock_data['tunnel_keep_alive'], self.mock_data['service'], ) diff --git a/web/pgadmin/browser/server_groups/tests/servers_group_test_data.json b/web/pgadmin/browser/server_groups/tests/servers_group_test_data.json index f0c35b7fb2e..428fca4fb0a 100644 --- a/web/pgadmin/browser/server_groups/tests/servers_group_test_data.json +++ b/web/pgadmin/browser/server_groups/tests/servers_group_test_data.json @@ -17,6 +17,7 @@ "tunnel_authentication": 1, "tunnel_password": "user123", "tunnel_identity_file": "pkey_rsa", + "tunnel_keep_alive": 0, "service": null, "fgcolor":"#B6D7A8", "bgcolor": "#0C343D", diff --git a/web/pgadmin/model/__init__.py b/web/pgadmin/model/__init__.py index a44b56bfa86..15bcea21a2f 100644 --- a/web/pgadmin/model/__init__.py +++ b/web/pgadmin/model/__init__.py @@ -33,7 +33,7 @@ # ########################################################################## -SCHEMA_VERSION = 38 +SCHEMA_VERSION = 39 ########################################################################## # @@ -201,6 +201,7 @@ class Server(db.Model): ) tunnel_identity_file = db.Column(db.String(64), nullable=True) tunnel_password = db.Column(PgAdminDbBinaryString()) + tunnel_keep_alive = db.Column(db.Integer(), nullable=True) shared = db.Column(db.Boolean(), nullable=False) shared_username = db.Column(db.String(64), nullable=True) kerberos_conn = db.Column(db.Boolean(), nullable=False, default=0) @@ -413,6 +414,7 @@ class SharedServer(db.Model): ) tunnel_identity_file = db.Column(db.String(64), nullable=True) tunnel_password = db.Column(PgAdminDbBinaryString()) + tunnel_keep_alive = db.Column(db.Integer(), nullable=True) shared = db.Column(db.Boolean(), nullable=False) connection_params = db.Column(MutableDict.as_mutable(types.JSON)) prepare_threshold = db.Column(db.Integer(), nullable=True) diff --git a/web/pgadmin/utils/driver/psycopg3/connection.py b/web/pgadmin/utils/driver/psycopg3/connection.py index 3a26834c842..1eda4181b2d 100644 --- a/web/pgadmin/utils/driver/psycopg3/connection.py +++ b/web/pgadmin/utils/driver/psycopg3/connection.py @@ -1465,7 +1465,7 @@ async def _close_conn(conn): def _wait(self, conn): pass # This function is empty - def _wait_timeout(self, conn): + def _wait_timeout(self, conn, time): pass # This function is empty def poll(self, formatted_exception_msg=False, no_result=False): diff --git a/web/pgadmin/utils/driver/psycopg3/server_manager.py b/web/pgadmin/utils/driver/psycopg3/server_manager.py index 786a94992fc..0d0be90332d 100644 --- a/web/pgadmin/utils/driver/psycopg3/server_manager.py +++ b/web/pgadmin/utils/driver/psycopg3/server_manager.py @@ -30,13 +30,13 @@ from pgadmin.utils.exception import ObjectGone from pgadmin.utils.passexec import PasswordExec from psycopg.conninfo import make_conninfo -import keyring -from pgadmin.utils.constants import KEY_RING_SERVICE_NAME, \ - KEY_RING_USERNAME_FORMAT, KEY_RING_TUNNEL_FORMAT if config.SUPPORT_SSH_TUNNEL: from sshtunnel import SSHTunnelForwarder, BaseSSHTunnelForwarderError +CONN_STRING = 'CONN:{0}' +DB_STRING = 'DB:{0}' + class ServerManager(object): """ @@ -98,6 +98,7 @@ def update(self, server): else server.tunnel_authentication self.tunnel_identity_file = server.tunnel_identity_file self.tunnel_password = server.tunnel_password + self.tunnel_keep_alive = server.tunnel_keep_alive else: self.use_ssh_tunnel = 0 self.tunnel_host = None @@ -106,6 +107,7 @@ def update(self, server): self.tunnel_authentication = None self.tunnel_identity_file = None self.tunnel_password = None + self.tunnel_keep_alive = 0 self.kerberos_conn = server.kerberos_conn self.gss_authenticated = False @@ -204,7 +206,7 @@ def connection(self, **kwargs): if did is not None and did in self.db_info: self.db_info[did]['datname'] = database else: - conn_str = 'CONN:{0}'.format(conn_id) + conn_str = CONN_STRING.format(conn_id) if did is None: database = self.db elif did in self.db_info: @@ -212,7 +214,7 @@ def connection(self, **kwargs): elif conn_id and conn_str in self.connections: database = self.connections[conn_str].db else: - maintenance_db_id = 'DB:{0}'.format(self.db) + maintenance_db_id = DB_STRING.format(self.db) if maintenance_db_id in self.connections: conn = self.connections[maintenance_db_id] # try to connect maintenance db if not connected @@ -252,8 +254,8 @@ def connection(self, **kwargs): else: raise ConnectionLost(self.sid, None, None) - my_id = ('CONN:{0}'.format(conn_id)) if conn_id is not None else \ - ('DB:{0}'.format(database)) + my_id = (CONN_STRING.format(conn_id)) if conn_id is not None else \ + (DB_STRING.format(database)) self.pinged = datetime.datetime.now() @@ -321,8 +323,7 @@ def _check_and_reconnect_server(self, conn, conn_info, data): # Check SSH Tunnel needs to be created if self.use_ssh_tunnel == 1 and \ not self.tunnel_created: - status, error = self.create_ssh_tunnel( - data['tunnel_password']) + self.create_ssh_tunnel(data['tunnel_password']) # Check SSH Tunnel is alive or not. self.check_ssh_tunnel_alive() @@ -400,9 +401,7 @@ def _restore_connections(self): # Check SSH Tunnel needs to be created if self.use_ssh_tunnel == 1 and \ not self.tunnel_created: - status, error = self.create_ssh_tunnel( - self.tunnel_password - ) + self.create_ssh_tunnel(self.tunnel_password) # Check SSH Tunnel is alive or not. self.check_ssh_tunnel_alive() @@ -451,9 +450,9 @@ def _check_db_info(self, did, conn_id, database): return True, False, my_id if conn_id is not None: - my_id = 'CONN:{0}'.format(conn_id) + my_id = CONN_STRING.format(conn_id) elif database is not None: - my_id = 'DB:{0}'.format(database) + my_id = DB_STRING.format(database) return False, True, my_id @@ -599,7 +598,8 @@ def create_ssh_tunnel(self, tunnel_password): ssh_pkey=get_complete_file_path(self.tunnel_identity_file), ssh_private_key_password=tunnel_password, remote_bind_address=(self.host, self.port), - logger=ssh_logger + logger=ssh_logger, + set_keepalive=int(self.tunnel_keep_alive) ) else: self.tunnel_object = SSHTunnelForwarder( @@ -607,7 +607,8 @@ def create_ssh_tunnel(self, tunnel_password): ssh_username=self.tunnel_username, ssh_password=tunnel_password, remote_bind_address=(self.host, self.port), - logger=ssh_logger + logger=ssh_logger, + set_keepalive=int(self.tunnel_keep_alive) ) # flag tunnel threads in daemon mode to fix hang issue. self.tunnel_object.daemon_forward_servers = True diff --git a/web/regression/javascript/schema_ui_files/server.ui.spec.js b/web/regression/javascript/schema_ui_files/server.ui.spec.js index 9b66ac27e23..36374f32556 100644 --- a/web/regression/javascript/schema_ui_files/server.ui.spec.js +++ b/web/regression/javascript/schema_ui_files/server.ui.spec.js @@ -73,6 +73,10 @@ describe('ServerSchema', ()=>{ expect(setError).toHaveBeenCalledWith('tunnel_identity_file', 'SSH Tunnel identity file must be specified.'); state.tunnel_identity_file = '/file/path/xyz.pem'; + schemaObj.validate(state, setError); + expect(setError).toHaveBeenCalledWith('tunnel_keep_alive', 'Keep alive must be specified. Specify 0 for no keep alive.'); + + state.tunnel_keep_alive = 0; expect(schemaObj.validate(state, setError)).toBe(false); }); }); diff --git a/web/regression/javascript/schema_ui_files/subscription.ui.spec.js b/web/regression/javascript/schema_ui_files/subscription.ui.spec.js index 10e7550b578..2f2decd9b33 100644 --- a/web/regression/javascript/schema_ui_files/subscription.ui.spec.js +++ b/web/regression/javascript/schema_ui_files/subscription.ui.spec.js @@ -86,27 +86,6 @@ describe('SubscriptionSchema', ()=>{ state.port = 5432; schemaObj.validate(state, setError); expect(setError).toHaveBeenCalledWith('pub', 'Publication must be specified.'); - - state.pub = 'testPub'; - state.use_ssh_tunnel = 'Require'; - schemaObj.validate(state, setError); - expect(setError).toHaveBeenCalledWith('tunnel_host', 'SSH Tunnel host must be specified.'); - - state.tunnel_host = 'localhost'; - schemaObj.validate(state, setError); - expect(setError).toHaveBeenCalledWith('tunnel_port', 'SSH Tunnel port must be specified.'); - - state.tunnel_port = 8080; - schemaObj.validate(state, setError); - expect(setError).toHaveBeenCalledWith('tunnel_username', 'SSH Tunnel username must be specified.'); - - state.tunnel_username = 'jasmine'; - state.tunnel_authentication = true; - schemaObj.validate(state, setError); - expect(setError).toHaveBeenCalledWith('tunnel_identity_file', 'SSH Tunnel identity file must be specified.'); - - state.tunnel_identity_file = '/file/path/xyz.pem'; - expect(schemaObj.validate(state, setError)).toBe(false); }); });